import { WalletLinkRelay } from "../relay/WalletLinkRelay";
import { AddressString, Callback } from "../types";
import { JSONRPCRequest, JSONRPCResponse } from "./JSONRPC";
import { Web3Provider } from "./Web3Provider";
export interface WalletLinkProviderOptions {
    relay: WalletLinkRelay;
    jsonRpcUrl: string;
    chainId?: number;
}
export declare class WalletLinkProvider implements Web3Provider {
    private readonly _filterPolyfill;
    private readonly _relay;
    private readonly _chainId;
    private readonly _jsonRpcUrl;
    private _addresses;
    constructor(options: Readonly<WalletLinkProviderOptions>);
    get selectedAddress(): AddressString | undefined;
    get networkVersion(): string;
    get isWalletLink(): boolean;
    get host(): string;
    get connected(): boolean;
    isConnected(): boolean;
    enable(): Promise<AddressString[]>;
    close(): void;
    send(request: JSONRPCRequest): JSONRPCResponse;
    send(request: JSONRPCRequest[]): JSONRPCResponse[];
    send(request: JSONRPCRequest, callback: Callback<JSONRPCResponse>): void;
    send(request: JSONRPCRequest[], callback: Callback<JSONRPCResponse[]>): void;
    send<T = any>(method: string, params?: any[] | any): Promise<T>;
    sendAsync(request: JSONRPCRequest, callback: Callback<JSONRPCResponse>): void;
    sendAsync(request: JSONRPCRequest[], callback: Callback<JSONRPCResponse[]>): void;
    scanQRCode(match?: RegExp): Promise<string>;
    arbitraryRequest(data: string): Promise<string>;
    supportsSubscriptions(): boolean;
    subscribe(): void;
    unsubscribe(): void;
    disconnect(): boolean;
    private _send;
    private _sendAsync;
    private _sendRequest;
    private _setAddresses;
    private _sendRequestAsync;
    private _sendMultipleRequestsAsync;
    private _handleSynchronousMethods;
    private _handleAsynchronousMethods;
    private _handleAsynchronousFilterMethods;
    private _isKnownAddress;
    private _ensureKnownAddress;
    private _prepareTransactionParams;
    private _requireAuthorization;
    private _throwUnsupportedMethodError;
    private _signEthereumMessage;
    private _ethereumAddressFromSignedMessage;
    private _eth_accounts;
    private _eth_coinbase;
    private _net_version;
    private _eth_requestAccounts;
    private _eth_sign;
    private _eth_ecRecover;
    private _personal_sign;
    private _personal_ecRecover;
    private _eth_signTransaction;
    private _eth_sendRawTransaction;
    private _eth_sendTransaction;
    private _eth_signTypedData_v1;
    private _eth_signTypedData_v3;
    private _eth_signTypedData_v4;
    private _walletlink_arbitrary;
    private _eth_uninstallFilter;
    private _eth_newFilter;
    private _eth_newBlockFilter;
    private _eth_newPendingTransactionFilter;
    private _eth_getFilterChanges;
    private _eth_getFilterLogs;
}
