@bitgo/wasm-utxo 4.37.1 → 4.38.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.
@@ -40,20 +40,10 @@ export type ParsedOutput = {
40
40
  paygo: boolean;
41
41
  /** Full BIP32 derivation path from the wallet xpub (e.g. "0/1"). Null for external outputs. */
42
42
  derivationPath: string | null;
43
- /**
44
- * True for a shielded (Orchard/Ironwood) output. Such an output has no `unsigned_tx` entry of
45
- * its own — it lives in the PSBT's proprietary-map PCZT, read from its plaintext (not
46
- * encrypted/decrypted) recipient field. `address` is a single-receiver ZIP-316 unified address
47
- * (`u1...`/`utest1...`) encoding that receiver — a real, usable Zcash address, though not
48
- * necessarily byte-identical to whatever multi-receiver UA the sender originally pasted in (a
49
- * UA with a transparent/Sapling receiver too would round-trip to a different string carrying
50
- * only the Orchard one). `script` holds the same receiver as raw 43 bytes.
51
- */
52
- isShielded: boolean;
53
43
  };
54
- export type ParsedTransaction = {
44
+ export type ParsedTransaction<TOutput extends ParsedOutput = ParsedOutput> = {
55
45
  inputs: ParsedInput[];
56
- outputs: ParsedOutput[];
46
+ outputs: TOutput[];
57
47
  spendAmount: bigint;
58
48
  minerFee: bigint;
59
49
  virtualSize: number;
@@ -123,7 +113,7 @@ export type HydrationUnspent = {
123
113
  pubkey: Uint8Array;
124
114
  value: bigint;
125
115
  };
126
- export declare class BitGoPsbt extends PsbtBase<WasmBitGoPsbt> implements IPsbtWithAddress {
116
+ export declare class BitGoPsbt<TOutput extends ParsedOutput = ParsedOutput> extends PsbtBase<WasmBitGoPsbt> implements IPsbtWithAddress {
127
117
  protected constructor(wasm: WasmBitGoPsbt);
128
118
  /**
129
119
  * Get the underlying WASM instance
@@ -339,7 +329,7 @@ export declare class BitGoPsbt extends PsbtBase<WasmBitGoPsbt> implements IPsbtW
339
329
  * @param options.payGoPubkeys - Optional public keys for PayGo attestation verification
340
330
  * @returns Parsed transaction information
341
331
  */
342
- parseTransactionWithWalletKeys(walletKeys: WalletKeysArg, options: ParseTransactionOptions): ParsedTransaction;
332
+ parseTransactionWithWalletKeys(walletKeys: WalletKeysArg, options: ParseTransactionOptions): ParsedTransaction<TOutput>;
343
333
  /**
344
334
  * Parse outputs with wallet keys to identify which outputs belong to a wallet
345
335
  * with the given wallet keys.
@@ -353,7 +343,7 @@ export declare class BitGoPsbt extends PsbtBase<WasmBitGoPsbt> implements IPsbtW
353
343
  * @returns Array of parsed outputs
354
344
  * @note This method does NOT validate wallet inputs. It only parses outputs.
355
345
  */
356
- parseOutputsWithWalletKeys(walletKeys: WalletKeysArg, options?: ParseOutputsOptions): ParsedOutput[];
346
+ parseOutputsWithWalletKeys(walletKeys: WalletKeysArg, options?: ParseOutputsOptions): TOutput[];
357
347
  /**
358
348
  * Add a PayGo attestation to a PSBT output
359
349
  *
@@ -1,8 +1,20 @@
1
1
  import { type WalletKeysArg } from "./RootWalletKeys.js";
2
- import { BitGoPsbt, type CreateEmptyOptions, type HydrationUnspent } from "./BitGoPsbt.js";
2
+ import { BitGoPsbt, type CreateEmptyOptions, type HydrationUnspent, type ParsedOutput } from "./BitGoPsbt.js";
3
3
  import { ZcashTransaction, type ITransaction } from "../transaction.js";
4
4
  /** Zcash network names */
5
5
  export type ZcashNetworkName = "zcash" | "zcashTest" | "zec" | "tzec";
6
+ export type ZcashParsedOutput = ParsedOutput & {
7
+ /**
8
+ * True for a shielded (Orchard/Ironwood) output. Such an output has no `unsigned_tx` entry of
9
+ * its own — it lives in the PSBT's proprietary-map PCZT, read from its plaintext (not
10
+ * encrypted/decrypted) recipient field. `address` is a single-receiver ZIP-316 unified address
11
+ * (`u1...`/`utest1...`) encoding that receiver — a real, usable Zcash address, though not
12
+ * necessarily byte-identical to whatever multi-receiver UA the sender originally pasted in (a
13
+ * UA with a transparent/Sapling receiver too would round-trip to a different string carrying
14
+ * only the Orchard one). `script` holds the same receiver as raw 43 bytes.
15
+ */
16
+ isShielded: boolean;
17
+ };
6
18
  /**
7
19
  * Zcash v6 (Ironwood) version group id (0xd884b698). Its presence marks a PSBT as v6 — see
8
20
  * `ZcashIronwoodBitGoPsbt`.
@@ -52,7 +64,7 @@ export type CreateEmptyZcashWithConsensusBranchIdOptions = CreateEmptyOptions &
52
64
  * const psbt = ZcashBitGoPsbt.fromBytes(bytes, "zcash");
53
65
  * ```
54
66
  */
55
- export declare class ZcashBitGoPsbt extends BitGoPsbt {
67
+ export declare class ZcashBitGoPsbt extends BitGoPsbt<ZcashParsedOutput> {
56
68
  /**
57
69
  * Create an empty Zcash PSBT with consensus branch ID determined from block height
58
70
  *
@@ -133,12 +133,40 @@ export declare class ZcashIronwoodBitGoPsbt extends ZcashBitGoPsbt {
133
133
  * @param options.anchor - 32-byte Ironwood note-commitment-tree root
134
134
  * @param options.memo - optional 512-byte memo (defaults to the ZIP-302 "no memo" encoding)
135
135
  * @param options.ovk - optional 32-byte outgoing viewing key (omit for a keyless build)
136
+ * @param options.unifiedAddress - optional full Unified Address string this output was addressed
137
+ * to. Its Orchard receiver must equal `recipient`. The PCZT itself only carries the raw 43-byte
138
+ * receiver — a lossy encoding for a multi-receiver UA, since any transparent/Sapling receiver
139
+ * can't be recovered from it — so passing this stores the original UA verbatim, letting a later
140
+ * `parseOutputsWithWalletKeys`/`parseTransactionWithWalletKeys` (even after a
141
+ * serialize/deserialize round-trip) return it in full instead of a re-encoded single-receiver UA.
136
142
  */
137
143
  addShieldedOutput(recipient: Uint8Array, amount: bigint, options: {
138
144
  anchor: Uint8Array;
139
145
  memo?: Uint8Array;
140
146
  ovk?: Uint8Array;
147
+ unifiedAddress?: string;
141
148
  }): void;
149
+ /**
150
+ * Add one or more shielded outputs (Constructor role) as a single orchard PCZT — the
151
+ * multi-recipient counterpart to {@link addShieldedOutput}. Every recipient must be passed in
152
+ * one call: only one call to `addShieldedOutput`/`addShieldedOutputs` is supported per PSBT (see
153
+ * {@link addShieldedOutput}).
154
+ *
155
+ * @param outputs - one entry per recipient; `memo` defaults per-entry to the ZIP-302 "no memo"
156
+ * encoding, exactly as {@link addShieldedOutput}'s does
157
+ * @param anchor - 32-byte Ironwood note-commitment-tree root, shared by every output
158
+ * @returns the action index assigned to each output, in the same order as `outputs` — the
159
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
160
+ * indices (not the position in `outputs`) when later calling
161
+ * `setIronwoodOutCiphertext`/`setIronwoodOutCiphertextForUser` for a specific recipient.
162
+ */
163
+ addShieldedOutputs(outputs: Array<{
164
+ recipient: Uint8Array;
165
+ amount: bigint;
166
+ memo?: Uint8Array;
167
+ ovk?: Uint8Array;
168
+ unifiedAddress?: string;
169
+ }>, anchor: Uint8Array): number[];
142
170
  /**
143
171
  * Client-managed `ovk`: re-encrypt the shielded output's `out_ciphertext` under **this wallet's**
144
172
  * `ovk`, derived as the ECDH agreement of `rootWalletKeys.bitgoKey()` and `userKey`. Both are root
@@ -132,10 +132,39 @@ class ZcashIronwoodBitGoPsbt extends ZcashBitGoPsbt_js_1.ZcashBitGoPsbt {
132
132
  * @param options.anchor - 32-byte Ironwood note-commitment-tree root
133
133
  * @param options.memo - optional 512-byte memo (defaults to the ZIP-302 "no memo" encoding)
134
134
  * @param options.ovk - optional 32-byte outgoing viewing key (omit for a keyless build)
135
+ * @param options.unifiedAddress - optional full Unified Address string this output was addressed
136
+ * to. Its Orchard receiver must equal `recipient`. The PCZT itself only carries the raw 43-byte
137
+ * receiver — a lossy encoding for a multi-receiver UA, since any transparent/Sapling receiver
138
+ * can't be recovered from it — so passing this stores the original UA verbatim, letting a later
139
+ * `parseOutputsWithWalletKeys`/`parseTransactionWithWalletKeys` (even after a
140
+ * serialize/deserialize round-trip) return it in full instead of a re-encoded single-receiver UA.
135
141
  */
136
142
  addShieldedOutput(recipient, amount, options) {
137
143
  const memo = options.memo ?? zip302NoMemo();
138
- this.wasm.add_ironwood_output(recipient, amount, options.ovk, options.anchor, memo);
144
+ this.wasm.add_ironwood_output(recipient, amount, options.ovk, options.anchor, memo, options.unifiedAddress);
145
+ }
146
+ /**
147
+ * Add one or more shielded outputs (Constructor role) as a single orchard PCZT — the
148
+ * multi-recipient counterpart to {@link addShieldedOutput}. Every recipient must be passed in
149
+ * one call: only one call to `addShieldedOutput`/`addShieldedOutputs` is supported per PSBT (see
150
+ * {@link addShieldedOutput}).
151
+ *
152
+ * @param outputs - one entry per recipient; `memo` defaults per-entry to the ZIP-302 "no memo"
153
+ * encoding, exactly as {@link addShieldedOutput}'s does
154
+ * @param anchor - 32-byte Ironwood note-commitment-tree root, shared by every output
155
+ * @returns the action index assigned to each output, in the same order as `outputs` — the
156
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
157
+ * indices (not the position in `outputs`) when later calling
158
+ * `setIronwoodOutCiphertext`/`setIronwoodOutCiphertextForUser` for a specific recipient.
159
+ */
160
+ addShieldedOutputs(outputs, anchor) {
161
+ return Array.from(this.wasm.add_ironwood_outputs(outputs.map((o) => ({
162
+ recipient: o.recipient,
163
+ amount: o.amount,
164
+ memo: o.memo ?? zip302NoMemo(),
165
+ ovk: o.ovk,
166
+ unifiedAddress: o.unifiedAddress,
167
+ })), anchor));
139
168
  }
140
169
  /**
141
170
  * Client-managed `ovk`: re-encrypt the shielded output's `out_ciphertext` under **this wallet's**
@@ -8,7 +8,7 @@ export { ChainCode, chainCodes, assertChainCode, type Scope } from "./chains.js"
8
8
  export { requiresPrevTxForP2sh } from "./prevTx.js";
9
9
  export { BitGoPsbt, getWalletKeysFromPsbt, type NetworkName, type ScriptId, type ParsedInput, type ParsedOutput, type ParsedTransaction, type SignPath, type CreateEmptyOptions, type AddInputOptions, type AddOutputOptions, type AddWalletInputOptions, type AddWalletOutputOptions, type ParseTransactionOptions, type ParseOutputsOptions, type HydrationUnspent, } from "./BitGoPsbt.js";
10
10
  export { BitGoKeySubtype, type PsbtKvKey } from "./BitGoKeySubtype.js";
11
- export { ZcashBitGoPsbt, type ZcashNetworkName, type CreateEmptyZcashOptions, IRONWOOD_VERSION_GROUP_ID, } from "./ZcashBitGoPsbt.js";
11
+ export { ZcashBitGoPsbt, type ZcashNetworkName, type ZcashParsedOutput, type CreateEmptyZcashOptions, IRONWOOD_VERSION_GROUP_ID, } from "./ZcashBitGoPsbt.js";
12
12
  export { ZcashIronwoodBitGoPsbt, zip302NoMemo, type CreateEmptyIronwoodOptions, type CreateEmptyIronwoodWithConsensusBranchIdOptions, } from "./ZcashIronwoodBitGoPsbt.js";
13
13
  export { ZcashUnifiedAddress } from "./ZcashUnifiedAddress.js";
14
14
  export { ZcashV6Transaction } from "./ZcashV6Transaction.js";
@@ -150,13 +150,32 @@ export class BitGoPsbt {
150
150
  * * `ovk` - optional outgoing viewing key ([`OVK_SIZE`] bytes; `None` for a keyless build)
151
151
  * * `anchor` - Ironwood note-commitment-tree root ([`ANCHOR_SIZE`] bytes)
152
152
  * * `memo` - ZIP-302 memo field ([`MEMO_SIZE`] bytes)
153
+ * * `unified_address` - optional full Unified Address the output was addressed to; if given,
154
+ * its Orchard receiver must match `recipient`, and it is stored verbatim so output parsing
155
+ * can later return it in full (transparent/Sapling receivers included) instead of
156
+ * reconstructing a single-receiver UA from `recipient` alone
153
157
  *
154
158
  * [`ORCHARD_ADDRESS_SIZE`]: crate::zcash::ironwood_build::ORCHARD_ADDRESS_SIZE
155
159
  * [`OVK_SIZE`]: crate::zcash::ironwood_build::OVK_SIZE
156
160
  * [`ANCHOR_SIZE`]: crate::zcash::ironwood_build::ANCHOR_SIZE
157
161
  * [`MEMO_SIZE`]: crate::zcash::ironwood_build::MEMO_SIZE
158
162
  */
159
- add_ironwood_output(recipient: Uint8Array, amount: bigint, ovk: Uint8Array | null | undefined, anchor: Uint8Array, memo: Uint8Array): void;
163
+ add_ironwood_output(recipient: Uint8Array, amount: bigint, ovk: Uint8Array | null | undefined, anchor: Uint8Array, memo: Uint8Array, unified_address?: string | null): void;
164
+ /**
165
+ * Constructor: add one or more shielded Ironwood outputs as a single orchard PCZT stored in
166
+ * the PSBT — the multi-recipient counterpart to [`Self::add_ironwood_output`].
167
+ *
168
+ * `outputs` is an array of `{ recipient: Uint8Array, amount: bigint, memo: Uint8Array,
169
+ * ovk?: Uint8Array, unifiedAddress?: string }`, one entry per recipient — see
170
+ * [`Self::add_ironwood_output`] for the meaning of each field. `anchor` is shared by every
171
+ * output.
172
+ *
173
+ * Returns the action index assigned to each output, in the same order as `outputs` — the
174
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
175
+ * indices (not the position in `outputs`) when later calling `set_ironwood_out_ciphertext`
176
+ * for a specific recipient.
177
+ */
178
+ add_ironwood_outputs(outputs: any, anchor: Uint8Array): Uint32Array;
160
179
  /**
161
180
  * Ingest a transparent-input signature (`sig`: DER ECDSA with the trailing SIGHASH_ALL byte)
162
181
  * after verifying it against `ironwood_v6_transparent_sighash(index)`.
@@ -482,6 +482,10 @@ class BitGoPsbt {
482
482
  * * `ovk` - optional outgoing viewing key ([`OVK_SIZE`] bytes; `None` for a keyless build)
483
483
  * * `anchor` - Ironwood note-commitment-tree root ([`ANCHOR_SIZE`] bytes)
484
484
  * * `memo` - ZIP-302 memo field ([`MEMO_SIZE`] bytes)
485
+ * * `unified_address` - optional full Unified Address the output was addressed to; if given,
486
+ * its Orchard receiver must match `recipient`, and it is stored verbatim so output parsing
487
+ * can later return it in full (transparent/Sapling receivers included) instead of
488
+ * reconstructing a single-receiver UA from `recipient` alone
485
489
  *
486
490
  * [`ORCHARD_ADDRESS_SIZE`]: crate::zcash::ironwood_build::ORCHARD_ADDRESS_SIZE
487
491
  * [`OVK_SIZE`]: crate::zcash::ironwood_build::OVK_SIZE
@@ -492,8 +496,9 @@ class BitGoPsbt {
492
496
  * @param {Uint8Array | null | undefined} ovk
493
497
  * @param {Uint8Array} anchor
494
498
  * @param {Uint8Array} memo
499
+ * @param {string | null} [unified_address]
495
500
  */
496
- add_ironwood_output(recipient, amount, ovk, anchor, memo) {
501
+ add_ironwood_output(recipient, amount, ovk, anchor, memo, unified_address) {
497
502
  try {
498
503
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
499
504
  const ptr0 = passArray8ToWasm0(recipient, wasm.__wbindgen_export);
@@ -504,7 +509,9 @@ class BitGoPsbt {
504
509
  const len2 = WASM_VECTOR_LEN;
505
510
  const ptr3 = passArray8ToWasm0(memo, wasm.__wbindgen_export);
506
511
  const len3 = WASM_VECTOR_LEN;
507
- wasm.bitgopsbt_add_ironwood_output(retptr, this.__wbg_ptr, ptr0, len0, amount, ptr1, len1, ptr2, len2, ptr3, len3);
512
+ var ptr4 = isLikeNone(unified_address) ? 0 : passStringToWasm0(unified_address, wasm.__wbindgen_export, wasm.__wbindgen_export2);
513
+ var len4 = WASM_VECTOR_LEN;
514
+ wasm.bitgopsbt_add_ironwood_output(retptr, this.__wbg_ptr, ptr0, len0, amount, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4);
508
515
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
509
516
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
510
517
  if (r1) {
@@ -514,6 +521,43 @@ class BitGoPsbt {
514
521
  wasm.__wbindgen_add_to_stack_pointer(16);
515
522
  }
516
523
  }
524
+ /**
525
+ * Constructor: add one or more shielded Ironwood outputs as a single orchard PCZT stored in
526
+ * the PSBT — the multi-recipient counterpart to [`Self::add_ironwood_output`].
527
+ *
528
+ * `outputs` is an array of `{ recipient: Uint8Array, amount: bigint, memo: Uint8Array,
529
+ * ovk?: Uint8Array, unifiedAddress?: string }`, one entry per recipient — see
530
+ * [`Self::add_ironwood_output`] for the meaning of each field. `anchor` is shared by every
531
+ * output.
532
+ *
533
+ * Returns the action index assigned to each output, in the same order as `outputs` — the
534
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
535
+ * indices (not the position in `outputs`) when later calling `set_ironwood_out_ciphertext`
536
+ * for a specific recipient.
537
+ * @param {any} outputs
538
+ * @param {Uint8Array} anchor
539
+ * @returns {Uint32Array}
540
+ */
541
+ add_ironwood_outputs(outputs, anchor) {
542
+ try {
543
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
544
+ const ptr0 = passArray8ToWasm0(anchor, wasm.__wbindgen_export);
545
+ const len0 = WASM_VECTOR_LEN;
546
+ wasm.bitgopsbt_add_ironwood_outputs(retptr, this.__wbg_ptr, addHeapObject(outputs), ptr0, len0);
547
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
548
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
549
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
550
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
551
+ if (r3) {
552
+ throw takeObject(r2);
553
+ }
554
+ var v2 = getArrayU32FromWasm0(r0, r1).slice();
555
+ wasm.__wbindgen_export4(r0, r1 * 4, 4);
556
+ return v2;
557
+ } finally {
558
+ wasm.__wbindgen_add_to_stack_pointer(16);
559
+ }
560
+ }
517
561
  /**
518
562
  * Ingest a transparent-input signature (`sig`: DER ECDSA with the trailing SIGHASH_ALL byte)
519
563
  * after verifying it against `ironwood_v6_transparent_sighash(index)`.
@@ -7167,6 +7211,10 @@ function __wbg_get_imports() {
7167
7211
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
7168
7212
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
7169
7213
  },
7214
+ __wbg___wbindgen_is_bigint_31b12575b56f32fc: function(arg0) {
7215
+ const ret = typeof(getObject(arg0)) === 'bigint';
7216
+ return ret;
7217
+ },
7170
7218
  __wbg___wbindgen_is_function_0095a73b8b156f76: function(arg0) {
7171
7219
  const ret = typeof(getObject(arg0)) === 'function';
7172
7220
  return ret;
Binary file
@@ -5,6 +5,30 @@ export const __wbg_wasmreplayprotection_free: (a: number, b: number) => void;
5
5
  export const wasmreplayprotection_from_addresses: (a: number, b: number, c: number, d: number, e: number) => void;
6
6
  export const wasmreplayprotection_from_output_scripts: (a: number, b: number) => number;
7
7
  export const wasmreplayprotection_from_public_keys: (a: number, b: number, c: number) => void;
8
+ export const __wbg_wasmutxonamespace_free: (a: number, b: number) => void;
9
+ export const __wbg_wrapdescriptor_free: (a: number, b: number) => void;
10
+ export const __wbg_wrapminiscript_free: (a: number, b: number) => void;
11
+ export const wasmutxonamespace_get_wasm_utxo_version: (a: number) => void;
12
+ export const wrapdescriptor_atDerivationIndex: (a: number, b: number, c: number) => void;
13
+ export const wrapdescriptor_descType: (a: number, b: number) => void;
14
+ export const wrapdescriptor_encode: (a: number, b: number) => void;
15
+ export const wrapdescriptor_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
16
+ export const wrapdescriptor_fromStringDetectType: (a: number, b: number, c: number) => void;
17
+ export const wrapdescriptor_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
18
+ export const wrapdescriptor_hasWildcard: (a: number) => number;
19
+ export const wrapdescriptor_maxWeightToSatisfy: (a: number, b: number) => void;
20
+ export const wrapdescriptor_node: (a: number, b: number) => void;
21
+ export const wrapdescriptor_scriptPubkey: (a: number, b: number) => void;
22
+ export const wrapdescriptor_toAsmString: (a: number, b: number) => void;
23
+ export const wrapdescriptor_toString: (a: number, b: number) => void;
24
+ export const wrapminiscript_encode: (a: number, b: number) => void;
25
+ export const wrapminiscript_fromBitcoinScript: (a: number, b: number, c: number, d: number, e: number) => void;
26
+ export const wrapminiscript_fromBitcoinScriptExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
27
+ export const wrapminiscript_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
28
+ export const wrapminiscript_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
29
+ export const wrapminiscript_node: (a: number, b: number) => void;
30
+ export const wrapminiscript_toAsmString: (a: number, b: number) => void;
31
+ export const wrapminiscript_toString: (a: number, b: number) => void;
8
32
  export const __wbg_addressnamespace_free: (a: number, b: number) => void;
9
33
  export const __wbg_utxolibcompatnamespace_free: (a: number, b: number) => void;
10
34
  export const __wbg_wasmdashtransaction_free: (a: number, b: number) => void;
@@ -15,6 +39,8 @@ export const __wbg_zcashunifiedaddress_free: (a: number, b: number) => void;
15
39
  export const __wbg_zcashv6transaction_free: (a: number, b: number) => void;
16
40
  export const addressnamespace_from_output_script_with_coin: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
17
41
  export const addressnamespace_to_output_script_with_coin: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
42
+ export const isInspectEnabled: () => number;
43
+ export const parsePsbtRawToJson: (a: number, b: number, c: number, d: number, e: number) => void;
18
44
  export const utxolibcompatnamespace_from_output_script: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
19
45
  export const utxolibcompatnamespace_to_output_script: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
20
46
  export const wasmdashtransaction_from_bytes: (a: number, b: number, c: number) => void;
@@ -111,48 +137,35 @@ export const wasmtransaction_input_count: (a: number) => number;
111
137
  export const wasmtransaction_output_count: (a: number) => number;
112
138
  export const wasmzcashtransaction_input_count: (a: number) => number;
113
139
  export const wasmzcashtransaction_output_count: (a: number) => number;
140
+ export const parsePsbtToJson: (a: number, b: number, c: number, d: number, e: number) => void;
141
+ export const parseTxToJson: (a: number, b: number, c: number, d: number, e: number) => void;
114
142
  export const wasmtransaction_lock_time: (a: number) => number;
115
143
  export const wasmtransaction_version: (a: number) => number;
116
144
  export const wasmzcashtransaction_lock_time: (a: number) => number;
117
145
  export const wasmzcashtransaction_version: (a: number) => number;
118
146
  export const wrappsbt_lock_time: (a: number) => number;
119
147
  export const wrappsbt_version: (a: number) => number;
120
- export const __wbg_wrapdescriptor_free: (a: number, b: number) => void;
121
- export const __wbg_wrapminiscript_free: (a: number, b: number) => void;
122
- export const wrapdescriptor_atDerivationIndex: (a: number, b: number, c: number) => void;
123
- export const wrapdescriptor_descType: (a: number, b: number) => void;
124
- export const wrapdescriptor_encode: (a: number, b: number) => void;
125
- export const wrapdescriptor_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
126
- export const wrapdescriptor_fromStringDetectType: (a: number, b: number, c: number) => void;
127
- export const wrapdescriptor_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
128
- export const wrapdescriptor_hasWildcard: (a: number) => number;
129
- export const wrapdescriptor_maxWeightToSatisfy: (a: number, b: number) => void;
130
- export const wrapdescriptor_node: (a: number, b: number) => void;
131
- export const wrapdescriptor_scriptPubkey: (a: number, b: number) => void;
132
- export const wrapdescriptor_toAsmString: (a: number, b: number) => void;
133
- export const wrapdescriptor_toString: (a: number, b: number) => void;
134
- export const wrapminiscript_encode: (a: number, b: number) => void;
135
- export const wrapminiscript_fromBitcoinScript: (a: number, b: number, c: number, d: number, e: number) => void;
136
- export const wrapminiscript_fromBitcoinScriptExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
137
- export const wrapminiscript_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
138
- export const wrapminiscript_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
139
- export const wrapminiscript_node: (a: number, b: number) => void;
140
- export const wrapminiscript_toAsmString: (a: number, b: number) => void;
141
- export const wrapminiscript_toString: (a: number, b: number) => void;
142
- export const __wbg_inscriptionsnamespace_free: (a: number, b: number) => void;
143
148
  export const __wbg_messagenamespace_free: (a: number, b: number) => void;
144
- export const inscriptionsnamespace_create_inscription_reveal_data: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
145
- export const inscriptionsnamespace_sign_reveal_transaction: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint) => void;
149
+ export const __wbg_wasmecpair_free: (a: number, b: number) => void;
146
150
  export const messagenamespace_sign_message: (a: number, b: number, c: number, d: number) => void;
147
151
  export const messagenamespace_verify_message: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
152
+ export const wasmecpair_from_private_key: (a: number, b: number, c: number) => void;
153
+ export const wasmecpair_from_public_key: (a: number, b: number, c: number) => void;
154
+ export const wasmecpair_from_wif: (a: number, b: number, c: number) => void;
155
+ export const wasmecpair_from_wif_mainnet: (a: number, b: number, c: number) => void;
156
+ export const wasmecpair_from_wif_testnet: (a: number, b: number, c: number) => void;
157
+ export const wasmecpair_private_key: (a: number) => number;
158
+ export const wasmecpair_public_key: (a: number) => number;
159
+ export const wasmecpair_to_wif: (a: number, b: number) => void;
160
+ export const wasmecpair_to_wif_mainnet: (a: number, b: number) => void;
161
+ export const wasmecpair_to_wif_testnet: (a: number, b: number) => void;
148
162
  export const __wbg_bip322namespace_free: (a: number, b: number) => void;
149
163
  export const __wbg_bitgopsbt_free: (a: number, b: number) => void;
150
164
  export const __wbg_fixedscriptwalletnamespace_free: (a: number, b: number) => void;
165
+ export const __wbg_inscriptionsnamespace_free: (a: number, b: number) => void;
151
166
  export const __wbg_wasmbip32_free: (a: number, b: number) => void;
152
167
  export const __wbg_wasmdimensions_free: (a: number, b: number) => void;
153
- export const __wbg_wasmecpair_free: (a: number, b: number) => void;
154
168
  export const __wbg_wasmrootwalletkeys_free: (a: number, b: number) => void;
155
- export const __wbg_wasmutxonamespace_free: (a: number, b: number) => void;
156
169
  export const bip322namespace_add_bip322_input: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => void;
157
170
  export const bip322namespace_get_bip322_message: (a: number, b: number, c: number) => void;
158
171
  export const bip322namespace_verify_bip322_psbt_input: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
@@ -161,7 +174,8 @@ export const bip322namespace_verify_bip322_tx_input: (a: number, b: number, c: n
161
174
  export const bip322namespace_verify_bip322_tx_input_with_pubkeys: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
162
175
  export const bitgopsbt_add_input: (a: number, b: number, c: number, d: number, e: number, f: bigint, g: number, h: number, i: number, j: number, k: number) => void;
163
176
  export const bitgopsbt_add_input_at_index: (a: number, b: number, c: number, d: number, e: number, f: number, g: bigint, h: number, i: number, j: number, k: number, l: number) => void;
164
- export const bitgopsbt_add_ironwood_output: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: number, h: number, i: number, j: number, k: number) => void;
177
+ export const bitgopsbt_add_ironwood_output: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => void;
178
+ export const bitgopsbt_add_ironwood_outputs: (a: number, b: number, c: number, d: number, e: number) => void;
165
179
  export const bitgopsbt_add_ironwood_v6_signature: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
166
180
  export const bitgopsbt_add_output: (a: number, b: number, c: number, d: number, e: bigint) => void;
167
181
  export const bitgopsbt_add_output_at_index: (a: number, b: number, c: number, d: number, e: number, f: bigint) => void;
@@ -252,8 +266,8 @@ export const fixedscriptwalletnamespace_output_script_with_network_str: (a: numb
252
266
  export const fixedscriptwalletnamespace_p2sh_p2pk_output_script: (a: number, b: number, c: number) => void;
253
267
  export const fixedscriptwalletnamespace_supports_script_type: (a: number, b: number, c: number, d: number, e: number) => void;
254
268
  export const fixedscriptwalletnamespace_to_wallet_keys: (a: number, b: number, c: number, d: number, e: number) => void;
255
- export const isInspectEnabled: () => number;
256
- export const parsePsbtRawToJson: (a: number, b: number, c: number, d: number, e: number) => void;
269
+ export const inscriptionsnamespace_create_inscription_reveal_data: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
270
+ export const inscriptionsnamespace_sign_reveal_transaction: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint) => void;
257
271
  export const wasmbip32_chain_code: (a: number) => number;
258
272
  export const wasmbip32_depth: (a: number) => number;
259
273
  export const wasmbip32_derive: (a: number, b: number, c: number) => void;
@@ -291,28 +305,15 @@ export const wasmdimensions_get_weight: (a: number, b: number, c: number) => num
291
305
  export const wasmdimensions_has_segwit: (a: number) => number;
292
306
  export const wasmdimensions_plus: (a: number, b: number) => number;
293
307
  export const wasmdimensions_times: (a: number, b: number) => number;
294
- export const wasmecpair_from_private_key: (a: number, b: number, c: number) => void;
295
- export const wasmecpair_from_public_key: (a: number, b: number, c: number) => void;
296
- export const wasmecpair_from_wif: (a: number, b: number, c: number) => void;
297
- export const wasmecpair_from_wif_mainnet: (a: number, b: number, c: number) => void;
298
- export const wasmecpair_from_wif_testnet: (a: number, b: number, c: number) => void;
299
- export const wasmecpair_private_key: (a: number) => number;
300
- export const wasmecpair_public_key: (a: number) => number;
301
- export const wasmecpair_to_wif: (a: number, b: number) => void;
302
- export const wasmecpair_to_wif_mainnet: (a: number, b: number) => void;
303
- export const wasmecpair_to_wif_testnet: (a: number, b: number) => void;
304
308
  export const wasmrootwalletkeys_backup_key: (a: number) => number;
305
309
  export const wasmrootwalletkeys_bitgo_key: (a: number) => number;
306
310
  export const wasmrootwalletkeys_new: (a: number, b: number, c: number, d: number) => void;
307
311
  export const wasmrootwalletkeys_user_key: (a: number) => number;
308
312
  export const wasmrootwalletkeys_with_derivation_prefixes: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
309
- export const wasmutxonamespace_get_wasm_utxo_version: (a: number) => void;
310
313
  export const wasmbip32_from_bip32_properties: (a: number, b: number) => void;
311
- export const parsePsbtToJson: (a: number, b: number, c: number, d: number, e: number) => void;
312
- export const parseTxToJson: (a: number, b: number, c: number, d: number, e: number) => void;
314
+ export const bitgopsbt_sign_replay_protection_inputs: (a: number, b: number, c: number) => void;
313
315
  export const bitgopsbt_sign_wallet_input: (a: number, b: number, c: number, d: number) => void;
314
316
  export const bitgopsbt_sign_all_with_xpriv: (a: number, b: number, c: number) => void;
315
- export const bitgopsbt_sign_replay_protection_inputs: (a: number, b: number, c: number) => void;
316
317
  export const rustsecp256k1_v0_10_0_context_create: (a: number) => number;
317
318
  export const rustsecp256k1_v0_10_0_context_destroy: (a: number) => void;
318
319
  export const rustsecp256k1_v0_10_0_default_error_callback_fn: (a: number, b: number) => void;
@@ -40,20 +40,10 @@ export type ParsedOutput = {
40
40
  paygo: boolean;
41
41
  /** Full BIP32 derivation path from the wallet xpub (e.g. "0/1"). Null for external outputs. */
42
42
  derivationPath: string | null;
43
- /**
44
- * True for a shielded (Orchard/Ironwood) output. Such an output has no `unsigned_tx` entry of
45
- * its own — it lives in the PSBT's proprietary-map PCZT, read from its plaintext (not
46
- * encrypted/decrypted) recipient field. `address` is a single-receiver ZIP-316 unified address
47
- * (`u1...`/`utest1...`) encoding that receiver — a real, usable Zcash address, though not
48
- * necessarily byte-identical to whatever multi-receiver UA the sender originally pasted in (a
49
- * UA with a transparent/Sapling receiver too would round-trip to a different string carrying
50
- * only the Orchard one). `script` holds the same receiver as raw 43 bytes.
51
- */
52
- isShielded: boolean;
53
43
  };
54
- export type ParsedTransaction = {
44
+ export type ParsedTransaction<TOutput extends ParsedOutput = ParsedOutput> = {
55
45
  inputs: ParsedInput[];
56
- outputs: ParsedOutput[];
46
+ outputs: TOutput[];
57
47
  spendAmount: bigint;
58
48
  minerFee: bigint;
59
49
  virtualSize: number;
@@ -123,7 +113,7 @@ export type HydrationUnspent = {
123
113
  pubkey: Uint8Array;
124
114
  value: bigint;
125
115
  };
126
- export declare class BitGoPsbt extends PsbtBase<WasmBitGoPsbt> implements IPsbtWithAddress {
116
+ export declare class BitGoPsbt<TOutput extends ParsedOutput = ParsedOutput> extends PsbtBase<WasmBitGoPsbt> implements IPsbtWithAddress {
127
117
  protected constructor(wasm: WasmBitGoPsbt);
128
118
  /**
129
119
  * Get the underlying WASM instance
@@ -339,7 +329,7 @@ export declare class BitGoPsbt extends PsbtBase<WasmBitGoPsbt> implements IPsbtW
339
329
  * @param options.payGoPubkeys - Optional public keys for PayGo attestation verification
340
330
  * @returns Parsed transaction information
341
331
  */
342
- parseTransactionWithWalletKeys(walletKeys: WalletKeysArg, options: ParseTransactionOptions): ParsedTransaction;
332
+ parseTransactionWithWalletKeys(walletKeys: WalletKeysArg, options: ParseTransactionOptions): ParsedTransaction<TOutput>;
343
333
  /**
344
334
  * Parse outputs with wallet keys to identify which outputs belong to a wallet
345
335
  * with the given wallet keys.
@@ -353,7 +343,7 @@ export declare class BitGoPsbt extends PsbtBase<WasmBitGoPsbt> implements IPsbtW
353
343
  * @returns Array of parsed outputs
354
344
  * @note This method does NOT validate wallet inputs. It only parses outputs.
355
345
  */
356
- parseOutputsWithWalletKeys(walletKeys: WalletKeysArg, options?: ParseOutputsOptions): ParsedOutput[];
346
+ parseOutputsWithWalletKeys(walletKeys: WalletKeysArg, options?: ParseOutputsOptions): TOutput[];
357
347
  /**
358
348
  * Add a PayGo attestation to a PSBT output
359
349
  *
@@ -1,8 +1,20 @@
1
1
  import { type WalletKeysArg } from "./RootWalletKeys.js";
2
- import { BitGoPsbt, type CreateEmptyOptions, type HydrationUnspent } from "./BitGoPsbt.js";
2
+ import { BitGoPsbt, type CreateEmptyOptions, type HydrationUnspent, type ParsedOutput } from "./BitGoPsbt.js";
3
3
  import { ZcashTransaction, type ITransaction } from "../transaction.js";
4
4
  /** Zcash network names */
5
5
  export type ZcashNetworkName = "zcash" | "zcashTest" | "zec" | "tzec";
6
+ export type ZcashParsedOutput = ParsedOutput & {
7
+ /**
8
+ * True for a shielded (Orchard/Ironwood) output. Such an output has no `unsigned_tx` entry of
9
+ * its own — it lives in the PSBT's proprietary-map PCZT, read from its plaintext (not
10
+ * encrypted/decrypted) recipient field. `address` is a single-receiver ZIP-316 unified address
11
+ * (`u1...`/`utest1...`) encoding that receiver — a real, usable Zcash address, though not
12
+ * necessarily byte-identical to whatever multi-receiver UA the sender originally pasted in (a
13
+ * UA with a transparent/Sapling receiver too would round-trip to a different string carrying
14
+ * only the Orchard one). `script` holds the same receiver as raw 43 bytes.
15
+ */
16
+ isShielded: boolean;
17
+ };
6
18
  /**
7
19
  * Zcash v6 (Ironwood) version group id (0xd884b698). Its presence marks a PSBT as v6 — see
8
20
  * `ZcashIronwoodBitGoPsbt`.
@@ -52,7 +64,7 @@ export type CreateEmptyZcashWithConsensusBranchIdOptions = CreateEmptyOptions &
52
64
  * const psbt = ZcashBitGoPsbt.fromBytes(bytes, "zcash");
53
65
  * ```
54
66
  */
55
- export declare class ZcashBitGoPsbt extends BitGoPsbt {
67
+ export declare class ZcashBitGoPsbt extends BitGoPsbt<ZcashParsedOutput> {
56
68
  /**
57
69
  * Create an empty Zcash PSBT with consensus branch ID determined from block height
58
70
  *
@@ -1,6 +1,6 @@
1
1
  import { BitGoPsbt as WasmBitGoPsbt, zcash_branch_id_for_height, zcash_ironwood_version_group_id, } from "../wasm/wasm_utxo.js";
2
2
  import { RootWalletKeys } from "./RootWalletKeys.js";
3
- import { BitGoPsbt } from "./BitGoPsbt.js";
3
+ import { BitGoPsbt, } from "./BitGoPsbt.js";
4
4
  import { ZcashTransaction } from "../transaction.js";
5
5
  /**
6
6
  * Zcash v6 (Ironwood) version group id (0xd884b698). Its presence marks a PSBT as v6 — see
@@ -133,12 +133,40 @@ export declare class ZcashIronwoodBitGoPsbt extends ZcashBitGoPsbt {
133
133
  * @param options.anchor - 32-byte Ironwood note-commitment-tree root
134
134
  * @param options.memo - optional 512-byte memo (defaults to the ZIP-302 "no memo" encoding)
135
135
  * @param options.ovk - optional 32-byte outgoing viewing key (omit for a keyless build)
136
+ * @param options.unifiedAddress - optional full Unified Address string this output was addressed
137
+ * to. Its Orchard receiver must equal `recipient`. The PCZT itself only carries the raw 43-byte
138
+ * receiver — a lossy encoding for a multi-receiver UA, since any transparent/Sapling receiver
139
+ * can't be recovered from it — so passing this stores the original UA verbatim, letting a later
140
+ * `parseOutputsWithWalletKeys`/`parseTransactionWithWalletKeys` (even after a
141
+ * serialize/deserialize round-trip) return it in full instead of a re-encoded single-receiver UA.
136
142
  */
137
143
  addShieldedOutput(recipient: Uint8Array, amount: bigint, options: {
138
144
  anchor: Uint8Array;
139
145
  memo?: Uint8Array;
140
146
  ovk?: Uint8Array;
147
+ unifiedAddress?: string;
141
148
  }): void;
149
+ /**
150
+ * Add one or more shielded outputs (Constructor role) as a single orchard PCZT — the
151
+ * multi-recipient counterpart to {@link addShieldedOutput}. Every recipient must be passed in
152
+ * one call: only one call to `addShieldedOutput`/`addShieldedOutputs` is supported per PSBT (see
153
+ * {@link addShieldedOutput}).
154
+ *
155
+ * @param outputs - one entry per recipient; `memo` defaults per-entry to the ZIP-302 "no memo"
156
+ * encoding, exactly as {@link addShieldedOutput}'s does
157
+ * @param anchor - 32-byte Ironwood note-commitment-tree root, shared by every output
158
+ * @returns the action index assigned to each output, in the same order as `outputs` — the
159
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
160
+ * indices (not the position in `outputs`) when later calling
161
+ * `setIronwoodOutCiphertext`/`setIronwoodOutCiphertextForUser` for a specific recipient.
162
+ */
163
+ addShieldedOutputs(outputs: Array<{
164
+ recipient: Uint8Array;
165
+ amount: bigint;
166
+ memo?: Uint8Array;
167
+ ovk?: Uint8Array;
168
+ unifiedAddress?: string;
169
+ }>, anchor: Uint8Array): number[];
142
170
  /**
143
171
  * Client-managed `ovk`: re-encrypt the shielded output's `out_ciphertext` under **this wallet's**
144
172
  * `ovk`, derived as the ECDH agreement of `rootWalletKeys.bitgoKey()` and `userKey`. Both are root
@@ -128,10 +128,39 @@ export class ZcashIronwoodBitGoPsbt extends ZcashBitGoPsbt {
128
128
  * @param options.anchor - 32-byte Ironwood note-commitment-tree root
129
129
  * @param options.memo - optional 512-byte memo (defaults to the ZIP-302 "no memo" encoding)
130
130
  * @param options.ovk - optional 32-byte outgoing viewing key (omit for a keyless build)
131
+ * @param options.unifiedAddress - optional full Unified Address string this output was addressed
132
+ * to. Its Orchard receiver must equal `recipient`. The PCZT itself only carries the raw 43-byte
133
+ * receiver — a lossy encoding for a multi-receiver UA, since any transparent/Sapling receiver
134
+ * can't be recovered from it — so passing this stores the original UA verbatim, letting a later
135
+ * `parseOutputsWithWalletKeys`/`parseTransactionWithWalletKeys` (even after a
136
+ * serialize/deserialize round-trip) return it in full instead of a re-encoded single-receiver UA.
131
137
  */
132
138
  addShieldedOutput(recipient, amount, options) {
133
139
  const memo = options.memo ?? zip302NoMemo();
134
- this.wasm.add_ironwood_output(recipient, amount, options.ovk, options.anchor, memo);
140
+ this.wasm.add_ironwood_output(recipient, amount, options.ovk, options.anchor, memo, options.unifiedAddress);
141
+ }
142
+ /**
143
+ * Add one or more shielded outputs (Constructor role) as a single orchard PCZT — the
144
+ * multi-recipient counterpart to {@link addShieldedOutput}. Every recipient must be passed in
145
+ * one call: only one call to `addShieldedOutput`/`addShieldedOutputs` is supported per PSBT (see
146
+ * {@link addShieldedOutput}).
147
+ *
148
+ * @param outputs - one entry per recipient; `memo` defaults per-entry to the ZIP-302 "no memo"
149
+ * encoding, exactly as {@link addShieldedOutput}'s does
150
+ * @param anchor - 32-byte Ironwood note-commitment-tree root, shared by every output
151
+ * @returns the action index assigned to each output, in the same order as `outputs` — the
152
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
153
+ * indices (not the position in `outputs`) when later calling
154
+ * `setIronwoodOutCiphertext`/`setIronwoodOutCiphertextForUser` for a specific recipient.
155
+ */
156
+ addShieldedOutputs(outputs, anchor) {
157
+ return Array.from(this.wasm.add_ironwood_outputs(outputs.map((o) => ({
158
+ recipient: o.recipient,
159
+ amount: o.amount,
160
+ memo: o.memo ?? zip302NoMemo(),
161
+ ovk: o.ovk,
162
+ unifiedAddress: o.unifiedAddress,
163
+ })), anchor));
135
164
  }
136
165
  /**
137
166
  * Client-managed `ovk`: re-encrypt the shielded output's `out_ciphertext` under **this wallet's**
@@ -8,7 +8,7 @@ export { ChainCode, chainCodes, assertChainCode, type Scope } from "./chains.js"
8
8
  export { requiresPrevTxForP2sh } from "./prevTx.js";
9
9
  export { BitGoPsbt, getWalletKeysFromPsbt, type NetworkName, type ScriptId, type ParsedInput, type ParsedOutput, type ParsedTransaction, type SignPath, type CreateEmptyOptions, type AddInputOptions, type AddOutputOptions, type AddWalletInputOptions, type AddWalletOutputOptions, type ParseTransactionOptions, type ParseOutputsOptions, type HydrationUnspent, } from "./BitGoPsbt.js";
10
10
  export { BitGoKeySubtype, type PsbtKvKey } from "./BitGoKeySubtype.js";
11
- export { ZcashBitGoPsbt, type ZcashNetworkName, type CreateEmptyZcashOptions, IRONWOOD_VERSION_GROUP_ID, } from "./ZcashBitGoPsbt.js";
11
+ export { ZcashBitGoPsbt, type ZcashNetworkName, type ZcashParsedOutput, type CreateEmptyZcashOptions, IRONWOOD_VERSION_GROUP_ID, } from "./ZcashBitGoPsbt.js";
12
12
  export { ZcashIronwoodBitGoPsbt, zip302NoMemo, type CreateEmptyIronwoodOptions, type CreateEmptyIronwoodWithConsensusBranchIdOptions, } from "./ZcashIronwoodBitGoPsbt.js";
13
13
  export { ZcashUnifiedAddress } from "./ZcashUnifiedAddress.js";
14
14
  export { ZcashV6Transaction } from "./ZcashV6Transaction.js";
@@ -150,13 +150,32 @@ export class BitGoPsbt {
150
150
  * * `ovk` - optional outgoing viewing key ([`OVK_SIZE`] bytes; `None` for a keyless build)
151
151
  * * `anchor` - Ironwood note-commitment-tree root ([`ANCHOR_SIZE`] bytes)
152
152
  * * `memo` - ZIP-302 memo field ([`MEMO_SIZE`] bytes)
153
+ * * `unified_address` - optional full Unified Address the output was addressed to; if given,
154
+ * its Orchard receiver must match `recipient`, and it is stored verbatim so output parsing
155
+ * can later return it in full (transparent/Sapling receivers included) instead of
156
+ * reconstructing a single-receiver UA from `recipient` alone
153
157
  *
154
158
  * [`ORCHARD_ADDRESS_SIZE`]: crate::zcash::ironwood_build::ORCHARD_ADDRESS_SIZE
155
159
  * [`OVK_SIZE`]: crate::zcash::ironwood_build::OVK_SIZE
156
160
  * [`ANCHOR_SIZE`]: crate::zcash::ironwood_build::ANCHOR_SIZE
157
161
  * [`MEMO_SIZE`]: crate::zcash::ironwood_build::MEMO_SIZE
158
162
  */
159
- add_ironwood_output(recipient: Uint8Array, amount: bigint, ovk: Uint8Array | null | undefined, anchor: Uint8Array, memo: Uint8Array): void;
163
+ add_ironwood_output(recipient: Uint8Array, amount: bigint, ovk: Uint8Array | null | undefined, anchor: Uint8Array, memo: Uint8Array, unified_address?: string | null): void;
164
+ /**
165
+ * Constructor: add one or more shielded Ironwood outputs as a single orchard PCZT stored in
166
+ * the PSBT — the multi-recipient counterpart to [`Self::add_ironwood_output`].
167
+ *
168
+ * `outputs` is an array of `{ recipient: Uint8Array, amount: bigint, memo: Uint8Array,
169
+ * ovk?: Uint8Array, unifiedAddress?: string }`, one entry per recipient — see
170
+ * [`Self::add_ironwood_output`] for the meaning of each field. `anchor` is shared by every
171
+ * output.
172
+ *
173
+ * Returns the action index assigned to each output, in the same order as `outputs` — the
174
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
175
+ * indices (not the position in `outputs`) when later calling `set_ironwood_out_ciphertext`
176
+ * for a specific recipient.
177
+ */
178
+ add_ironwood_outputs(outputs: any, anchor: Uint8Array): Uint32Array;
160
179
  /**
161
180
  * Ingest a transparent-input signature (`sig`: DER ECDSA with the trailing SIGHASH_ALL byte)
162
181
  * after verifying it against `ironwood_v6_transparent_sighash(index)`.
@@ -478,6 +478,10 @@ export class BitGoPsbt {
478
478
  * * `ovk` - optional outgoing viewing key ([`OVK_SIZE`] bytes; `None` for a keyless build)
479
479
  * * `anchor` - Ironwood note-commitment-tree root ([`ANCHOR_SIZE`] bytes)
480
480
  * * `memo` - ZIP-302 memo field ([`MEMO_SIZE`] bytes)
481
+ * * `unified_address` - optional full Unified Address the output was addressed to; if given,
482
+ * its Orchard receiver must match `recipient`, and it is stored verbatim so output parsing
483
+ * can later return it in full (transparent/Sapling receivers included) instead of
484
+ * reconstructing a single-receiver UA from `recipient` alone
481
485
  *
482
486
  * [`ORCHARD_ADDRESS_SIZE`]: crate::zcash::ironwood_build::ORCHARD_ADDRESS_SIZE
483
487
  * [`OVK_SIZE`]: crate::zcash::ironwood_build::OVK_SIZE
@@ -488,8 +492,9 @@ export class BitGoPsbt {
488
492
  * @param {Uint8Array | null | undefined} ovk
489
493
  * @param {Uint8Array} anchor
490
494
  * @param {Uint8Array} memo
495
+ * @param {string | null} [unified_address]
491
496
  */
492
- add_ironwood_output(recipient, amount, ovk, anchor, memo) {
497
+ add_ironwood_output(recipient, amount, ovk, anchor, memo, unified_address) {
493
498
  try {
494
499
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
495
500
  const ptr0 = passArray8ToWasm0(recipient, wasm.__wbindgen_export);
@@ -500,7 +505,9 @@ export class BitGoPsbt {
500
505
  const len2 = WASM_VECTOR_LEN;
501
506
  const ptr3 = passArray8ToWasm0(memo, wasm.__wbindgen_export);
502
507
  const len3 = WASM_VECTOR_LEN;
503
- wasm.bitgopsbt_add_ironwood_output(retptr, this.__wbg_ptr, ptr0, len0, amount, ptr1, len1, ptr2, len2, ptr3, len3);
508
+ var ptr4 = isLikeNone(unified_address) ? 0 : passStringToWasm0(unified_address, wasm.__wbindgen_export, wasm.__wbindgen_export2);
509
+ var len4 = WASM_VECTOR_LEN;
510
+ wasm.bitgopsbt_add_ironwood_output(retptr, this.__wbg_ptr, ptr0, len0, amount, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4);
504
511
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
505
512
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
506
513
  if (r1) {
@@ -510,6 +517,43 @@ export class BitGoPsbt {
510
517
  wasm.__wbindgen_add_to_stack_pointer(16);
511
518
  }
512
519
  }
520
+ /**
521
+ * Constructor: add one or more shielded Ironwood outputs as a single orchard PCZT stored in
522
+ * the PSBT — the multi-recipient counterpart to [`Self::add_ironwood_output`].
523
+ *
524
+ * `outputs` is an array of `{ recipient: Uint8Array, amount: bigint, memo: Uint8Array,
525
+ * ovk?: Uint8Array, unifiedAddress?: string }`, one entry per recipient — see
526
+ * [`Self::add_ironwood_output`] for the meaning of each field. `anchor` is shared by every
527
+ * output.
528
+ *
529
+ * Returns the action index assigned to each output, in the same order as `outputs` — the
530
+ * orchard builder pads/reorders actions, so a client-managed-`ovk` caller must use these
531
+ * indices (not the position in `outputs`) when later calling `set_ironwood_out_ciphertext`
532
+ * for a specific recipient.
533
+ * @param {any} outputs
534
+ * @param {Uint8Array} anchor
535
+ * @returns {Uint32Array}
536
+ */
537
+ add_ironwood_outputs(outputs, anchor) {
538
+ try {
539
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
540
+ const ptr0 = passArray8ToWasm0(anchor, wasm.__wbindgen_export);
541
+ const len0 = WASM_VECTOR_LEN;
542
+ wasm.bitgopsbt_add_ironwood_outputs(retptr, this.__wbg_ptr, addHeapObject(outputs), ptr0, len0);
543
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
544
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
545
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
546
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
547
+ if (r3) {
548
+ throw takeObject(r2);
549
+ }
550
+ var v2 = getArrayU32FromWasm0(r0, r1).slice();
551
+ wasm.__wbindgen_export4(r0, r1 * 4, 4);
552
+ return v2;
553
+ } finally {
554
+ wasm.__wbindgen_add_to_stack_pointer(16);
555
+ }
556
+ }
513
557
  /**
514
558
  * Ingest a transparent-input signature (`sig`: DER ECDSA with the trailing SIGHASH_ALL byte)
515
559
  * after verifying it against `ironwood_v6_transparent_sighash(index)`.
@@ -7134,6 +7178,10 @@ export function __wbg___wbindgen_debug_string_0bc8482c6e3508ae(arg0, arg1) {
7134
7178
  getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
7135
7179
  getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
7136
7180
  }
7181
+ export function __wbg___wbindgen_is_bigint_31b12575b56f32fc(arg0) {
7182
+ const ret = typeof(getObject(arg0)) === 'bigint';
7183
+ return ret;
7184
+ }
7137
7185
  export function __wbg___wbindgen_is_function_0095a73b8b156f76(arg0) {
7138
7186
  const ret = typeof(getObject(arg0)) === 'function';
7139
7187
  return ret;
Binary file
@@ -5,6 +5,30 @@ export const __wbg_wasmreplayprotection_free: (a: number, b: number) => void;
5
5
  export const wasmreplayprotection_from_addresses: (a: number, b: number, c: number, d: number, e: number) => void;
6
6
  export const wasmreplayprotection_from_output_scripts: (a: number, b: number) => number;
7
7
  export const wasmreplayprotection_from_public_keys: (a: number, b: number, c: number) => void;
8
+ export const __wbg_wasmutxonamespace_free: (a: number, b: number) => void;
9
+ export const __wbg_wrapdescriptor_free: (a: number, b: number) => void;
10
+ export const __wbg_wrapminiscript_free: (a: number, b: number) => void;
11
+ export const wasmutxonamespace_get_wasm_utxo_version: (a: number) => void;
12
+ export const wrapdescriptor_atDerivationIndex: (a: number, b: number, c: number) => void;
13
+ export const wrapdescriptor_descType: (a: number, b: number) => void;
14
+ export const wrapdescriptor_encode: (a: number, b: number) => void;
15
+ export const wrapdescriptor_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
16
+ export const wrapdescriptor_fromStringDetectType: (a: number, b: number, c: number) => void;
17
+ export const wrapdescriptor_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
18
+ export const wrapdescriptor_hasWildcard: (a: number) => number;
19
+ export const wrapdescriptor_maxWeightToSatisfy: (a: number, b: number) => void;
20
+ export const wrapdescriptor_node: (a: number, b: number) => void;
21
+ export const wrapdescriptor_scriptPubkey: (a: number, b: number) => void;
22
+ export const wrapdescriptor_toAsmString: (a: number, b: number) => void;
23
+ export const wrapdescriptor_toString: (a: number, b: number) => void;
24
+ export const wrapminiscript_encode: (a: number, b: number) => void;
25
+ export const wrapminiscript_fromBitcoinScript: (a: number, b: number, c: number, d: number, e: number) => void;
26
+ export const wrapminiscript_fromBitcoinScriptExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
27
+ export const wrapminiscript_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
28
+ export const wrapminiscript_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
29
+ export const wrapminiscript_node: (a: number, b: number) => void;
30
+ export const wrapminiscript_toAsmString: (a: number, b: number) => void;
31
+ export const wrapminiscript_toString: (a: number, b: number) => void;
8
32
  export const __wbg_addressnamespace_free: (a: number, b: number) => void;
9
33
  export const __wbg_utxolibcompatnamespace_free: (a: number, b: number) => void;
10
34
  export const __wbg_wasmdashtransaction_free: (a: number, b: number) => void;
@@ -15,6 +39,8 @@ export const __wbg_zcashunifiedaddress_free: (a: number, b: number) => void;
15
39
  export const __wbg_zcashv6transaction_free: (a: number, b: number) => void;
16
40
  export const addressnamespace_from_output_script_with_coin: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
17
41
  export const addressnamespace_to_output_script_with_coin: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
42
+ export const isInspectEnabled: () => number;
43
+ export const parsePsbtRawToJson: (a: number, b: number, c: number, d: number, e: number) => void;
18
44
  export const utxolibcompatnamespace_from_output_script: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
19
45
  export const utxolibcompatnamespace_to_output_script: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
20
46
  export const wasmdashtransaction_from_bytes: (a: number, b: number, c: number) => void;
@@ -111,48 +137,35 @@ export const wasmtransaction_input_count: (a: number) => number;
111
137
  export const wasmtransaction_output_count: (a: number) => number;
112
138
  export const wasmzcashtransaction_input_count: (a: number) => number;
113
139
  export const wasmzcashtransaction_output_count: (a: number) => number;
140
+ export const parsePsbtToJson: (a: number, b: number, c: number, d: number, e: number) => void;
141
+ export const parseTxToJson: (a: number, b: number, c: number, d: number, e: number) => void;
114
142
  export const wasmtransaction_lock_time: (a: number) => number;
115
143
  export const wasmtransaction_version: (a: number) => number;
116
144
  export const wasmzcashtransaction_lock_time: (a: number) => number;
117
145
  export const wasmzcashtransaction_version: (a: number) => number;
118
146
  export const wrappsbt_lock_time: (a: number) => number;
119
147
  export const wrappsbt_version: (a: number) => number;
120
- export const __wbg_wrapdescriptor_free: (a: number, b: number) => void;
121
- export const __wbg_wrapminiscript_free: (a: number, b: number) => void;
122
- export const wrapdescriptor_atDerivationIndex: (a: number, b: number, c: number) => void;
123
- export const wrapdescriptor_descType: (a: number, b: number) => void;
124
- export const wrapdescriptor_encode: (a: number, b: number) => void;
125
- export const wrapdescriptor_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
126
- export const wrapdescriptor_fromStringDetectType: (a: number, b: number, c: number) => void;
127
- export const wrapdescriptor_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
128
- export const wrapdescriptor_hasWildcard: (a: number) => number;
129
- export const wrapdescriptor_maxWeightToSatisfy: (a: number, b: number) => void;
130
- export const wrapdescriptor_node: (a: number, b: number) => void;
131
- export const wrapdescriptor_scriptPubkey: (a: number, b: number) => void;
132
- export const wrapdescriptor_toAsmString: (a: number, b: number) => void;
133
- export const wrapdescriptor_toString: (a: number, b: number) => void;
134
- export const wrapminiscript_encode: (a: number, b: number) => void;
135
- export const wrapminiscript_fromBitcoinScript: (a: number, b: number, c: number, d: number, e: number) => void;
136
- export const wrapminiscript_fromBitcoinScriptExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
137
- export const wrapminiscript_fromString: (a: number, b: number, c: number, d: number, e: number) => void;
138
- export const wrapminiscript_fromStringExt: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
139
- export const wrapminiscript_node: (a: number, b: number) => void;
140
- export const wrapminiscript_toAsmString: (a: number, b: number) => void;
141
- export const wrapminiscript_toString: (a: number, b: number) => void;
142
- export const __wbg_inscriptionsnamespace_free: (a: number, b: number) => void;
143
148
  export const __wbg_messagenamespace_free: (a: number, b: number) => void;
144
- export const inscriptionsnamespace_create_inscription_reveal_data: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
145
- export const inscriptionsnamespace_sign_reveal_transaction: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint) => void;
149
+ export const __wbg_wasmecpair_free: (a: number, b: number) => void;
146
150
  export const messagenamespace_sign_message: (a: number, b: number, c: number, d: number) => void;
147
151
  export const messagenamespace_verify_message: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
152
+ export const wasmecpair_from_private_key: (a: number, b: number, c: number) => void;
153
+ export const wasmecpair_from_public_key: (a: number, b: number, c: number) => void;
154
+ export const wasmecpair_from_wif: (a: number, b: number, c: number) => void;
155
+ export const wasmecpair_from_wif_mainnet: (a: number, b: number, c: number) => void;
156
+ export const wasmecpair_from_wif_testnet: (a: number, b: number, c: number) => void;
157
+ export const wasmecpair_private_key: (a: number) => number;
158
+ export const wasmecpair_public_key: (a: number) => number;
159
+ export const wasmecpair_to_wif: (a: number, b: number) => void;
160
+ export const wasmecpair_to_wif_mainnet: (a: number, b: number) => void;
161
+ export const wasmecpair_to_wif_testnet: (a: number, b: number) => void;
148
162
  export const __wbg_bip322namespace_free: (a: number, b: number) => void;
149
163
  export const __wbg_bitgopsbt_free: (a: number, b: number) => void;
150
164
  export const __wbg_fixedscriptwalletnamespace_free: (a: number, b: number) => void;
165
+ export const __wbg_inscriptionsnamespace_free: (a: number, b: number) => void;
151
166
  export const __wbg_wasmbip32_free: (a: number, b: number) => void;
152
167
  export const __wbg_wasmdimensions_free: (a: number, b: number) => void;
153
- export const __wbg_wasmecpair_free: (a: number, b: number) => void;
154
168
  export const __wbg_wasmrootwalletkeys_free: (a: number, b: number) => void;
155
- export const __wbg_wasmutxonamespace_free: (a: number, b: number) => void;
156
169
  export const bip322namespace_add_bip322_input: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => void;
157
170
  export const bip322namespace_get_bip322_message: (a: number, b: number, c: number) => void;
158
171
  export const bip322namespace_verify_bip322_psbt_input: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
@@ -161,7 +174,8 @@ export const bip322namespace_verify_bip322_tx_input: (a: number, b: number, c: n
161
174
  export const bip322namespace_verify_bip322_tx_input_with_pubkeys: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
162
175
  export const bitgopsbt_add_input: (a: number, b: number, c: number, d: number, e: number, f: bigint, g: number, h: number, i: number, j: number, k: number) => void;
163
176
  export const bitgopsbt_add_input_at_index: (a: number, b: number, c: number, d: number, e: number, f: number, g: bigint, h: number, i: number, j: number, k: number, l: number) => void;
164
- export const bitgopsbt_add_ironwood_output: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: number, h: number, i: number, j: number, k: number) => void;
177
+ export const bitgopsbt_add_ironwood_output: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => void;
178
+ export const bitgopsbt_add_ironwood_outputs: (a: number, b: number, c: number, d: number, e: number) => void;
165
179
  export const bitgopsbt_add_ironwood_v6_signature: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
166
180
  export const bitgopsbt_add_output: (a: number, b: number, c: number, d: number, e: bigint) => void;
167
181
  export const bitgopsbt_add_output_at_index: (a: number, b: number, c: number, d: number, e: number, f: bigint) => void;
@@ -252,8 +266,8 @@ export const fixedscriptwalletnamespace_output_script_with_network_str: (a: numb
252
266
  export const fixedscriptwalletnamespace_p2sh_p2pk_output_script: (a: number, b: number, c: number) => void;
253
267
  export const fixedscriptwalletnamespace_supports_script_type: (a: number, b: number, c: number, d: number, e: number) => void;
254
268
  export const fixedscriptwalletnamespace_to_wallet_keys: (a: number, b: number, c: number, d: number, e: number) => void;
255
- export const isInspectEnabled: () => number;
256
- export const parsePsbtRawToJson: (a: number, b: number, c: number, d: number, e: number) => void;
269
+ export const inscriptionsnamespace_create_inscription_reveal_data: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
270
+ export const inscriptionsnamespace_sign_reveal_transaction: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: bigint) => void;
257
271
  export const wasmbip32_chain_code: (a: number) => number;
258
272
  export const wasmbip32_depth: (a: number) => number;
259
273
  export const wasmbip32_derive: (a: number, b: number, c: number) => void;
@@ -291,28 +305,15 @@ export const wasmdimensions_get_weight: (a: number, b: number, c: number) => num
291
305
  export const wasmdimensions_has_segwit: (a: number) => number;
292
306
  export const wasmdimensions_plus: (a: number, b: number) => number;
293
307
  export const wasmdimensions_times: (a: number, b: number) => number;
294
- export const wasmecpair_from_private_key: (a: number, b: number, c: number) => void;
295
- export const wasmecpair_from_public_key: (a: number, b: number, c: number) => void;
296
- export const wasmecpair_from_wif: (a: number, b: number, c: number) => void;
297
- export const wasmecpair_from_wif_mainnet: (a: number, b: number, c: number) => void;
298
- export const wasmecpair_from_wif_testnet: (a: number, b: number, c: number) => void;
299
- export const wasmecpair_private_key: (a: number) => number;
300
- export const wasmecpair_public_key: (a: number) => number;
301
- export const wasmecpair_to_wif: (a: number, b: number) => void;
302
- export const wasmecpair_to_wif_mainnet: (a: number, b: number) => void;
303
- export const wasmecpair_to_wif_testnet: (a: number, b: number) => void;
304
308
  export const wasmrootwalletkeys_backup_key: (a: number) => number;
305
309
  export const wasmrootwalletkeys_bitgo_key: (a: number) => number;
306
310
  export const wasmrootwalletkeys_new: (a: number, b: number, c: number, d: number) => void;
307
311
  export const wasmrootwalletkeys_user_key: (a: number) => number;
308
312
  export const wasmrootwalletkeys_with_derivation_prefixes: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => void;
309
- export const wasmutxonamespace_get_wasm_utxo_version: (a: number) => void;
310
313
  export const wasmbip32_from_bip32_properties: (a: number, b: number) => void;
311
- export const parsePsbtToJson: (a: number, b: number, c: number, d: number, e: number) => void;
312
- export const parseTxToJson: (a: number, b: number, c: number, d: number, e: number) => void;
314
+ export const bitgopsbt_sign_replay_protection_inputs: (a: number, b: number, c: number) => void;
313
315
  export const bitgopsbt_sign_wallet_input: (a: number, b: number, c: number, d: number) => void;
314
316
  export const bitgopsbt_sign_all_with_xpriv: (a: number, b: number, c: number) => void;
315
- export const bitgopsbt_sign_replay_protection_inputs: (a: number, b: number, c: number) => void;
316
317
  export const rustsecp256k1_v0_10_0_context_create: (a: number) => number;
317
318
  export const rustsecp256k1_v0_10_0_context_destroy: (a: number) => void;
318
319
  export const rustsecp256k1_v0_10_0_default_error_callback_fn: (a: number, b: number) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bitgo/wasm-utxo",
3
3
  "description": "WebAssembly wrapper for rust-bitcoin (beta)",
4
- "version": "4.37.1",
4
+ "version": "4.38.0",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -60,7 +60,8 @@
60
60
  "./dist/cjs/js/wasm/wasm_utxo.js"
61
61
  ],
62
62
  "scripts": {
63
- "test": "npm run test:mocha && npm run test:wasm-pack && npm run test:imports",
63
+ "test": "npm run build:test && npm run test:mocha && npm run test:wasm-pack && npm run test:imports",
64
+ "build:test": "tsc --noEmit --project tsconfig.test.json",
64
65
  "test:mocha": "mocha --recursive 'test/**/*.ts'",
65
66
  "test:integrationLocalRpc": "mocha --config .mocharc.integrationLocalRpc.json --recursive 'test/integrationLocalRpc/**/*.test.ts'",
66
67
  "test:integrationLocalRpc:generate": "tsx --experimental-wasm-modules test/integrationLocalRpc/generate/main.ts",
@@ -76,7 +77,7 @@
76
77
  "build:ts-cjs": "tsc --project tsconfig.cjs.json",
77
78
  "build:ts": "npm run build:ts-esm && npm run build:ts-cjs",
78
79
  "build:package-json": "echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
79
- "build": "npm run build:wasm && npm run build:ts && npm run build:package-json",
80
+ "build": "npm run build:wasm && npm run build:ts && npm run build:test && npm run build:package-json",
80
81
  "check-fmt": "npm run lint:prettier && npm run lint:rustfmt",
81
82
  "lint:prettier": "prettier --check .",
82
83
  "lint:eslint": "eslint .",