import { EventEmitter } from 'events';
import type { Address } from 'viem';
import { IEthereumProvider, IEthereumProviderEvents, ProviderAccounts, RequestArguments } from './types';
export interface EthereumProviderOptions {
    chains: number[];
    methods?: string[];
    events?: string[];
}
export declare class KryptogoEthereumProvider implements IEthereumProvider {
    events: EventEmitter<[never]>;
    namespace: string;
    accounts: Address[];
    chainId: number;
    constructor(opts: EthereumProviderOptions);
    request<T = unknown>(args: RequestArguments): Promise<T>;
    getAccounts(): string[];
    requestAccounts(): Promise<string[]>;
    getChainId(): string;
    sendTransaction(req: RequestArguments): Promise<string>;
    switchEthereumChain(chainId: number): Promise<void>;
    enable(): Promise<ProviderAccounts>;
    connect({ chainId }?: {
        chainId?: number;
    }): Promise<void>;
    disconnect(): Promise<void>;
    isConnected(): Promise<boolean>;
    protected setChainId(chainId: number): void;
    protected setAccounts(accounts: Address[]): void;
    protected reset(): void;
    on: IEthereumProviderEvents['on'];
    once: IEthereumProviderEvents['once'];
    removeListener: IEthereumProviderEvents['removeListener'];
    off: IEthereumProviderEvents['off'];
}
