@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.
- package/dist/cjs/js/fixedScriptWallet/BitGoPsbt.d.ts +5 -15
- package/dist/cjs/js/fixedScriptWallet/ZcashBitGoPsbt.d.ts +14 -2
- package/dist/cjs/js/fixedScriptWallet/ZcashIronwoodBitGoPsbt.d.ts +28 -0
- package/dist/cjs/js/fixedScriptWallet/ZcashIronwoodBitGoPsbt.js +30 -1
- package/dist/cjs/js/fixedScriptWallet/index.d.ts +1 -1
- package/dist/cjs/js/wasm/wasm_utxo.d.ts +20 -1
- package/dist/cjs/js/wasm/wasm_utxo.js +50 -2
- package/dist/cjs/js/wasm/wasm_utxo_bg.wasm +0 -0
- package/dist/cjs/js/wasm/wasm_utxo_bg.wasm.d.ts +45 -44
- package/dist/esm/js/fixedScriptWallet/BitGoPsbt.d.ts +5 -15
- package/dist/esm/js/fixedScriptWallet/ZcashBitGoPsbt.d.ts +14 -2
- package/dist/esm/js/fixedScriptWallet/ZcashBitGoPsbt.js +1 -1
- package/dist/esm/js/fixedScriptWallet/ZcashIronwoodBitGoPsbt.d.ts +28 -0
- package/dist/esm/js/fixedScriptWallet/ZcashIronwoodBitGoPsbt.js +30 -1
- package/dist/esm/js/fixedScriptWallet/index.d.ts +1 -1
- package/dist/esm/js/wasm/wasm_utxo.d.ts +20 -1
- package/dist/esm/js/wasm/wasm_utxo_bg.js +50 -2
- package/dist/esm/js/wasm/wasm_utxo_bg.wasm +0 -0
- package/dist/esm/js/wasm/wasm_utxo_bg.wasm.d.ts +45 -44
- package/package.json +4 -3
|
@@ -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:
|
|
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):
|
|
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
|
-
|
|
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
|
|
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
|
|
256
|
-
export const
|
|
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
|
|
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:
|
|
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):
|
|
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
|
-
|
|
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
|
|
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
|
|
256
|
-
export const
|
|
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
|
|
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.
|
|
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 .",
|