/** A connected exchange account (venue). */
export interface ExchangeAccount {
    /** Venue slug, e.g. "polymarket", "kalshi" */
    venue: string;
    /** Display label, e.g. a truncated wallet address or username */
    displayAddress: string;
    /** Whether this venue key has been verified */
    verified?: boolean;
    /** KYC verification status from the backend */
    kycStatus?: string;
}
/** Connection state for a single social account. */
export interface SocialAccountInfo {
    connected: boolean;
    /** Display handle, e.g. "@john" */
    handle?: string;
}
/** Social account connection states. */
export interface SocialAccountState {
    twitter?: SocialAccountInfo;
    google?: SocialAccountInfo;
    apple?: SocialAccountInfo;
    discord?: SocialAccountInfo;
    telegram?: SocialAccountInfo;
}
export interface WalletAccountInfo {
    chain: string;
    address: string;
    displayAddress?: string;
}
export interface ProfileModalProps {
    /** Whether the profile modal is currently open. */
    open: boolean;
    /** Called whenever the profile modal open state changes. */
    onOpenChange: (open: boolean) => void;
    /** Current username (pre-fills the input) */
    username?: string | null;
    /** Current avatar preview URL */
    avatarPreview?: string | null;
    /** Called when user clicks "Save" on the About tab */
    onSave: (data: {
        username?: string;
        avatarFile?: File;
        avatarPreview?: string;
    }) => void;
    /** Called when user clicks "Delete Profile" */
    onDeleteProfile: () => void;
    /** Connected exchange accounts. When omitted, derived from auth-state `user.accounts`. */
    exchanges?: ExchangeAccount[];
    /** Social account connection state */
    socialAccounts?: SocialAccountState;
    /** Connected wallet addresses */
    wallets?: WalletAccountInfo[];
    /** Connected email address */
    email?: string | null;
    /** Called when user disconnects an exchange */
    onDisconnectExchange?: (venue: string) => void;
    /** Called when user clicks "Connect" on X / Twitter */
    onConnectTwitter?: () => void;
    /** Called when user clicks "Disconnect" on X / Twitter */
    onDisconnectTwitter?: () => void;
    /** Called when user clicks "Connect" on Google */
    onConnectGoogle?: () => void;
    /** Called when user clicks "Disconnect" on Google */
    onDisconnectGoogle?: () => void;
    /** Called when user clicks "Connect" on Apple */
    onConnectApple?: () => void;
    /** Called when user clicks "Disconnect" on Apple */
    onDisconnectApple?: () => void;
    /** Called when user clicks "Connect" on Discord */
    onConnectDiscord?: () => void;
    /** Called when user clicks "Disconnect" on Discord */
    onDisconnectDiscord?: () => void;
    /** Called when user clicks "Connect" on Telegram */
    onConnectTelegram?: () => void;
    /** Called when user clicks "Disconnect" on Telegram */
    onDisconnectTelegram?: () => void;
    /** Called when user disconnects a wallet account */
    onDisconnectWallet?: (wallet: WalletAccountInfo) => void;
    /** Called when user clicks "Connect" on Email */
    onConnectEmail?: () => void;
    /** Called when the KYC verification flow encounters an error */
    onKycError?: (error: Error) => void;
}
