package output

import "context"

// ShareInfo contains information about a key share for account creation
type ShareInfo struct {
	PartyID    string
	PartyIndex int
	ShareType  string // "persistent" or "delegate"
}

// CreateAccountInput contains input for creating an account after keygen
type CreateAccountInput struct {
	KeygenSessionID string
	PublicKey       []byte
	ThresholdN      int
	ThresholdT      int
	Shares          []ShareInfo
	DelegatePartyID string // The delegate party ID if any (for user share retrieval)
}

// CreateAccountOutput contains output from account creation
type CreateAccountOutput struct {
	AccountID string
	Success   bool
}

// AccountServicePort defines the interface for account service integration
type AccountServicePort interface {
	// CreateAccountFromKeygen creates an account record after successful keygen
	CreateAccountFromKeygen(ctx context.Context, input CreateAccountInput) (*CreateAccountOutput, error)
}
