import { Transaction } from '@scure/btc-signer';
export { Address, Transaction, p2pk, p2pkh, p2sh, p2wpkh, p2wsh } from '@scure/btc-signer';
import { HDKey, Versions } from '@scure/bip32';
export { HDKey } from '@scure/bip32';
import { IBitcoinLock, IReleaseRequest, ArgonPrimitivesBitcoinBitcoinNetwork } from '@argonprotocol/mainchain';
import { BTC_NETWORK } from '@scure/btc-signer/utils';
import * as bip39 from '@scure/bip39';
export { bip39 };

/* tslint:disable */
/* eslint-disable */

declare enum BitcoinNetwork {
    /**
     * Mainnet Bitcoin.
     */
    Bitcoin = 0,
    /**
     * Bitcoin's testnet network.
     */
    Testnet = 1,
    /**
     * Bitcoin's signet network
     */
    Signet = 2,
    /**
     * Bitcoin's regtest network.
     */
    Regtest = 3,
}

declare class CosignScript {
    readonly lock: IBitcoinLock;
    private network;
    constructor(lock: IBitcoinLock, network: BitcoinNetwork);
    getFundingPsbt(): Uint8Array;
    calculateFee(feeRatePerSatVb: bigint, toScriptPubkey: string): bigint;
    calculateScriptPubkey(): string;
    getCosignPsbt(args: {
        utxoRef: {
            txid: string;
            vout: number;
        };
        releaseRequest: IReleaseRequest;
        utxoSatoshis?: bigint;
    }): Transaction;
    psbtFromHex(psbtHex: string): Transaction;
    /**
     * Cosigns the PSBT with the vault xpub.
     * @param psbt - The PSBT to cosign.
     * @param lock - The Bitcoin lock containing the vault information.
     * @param vaultXpriv - The vault's extended private key of which the xpub was used to create the vault.
     */
    vaultCosignPsbt(psbt: Transaction, lock: IBitcoinLock, vaultXpriv: HDKey): Transaction;
    /**
     * Cosigns the transaction.
     */
    cosignAndGenerateTx(args: {
        releaseRequest: IReleaseRequest;
        vaultCosignature: Uint8Array;
        utxoRef: {
            txid: string;
            vout: number;
        };
        ownerXpriv: HDKey;
        ownerXprivChildHdPath?: string;
        addTx?: string;
    }): Transaction;
}
declare function getBitcoinNetworkFromApi(network: ArgonPrimitivesBitcoinBitcoinNetwork): BitcoinNetwork;

declare function getBip32Version(network?: BitcoinNetwork): Versions | undefined;
declare function getChildXpriv(bip39Seed: Uint8Array, hdPath: string, network?: BitcoinNetwork): HDKey;
declare function getXpubFromXpriv(xpriv: HDKey): string;
declare function getCompressedPubkey(pubkey: string | Uint8Array): Uint8Array;
declare function getBech32Prefix(network: BitcoinNetwork): string;
declare function p2wshScriptHexToAddress(scriptPubKeyHex: string, network: BitcoinNetwork): string;
declare function addressBytesHex(address: string, network: BitcoinNetwork): string;
declare function keyToU8a(pubkey: string | Uint8Array): Uint8Array;
declare function getScureNetwork(network: BitcoinNetwork): BTC_NETWORK;

export { BitcoinNetwork, CosignScript, addressBytesHex, getBech32Prefix, getBip32Version, getBitcoinNetworkFromApi, getChildXpriv, getCompressedPubkey, getScureNetwork, getXpubFromXpriv, keyToU8a, p2wshScriptHexToAddress };
