import React from 'react'; import { WalletPermissionsManager, WalletAuthenticationManager } from '@bsv/wallet-toolbox-client'; import { WalletInterface } from '@bsv/sdk'; import { WalletSettings, WalletSettingsManager } from '@bsv/wallet-toolbox-client/out/src/WalletSettingsManager'; import 'react-toastify/dist/ReactToastify.css'; import { GroupPermissionRequest } from './types/GroupedPermissions'; import { WalletProfile } from './types/WalletProfile'; interface ManagerState { walletManager?: WalletAuthenticationManager; permissionsManager?: WalletPermissionsManager; settingsManager?: WalletSettingsManager; } type ConfigStatus = 'editing' | 'configured' | 'initial'; export interface WalletContextValue { managers: ManagerState; updateManagers: (newManagers: ManagerState) => void; settings: WalletSettings; updateSettings: (newSettings: WalletSettings) => Promise; network: 'mainnet' | 'testnet'; activeProfile: WalletProfile | null; setActiveProfile: (profile: WalletProfile | null) => void; logout: () => void; adminOriginator: string; setPasswordRetriever: (retriever: (reason: string, test: (passwordCandidate: string) => boolean) => Promise) => void; setRecoveryKeySaver: (saver: (key: number[]) => Promise) => void; snapshotLoaded: boolean; basketRequests: BasketAccessRequest[]; certificateRequests: CertificateAccessRequest[]; protocolRequests: ProtocolAccessRequest[]; spendingRequests: SpendingRequest[]; groupPermissionRequests: GroupPermissionRequest[]; advanceBasketQueue: () => void; advanceCertificateQueue: () => void; advanceProtocolQueue: () => void; advanceSpendingQueue: () => void; setWalletFunder: (funder: (presentationKey: number[], wallet: WalletInterface, adminOriginator: string) => Promise) => void; setUseWab: (use: boolean) => void; useWab: boolean; advanceGroupQueue: () => void; recentApps: any[]; finalizeConfig: (wabConfig: WABConfig) => boolean; setConfigStatus: (status: ConfigStatus) => void; configStatus: ConfigStatus; } export declare const WalletContext: React.Context; type PermissionType = 'identity' | 'protocol' | 'renewal' | 'basket'; type BasketAccessRequest = { requestID: string; basket?: string; originator: string; reason?: string; renewal?: boolean; }; type CertificateAccessRequest = { requestID: string; certificate?: { certType?: string; fields?: Record; verifier?: string; }; originator: string; reason?: string; renewal?: boolean; }; type ProtocolAccessRequest = { requestID: string; protocolSecurityLevel: number; protocolID: string; counterparty?: string; originator?: string; description?: string; renewal?: boolean; type?: PermissionType; }; type SpendingRequest = { requestID: string; originator: string; description?: string; transactionAmount: number; totalPastSpending: number; amountPreviouslyAuthorized: number; authorizationAmount: number; renewal?: boolean; lineItems: any[]; }; export interface WABConfig { wabUrl: string; wabInfo: any; method: string; network: 'main' | 'test'; storageUrl: string; useWab?: boolean; } interface WalletContextProps { children?: React.ReactNode; onWalletReady: (wallet: WalletInterface) => Promise<(() => void) | undefined>; } export declare const WalletContextProvider: React.FC; export {};