@bitgo/wasm-utxo 1.43.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -364,6 +364,36 @@ export class BitGoPsbt {
364
364
  const ptr = this.__destroy_into_raw();
365
365
  wasm.__wbg_bitgopsbt_free(ptr, 0);
366
366
  }
367
+ /**
368
+ * @param {string} txid
369
+ * @param {number} vout
370
+ * @param {bigint} value
371
+ * @param {Uint8Array} script
372
+ * @param {number | null} [sequence]
373
+ * @param {Uint8Array | null} [prev_tx]
374
+ * @returns {number}
375
+ */
376
+ add_input(txid, vout, value, script, sequence, prev_tx) {
377
+ try {
378
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
379
+ const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
380
+ const len0 = WASM_VECTOR_LEN;
381
+ const ptr1 = passArray8ToWasm0(script, wasm.__wbindgen_export);
382
+ const len1 = WASM_VECTOR_LEN;
383
+ var ptr2 = isLikeNone(prev_tx) ? 0 : passArray8ToWasm0(prev_tx, wasm.__wbindgen_export);
384
+ var len2 = WASM_VECTOR_LEN;
385
+ wasm.bitgopsbt_add_input(retptr, this.__wbg_ptr, ptr0, len0, vout, value, ptr1, len1, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0, ptr2, len2);
386
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
387
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
388
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
389
+ if (r2) {
390
+ throw takeObject(r1);
391
+ }
392
+ return r0 >>> 0;
393
+ } finally {
394
+ wasm.__wbindgen_add_to_stack_pointer(16);
395
+ }
396
+ }
367
397
  /**
368
398
  * Add an input to the PSBT
369
399
  *
@@ -376,6 +406,7 @@ export class BitGoPsbt {
376
406
  *
377
407
  * # Returns
378
408
  * The index of the newly added input
409
+ * @param {number} index
379
410
  * @param {string} txid
380
411
  * @param {number} vout
381
412
  * @param {bigint} value
@@ -384,7 +415,7 @@ export class BitGoPsbt {
384
415
  * @param {Uint8Array | null} [prev_tx]
385
416
  * @returns {number}
386
417
  */
