import { TransactionRequest } from '@ethersproject/abstract-provider';
import { ethers, Signer } from 'ethers';
import { ErrorWithCode } from './errors';
import { EventEmitter } from './event-emitter';
import { ChainConnection, IWeb3Provider, PendingRequest, Web3Method, Web3ProviderConfig } from './types';
export declare class EthersHeadlessProvider extends EventEmitter implements IWeb3Provider {
    private readonly chains;
    private _pendingRequests;
    private _signers;
    private _activeChainId;
    private _rpc;
    private _config;
    private _authorizedRequests;
    constructor(signers: Signer[], chains: ChainConnection[], config?: Web3ProviderConfig);
    request(args: {
        method: 'eth_call';
        params: any[];
    }): Promise<any>;
    request(args: {
        method: 'eth_getBalance';
        params: string[];
    }): Promise<string>;
    request(args: {
        method: 'eth_accounts';
        params: [];
    }): Promise<string[]>;
    request(args: {
        method: 'eth_requestAccounts';
        params: string[];
    }): Promise<string[]>;
    request(args: {
        method: 'net_version';
        params: [];
    }): Promise<number>;
    request(args: {
        method: 'eth_chainId';
        params: [];
    }): Promise<string>;
    request(args: {
        method: 'personal_sign';
        params: string[];
    }): Promise<string>;
    request(args: {
        method: 'eth_signTypedData' | 'eth_signTypedData_v1';
        params: [object[], string];
    }): Promise<string>;
    request(args: {
        method: 'eth_signTypedData_v3' | 'eth_signTypedData_v4';
        params: string[];
    }): Promise<string>;
    request(args: {
        method: 'eth_sendTransaction';
        params: TransactionRequest[];
    }): Promise<string>;
    getCurrentWallet(): Signer;
    waitAuthorization<T>(requestInfo: PendingRequest['requestInfo'], task: () => Promise<T>, permanentPermission?: boolean, methodOverride?: string): Promise<unknown>;
    private consumeRequest;
    private consumeAllRequests;
    getPendingRequests(): PendingRequest['requestInfo'][];
    getPendingRequestCount(requestKind?: Web3Method): number;
    authorize(requestKind: Web3Method): Promise<void>;
    reject(requestKind: Web3Method, reason?: ErrorWithCode): Promise<void>;
    authorizeAll(): void;
    rejectAll(reason?: ErrorWithCode): void;
    changeAccounts(signers: Signer[]): Promise<void>;
    private getCurrentChain;
    getRpc(): ethers.providers.JsonRpcProvider;
    getNetwork(): ChainConnection;
    getNetworks(): ChainConnection[];
    addNetwork(chainId: number, rpcUrl: string): void;
    switchNetwork(chainId: number): void;
}
//# sourceMappingURL=ethers-headless-provider.d.ts.map