import { AdapterState, WalletReadyState, NetworkType, AddonAdapter } from '@tronweb3/tronwallet-abstract-adapter';
import type { Transaction, SignedTransaction, AdapterName, BaseAdapterConfig, Network, TypedData } 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 5000ms
     */
    checkTimeout?: number;
    /**
     * Set if open TronLink app using DeepLink.
     * Default is true.
     */
    openAppWithDeeplink?: boolean;
    /**
     * @deprecated Please use `openAppWithDeeplink`
     */
    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 AddonAdapter {
    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>;
    private _checkAndSign;
    signTransaction(transaction: Transaction): Promise<SignedTransaction>;
    /**
     *
     * @param transaction transaction to be signed
     * @param _, false to use tronWeb.trx.multiSign
     * @param permissionId permissionId for multiSign
     * @returns
     */
    multiSign(transaction: Transaction, options?: {
        permissionId?: number;
    }): Promise<SignedTransaction>;
    signMessage(message: string): Promise<string>;
    protected _signTypedData(typedData: TypedData): 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;
    protected _openAppByDeepLinkIfNeed(): boolean;
    private _listenTronEvent;
    private _stopListenTronEvent;
    private _onChainChanged;
    private _onAccountsChanged;
    private _checkPromise;
    private isLegacyTronLinkProvider;
    private hasDesktopLegacyTronLinkProvider;
    /**
     * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
     * @returns if wallet exists
     */
    protected _checkWallet(): Promise<boolean>;
    private _updateWallet;
    private checkReadyInterval;
    private checkForWalletReadyForApp;
    private setAddress;
    private setState;
}
//# sourceMappingURL=adapter.d.ts.map