import type { ButtonHTMLAttributes, ReactNode } from "react";
import type { IconName } from "../../primitives/icon";
export type AuthConnectButtonViewMethodKind = "email" | "social" | "wallet";
export type AuthConnectButtonViewMethodChain = "ethereum" | "solana";
export type AuthConnectButtonViewClassNames = {
    authError?: string;
    authFormField?: string;
    authHelperLink?: string;
    authMethodButton?: string;
    authMethodDescription?: string;
    authMethodGrid?: string;
    authModalContent?: string;
    authNotice?: string;
    authSectionHeading?: string;
    balanceChip?: string;
    balanceText?: string;
    positionsText?: string;
    connectButton?: string;
    connectedRow?: string;
    depositButton?: string;
    profileMenuActionItem?: string;
    profileMenuContent?: string;
    profileMenuSection?: string;
    profileMenuSeparator?: string;
    profileTrigger?: string;
    profileTriggerLabel?: string;
    root?: string;
};
export type AuthConnectButtonViewButtonProps = Pick<ButtonHTMLAttributes<HTMLButtonElement>, "id" | "name" | "tabIndex" | "autoFocus" | "aria-describedby">;
export type AuthConnectButtonViewMethodInput = {
    type: "email";
    helperText?: string;
    placeholder?: string;
    submitLabel?: string;
} | undefined;
export type AuthConnectButtonViewMethod = {
    chain?: AuthConnectButtonViewMethodChain;
    description: string;
    iconName?: IconName;
    id: string;
    input?: AuthConnectButtonViewMethodInput;
    isAvailable: boolean;
    kind: AuthConnectButtonViewMethodKind;
    label: string;
};
export type AuthConnectButtonViewProps = {
    /** ID of the auth method currently selected in the chooser. */
    activeMethodId: string | null;
    /** Formatted wallet or account address shown in the connected state. */
    addressLabel?: string;
    /** Native props forwarded to the main connect button. */
    buttonProps?: AuthConnectButtonViewButtonProps;
    /** When set, the sign-in modal switches to a security-check screen showing this content. */
    challengeContent?: ReactNode;
    /** Class name overrides for auth view slots. */
    classNames?: AuthConnectButtonViewClassNames;
    /** Whether all auth controls should be disabled. */
    disabled?: boolean;
    /** Email connection method configuration, when supported. */
    emailMethod: AuthConnectButtonViewMethod | null;
    /** Inline validation error shown for the email flow. */
    emailError?: string | null;
    /** Controlled email input value. */
    emailValue: string;
    /** General auth error message shown in the view. */
    errorMessage?: string | null;
    /** Whether the user is currently authenticated. */
    isAuthenticated: boolean;
    /** Whether balances are currently loading. */
    isBalanceLoading: boolean;
    /** Whether an auth-related async action is in progress. */
    isBusy: boolean;
    /** Controlled open state for the auth method chooser. */
    isChooserOpen: boolean;
    /** Controlled open state for the profile menu. */
    isProfileMenuOpen: boolean;
    /** Optional informational notice shown above the auth actions. */
    notice?: string | null;
    /** Called when the chooser open state changes. */
    onChooserOpenChange: (open: boolean) => void;
    /** Called when the deposit action is clicked. */
    onDepositClick: () => void;
    /** Called when the disconnect action is clicked. */
    onDisconnectClick: () => void;
    /** Called when the email input value changes. */
    onEmailChange: (value: string) => void;
    /** Called when the email auth form is submitted. */
    onEmailSubmit: () => void;
    /** Called when the user selects an auth method. */
    onMethodSelect: (methodId: string) => void;
    /** Called when the profile card itself is clicked. */
    onProfileCardClick: () => void;
    /** Called when the profile trigger is clicked. */
    onProfileClick: () => void;
    /** Called when the profile menu open state changes. */
    onProfileMenuOpenChange: (open: boolean) => void;
    /** Social auth methods rendered in the chooser. */
    socialMethods: readonly AuthConnectButtonViewMethod[];
    /** Called when the withdraw action is clicked. */
    onWithdrawClick: () => void;
    /** Label shown for the connected profile trigger. */
    profileLabel?: string;
    /** Aggregated total balance shown in the connected state. */
    totalBalance: number;
    /** Aggregated positions value shown in the connected state. */
    positionsBalance: number;
    /** Number of closed positions currently eligible to claim. */
    claimReadyCount?: number;
    /** Called when user clicks the claim-winnings action in the indicator tooltip. */
    onClaimWinningsClick?: () => void;
    /** Wallet auth methods rendered in the chooser. */
    walletMethods: readonly AuthConnectButtonViewMethod[];
    /** Whether deposits are blocked for the user's geo location. */
    isDepositBlocked?: boolean;
};
