import { ChainId, NetworkType } from '@envanik/sdk';
import { AbstractConnector } from '@web3-react/abstract-connector';
import EventEmitter from 'eventemitter3';
export declare type activeFunctionType = (connector: AbstractConnector, onError?: (error: Error) => void, throwErrors?: boolean) => Promise<void>;
export declare type PangolinConnector = AbstractConnector & {
    isAuthorized?: () => Promise<boolean>;
    onQRCodeURI?: (setQRCode: (uri: string) => void) => void;
};
export declare const walletEvent: EventEmitter<string | symbol, any>;
export declare enum WalletEvents {
    CONNECTED = "connected",
    DISCONNECTED = "disconnected"
}
export declare abstract class Wallet {
    readonly connector: PangolinConnector;
    readonly name: string;
    readonly href: string | null;
    readonly icon: string;
    readonly description: string;
    readonly supportedChains: NetworkType[];
    readonly supportedChainsId: number[] | undefined;
    private wallletIsActive;
    /**
     * @param connector The connector in AbstractConnector object
     * @param name Name of wallet
     * @param href Link of the wallet website
     * @param icon Link of the wallet icon
     * @param description Breef description of wallet
     * @param supportedChains Array of NetworkType that this wallet support
     * @param supportedChainsId Array of Chain ids that this wallet support
     */
    constructor(args: {
        connector: PangolinConnector;
        name: string;
        href: string | null;
        icon: string;
        description: string;
        supportedChains: NetworkType[];
        supportedChainsId?: number[];
    });
    /**
     * Function that will be executed when try to connect to wallet.
     *
     * These parameters will be filled by the wallet modal
     *
     * @param activate useWeb3React function that activates the connector and the wallet
     * @param onSuccess function to execute on success
     * @param onError function to exeute on error
     */
    tryActivation({ activate, onSuccess, onError, }: {
        activate: activeFunctionType;
        onSuccess?: () => void;
        onError?: (error: unknown) => Promise<void>;
        chainId?: ChainId;
    }): Promise<void>;
    showWallet(): boolean;
    /**
     * Return if this wallet is installed
     */
    abstract installed(): boolean;
    /**
     * Function to disconnect the wallet
     */
    disconnect(): void;
    get isActive(): boolean;
}
