import { Signer, Transaction } from '@hashgraph/sdk';
import { NetworkName } from '@hashgraph/sdk/lib/client/Client';
import { DAppConnector } from '@hashgraph/hedera-wallet-connect';
import { SignClientTypes } from '@walletconnect/types';
import { HederaTransactionAdapter } from '../HederaTransactionAdapter';
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';
export declare class HederaWalletConnectTransactionAdapter extends HederaTransactionAdapter {
    private readonly eventService;
    protected readonly networkService: NetworkService;
    protected readonly mirrorNodeAdapter: MirrorNodeAdapter;
    account: Account;
    signer: Signer;
    protected network: Environment;
    protected dAppConnector: DAppConnector | undefined;
    protected projectId: string;
    protected dappMetadata: SignClientTypes.Metadata;
    private chainId;
    constructor(eventService: EventService, networkService: NetworkService, mirrorNodeAdapter: MirrorNodeAdapter);
    private setupDisconnectEventHandler;
    private handleDisconnect;
    /**
     * Initializes the Hedera Wallet Connect Transaction Adapter.
     *
     * @param network - Optional parameter specifying the network name.
     * @returns A promise that resolves to the current network name.
     */
    init(network?: NetworkName): Promise<string>;
    register(hwcSettings: HWCSettings): Promise<InitializationData>;
    private getChainId;
    connectWalletConnect(network?: string): Promise<string>;
    /**
     * Stops the Hedera WalletConnect connection.
     * @returns A promise that resolves to a boolean indicating whether the stop operation was successful.
     */
    stop(): Promise<boolean>;
    /**
     * Restarts the transaction adapter with the specified network.
     * @param network The network name to initialize the adapter with.
     * @returns A promise that resolves when the adapter has been restarted.
     */
    restart(network: NetworkName): Promise<void>;
    signAndSendTransaction(transaction: Transaction): Promise<TransactionResponse>;
    getAccount(): Account;
    /**
     * Signs a transaction using Hedera WalletConnect.
     * @param message - The transaction to sign.
     * @returns A promise that resolves to the hexadecimal signature of the signed transaction.
     * @throws Error if Hedera WalletConnect is not initialized, account is not set, no signers found,
     * the message is not an instance of Transaction, or consensus nodes are not set for the environment.
     * @throws SigningError if an error occurs during the signing process.
     */
    sign(message: string | Transaction): Promise<string>;
}
