import { LoginChallenge, RequestLoginAsync } from '@trezor/connect/lib/types/api/requestLogin';
import { Manifest, Params } from '@trezor/connect-web';
import { BehaviorSubject } from 'rxjs';
import { AccountInfo, ChainInfo, IProviderRpcError, SubscriptionMessage, WalletsNames, WalletStateProps } from '../../../models';
import { CustomTrezorGetAddress, GetTrezorAccountInfo, ITrezorWrapper, SendSignedTransactionProps, SendTransactionProps, TransferProps, TrezorData } from '../models';
/**
 * The client describes how to work with Trezor.
 * @implements ITrezorWrapper
 * @class
 */
export declare class TrezorWrapper implements ITrezorWrapper {
    static instance: TrezorWrapper;
    static type: WalletsNames;
    address$: BehaviorSubject<string[]>;
    chainId$: BehaviorSubject<ChainInfo | null>;
    subscriptionMessage$: BehaviorSubject<SubscriptionMessage | null>;
    isConnected$: BehaviorSubject<boolean>;
    errors$: BehaviorSubject<IProviderRpcError | null>;
    trezorData$: BehaviorSubject<TrezorData | null>;
    constructor({ address$, chainId$, isConnected$, subscriptionMessage$, errors$, }: WalletStateProps);
    /**
     * init TrezorConnect library
     * @param {Manifest} object
     * @return {Promise<void>}
     * @async
     */
    init({ appUrl, email }: Manifest): Promise<boolean>;
    isInstalled(): Promise<boolean>;
    /**
     * Get current trezor wallet addresses
     * @param {GetAddressProps} object
     * @param {Networks} network
     * @param {AllCoins[]} coins
     * @param {boolean} showOnTrezor
     * @return {Promise<string[]>} - wallet address
     * @async
     */
    getAddress: CustomTrezorGetAddress;
    /**
     * Get balance from current wallet in native coin
     * @param {AllCoins[]} coins -
     * @return {Promise<number[]>} - balance value
     * @async
     */
    getBalance(): Promise<void>;
    /**
     * Get account info from current wallets in native coin
     * @param {GetAccountInfo[]} args -
     * @return {Promise<number[]>}
     * @async
     */
    getAccountInfo(args: GetTrezorAccountInfo[]): Promise<AccountInfo[]>;
    /**
     * Get data for sign in via trezor
     * @param {Params<RequestLoginAsync | LoginChallenge>} params
     * @return {Promise<string[]>} - wallet address
     * @async
     */
    connectWallet(params?: Params<RequestLoginAsync | LoginChallenge>): Promise<string[]>;
    /**
     * Send Transaction with user's trezor
     * @param {SendSignedTransactionProps} object
     * @return {Promise<SignedTransaction | PushedTransaction | CardanoSignedTxData | EosSignedTx>}
     * @async
     */
    sendSignedTransaction({ network, coin, transaction }: SendSignedTransactionProps): Promise<import("xrpl").TxResponse | import("@ethersproject/abstract-provider").TransactionResponse | import("@trezor/connect/lib/types/api/pushTransaction").PushedTransaction>;
    /**
     * Send Transaction
     * @param {SendTransactionProps} object
     * @return {Promise<PushedTransaction>}
     * @async
     */
    sendTransaction({ coin, transaction }: SendTransactionProps): Promise<import("@trezor/connect/lib/types/api/pushTransaction").PushedTransaction>;
    /**
     * Transfer native coin
     * @param {TransferProps} args
     * @return {Promise<SignedTransaction | CardanoSignedTxData | EosSignedTx | PushedTransaction>}
     * @async
     */
    transfer({ network, coin, from, addressTo, value }: TransferProps): Promise<import("xrpl").TxResponse | import("@ethersproject/abstract-provider").TransactionResponse | import("@trezor/connect/lib/types/api/pushTransaction").PushedTransaction>;
    sign(): Promise<void>;
    getProvider(): Promise<import("@trezor/connect-web").TrezorConnect>;
}
