import { WalletConfig } from '../service/types'; import { Result } from '../utils/result'; declare type AccountAddressChangedSubscriber = (accountAddress: string) => void; export declare type ChainChangedSubscriber = (chain: Chain) => void; export declare type Unsubscribe = () => void; declare type OnDisconnectWallet = () => void; export declare type Chain = { id: string; name: string; paymentCode: string; supportedPaymentTokens: PaymentToken[]; }; export declare abstract class PaymentToken { displayName: string; constructor(displayName: string); } export declare type PaymentTokenAndBalance = { token: PaymentToken; balance: number; }; export declare type SendTransactionResult = { transactionHash: string; }; export default abstract class ConnectedWallet { protected accountAddress: string; protected config: WalletConfig; protected accountAddressChangedSubscribers: AccountAddressChangedSubscriber[]; protected onDisconnect?: OnDisconnectWallet; constructor(config: WalletConfig); abstract getWalletSelectedChainId(): string | undefined; abstract getSelectedChain(): Chain | undefined; abstract enableUpdateChain(): boolean; abstract subscribeChainChanged(subscriber: ChainChangedSubscriber): Unsubscribe | undefined; abstract getTokenBalancesOfChain(chain: Chain): Promise>; abstract getSupportedChains(): Chain[]; abstract switchChain(chain: Chain): Promise>; abstract sendTransaction(destinationAddress: string, amount: string, token: PaymentToken): Promise>; abstract clear(): void; getConfig(): WalletConfig; subscribeAccountAddressChanged(subscriber: AccountAddressChangedSubscriber): Unsubscribe; setOnDisconnectSubscriber: (onDisconnect: OnDisconnectWallet) => void; protected changeAccountAddress(accountAddress: string): void; getWalletCode: () => string; } export {};