import { Transaction } from "@hiero-ledger/sdk";
import { NetworkName } from "@hiero-ledger/sdk/lib/client/Client";
import { BaseHederaTransactionAdapter } from "../BaseHederaTransactionAdapter";
import { InitializationData } from "../../../out/TransactionAdapter";
import { MirrorNodeAdapter } from "../../../out/mirror/MirrorNodeAdapter";
import EventService from "../../../../app/service/event/EventService";
import NetworkService from "../../../../app/service/network/NetworkService";
import Account from "../../../../domain/context/account/Account";
import TransactionResponse from "../../../../domain/context/transaction/TransactionResponse";
import { Environment } from "../../../../domain/context/network/Environment";
import HWCSettings from "../../../../core/settings/walletConnect/HWCSettings";
import { TransactionType } from "../../../out/TransactionResponseEnums";
import { ethers } from "ethers";
export declare class HederaWalletConnectTransactionAdapter extends BaseHederaTransactionAdapter {
    private readonly eventService;
    protected readonly networkService: NetworkService;
    protected readonly mirrorNodeAdapter: MirrorNodeAdapter;
    account: Account;
    protected network: Environment;
    protected projectId: string;
    protected dappMetadata: {
        name: string;
        description: string;
        url: string;
        icons: string[];
    };
    protected hederaAdapter: any;
    protected eip155Adapter: any;
    protected appKit: any;
    protected hederaProvider: any;
    protected injectedEip155Provider: any | undefined;
    private _isConnecting;
    private _hederaSessionCaptured;
    constructor(eventService: EventService, networkService: NetworkService, mirrorNodeAdapter: MirrorNodeAdapter);
    init(network?: NetworkName): Promise<string>;
    register(hwcSettings: HWCSettings): Promise<InitializationData>;
    connectWalletConnect(network?: string): Promise<string>;
    subscribeInjected(): void;
    stop(): Promise<boolean>;
    restart(network: NetworkName): Promise<void>;
    processTransaction(transaction: Transaction, _transactionType: TransactionType, _startDate?: string): Promise<TransactionResponse>;
    private executeNativeTransaction;
    supportsEvmOperations(): boolean;
    executeContractCall(contractId: string, iface: ethers.Interface, functionName: string, params: unknown[], gasLimit: number, transactionType?: TransactionType, payableAmountHbar?: string, startDate?: string, evmAddress?: string): Promise<TransactionResponse>;
    private executeEvmContractCall;
    deployContract(bytecodeHex: string, gas: number): Promise<TransactionResponse>;
    sign(message: string | Transaction): Promise<string>;
    getAccount(): Account;
    getNetworkService(): NetworkService;
    getMirrorNodeAdapter(): MirrorNodeAdapter;
    private initAdaptersAndProvider;
    private openPairingModal;
    private resolveAndCacheAccount;
    private resolveAndCacheAccountFromInjected;
    private subscribe;
    private ensureInitialized;
    /**
     * Ensures the native HIP-820 provider has accounts loaded.
     * After AppKit pairing, `initProviders()` may run before the session's
     * hedera namespace is fully populated, leaving the native provider with
     * an empty accounts list.  Re-running `initProviders()` picks up the
     * accounts from the now-populated session.
     */
    private ensureNativeProviderReady;
    private ensureFrozen;
    private isTestnet;
    private isEvmSession;
    private evmChainId;
    private currentEvmChainRef;
    private clearWalletConnectStorage;
    private rpcProvider;
    private static readonly HEDERA_EVM_CHAINS;
    private static prototypePatched;
    /**
     * Patches `HederaProvider` prototype methods BEFORE any instance is created.
     *
     * Two methods need patching:
     *
     * 1. `initProviders` — called by `HederaProvider.init()`, `connect()`,
     *    `pair()` and the `rpcProviders` getter. Filters session accounts to
     *    Hedera-only chains so `EIP155Provider` doesn't throw for non-Hedera
     *    chains that MetaMask includes in the approved session.
     *
     * 2. `createProviders` — inherited from `UniversalProvider`, called during
     *    `checkStorage()` → `initialize()`. The parent's version creates its own
     *    EIP155 provider with the raw session chains and throws for non-Hedera
     *    chains. Since `HederaProvider` uses `initProviders` instead, we make
     *    `createProviders` a no-op.
     */
    private patchInitProvidersPrototype;
    /**
     * Instance-level patch for `initProviders` — safety net for calls that
     * happen after `HederaProvider.init()` (e.g. `connect()`, `pair()`,
     * `rpcProviders` getter).
     */
    private patchInitProviders;
}
