import { ChainEventListener, IProviderAdapter } from '../data-structures/provider-adapter/IProviderAdapter';
import { ContractType, EthereumNetwork } from '../types/ethereum-network.types';
import { ethers } from 'ethers';
export declare class EthersProviderAdapter implements IProviderAdapter<ethers.Signer> {
    private signer;
    private chainId;
    private fetchProviders;
    protected chainEventListener?: ChainEventListener;
    constructor();
    initConnector(): void;
    initSigner(signer: ethers.Signer): void;
    init(chainId?: number): Promise<void>;
    disconnectFromConnector(): Promise<void>;
    connectToConnector(): Promise<number>;
    waitForTransaction(chainId: number, transactionHash: string, confirmations: number): Promise<boolean>;
    signMessage(message: string): Promise<string>;
    signTypedData(domain: ethers.TypedDataDomain, types: Record<string, ethers.TypedDataField[]>, value: Record<string, unknown>): Promise<string>;
    switchNetwork(network: EthereumNetwork): Promise<void>;
    getAddress(): Promise<string>;
    setChainEventListener(chainEventListener: ChainEventListener): void;
    onAccountChanged(): Promise<unknown>;
    onChainChanged(chainId?: number): Promise<unknown>;
    release(): void;
    private removeListeners;
    getContract(chainId: number, contractType: ContractType, contractAddress?: undefined, runner?: ethers.ContractRunner): ethers.Contract;
    getContractWithSigner(chainId: number, contract: ContractType, contractAddress?: undefined): ethers.Contract;
    getContractWithFetcher(chainId: number, contract: ContractType, contractAddress?: undefined): ethers.Contract;
    sendTransaction(tx: ethers.TransactionRequest): Promise<ethers.TransactionResponse>;
    connectAndPatchProvider(): Promise<number>;
    getChainId(): number | undefined;
    isPermitterAvailable(): boolean;
    getGasPrice(chainId: number): Promise<bigint>;
}
export declare const ethersProvierAdapter: EthersProviderAdapter;
declare const _default: <T = unknown>() => IProviderAdapter<T>;
export default _default;
