import { Adapter, AdapterState, WalletReadyState, NetworkType } from '@tronweb3/tronwallet-abstract-adapter';
import type { Transaction, SignedTransaction, AdapterName, BaseAdapterConfig, Network } from '@tronweb3/tronwallet-abstract-adapter';
import type { ReqestAccountsResponse, Tron, TronWeb } from './types.js';
export interface TronLinkWallet {
    ready: boolean;
    tronWeb: TronWeb;
    request(config: Record<string, unknown>): Promise<ReqestAccountsResponse | null>;
}
export declare const chainIdNetworkMap: Record<string, NetworkType>;
export declare function getNetworkInfoByTronWeb(tronWeb: TronWeb): Promise<{
    networkType: NetworkType;
    chainId: string;
    fullNode: string;
    solidityNode: string;
    eventServer: string;
}>;
declare global {
    interface Window {
        tronLink?: TronLinkWallet;
        tronWeb?: TronWeb & {
            ready?: boolean;
        };
        tron?: Tron;
    }
}
export interface TronLinkAdapterConfig extends BaseAdapterConfig {
    /**
     * Timeout in millisecond for checking if TronLink wallet exists.
     * Default is 30 * 1000ms
     */
    checkTimeout?: number;
    /**
     * Set if open TronLink app using DeepLink.
     * Default is true.
     */
    openTronLinkAppOnMobile?: boolean;
    /**
     * The icon of your dapp. Used when open TronLink app in mobile device browsers.
     */
    dappIcon?: string;
    /**
     * The name of your dapp. Used when open TronLink app in mobile device browsers.
     */
    dappName?: string;
}
export declare const TronLinkAdapterName: AdapterName<"TronLink">;
export declare class TronLinkAdapter extends Adapter {
    name: AdapterName<"TronLink">;
    url: string;
    icon: string;
    config: Required<TronLinkAdapterConfig>;
    private _readyState;
    private _state;
    private _connecting;
    private _wallet;
    private _address;
    private _supportNewTronProtocol;
    constructor(config?: TronLinkAdapterConfig);
    get address(): string | null;
    get state(): AdapterState;
    get readyState(): WalletReadyState;
    get connecting(): boolean;
    /**
     * Get network information used by TronLink.
     * @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>;
    /**
     * Switch to target chain. If current chain is the same as target chain, the call will success immediately.
     * Available chainIds:
     * - Mainnet: 0x2b6653dc
     * - Shasta: 0x94a9059e
     * - Nile: 0xcd8690dc
     * @param chainId chainId
     */
    switchChain(chainId: string): Promise<void>;
    private checkAndGetWallet;
    private _listenTronLinkEvent;
    private _stopListenTronLinkEvent;
    private _tronLinkMessageHandler;
    private checkIfOpenTronLink;
    private _listenTronEvent;
    private _stopListenTronEvent;
    private _onChainChanged;
    private _onAccountsChanged;
    private _checkPromise;
    /**
     * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
     * @returns if wallet exists
     */
    private _checkWallet;
    private _updateWallet;
    private checkReadyInterval;
    private checkForWalletReadyForApp;
    private setAddress;
    private setState;
}
//# sourceMappingURL=adapter.d.ts.map