UNPKG

@bitgo/utxo-lib

Version:

Client-side Bitcoin JavaScript library

120 lines 6.07 kB
import { TxInput } from 'bitcoinjs-lib'; export declare function isPlaceholderSignature(v: number | Buffer): boolean; /** * @return true iff P2TR script path's control block matches BitGo's need */ export declare function isValidControlBock(controlBlock: Buffer): boolean; /** * @return script path level for P2TR control block */ export declare function calculateScriptPathLevel(controlBlock: Buffer): number; /** * @return leaf version for P2TR control block. */ export declare function getLeafVersion(controlBlock: Buffer): number; export type ParsedScriptType2Of3 = 'p2sh' | 'p2shP2wsh' | 'p2wsh' | 'taprootKeyPathSpend' | 'taprootScriptPathSpend'; export type ParsedScriptType = ParsedScriptType2Of3 | 'p2shP2pk'; export type ParsedPubScript = { scriptType: ParsedScriptType; }; export type ParsedSignatureScript = { scriptType: ParsedScriptType; }; export interface ParsedSignatureScriptP2shP2pk extends ParsedSignatureScript { scriptType: 'p2shP2pk'; publicKeys: [Buffer]; signatures: [Buffer]; } export interface ParsedPubScriptTaprootKeyPath extends ParsedPubScript { scriptType: 'taprootKeyPathSpend'; publicKeys: [Buffer]; pubScript: Buffer; } export interface ParsedPubScriptTaprootScriptPath extends ParsedPubScript { scriptType: 'taprootScriptPathSpend'; publicKeys: [Buffer, Buffer]; pubScript: Buffer; } export type ParsedPubScriptTaproot = ParsedPubScriptTaprootKeyPath | ParsedPubScriptTaprootScriptPath; export interface ParsedPubScriptP2ms extends ParsedPubScript { scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'; publicKeys: [Buffer, Buffer, Buffer]; pubScript: Buffer; redeemScript: Buffer | undefined; witnessScript: Buffer | undefined; } export interface ParsedPubScriptP2shP2pk extends ParsedPubScript { scriptType: 'p2shP2pk'; publicKeys: [Buffer]; pubScript: Buffer; redeemScript: Buffer; } export interface ParsedSignatureScriptP2ms extends ParsedSignatureScript { scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'; publicKeys: [Buffer, Buffer, Buffer]; signatures: [Buffer, Buffer] | [Buffer | 0, Buffer | 0, Buffer | 0]; pubScript: Buffer; redeemScript: Buffer | undefined; witnessScript: Buffer | undefined; } /** * Keypath spends only have a single signature */ export interface ParsedSignatureScriptTaprootKeyPath extends ParsedSignatureScript { scriptType: 'taprootKeyPathSpend'; signatures: [Buffer]; } /** * Taproot Scriptpath spends are more similar to regular p2ms spends and have two public keys and * two signatures */ export interface ParsedSignatureScriptTaprootScriptPath extends ParsedSignatureScript { scriptType: 'taprootScriptPathSpend'; publicKeys: [Buffer, Buffer]; signatures: [Buffer, Buffer]; controlBlock: Buffer; leafVersion: number; /** Indicates the level inside the taptree. */ scriptPathLevel: number; pubScript: Buffer; } export type ParsedSignatureScriptTaproot = ParsedSignatureScriptTaprootKeyPath | ParsedSignatureScriptTaprootScriptPath; export type InputPubScript = Buffer; /** * Parse a transaction's signature script to obtain public keys, signatures, the sig script, * and other properties. * * Only supports script types used in BitGo transactions. * * @param input * @returns ParsedSignatureScript */ export declare function parseSignatureScript(input: TxInput): ParsedSignatureScriptP2shP2pk | ParsedSignatureScriptP2ms | ParsedSignatureScriptTaproot; export declare function parseSignatureScript2Of3(input: TxInput): ParsedSignatureScriptP2ms | ParsedSignatureScriptTaproot; /** * @return pubScript (scriptPubKey/redeemScript/witnessScript) is parsed. * P2SH => scriptType, pubScript (redeemScript), redeemScript, public keys * PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys. * P2SH-PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys. * taprootScriptPathSpend (P2TR and P2TRMUISG2 script path) => scriptType, pubScript, pub keys. * taprootKeyPathSpend (P2TRMUISG2 key path) => scriptType, pubScript (34-byte output script), pub key (tapOutputKey). */ export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: 'taprootKeyPathSpend'): ParsedPubScriptTaprootKeyPath; export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: 'taprootScriptPathSpend'): ParsedPubScriptTaprootScriptPath; export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'): ParsedPubScriptP2ms; export declare function parsePubScript2Of3(inputPubScript: InputPubScript, scriptType: ParsedScriptType2Of3): ParsedPubScriptP2ms | ParsedPubScriptTaproot; /** * @return pubScript (scriptPubKey/redeemScript/witnessScript) is parsed. * P2SH => scriptType, pubScript (redeemScript), redeemScript, public keys * PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys. * P2SH-PW2SH => scriptType, pubScript (witnessScript), witnessScript, public keys. * taprootScriptPathSpend (P2TR and P2TRMUISG2 script path) => scriptType, pubScript, pub keys. * taprootKeyPathSpend (P2TRMUISG2 key path) => scriptType, pubScript (34-byte output script), pub key (tapOutputKey). * P2SH-P2PK => scriptType, pubScript, pub key, redeemScript. */ export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'taprootKeyPathSpend'): ParsedPubScriptTaprootKeyPath; export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'taprootScriptPathSpend'): ParsedPubScriptTaprootScriptPath; export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'p2shP2pk'): ParsedPubScriptP2shP2pk; export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: 'p2sh' | 'p2shP2wsh' | 'p2wsh'): ParsedPubScriptP2ms; export declare function parsePubScript(inputPubScript: InputPubScript, scriptType: ParsedScriptType): ParsedPubScriptP2ms | ParsedPubScriptTaproot | ParsedPubScriptP2shP2pk; //# sourceMappingURL=parseInput.d.ts.map