import { EmailString, Member as FrontendMember, IECIESConfig, SecureString } from '@digitaldefiance/ecies-lib'; import { CurrencyCode } from '@digitaldefiance/i18n-lib'; import { IConstants, IRequestUserDTO, ISuccessMessage, IUserSettings } from '@digitaldefiance/suite-core-lib'; import { Wallet } from '@ethereumjs/wallet'; import { PaletteMode } from '@mui/material'; import { ReactNode } from 'react'; export interface AuthContextData { /** * True if the user has a global admin role */ admin: boolean; /** * Counter that increments on login/logout to trigger effects in dependent components */ authState: number; /** * Performs a server side backup-code login * @param identifier * @param code * @param isEmail * @param recoverMnemonic * @param newPassword * @returns */ backupCodeLogin: (identifier: string, code: string, isEmail: boolean, recoverMnemonic: boolean, newPassword?: string) => Promise<{ token: string; codeCount: number; mnemonic?: string; message?: string; } | { error: string; status?: number; }>; /** * Verifies the stored token (if any) and updates auth state * @returns void */ checkAuth: () => void; /** * Changes the stored browser password login mnemonic * @param currentPassword * @param newPassword * @returns */ changePassword: (currentPassword: string, newPassword: string) => Promise; clearMnemonic: () => void; clearWallet: () => void; colorMode?: PaletteMode; currencyCode?: CurrencyCode; directLogin: (mnemonic: SecureString, username?: string, email?: EmailString, expireMnemonicSeconds?: number, expireWalletSeconds?: number) => Promise<{ token: string; user: IRequestUserDTO; wallet: Wallet; } | { pendingTotpToken: string; } | { error: string; errorType?: string; }>; emailChallengeLogin: (mnemonic: SecureString, token: string, username?: string, email?: EmailString, expireMnemonicSeconds?: number, expireWalletSeconds?: number) => Promise<{ token: string; user: IRequestUserDTO; wallet: Wallet; message: string; } | { pendingTotpToken: string; } | { error: string; errorType?: string; }>; isAuthenticated: boolean; isCheckingAuth: boolean; isBrowserPasswordLoginAvailable?: () => boolean; loading: boolean; logout: () => void; mnemonic?: SecureString; mnemonicExpirationSeconds: number; passwordLogin: (password: SecureString, username?: string, email?: EmailString) => Promise<{ token: string; user: IRequestUserDTO; wallet: Wallet; } | { pendingTotpToken: string; } | { error: string; errorType?: string; }>; requestEmailLogin: (username?: string, email?: EmailString) => Promise; refreshToken: () => Promise<{ token: string; user: IRequestUserDTO; }>; register: (username: string, email: string, timezone: string, password?: string, mnemonic?: string, displayName?: string, directChallenge?: boolean) => Promise<{ success: boolean; message: string; mnemonic: string; } | { error: string; errorType?: string; field?: string; errors?: Array<{ path: string; msg: string; }>; }>; serverPublicKey: string | null; /** * Gets the remaining time in seconds for the mnemonic expiration * @returns Number of seconds remaining, or 0 if no mnemonic is set */ getMnemonicRemainingTime: () => number; /** * Gets the remaining time in seconds for the wallet expiration * @returns Number of seconds remaining, or 0 if no wallet is set */ getWalletRemainingTime: () => number; setMnemonic: (mnemonic: SecureString, durationSeconds?: number) => void; setMnemonicExpirationSeconds: (seconds: number) => void; setWalletExpirationSeconds: (seconds: number) => void; setUpBrowserPasswordLogin: (mnemonic: SecureString, password: SecureString, username?: string, email?: EmailString) => Promise<{ success: boolean; message: string; } | { error: string; errorType?: string; }>; setUser: (user: IRequestUserDTO | null) => Promise; setUserSetting: (setting?: Partial) => Promise; setWallet: (wallet: Wallet, durationSeconds?: number) => void; user: FrontendMember | null; userData: IRequestUserDTO | null; userSettings: IUserSettings | undefined; token: string | null; wallet?: Wallet; walletExpirationSeconds: number; verifyToken: (token: string) => Promise; /** * Initiates TOTP setup for the authenticated user. * Returns the provisioning URI and raw base32 secret on success. */ setupTotp: () => Promise<{ provisioningUri: string; secret: string; } | { error: string; }>; /** * Confirms TOTP setup with a 6-digit code. */ confirmTotp: (code: string) => Promise<{ success: boolean; } | { error: string; }>; /** * Completes TOTP login by verifying a 6-digit code against a pending TOTP token. */ verifyTotpLogin: (pendingTotpToken: string, code: string) => Promise<{ token: string; user: IRequestUserDTO; } | { error: string; }>; } export type AuthProviderProps = { children: ReactNode; baseUrl: string; constants: IConstants; eciesConfig: IECIESConfig; /** * Optional callback to handle navigation after logout * If not provided, logout will only clear auth state without navigation */ onLogout?: () => void; emailDomain: string; }; export declare const AuthContext: import("react").Context; export declare const AuthProvider: ({ children, baseUrl, constants, eciesConfig, onLogout, emailDomain, }: AuthProviderProps) => import("react/jsx-runtime").JSX.Element; export declare const useAuth: () => AuthContextData; //# sourceMappingURL=AuthProvider.d.ts.map