@anywalletkit/wallet-zcash 0.0.0-stage → 0.2.1

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.
@@ -0,0 +1,419 @@
1
+ import { S as SpentOutput, Z as ZcashNetwork, a as ZcashTxDescription, b as ZcashClient, U as Utxo, c as ZcashTxInfo, d as ZcashConfig, e as ZcashSpend, f as ZcashTransferOptions, g as ZcashMaxSpendableResult, h as ZcashReceipt, i as ZcashTransaction } from './history-DQNeEwXE.cjs';
2
+ export { B as BLOCKCHAIR_URL, j as BlockchairClient, k as BlockchairTxDashboard, C as CAIP2, H as HistoryUnavailableError, l as ZcashChainTx, m as ZcashClientConfig, n as ZcashHistoryCursor, o as ZcashHistoryOptions, p as ZcashHistoryPage, q as ZcashHistoryRaw, r as ZcashHistorySource, s as ZcashTxInputDescription, t as ZcashTxOutputDescription, u as ZcashWarning, v as blockchairTime, w as createZcashHistory, x as decodeHistoryCursor, y as encodeHistoryCursor, z as mapDashboardTx, A as zcashExplorerTxUrl } from './history-DQNeEwXE.cjs';
3
+ import { Signer, IWalletAccountReadOnly, IWalletAccount, TransferResult, WalletManager, FeeRates } from '@anywalletkit/core';
4
+
5
+ declare const TX_VERSION_V5 = 2147483653;
6
+ declare const VERSION_GROUP_ID_V5 = 648488714;
7
+ declare const SIGHASH_ALL = 1;
8
+ /** Mainnet network upgrades and their consensus branch ids (ZIP-200 table), oldest first. */
9
+ declare const MAINNET_UPGRADES: ReadonlyArray<{
10
+ name: string;
11
+ height: number;
12
+ branchId: number;
13
+ }>;
14
+ /** The branch id the current mainnet tip signs under (NU6.3 "Ironwood", active since block 3 428 143, 2026-07-28). */
15
+ declare const CURRENT_BRANCH_ID: number;
16
+ /** Branch id in force at `height` on mainnet (the newest upgrade when the height is unknown or ahead of the table). */
17
+ declare function branchIdForHeight(height: number | undefined): number;
18
+ interface TxInput {
19
+ /** Display-order hex (as explorers show it). */
20
+ txid: string;
21
+ vout: number;
22
+ scriptSig: Uint8Array;
23
+ sequence: number;
24
+ }
25
+ interface TxOutput {
26
+ value: bigint;
27
+ script: Uint8Array;
28
+ }
29
+ /**
30
+ * A v5 (NU5) transaction with transparent inputs and outputs only, as signed and serialized here.
31
+ */
32
+ interface TransparentTxV5 {
33
+ consensusBranchId: number;
34
+ lockTime: number;
35
+ expiryHeight: number;
36
+ inputs: TxInput[];
37
+ outputs: TxOutput[];
38
+ }
39
+ declare const FINAL_SEQUENCE = 4294967294;
40
+ declare const MAX_SEQUENCE = 4294967295;
41
+ /** ZIP-225 wire format with empty Sapling and Orchard bundles. */
42
+ declare function serializeTx(tx: TransparentTxV5): Uint8Array;
43
+ /** Parse raw hex / bytes. Accepts v5 transactions whose shielded bundles are empty; anything else is refused by name. */
44
+ declare function parseTx(raw: string | Uint8Array): TransparentTxV5;
45
+ /** `ZcashTxHash_` ‖ consensus branch id (LE) — the personalization of both the txid and the signature digest. */
46
+ declare function txHashPersonalization(consensusBranchId: number): Uint8Array;
47
+ declare function headerDigest(tx: TransparentTxV5): Uint8Array;
48
+ declare function prevoutsDigest(tx: TransparentTxV5): Uint8Array;
49
+ declare function sequenceDigest(tx: TransparentTxV5): Uint8Array;
50
+ declare function outputsDigest(tx: TransparentTxV5): Uint8Array;
51
+ /** T.2: hash of the three transparent digests; the hash of the empty string when there are no inputs AND no outputs. */
52
+ declare function transparentDigest(tx: TransparentTxV5): Uint8Array;
53
+ /** Non-malleable transaction id (ZIP-244 T.1 … T.4), internal byte order. */
54
+ declare function txidDigest(tx: TransparentTxV5): Uint8Array;
55
+ /** Transaction id as explorers display it (byte-reversed hex). */
56
+ declare function txid(tx: TransparentTxV5): string;
57
+ /**
58
+ * ZIP-244 S.2 transparent signature digest + S.1 … S.4 wrapper for SIGHASH_ALL
59
+ * over input `index`. `spent[i]` is the output input `i` spends (value and
60
+ * scriptPubKey are both committed to, so a lying transport cannot make us sign
61
+ * for a different amount).
62
+ */
63
+ declare function sighashAll(tx: TransparentTxV5, index: number, spent: SpentOutput[]): Uint8Array;
64
+ /** `<sig ‖ 0x01> <pubkey>` — the scriptSig of a P2PKH spend. */
65
+ declare function p2pkhScriptSig(derSignature: Uint8Array, publicKey: Uint8Array): Uint8Array;
66
+ /** Split a P2PKH scriptSig back into DER signature (hash type stripped) and public key; undefined when it is not one. */
67
+ declare function parseP2pkhScriptSig(scriptSig: Uint8Array): {
68
+ signature: Uint8Array;
69
+ hashType: number;
70
+ publicKey: Uint8Array;
71
+ } | undefined;
72
+
73
+ /** Default hard fee ceiling: 0.01 ZEC. */
74
+ declare const DEFAULT_MAX_FEE = 1000000n;
75
+ /** Why a spend was refused before signing. */
76
+ type UnsafeTransactionCode =
77
+ /** Fee above `maxFee`. */
78
+ 'fee-too-high'
79
+ /** Outputs exceed inputs. */
80
+ | 'outputs-exceed-inputs'
81
+ /** An output that is neither the requested recipient/amount nor our change. */
82
+ | 'unexpected-output'
83
+ /** The recipient output is missing or carries a different amount. */
84
+ | 'recipient-mismatch'
85
+ /** A change output pays an address that is not ours. */
86
+ | 'change-not-ours';
87
+ /** A transaction failed a hard safety check and was not signed / broadcast. */
88
+ declare class UnsafeTransactionError extends Error {
89
+ readonly code: UnsafeTransactionCode;
90
+ constructor(code: UnsafeTransactionCode, message: string);
91
+ }
92
+ /** What a description needs to tell recipient, change and unknown outputs apart. */
93
+ interface DescribeContext {
94
+ network: ZcashNetwork;
95
+ /** Our own address: outputs paying it are tagged `change`. */
96
+ ownAddress: string;
97
+ /** The spend the caller asked for. Outputs matching it are `recipient`; anything else is `unknown`. */
98
+ intended?: {
99
+ to: string;
100
+ value: bigint;
101
+ } | undefined;
102
+ maxFee?: bigint | undefined;
103
+ }
104
+ /** Describe a (signed or unsigned) transaction given the output every input spends. Pure: no network, no signing. */
105
+ declare function describeTransaction(tx: TransparentTxV5, spent: SpentOutput[], ctx: DescribeContext): ZcashTxDescription;
106
+ /**
107
+ * Hard checks run before signing and before broadcasting. Throws UnsafeTransactionError;
108
+ * never mutates. With `intended`, exactly one output must be the requested
109
+ * recipient/amount and every other output must be our change.
110
+ */
111
+ declare function assertSafe(desc: ZcashTxDescription, ctx: DescribeContext): void;
112
+
113
+ interface BlockbookVin {
114
+ txid?: string;
115
+ vout?: number;
116
+ n?: number;
117
+ isAddress?: boolean;
118
+ addresses?: string[];
119
+ value?: string;
120
+ }
121
+ interface BlockbookVout {
122
+ n: number;
123
+ isAddress?: boolean;
124
+ addresses?: string[];
125
+ value?: string;
126
+ hex?: string;
127
+ }
128
+ interface BlockbookTxDetails {
129
+ txid: string;
130
+ blockHeight: number;
131
+ confirmations: number;
132
+ blockTime?: number;
133
+ fees?: string;
134
+ hex?: string;
135
+ vin?: BlockbookVin[];
136
+ vout?: BlockbookVout[];
137
+ }
138
+ declare class ZcashBlockbookClient implements ZcashClient {
139
+ private readonly base;
140
+ private readonly headers;
141
+ private readonly fetchFn;
142
+ private readonly timeoutMs;
143
+ constructor(config: {
144
+ url: string;
145
+ headers?: Record<string, string>;
146
+ }, fetchFn?: typeof fetch, timeoutMs?: number);
147
+ connect(): Promise<void>;
148
+ close(): Promise<void>;
149
+ private get;
150
+ getBalance(address: string): Promise<{
151
+ confirmed: bigint;
152
+ unconfirmed: bigint;
153
+ }>;
154
+ listUnspent(address: string): Promise<Utxo[]>;
155
+ private static isTx;
156
+ getTransactionDetails(txid: string): Promise<BlockbookTxDetails | undefined>;
157
+ getTransaction(txid: string): Promise<string>;
158
+ getOutput(txid: string, vout: number): Promise<SpentOutput | undefined>;
159
+ getTransactionInfo(txid: string): Promise<ZcashTxInfo | undefined>;
160
+ broadcast(rawTx: string): Promise<string>;
161
+ getBlockHeight(): Promise<number>;
162
+ }
163
+
164
+ /**
165
+ * One client, or a failover client over the list: each call walks the list in
166
+ * order, `retries` extra rounds. A node's rejection of a broadcast (plain
167
+ * Error) is final — only transport failures (NetworkError) move on.
168
+ */
169
+ declare function createClient(config: ZcashConfig): ZcashClient | undefined;
170
+
171
+ /** Hash of a signed message (`Zcash Signed Message:` prefix, double SHA-256). */
172
+ declare function magicHash(message: string | Uint8Array): Uint8Array;
173
+ /** Encode `r‖s` + recovery id as a base64 signature (compressed-key header 31 + recovery). */
174
+ declare function encodeMessageSignature(rs: Uint8Array, recovery: number): string;
175
+ /** Sign through a {@link Signer} (`ecdsa-recoverable`, context `zcash-message`). */
176
+ declare function signMessageWith(message: string | Uint8Array, signer: Signer): Promise<string>;
177
+ /** Recover the compressed public key from a message signature, or undefined when malformed. */
178
+ declare function recoverMessagePublicKey(message: string | Uint8Array, signature: string): Uint8Array | undefined;
179
+
180
+ declare const MARGINAL_FEE = 5000n;
181
+ declare const GRACE_ACTIONS = 2;
182
+ /** Serialized size of one signed P2PKH input: prevout 36 + CompactSize 1 + scriptSig (1+73+1+33) + sequence 4. */
183
+ declare const P2PKH_INPUT_SIZE = 149;
184
+ /** Most inputs one spend may use. */
185
+ declare const MAX_UTXO_INPUTS = 200;
186
+ declare function logicalActions(inputSizes: readonly number[], outputSizes: readonly number[]): number;
187
+ /** The fee a transaction of this shape should pay (zatoshis). */
188
+ declare function conventionalFee(inputSizes: readonly number[], outputSizes: readonly number[]): bigint;
189
+ /** Transaction size estimate: v5 header 20 + counts 2 + inputs + outputs + 3 empty bundle counts. */
190
+ declare function estimateSize(inputs: number, outputSizes: readonly number[]): number;
191
+ /** A spend would need more inputs than allowed; consolidate the UTXOs first. */
192
+ declare class TooManyInputsError extends Error {
193
+ readonly maxInputs: number;
194
+ constructor(maxInputs: number);
195
+ }
196
+ /** Input to {@link selectCoins}. */
197
+ interface CoinSelectOptions {
198
+ utxos: Utxo[];
199
+ /** Zatoshis the recipient gets. */
200
+ target: bigint;
201
+ /** Serialized size of the recipient output. */
202
+ recipientOutputSize: number;
203
+ /** Serialized size of a change output to our own address. */
204
+ changeOutputSize: number;
205
+ changeDust?: bigint;
206
+ maxInputs?: number;
207
+ /** Caller-chosen fee (replaces the conventional fee; still has to be covered by the inputs). */
208
+ fee?: bigint;
209
+ }
210
+ /** UTXOs chosen for a spend, the ZIP-317 fee and the change. */
211
+ interface CoinSelection {
212
+ utxos: Utxo[];
213
+ fee: bigint;
214
+ /** The ZIP-317 fee for the chosen shape (equals `fee` unless the caller overrode it or change was folded in). */
215
+ conventionalFee: bigint;
216
+ /** Change back to us; 0n when folded into the fee. */
217
+ change: bigint;
218
+ /** True when change existed but fell below dust and became fee. */
219
+ changeFolded: boolean;
220
+ size: number;
221
+ }
222
+ /** UTXOs worth spending (each adds at most one logical action = 5000 zatoshis), largest first. */
223
+ declare function spendableUtxos(utxos: Utxo[]): Utxo[];
224
+ /**
225
+ * Pick UTXOs to fund `target` at the ZIP-317 fee; change below dust joins the fee.
226
+ *
227
+ * @throws `InsufficientFundsError` (core) when the UTXOs cannot cover target plus fee,
228
+ * `TooManyInputsError` above `maxInputs`.
229
+ */
230
+ declare function selectCoins(o: CoinSelectOptions): CoinSelection;
231
+ /** Sweep: every spendable input (largest first, capped), one output, no change. */
232
+ declare function selectAll(o: {
233
+ utxos: Utxo[];
234
+ outputSize: number;
235
+ maxInputs?: number;
236
+ fee?: bigint;
237
+ }): {
238
+ utxos: Utxo[];
239
+ fee: bigint;
240
+ amount: bigint;
241
+ size: number;
242
+ };
243
+
244
+ /** Transparent address type: pay-to-pubkey-hash (`t1…`) or pay-to-script-hash (`t3…`). */
245
+ type ScriptKind = 'p2pkh' | 'p2sh';
246
+ /** A transparent address decoded to its type and 20-byte hash. */
247
+ interface DecodedAddress {
248
+ kind: ScriptKind;
249
+ /** 20-byte hash (pubkey hash or script hash). */
250
+ hash: Uint8Array;
251
+ /** The scriptPubKey. */
252
+ script: Uint8Array;
253
+ }
254
+ /** Base58Check version prefix for a transparent address kind on a network (exported for tests / tooling). */
255
+ declare function addressPrefix(network: ZcashNetwork, kind: ScriptKind): readonly [number, number];
256
+ /** RIPEMD-160 of SHA-256, the hash inside a transparent address. */
257
+ declare function hash160(data: Uint8Array): Uint8Array;
258
+ /** OP_DUP OP_HASH160 <20> OP_EQUALVERIFY OP_CHECKSIG, or OP_HASH160 <20> OP_EQUAL. */
259
+ declare function scriptFor(kind: ScriptKind, hash: Uint8Array): Uint8Array;
260
+ /** Type of an output script; `unknown` for anything but p2pkh and p2sh. */
261
+ declare function scriptKind(script: Uint8Array): ScriptKind | 'unknown';
262
+ /** Transparent address of a 20-byte hash. */
263
+ declare function encodeAddress(kind: ScriptKind, hash: Uint8Array, network: ZcashNetwork): string;
264
+ /** Decode and validate a transparent address for `network`; throws a message that names the problem. */
265
+ declare function decodeAddress(address: string, network: ZcashNetwork): DecodedAddress;
266
+ /** Address for an output script, or undefined when the script has no address form. */
267
+ declare function addressFromScript(script: Uint8Array, network: ZcashNetwork): string | undefined;
268
+ /** P2PKH address of a compressed secp256k1 public key (what `m/44'/133'/0'/0/i` yields). */
269
+ declare function addressFromPublicKey(publicKey: Uint8Array, network?: ZcashNetwork): string;
270
+ /** Output size in bytes: 8 (value) + CompactSize + script. */
271
+ declare function outputSize(script: Uint8Array): number;
272
+ /** Below this an output is uneconomic to spend (Bitcoin Core's P2PKH dust floor; zatoshis). */
273
+ declare const DUST_LIMIT = 546n;
274
+
275
+ /** A coin selection for one spend, with the decoded recipient. */
276
+ interface SpendPlan extends CoinSelection {
277
+ /** Zatoshis the recipient gets (the requested value — never reduced). */
278
+ amount: bigint;
279
+ recipient: DecodedAddress;
280
+ }
281
+ /** Watch-only Zcash account: balances, quotes, receipts, message verification. No key. */
282
+ declare class WalletAccountReadOnlyZcash implements IWalletAccountReadOnly {
283
+ /** The transparent address. */
284
+ readonly address: string;
285
+ readonly chain: string;
286
+ /** The address's scriptPubKey. */
287
+ readonly scriptPubKey: Uint8Array;
288
+ /** Script type of the address. */
289
+ readonly scriptKind: DecodedAddress['kind'];
290
+ protected readonly _config: ZcashConfig;
291
+ protected readonly _client: ZcashClient | undefined;
292
+ protected readonly _network: ZcashNetwork;
293
+ constructor(address: string, config?: ZcashConfig);
294
+ protected requireClient(what: string): ZcashClient;
295
+ /** Fee ceiling in zatoshis: `ZcashConfig.maxFee` or the default. */
296
+ get maxFee(): bigint;
297
+ /** The transparent address. */
298
+ getAddress(): Promise<string>;
299
+ /** Confirmed plus incoming mempool value (the transports do not expose pending spends of our own outputs). */
300
+ getBalance(): Promise<bigint>;
301
+ /** Always throws: Zcash has no tokens. */
302
+ getTokenBalance(_token: string): Promise<bigint>;
303
+ /** Coin selection for a spend (ZIP-317 fee). Validates the recipient and the dust floor first. */
304
+ protected planSpend(spend: ZcashSpend): Promise<SpendPlan>;
305
+ /** ZIP-317 fee of a spend in zatoshis. */
306
+ quoteSendTransaction(tx: ZcashSpend): Promise<{
307
+ fee: bigint;
308
+ }>;
309
+ /** ZIP-317 fee of a transfer in zatoshis. */
310
+ quoteTransfer(o: ZcashTransferOptions): Promise<{
311
+ fee: bigint;
312
+ }>;
313
+ /** Everything spendable in ONE transaction to a single output, no change. */
314
+ getMaxSpendable(opts?: {
315
+ to?: string;
316
+ fee?: bigint | number;
317
+ }): Promise<ZcashMaxSpendableResult>;
318
+ /** Undefined until the transaction is mined. */
319
+ getTransactionReceipt(hash: string): Promise<ZcashReceipt | undefined>;
320
+ /** Recover the key from a Zcash message signature and compare its P2PKH address with ours. */
321
+ verify(message: string | Uint8Array, signature: string): Promise<boolean>;
322
+ /** Chain tip for lock time / expiry; undefined when the transport cannot tell. */
323
+ protected tipHeight(): Promise<number | undefined>;
324
+ }
325
+
326
+ /** t-address for a compressed public key. */
327
+ declare function addressFor(publicKey: Uint8Array, network?: ZcashNetwork): string;
328
+ /** ZIP-203 default: a transaction expires 40 blocks (~50 min) after it was built. */
329
+ declare const DEFAULT_EXPIRY_DELTA = 40;
330
+ interface Built {
331
+ tx: TransparentTxV5;
332
+ hex: string;
333
+ txid: string;
334
+ fee: bigint;
335
+ plan: SpendPlan;
336
+ desc: ZcashTxDescription;
337
+ }
338
+ /**
339
+ * Signing Zcash account — BIP-44 P2PKH at m/44'/133'/0'/0/i (t1…). The key never
340
+ * enters this package: every input is one `signer.sign(...)` call over the
341
+ * ZIP-244 signature digest computed here (`ecdsa`, DER-encoded + SIGHASH_ALL
342
+ * into the scriptSig); messages are `ecdsa-recoverable` over the Zcash magic hash.
343
+ *
344
+ * Every spend is resolved to a full description ("what you sign") and run through
345
+ * the hard safety checks (fee ceiling, recipient/amount exactness, change
346
+ * ownership) before signing AND before broadcast — also for caller-supplied raw hex.
347
+ */
348
+ declare class WalletAccountZcash extends WalletAccountReadOnlyZcash implements IWalletAccount {
349
+ /** UTXOs and the tip height come from the network before signing. */
350
+ readonly needsNetwork = true;
351
+ /** Derivation path, or `external` for an external signer. */
352
+ readonly path: string;
353
+ /** Compressed secp256k1 public key. */
354
+ readonly publicKey: Uint8Array;
355
+ /** The signer that holds the key. */
356
+ readonly signer: Signer;
357
+ private _disposed;
358
+ private _readOnly;
359
+ /** `publicKey` is the signer's compressed secp256k1 key (33 bytes); it is needed synchronously for the address. */
360
+ constructor(signer: Signer, publicKey: Uint8Array, path: string, config?: ZcashConfig);
361
+ /** Back-compat: wrap a raw derived key in a {@link LocalSigner} (the account takes ownership; it cannot derive). */
362
+ static fromPrivateKey(privateKey: Uint8Array, publicKey: Uint8Array, path: string, config?: ZcashConfig): WalletAccountZcash;
363
+ /** Account index for the standard m/44'/133'/0'/0/i path. */
364
+ get index(): number | undefined;
365
+ private live;
366
+ /** Zcash message signature (zcashd `signmessage` encoding), base64. */
367
+ sign(message: string | Uint8Array): Promise<string>;
368
+ private ctx;
369
+ /** Lock time + expiry + branch id from the tip (or the config override). */
370
+ private chainParams;
371
+ /** Sign every input through the signer; the scriptSig is `<DER ‖ 0x01> <pubkey>`. */
372
+ private signInputs;
373
+ protected buildSignedTransaction(spend: ZcashSpend): Promise<Built>;
374
+ private checkMax;
375
+ /** The outputs a raw transaction spends, fetched through the client (the wire format carries no values). */
376
+ private spentOutputs;
377
+ /** Describe a raw signed tx (needs the network for prevouts) and run the safety checks. */
378
+ private describeRaw;
379
+ /** "What you sign": the fully resolved spend (signed, NOT broadcast) or a caller's raw hex. */
380
+ describeTransaction(tx: ZcashTransaction): Promise<ZcashTxDescription>;
381
+ /** Sign without broadcasting. Returns the raw transaction hex. Raw hex input is returned unchanged. */
382
+ signTransaction(tx: ZcashTransaction): Promise<string>;
383
+ quoteSendTransaction(tx: ZcashTransaction): Promise<{
384
+ fee: bigint;
385
+ }>;
386
+ sendTransaction(tx: ZcashTransaction): Promise<TransferResult>;
387
+ /** Native ZEC only (`token` is rejected). Subject to `transferMaxFee`. */
388
+ transfer(o: ZcashTransferOptions): Promise<TransferResult>;
389
+ /** The same address as a {@link WalletAccountReadOnlyZcash}. */
390
+ toReadOnlyAccount(): IWalletAccountReadOnly;
391
+ dispose(): void;
392
+ }
393
+
394
+ /** SLIP-44 coin type: 133 for mainnet, 1 for testnet. */
395
+ declare const coinType: (network: ZcashNetwork) => 133 | 1;
396
+ /**
397
+ * One seed → Zcash transparent accounts at m/44'/133'/0'/0/i (BIP-44, the path
398
+ * Zashi, YWallet, Ledger and Trezor use for the transparent receiver) — t1… on
399
+ * mainnet, tm… on testnet. Paths may be relative to the purpose/coin prefix
400
+ * ("0'/0/i") or given in full.
401
+ *
402
+ * Built with a secp256k1 `Signer` instead of a seed, the manager wraps it:
403
+ * a derivable `SeedSigner` yields `getAccount(i)` children below its path; a
404
+ * leaf or external signer is `getAccount(0)`.
405
+ */
406
+ declare class WalletManagerZcash extends WalletManager<WalletAccountZcash, ZcashConfig> {
407
+ constructor(seedOrSigner: string | Uint8Array | Signer, config?: ZcashConfig);
408
+ /** `m/44'/133'` on mainnet (coin type 1 on testnet); account `i` is at `basePath/0'/0/i`. */
409
+ get basePath(): string;
410
+ getAccount(index?: number): Promise<WalletAccountZcash>;
411
+ getAccountByPath(path: string): Promise<WalletAccountZcash>;
412
+ private fromSigner;
413
+ /** A read-only account for any transparent address, with this manager's config. */
414
+ getReadOnlyAccount(address: string): WalletAccountReadOnlyZcash;
415
+ /** ZIP-317 has no fee market: every tier is the 5000-zatoshi marginal fee per logical action. */
416
+ getFeeRates(): Promise<FeeRates>;
417
+ }
418
+
419
+ export { type BlockbookTxDetails, type BlockbookVin, type BlockbookVout, CURRENT_BRANCH_ID, type CoinSelectOptions, type CoinSelection, DEFAULT_EXPIRY_DELTA, DEFAULT_MAX_FEE, DUST_LIMIT, type DecodedAddress, type DescribeContext, FINAL_SEQUENCE, GRACE_ACTIONS, MAINNET_UPGRADES, MARGINAL_FEE, MAX_SEQUENCE, MAX_UTXO_INPUTS, P2PKH_INPUT_SIZE, SIGHASH_ALL, type ScriptKind, type SpendPlan, SpentOutput, TX_VERSION_V5, TooManyInputsError, type TransparentTxV5, type TxInput, type TxOutput, type UnsafeTransactionCode, UnsafeTransactionError, Utxo, VERSION_GROUP_ID_V5, WalletAccountReadOnlyZcash, WalletAccountZcash, WalletManagerZcash, ZcashBlockbookClient, ZcashClient, ZcashConfig, ZcashMaxSpendableResult, ZcashNetwork, ZcashReceipt, ZcashSpend, ZcashTransaction, ZcashTransferOptions, ZcashTxDescription, ZcashTxInfo, addressFor, addressFromPublicKey, addressFromScript, addressPrefix, assertSafe, branchIdForHeight, coinType, conventionalFee, createClient, decodeAddress, WalletManagerZcash as default, describeTransaction, encodeAddress, encodeMessageSignature, estimateSize, hash160, headerDigest, logicalActions, magicHash, outputSize, outputsDigest, p2pkhScriptSig, parseP2pkhScriptSig, parseTx, prevoutsDigest, recoverMessagePublicKey, scriptFor, scriptKind, selectAll, selectCoins, sequenceDigest, serializeTx, sighashAll, signMessageWith, spendableUtxos, transparentDigest, txHashPersonalization, txid, txidDigest };