import type { ISignClient } from "@walletconnect/types";
import { CustomChainConfig } from "@web3auth/base";
import { BaseProvider, BaseProviderConfig, BaseProviderState } from "@web3auth/base-provider";
export interface WalletConnectV2ProviderConfig extends BaseProviderConfig {
    chainConfig: CustomChainConfig;
}
export interface WalletConnectV2ProviderState extends BaseProviderState {
    accounts: string[];
}
export declare class WalletConnectV2Provider extends BaseProvider<BaseProviderConfig, WalletConnectV2ProviderState, ISignClient> {
    private connector;
    private clientId;
    constructor({ clientId, config, state, connector, }: {
        config: WalletConnectV2ProviderConfig;
        clientId: string;
        state?: BaseProviderState;
        connector?: ISignClient;
    });
    static getProviderInstance: (params: {
        clientId: string;
        connector: ISignClient;
        chainConfig: CustomChainConfig;
        skipLookupNetwork: boolean;
    }) => Promise<WalletConnectV2Provider>;
    enable(): Promise<string[]>;
    setupProvider(connector: ISignClient): Promise<void>;
    switchChain({ chainId }: {
        chainId: string;
    }): Promise<void>;
    addChain(chainConfig: CustomChainConfig): Promise<void>;
    protected lookupNetwork(_: ISignClient): Promise<string>;
    private setupEngine;
    private setupEthEngine;
    private setupSolEngine;
    private getEthChainSwitchMiddleware;
    private connectedTopic;
    private checkIfAccountAllowed;
    private onConnectorStateUpdate;
}
