// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.30.0

package keybase

import (
	"encoding/json"
)

type Account struct {
	ID           int64   `json:"id"`
	DidID        int64   `json:"did_id"`
	KeyShareID   int64   `json:"key_share_id"`
	Address      string  `json:"address"`
	ChainID      string  `json:"chain_id"`
	CoinType     int64   `json:"coin_type"`
	AccountIndex int64   `json:"account_index"`
	AddressIndex int64   `json:"address_index"`
	Label        *string `json:"label"`
	IsDefault    int64   `json:"is_default"`
	CreatedAt    string  `json:"created_at"`
}

type Credential struct {
	ID             int64           `json:"id"`
	DidID          int64           `json:"did_id"`
	CredentialID   string          `json:"credential_id"`
	PublicKey      string          `json:"public_key"`
	PublicKeyAlg   int64           `json:"public_key_alg"`
	Aaguid         *string         `json:"aaguid"`
	SignCount      int64           `json:"sign_count"`
	Transports     json.RawMessage `json:"transports"`
	DeviceName     string          `json:"device_name"`
	DeviceType     string          `json:"device_type"`
	Authenticator  *string         `json:"authenticator"`
	IsDiscoverable int64           `json:"is_discoverable"`
	BackedUp       int64           `json:"backed_up"`
	CreatedAt      string          `json:"created_at"`
	LastUsed       string          `json:"last_used"`
}

type Delegation struct {
	ID        int64           `json:"id"`
	DidID     int64           `json:"did_id"`
	UcanID    int64           `json:"ucan_id"`
	Delegator string          `json:"delegator"`
	Delegate  string          `json:"delegate"`
	Resource  string          `json:"resource"`
	Action    string          `json:"action"`
	Caveats   json.RawMessage `json:"caveats"`
	ParentID  *int64          `json:"parent_id"`
	Depth     int64           `json:"depth"`
	Status    string          `json:"status"`
	CreatedAt string          `json:"created_at"`
	ExpiresAt *string         `json:"expires_at"`
}

type DidDocument struct {
	ID         int64           `json:"id"`
	Did        string          `json:"did"`
	Controller string          `json:"controller"`
	Document   json.RawMessage `json:"document"`
	Sequence   int64           `json:"sequence"`
	LastSynced string          `json:"last_synced"`
	CreatedAt  string          `json:"created_at"`
	UpdatedAt  string          `json:"updated_at"`
}

type Grant struct {
	ID        int64           `json:"id"`
	DidID     int64           `json:"did_id"`
	ServiceID int64           `json:"service_id"`
	UcanID    *int64          `json:"ucan_id"`
	Scopes    json.RawMessage `json:"scopes"`
	Accounts  json.RawMessage `json:"accounts"`
	Status    string          `json:"status"`
	GrantedAt string          `json:"granted_at"`
	LastUsed  *string         `json:"last_used"`
	ExpiresAt *string         `json:"expires_at"`
}

type KeyShare struct {
	ID             int64   `json:"id"`
	DidID          int64   `json:"did_id"`
	ShareID        string  `json:"share_id"`
	KeyID          string  `json:"key_id"`
	PartyIndex     int64   `json:"party_index"`
	Threshold      int64   `json:"threshold"`
	TotalParties   int64   `json:"total_parties"`
	Curve          string  `json:"curve"`
	ShareData      string  `json:"share_data"`
	PublicKey      string  `json:"public_key"`
	ChainCode      *string `json:"chain_code"`
	DerivationPath *string `json:"derivation_path"`
	Status         string  `json:"status"`
	CreatedAt      string  `json:"created_at"`
	RotatedAt      *string `json:"rotated_at"`
}

type Service struct {
	ID          int64           `json:"id"`
	Origin      string          `json:"origin"`
	Name        string          `json:"name"`
	Description *string         `json:"description"`
	LogoUrl     *string         `json:"logo_url"`
	Did         *string         `json:"did"`
	IsVerified  int64           `json:"is_verified"`
	Metadata    json.RawMessage `json:"metadata"`
	CreatedAt   string          `json:"created_at"`
}

type Session struct {
	ID           int64           `json:"id"`
	DidID        int64           `json:"did_id"`
	CredentialID int64           `json:"credential_id"`
	SessionID    string          `json:"session_id"`
	DeviceInfo   json.RawMessage `json:"device_info"`
	IsCurrent    int64           `json:"is_current"`
	LastActivity string          `json:"last_activity"`
	ExpiresAt    string          `json:"expires_at"`
	CreatedAt    string          `json:"created_at"`
}

type SyncCheckpoint struct {
	ID           int64   `json:"id"`
	DidID        int64   `json:"did_id"`
	ResourceType string  `json:"resource_type"`
	LastBlock    int64   `json:"last_block"`
	LastTxHash   *string `json:"last_tx_hash"`
	LastSynced   string  `json:"last_synced"`
}

type UcanRevocation struct {
	ID        int64   `json:"id"`
	UcanCid   string  `json:"ucan_cid"`
	RevokedBy string  `json:"revoked_by"`
	Reason    *string `json:"reason"`
	RevokedAt string  `json:"revoked_at"`
}

type UcanToken struct {
	ID           int64           `json:"id"`
	DidID        int64           `json:"did_id"`
	Cid          string          `json:"cid"`
	Issuer       string          `json:"issuer"`
	Audience     string          `json:"audience"`
	Subject      *string         `json:"subject"`
	Capabilities json.RawMessage `json:"capabilities"`
	ProofChain   json.RawMessage `json:"proof_chain"`
	NotBefore    *string         `json:"not_before"`
	ExpiresAt    string          `json:"expires_at"`
	Nonce        *string         `json:"nonce"`
	Facts        json.RawMessage `json:"facts"`
	Signature    string          `json:"signature"`
	RawToken     string          `json:"raw_token"`
	IsRevoked    int64           `json:"is_revoked"`
	CreatedAt    string          `json:"created_at"`
}

type VerificationMethod struct {
	ID         int64  `json:"id"`
	DidID      int64  `json:"did_id"`
	MethodID   string `json:"method_id"`
	MethodType string `json:"method_type"`
	Controller string `json:"controller"`
	PublicKey  string `json:"public_key"`
	Purpose    string `json:"purpose"`
	CreatedAt  string `json:"created_at"`
}
