import { JsonRpcProvider } from '@ethersproject/providers';
import { Transaction } from '@hashgraph/sdk';
import { ChainId } from '@envanik/sdk';
import { AbstractConnector } from '@web3-react/abstract-connector';
import { AbstractConnectorArguments } from '@web3-react/types';
import EventEmitter from 'eventemitter3';
export declare const hashconnectEvent: EventEmitter<string | symbol, any>;
export interface HashConfigType {
    networkId: 'testnet' | 'mainnet' | 'previewnet';
    chainId: ChainId.HEDERA_MAINNET | ChainId.HEDERA_TESTNET;
    contractId: string;
}
export declare enum HashConnectEvents {
    CHECK_EXTENSION = "checkExtension",
    ACTIVATE_CONNECTOR = "activateConnector"
}
export declare const mainnetHederaConfig: {
    readonly networkId: "mainnet";
    readonly chainId: ChainId.HEDERA_MAINNET;
    readonly contractId: "contract -id";
};
export declare const testnetHederaConfig: {
    readonly networkId: "testnet";
    readonly chainId: ChainId.HEDERA_TESTNET;
    readonly contractId: "contract -id";
};
export declare const CONFIG_MAPPING: {
    295: {
        readonly networkId: "mainnet";
        readonly chainId: ChainId.HEDERA_MAINNET;
        readonly contractId: "contract -id";
    };
    296: {
        readonly networkId: "testnet";
        readonly chainId: ChainId.HEDERA_TESTNET;
        readonly contractId: "contract -id";
    };
};
export declare class HashConnector extends AbstractConnector {
    private provider;
    private chainId;
    private normalizeChainId;
    private normalizeAccount;
    private network;
    private instance;
    private topic;
    private pairingString;
    private pairingData;
    private nodeAccountIds;
    availableExtension: boolean;
    emittedActivateConnector: boolean;
    private initData;
    constructor(args: AbstractConnectorArguments & {
        normalizeChainId: boolean;
        normalizeAccount: boolean;
        config: HashConfigType;
    });
    init(): Promise<void>;
    private handleFoundExtensionEvent;
    private handleConnectionStatusChangeEvent;
    private handleFoundIframeEvent;
    private handlePairingEvent;
    setUpEvents(): void;
    destroyEvents(): void;
    /**
     * This function change the client of connector
     * When change the chain we need to change the client too
     */
    private changeClient;
    getChainId(): Promise<ChainId.HEDERA_TESTNET | ChainId.HEDERA_MAINNET>;
    get activeChainId(): ChainId.HEDERA_TESTNET | ChainId.HEDERA_MAINNET;
    getProvider(): Promise<JsonRpcProvider>;
    activate(): Promise<any>;
    toAddress: (accountId: string) => string;
    getAccount(): Promise<null | string>;
    private _close;
    deactivate(): void;
    close(): Promise<void>;
    isAuthorized(): Promise<boolean>;
    private makeBytes;
    sendTransaction(transaction: Transaction, accountId: string, returnTransaction?: boolean, hideNfts?: boolean): Promise<{
        hash: string;
    } | null>;
    getSigner(): import("hashconnect/dist/esm/provider/signer").HashConnectSigner | null;
    /**
     * This function change the config of connector to chain config
     * @param chainId Chaind id to get config
     */
    changeConfig(chainId: ChainId): void;
    changeChain(chainId: ChainId): Promise<void>;
}
