UNPKG

@bitgo-beta/utxo-lib

Version:

Client-side Bitcoin JavaScript library

94 lines 3.72 kB
/// <reference types="node" /> import { TxOutput } from 'bitcoinjs-lib'; import { Network } from '..'; import { UtxoPsbt } from './UtxoPsbt'; import { UtxoTransaction } from './UtxoTransaction'; import { UtxoTransactionBuilder } from './UtxoTransactionBuilder'; import { ChainCode, RootWalletKeys, WalletUnspent, WalletUnspentSigner } from './wallet'; /** * Public unspent data in BitGo-specific representation. */ export interface Unspent<TNumber extends number | bigint = number> { /** * Format: ${txid}:${vout}. * Use `parseOutputId(id)` to parse. */ id: string; /** * The network-specific encoded address. * Use `toOutputScript(address, network)` to obtain scriptPubKey. */ address: string; /** * The amount in satoshi. */ value: TNumber; } export interface NonWitnessUnspent<TNumber extends number | bigint = number> extends Unspent<TNumber> { prevTx: Buffer; } export declare function isNonWitnessUnspent<TNumber extends number | bigint = number>(u: Unspent<TNumber>): u is NonWitnessUnspent<TNumber>; /** * @return TxOutput from Unspent */ export declare function toOutput<TNumber extends number | bigint>(u: Unspent<TNumber>, network: Network): TxOutput<TNumber>; /** * @param outputId * @return TxOutPoint */ export declare function parseOutputId(outputId: string): TxOutPoint; /** * @param txid * @param vout * @return outputId */ export declare function formatOutputId({ txid, vout }: TxOutPoint): string; export declare function getOutputIdForInput(i: { hash: Buffer; index: number; }): TxOutPoint; /** * Reference to output of an existing transaction */ export declare type TxOutPoint = { txid: string; vout: number; }; /** * Output reference and script data. * Suitable for use for `txb.addInput()` */ export declare type PrevOutput<TNumber extends number | bigint = number> = TxOutPoint & TxOutput<TNumber>; /** * @return PrevOutput from Unspent */ export declare function toPrevOutput<TNumber extends number | bigint>(u: Unspent<TNumber>, network: Network): PrevOutput<TNumber>; /** * @param txb * @param u * @param sequence - sequenceId */ export declare function addToTransactionBuilder<TNumber extends number | bigint>(txb: UtxoTransactionBuilder<TNumber>, u: Unspent<TNumber>, sequence?: number): void; /** * Add a verifiable change output to the PSBT. The change output and all data * needed to verify it from public keys only are added to the PSBT. * * @param psbt the PSBT to add change output to * @param rootWalletKeys keys that will be able to spend the output * @param chain chain code to use for deriving scripts (and to determine script * type) chain is an API parameter in the BitGo API, and may be * any valid ChainCode * @param index derivation index for the change address * @param value value of the change output */ export declare function addChangeOutputToPsbt(psbt: UtxoPsbt<UtxoTransaction<bigint>>, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint): void; export declare function addToPsbt(psbt: UtxoPsbt<UtxoTransaction<bigint>>, u: WalletUnspent<bigint>, rootSigner: WalletUnspentSigner<RootWalletKeys>, network: Network): void; /** * Sum the values of the unspents. * Throws error if sum is not a safe integer value, or if unspent amount types do not match `amountType` * @param unspents - array of unspents to sum * @param amountType - expected value type of unspents * @return unspentSum - type matches amountType */ export declare function unspentSum<TNumber extends number | bigint>(unspents: Unspent<TNumber>[], amountType?: 'number' | 'bigint'): TNumber; //# sourceMappingURL=Unspent.d.ts.map