import { EnabledWallet, Wallet } from '../interfaces/Wallet';
import { Utxo } from '../interfaces/Utxo';
import { Paginate } from '../interfaces/Paginate';
import { BuildTransactionInput } from '../interfaces/BuildTransactionInput';
export declare class CardanoWallets {
    static _enabledWallet: EnabledWallet;
    static wallet: Wallet;
    static localStorageKey: string;
    static supportedWalletNames: string[];
    /**
     *
     * Used to set the wallet in local storage
     *
     * @param walletKey string
     */
    private static _setWallet;
    /**
     *
     * Helper function to add supported wallets.
     * If none are added, all wallets are supported
     *
     * @param wallets string[], e.g. ['nami', 'eternal'] (window.cardano[key])
     *
     */
    static addSupportedWallets(wallets: string[]): void;
    static setAdditionalWalletData(data: Record<string, string>): void;
    /**
     *
     * Uses CIP-30 'enable' function to enable the wallet
     *
     * @param wallet Wallet to enable
     * @returns
     */
    private static _enableWallet;
    /**
     *
     * Validation method used to check if the wallet is supported
     *
     * @param walletKey string
     */
    private static validateSupportedWallet;
    /**
     *
     * Validation method used to check the window.cardano object
     *
     * @param walletKey string
     */
    static validateWallet(walletKey: string): void;
    /**
     *
     * Used to enable the wallet and set the wallet in local storage
     *
     * @param walletKey string e.g. 'nami', 'eternal', etc
     * @returns an enabled wallet
     */
    static connect(walletKey: string): Promise<Wallet>;
    static getWalletDetailsFromStorage(): any;
    static disableWallet: () => Promise<void>;
    /**
     *
     * CIP-30 method to check if wallet is enabled
     * https://cips.cardano.org/cips/cip30/#cardanowalletnameisenabledpromisebool
     *
     * @returns CIP-30 Wallet
     */
    static isWalletEnabled: () => Promise<boolean>;
    /**
     *
     * CIP-30 method to get the balance of the wallet
     * https://cips.cardano.org/cips/cip30/#apigetbalancepromisecborvalue
     *
     * @returns balanceHex
     */
    static getBalance: () => Promise<string>;
    /**
     *
     * CIP-30 method to get the network id of the wallet
     * https://cips.cardano.org/cips/cip30/#apigetnetworkidpromisenumber
     *
     * @returns 0 or 1 (0 = testnet, 1 = mainnet)
     */
    static getNetworkId: () => Promise<number>;
    /**
     *
     * CIP-30 method to get the UTXOs of the wallet
     * https://cips.cardano.org/cips/cip30/#apigetutxosamountcborvalueundefinedpaginatepaginateundefinedpromisetransactionunspentoutputnull
     *
     * @returns an array of hex encoded utxos
     */
    static getUtxos: (amount?: string, paginate?: Paginate) => Promise<string[]>;
    /**
     *
     * CIP-30 method to get wallet collateral
     * https://cips.cardano.org/cips/cip30/#apigetcollateralparamsamountcborcoinpromisetransactionunspentoutputnull
     *
     * @returns list of Utxos
     */
    static getCollateral: () => Promise<string[]>;
    /**
     *
     * CIP-30 method to get unused addresses
     * https://cips.cardano.org/cips/cip30/#apigetunusedaddressespromiseaddress
     *
     * @returns list of unused addresses
     */
    static getUnusedAddresses: () => Promise<string[]>;
    /**
     *
     * CIP-30 method to get a change address
     * https://cips.cardano.org/cips/cip30/#apigetchangeaddresspromiseaddress
     *
     * @returns change address
     */
    static getChangeAddress: () => Promise<string>;
    /**
     *
     * CIP-30 method to get a reward address
     * https://cips.cardano.org/cips/cip30/#apigetrewardaddressespromiseaddress
     *
     * @returns a reward address
     */
    static getRewardAddresses: () => Promise<string[]>;
    /**
     *
     * CIP-30 method to get a sign a transaction
     * https://cips.cardano.org/cips/cip30/#apisigntxtxcbortransactionpartialsignboolfalsepromisecbortransaction_witness_set
     *
     * @param tx hex encoded transaction
     * @param partialSign boolean
     * @returns
     */
    static signTx: (tx: string, partialSign?: boolean) => Promise<any>;
    /**
     *
     * CIP-30 method to submit a transaction
     * https://cips.cardano.org/cips/cip30/#apisubmittxtxcbortransactionpromisehash32
     *
     * @param tx hex encoded transaction
     * @returns transaction id
     */
    static submitTx: (tx: string) => Promise<string>;
    /**
     *
     * Uses the CIP-30 getNetworkId to check if wallet is in mainnet or testnet
     *
     * @returns boolean
     */
    static isMainnet(): Promise<boolean>;
    /**
     *
     * Fetches the wallet balance and converts it to ADA
     *
     * @returns number
     */
    static getAdaBalance(): Promise<number>;
    /**
     *
     * Used to verify that a wallet has the minimum necessary funds
     *
     * @param minimumBalance number
     */
    static verifyBalance(minimumBalance: number): Promise<void>;
    /**
     *
     * Used to verify a wallet is actively staked
     *
     * @param { rewardAddress: string }
     * @returns void if staked, throws NotDelegated error if not
     *
     */
    static verifyStaking({ rewardAddress }: {
        rewardAddress: string;
    }): Promise<void>;
    /**
     *
     * Gets bech32 addresses from UTxOs
     *
     * @returns string[]
     */
    static getUtxoBech32Addresses(): Promise<string[]>;
    /**
     *
     * Uses the serialization library to convert hex encoded utxos to human readable values
     *
     * @param rawUtxos Raw utxos from getUtxos()
     * @returns Utxo[]
     */
    static buildUtxos(rawUtxos: string[]): Promise<Utxo[]>;
    static buildTransaction({ paymentDetails, feeDetails }: BuildTransactionInput): Promise<{
        txHash: string;
        tx: string;
    }>;
    static signTransaction(tx: string): Promise<string>;
    static submitSignedTransaction(signedTxHex: string): Promise<string>;
    static signAndSubmitTransaction(tx: string): Promise<string>;
}