387
- add_input(txid, vout, value, script, sequence, prev_tx) {
418
+ add_input_at_index(index, txid, vout, value, script, sequence, prev_tx) {
388
419
  try {
389
420
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
390
421
  const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
@@ -393,7 +424,7 @@ export class BitGoPsbt {
393
424
  const len1 = WASM_VECTOR_LEN;
394
425
  var ptr2 = isLikeNone(prev_tx) ? 0 : passArray8ToWasm0(prev_tx, wasm.__wbindgen_export);
395
426
  var len2 = WASM_VECTOR_LEN;
396
- wasm.bitgopsbt_add_input(retptr, this.__wbg_ptr, ptr0, len0, vout, value, ptr1, len1, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0, ptr2, len2);
427
+ wasm.bitgopsbt_add_input_at_index(retptr, this.__wbg_ptr, index, ptr0, len0, vout, value, ptr1, len1, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0, ptr2, len2);
397
428
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
398
429
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
399
430
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -406,14 +437,6 @@ export class BitGoPsbt {
406
437
  }
407
438
  }
408
439
  /**
409
- * Add an output to the PSBT
410
- *
411
- * # Arguments
412
- * * `script` - The output script (scriptPubKey)
413
- * * `value` - The value in satoshis
414
- *
415
- * # Returns
416
- * The index of the newly added output
417
440
  * @param {Uint8Array} script
418
441
  * @param {bigint} value
419
442
  * @returns {number}
@@ -436,14 +459,29 @@ export class BitGoPsbt {
436
459
  }
437
460
  }
438
461
  /**
439
- * Add an output to the PSBT by address
440
- *
441
- * # Arguments
442
- * * `address` - The destination address
443
- * * `value` - The value in satoshis
444
- *
445
- * # Returns
446
- * The index of the newly added output
462
+ * @param {number} index
463
+ * @param {Uint8Array} script
464
+ * @param {bigint} value
465
+ * @returns {number}
466
+ */
467
+ add_output_at_index(index, script, value) {
468
+ try {
469
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
470
+ const ptr0 = passArray8ToWasm0(script, wasm.__wbindgen_export);
471
+ const len0 = WASM_VECTOR_LEN;
472
+ wasm.bitgopsbt_add_output_at_index(retptr, this.__wbg_ptr, index, ptr0, len0, value);
473
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
474
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
475
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
476
+ if (r2) {
477
+ throw takeObject(r1);
478
+ }
479
+ return r0 >>> 0;
480
+ } finally {
481
+ wasm.__wbindgen_add_to_stack_pointer(16);
482
+ }
483
+ }
484
+ /**
447
485
  * @param {string} address
448
486
  * @param {bigint} value
449
487
  * @returns {number}
@@ -465,6 +503,29 @@ export class BitGoPsbt {
465
503
  wasm.__wbindgen_add_to_stack_pointer(16);
466
504
  }
467
505
  }
506
+ /**
507
+ * @param {number} index
508
+ * @param {string} address
509
+ * @param {bigint} value
510
+ * @returns {number}
511
+ */
512
+ add_output_with_address_at_index(index, address, value) {
513
+ try {
514
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
515
+ const ptr0 = passStringToWasm0(address, wasm.__wbindgen_export, wasm.__wbindgen_export2);
516
+ const len0 = WASM_VECTOR_LEN;
517
+ wasm.bitgopsbt_add_output_with_address_at_index(retptr, this.__wbg_ptr, index, ptr0, len0, value);
518
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
519
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
520
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
521
+ if (r2) {
522
+ throw takeObject(r1);
523
+ }
524
+ return r0 >>> 0;
525
+ } finally {
526
+ wasm.__wbindgen_add_to_stack_pointer(16);
527
+ }
528
+ }
468
529
  /**
469
530
  * Add a PayGo attestation to a PSBT output
470
531
  *
@@ -498,20 +559,6 @@ export class BitGoPsbt {
498
559
  }
499
560
  }
500
561
  /**
501
- * Add a replay protection input to the PSBT
502
- *
503
- * Replay protection inputs are P2SH-P2PK inputs used on forked networks to prevent
504
- * transaction replay attacks. They use a simple pubkey script without wallet derivation.
505
- *
506
- * # Arguments
507
- * * `ecpair` - The ECPair containing the public key for the replay protection input
508
- * * `txid` - The transaction ID (hex string) of the output being spent
509
- * * `vout` - The output index being spent
510
- * * `value` - The value in satoshis
511
- * * `sequence` - Optional sequence number (default: 0xFFFFFFFE for RBF)
512
- *
513
- * # Returns
514
- * The index of the newly added input
515
562
  * @param {WasmECPair} ecpair
516
563
  * @param {string} txid
517
564
  * @param {number} vout
@@ -541,25 +588,36 @@ export class BitGoPsbt {
541
588
  }
542
589
  }
543
590
  /**
544
- * Add a wallet input with full PSBT metadata
545
- *
546
- * This is a higher-level method that adds an input and populates all required
547
- * PSBT fields (scripts, derivation info, etc.) based on the wallet's chain type.
548
- *
549
- * # Arguments
550
- * * `txid` - The transaction ID (hex string)
551
- * * `vout` - The output index being spent
552
- * * `value` - The value in satoshis
553
- * * `chain` - The chain code (0/1=p2sh, 10/11=p2shP2wsh, 20/21=p2wsh, 30/31=p2tr, 40/41=p2trMusig2)
554
- * * `index` - The derivation index
555
- * * `wallet_keys` - The root wallet keys
556
- * * `signer` - The key that will sign ("user", "backup", or "bitgo") - required for p2tr/p2trMusig2
557
- * * `cosigner` - The key that will co-sign - required for p2tr/p2trMusig2
558
- * * `sequence` - Optional sequence number (default: 0xFFFFFFFE for RBF)
559
- * * `prev_tx` - Optional full previous transaction bytes (for non-segwit)
560
- *
561
- * # Returns
562
- * The index of the newly added input
591
+ * @param {number} index
592
+ * @param {WasmECPair} ecpair
593
+ * @param {string} txid
594
+ * @param {number} vout
595
+ * @param {bigint} value
596
+ * @param {number | null} [sequence]
597
+ * @param {Uint8Array | null} [prev_tx]
598
+ * @returns {number}
599
+ */
600
+ add_replay_protection_input_at_index(index, ecpair, txid, vout, value, sequence, prev_tx) {
601
+ try {
602
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
603
+ _assertClass(ecpair, WasmECPair);
604
+ const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
605
+ const len0 = WASM_VECTOR_LEN;
606
+ var ptr1 = isLikeNone(prev_tx) ? 0 : passArray8ToWasm0(prev_tx, wasm.__wbindgen_export);
607
+ var len1 = WASM_VECTOR_LEN;
608
+ wasm.bitgopsbt_add_replay_protection_input_at_index(retptr, this.__wbg_ptr, index, ecpair.__wbg_ptr, ptr0, len0, vout, value, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0, ptr1, len1);
609
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
610
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
611
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
612
+ if (r2) {
613
+ throw takeObject(r1);
614
+ }
615
+ return r0 >>> 0;
616
+ } finally {
617
+ wasm.__wbindgen_add_to_stack_pointer(16);
618
+ }
619
+ }
620
+ /**
563
621
  * @param {string} txid
564
622
  * @param {number} vout
565
623
  * @param {bigint} value
@@ -597,19 +655,44 @@ export class BitGoPsbt {
597
655
  }
598
656
  }
599
657
  /**
600
- * Add a wallet output with full PSBT metadata
601
- *
602
- * This creates a verifiable wallet output (typically for change) with all required
603
- * PSBT fields (scripts, derivation info) based on the wallet's chain type.
604
- *
605
- * # Arguments
606
- * * `chain` - The chain code (0/1=p2sh, 10/11=p2shP2wsh, 20/21=p2wsh, 30/31=p2tr, 40/41=p2trMusig2)
607
- * * `index` - The derivation index
608
- * * `value` - The value in satoshis
609
- * * `wallet_keys` - The root wallet keys
610
- *
611
- * # Returns
612
- * The index of the newly added output
658
+ * @param {number} index
659
+ * @param {string} txid
660
+ * @param {number} vout
661
+ * @param {bigint} value
662
+ * @param {WasmRootWalletKeys} wallet_keys
663
+ * @param {number} chain
664
+ * @param {number} derivation_index
665
+ * @param {string | null} [signer]
666
+ * @param {string | null} [cosigner]
667
+ * @param {number | null} [sequence]
668
+ * @param {Uint8Array | null} [prev_tx]
669
+ * @returns {number}
670
+ */
671
+ add_wallet_input_at_index(index, txid, vout, value, wallet_keys, chain, derivation_index, signer, cosigner, sequence, prev_tx) {
672
+ try {
673
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
674
+ const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
675
+ const len0 = WASM_VECTOR_LEN;
676
+ _assertClass(wallet_keys, WasmRootWalletKeys);
677
+ var ptr1 = isLikeNone(signer) ? 0 : passStringToWasm0(signer, wasm.__wbindgen_export, wasm.__wbindgen_export2);
678
+ var len1 = WASM_VECTOR_LEN;
679
+ var ptr2 = isLikeNone(cosigner) ? 0 : passStringToWasm0(cosigner, wasm.__wbindgen_export, wasm.__wbindgen_export2);
680
+ var len2 = WASM_VECTOR_LEN;
681
+ var ptr3 = isLikeNone(prev_tx) ? 0 : passArray8ToWasm0(prev_tx, wasm.__wbindgen_export);
682
+ var len3 = WASM_VECTOR_LEN;
683
+ wasm.bitgopsbt_add_wallet_input_at_index(retptr, this.__wbg_ptr, index, ptr0, len0, vout, value, wallet_keys.__wbg_ptr, chain, derivation_index, ptr1, len1, ptr2, len2, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0, ptr3, len3);
684
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
685
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
686
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
687
+ if (r2) {
688
+ throw takeObject(r1);
689
+ }
690
+ return r0 >>> 0;
691
+ } finally {
692
+ wasm.__wbindgen_add_to_stack_pointer(16);
693
+ }
694
+ }
695
+ /**
613
696
  * @param {number} chain
614
697
  * @param {number} index
615
698
  * @param {bigint} value
@@ -632,6 +715,30 @@ export class BitGoPsbt {
632
715
  wasm.__wbindgen_add_to_stack_pointer(16);
633
716
  }
634
717
  }
718
+ /**
719
+ * @param {number} index
720
+ * @param {number} chain
721
+ * @param {number} derivation_index
722
+ * @param {bigint} value
723
+ * @param {WasmRootWalletKeys} wallet_keys
724
+ * @returns {number}
725
+ */
726
+ add_wallet_output_at_index(index, chain, derivation_index, value, wallet_keys) {
727
+ try {
728
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
729
+ _assertClass(wallet_keys, WasmRootWalletKeys);
730
+ wasm.bitgopsbt_add_wallet_output_at_index(retptr, this.__wbg_ptr, index, chain, derivation_index, value, wallet_keys.__wbg_ptr);
731
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
732
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
733
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
734
+ if (r2) {
735
+ throw takeObject(r1);
736
+ }
737
+ return r0 >>> 0;
738
+ } finally {
739
+ wasm.__wbindgen_add_to_stack_pointer(16);
740
+ }
741
+ }
635
742
  /**
636
743
  * Combine/merge data from another PSBT into this one
637
744
  *
@@ -1218,6 +1325,38 @@ export class BitGoPsbt {
1218
1325
  wasm.__wbindgen_add_to_stack_pointer(16);
1219
1326
  }
1220
1327
  }
1328
+ /**
1329
+ * @param {number} index
1330
+ */
1331
+ remove_input(index) {
1332
+ try {
1333
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1334
+ wasm.bitgopsbt_remove_input(retptr, this.__wbg_ptr, index);
1335
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1336
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1337
+ if (r1) {
1338
+ throw takeObject(r0);
1339
+ }
1340
+ } finally {
1341
+ wasm.__wbindgen_add_to_stack_pointer(16);
1342
+ }
1343
+ }
1344
+ /**
1345
+ * @param {number} index
1346
+ */
1347
+ remove_output(index) {
1348
+ try {
1349
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
1350
+ wasm.bitgopsbt_remove_output(retptr, this.__wbg_ptr, index);
1351
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
1352
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
1353
+ if (r1) {
1354
+ throw takeObject(r0);
1355
+ }
1356
+ } finally {
1357
+ wasm.__wbindgen_add_to_stack_pointer(16);
1358
+ }
1359
+ }
1221
1360
  /**
1222
1361
  * Serialize the PSBT to bytes
1223
1362
  *
@@ -3497,6 +3636,29 @@ export class WasmTransaction {
3497
3636
  const ptr = this.__destroy_into_raw();
3498
3637
  wasm.__wbg_wasmtransaction_free(ptr, 0);
3499
3638
  }
3639
+ /**
3640
+ * @param {string} txid
3641
+ * @param {number} vout
3642
+ * @param {number | null} [sequence]
3643
+ * @returns {number}
3644
+ */
3645
+ add_input(txid, vout, sequence) {
3646
+ try {
3647
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3648
+ const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
3649
+ const len0 = WASM_VECTOR_LEN;
3650
+ wasm.wasmtransaction_add_input(retptr, this.__wbg_ptr, ptr0, len0, vout, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0);
3651
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3652
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3653
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3654
+ if (r2) {
3655
+ throw takeObject(r1);
3656
+ }
3657
+ return r0 >>> 0;
3658
+ } finally {
3659
+ wasm.__wbindgen_add_to_stack_pointer(16);
3660
+ }
3661
+ }
3500
3662
  /**
3501
3663
  * Add an input to the transaction
3502
3664
  *
@@ -3507,17 +3669,18 @@ export class WasmTransaction {
3507
3669
  *
3508
3670
  * # Returns
3509
3671
  * The index of the newly added input
3672
+ * @param {number} index
3510
3673
  * @param {string} txid
3511
3674
  * @param {number} vout
3512
3675
  * @param {number | null} [sequence]
3513
3676
  * @returns {number}
3514
3677
  */
3515
- add_input(txid, vout, sequence) {
3678
+ add_input_at_index(index, txid, vout, sequence) {
3516
3679
  try {
3517
3680
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3518
3681
  const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
3519
3682
  const len0 = WASM_VECTOR_LEN;
3520
- wasm.wasmtransaction_add_input(retptr, this.__wbg_ptr, ptr0, len0, vout, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0);
3683
+ wasm.wasmtransaction_add_input_at_index(retptr, this.__wbg_ptr, index, ptr0, len0, vout, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0);
3521
3684
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3522
3685
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3523
3686
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -3530,14 +3693,6 @@ export class WasmTransaction {
3530
3693
  }
3531
3694
  }
3532
3695
  /**
3533
- * Add an output to the transaction
3534
- *
3535
- * # Arguments
3536
- * * `script` - The output script (scriptPubKey)
3537
- * * `value` - The value in satoshis
3538
- *
3539
- * # Returns
3540
- * The index of the newly added output
3541
3696
  * @param {Uint8Array} script
3542
3697
  * @param {bigint} value
3543
3698
  * @returns {number}
@@ -3548,6 +3703,29 @@ export class WasmTransaction {
3548
3703
  const ret = wasm.wasmtransaction_add_output(this.__wbg_ptr, ptr0, len0, value);
3549
3704
  return ret >>> 0;
3550
3705
  }
3706
+ /**
3707
+ * @param {number} index
3708
+ * @param {Uint8Array} script
3709
+ * @param {bigint} value
3710
+ * @returns {number}
3711
+ */
3712
+ add_output_at_index(index, script, value) {
3713
+ try {
3714
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
3715
+ const ptr0 = passArray8ToWasm0(script, wasm.__wbindgen_export);
3716
+ const len0 = WASM_VECTOR_LEN;
3717
+ wasm.wasmtransaction_add_output_at_index(retptr, this.__wbg_ptr, index, ptr0, len0, value);
3718
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
3719
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
3720
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
3721
+ if (r2) {
3722
+ throw takeObject(r1);
3723
+ }
3724
+ return r0 >>> 0;
3725
+ } finally {
3726
+ wasm.__wbindgen_add_to_stack_pointer(16);
3727
+ }
3728
+ }
3551
3729
  /**
3552
3730
  * Create an empty transaction (version 1, locktime 0)
3553
3731
  * @returns {WasmTransaction}
@@ -4218,6 +4396,33 @@ export class WrapPsbt {
4218
4396
  const ptr = this.__destroy_into_raw();
4219
4397
  wasm.__wbg_wrappsbt_free(ptr, 0);
4220
4398
  }
4399
+ /**
4400
+ * @param {string} txid
4401
+ * @param {number} vout
4402
+ * @param {bigint} value
4403
+ * @param {Uint8Array} script
4404
+ * @param {number | null} [sequence]
4405
+ * @returns {number}
4406
+ */
4407
+ addInput(txid, vout, value, script, sequence) {
4408
+ try {
4409
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4410
+ const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
4411
+ const len0 = WASM_VECTOR_LEN;
4412
+ const ptr1 = passArray8ToWasm0(script, wasm.__wbindgen_export);
4413
+ const len1 = WASM_VECTOR_LEN;
4414
+ wasm.wrappsbt_addInput(retptr, this.__wbg_ptr, ptr0, len0, vout, value, ptr1, len1, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0);
4415
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4416
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4417
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
4418
+ if (r2) {
4419
+ throw takeObject(r1);
4420
+ }
4421
+ return r0 >>> 0;
4422
+ } finally {
4423
+ wasm.__wbindgen_add_to_stack_pointer(16);
4424
+ }
4425
+ }
4221
4426
  /**
4222
4427
  * Add an input to the PSBT
4223
4428
  *
@@ -4230,6 +4435,7 @@ export class WrapPsbt {
4230
4435
  *
4231
4436
  * # Returns
4232
4437
  * The index of the newly added input
4438
+ * @param {number} index
4233
4439
  * @param {string} txid
4234
4440
  * @param {number} vout
4235
4441
  * @param {bigint} value
@@ -4237,14 +4443,14 @@ export class WrapPsbt {
4237
4443
  * @param {number | null} [sequence]
4238
4444
  * @returns {number}
4239
4445
  */
4240
- addInput(txid, vout, value, script, sequence) {
4446
+ addInputAtIndex(index, txid, vout, value, script, sequence) {
4241
4447
  try {
4242
4448
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4243
4449
  const ptr0 = passStringToWasm0(txid, wasm.__wbindgen_export, wasm.__wbindgen_export2);
4244
4450
  const len0 = WASM_VECTOR_LEN;
4245
4451
  const ptr1 = passArray8ToWasm0(script, wasm.__wbindgen_export);
4246
4452
  const len1 = WASM_VECTOR_LEN;
4247
- wasm.wrappsbt_addInput(retptr, this.__wbg_ptr, ptr0, len0, vout, value, ptr1, len1, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0);
4453
+ wasm.wrappsbt_addInputAtIndex(retptr, this.__wbg_ptr, index, ptr0, len0, vout, value, ptr1, len1, isLikeNone(sequence) ? 0x100000001 : (sequence) >>> 0);
4248
4454
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4249
4455
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4250
4456
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -4256,6 +4462,17 @@ export class WrapPsbt {
4256
4462
  wasm.__wbindgen_add_to_stack_pointer(16);
4257
4463
  }
4258
4464
  }
4465
+ /**
4466
+ * @param {Uint8Array} script
4467
+ * @param {bigint} value
4468
+ * @returns {number}
4469
+ */
4470
+ addOutput(script, value) {
4471
+ const ptr0 = passArray8ToWasm0(script, wasm.__wbindgen_export);
4472
+ const len0 = WASM_VECTOR_LEN;
4473
+ const ret = wasm.wrappsbt_addOutput(this.__wbg_ptr, ptr0, len0, value);
4474
+ return ret >>> 0;
4475
+ }
4259
4476
  /**
4260
4477
  * Add an output to the PSBT
4261
4478
  *
@@ -4265,15 +4482,27 @@ export class WrapPsbt {
4265
4482
  *
4266
4483
  * # Returns
4267
4484
  * The index of the newly added output
4485
+ * @param {number} index
4268
4486
  * @param {Uint8Array} script
4269
4487
  * @param {bigint} value
4270
4488
  * @returns {number}
4271
4489
  */
4272
- addOutput(script, value) {
4273
- const ptr0 = passArray8ToWasm0(script, wasm.__wbindgen_export);
4274
- const len0 = WASM_VECTOR_LEN;
4275
- const ret = wasm.wrappsbt_addOutput(this.__wbg_ptr, ptr0, len0, value);
4276
- return ret >>> 0;
4490
+ addOutputAtIndex(index, script, value) {
4491
+ try {
4492
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4493
+ const ptr0 = passArray8ToWasm0(script, wasm.__wbindgen_export);
4494
+ const len0 = WASM_VECTOR_LEN;
4495
+ wasm.wrappsbt_addOutputAtIndex(retptr, this.__wbg_ptr, index, ptr0, len0, value);
4496
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4497
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4498
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
4499
+ if (r2) {
4500
+ throw takeObject(r1);
4501
+ }
4502
+ return r0 >>> 0;
4503
+ } finally {
4504
+ wasm.__wbindgen_add_to_stack_pointer(16);
4505
+ }
4277
4506
  }
4278
4507
  /**
4279
4508
  * @returns {WrapPsbt}
@@ -4511,6 +4740,38 @@ export class WrapPsbt {
4511
4740
  const ret = wasm.wrappsbt_outputCount(this.__wbg_ptr);
4512
4741
  return ret >>> 0;
4513
4742
  }
4743
+ /**
4744
+ * @param {number} index
4745
+ */
4746
+ removeInput(index) {
4747
+ try {
4748
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4749
+ wasm.wrappsbt_removeInput(retptr, this.__wbg_ptr, index);
4750
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4751
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4752
+ if (r1) {
4753
+ throw takeObject(r0);
4754
+ }
4755
+ } finally {
4756
+ wasm.__wbindgen_add_to_stack_pointer(16);
4757
+ }
4758
+ }
4759
+ /**
4760
+ * @param {number} index
4761
+ */
4762
+ removeOutput(index) {
4763
+ try {
4764
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
4765
+ wasm.wrappsbt_removeOutput(retptr, this.__wbg_ptr, index);
4766
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
4767
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
4768
+ if (r1) {
4769
+ throw takeObject(r0);
4770
+ }
4771
+ } finally {
4772
+ wasm.__wbindgen_add_to_stack_pointer(16);
4773
+ }
4774
+ }
4514
4775
  /**
4515
4776
  * @returns {Uint8Array}
4516
4777
  */
@@ -4757,10 +5018,182 @@ export class WrapPsbt {
4757
5018
  }
4758
5019
  }
4759
5020
  if (Symbol.dispose) WrapPsbt.prototype[Symbol.dispose] = WrapPsbt.prototype.free;
5021
+
5022
+ /**
5023
+ * Check if the inspect feature is enabled.
5024
+ *
5025
+ * # Returns
5026
+ * `true` if the feature is enabled, `false` otherwise
5027
+ * @returns {boolean}
5028
+ */
5029
+ export function isInspectEnabled() {
5030
+ const ret = wasm.isInspectEnabled();
5031
+ return ret !== 0;
5032
+ }
5033
+
5034
+ /**
5035
+ * Parse a PSBT at the raw byte level and return a JSON representation.
5036
+ *
5037
+ * Unlike `parsePsbtToJson`, this function exposes the raw key-value pair
5038
+ * structure as defined in BIP-174, showing:
5039
+ * - Raw key type IDs and their human-readable names
5040
+ * - Proprietary keys with their structured format
5041
+ * - Unknown/unrecognized keys that standard parsers might skip
5042
+ *
5043
+ * # Arguments
5044
+ * * `psbt_bytes` - The raw PSBT bytes
5045
+ * * `coin_name` - The network coin name (e.g., "btc", "ltc", "zec")
5046
+ *
5047
+ * # Returns
5048
+ * A JSON string representing the raw PSBT key-value structure
5049
+ *
5050
+ * # Errors
5051
+ * Returns an error if:
5052
+ * - The `inspect` feature is not enabled
5053
+ * - The PSBT bytes are invalid
5054
+ * - The network name is unknown
5055
+ * @param {Uint8Array} psbt_bytes
5056
+ * @param {string} coin_name
5057
+ * @returns {string}
5058
+ */
5059
+ export function parsePsbtRawToJson(psbt_bytes, coin_name) {
5060
+ let deferred4_0;
5061
+ let deferred4_1;
5062
+ try {
5063
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5064
+ const ptr0 = passArray8ToWasm0(psbt_bytes, wasm.__wbindgen_export);
5065
+ const len0 = WASM_VECTOR_LEN;
5066
+ const ptr1 = passStringToWasm0(coin_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
5067
+ const len1 = WASM_VECTOR_LEN;
5068
+ wasm.parsePsbtRawToJson(retptr, ptr0, len0, ptr1, len1);
5069
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5070
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5071
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5072
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
5073
+ var ptr3 = r0;
5074
+ var len3 = r1;
5075
+ if (r3) {
5076
+ ptr3 = 0; len3 = 0;
5077
+ throw takeObject(r2);
5078
+ }
5079
+ deferred4_0 = ptr3;
5080
+ deferred4_1 = len3;
5081
+ return getStringFromWasm0(ptr3, len3);
5082
+ } finally {
5083
+ wasm.__wbindgen_add_to_stack_pointer(16);
5084
+ wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1);
5085
+ }
5086
+ }
5087
+
5088
+ /**
5089
+ * Parse a PSBT and return a JSON representation of its structure.
5090
+ *
5091
+ * This function parses the PSBT using the standard bitcoin crate parser
5092
+ * and returns a hierarchical node structure suitable for display.
5093
+ *
5094
+ * # Arguments
5095
+ * * `psbt_bytes` - The raw PSBT bytes
5096
+ * * `coin_name` - The network coin name (e.g., "btc", "ltc", "bch")
5097
+ *
5098
+ * # Returns
5099
+ * A JSON string representing the parsed PSBT structure
5100
+ *
5101
+ * # Errors
5102
+ * Returns an error if:
5103
+ * - The `inspect` feature is not enabled
5104
+ * - The PSBT bytes are invalid
5105
+ * - The network name is unknown
5106
+ * @param {Uint8Array} psbt_bytes
5107
+ * @param {string} coin_name
5108
+ * @returns {string}
5109
+ */
5110
+ export function parsePsbtToJson(psbt_bytes, coin_name) {
5111
+ let deferred4_0;
5112
+ let deferred4_1;
5113
+ try {
5114
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5115
+ const ptr0 = passArray8ToWasm0(psbt_bytes, wasm.__wbindgen_export);
5116
+ const len0 = WASM_VECTOR_LEN;
5117
+ const ptr1 = passStringToWasm0(coin_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
5118
+ const len1 = WASM_VECTOR_LEN;
5119
+ wasm.parsePsbtRawToJson(retptr, ptr0, len0, ptr1, len1);
5120
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5121
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5122
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5123
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
5124
+ var ptr3 = r0;
5125
+ var len3 = r1;
5126
+ if (r3) {
5127
+ ptr3 = 0; len3 = 0;
5128
+ throw takeObject(r2);
5129
+ }
5130
+ deferred4_0 = ptr3;
5131
+ deferred4_1 = len3;
5132
+ return getStringFromWasm0(ptr3, len3);
5133
+ } finally {
5134
+ wasm.__wbindgen_add_to_stack_pointer(16);
5135
+ wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1);
5136
+ }
5137
+ }
5138
+
5139
+ /**
5140
+ * Parse a transaction and return a JSON representation of its structure.
5141
+ *
5142
+ * # Arguments
5143
+ * * `tx_bytes` - The raw transaction bytes
5144
+ * * `coin_name` - The network coin name (e.g., "btc", "ltc", "bch")
5145
+ *
5146
+ * # Returns
5147
+ * A JSON string representing the parsed transaction structure
5148
+ *
5149
+ * # Errors
5150
+ * Returns an error if:
5151
+ * - The `inspect` feature is not enabled
5152
+ * - The transaction bytes are invalid
5153
+ * - The network name is unknown
5154
+ * @param {Uint8Array} tx_bytes
5155
+ * @param {string} coin_name
5156
+ * @returns {string}
5157
+ */
5158
+ export function parseTxToJson(tx_bytes, coin_name) {
5159
+ let deferred4_0;
5160
+ let deferred4_1;
5161
+ try {
5162
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
5163
+ const ptr0 = passArray8ToWasm0(tx_bytes, wasm.__wbindgen_export);
5164
+ const len0 = WASM_VECTOR_LEN;
5165
+ const ptr1 = passStringToWasm0(coin_name, wasm.__wbindgen_export, wasm.__wbindgen_export2);
5166
+ const len1 = WASM_VECTOR_LEN;
5167
+ wasm.parsePsbtRawToJson(retptr, ptr0, len0, ptr1, len1);
5168
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
5169
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
5170
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
5171
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
5172
+ var ptr3 = r0;
5173
+ var len3 = r1;
5174
+ if (r3) {
5175
+ ptr3 = 0; len3 = 0;
5176
+ throw takeObject(r2);
5177
+ }
5178
+ deferred4_0 = ptr3;
5179
+ deferred4_1 = len3;
5180
+ return getStringFromWasm0(ptr3, len3);
5181
+ } finally {
5182
+ wasm.__wbindgen_add_to_stack_pointer(16);
5183
+ wasm.__wbindgen_export4(deferred4_0, deferred4_1, 1);
5184
+ }
5185
+ }
4760
5186
  export function __wbg_Error_8c4e43fe74559d73(arg0, arg1) {
4761
5187
  const ret = Error(getStringFromWasm0(arg0, arg1));
4762
5188
  return addHeapObject(ret);
4763
5189
  }
5190
+ export function __wbg___wbindgen_debug_string_0bc8482c6e3508ae(arg0, arg1) {
5191
+ const ret = debugString(getObject(arg1));
5192
+ const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
5193
+ const len1 = WASM_VECTOR_LEN;
5194
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
5195
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
5196
+ }
4764
5197
  export function __wbg___wbindgen_is_function_0095a73b8b156f76(arg0) {
4765
5198
  const ret = typeof(getObject(arg0)) === 'function';
4766
5199
  return ret;
@@ -5023,6 +5456,71 @@ function addBorrowedObject(obj) {
5023
5456
  return stack_pointer;
5024
5457
  }
5025
5458
 
5459
+ function debugString(val) {
5460
+ // primitive types
5461
+ const type = typeof val;
5462
+ if (type == 'number' || type == 'boolean' || val == null) {
5463
+ return `${val}`;
5464
+ }
5465
+ if (type == 'string') {
5466
+ return `"${val}"`;
5467
+ }
5468
+ if (type == 'symbol') {
5469
+ const description = val.description;
5470
+ if (description == null) {
5471
+ return 'Symbol';
5472
+ } else {
5473
+ return `Symbol(${description})`;
5474
+ }
5475
+ }
5476
+ if (type == 'function') {
5477
+ const name = val.name;
5478
+ if (typeof name == 'string' && name.length > 0) {
5479
+ return `Function(${name})`;
5480
+ } else {
5481
+ return 'Function';
5482
+ }
5483
+ }
5484
+ // objects
5485
+ if (Array.isArray(val)) {
5486
+ const length = val.length;
5487
+ let debug = '[';
5488
+ if (length > 0) {
5489
+ debug += debugString(val[0]);
5490
+ }
5491
+ for(let i = 1; i < length; i++) {
5492
+ debug += ', ' + debugString(val[i]);
5493
+ }
5494
+ debug += ']';
5495
+ return debug;
5496
+ }
5497
+ // Test for built-in
5498
+ const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
5499
+ let className;
5500
+ if (builtInMatches && builtInMatches.length > 1) {
5501
+ className = builtInMatches[1];
5502
+ } else {
5503
+ // Failed to match the standard '[object ClassName]'
5504
+ return toString.call(val);
5505
+ }
5506
+ if (className == 'Object') {
5507
+ // we're a user defined class or Object
5508
+ // JSON.stringify avoids problems with cycles, and is generally much
5509
+ // easier than looping through ownProperties of `val`.
5510
+ try {
5511
+ return 'Object(' + JSON.stringify(val) + ')';
5512
+ } catch (_) {
5513
+ return 'Object';
5514
+ }
5515
+ }
5516
+ // errors
5517
+ if (val instanceof Error) {
5518
+ return `${val.name}: ${val.message}\n${val.stack}`;
5519
+ }
5520
+ // TODO we could test for more things here, like `Set`s and `Map`s.
5521
+ return className;
5522
+ }
5523
+
5026
5524
  function dropObject(idx) {
5027
5525
  if (idx < 132) return;
5028
5526
  heap[idx] = heap_next;