import { EventEmitter } from 'eventemitter3';
import AccountRpc from '../account/Rpc.js';
import { Network, NetworkToSelect } from './rpc/types.js';
import { SUBSCRIPTION_TYPES } from './schema.js';
import BrowserConnection from './connection/Browser.js';
interface EventsBase {
    accountsChange: (accounts: AccountRpc[]) => void;
    disconnect: (p: any) => void;
}
export default abstract class WalletConnectorFrameBase<T extends {}> extends EventEmitter<EventsBase | T> {
    #private;
    /**
     * Is connected to wallet
     */
    get isConnected(): boolean;
    /**
     * Accounts provided by wallet over subscription
     */
    get accounts(): AccountRpc[];
    protected constructor();
    protected abstract _updateNetwork(params: Network): void;
    static _connect(name: string, connection: BrowserConnection, connector: WalletConnectorFrameBase<any>, connectNode: boolean): Promise<void>;
    /**
     * Disconnect from wallet
     */
    disconnect(): void;
    /**
     * Request accounts from wallet
     */
    getAccounts(): Promise<AccountRpc[]>;
    /**
     * Subscribe for wallet accounts, get account updates adding handler to `accountsChange` event
     * @param type - Subscription type
     * @param value - Should be one of 'current' (the selected account), 'connected' (all)
     * @returns Accounts from wallet
     */
    subscribeAccounts(type: SUBSCRIPTION_TYPES, value: 'current' | 'connected'): Promise<AccountRpc[]>;
    /**
     * Ask wallet to select a network
     */
    askToSelectNetwork(network: NetworkToSelect): Promise<void>;
}
export {};
