import { RequestFn } from '@starknet-io/get-starknet-core';
import { StarknetWindowObject } from '@starknet-io/types-js';
import { JsonRpcProvider } from '@walletconnect/jsonrpc-provider';
import { default as SignClient } from '@walletconnect/sign-client';
import { SignerConnection } from '@walletconnect/signer-connection';
import { SessionTypes } from '@walletconnect/types';
import { AccountInterface, ProviderInterface, SignerInterface, constants } from 'starknet';
import { NamespaceAdapterOptions, NamespaceAdapter } from '../adapter';

export interface EthereumRpcConfig {
    chains: string[];
    methods: string[];
    events: string[];
}
export declare const serializeStarknetChainId: (chainId: string) => string;
export declare const deserializeStarknetChainId: (chainId: string) => string;
export declare class StarknetAdapter extends NamespaceAdapter implements StarknetWindowObject {
    id: string;
    name: string;
    version: string;
    icon: string;
    provider: ProviderInterface;
    signer: undefined;
    account: AccountInterface;
    selectedAddress: string;
    namespace: string;
    methods: string[];
    events: string[];
    remoteSigner: SignerInterface;
    signerConnection: SignerConnection;
    rpcProvider: JsonRpcProvider;
    chainId: string;
    client: SignClient;
    session?: SessionTypes.Struct;
    rpc: EthereumRpcConfig;
    private walletRpc;
    private handleRequest;
    constructor({ client, chainId, rpcUrl, provider }: NamespaceAdapterOptions);
    getNetworkName(chainId: string): constants.NetworkName;
    request: RequestFn;
    enable(): Promise<string[]>;
    get isConnected(): true;
    isPreauthorized(): Promise<boolean>;
    on: StarknetWindowObject["on"];
    off: StarknetWindowObject["off"];
    private requestWallet;
    get isConnecting(): boolean;
    disable(): Promise<void>;
    get isWalletConnect(): boolean;
    protected registerEventListeners(): void;
    protected formatChainId(chainId: string): string;
    protected parseChainId(chainId: string): string;
    protected setAccounts(accounts: string[]): void;
    private handleRequestChainId;
    private handleRequestAccounts;
    private handleGetPermissions;
    private handleAddInvokeTransaction;
    private handleSignTypedData;
    private handleSupportedSpecs;
}
