package types

// QueryInput represents the input for the query function
type QueryInput struct {
	DID string `json:"did"`
}

// QueryOutput represents the output of the query function
type QueryOutput struct {
	DID                 string               `json:"did"`
	Controller          string               `json:"controller"`
	VerificationMethods []VerificationMethod `json:"verification_methods"`
	Accounts            []Account            `json:"accounts"`
	Credentials         []Credential         `json:"credentials"`
}

// VerificationMethod represents a DID verification method
type VerificationMethod struct {
	ID         string `json:"id"`
	Type       string `json:"type"`
	Controller string `json:"controller"`
	PublicKey  string `json:"public_key"`
	Purpose    string `json:"purpose"`
}

// Account represents a derived blockchain account
type Account struct {
	Address      string `json:"address"`
	ChainID      string `json:"chain_id"`
	CoinType     int    `json:"coin_type"`
	AccountIndex int    `json:"account_index"`
	AddressIndex int    `json:"address_index"`
	Label        string `json:"label"`
	IsDefault    bool   `json:"is_default"`
}

// Credential represents a WebAuthn credential
type Credential struct {
	CredentialID  string   `json:"credential_id"`
	DeviceName    string   `json:"device_name"`
	DeviceType    string   `json:"device_type"`
	Authenticator string   `json:"authenticator"`
	Transports    []string `json:"transports"`
	CreatedAt     string   `json:"created_at"`
	LastUsed      string   `json:"last_used"`
}
