import { ApiInterfaces, JsonRpc, Api } from 'eosjs'; export interface AccountInfo { name: string; publicKey: string; core_liquid_balance?: string; ram_quota?: number; cpu_limit: { available: number; }; net_limit: { available: number; }; } export interface DiscoveryData { keyToAccountMap: DiscoveryAccount[]; keys?: { index: number; key: string; }[]; } export interface DiscoveryAccount { index: number; key: string; accounts: { account: string; authorization: string; }[]; } export interface WalletAuth { accountName: string; permission: string; publicKey: string; } export declare type StateUpdaterFn = (prevState: TState) => TState; export declare type StateUpdater = StateUpdaterFn | TState; export declare type UpdateStateFn = (updater: StateUpdater) => void; export declare type StateListener = (newState: TState | undefined) => void; export declare type StateUnsubscribeFn = () => void; export interface StateContainer { getState: () => TState | undefined; updateState: UpdateStateFn; subscribe: (listener: StateListener) => StateUnsubscribeFn; } export declare type Listener = (value?: T) => void; export declare type UnsubscribeFn = () => void; export interface NetworkConfig { name?: string; protocol?: string; host: string; port?: number; chainId: string; } export interface WalletProviderMetadata { name?: string; shortName?: string; description?: string; } export interface WalletProvider { id: string; meta?: WalletProviderMetadata; signatureProvider: ApiInterfaces.SignatureProvider; connect(appName: string): Promise; discover(discoveryOptions: DiscoveryOptions): Promise; disconnect(): Promise; login(accountName?: string, authorization?: string, index?: number, key?: string): Promise; logout(accountName?: string): Promise; signArbitrary(data: string, userMessage: string): Promise; } export declare type MakeWalletProviderFn = (network: NetworkConfig) => WalletProvider; export interface WalletState { connecting?: boolean; connected?: boolean; connectionError?: boolean; connectionErrorMessage?: string; auth?: WalletAuth; authenticating?: boolean; authenticated?: boolean; authenticationConfirmed?: boolean; authenticationError?: boolean; authenticationErrorMessage?: string; accountInfo?: AccountInfo; accountFetching?: boolean; accountFetchError?: boolean; accountFetchErrorMessage?: string; } export declare type KeyModifierCallback = (discoveryData: DiscoveryData) => DiscoveryData; export declare type DiscoverContinueCallback = (discoveredAccounts: DiscoveryAccount[]) => void; export declare type KeyLookupCallback = (discoveryData: DiscoveryData, callback: DiscoverContinueCallback) => void; export interface DiscoveryOptions { pathIndexList: number[]; keyModifierFunc?: KeyModifierCallback; keyLookupFunc?: KeyLookupCallback; presetKeyMap?: any; } export interface Wallet { _instanceId: string; ctx: WalletAccessContext; state: WalletState; provider: WalletProvider; eosApi: Api; auth?: WalletAuth; accountInfo?: AccountInfo; connected: boolean; authenticated: boolean; inProgress: boolean; active: boolean; hasError: boolean; errorMessage?: string; connect(): Promise; discover(discoveryOptions: DiscoveryOptions): Promise; disconnect(): Promise; login(accountName?: string, authorization?: string): Promise; logout(accountName?: string): Promise; fetchAccountInfo(accountName?: string): Promise; terminate(): Promise; subscribe(listener: StateListener): StateUnsubscribeFn; signArbitrary(data: string, userMessage: string): Promise; } export interface WalletAccessContextOptions { appName: string; network: NetworkConfig; walletProviders: MakeWalletProviderFn[]; } export interface WalletAccessContextState { wallets: Wallet[]; } export interface WalletAccessContext { appName: string; eosRpc: JsonRpc; network: NetworkConfig; initWallet(walletProvider: WalletProvider | string): Wallet; addWalletProvider(walletProvider: MakeWalletProviderFn): void; getWalletProviders(): WalletProvider[]; getWallets(): Wallet[]; getActiveWallets(): Wallet[]; detachWallet(wallet: Wallet): void; logoutAll(): Promise; disconnectAll(): Promise; terminateAll(): Promise; destroy(): Promise; subscribe(listener: Listener): UnsubscribeFn; } export declare type TransactionResult = any;