import { Adapter, AdapterState, WalletReadyState } from '@tronweb3/tronwallet-abstract-adapter';
import type { Transaction, SignedTransaction, AdapterName, BaseAdapterConfig, Network, EventEmitter } from '@tronweb3/tronwallet-abstract-adapter';
import type { TronWeb, TronLinkWallet, ReqestAccountsResponse } from '@tronweb3/tronwallet-adapter-tronlink';
interface GateReqestAccountsResponseErr extends ReqestAccountsResponse {
    rpcUrl?: string;
    accountAddress?: string;
    hex?: string;
}
type GateReqestAccountsResponse = GateReqestAccountsResponseErr | Array<string>;
interface TronTronWeb extends TronWeb {
    ready: boolean;
}
interface TronWallet extends EventEmitter {
    request(config: Record<string, unknown>): Promise<GateReqestAccountsResponse | null>;
    tronWeb: TronTronWeb;
}
interface GateWallet extends EventEmitter {
    tronLink: TronLinkWallet;
    tron: TronWallet;
}
declare global {
    interface Window {
        gatewallet?: GateWallet;
    }
}
export interface GateWalletAdapterConfig extends BaseAdapterConfig {
    /**
     * Timeout in millisecond for checking if GateWallet wallet exists.
     * Default is 2 * 1000ms
     */
    checkTimeout?: number;
    /**
     * Set if open GateWallet app using DeepLink.
     * Default is true.
     */
    openAppWithDeeplink?: boolean;
}
export declare const GateWalletAdapterName: AdapterName<"Gate Wallet">;
export declare class GateWalletAdapter extends Adapter {
    name: AdapterName<"Gate Wallet">;
    url: string;
    icon: string;
    config: Required<GateWalletAdapterConfig>;
    private _readyState;
    private _state;
    private _connecting;
    private _wallet;
    private _address;
    constructor(config?: GateWalletAdapterConfig);
    get address(): string | null;
    get state(): AdapterState;
    get readyState(): WalletReadyState;
    get connecting(): boolean;
    /**
     * Get network information used by GateWallet.
     * @returns {Network} Current network information.
     */
    network(): Promise<Network>;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    signTransaction(transaction: Transaction, privateKey?: string): Promise<SignedTransaction>;
    multiSign(transaction: Transaction, privateKey?: string | false, permissionId?: number): Promise<SignedTransaction>;
    signMessage(message: string, privateKey?: string): Promise<string>;
    private checkAndGetWallet;
    private _listenEvent;
    private _stopListenEvent;
    private onGateAccountChange;
    private checkIfOpenGateWallet;
    private _checkPromise;
    /**
     * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
     * @returns if GateWallet exists
     */
    private _checkWallet;
    private _updateWallet;
    private setAddress;
    private setState;
}
export {};
//# sourceMappingURL=adapter.d.ts.map