import { CoinSelectTarget } from '@atomicfinance/bitcoin-utils';
import { Address, bitcoin as bT, CreateMultisigResponse, Input, Output, Transaction as Tx, WalletProvider } from '@atomicfinance/types';
import { Transaction } from 'bitcoinjs-lib';
export default class Wallet implements WalletProvider {
    client: any;
    constructor(client: any);
    /**
     * Get addresses/accounts of the user.
     * @param {number} [startingIndex] - Index to start
     * @param {number} [numAddresses] - Number of addresses to retrieve
     * @param {boolean} [change] - True for change addresses
     * @return {Promise<Address[], InvalidProviderResponseError>} Resolves with a list
     *  of addresses.
     *  Rejects with InvalidProviderResponseError if provider's response is invalid.
     */
    getAddresses(startingIndex?: number, numAddresses?: number, change?: boolean): Promise<Address[]>;
    /**
     * Get used addresses/accounts of the user.
     * @param {number} [numAddressPerCall] - Number of addresses to retrieve per call
     * @return {Promise<Address[], InvalidProviderResponseError>} Resolves with a list
     *  of addresses.
     *  Rejects with InvalidProviderResponseError if provider's response is invalid.
     */
    getUsedAddresses(numAddressPerCall?: number): Promise<Address[]>;
    /**
     * Get unused address/account of the user.
     * @param {boolean} [change] - True for change addresses
     * @param {number} [numAddressPerCall] - Number of addresses to retrieve per call
     * @return {Promise<Address, InvalidProviderResponseError>} Resolves with a address
     *  object.
     *  Rejects with InvalidProviderResponseError if provider's response is invalid.
     */
    getUnusedAddress(change?: boolean, numAddressPerCall?: number): Promise<Address>;
    /**
     * Sign a message.
     * @param {!string} message - Message to be signed.
     * @param {!string} from - The address from which the message is signed.
     * @return {Promise<string>} Resolves with a signed message.
     */
    signMessage(message: string, from: string): Promise<string>;
    /**
     * Retrieve the network connected to by the wallet
     * @return {Promise<any>} Resolves with the network object
     */
    getConnectedNetwork(): Promise<any>;
    /**
     * Retrieve the availability status of the wallet
     * @return {Promise<Boolean>} True if the wallet is available to use
     */
    isWalletAvailable(): Promise<boolean>;
    /**
     * Flag indicating if the wallet allows apps to update transaction fees
     * @return {Promise<Boolean>} True if wallet accepts fee updating
     */
    get canUpdateFee(): boolean;
    /**
     * Retrieve the private key for the account
     * @return {Promise<string>} Resolves with the key as a string
     */
    exportPrivateKey(): Promise<string>;
    findAddress(addresses: string[], change?: boolean | null): Promise<Address>;
    setUnusedAddressesBlacklist(unusedAddressesBlacklist: any): any;
    getUnusedAddressesBlacklist(): any;
    createMultisig(m: number, pubkeys: string[]): CreateMultisigResponse;
    buildMultisigPSBT(m: number, pubkeys: string[], inputs: Input[], outputs: Output[]): string;
    walletProcessPSBT(psbtString: string): Promise<string>;
    finalizePSBT(psbtString: string): Transaction;
    buildSweepTransactionWithSetOutputs(externalChangeAddress: string, feePerByte: number, outputs: Output[], fixedInputs: Input[]): Promise<{
        hex: string;
        fee: number;
    }>;
    sendSweepTransactionWithSetOutputs(externalChangeAddress: string, feePerByte: number, outputs: Output[], fixedInputs: Input[]): Promise<Tx<bT.Transaction>>;
    getInputsForAmount(_targets: bT.OutputTarget[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number, sweep?: boolean): Promise<{
        inputs: bT.UTXO[];
        change: CoinSelectTarget;
        outputs: CoinSelectTarget[];
        fee: number;
    }>;
    getInputsForDualFunding(collaterals: number[], feePerByte?: number, fixedInputs?: bT.Input[], numAddressPerCall?: number): Promise<{
        inputs: bT.UTXO[];
        fee: bigint;
    }>;
}
