@babylonlabs-io/ts-sdk 0.27.0 → 0.28.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/{buildAndBroadcastRefund-BzYJv-Fv.js → buildAndBroadcastRefund-Cc4-L7gX.js} +32 -31
- package/dist/buildAndBroadcastRefund-Cc4-L7gX.js.map +1 -0
- package/dist/buildAndBroadcastRefund-OoaQaNqn.cjs +2 -0
- package/dist/buildAndBroadcastRefund-OoaQaNqn.cjs.map +1 -0
- package/dist/deriveVaultRoot-B4gnRbW_.cjs +2 -0
- package/dist/deriveVaultRoot-B4gnRbW_.cjs.map +1 -0
- package/dist/{context-CClNOyD3.js → deriveVaultRoot-DAMZDqg-.js} +495 -541
- package/dist/deriveVaultRoot-DAMZDqg-.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +55 -55
- package/dist/psbtInputFields-CB8hqjQ5.cjs +2 -0
- package/dist/psbtInputFields-CB8hqjQ5.cjs.map +1 -0
- package/dist/{psbtInputFields-C3dqKWjQ.js → psbtInputFields-DeTFSJOq.js} +70 -64
- package/dist/psbtInputFields-DeTFSJOq.js.map +1 -0
- package/dist/sha2-CPdTLk1u.js +280 -0
- package/dist/sha2-CPdTLk1u.js.map +1 -0
- package/dist/sha2-CsTynrfJ.cjs +2 -0
- package/dist/sha2-CsTynrfJ.cjs.map +1 -0
- package/dist/shared/index.cjs.map +1 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/wallets/index.d.ts +2 -1
- package/dist/shared/wallets/index.d.ts.map +1 -1
- package/dist/shared/wallets/interfaces/BitcoinWallet.d.ts +8 -0
- package/dist/shared/wallets/interfaces/BitcoinWallet.d.ts.map +1 -1
- package/dist/signing-BZigafm0.js.map +1 -1
- package/dist/signing-DHSXjhLM.cjs.map +1 -1
- package/dist/tbv/core/clients/index.cjs +1 -1
- package/dist/tbv/core/clients/index.js +2 -2
- package/dist/tbv/core/index.cjs +1 -1
- package/dist/tbv/core/index.js +52 -52
- package/dist/tbv/core/services/deposit/peginState.d.ts +1 -1
- package/dist/tbv/core/services/deposit/peginState.d.ts.map +1 -1
- package/dist/tbv/core/services/index.cjs +1 -1
- package/dist/tbv/core/services/index.js +1 -1
- package/dist/tbv/core/utils/index.cjs +1 -1
- package/dist/tbv/core/utils/index.js +1 -1
- package/dist/tbv/core/utils/utxo/reservation.d.ts +5 -0
- package/dist/tbv/core/utils/utxo/reservation.d.ts.map +1 -1
- package/dist/tbv/core/vault-secrets/__tests__/deriveVaultRoot.test.d.ts +13 -0
- package/dist/tbv/core/vault-secrets/__tests__/deriveVaultRoot.test.d.ts.map +1 -0
- package/dist/tbv/core/vault-secrets/context.d.ts +9 -0
- package/dist/tbv/core/vault-secrets/context.d.ts.map +1 -1
- package/dist/tbv/core/vault-secrets/deriveVaultRoot.d.ts +56 -0
- package/dist/tbv/core/vault-secrets/deriveVaultRoot.d.ts.map +1 -0
- package/dist/tbv/core/vault-secrets/expand.d.ts +18 -3
- package/dist/tbv/core/vault-secrets/expand.d.ts.map +1 -1
- package/dist/tbv/core/vault-secrets/index.d.ts +6 -3
- package/dist/tbv/core/vault-secrets/index.d.ts.map +1 -1
- package/dist/tbv/core/wots/blockDerivation.d.ts +20 -24
- package/dist/tbv/core/wots/blockDerivation.d.ts.map +1 -1
- package/dist/tbv/core/wots/errors.d.ts +3 -1
- package/dist/tbv/core/wots/errors.d.ts.map +1 -1
- package/dist/tbv/core/wots/index.d.ts +1 -2
- package/dist/tbv/core/wots/index.d.ts.map +1 -1
- package/dist/tbv/index.cjs +1 -1
- package/dist/tbv/index.js +52 -52
- package/dist/testing/MockBitcoinWallet.d.ts +9 -3
- package/dist/testing/MockBitcoinWallet.d.ts.map +1 -1
- package/dist/testing/index.cjs +1 -1
- package/dist/testing/index.cjs.map +1 -1
- package/dist/testing/index.js +65 -54
- package/dist/testing/index.js.map +1 -1
- package/dist/types-CQ86O7NX.js +650 -0
- package/dist/types-CQ86O7NX.js.map +1 -0
- package/dist/types-CcwaEPE1.cjs +2 -0
- package/dist/types-CcwaEPE1.cjs.map +1 -0
- package/dist/{vault-registry-reader-CpCOte7w.js → vault-registry-reader-CshEgmS0.js} +31 -30
- package/dist/{vault-registry-reader-CpCOte7w.js.map → vault-registry-reader-CshEgmS0.js.map} +1 -1
- package/dist/vault-registry-reader-_2BjSjoN.cjs +2 -0
- package/dist/{vault-registry-reader-BizmBSBV.cjs.map → vault-registry-reader-_2BjSjoN.cjs.map} +1 -1
- package/package.json +3 -3
- package/dist/buildAndBroadcastRefund-BEASMFsz.cjs +0 -2
- package/dist/buildAndBroadcastRefund-BEASMFsz.cjs.map +0 -1
- package/dist/buildAndBroadcastRefund-BzYJv-Fv.js.map +0 -1
- package/dist/context-BSdcD4J_.cjs +0 -2
- package/dist/context-BSdcD4J_.cjs.map +0 -1
- package/dist/context-CClNOyD3.js.map +0 -1
- package/dist/psbtInputFields-C3dqKWjQ.js.map +0 -1
- package/dist/psbtInputFields-DhGm77bP.cjs +0 -2
- package/dist/psbtInputFields-DhGm77bP.cjs.map +0 -1
- package/dist/sha2-1XZuToHP.cjs +0 -2
- package/dist/sha2-1XZuToHP.cjs.map +0 -1
- package/dist/sha2-ZzfZqQSw.js +0 -1123
- package/dist/sha2-ZzfZqQSw.js.map +0 -1
- package/dist/tbv/core/wots/deriveWotsPkHash.d.ts +0 -9
- package/dist/tbv/core/wots/deriveWotsPkHash.d.ts.map +0 -1
- package/dist/vault-registry-reader-BizmBSBV.cjs +0 -2
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
* from a single 32-byte root.
|
|
5
5
|
*
|
|
6
6
|
* Implements `derive-vault-secrets.md` §2.2 and Appendix A. The root is
|
|
7
|
-
* spec-opaque — callers produce it
|
|
8
|
-
*
|
|
9
|
-
* provenance-agnostic and only
|
|
7
|
+
* spec-opaque — callers produce it from `wallet.deriveContextHash` via
|
|
8
|
+
* {@link deriveVaultRoot} (canonical path), or from any other source
|
|
9
|
+
* that yields 32 bytes. The SDK is provenance-agnostic and only
|
|
10
|
+
* consumes the 32 bytes.
|
|
10
11
|
*
|
|
11
12
|
* @module tbv/core/vault-secrets
|
|
12
13
|
*/
|
|
13
14
|
export { expandAuthAnchor, expandHashlockSecret, expandWotsSeed, } from './expand';
|
|
14
15
|
export { buildFundingOutpointsCommitment, buildVaultContext } from './context';
|
|
15
16
|
export type { FundingOutpoint, VaultContextInput } from './context';
|
|
17
|
+
export { deriveVaultRoot, VAULT_APP_NAME } from './deriveVaultRoot';
|
|
18
|
+
export type { DeriveContextHashCapableWallet } from './deriveVaultRoot';
|
|
16
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/vault-secrets/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/vault-secrets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE/E,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEpE,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,33 +1,27 @@
|
|
|
1
|
-
import { WotsBlockPublicKey } from '../clients/vault-provider/types';
|
|
2
1
|
import { Hex } from 'viem';
|
|
2
|
+
import { WotsBlockPublicKey } from '../clients/vault-provider/types';
|
|
3
3
|
/**
|
|
4
|
-
* Derive
|
|
5
|
-
*
|
|
6
|
-
* Internally uses PBKDF2 with 2048 rounds of HMAC-SHA-512 and the passphrase
|
|
7
|
-
* `"mnemonic"` (no user password), per the BIP-39 specification.
|
|
4
|
+
* Derive deterministic WOTS block public keys from a per-vault 64-byte seed.
|
|
8
5
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* Derive deterministic WOTS block public keys for a specific vault.
|
|
6
|
+
* The seed must come from `expandWotsSeed(root, htlcVout)` (vault-secrets
|
|
7
|
+
* module). Per-vault uniqueness is encoded in `htlcVout`; this function
|
|
8
|
+
* only handles the chain derivation. Per-block 20-byte seeds are derived
|
|
9
|
+
* as `hash160(seed || blockIdx)` and fed into the standard Rust
|
|
10
|
+
* `babe::wots` chain logic.
|
|
15
11
|
*
|
|
16
|
-
*
|
|
17
|
-
* matching the Rust `Vec<babe::wots::PublicKey>` format expected by the
|
|
18
|
-
* vault provider's `submitDepositorWotsKey` RPC.
|
|
12
|
+
* The seed is zeroed in the `finally` block.
|
|
19
13
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
14
|
+
* @stability frozen — on-chain-binding. Per-block seed derivation,
|
|
15
|
+
* chain length, checksum-digit ordering, and terminal byte layout
|
|
16
|
+
* must match Rust `babe::wots` byte-for-byte. Any divergence rotates
|
|
17
|
+
* `depositorWotsPkHash` and breaks resume + on-chain verification
|
|
18
|
+
* for every existing vault.
|
|
22
19
|
*
|
|
23
|
-
* @param seed
|
|
24
|
-
* @param vaultId - Vault identifier / pegin tx hash (hex, with or without 0x prefix).
|
|
25
|
-
* @param depositorPk - Depositor's BTC public key (hex, with or without 0x prefix).
|
|
26
|
-
* @param appContractAddress - Application contract address.
|
|
20
|
+
* @param seed - 64-byte per-vault seed.
|
|
27
21
|
* @returns Array of 2 WOTS block public keys.
|
|
28
|
-
* @throws If seed
|
|
22
|
+
* @throws If `seed.length !== 64`.
|
|
29
23
|
*/
|
|
30
|
-
export declare function
|
|
24
|
+
export declare function deriveWotsBlocksFromSeed(seed: Uint8Array): Promise<WotsBlockPublicKey[]>;
|
|
31
25
|
/**
|
|
32
26
|
* Compute the keccak256 hash of WOTS block public keys.
|
|
33
27
|
*
|
|
@@ -39,8 +33,10 @@ export declare function deriveWotsBlockPublicKeys(seed: Uint8Array, vaultId: str
|
|
|
39
33
|
* The result is committed on-chain as `depositorWotsPkHash` so the vault
|
|
40
34
|
* provider can verify submitted WOTS public keys.
|
|
41
35
|
*
|
|
42
|
-
* @
|
|
43
|
-
*
|
|
36
|
+
* @stability frozen — on-chain-binding. Concatenation order of chain
|
|
37
|
+
* tips and the keccak256 input layout MUST match Rust
|
|
38
|
+
* `btc_vault::wots_public_keys_keccak256` byte-for-byte. Any change
|
|
39
|
+
* rotates the on-chain commitment and breaks every existing vault.
|
|
44
40
|
*/
|
|
45
41
|
export declare function computeWotsBlockPublicKeysHash(publicKeys: WotsBlockPublicKey[]): Hex;
|
|
46
42
|
//# sourceMappingURL=blockDerivation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockDerivation.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/wots/blockDerivation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"blockDerivation.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/wots/blockDerivation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,iCAAiC,CAAC;AAgJzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA+E/B;AAuBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,kBAAkB,EAAE,GAC/B,GAAG,CAmCL"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Check whether an error from the vault provider indicates that the
|
|
3
3
|
* submitted WOTS public key hash does not match the on-chain
|
|
4
|
-
* commitment. This signals that the wrong
|
|
4
|
+
* commitment. This signals that the wrong wallet is connected (its
|
|
5
|
+
* `deriveContextHash` produces a different vault root and therefore
|
|
6
|
+
* different WOTS keys).
|
|
5
7
|
*/
|
|
6
8
|
export declare function isWotsMismatchError(error: unknown): boolean;
|
|
7
9
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/wots/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/wots/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAc3D"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { deriveWotsPkHash } from './deriveWotsPkHash';
|
|
1
|
+
export { deriveWotsBlocksFromSeed, computeWotsBlockPublicKeysHash, } from './blockDerivation';
|
|
3
2
|
export { isWotsMismatchError } from './errors';
|
|
4
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/wots/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tbv/core/wots/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/tbv/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../challengeAssert-BM8m9gPM.cjs"),P=require("@babylonlabs-io/babylon-tbv-rust-wasm"),d=require("../payout-DP6KMFP1.cjs"),a=require("../bitcoin-DIN0OupO.cjs"),l=require("../signing-DHSXjhLM.cjs"),u=require("../validation-u8W7Lp2x.cjs"),t=require("../buildAndBroadcastRefund-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../challengeAssert-BM8m9gPM.cjs"),P=require("@babylonlabs-io/babylon-tbv-rust-wasm"),d=require("../payout-DP6KMFP1.cjs"),a=require("../bitcoin-DIN0OupO.cjs"),l=require("../signing-DHSXjhLM.cjs"),u=require("../validation-u8W7Lp2x.cjs"),t=require("../buildAndBroadcastRefund-OoaQaNqn.cjs"),o=require("../fundPeginTransaction-DaWoYCgO.cjs"),i=require("../psbtInputFields-CB8hqjQ5.cjs"),r=require("../deriveVaultRoot-B4gnRbW_.cjs"),e=require("../vault-registry-reader-_2BjSjoN.cjs"),s=require("../types-CcwaEPE1.cjs");exports.buildChallengeAssertPsbt=n.buildChallengeAssertPsbt;exports.buildDepositorPayoutPsbt=n.buildDepositorPayoutPsbt;exports.buildNoPayoutPsbt=n.buildNoPayoutPsbt;exports.buildPeginInputPsbt=n.buildPeginInputPsbt;exports.buildPeginTxFromFundedPrePegin=n.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=n.buildPrePeginPsbt;exports.computeNumLocalChallengers=n.computeNumLocalChallengers;exports.extractPeginInputSignature=n.extractPeginInputSignature;exports.finalizePeginInputPsbt=n.finalizePeginInputPsbt;Object.defineProperty(exports,"computeMinClaimValue",{enumerable:!0,get:()=>P.computeMinClaimValue});Object.defineProperty(exports,"deriveVaultId",{enumerable:!0,get:()=>P.deriveVaultId});exports.buildPayoutPsbt=d.buildPayoutPsbt;exports.buildRefundPsbt=d.buildRefundPsbt;exports.createPayoutScript=d.createPayoutScript;exports.extractPayoutSignature=d.extractPayoutSignature;exports.deriveNativeSegwitAddress=a.deriveNativeSegwitAddress;exports.deriveTaprootAddress=a.deriveTaprootAddress;exports.ensureHexPrefix=a.ensureHexPrefix;exports.formatSatoshisToBtc=a.formatSatoshisToBtc;exports.getNetwork=a.getNetwork;exports.hexToUint8Array=a.hexToUint8Array;exports.isAddressFromPublicKey=a.isAddressFromPublicKey;exports.isValidHex=a.isValidHex;exports.processPublicKeyToXOnly=a.processPublicKeyToXOnly;exports.stripHexPrefix=a.stripHexPrefix;exports.toXOnly=a.toXOnly;exports.uint8ArrayToHex=a.uint8ArrayToHex;exports.validateWalletPubkey=a.validateWalletPubkey;exports.ContractStatus=l.ContractStatus;exports.PeginAction=l.PeginAction;exports.canPerformAction=l.canPerformAction;exports.createTaprootScriptPathSignOptions=l.createTaprootScriptPathSignOptions;exports.getPeginProtocolState=l.getPeginProtocolState;exports.BITCOIN_ADDRESS_RE=u.BITCOIN_ADDRESS_RE;exports.HEX_RE=u.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=u.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=u.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=u.TXID_RE;exports.BIP68NotMatureError=t.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=t.ClaimerPegoutStatusValue;exports.PayoutManager=t.PayoutManager;exports.activateVault=t.activateVault;exports.buildAndBroadcastRefund=t.buildAndBroadcastRefund;exports.computeHashlock=t.computeHashlock;exports.isDepositAmountValid=t.isDepositAmountValid;exports.isPegoutTerminalStatus=t.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=t.isRecognizedPegoutStatus;exports.pollAndSignPayouts=t.pollAndSignPayouts;exports.signDepositorGraph=t.signDepositorGraph;exports.submitWotsPublicKey=t.submitWotsPublicKey;exports.validateDepositAmount=t.validateDepositAmount;exports.validateMultiVaultDepositInputs=t.validateMultiVaultDepositInputs;exports.validateProviderSelection=t.validateProviderSelection;exports.validateRemainingCapacity=t.validateRemainingCapacity;exports.validateSecretAgainstHashlock=t.validateSecretAgainstHashlock;exports.validateVaultAmounts=t.validateVaultAmounts;exports.validateVaultProviderPubkey=t.validateVaultProviderPubkey;exports.waitForPeginStatus=t.waitForPeginStatus;exports.BTC_DUST_SAT=o.BTC_DUST_SAT;exports.DUST_THRESHOLD=o.DUST_THRESHOLD;exports.FEE_SAFETY_MARGIN=o.FEE_SAFETY_MARGIN;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=o.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=o.MAX_NON_LEGACY_OUTPUT_SIZE;exports.P2TR_INPUT_SIZE=o.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=o.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=o.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=o.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=o.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=o.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=o.fundPeginTransaction;exports.parseUnfundedWasmTransaction=o.parseUnfundedWasmTransaction;exports.peginOutputCount=o.peginOutputCount;exports.rateBasedTxBufferFee=o.rateBasedTxBufferFee;exports.BitcoinScriptType=i.BitcoinScriptType;exports.UtxoNotAvailableError=i.UtxoNotAvailableError;exports.assertUtxosAvailable=i.assertUtxosAvailable;exports.calculateBtcTxHash=i.calculateBtcTxHash;exports.collectReservedUtxoRefs=i.collectReservedUtxoRefs;exports.extractInputsFromTransaction=i.extractInputsFromTransaction;exports.getDustThreshold=i.getDustThreshold;exports.getPsbtInputFields=i.getPsbtInputFields;exports.getScriptType=i.getScriptType;exports.selectUtxosForDeposit=i.selectUtxosForDeposit;exports.selectUtxosForPegin=i.selectUtxosForPegin;exports.shouldAddChangeOutput=i.shouldAddChangeOutput;exports.validateUtxosAvailable=i.validateUtxosAvailable;exports.CONTRACT_ERRORS=r.CONTRACT_ERRORS;exports.PeginManager=r.PeginManager;exports.VAULT_APP_NAME=r.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=r.buildFundingOutpointsCommitment;exports.buildVaultContext=r.buildVaultContext;exports.computeWotsBlockPublicKeysHash=r.computeWotsBlockPublicKeysHash;exports.deriveVaultRoot=r.deriveVaultRoot;exports.deriveWotsBlocksFromSeed=r.deriveWotsBlocksFromSeed;exports.expandAuthAnchor=r.expandAuthAnchor;exports.expandHashlockSecret=r.expandHashlockSecret;exports.expandWotsSeed=r.expandWotsSeed;exports.extractErrorData=r.extractErrorData;exports.getContractErrorMessage=r.getContractErrorMessage;exports.handleContractError=r.handleContractError;exports.isKnownContractError=r.isKnownContractError;exports.isWotsMismatchError=r.isWotsMismatchError;exports.ApplicationRegistryABI=e.ApplicationRegistryABI;exports.MEMPOOL_API_URLS=e.MEMPOOL_API_URLS;exports.ProtocolParamsABI=e.ProtocolParamsABI;exports.ServerIdentityError=e.ServerIdentityError;exports.VaultProviderRpcClient=e.VaultProviderRpcClient;exports.ViemProtocolParamsReader=e.ViemProtocolParamsReader;exports.ViemUniversalChallengerReader=e.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=e.ViemVaultKeeperReader;exports.ViemVaultRegistryReader=e.ViemVaultRegistryReader;exports.VpResponseValidationError=e.VpResponseValidationError;exports.VpTokenProvider=e.VpTokenProvider;exports.getAddressTxs=e.getAddressTxs;exports.getAddressUtxos=e.getAddressUtxos;exports.getMempoolApiUrl=e.getMempoolApiUrl;exports.getNetworkFees=e.getNetworkFees;exports.getTxHex=e.getTxHex;exports.getTxInfo=e.getTxInfo;exports.getUtxoInfo=e.getUtxoInfo;exports.pushTx=e.pushTx;exports.resolveProtocolAddresses=e.resolveProtocolAddresses;exports.validateRequestDepositorClaimerArtifactsResponse=e.validateRequestDepositorClaimerArtifactsResponse;exports.verifyServerIdentity=e.verifyServerIdentity;exports.BTCVaultRegistryABI=s.BTCVaultRegistryABI;exports.DaemonStatus=s.DaemonStatus;exports.JSON_RPC_ERROR_CODES=s.JSON_RPC_ERROR_CODES;exports.JsonRpcClient=s.JsonRpcClient;exports.JsonRpcError=s.JsonRpcError;exports.POST_WOTS_STATUSES=s.POST_WOTS_STATUSES;exports.PRE_DEPOSITOR_SIGNATURES_STATES=s.PRE_DEPOSITOR_SIGNATURES_STATES;exports.RpcErrorCode=s.RpcErrorCode;exports.VP_TERMINAL_STATUSES=s.VP_TERMINAL_STATUSES;exports.VP_TRANSIENT_STATUSES=s.VP_TRANSIENT_STATUSES;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/tbv/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { i as e, g as t, h as r, d as o, a as i, b as n, c as l, e as u, f as d } from "../challengeAssert-j2Vwqo0-.js";
|
|
2
2
|
import { computeMinClaimValue as c, deriveVaultId as T } from "@babylonlabs-io/babylon-tbv-rust-wasm";
|
|
3
|
-
import { a as S, b as
|
|
4
|
-
import { d as
|
|
5
|
-
import { C as F, P as B, a as D, c as
|
|
3
|
+
import { a as S, b as A, c as E, e as _ } from "../payout-B_fvQU3q.js";
|
|
4
|
+
import { d as R, a as m, e as x, f as b, g as I, h as f, i as v, b as C, p as U, s as O, t as V, u as h, v as y } from "../bitcoin-B-Y0DlqR.js";
|
|
5
|
+
import { C as F, P as B, a as D, c as M, g as H } from "../signing-BZigafm0.js";
|
|
6
6
|
import { B as k, H as W, K as X, M as K, T as w } from "../validation-CxqROCno.js";
|
|
7
|
-
import { B as Y, C as J, P as j, a as Z, m as z, h as q, i as Q, l as $, k as aa, p as sa, b as ea, s as ta, v as ra, g as oa, d as ia, c as na, j as la, e as ua, f as da, w as Pa } from "../buildAndBroadcastRefund-
|
|
8
|
-
import { B as Ta, D as pa, F as Sa, L as
|
|
9
|
-
import { B as Oa, U as
|
|
10
|
-
import { C as Ka, P as wa,
|
|
11
|
-
import { A as is, M as ns, P as ls, S as us, V as ds, k as Ps, l as cs, m as Ts, n as ps, h as Ss, j as
|
|
12
|
-
import { B as Os, D as
|
|
7
|
+
import { B as Y, C as J, P as j, a as Z, m as z, h as q, i as Q, l as $, k as aa, p as sa, b as ea, s as ta, v as ra, g as oa, d as ia, c as na, j as la, e as ua, f as da, w as Pa } from "../buildAndBroadcastRefund-Cc4-L7gX.js";
|
|
8
|
+
import { B as Ta, D as pa, F as Sa, L as Aa, M as Ea, P as _a, b as ga, a as Ra, S as ma, T as xa, W as ba, f as Ia, c as fa, p as va, r as Ca } from "../fundPeginTransaction-oV-dNJOU.js";
|
|
9
|
+
import { B as Oa, U as Va, a as ha, f as ya, c as Na, e as Fa, g as Ba, i as Da, h as Ma, s as Ha, b as La, d as ka, v as Wa } from "../psbtInputFields-DeTFSJOq.js";
|
|
10
|
+
import { C as Ka, P as wa, V as Ga, k as Ya, l as Ja, c as ja, m as Za, d as za, b as qa, f as Qa, j as $a, e as as, g as ss, h as es, i as ts, a as rs } from "../deriveVaultRoot-DAMZDqg-.js";
|
|
11
|
+
import { A as is, M as ns, P as ls, S as us, V as ds, k as Ps, l as cs, m as Ts, n as ps, h as Ss, j as As, g as Es, a as _s, b as gs, c as Rs, d as ms, e as xs, f as bs, p as Is, r as fs, v as vs, i as Cs } from "../vault-registry-reader-CshEgmS0.js";
|
|
12
|
+
import { B as Os, D as Vs, b as hs, J as ys, a as Ns, d as Fs, P as Bs, R as Ds, c as Ms, V as Hs } from "../types-CQ86O7NX.js";
|
|
13
13
|
export {
|
|
14
14
|
is as ApplicationRegistryABI,
|
|
15
15
|
Y as BIP68NotMatureError,
|
|
@@ -21,20 +21,20 @@ export {
|
|
|
21
21
|
J as ClaimerPegoutStatusValue,
|
|
22
22
|
F as ContractStatus,
|
|
23
23
|
pa as DUST_THRESHOLD,
|
|
24
|
-
|
|
24
|
+
Vs as DaemonStatus,
|
|
25
25
|
Sa as FEE_SAFETY_MARGIN,
|
|
26
26
|
W as HEX_RE,
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
hs as JSON_RPC_ERROR_CODES,
|
|
28
|
+
ys as JsonRpcClient,
|
|
29
29
|
Ns as JsonRpcError,
|
|
30
30
|
X as KNOWN_SCRIPT_PREFIXES,
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
Aa as LOW_RATE_ESTIMATION_ACCURACY_BUFFER,
|
|
32
|
+
Ea as MAX_NON_LEGACY_OUTPUT_SIZE,
|
|
33
33
|
K as MAX_REASONABLE_FEE_SATS,
|
|
34
34
|
ns as MEMPOOL_API_URLS,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
_a as P2TR_INPUT_SIZE,
|
|
36
|
+
ga as PEGIN_AUTH_ANCHOR_OUTPUTS,
|
|
37
|
+
Ra as PEGIN_FIXED_OUTPUTS,
|
|
38
38
|
Fs as POST_WOTS_STATUSES,
|
|
39
39
|
Bs as PRE_DEPOSITOR_SIGNATURES_STATES,
|
|
40
40
|
j as PayoutManager,
|
|
@@ -46,78 +46,78 @@ export {
|
|
|
46
46
|
us as ServerIdentityError,
|
|
47
47
|
w as TXID_RE,
|
|
48
48
|
xa as TX_BUFFER_SIZE_OVERHEAD,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
Ms as
|
|
49
|
+
Va as UtxoNotAvailableError,
|
|
50
|
+
Ga as VAULT_APP_NAME,
|
|
51
|
+
Ms as VP_TERMINAL_STATUSES,
|
|
52
|
+
Hs as VP_TRANSIENT_STATUSES,
|
|
52
53
|
ds as VaultProviderRpcClient,
|
|
53
54
|
Ps as ViemProtocolParamsReader,
|
|
54
55
|
cs as ViemUniversalChallengerReader,
|
|
55
56
|
Ts as ViemVaultKeeperReader,
|
|
56
57
|
ps as ViemVaultRegistryReader,
|
|
57
58
|
Ss as VpResponseValidationError,
|
|
58
|
-
|
|
59
|
+
As as VpTokenProvider,
|
|
59
60
|
ba as WALLET_RELAY_FEE_RATE_THRESHOLD,
|
|
60
61
|
Z as activateVault,
|
|
61
|
-
|
|
62
|
+
ha as assertUtxosAvailable,
|
|
62
63
|
z as buildAndBroadcastRefund,
|
|
63
64
|
e as buildChallengeAssertPsbt,
|
|
64
65
|
t as buildDepositorPayoutPsbt,
|
|
65
|
-
|
|
66
|
+
Ya as buildFundingOutpointsCommitment,
|
|
66
67
|
r as buildNoPayoutPsbt,
|
|
67
68
|
S as buildPayoutPsbt,
|
|
68
69
|
o as buildPeginInputPsbt,
|
|
69
70
|
i as buildPeginTxFromFundedPrePegin,
|
|
70
71
|
n as buildPrePeginPsbt,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
A as buildRefundPsbt,
|
|
73
|
+
Ja as buildVaultContext,
|
|
74
|
+
ya as calculateBtcTxHash,
|
|
74
75
|
D as canPerformAction,
|
|
75
76
|
Na as collectReservedUtxoRefs,
|
|
76
77
|
q as computeHashlock,
|
|
77
78
|
c as computeMinClaimValue,
|
|
78
79
|
l as computeNumLocalChallengers,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
ja as computeWotsBlockPublicKeysHash,
|
|
81
|
+
E as createPayoutScript,
|
|
82
|
+
M as createTaprootScriptPathSignOptions,
|
|
83
|
+
R as deriveNativeSegwitAddress,
|
|
83
84
|
m as deriveTaprootAddress,
|
|
84
85
|
T as deriveVaultId,
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
Za as deriveVaultRoot,
|
|
87
|
+
za as deriveWotsBlocksFromSeed,
|
|
87
88
|
x as ensureHexPrefix,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
qa as expandAuthAnchor,
|
|
90
|
+
Qa as expandHashlockSecret,
|
|
91
|
+
$a as expandWotsSeed,
|
|
92
|
+
as as extractErrorData,
|
|
92
93
|
Fa as extractInputsFromTransaction,
|
|
93
|
-
|
|
94
|
+
_ as extractPayoutSignature,
|
|
94
95
|
u as extractPeginInputSignature,
|
|
95
96
|
d as finalizePeginInputPsbt,
|
|
96
97
|
b as formatSatoshisToBtc,
|
|
97
98
|
Ia as fundPeginTransaction,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
Es as getAddressTxs,
|
|
100
|
+
_s as getAddressUtxos,
|
|
101
|
+
ss as getContractErrorMessage,
|
|
101
102
|
Ba as getDustThreshold,
|
|
102
|
-
|
|
103
|
+
gs as getMempoolApiUrl,
|
|
103
104
|
I as getNetwork,
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
Rs as getNetworkFees,
|
|
106
|
+
H as getPeginProtocolState,
|
|
106
107
|
Da as getPsbtInputFields,
|
|
107
|
-
|
|
108
|
+
Ma as getScriptType,
|
|
108
109
|
ms as getTxHex,
|
|
109
110
|
xs as getTxInfo,
|
|
110
111
|
bs as getUtxoInfo,
|
|
111
|
-
|
|
112
|
+
es as handleContractError,
|
|
112
113
|
f as hexToUint8Array,
|
|
113
114
|
v as isAddressFromPublicKey,
|
|
114
115
|
Q as isDepositAmountValid,
|
|
115
|
-
|
|
116
|
+
ts as isKnownContractError,
|
|
116
117
|
$ as isPegoutTerminalStatus,
|
|
117
118
|
aa as isRecognizedPegoutStatus,
|
|
118
119
|
C as isValidHex,
|
|
119
|
-
|
|
120
|
-
rs as mnemonicToWotsSeed,
|
|
120
|
+
rs as isWotsMismatchError,
|
|
121
121
|
fa as parseUnfundedWasmTransaction,
|
|
122
122
|
va as peginOutputCount,
|
|
123
123
|
sa as pollAndSignPayouts,
|
|
@@ -125,14 +125,14 @@ export {
|
|
|
125
125
|
Is as pushTx,
|
|
126
126
|
Ca as rateBasedTxBufferFee,
|
|
127
127
|
fs as resolveProtocolAddresses,
|
|
128
|
-
|
|
128
|
+
Ha as selectUtxosForDeposit,
|
|
129
129
|
La as selectUtxosForPegin,
|
|
130
130
|
ka as shouldAddChangeOutput,
|
|
131
131
|
ea as signDepositorGraph,
|
|
132
132
|
O as stripHexPrefix,
|
|
133
133
|
ta as submitWotsPublicKey,
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
V as toXOnly,
|
|
135
|
+
h as uint8ArrayToHex,
|
|
136
136
|
ra as validateDepositAmount,
|
|
137
137
|
oa as validateMultiVaultDepositInputs,
|
|
138
138
|
ia as validateProviderSelection,
|
|
@@ -142,7 +142,7 @@ export {
|
|
|
142
142
|
Wa as validateUtxosAvailable,
|
|
143
143
|
ua as validateVaultAmounts,
|
|
144
144
|
da as validateVaultProviderPubkey,
|
|
145
|
-
|
|
145
|
+
y as validateWalletPubkey,
|
|
146
146
|
Cs as verifyServerIdentity,
|
|
147
147
|
Pa as waitForPeginStatus
|
|
148
148
|
};
|
|
@@ -8,10 +8,15 @@ export interface MockBitcoinWalletConfig {
|
|
|
8
8
|
address?: string;
|
|
9
9
|
network?: BitcoinNetwork;
|
|
10
10
|
shouldFailSigning?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Optional override for `deriveContextHash`. When omitted the mock
|
|
13
|
+
* returns a deterministic 64-char lowercase hex string derived from
|
|
14
|
+
* `(appName, context)` so tests can assert pass-through wiring
|
|
15
|
+
* without pinning a specific value. Override to inject spec test
|
|
16
|
+
* vectors or to simulate failure modes.
|
|
17
|
+
*/
|
|
18
|
+
deriveContextHash?: (appName: string, context: string) => Promise<string>;
|
|
11
19
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Mock Bitcoin wallet for testing.
|
|
14
|
-
*/
|
|
15
20
|
export declare class MockBitcoinWallet implements BitcoinWallet {
|
|
16
21
|
private config;
|
|
17
22
|
constructor(config?: MockBitcoinWalletConfig);
|
|
@@ -21,6 +26,7 @@ export declare class MockBitcoinWallet implements BitcoinWallet {
|
|
|
21
26
|
signPsbts(psbtsHexes: string[], _options?: SignPsbtOptions[]): Promise<string[]>;
|
|
22
27
|
signMessage(message: string, type: "bip322-simple" | "ecdsa"): Promise<string>;
|
|
23
28
|
getNetwork(): Promise<BitcoinNetwork>;
|
|
29
|
+
deriveContextHash(appName: string, context: string): Promise<string>;
|
|
24
30
|
/** Updates configuration for testing different scenarios. */
|
|
25
31
|
updateConfig(updates: Partial<MockBitcoinWalletConfig>): void;
|
|
26
32
|
/** Resets to default configuration. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockBitcoinWallet.d.ts","sourceRoot":"","sources":["../../src/testing/MockBitcoinWallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MockBitcoinWallet.d.ts","sourceRoot":"","sources":["../../src/testing/MockBitcoinWallet.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAChB,MAAM,4CAA4C,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3E;AA6BD,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,MAAM,CAAoC;gBAEtC,MAAM,GAAE,uBAA4B;IAc1C,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc1C,SAAS,CACb,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,CAAC,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;IASd,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GAAG,OAAO,GAC9B,OAAO,CAAC,MAAM,CAAC;IAiBZ,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IAIrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1E,6DAA6D;IAC7D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;IAO7D,uCAAuC;IACvC,KAAK,IAAI,IAAI;CAUd"}
|
package/dist/testing/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var l=(i,t,e)=>t in i?d(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var o=(i,t,e)=>l(i,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../sha2-CsTynrfJ.cjs"),r=require("buffer"),u=require("../bitcoin-DIN0OupO.cjs"),q=require("../shared/index.cjs"),h=async(i,t)=>{const e=new TextEncoder,n=e.encode(i),s=e.encode(t),a=new Uint8Array(4+n.length+4+s.length),c=new DataView(a.buffer);return c.setUint32(0,n.length),a.set(n,4),c.setUint32(4+n.length,s.length),a.set(s,4+n.length+4),u.uint8ArrayToHex(g.sha256(a))};class f{constructor(t={}){o(this,"config");this.config={publicKeyHex:t.publicKeyHex||"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",address:t.address||"tb1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx6jks",network:t.network??q.BitcoinNetworks.SIGNET,shouldFailSigning:t.shouldFailSigning??!1,deriveContextHash:t.deriveContextHash??h}}async getPublicKeyHex(){return this.config.publicKeyHex}async getAddress(){return this.config.address}async signPsbt(t){if(this.config.shouldFailSigning)throw new Error("Mock signing failed");if(!t||t.length===0)throw new Error("Invalid PSBT: empty hex string");return t+"deadbeef"}async signPsbts(t,e){const n=[];for(const s of t){const a=await this.signPsbt(s);n.push(a)}return n}async signMessage(t,e){if(this.config.shouldFailSigning)throw new Error("Mock signing failed");if(!t||t.length===0)throw new Error("Invalid message: empty string");return r.Buffer.from(`mock-signature-${e}-${t}-${this.config.publicKeyHex}`).toString("base64")}async getNetwork(){return this.config.network}async deriveContextHash(t,e){return this.config.deriveContextHash(t,e)}updateConfig(t){this.config={...this.config,...t}}reset(){this.config={publicKeyHex:"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",address:"tb1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx6jks",network:q.BitcoinNetworks.SIGNET,shouldFailSigning:!1,deriveContextHash:h}}}class b{constructor(t={}){o(this,"account");o(this,"chain");o(this,"shouldFailOperations");o(this,"transactionDelay");o(this,"nonce",0);this.account={address:t.address||"0x742d35cc6634c0532925a3b844bc9e7595f0beb0"},this.chain={id:t.chainId??11155111},this.shouldFailOperations=t.shouldFailOperations??!1,this.transactionDelay=t.transactionDelay??0,this.signMessage=this.signMessage.bind(this),this.sendTransaction=this.sendTransaction.bind(this)}async signMessage(t){const e=t.message,n=t.account||this.account.address;if(this.shouldFailOperations)throw new Error("Mock signing failed");if(!e||e.length===0)throw new Error("Invalid message: empty string");const s=`personal_sign:${e}-${n}-${this.chain.id}`;return`0x${r.Buffer.from(s).toString("hex").slice(0,130).padEnd(130,"0")}`}async sendTransaction(t){var s;if(this.shouldFailOperations)throw new Error("Mock transaction failed");if(!t.to)throw new Error("Invalid transaction: missing 'to' address");this.transactionDelay>0&&await new Promise(a=>setTimeout(a,this.transactionDelay)),this.nonce++;const e=JSON.stringify({from:this.account.address,to:t.to,value:((s=t.value)==null?void 0:s.toString())||"0",nonce:this.nonce,chainId:this.chain.id});return`0x${r.Buffer.from(e).toString("hex").slice(0,64).padEnd(64,"0")}`}updateConfig(t){t.address!==void 0&&(this.account.address=t.address),t.chainId!==void 0&&(this.chain.id=t.chainId),t.shouldFailOperations!==void 0&&(this.shouldFailOperations=t.shouldFailOperations),t.transactionDelay!==void 0&&(this.transactionDelay=t.transactionDelay)}reset(){this.account.address="0x742d35cc6634c0532925a3b844bc9e7595f0beb0",this.chain.id=11155111,this.shouldFailOperations=!1,this.transactionDelay=0,this.nonce=0}getCurrentNonce(){return this.nonce}}exports.MockBitcoinWallet=f;exports.MockEthereumWallet=b;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/testing/MockBitcoinWallet.ts","../../src/testing/MockEthereumWallet.ts"],"sourcesContent":["import { Buffer } from \"buffer\";\n\nimport { BitcoinNetworks, type BitcoinNetwork } from \"../shared/wallets/interfaces\";\nimport type {\n BitcoinWallet,\n SignPsbtOptions,\n} from \"../shared/wallets/interfaces/BitcoinWallet\";\n\n/**\n * Configuration for MockBitcoinWallet.\n */\nexport interface MockBitcoinWalletConfig {\n publicKeyHex?: string;\n address?: string;\n network?: BitcoinNetwork;\n shouldFailSigning?: boolean;\n}\n\n/**\n * Mock Bitcoin wallet for testing.\n */\nexport class MockBitcoinWallet implements BitcoinWallet {\n private config: Required<MockBitcoinWalletConfig>;\n\n constructor(config: MockBitcoinWalletConfig = {}) {\n this.config = {\n publicKeyHex:\n config.publicKeyHex ||\n \"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2\",\n address:\n config.address ||\n \"tb1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx6jks\",\n network: config.network ?? BitcoinNetworks.SIGNET,\n shouldFailSigning: config.shouldFailSigning ?? false,\n };\n }\n\n async getPublicKeyHex(): Promise<string> {\n return this.config.publicKeyHex;\n }\n\n async getAddress(): Promise<string> {\n return this.config.address;\n }\n\n async signPsbt(psbtHex: string): Promise<string> {\n if (this.config.shouldFailSigning) {\n throw new Error(\"Mock signing failed\");\n }\n\n if (!psbtHex || psbtHex.length === 0) {\n throw new Error(\"Invalid PSBT: empty hex string\");\n }\n\n // In a real implementation, this would actually sign the PSBT\n // For the mock, we just return the input with a mock signature appended\n return psbtHex + \"deadbeef\";\n }\n\n async signPsbts(\n psbtsHexes: string[],\n _options?: SignPsbtOptions[],\n ): Promise<string[]> {\n const signedPsbts: string[] = [];\n for (const psbtHex of psbtsHexes) {\n const signedPsbt = await this.signPsbt(psbtHex);\n signedPsbts.push(signedPsbt);\n }\n return signedPsbts;\n }\n\n async signMessage(\n message: string,\n type: \"bip322-simple\" | \"ecdsa\",\n ): Promise<string> {\n if (this.config.shouldFailSigning) {\n throw new Error(\"Mock signing failed\");\n }\n\n if (!message || message.length === 0) {\n throw new Error(\"Invalid message: empty string\");\n }\n\n // In a real implementation, this would create a proper signature\n // For the mock, we return a base64-like mock signature\n const mockSignature = Buffer.from(\n `mock-signature-${type}-${message}-${this.config.publicKeyHex}`,\n ).toString(\"base64\");\n return mockSignature;\n }\n\n async getNetwork(): Promise<BitcoinNetwork> {\n return this.config.network;\n }\n\n /** Updates configuration for testing different scenarios. */\n updateConfig(updates: Partial<MockBitcoinWalletConfig>): void {\n this.config = {\n ...this.config,\n ...updates,\n };\n }\n\n /** Resets to default configuration. */\n reset(): void {\n this.config = {\n publicKeyHex:\n \"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2\",\n address: \"tb1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx6jks\",\n network: BitcoinNetworks.SIGNET,\n shouldFailSigning: false,\n };\n }\n}\n","import { Buffer } from \"buffer\";\nimport type { Address, Hex } from \"viem\";\n\n/**\n * Configuration for MockEthereumWallet.\n */\nexport interface MockEthereumWalletConfig {\n address?: Address;\n chainId?: number;\n shouldFailOperations?: boolean;\n transactionDelay?: number;\n}\n\n/**\n * Mock Ethereum wallet for testing.\n *\n * Provides the subset of viem's WalletClient methods used by the SDK.\n * Can be passed to functions expecting a WalletClient for testing purposes.\n */\nexport class MockEthereumWallet {\n // Public properties matching viem's WalletClient structure\n account: { address: Address };\n chain: { id: number };\n\n private shouldFailOperations: boolean;\n private transactionDelay: number;\n private nonce: number = 0;\n\n constructor(config: MockEthereumWalletConfig = {}) {\n // Use lowercase addresses to avoid EIP-55 checksum validation issues\n this.account = {\n address:\n config.address ||\n (\"0x742d35cc6634c0532925a3b844bc9e7595f0beb0\" as Address),\n };\n\n this.chain = {\n id: config.chainId ?? 11155111, // Sepolia by default\n };\n\n this.shouldFailOperations = config.shouldFailOperations ?? false;\n this.transactionDelay = config.transactionDelay ?? 0;\n\n // Bind methods to preserve 'this' context when called\n this.signMessage = this.signMessage.bind(this);\n this.sendTransaction = this.sendTransaction.bind(this);\n }\n\n async signMessage(args: { message: string; account?: Address }): Promise<Hex> {\n const message = args.message;\n const account = args.account || this.account.address;\n\n if (this.shouldFailOperations) {\n throw new Error(\"Mock signing failed\");\n }\n\n if (!message || message.length === 0) {\n throw new Error(\"Invalid message: empty string\");\n }\n\n // Generate a deterministic mock signature\n const signatureData = `personal_sign:${message}-${account}-${this.chain.id}`;\n const signature = `0x${Buffer.from(signatureData)\n .toString(\"hex\")\n .slice(0, 130)\n .padEnd(130, \"0\")}` as Hex;\n return signature;\n }\n\n async sendTransaction(tx: {\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n account?: { address: Address };\n chain?: { id: number };\n }): Promise<Hex> {\n if (this.shouldFailOperations) {\n throw new Error(\"Mock transaction failed\");\n }\n\n if (!tx.to) {\n throw new Error(\"Invalid transaction: missing 'to' address\");\n }\n\n // Simulate network delay if configured\n if (this.transactionDelay > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.transactionDelay),\n );\n }\n\n // Generate a deterministic mock transaction hash\n this.nonce++;\n const txData = JSON.stringify({\n from: this.account.address,\n to: tx.to,\n value: tx.value?.toString() || \"0\",\n nonce: this.nonce,\n chainId: this.chain.id,\n });\n\n const hash = `0x${Buffer.from(txData)\n .toString(\"hex\")\n .slice(0, 64)\n .padEnd(64, \"0\")}` as Hex;\n return hash;\n }\n\n /** Updates configuration for testing different scenarios. */\n updateConfig(updates: Partial<MockEthereumWalletConfig>): void {\n if (updates.address !== undefined) {\n this.account.address = updates.address;\n }\n if (updates.chainId !== undefined) {\n this.chain.id = updates.chainId;\n }\n if (updates.shouldFailOperations !== undefined) {\n this.shouldFailOperations = updates.shouldFailOperations;\n }\n if (updates.transactionDelay !== undefined) {\n this.transactionDelay = updates.transactionDelay;\n }\n }\n\n /** Resets to default configuration and nonce. */\n reset(): void {\n this.account.address =\n \"0x742d35cc6634c0532925a3b844bc9e7595f0beb0\" as Address;\n this.chain.id = 11155111;\n this.shouldFailOperations = false;\n this.transactionDelay = 0;\n this.nonce = 0;\n }\n\n /** Returns current nonce for testing. */\n getCurrentNonce(): number {\n return this.nonce;\n }\n}\n"],"names":["MockBitcoinWallet","config","__publicField","BitcoinNetworks","psbtHex","psbtsHexes","_options","signedPsbts","signedPsbt","message","type","Buffer","updates","MockEthereumWallet","args","account","signatureData","tx","resolve","txData","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/testing/MockBitcoinWallet.ts","../../src/testing/MockEthereumWallet.ts"],"sourcesContent":["import { sha256 } from \"@noble/hashes/sha2.js\";\nimport { Buffer } from \"buffer\";\n\nimport { BitcoinNetworks, type BitcoinNetwork } from \"../shared/wallets/interfaces\";\nimport type {\n BitcoinWallet,\n SignPsbtOptions,\n} from \"../shared/wallets/interfaces/BitcoinWallet\";\nimport { uint8ArrayToHex } from \"../tbv/core/primitives/utils/bitcoin\";\n\n/**\n * Configuration for MockBitcoinWallet.\n */\nexport interface MockBitcoinWalletConfig {\n publicKeyHex?: string;\n address?: string;\n network?: BitcoinNetwork;\n shouldFailSigning?: boolean;\n /**\n * Optional override for `deriveContextHash`. When omitted the mock\n * returns a deterministic 64-char lowercase hex string derived from\n * `(appName, context)` so tests can assert pass-through wiring\n * without pinning a specific value. Override to inject spec test\n * vectors or to simulate failure modes.\n */\n deriveContextHash?: (appName: string, context: string) => Promise<string>;\n}\n\n/**\n * Mock Bitcoin wallet for testing.\n */\n/**\n * Default `deriveContextHash` implementation: deterministic and\n * collision-resistant via SHA-256, so tests that assert pass-through\n * wiring (different `(appName, context)` → different output) hold\n * without flakes. Domain-separates the two inputs by length-prefixing\n * each as `len(name) || name || len(ctx) || ctx`, preventing\n * `(\"ab\", \"cd\")` from colliding with `(\"abc\", \"d\")`.\n */\nconst defaultDeriveContextHash = async (\n appName: string,\n context: string,\n): Promise<string> => {\n const enc = new TextEncoder();\n const nameBytes = enc.encode(appName);\n const ctxBytes = enc.encode(context);\n const buf = new Uint8Array(4 + nameBytes.length + 4 + ctxBytes.length);\n const view = new DataView(buf.buffer);\n view.setUint32(0, nameBytes.length);\n buf.set(nameBytes, 4);\n view.setUint32(4 + nameBytes.length, ctxBytes.length);\n buf.set(ctxBytes, 4 + nameBytes.length + 4);\n return uint8ArrayToHex(sha256(buf));\n};\n\nexport class MockBitcoinWallet implements BitcoinWallet {\n private config: Required<MockBitcoinWalletConfig>;\n\n constructor(config: MockBitcoinWalletConfig = {}) {\n this.config = {\n publicKeyHex:\n config.publicKeyHex ||\n \"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2\",\n address:\n config.address ||\n \"tb1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx6jks\",\n network: config.network ?? BitcoinNetworks.SIGNET,\n shouldFailSigning: config.shouldFailSigning ?? false,\n deriveContextHash: config.deriveContextHash ?? defaultDeriveContextHash,\n };\n }\n\n async getPublicKeyHex(): Promise<string> {\n return this.config.publicKeyHex;\n }\n\n async getAddress(): Promise<string> {\n return this.config.address;\n }\n\n async signPsbt(psbtHex: string): Promise<string> {\n if (this.config.shouldFailSigning) {\n throw new Error(\"Mock signing failed\");\n }\n\n if (!psbtHex || psbtHex.length === 0) {\n throw new Error(\"Invalid PSBT: empty hex string\");\n }\n\n // In a real implementation, this would actually sign the PSBT\n // For the mock, we just return the input with a mock signature appended\n return psbtHex + \"deadbeef\";\n }\n\n async signPsbts(\n psbtsHexes: string[],\n _options?: SignPsbtOptions[],\n ): Promise<string[]> {\n const signedPsbts: string[] = [];\n for (const psbtHex of psbtsHexes) {\n const signedPsbt = await this.signPsbt(psbtHex);\n signedPsbts.push(signedPsbt);\n }\n return signedPsbts;\n }\n\n async signMessage(\n message: string,\n type: \"bip322-simple\" | \"ecdsa\",\n ): Promise<string> {\n if (this.config.shouldFailSigning) {\n throw new Error(\"Mock signing failed\");\n }\n\n if (!message || message.length === 0) {\n throw new Error(\"Invalid message: empty string\");\n }\n\n // In a real implementation, this would create a proper signature\n // For the mock, we return a base64-like mock signature\n const mockSignature = Buffer.from(\n `mock-signature-${type}-${message}-${this.config.publicKeyHex}`,\n ).toString(\"base64\");\n return mockSignature;\n }\n\n async getNetwork(): Promise<BitcoinNetwork> {\n return this.config.network;\n }\n\n async deriveContextHash(appName: string, context: string): Promise<string> {\n return this.config.deriveContextHash(appName, context);\n }\n\n /** Updates configuration for testing different scenarios. */\n updateConfig(updates: Partial<MockBitcoinWalletConfig>): void {\n this.config = {\n ...this.config,\n ...updates,\n };\n }\n\n /** Resets to default configuration. */\n reset(): void {\n this.config = {\n publicKeyHex:\n \"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2\",\n address: \"tb1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx6jks\",\n network: BitcoinNetworks.SIGNET,\n shouldFailSigning: false,\n deriveContextHash: defaultDeriveContextHash,\n };\n }\n}\n","import { Buffer } from \"buffer\";\nimport type { Address, Hex } from \"viem\";\n\n/**\n * Configuration for MockEthereumWallet.\n */\nexport interface MockEthereumWalletConfig {\n address?: Address;\n chainId?: number;\n shouldFailOperations?: boolean;\n transactionDelay?: number;\n}\n\n/**\n * Mock Ethereum wallet for testing.\n *\n * Provides the subset of viem's WalletClient methods used by the SDK.\n * Can be passed to functions expecting a WalletClient for testing purposes.\n */\nexport class MockEthereumWallet {\n // Public properties matching viem's WalletClient structure\n account: { address: Address };\n chain: { id: number };\n\n private shouldFailOperations: boolean;\n private transactionDelay: number;\n private nonce: number = 0;\n\n constructor(config: MockEthereumWalletConfig = {}) {\n // Use lowercase addresses to avoid EIP-55 checksum validation issues\n this.account = {\n address:\n config.address ||\n (\"0x742d35cc6634c0532925a3b844bc9e7595f0beb0\" as Address),\n };\n\n this.chain = {\n id: config.chainId ?? 11155111, // Sepolia by default\n };\n\n this.shouldFailOperations = config.shouldFailOperations ?? false;\n this.transactionDelay = config.transactionDelay ?? 0;\n\n // Bind methods to preserve 'this' context when called\n this.signMessage = this.signMessage.bind(this);\n this.sendTransaction = this.sendTransaction.bind(this);\n }\n\n async signMessage(args: { message: string; account?: Address }): Promise<Hex> {\n const message = args.message;\n const account = args.account || this.account.address;\n\n if (this.shouldFailOperations) {\n throw new Error(\"Mock signing failed\");\n }\n\n if (!message || message.length === 0) {\n throw new Error(\"Invalid message: empty string\");\n }\n\n // Generate a deterministic mock signature\n const signatureData = `personal_sign:${message}-${account}-${this.chain.id}`;\n const signature = `0x${Buffer.from(signatureData)\n .toString(\"hex\")\n .slice(0, 130)\n .padEnd(130, \"0\")}` as Hex;\n return signature;\n }\n\n async sendTransaction(tx: {\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n account?: { address: Address };\n chain?: { id: number };\n }): Promise<Hex> {\n if (this.shouldFailOperations) {\n throw new Error(\"Mock transaction failed\");\n }\n\n if (!tx.to) {\n throw new Error(\"Invalid transaction: missing 'to' address\");\n }\n\n // Simulate network delay if configured\n if (this.transactionDelay > 0) {\n await new Promise((resolve) =>\n setTimeout(resolve, this.transactionDelay),\n );\n }\n\n // Generate a deterministic mock transaction hash\n this.nonce++;\n const txData = JSON.stringify({\n from: this.account.address,\n to: tx.to,\n value: tx.value?.toString() || \"0\",\n nonce: this.nonce,\n chainId: this.chain.id,\n });\n\n const hash = `0x${Buffer.from(txData)\n .toString(\"hex\")\n .slice(0, 64)\n .padEnd(64, \"0\")}` as Hex;\n return hash;\n }\n\n /** Updates configuration for testing different scenarios. */\n updateConfig(updates: Partial<MockEthereumWalletConfig>): void {\n if (updates.address !== undefined) {\n this.account.address = updates.address;\n }\n if (updates.chainId !== undefined) {\n this.chain.id = updates.chainId;\n }\n if (updates.shouldFailOperations !== undefined) {\n this.shouldFailOperations = updates.shouldFailOperations;\n }\n if (updates.transactionDelay !== undefined) {\n this.transactionDelay = updates.transactionDelay;\n }\n }\n\n /** Resets to default configuration and nonce. */\n reset(): void {\n this.account.address =\n \"0x742d35cc6634c0532925a3b844bc9e7595f0beb0\" as Address;\n this.chain.id = 11155111;\n this.shouldFailOperations = false;\n this.transactionDelay = 0;\n this.nonce = 0;\n }\n\n /** Returns current nonce for testing. */\n getCurrentNonce(): number {\n return this.nonce;\n }\n}\n"],"names":["defaultDeriveContextHash","appName","context","enc","nameBytes","ctxBytes","buf","view","uint8ArrayToHex","sha256","MockBitcoinWallet","config","__publicField","BitcoinNetworks","psbtHex","psbtsHexes","_options","signedPsbts","signedPsbt","message","type","Buffer","updates","MockEthereumWallet","args","account","signatureData","tx","resolve","txData","_a"],"mappings":"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"}
|