@babylonlabs-io/ts-sdk 0.48.5 → 0.49.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.
Files changed (46) hide show
  1. package/dist/buildAndBroadcastRefund-Bmz9WJuN.js +1011 -0
  2. package/dist/{buildAndBroadcastRefund-o9Byvkut.js.map → buildAndBroadcastRefund-Bmz9WJuN.js.map} +1 -1
  3. package/dist/buildAndBroadcastRefund-ob1n2iB3.cjs +2 -0
  4. package/dist/{buildAndBroadcastRefund-BOtxUi05.cjs.map → buildAndBroadcastRefund-ob1n2iB3.cjs.map} +1 -1
  5. package/dist/index.cjs +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/{primeVpAuth-CZsFLrHX.js → primeVpAuth-BdrwraAe.js} +767 -381
  8. package/dist/primeVpAuth-BdrwraAe.js.map +1 -0
  9. package/dist/primeVpAuth-Brl_bnBH.cjs +2 -0
  10. package/dist/primeVpAuth-Brl_bnBH.cjs.map +1 -0
  11. package/dist/tbv/core/clients/index.cjs +1 -1
  12. package/dist/tbv/core/clients/index.js +1 -1
  13. package/dist/tbv/core/clients/vault-provider/auth/__tests__/cborDecode.test.d.ts +2 -0
  14. package/dist/tbv/core/clients/vault-provider/auth/__tests__/cborDecode.test.d.ts.map +1 -0
  15. package/dist/tbv/core/clients/vault-provider/auth/__tests__/goldenVectors.d.ts +14 -0
  16. package/dist/tbv/core/clients/vault-provider/auth/__tests__/goldenVectors.d.ts.map +1 -1
  17. package/dist/tbv/core/clients/vault-provider/auth/__tests__/mintTestCwt.d.ts +43 -0
  18. package/dist/tbv/core/clients/vault-provider/auth/__tests__/mintTestCwt.d.ts.map +1 -0
  19. package/dist/tbv/core/clients/vault-provider/auth/__tests__/verifyDepositorCwt.test.d.ts +2 -0
  20. package/dist/tbv/core/clients/vault-provider/auth/__tests__/verifyDepositorCwt.test.d.ts.map +1 -0
  21. package/dist/tbv/core/clients/vault-provider/auth/cborDecode.d.ts +80 -0
  22. package/dist/tbv/core/clients/vault-provider/auth/cborDecode.d.ts.map +1 -0
  23. package/dist/tbv/core/clients/vault-provider/auth/createAuthenticatedVpClient.d.ts +5 -0
  24. package/dist/tbv/core/clients/vault-provider/auth/createAuthenticatedVpClient.d.ts.map +1 -1
  25. package/dist/tbv/core/clients/vault-provider/auth/primeVpAuth.d.ts +5 -0
  26. package/dist/tbv/core/clients/vault-provider/auth/primeVpAuth.d.ts.map +1 -1
  27. package/dist/tbv/core/clients/vault-provider/auth/tokenProvider.d.ts +8 -0
  28. package/dist/tbv/core/clients/vault-provider/auth/tokenProvider.d.ts.map +1 -1
  29. package/dist/tbv/core/clients/vault-provider/auth/tokenRegistry.d.ts +2 -0
  30. package/dist/tbv/core/clients/vault-provider/auth/tokenRegistry.d.ts.map +1 -1
  31. package/dist/tbv/core/clients/vault-provider/auth/verifyDepositorCwt.d.ts +80 -0
  32. package/dist/tbv/core/clients/vault-provider/auth/verifyDepositorCwt.d.ts.map +1 -0
  33. package/dist/tbv/core/index.cjs +1 -1
  34. package/dist/tbv/core/index.js +2 -2
  35. package/dist/tbv/core/services/index.cjs +1 -1
  36. package/dist/tbv/core/services/index.js +1 -1
  37. package/dist/tbv/core/services/refund/buildAndBroadcastRefund.d.ts +8 -22
  38. package/dist/tbv/core/services/refund/buildAndBroadcastRefund.d.ts.map +1 -1
  39. package/dist/tbv/index.cjs +1 -1
  40. package/dist/tbv/index.js +2 -2
  41. package/package.json +1 -1
  42. package/dist/buildAndBroadcastRefund-BOtxUi05.cjs +0 -2
  43. package/dist/buildAndBroadcastRefund-o9Byvkut.js +0 -1029
  44. package/dist/primeVpAuth-CZsFLrHX.js.map +0 -1
  45. package/dist/primeVpAuth-DhbTaCKm.cjs +0 -2
  46. package/dist/primeVpAuth-DhbTaCKm.cjs.map +0 -1
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Minimal CBOR decoder — the read-side counterpart to {@link ./cbor}.
3
+ *
4
+ * Decodes only the subset needed to verify a vault-provider CWT bearer
5
+ * token (RFC 8392) wrapped in a COSE Sign1 envelope (RFC 8152): tagged
6
+ * values, definite-length arrays and maps, byte/text strings, and
7
+ * unsigned/negative integers. Indefinite-length items, floats, and
8
+ * big-number tags are intentionally rejected — the issuer
9
+ * (btc-vault's `coset`/`ciborium` stack) never emits them for this
10
+ * shape, so accepting them would only widen the parser's attack
11
+ * surface.
12
+ *
13
+ * The decoder is a cursor over a single buffer. {@link CborReader.pos}
14
+ * is public so callers can slice the exact encoded byte range of an
15
+ * item (head + content) — required to reconstruct the COSE
16
+ * `Sig_structure` byte-for-byte from the token's own protected-header
17
+ * and payload byte strings.
18
+ *
19
+ * @module tbv/core/clients/vault-provider/auth/cborDecode
20
+ */
21
+ /** A decoded CBOR data item. Maps preserve key insertion order. */
22
+ export type CborValue = number | bigint | string | Uint8Array | boolean | null | CborValue[] | Map<CborValue, CborValue> | CborTagged;
23
+ /** A CBOR tagged value (major type 6). */
24
+ export interface CborTagged {
25
+ tag: number;
26
+ value: CborValue;
27
+ }
28
+ /** Parsed initial-byte header: major type plus its decoded argument. */
29
+ export interface CborHead {
30
+ major: number;
31
+ /** The header argument (length, value, tag number, …) as a number. */
32
+ arg: number;
33
+ }
34
+ export declare class CborDecodeError extends Error {
35
+ constructor(message: string);
36
+ }
37
+ /**
38
+ * Cursor-based reader over a CBOR buffer. Not reusable across buffers —
39
+ * construct one per decode.
40
+ */
41
+ export declare class CborReader {
42
+ readonly buf: Uint8Array;
43
+ /** Current read offset. Public so callers can slice encoded sub-ranges. */
44
+ pos: number;
45
+ constructor(buf: Uint8Array);
46
+ private nextByte;
47
+ /**
48
+ * Read an initial byte and its argument. Rejects indefinite-length
49
+ * and reserved additional-info encodings. Arguments wider than
50
+ * {@link Number.MAX_SAFE_INTEGER} are rejected — none of the token's
51
+ * lengths, tags, or timestamps approach that bound.
52
+ */
53
+ readHead(): CborHead;
54
+ /** Read `length` raw bytes as a sub-array view into the backing buffer. */
55
+ private readBytes;
56
+ /**
57
+ * Read a byte string (major type 2), returning its content bytes.
58
+ * Throws if the next item is not a byte string.
59
+ */
60
+ readByteString(): Uint8Array;
61
+ /**
62
+ * Read the next complete data item as a decoded {@link CborValue}.
63
+ *
64
+ * `depth` tracks the current nesting level so a deeply-nested blob is
65
+ * rejected with a {@link CborDecodeError} rather than overflowing the
66
+ * native call stack (see {@link MAX_NESTING_DEPTH}).
67
+ */
68
+ readValue(depth?: number): CborValue;
69
+ }
70
+ /**
71
+ * Decode a single CBOR item from `bytes`, rejecting any trailing bytes.
72
+ *
73
+ * Used to parse the COSE protected header and CWT claims set — both are
74
+ * exactly one top-level item, so a valid prefix followed by extra bytes
75
+ * is a malformed structure, not a benign tail. Strict consumption keeps
76
+ * the parser from silently accepting a token a stricter CWT/COSE
77
+ * consumer would interpret differently.
78
+ */
79
+ export declare function decodeCbor(bytes: Uint8Array): CborValue;
80
+ //# sourceMappingURL=cborDecode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cborDecode.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/cborDecode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmCH,mEAAmE;AACnE,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GACzB,UAAU,CAAC;AAEf,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,2EAA2E;IAC3E,GAAG,SAAK;gBAEI,GAAG,EAAE,UAAU;IAI3B,OAAO,CAAC,QAAQ;IAOhB;;;;;OAKG;IACH,QAAQ,IAAI,QAAQ;IA0BpB,2EAA2E;IAC3E,OAAO,CAAC,SAAS;IASjB;;;OAGG;IACH,cAAc,IAAI,UAAU;IAU5B;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,SAAI,GAAG,SAAS;CAgDhC;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAOvD"}
@@ -9,6 +9,11 @@ export interface AuthenticatedVpClientConfig {
9
9
  authAnchorHex: string;
10
10
  /** On-chain VP pubkey, branded so it can only come from the registry reader. */
11
11
  pinnedServerPubkey: OnChainBtcPubkey;
12
+ /**
13
+ * Depositor BTC pubkey (x-only or compressed hex). Normalized to
14
+ * x-only and asserted against every issued token's CWT `aud` claim.
15
+ */
16
+ depositorBtcPubkey: string;
12
17
  /**
13
18
  * Opt into gRPC-subject auth for the artifact stream. Defaults to
14
19
  * `false` (JSON-RPC bearer). Only enable against a proxy running with
@@ -1 +1 @@
1
- {"version":3,"file":"createAuthenticatedVpClient.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/createAuthenticatedVpClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EACnC,MAAM,QAAQ,CAAC;AAKhB,MAAM,WAAW,2BAA2B;IAC1C,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,kBAAkB,EAAE,gBAAgB,CAAC;IACrC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,wEAAwE;IACxE,OAAO,CAAC,EAAE,6BAA6B,CAAC;CACzC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,2BAA2B,GAClC,sBAAsB,CAkBxB"}
1
+ {"version":3,"file":"createAuthenticatedVpClient.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/createAuthenticatedVpClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EACnC,MAAM,QAAQ,CAAC;AAKhB,MAAM,WAAW,2BAA2B;IAC1C,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,kBAAkB,EAAE,gBAAgB,CAAC;IACrC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,wEAAwE;IACxE,OAAO,CAAC,EAAE,6BAA6B,CAAC;CACzC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,2BAA2B,GAClC,sBAAsB,CAqBxB"}
@@ -4,6 +4,11 @@ export interface PrimeVpAuthInput {
4
4
  peginTxid: string;
5
5
  authAnchorHex: string;
6
6
  pinnedServerPubkey: OnChainBtcPubkey;
7
+ /**
8
+ * Depositor BTC pubkey (x-only or compressed hex). Normalized to
9
+ * x-only and asserted against every issued token's CWT `aud` claim.
10
+ */
11
+ depositorBtcPubkey: string;
7
12
  /** Optional headers forwarded to the inner token client (e.g. gateway auth). */
8
13
  headers?: Record<string, string>;
9
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"primeVpAuth.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/primeVpAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKxD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAQlE"}
1
+ {"version":3,"file":"primeVpAuth.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/primeVpAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKxD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAWlE"}
@@ -20,6 +20,13 @@ export interface VpTokenProviderConfig {
20
20
  authAnchorHex: string;
21
21
  /** Pinned VP pubkey from the on-chain registry; branded so indexer mirrors can't substitute. */
22
22
  pinnedServerPubkey: OnChainBtcPubkey;
23
+ /**
24
+ * Depositor x-only pubkey (32-byte hex). Asserted against every
25
+ * issued token's CWT `aud` claim so a token minted for a different
26
+ * depositor — or mis-issued by a buggy/compromised VP — is rejected
27
+ * before it can authenticate a mutation.
28
+ */
29
+ expectedAudienceXOnlyPubkey: string;
23
30
  /**
24
31
  * Methods that need a JSON-RPC-subject bearer (minted via
25
32
  * `auth_createDepositorToken`). Forwarded over plain HTTP JSON-RPC by
@@ -50,6 +57,7 @@ export declare class VpTokenProvider implements BearerTokenProvider {
50
57
  private readonly peginTxid;
51
58
  private readonly authAnchorHex;
52
59
  private readonly pinnedServerPubkey;
60
+ private readonly expectedAudienceXOnlyPubkey;
53
61
  private readonly authGatedMethods;
54
62
  private readonly grpcGatedMethods;
55
63
  private readonly refreshSkewSecs;
@@ -1 +1 @@
1
- {"version":3,"file":"tokenProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/tokenProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAK7E,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,kBAAkB,CAAC;AAgB1B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,eAAe,EAAE,sBAAsB,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,kBAAkB,EAAE,gBAAgB,CAAC;IACrC;;;;;OAKG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;;;OAKG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAOD;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IAKzD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,kEAAkE;IAClE,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,eAAe,CAAqC;IAC5D,kEAAkE;IAClE,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAAqC;gBAE7C,MAAM,EAAE,qBAAqB;IAWzC;;;;;;;;;;;;;;;;OAgBG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IActD;;;;;;;;;OASG;IACH,UAAU,IAAI,IAAI;YASJ,kBAAkB;IAYhC;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAItC,OAAO,CAAC,mBAAmB;CAuE5B"}
1
+ {"version":3,"file":"tokenProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/tokenProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAK7E,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,kBAAkB,CAAC;AAqB1B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,eAAe,EAAE,sBAAsB,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,kBAAkB,EAAE,gBAAgB,CAAC;IACrC;;;;;OAKG;IACH,2BAA2B,EAAE,MAAM,CAAC;IACpC;;;;;OAKG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC;;;;;OAKG;IACH,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAOD;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IAKzD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,kEAAkE;IAClE,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,eAAe,CAAqC;IAC5D,kEAAkE;IAClE,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAAqC;gBAE7C,MAAM,EAAE,qBAAqB;IAYzC;;;;;;;;;;;;;;;;OAgBG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IActD;;;;;;;;;OASG;IACH,UAAU,IAAI,IAAI;YASJ,kBAAkB;IAYhC;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAItC,OAAO,CAAC,mBAAmB;CAyF5B"}
@@ -6,6 +6,8 @@ export interface VpTokenRegistryInput {
6
6
  peginTxid: string;
7
7
  authAnchorHex: string;
8
8
  pinnedServerPubkey: OnChainBtcPubkey;
9
+ /** Depositor x-only pubkey (32-byte hex), asserted against each token's CWT `aud`. */
10
+ expectedAudienceXOnlyPubkey: string;
9
11
  /**
10
12
  * Opt into gRPC-subject auth for {@link GRPC_AUTH_GATED_METHODS}
11
13
  * (currently the artifact stream). Defaults to `false`: those methods
@@ -1 +1 @@
1
- {"version":3,"file":"tokenRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/tokenRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAUD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IAwDzD,0DAA0D;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpD;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACrD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,qBAA6C,CAAC"}
1
+ {"version":3,"file":"tokenRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/tokenRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,sFAAsF;IACtF,2BAA2B,EAAE,MAAM,CAAC;IACpC;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAWD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IAkEzD,0DAA0D;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpD;;;;OAIG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACrD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,qBAA6C,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Verify a vault-provider CWT bearer token (RFC 8392) wrapped in a
3
+ * COSE Sign1 envelope (RFC 8152), signed with ES256K by the VP's
4
+ * ephemeral token-signing key.
5
+ *
6
+ * This is the TypeScript port of the btc-vault Rust client verifier
7
+ * (`crates/btc-auth/src/client.rs::validate_token_with_public_key_at_time`
8
+ * plus the response cross-checks from `verify_token_response_at_time`).
9
+ * The FE previously verified only the server-identity proof
10
+ * ({@link ./serverIdentity}) and treated the token itself as an opaque
11
+ * blob; this closes that gap by cryptographically verifying the token
12
+ * and binding its claims to the expected issuer, subject, and depositor.
13
+ *
14
+ * Trust chain: {@link ./serverIdentity} first proves the
15
+ * `ephemeral_pubkey` is attested by the on-chain-pinned server key.
16
+ * This function then verifies the token's COSE signature against that
17
+ * same ephemeral key, so a token that decodes and verifies here is one
18
+ * the pinned VP actually issued.
19
+ *
20
+ * The byte-level expectations (COSE tag, ES256K alg id, Sig_structure
21
+ * layout, CWT registered-claim keys) mirror the issuer's `coset` stack
22
+ * and are pinned by the golden-vector test against a real Rust-issued
23
+ * token.
24
+ *
25
+ * @module tbv/core/clients/vault-provider/auth/verifyDepositorCwt
26
+ */
27
+ /** CWT `sub` value for JSON-RPC-subject tokens (`auth_createDepositorToken`). */
28
+ export declare const CWT_SUBJECT_JSONRPC = "vaultd-jsonrpc";
29
+ /** CWT `sub` value for gRPC-subject tokens (`auth_createDepositorTokenGrpc`). */
30
+ export declare const CWT_SUBJECT_GRPC = "vaultd-grpc";
31
+ export type CwtVerificationReason = "invalid_input" | "invalid_token_structure" | "unexpected_algorithm" | "signature_verification_failed" | "invalid_claims" | "issuer_mismatch" | "subject_mismatch" | "audience_mismatch" | "token_not_yet_valid" | "token_expired" | "expiry_mismatch" | "server_identity_expires_before_token";
32
+ export declare class CwtVerificationError extends Error {
33
+ readonly reason: CwtVerificationReason;
34
+ constructor(message: string, reason: CwtVerificationReason);
35
+ }
36
+ export interface VerifyDepositorCwtInput {
37
+ /** Base64url (no padding) COSE Sign1 token from `auth_createDepositorToken`. */
38
+ token: string;
39
+ /**
40
+ * VP ephemeral token-signing pubkey (33-byte compressed hex) from the
41
+ * bundled `server_identity` proof — MUST already be verified by
42
+ * {@link verifyServerIdentity} before being passed here.
43
+ */
44
+ ephemeralPubkeyHex: string;
45
+ /** Pinned VP persistent x-only pubkey (on-chain). Asserted against the token `iss`. */
46
+ expectedIssuerXOnlyPubkey: string;
47
+ /** Expected `sub` — {@link CWT_SUBJECT_JSONRPC} or {@link CWT_SUBJECT_GRPC}. */
48
+ expectedSubject: string;
49
+ /** Depositor x-only pubkey. Asserted against the token `aud`. */
50
+ expectedAudienceXOnlyPubkey: string;
51
+ /** Outer wire `expires_at`. Must equal the token's `exp` exactly. */
52
+ responseExpiresAt: number;
53
+ /** `server_identity.expires_at`. Must be ≥ the token's `exp`. */
54
+ serverIdentityExpiresAt: number;
55
+ /** Current Unix time (seconds). Injected for testability. */
56
+ now: number;
57
+ }
58
+ export interface VerifiedCwtClaims {
59
+ issuer: string;
60
+ subject: string;
61
+ audience: string;
62
+ expiresAt: number;
63
+ notBefore: number;
64
+ issuedAt: number;
65
+ }
66
+ /**
67
+ * Verify a depositor CWT and return its claims, or throw
68
+ * {@link CwtVerificationError}.
69
+ *
70
+ * Steps (matching the Rust reference):
71
+ * 1. Decode the COSE Sign1 envelope and assert the protected header
72
+ * pins ES256K.
73
+ * 2. Verify the ECDSA signature over the reconstructed Sig_structure
74
+ * against the (already server-identity-verified) ephemeral key.
75
+ * 3. Decode the CWT claims and assert `iss`/`sub`/`aud` bindings,
76
+ * `nbf`/`exp` validity, `cti` presence, and the outer-vs-inner
77
+ * expiry cross-checks.
78
+ */
79
+ export declare function verifyDepositorCwt(input: VerifyDepositorCwtInput): VerifiedCwtClaims;
80
+ //# sourceMappingURL=verifyDepositorCwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifyDepositorCwt.d.ts","sourceRoot":"","sources":["../../../../../../src/tbv/core/clients/vault-provider/auth/verifyDepositorCwt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAeH,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAmC9C,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,yBAAyB,GACzB,sBAAsB,GACtB,+BAA+B,GAC/B,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,qBAAqB,GACrB,eAAe,GACf,iBAAiB,GACjB,sCAAsC,CAAC;AAE3C,qBAAa,oBAAqB,SAAQ,KAAK;aAG3B,MAAM,EAAE,qBAAqB;gBAD7C,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,qBAAqB;CAKhD;AAED,MAAM,WAAW,uBAAuB;IACtC,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uFAAuF;IACvF,yBAAyB,EAAE,MAAM,CAAC;IAClC,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,2BAA2B,EAAE,MAAM,CAAC;IACpC,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,uBAAuB,EAAE,MAAM,CAAC;IAChC,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,iBAAiB,CAgKnB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../../challengeAssert-HNbugpqL.cjs"),l=require("@babylonlabs-io/babylon-tbv-rust-wasm"),n=require("../../verifyScriptPathSchnorrSignature-Cl7tu77P.cjs"),S=require("../../peginInput-DH6X4ITS.cjs"),A=require("../../noPayout-lyIRiUyG.cjs"),r=require("../../bitcoin-CHfKAhcI.cjs"),R=require("../../signing-Bnsro0hE.cjs"),c=require("../../validation-u8W7Lp2x.cjs"),u=require("../../PeginManager-BvxfSwsr.cjs"),p=require("../../PayoutManager-BZVEyi10.cjs"),_=require("../../ApplicationRegistry.abi-BAPhJch3.cjs"),m=require("../../BTCVaultRegistry.abi-JdeqLz4x.cjs"),P=require("../../errors-CGcNP0rV.cjs"),o=require("../../waitForTransactionReceiptSmartAware-U706oKTc.cjs"),t=require("../../fundPeginTransaction-DuMwnytD.cjs"),d=require("../../reservation-xTL2a9Q-.cjs"),i=require("../../mempoolApi-NMiYQAXI.cjs"),a=require("../../primeVpAuth-DhbTaCKm.cjs"),s=require("../../types-WA0LrDk1.cjs"),g=require("../../errors-Bu0H-dZD.cjs"),e=require("../../buildAndBroadcastRefund-BOtxUi05.cjs"),T=require("../../peginState-BijNNT15.cjs");exports.buildChallengeAssertPsbt=E.buildChallengeAssertPsbt;exports.buildDepositorPayoutPsbt=E.buildDepositorPayoutPsbt;exports.computeNumLocalChallengers=E.computeNumLocalChallengers;Object.defineProperty(exports,"computeMinClaimValue",{enumerable:!0,get:()=>l.computeMinClaimValue});Object.defineProperty(exports,"computeMinPeginFee",{enumerable:!0,get:()=>l.computeMinPeginFee});Object.defineProperty(exports,"deriveVaultId",{enumerable:!0,get:()=>l.deriveVaultId});Object.defineProperty(exports,"expandAuthAnchor",{enumerable:!0,get:()=>l.expandAuthAnchor});Object.defineProperty(exports,"expandHashlockSecret",{enumerable:!0,get:()=>l.expandHashlockSecret});Object.defineProperty(exports,"expandWotsSeed",{enumerable:!0,get:()=>l.expandWotsSeed});exports.PsbtSubstitutionError=n.PsbtSubstitutionError;exports.assertPsbtUnsignedTxMatches=n.assertPsbtUnsignedTxMatches;exports.assertScriptPathSchnorrSignature=n.assertScriptPathSchnorrSignature;exports.buildPayoutPsbt=n.buildPayoutPsbt;exports.buildPeginTxFromFundedPrePegin=n.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=n.buildPrePeginPsbt;exports.createPayoutScript=n.createPayoutScript;exports.extractPayoutSignature=n.extractPayoutSignature;exports.buildPeginInputPsbt=S.buildPeginInputPsbt;exports.extractPeginInputSignature=S.extractPeginInputSignature;exports.finalizePeginInputPsbt=S.finalizePeginInputPsbt;exports.buildNoPayoutPsbt=A.buildNoPayoutPsbt;exports.buildRefundPsbt=A.buildRefundPsbt;exports.deriveBip86ScriptPubKeyHex=r.deriveBip86ScriptPubKeyHex;exports.deriveNativeSegwitAddress=r.deriveNativeSegwitAddress;exports.deriveTaprootAddress=r.deriveTaprootAddress;exports.ensureHexPrefix=r.ensureHexPrefix;exports.formatSatoshisToBtc=r.formatSatoshisToBtc;exports.getNetwork=r.getNetwork;exports.getSortedXOnlyPubkeys=r.getSortedXOnlyPubkeys;exports.hexToUint8Array=r.hexToUint8Array;exports.isAddressFromPublicKey=r.isAddressFromPublicKey;exports.isValidHex=r.isValidHex;exports.processPublicKeyToXOnly=r.processPublicKeyToXOnly;exports.stripHexPrefix=r.stripHexPrefix;exports.toXOnly=r.toXOnly;exports.uint8ArrayToHex=r.uint8ArrayToHex;exports.validateWalletPubkey=r.validateWalletPubkey;exports.createTaprootScriptPathSignOptions=R.createTaprootScriptPathSignOptions;exports.BITCOIN_ADDRESS_RE=c.BITCOIN_ADDRESS_RE;exports.HEX_RE=c.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=c.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=c.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=c.TXID_RE;exports.PeginManager=u.PeginManager;exports.VAULT_APP_NAME=u.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=u.buildFundingOutpointsCommitment;exports.buildVaultContext=u.buildVaultContext;exports.computeWotsBlockPublicKeysHash=u.computeWotsBlockPublicKeysHash;exports.deriveVaultRoot=u.deriveVaultRoot;exports.deriveWotsBlocksFromSeed=u.deriveWotsBlocksFromSeed;exports.estimateSubmitPeginRequestBatchGas=u.estimateSubmitPeginRequestBatchGas;exports.PayoutManager=p.PayoutManager;exports.computeHashlock=p.computeHashlock;exports.validateSecretAgainstHashlock=p.validateSecretAgainstHashlock;exports.ApplicationRegistryABI=_.ApplicationRegistryABI;exports.ProtocolParamsABI=_.ProtocolParamsABI;exports.BTCVaultRegistryABI=m.BTCVaultRegistryABI;exports.CONTRACT_ERRORS=P.CONTRACT_ERRORS;exports.extractErrorData=P.extractErrorData;exports.getContractErrorMessage=P.getContractErrorMessage;exports.handleContractError=P.handleContractError;exports.isKnownContractError=P.isKnownContractError;exports.BitcoinScriptType=o.BitcoinScriptType;exports.applyChangeOutputPolicy=o.applyChangeOutputPolicy;exports.calculateBtcTxHash=o.calculateBtcTxHash;exports.computeChangeOutputFeeSats=o.computeChangeOutputFeeSats;exports.computeMaxDeposit=o.computeMaxDeposit;exports.computePeginBaseFeeSats=o.computePeginBaseFeeSats;exports.getDustThreshold=o.getDustThreshold;exports.getPsbtInputFields=o.getPsbtInputFields;exports.getScriptType=o.getScriptType;exports.selectUtxosForPegin=o.selectUtxosForPegin;exports.shouldAddChangeOutput=o.shouldAddChangeOutput;exports.waitForTransactionReceiptSmartAware=o.waitForTransactionReceiptSmartAware;exports.BTC_DUST_SAT=t.BTC_DUST_SAT;exports.DUST_THRESHOLD=t.DUST_THRESHOLD;exports.FEE_SAFETY_MARGIN=t.FEE_SAFETY_MARGIN;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=t.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=t.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MAX_REASONABLE_PEGIN_VBYTES=t.MAX_REASONABLE_PEGIN_VBYTES;exports.P2TR_INPUT_SIZE=t.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=t.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=t.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=t.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=t.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=t.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=t.fundPeginTransaction;exports.parseUnfundedWasmTransaction=t.parseUnfundedWasmTransaction;exports.peginOutputCount=t.peginOutputCount;exports.rateBasedTxBufferFee=t.rateBasedTxBufferFee;exports.UtxoNotAvailableError=d.UtxoNotAvailableError;exports.assertUtxosAvailable=d.assertUtxosAvailable;exports.extractInputsFromTransaction=d.extractInputsFromTransaction;exports.findOverlappingPendingVaults=d.findOverlappingPendingVaults;exports.validateUtxosAvailable=d.validateUtxosAvailable;exports.MEMPOOL_API_URLS=i.MEMPOOL_API_URLS;exports.ViemVaultRegistryReader=i.ViemVaultRegistryReader;exports.getAddressTxs=i.getAddressTxs;exports.getAddressUtxos=i.getAddressUtxos;exports.getMempoolApiUrl=i.getMempoolApiUrl;exports.getNetworkFees=i.getNetworkFees;exports.getOutspend=i.getOutspend;exports.getTipHeight=i.getTipHeight;exports.getTxHex=i.getTxHex;exports.getTxInfo=i.getTxInfo;exports.getUtxoInfo=i.getUtxoInfo;exports.pushTx=i.pushTx;exports.validateOffchainParams=i.validateOffchainParams;exports.validatePegInConfiguration=i.validatePegInConfiguration;exports.validateTBVProtocolParams=i.validateTBVProtocolParams;exports.OnChainBtcVaultStatus=a.OnChainBtcVaultStatus;exports.ServerIdentityError=a.ServerIdentityError;exports.VaultProviderRpcClient=a.VaultProviderRpcClient;exports.ViemProtocolParamsReader=a.ViemProtocolParamsReader;exports.ViemUniversalChallengerReader=a.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=a.ViemVaultKeeperReader;exports.VpResponseValidationError=a.VpResponseValidationError;exports.VpTokenRegistry=a.VpTokenRegistry;exports.batchPollByProvider=a.batchPollByProvider;exports.createAuthenticatedVpClient=a.createAuthenticatedVpClient;exports.primeVpTokenRegistry=a.primeVpTokenRegistry;exports.resolveProtocolAddresses=a.resolveProtocolAddresses;exports.validateRequestDepositorClaimerArtifactsResponse=a.validateRequestDepositorClaimerArtifactsResponse;exports.verifyServerIdentity=a.verifyServerIdentity;exports.vpTokenRegistry=a.vpTokenRegistry;exports.AUTH_EXPIRED_DATA_KIND=s.AUTH_EXPIRED_DATA_KIND;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_BATCH_MAX_SIZE=s.VP_BATCH_MAX_SIZE;exports.VP_TERMINAL_FAILURE_STATUSES=s.VP_TERMINAL_FAILURE_STATUSES;exports.VP_TRANSIENT_STATUSES=s.VP_TRANSIENT_STATUSES;exports.isWotsMismatchError=g.isWotsMismatchError;exports.parseFundingOutpointsFromTx=g.parseFundingOutpointsFromTx;exports.BIP68NotMatureError=e.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=e.ClaimerPegoutStatusValue;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=e.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=e.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=e.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=e.REFUND_VSIZE;exports.RegisteredVaultVersionMismatchError=e.RegisteredVaultVersionMismatchError;exports.activateVault=e.activateVault;exports.buildAndBroadcastRefund=e.buildAndBroadcastRefund;exports.estimateRefundFeeSats=e.estimateRefundFeeSats;exports.isDepositAmountValid=e.isDepositAmountValid;exports.isPegoutTerminalStatus=e.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=e.isRecognizedPegoutStatus;exports.isRegisteredVaultVersionMismatchError=e.isRegisteredVaultVersionMismatchError;exports.runDepositorPresignFlow=e.runDepositorPresignFlow;exports.signDepositorGraph=e.signDepositorGraph;exports.submitWotsPublicKey=e.submitWotsPublicKey;exports.validateDepositAmount=e.validateDepositAmount;exports.validateMultiVaultDepositInputs=e.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=e.validateOnChainParticipantKeys;exports.validateProviderSelection=e.validateProviderSelection;exports.validateRemainingCapacity=e.validateRemainingCapacity;exports.validateVaultAmounts=e.validateVaultAmounts;exports.validateVaultProviderPubkey=e.validateVaultProviderPubkey;exports.verifyRegisteredVaultVersions=e.verifyRegisteredVaultVersions;exports.waitForPeginStatus=e.waitForPeginStatus;exports.ContractStatus=T.ContractStatus;exports.PeginAction=T.PeginAction;exports.canPerformAction=T.canPerformAction;exports.getPeginProtocolState=T.getPeginProtocolState;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../../challengeAssert-HNbugpqL.cjs"),l=require("@babylonlabs-io/babylon-tbv-rust-wasm"),n=require("../../verifyScriptPathSchnorrSignature-Cl7tu77P.cjs"),S=require("../../peginInput-DH6X4ITS.cjs"),A=require("../../noPayout-lyIRiUyG.cjs"),r=require("../../bitcoin-CHfKAhcI.cjs"),R=require("../../signing-Bnsro0hE.cjs"),c=require("../../validation-u8W7Lp2x.cjs"),u=require("../../PeginManager-BvxfSwsr.cjs"),p=require("../../PayoutManager-BZVEyi10.cjs"),_=require("../../ApplicationRegistry.abi-BAPhJch3.cjs"),m=require("../../BTCVaultRegistry.abi-JdeqLz4x.cjs"),P=require("../../errors-CGcNP0rV.cjs"),o=require("../../waitForTransactionReceiptSmartAware-U706oKTc.cjs"),t=require("../../fundPeginTransaction-DuMwnytD.cjs"),d=require("../../reservation-xTL2a9Q-.cjs"),i=require("../../mempoolApi-NMiYQAXI.cjs"),a=require("../../primeVpAuth-Brl_bnBH.cjs"),s=require("../../types-WA0LrDk1.cjs"),g=require("../../errors-Bu0H-dZD.cjs"),e=require("../../buildAndBroadcastRefund-ob1n2iB3.cjs"),T=require("../../peginState-BijNNT15.cjs");exports.buildChallengeAssertPsbt=E.buildChallengeAssertPsbt;exports.buildDepositorPayoutPsbt=E.buildDepositorPayoutPsbt;exports.computeNumLocalChallengers=E.computeNumLocalChallengers;Object.defineProperty(exports,"computeMinClaimValue",{enumerable:!0,get:()=>l.computeMinClaimValue});Object.defineProperty(exports,"computeMinPeginFee",{enumerable:!0,get:()=>l.computeMinPeginFee});Object.defineProperty(exports,"deriveVaultId",{enumerable:!0,get:()=>l.deriveVaultId});Object.defineProperty(exports,"expandAuthAnchor",{enumerable:!0,get:()=>l.expandAuthAnchor});Object.defineProperty(exports,"expandHashlockSecret",{enumerable:!0,get:()=>l.expandHashlockSecret});Object.defineProperty(exports,"expandWotsSeed",{enumerable:!0,get:()=>l.expandWotsSeed});exports.PsbtSubstitutionError=n.PsbtSubstitutionError;exports.assertPsbtUnsignedTxMatches=n.assertPsbtUnsignedTxMatches;exports.assertScriptPathSchnorrSignature=n.assertScriptPathSchnorrSignature;exports.buildPayoutPsbt=n.buildPayoutPsbt;exports.buildPeginTxFromFundedPrePegin=n.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=n.buildPrePeginPsbt;exports.createPayoutScript=n.createPayoutScript;exports.extractPayoutSignature=n.extractPayoutSignature;exports.buildPeginInputPsbt=S.buildPeginInputPsbt;exports.extractPeginInputSignature=S.extractPeginInputSignature;exports.finalizePeginInputPsbt=S.finalizePeginInputPsbt;exports.buildNoPayoutPsbt=A.buildNoPayoutPsbt;exports.buildRefundPsbt=A.buildRefundPsbt;exports.deriveBip86ScriptPubKeyHex=r.deriveBip86ScriptPubKeyHex;exports.deriveNativeSegwitAddress=r.deriveNativeSegwitAddress;exports.deriveTaprootAddress=r.deriveTaprootAddress;exports.ensureHexPrefix=r.ensureHexPrefix;exports.formatSatoshisToBtc=r.formatSatoshisToBtc;exports.getNetwork=r.getNetwork;exports.getSortedXOnlyPubkeys=r.getSortedXOnlyPubkeys;exports.hexToUint8Array=r.hexToUint8Array;exports.isAddressFromPublicKey=r.isAddressFromPublicKey;exports.isValidHex=r.isValidHex;exports.processPublicKeyToXOnly=r.processPublicKeyToXOnly;exports.stripHexPrefix=r.stripHexPrefix;exports.toXOnly=r.toXOnly;exports.uint8ArrayToHex=r.uint8ArrayToHex;exports.validateWalletPubkey=r.validateWalletPubkey;exports.createTaprootScriptPathSignOptions=R.createTaprootScriptPathSignOptions;exports.BITCOIN_ADDRESS_RE=c.BITCOIN_ADDRESS_RE;exports.HEX_RE=c.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=c.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=c.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=c.TXID_RE;exports.PeginManager=u.PeginManager;exports.VAULT_APP_NAME=u.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=u.buildFundingOutpointsCommitment;exports.buildVaultContext=u.buildVaultContext;exports.computeWotsBlockPublicKeysHash=u.computeWotsBlockPublicKeysHash;exports.deriveVaultRoot=u.deriveVaultRoot;exports.deriveWotsBlocksFromSeed=u.deriveWotsBlocksFromSeed;exports.estimateSubmitPeginRequestBatchGas=u.estimateSubmitPeginRequestBatchGas;exports.PayoutManager=p.PayoutManager;exports.computeHashlock=p.computeHashlock;exports.validateSecretAgainstHashlock=p.validateSecretAgainstHashlock;exports.ApplicationRegistryABI=_.ApplicationRegistryABI;exports.ProtocolParamsABI=_.ProtocolParamsABI;exports.BTCVaultRegistryABI=m.BTCVaultRegistryABI;exports.CONTRACT_ERRORS=P.CONTRACT_ERRORS;exports.extractErrorData=P.extractErrorData;exports.getContractErrorMessage=P.getContractErrorMessage;exports.handleContractError=P.handleContractError;exports.isKnownContractError=P.isKnownContractError;exports.BitcoinScriptType=o.BitcoinScriptType;exports.applyChangeOutputPolicy=o.applyChangeOutputPolicy;exports.calculateBtcTxHash=o.calculateBtcTxHash;exports.computeChangeOutputFeeSats=o.computeChangeOutputFeeSats;exports.computeMaxDeposit=o.computeMaxDeposit;exports.computePeginBaseFeeSats=o.computePeginBaseFeeSats;exports.getDustThreshold=o.getDustThreshold;exports.getPsbtInputFields=o.getPsbtInputFields;exports.getScriptType=o.getScriptType;exports.selectUtxosForPegin=o.selectUtxosForPegin;exports.shouldAddChangeOutput=o.shouldAddChangeOutput;exports.waitForTransactionReceiptSmartAware=o.waitForTransactionReceiptSmartAware;exports.BTC_DUST_SAT=t.BTC_DUST_SAT;exports.DUST_THRESHOLD=t.DUST_THRESHOLD;exports.FEE_SAFETY_MARGIN=t.FEE_SAFETY_MARGIN;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=t.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=t.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MAX_REASONABLE_PEGIN_VBYTES=t.MAX_REASONABLE_PEGIN_VBYTES;exports.P2TR_INPUT_SIZE=t.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=t.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=t.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=t.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=t.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=t.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=t.fundPeginTransaction;exports.parseUnfundedWasmTransaction=t.parseUnfundedWasmTransaction;exports.peginOutputCount=t.peginOutputCount;exports.rateBasedTxBufferFee=t.rateBasedTxBufferFee;exports.UtxoNotAvailableError=d.UtxoNotAvailableError;exports.assertUtxosAvailable=d.assertUtxosAvailable;exports.extractInputsFromTransaction=d.extractInputsFromTransaction;exports.findOverlappingPendingVaults=d.findOverlappingPendingVaults;exports.validateUtxosAvailable=d.validateUtxosAvailable;exports.MEMPOOL_API_URLS=i.MEMPOOL_API_URLS;exports.ViemVaultRegistryReader=i.ViemVaultRegistryReader;exports.getAddressTxs=i.getAddressTxs;exports.getAddressUtxos=i.getAddressUtxos;exports.getMempoolApiUrl=i.getMempoolApiUrl;exports.getNetworkFees=i.getNetworkFees;exports.getOutspend=i.getOutspend;exports.getTipHeight=i.getTipHeight;exports.getTxHex=i.getTxHex;exports.getTxInfo=i.getTxInfo;exports.getUtxoInfo=i.getUtxoInfo;exports.pushTx=i.pushTx;exports.validateOffchainParams=i.validateOffchainParams;exports.validatePegInConfiguration=i.validatePegInConfiguration;exports.validateTBVProtocolParams=i.validateTBVProtocolParams;exports.OnChainBtcVaultStatus=a.OnChainBtcVaultStatus;exports.ServerIdentityError=a.ServerIdentityError;exports.VaultProviderRpcClient=a.VaultProviderRpcClient;exports.ViemProtocolParamsReader=a.ViemProtocolParamsReader;exports.ViemUniversalChallengerReader=a.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=a.ViemVaultKeeperReader;exports.VpResponseValidationError=a.VpResponseValidationError;exports.VpTokenRegistry=a.VpTokenRegistry;exports.batchPollByProvider=a.batchPollByProvider;exports.createAuthenticatedVpClient=a.createAuthenticatedVpClient;exports.primeVpTokenRegistry=a.primeVpTokenRegistry;exports.resolveProtocolAddresses=a.resolveProtocolAddresses;exports.validateRequestDepositorClaimerArtifactsResponse=a.validateRequestDepositorClaimerArtifactsResponse;exports.verifyServerIdentity=a.verifyServerIdentity;exports.vpTokenRegistry=a.vpTokenRegistry;exports.AUTH_EXPIRED_DATA_KIND=s.AUTH_EXPIRED_DATA_KIND;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_BATCH_MAX_SIZE=s.VP_BATCH_MAX_SIZE;exports.VP_TERMINAL_FAILURE_STATUSES=s.VP_TERMINAL_FAILURE_STATUSES;exports.VP_TRANSIENT_STATUSES=s.VP_TRANSIENT_STATUSES;exports.isWotsMismatchError=g.isWotsMismatchError;exports.parseFundingOutpointsFromTx=g.parseFundingOutpointsFromTx;exports.BIP68NotMatureError=e.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=e.ClaimerPegoutStatusValue;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=e.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=e.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=e.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=e.REFUND_VSIZE;exports.RegisteredVaultVersionMismatchError=e.RegisteredVaultVersionMismatchError;exports.activateVault=e.activateVault;exports.buildAndBroadcastRefund=e.buildAndBroadcastRefund;exports.estimateRefundFeeSats=e.estimateRefundFeeSats;exports.isDepositAmountValid=e.isDepositAmountValid;exports.isPegoutTerminalStatus=e.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=e.isRecognizedPegoutStatus;exports.isRegisteredVaultVersionMismatchError=e.isRegisteredVaultVersionMismatchError;exports.runDepositorPresignFlow=e.runDepositorPresignFlow;exports.signDepositorGraph=e.signDepositorGraph;exports.submitWotsPublicKey=e.submitWotsPublicKey;exports.validateDepositAmount=e.validateDepositAmount;exports.validateMultiVaultDepositInputs=e.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=e.validateOnChainParticipantKeys;exports.validateProviderSelection=e.validateProviderSelection;exports.validateRemainingCapacity=e.validateRemainingCapacity;exports.validateVaultAmounts=e.validateVaultAmounts;exports.validateVaultProviderPubkey=e.validateVaultProviderPubkey;exports.verifyRegisteredVaultVersions=e.verifyRegisteredVaultVersions;exports.waitForPeginStatus=e.waitForPeginStatus;exports.ContractStatus=T.ContractStatus;exports.PeginAction=T.PeginAction;exports.canPerformAction=T.canPerformAction;exports.getPeginProtocolState=T.getPeginProtocolState;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -15,10 +15,10 @@ import { B as fa, a as ba, f as Ia, c as Oa, b as Va, d as va, g as Ca, i as Fa,
15
15
  import { B as Da, D as Ma, F as Ha, L as La, M as Xa, c as ka, P as Wa, b as Ka, a as wa, S as Ga, T as Ya, W as Za, f as Ja, d as ja, p as qa, r as za } from "../../fundPeginTransaction-96FxwYYJ.js";
16
16
  import { U as $a, a as ae, e as ee, f as se, v as te } from "../../reservation-BxvKbQH2.js";
17
17
  import { M as oe, V as ie, g as ne, a as ue, b as le, c as pe, d as de, e as Pe, f as ce, h as Te, i as Ee, p as Se, v as Ae, j as _e, k as ge } from "../../mempoolApi-Dc1KSVNI.js";
18
- import { O as me, S as xe, V as fe, g as be, h as Ie, i as Oe, a as Ve, d as ve, b as Ce, f as Fe, p as he, r as Ue, v as Ne, c as ye, e as Be } from "../../primeVpAuth-CZsFLrHX.js";
18
+ import { O as me, S as xe, V as fe, g as be, h as Ie, i as Oe, a as Ve, d as ve, b as Ce, f as Fe, p as he, r as Ue, v as Ne, c as ye, e as Be } from "../../primeVpAuth-BdrwraAe.js";
19
19
  import { A as Me, D as He, b as Le, J as Xe, a as ke, d as We, P as Ke, R as we, e as Ge, c as Ye, V as Ze } from "../../types-CQDRQvV-.js";
20
20
  import { i as je, p as qe } from "../../errors-9AkghWyk.js";
21
- import { B as Qe, C as $e, p as as, q as es, t as ss, u as ts, R as rs, a as os, n as is, o as ns, i as us, m as ls, l as ps, j as ds, r as Ps, b as cs, s as Ts, v as Es, g as Ss, h as As, d as _s, c as gs, e as Rs, f as ms, k as xs, w as fs } from "../../buildAndBroadcastRefund-o9Byvkut.js";
21
+ import { B as Qe, C as $e, p as as, q as es, t as ss, u as ts, R as rs, a as os, n as is, o as ns, i as us, m as ls, l as ps, j as ds, r as Ps, b as cs, s as Ts, v as Es, g as Ss, h as As, d as _s, c as gs, e as Rs, f as ms, k as xs, w as fs } from "../../buildAndBroadcastRefund-Bmz9WJuN.js";
22
22
  import { C as Is, P as Os, c as Vs, g as vs } from "../../peginState-CBAlxgXk.js";
23
23
  export {
24
24
  Me as AUTH_EXPIRED_DATA_KIND,
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../PayoutManager-BZVEyi10.cjs"),t=require("../../../buildAndBroadcastRefund-BOtxUi05.cjs"),e=require("../../../peginState-BijNNT15.cjs");exports.computeHashlock=a.computeHashlock;exports.validateSecretAgainstHashlock=a.validateSecretAgainstHashlock;exports.BIP68NotMatureError=t.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=t.ClaimerPegoutStatusValue;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=t.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=t.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=t.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=t.REFUND_VSIZE;exports.RegisteredVaultVersionMismatchError=t.RegisteredVaultVersionMismatchError;exports.activateVault=t.activateVault;exports.buildAndBroadcastRefund=t.buildAndBroadcastRefund;exports.estimateRefundFeeSats=t.estimateRefundFeeSats;exports.isDepositAmountValid=t.isDepositAmountValid;exports.isPegoutTerminalStatus=t.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=t.isRecognizedPegoutStatus;exports.isRegisteredVaultVersionMismatchError=t.isRegisteredVaultVersionMismatchError;exports.runDepositorPresignFlow=t.runDepositorPresignFlow;exports.signDepositorGraph=t.signDepositorGraph;exports.submitWotsPublicKey=t.submitWotsPublicKey;exports.validateDepositAmount=t.validateDepositAmount;exports.validateMultiVaultDepositInputs=t.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=t.validateOnChainParticipantKeys;exports.validateProviderSelection=t.validateProviderSelection;exports.validateRemainingCapacity=t.validateRemainingCapacity;exports.validateVaultAmounts=t.validateVaultAmounts;exports.validateVaultProviderPubkey=t.validateVaultProviderPubkey;exports.verifyRegisteredVaultVersions=t.verifyRegisteredVaultVersions;exports.waitForPeginStatus=t.waitForPeginStatus;exports.ContractStatus=e.ContractStatus;exports.PeginAction=e.PeginAction;exports.canPerformAction=e.canPerformAction;exports.getPeginProtocolState=e.getPeginProtocolState;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../PayoutManager-BZVEyi10.cjs"),t=require("../../../buildAndBroadcastRefund-ob1n2iB3.cjs"),e=require("../../../peginState-BijNNT15.cjs");exports.computeHashlock=a.computeHashlock;exports.validateSecretAgainstHashlock=a.validateSecretAgainstHashlock;exports.BIP68NotMatureError=t.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=t.ClaimerPegoutStatusValue;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=t.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=t.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=t.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=t.REFUND_VSIZE;exports.RegisteredVaultVersionMismatchError=t.RegisteredVaultVersionMismatchError;exports.activateVault=t.activateVault;exports.buildAndBroadcastRefund=t.buildAndBroadcastRefund;exports.estimateRefundFeeSats=t.estimateRefundFeeSats;exports.isDepositAmountValid=t.isDepositAmountValid;exports.isPegoutTerminalStatus=t.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=t.isRecognizedPegoutStatus;exports.isRegisteredVaultVersionMismatchError=t.isRegisteredVaultVersionMismatchError;exports.runDepositorPresignFlow=t.runDepositorPresignFlow;exports.signDepositorGraph=t.signDepositorGraph;exports.submitWotsPublicKey=t.submitWotsPublicKey;exports.validateDepositAmount=t.validateDepositAmount;exports.validateMultiVaultDepositInputs=t.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=t.validateOnChainParticipantKeys;exports.validateProviderSelection=t.validateProviderSelection;exports.validateRemainingCapacity=t.validateRemainingCapacity;exports.validateVaultAmounts=t.validateVaultAmounts;exports.validateVaultProviderPubkey=t.validateVaultProviderPubkey;exports.verifyRegisteredVaultVersions=t.verifyRegisteredVaultVersions;exports.waitForPeginStatus=t.waitForPeginStatus;exports.ContractStatus=e.ContractStatus;exports.PeginAction=e.PeginAction;exports.canPerformAction=e.canPerformAction;exports.getPeginProtocolState=e.getPeginProtocolState;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { c as s, v as e } from "../../../PayoutManager-D26nGR-e.js";
2
- import { B as o, C as r, p as u, q as n, t as l, u as c, R as d, a as R, n as g, o as E, i as m, m as A, l as P, j as p, r as v, b as V, s as _, v as F, g as S, h as D, d as N, c as M, e as f, f as C, k as h, w as T } from "../../../buildAndBroadcastRefund-o9Byvkut.js";
2
+ import { B as o, C as r, p as u, q as n, t as l, u as c, R as d, a as R, n as g, o as E, i as m, m as A, l as P, j as p, r as v, b as V, s as _, v as F, g as S, h as D, d as N, c as M, e as f, f as C, k as h, w as T } from "../../../buildAndBroadcastRefund-Bmz9WJuN.js";
3
3
  import { C as O, P as b, c as y, g as U } from "../../../peginState-CBAlxgXk.js";
4
4
  export {
5
5
  o as BIP68NotMatureError,
@@ -20,7 +20,13 @@ export declare function estimateRefundFeeSats(feeRateSatsVb: number): bigint;
20
20
  export interface VaultBatchEntry {
21
21
  /** SHA-256 hashlock commitment for this vault (bytes32, 0x-prefixed). */
22
22
  hashlock: Hex;
23
- /** HTLC output value in satoshis for this vault. */
23
+ /**
24
+ * Vault deposit (peg-in) amount in satoshis — the on-chain contract's
25
+ * `amount` field. This is the peg-in amount WASM expects in `pegInAmounts`,
26
+ * NOT the funded HTLC output value (which is `amount + depositorClaimValue +
27
+ * minPeginFee`). WASM re-adds that reserve internally when it sizes the HTLC
28
+ * output, so this value is passed straight through.
29
+ */
24
30
  amount: bigint;
25
31
  /** Index of this vault's HTLC output in the funded Pre-PegIn tx. */
26
32
  htlcVout: number;
@@ -46,7 +52,7 @@ export interface VaultRefundData {
46
52
  universalChallengersVersion: number;
47
53
  vaultProvider: Address;
48
54
  applicationEntryPoint: Address;
49
- /** Pre-PegIn HTLC output value in satoshis. */
55
+ /** Vault deposit (peg-in) amount in satoshis — the on-chain `amount` field. */
50
56
  amount: bigint;
51
57
  /**
52
58
  * Funded, pre-witness Pre-PegIn transaction hex. 0x prefix optional.
@@ -121,26 +127,6 @@ export interface RefundInput<R extends BtcBroadcastResult = BtcBroadcastResult>
121
127
  /** Checked at every async boundary. */
122
128
  signal?: AbortSignal;
123
129
  }
124
- /**
125
- * Re-derive each HTLC's original peg-in amount from its on-chain HTLC output
126
- * value, inverting the protocol formula
127
- * `htlcValue = peginAmount + depositorClaimValue + minPeginFee`.
128
- *
129
- * The original peg-in amount is not persisted anywhere — only the HTLC output
130
- * value (`batch[i].amount`) survives on-chain. WASM refund template
131
- * reconstruction needs the *peg-in amount*, not the HTLC value: feeding the
132
- * HTLC value would size the template's HTLC output above what the funded tx
133
- * carries, and `buildRefundPsbt`'s value cross-check would refuse the refund.
134
- *
135
- * `depositorClaimValue` and `minPeginFee` are constant across the batch
136
- * (fixed by the version-pinned protocol params in {@link ctx}), so they are
137
- * computed once via the same WASM entry points the peg-in path uses, then
138
- * subtracted from every entry's value. The subtraction is the inverse of the
139
- * sizing WASM performs internally; `buildRefundPsbt` then re-binds the result
140
- * to the funded tx bytes, so a wrong derivation fails closed rather than
141
- * signing a mis-sized refund.
142
- */
143
- export declare function deriveRefundPeginAmounts(batch: ReadonlyArray<VaultBatchEntry>, ctx: RefundPrePeginContext): Promise<bigint[]>;
144
130
  /**
145
131
  * Build, sign, and broadcast a refund transaction for an expired vault.
146
132
  *
@@ -1 +1 @@
1
- {"version":3,"file":"buildAndBroadcastRefund.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/services/refund/buildAndBroadcastRefund.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildAndBroadcastRefund.d.ts","sourceRoot":"","sources":["../../../../../src/tbv/core/services/refund/buildAndBroadcastRefund.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../challengeAssert-HNbugpqL.cjs"),l=require("@babylonlabs-io/babylon-tbv-rust-wasm"),n=require("../verifyScriptPathSchnorrSignature-Cl7tu77P.cjs"),S=require("../peginInput-DH6X4ITS.cjs"),A=require("../noPayout-lyIRiUyG.cjs"),r=require("../bitcoin-CHfKAhcI.cjs"),R=require("../signing-Bnsro0hE.cjs"),c=require("../validation-u8W7Lp2x.cjs"),u=require("../PeginManager-BvxfSwsr.cjs"),p=require("../PayoutManager-BZVEyi10.cjs"),_=require("../ApplicationRegistry.abi-BAPhJch3.cjs"),m=require("../BTCVaultRegistry.abi-JdeqLz4x.cjs"),P=require("../errors-CGcNP0rV.cjs"),o=require("../waitForTransactionReceiptSmartAware-U706oKTc.cjs"),t=require("../fundPeginTransaction-DuMwnytD.cjs"),d=require("../reservation-xTL2a9Q-.cjs"),i=require("../mempoolApi-NMiYQAXI.cjs"),a=require("../primeVpAuth-DhbTaCKm.cjs"),s=require("../types-WA0LrDk1.cjs"),g=require("../errors-Bu0H-dZD.cjs"),e=require("../buildAndBroadcastRefund-BOtxUi05.cjs"),T=require("../peginState-BijNNT15.cjs");exports.buildChallengeAssertPsbt=E.buildChallengeAssertPsbt;exports.buildDepositorPayoutPsbt=E.buildDepositorPayoutPsbt;exports.computeNumLocalChallengers=E.computeNumLocalChallengers;Object.defineProperty(exports,"computeMinClaimValue",{enumerable:!0,get:()=>l.computeMinClaimValue});Object.defineProperty(exports,"computeMinPeginFee",{enumerable:!0,get:()=>l.computeMinPeginFee});Object.defineProperty(exports,"deriveVaultId",{enumerable:!0,get:()=>l.deriveVaultId});Object.defineProperty(exports,"expandAuthAnchor",{enumerable:!0,get:()=>l.expandAuthAnchor});Object.defineProperty(exports,"expandHashlockSecret",{enumerable:!0,get:()=>l.expandHashlockSecret});Object.defineProperty(exports,"expandWotsSeed",{enumerable:!0,get:()=>l.expandWotsSeed});exports.PsbtSubstitutionError=n.PsbtSubstitutionError;exports.assertPsbtUnsignedTxMatches=n.assertPsbtUnsignedTxMatches;exports.assertScriptPathSchnorrSignature=n.assertScriptPathSchnorrSignature;exports.buildPayoutPsbt=n.buildPayoutPsbt;exports.buildPeginTxFromFundedPrePegin=n.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=n.buildPrePeginPsbt;exports.createPayoutScript=n.createPayoutScript;exports.extractPayoutSignature=n.extractPayoutSignature;exports.buildPeginInputPsbt=S.buildPeginInputPsbt;exports.extractPeginInputSignature=S.extractPeginInputSignature;exports.finalizePeginInputPsbt=S.finalizePeginInputPsbt;exports.buildNoPayoutPsbt=A.buildNoPayoutPsbt;exports.buildRefundPsbt=A.buildRefundPsbt;exports.deriveBip86ScriptPubKeyHex=r.deriveBip86ScriptPubKeyHex;exports.deriveNativeSegwitAddress=r.deriveNativeSegwitAddress;exports.deriveTaprootAddress=r.deriveTaprootAddress;exports.ensureHexPrefix=r.ensureHexPrefix;exports.formatSatoshisToBtc=r.formatSatoshisToBtc;exports.getNetwork=r.getNetwork;exports.getSortedXOnlyPubkeys=r.getSortedXOnlyPubkeys;exports.hexToUint8Array=r.hexToUint8Array;exports.isAddressFromPublicKey=r.isAddressFromPublicKey;exports.isValidHex=r.isValidHex;exports.processPublicKeyToXOnly=r.processPublicKeyToXOnly;exports.stripHexPrefix=r.stripHexPrefix;exports.toXOnly=r.toXOnly;exports.uint8ArrayToHex=r.uint8ArrayToHex;exports.validateWalletPubkey=r.validateWalletPubkey;exports.createTaprootScriptPathSignOptions=R.createTaprootScriptPathSignOptions;exports.BITCOIN_ADDRESS_RE=c.BITCOIN_ADDRESS_RE;exports.HEX_RE=c.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=c.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=c.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=c.TXID_RE;exports.PeginManager=u.PeginManager;exports.VAULT_APP_NAME=u.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=u.buildFundingOutpointsCommitment;exports.buildVaultContext=u.buildVaultContext;exports.computeWotsBlockPublicKeysHash=u.computeWotsBlockPublicKeysHash;exports.deriveVaultRoot=u.deriveVaultRoot;exports.deriveWotsBlocksFromSeed=u.deriveWotsBlocksFromSeed;exports.estimateSubmitPeginRequestBatchGas=u.estimateSubmitPeginRequestBatchGas;exports.PayoutManager=p.PayoutManager;exports.computeHashlock=p.computeHashlock;exports.validateSecretAgainstHashlock=p.validateSecretAgainstHashlock;exports.ApplicationRegistryABI=_.ApplicationRegistryABI;exports.ProtocolParamsABI=_.ProtocolParamsABI;exports.BTCVaultRegistryABI=m.BTCVaultRegistryABI;exports.CONTRACT_ERRORS=P.CONTRACT_ERRORS;exports.extractErrorData=P.extractErrorData;exports.getContractErrorMessage=P.getContractErrorMessage;exports.handleContractError=P.handleContractError;exports.isKnownContractError=P.isKnownContractError;exports.BitcoinScriptType=o.BitcoinScriptType;exports.applyChangeOutputPolicy=o.applyChangeOutputPolicy;exports.calculateBtcTxHash=o.calculateBtcTxHash;exports.computeChangeOutputFeeSats=o.computeChangeOutputFeeSats;exports.computeMaxDeposit=o.computeMaxDeposit;exports.computePeginBaseFeeSats=o.computePeginBaseFeeSats;exports.getDustThreshold=o.getDustThreshold;exports.getPsbtInputFields=o.getPsbtInputFields;exports.getScriptType=o.getScriptType;exports.selectUtxosForPegin=o.selectUtxosForPegin;exports.shouldAddChangeOutput=o.shouldAddChangeOutput;exports.waitForTransactionReceiptSmartAware=o.waitForTransactionReceiptSmartAware;exports.BTC_DUST_SAT=t.BTC_DUST_SAT;exports.DUST_THRESHOLD=t.DUST_THRESHOLD;exports.FEE_SAFETY_MARGIN=t.FEE_SAFETY_MARGIN;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=t.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=t.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MAX_REASONABLE_PEGIN_VBYTES=t.MAX_REASONABLE_PEGIN_VBYTES;exports.P2TR_INPUT_SIZE=t.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=t.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=t.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=t.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=t.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=t.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=t.fundPeginTransaction;exports.parseUnfundedWasmTransaction=t.parseUnfundedWasmTransaction;exports.peginOutputCount=t.peginOutputCount;exports.rateBasedTxBufferFee=t.rateBasedTxBufferFee;exports.UtxoNotAvailableError=d.UtxoNotAvailableError;exports.assertUtxosAvailable=d.assertUtxosAvailable;exports.extractInputsFromTransaction=d.extractInputsFromTransaction;exports.findOverlappingPendingVaults=d.findOverlappingPendingVaults;exports.validateUtxosAvailable=d.validateUtxosAvailable;exports.MEMPOOL_API_URLS=i.MEMPOOL_API_URLS;exports.ViemVaultRegistryReader=i.ViemVaultRegistryReader;exports.getAddressTxs=i.getAddressTxs;exports.getAddressUtxos=i.getAddressUtxos;exports.getMempoolApiUrl=i.getMempoolApiUrl;exports.getNetworkFees=i.getNetworkFees;exports.getOutspend=i.getOutspend;exports.getTipHeight=i.getTipHeight;exports.getTxHex=i.getTxHex;exports.getTxInfo=i.getTxInfo;exports.getUtxoInfo=i.getUtxoInfo;exports.pushTx=i.pushTx;exports.validateOffchainParams=i.validateOffchainParams;exports.validatePegInConfiguration=i.validatePegInConfiguration;exports.validateTBVProtocolParams=i.validateTBVProtocolParams;exports.OnChainBtcVaultStatus=a.OnChainBtcVaultStatus;exports.ServerIdentityError=a.ServerIdentityError;exports.VaultProviderRpcClient=a.VaultProviderRpcClient;exports.ViemProtocolParamsReader=a.ViemProtocolParamsReader;exports.ViemUniversalChallengerReader=a.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=a.ViemVaultKeeperReader;exports.VpResponseValidationError=a.VpResponseValidationError;exports.VpTokenRegistry=a.VpTokenRegistry;exports.batchPollByProvider=a.batchPollByProvider;exports.createAuthenticatedVpClient=a.createAuthenticatedVpClient;exports.primeVpTokenRegistry=a.primeVpTokenRegistry;exports.resolveProtocolAddresses=a.resolveProtocolAddresses;exports.validateRequestDepositorClaimerArtifactsResponse=a.validateRequestDepositorClaimerArtifactsResponse;exports.verifyServerIdentity=a.verifyServerIdentity;exports.vpTokenRegistry=a.vpTokenRegistry;exports.AUTH_EXPIRED_DATA_KIND=s.AUTH_EXPIRED_DATA_KIND;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_BATCH_MAX_SIZE=s.VP_BATCH_MAX_SIZE;exports.VP_TERMINAL_FAILURE_STATUSES=s.VP_TERMINAL_FAILURE_STATUSES;exports.VP_TRANSIENT_STATUSES=s.VP_TRANSIENT_STATUSES;exports.isWotsMismatchError=g.isWotsMismatchError;exports.parseFundingOutpointsFromTx=g.parseFundingOutpointsFromTx;exports.BIP68NotMatureError=e.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=e.ClaimerPegoutStatusValue;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=e.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=e.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=e.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=e.REFUND_VSIZE;exports.RegisteredVaultVersionMismatchError=e.RegisteredVaultVersionMismatchError;exports.activateVault=e.activateVault;exports.buildAndBroadcastRefund=e.buildAndBroadcastRefund;exports.estimateRefundFeeSats=e.estimateRefundFeeSats;exports.isDepositAmountValid=e.isDepositAmountValid;exports.isPegoutTerminalStatus=e.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=e.isRecognizedPegoutStatus;exports.isRegisteredVaultVersionMismatchError=e.isRegisteredVaultVersionMismatchError;exports.runDepositorPresignFlow=e.runDepositorPresignFlow;exports.signDepositorGraph=e.signDepositorGraph;exports.submitWotsPublicKey=e.submitWotsPublicKey;exports.validateDepositAmount=e.validateDepositAmount;exports.validateMultiVaultDepositInputs=e.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=e.validateOnChainParticipantKeys;exports.validateProviderSelection=e.validateProviderSelection;exports.validateRemainingCapacity=e.validateRemainingCapacity;exports.validateVaultAmounts=e.validateVaultAmounts;exports.validateVaultProviderPubkey=e.validateVaultProviderPubkey;exports.verifyRegisteredVaultVersions=e.verifyRegisteredVaultVersions;exports.waitForPeginStatus=e.waitForPeginStatus;exports.ContractStatus=T.ContractStatus;exports.PeginAction=T.PeginAction;exports.canPerformAction=T.canPerformAction;exports.getPeginProtocolState=T.getPeginProtocolState;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("../challengeAssert-HNbugpqL.cjs"),l=require("@babylonlabs-io/babylon-tbv-rust-wasm"),n=require("../verifyScriptPathSchnorrSignature-Cl7tu77P.cjs"),S=require("../peginInput-DH6X4ITS.cjs"),A=require("../noPayout-lyIRiUyG.cjs"),r=require("../bitcoin-CHfKAhcI.cjs"),R=require("../signing-Bnsro0hE.cjs"),c=require("../validation-u8W7Lp2x.cjs"),u=require("../PeginManager-BvxfSwsr.cjs"),p=require("../PayoutManager-BZVEyi10.cjs"),_=require("../ApplicationRegistry.abi-BAPhJch3.cjs"),m=require("../BTCVaultRegistry.abi-JdeqLz4x.cjs"),P=require("../errors-CGcNP0rV.cjs"),o=require("../waitForTransactionReceiptSmartAware-U706oKTc.cjs"),t=require("../fundPeginTransaction-DuMwnytD.cjs"),d=require("../reservation-xTL2a9Q-.cjs"),i=require("../mempoolApi-NMiYQAXI.cjs"),a=require("../primeVpAuth-Brl_bnBH.cjs"),s=require("../types-WA0LrDk1.cjs"),g=require("../errors-Bu0H-dZD.cjs"),e=require("../buildAndBroadcastRefund-ob1n2iB3.cjs"),T=require("../peginState-BijNNT15.cjs");exports.buildChallengeAssertPsbt=E.buildChallengeAssertPsbt;exports.buildDepositorPayoutPsbt=E.buildDepositorPayoutPsbt;exports.computeNumLocalChallengers=E.computeNumLocalChallengers;Object.defineProperty(exports,"computeMinClaimValue",{enumerable:!0,get:()=>l.computeMinClaimValue});Object.defineProperty(exports,"computeMinPeginFee",{enumerable:!0,get:()=>l.computeMinPeginFee});Object.defineProperty(exports,"deriveVaultId",{enumerable:!0,get:()=>l.deriveVaultId});Object.defineProperty(exports,"expandAuthAnchor",{enumerable:!0,get:()=>l.expandAuthAnchor});Object.defineProperty(exports,"expandHashlockSecret",{enumerable:!0,get:()=>l.expandHashlockSecret});Object.defineProperty(exports,"expandWotsSeed",{enumerable:!0,get:()=>l.expandWotsSeed});exports.PsbtSubstitutionError=n.PsbtSubstitutionError;exports.assertPsbtUnsignedTxMatches=n.assertPsbtUnsignedTxMatches;exports.assertScriptPathSchnorrSignature=n.assertScriptPathSchnorrSignature;exports.buildPayoutPsbt=n.buildPayoutPsbt;exports.buildPeginTxFromFundedPrePegin=n.buildPeginTxFromFundedPrePegin;exports.buildPrePeginPsbt=n.buildPrePeginPsbt;exports.createPayoutScript=n.createPayoutScript;exports.extractPayoutSignature=n.extractPayoutSignature;exports.buildPeginInputPsbt=S.buildPeginInputPsbt;exports.extractPeginInputSignature=S.extractPeginInputSignature;exports.finalizePeginInputPsbt=S.finalizePeginInputPsbt;exports.buildNoPayoutPsbt=A.buildNoPayoutPsbt;exports.buildRefundPsbt=A.buildRefundPsbt;exports.deriveBip86ScriptPubKeyHex=r.deriveBip86ScriptPubKeyHex;exports.deriveNativeSegwitAddress=r.deriveNativeSegwitAddress;exports.deriveTaprootAddress=r.deriveTaprootAddress;exports.ensureHexPrefix=r.ensureHexPrefix;exports.formatSatoshisToBtc=r.formatSatoshisToBtc;exports.getNetwork=r.getNetwork;exports.getSortedXOnlyPubkeys=r.getSortedXOnlyPubkeys;exports.hexToUint8Array=r.hexToUint8Array;exports.isAddressFromPublicKey=r.isAddressFromPublicKey;exports.isValidHex=r.isValidHex;exports.processPublicKeyToXOnly=r.processPublicKeyToXOnly;exports.stripHexPrefix=r.stripHexPrefix;exports.toXOnly=r.toXOnly;exports.uint8ArrayToHex=r.uint8ArrayToHex;exports.validateWalletPubkey=r.validateWalletPubkey;exports.createTaprootScriptPathSignOptions=R.createTaprootScriptPathSignOptions;exports.BITCOIN_ADDRESS_RE=c.BITCOIN_ADDRESS_RE;exports.HEX_RE=c.HEX_RE;exports.KNOWN_SCRIPT_PREFIXES=c.KNOWN_SCRIPT_PREFIXES;exports.MAX_REASONABLE_FEE_SATS=c.MAX_REASONABLE_FEE_SATS;exports.TXID_RE=c.TXID_RE;exports.PeginManager=u.PeginManager;exports.VAULT_APP_NAME=u.VAULT_APP_NAME;exports.buildFundingOutpointsCommitment=u.buildFundingOutpointsCommitment;exports.buildVaultContext=u.buildVaultContext;exports.computeWotsBlockPublicKeysHash=u.computeWotsBlockPublicKeysHash;exports.deriveVaultRoot=u.deriveVaultRoot;exports.deriveWotsBlocksFromSeed=u.deriveWotsBlocksFromSeed;exports.estimateSubmitPeginRequestBatchGas=u.estimateSubmitPeginRequestBatchGas;exports.PayoutManager=p.PayoutManager;exports.computeHashlock=p.computeHashlock;exports.validateSecretAgainstHashlock=p.validateSecretAgainstHashlock;exports.ApplicationRegistryABI=_.ApplicationRegistryABI;exports.ProtocolParamsABI=_.ProtocolParamsABI;exports.BTCVaultRegistryABI=m.BTCVaultRegistryABI;exports.CONTRACT_ERRORS=P.CONTRACT_ERRORS;exports.extractErrorData=P.extractErrorData;exports.getContractErrorMessage=P.getContractErrorMessage;exports.handleContractError=P.handleContractError;exports.isKnownContractError=P.isKnownContractError;exports.BitcoinScriptType=o.BitcoinScriptType;exports.applyChangeOutputPolicy=o.applyChangeOutputPolicy;exports.calculateBtcTxHash=o.calculateBtcTxHash;exports.computeChangeOutputFeeSats=o.computeChangeOutputFeeSats;exports.computeMaxDeposit=o.computeMaxDeposit;exports.computePeginBaseFeeSats=o.computePeginBaseFeeSats;exports.getDustThreshold=o.getDustThreshold;exports.getPsbtInputFields=o.getPsbtInputFields;exports.getScriptType=o.getScriptType;exports.selectUtxosForPegin=o.selectUtxosForPegin;exports.shouldAddChangeOutput=o.shouldAddChangeOutput;exports.waitForTransactionReceiptSmartAware=o.waitForTransactionReceiptSmartAware;exports.BTC_DUST_SAT=t.BTC_DUST_SAT;exports.DUST_THRESHOLD=t.DUST_THRESHOLD;exports.FEE_SAFETY_MARGIN=t.FEE_SAFETY_MARGIN;exports.LOW_RATE_ESTIMATION_ACCURACY_BUFFER=t.LOW_RATE_ESTIMATION_ACCURACY_BUFFER;exports.MAX_NON_LEGACY_OUTPUT_SIZE=t.MAX_NON_LEGACY_OUTPUT_SIZE;exports.MAX_REASONABLE_PEGIN_VBYTES=t.MAX_REASONABLE_PEGIN_VBYTES;exports.P2TR_INPUT_SIZE=t.P2TR_INPUT_SIZE;exports.PEGIN_AUTH_ANCHOR_OUTPUTS=t.PEGIN_AUTH_ANCHOR_OUTPUTS;exports.PEGIN_FIXED_OUTPUTS=t.PEGIN_FIXED_OUTPUTS;exports.SPLIT_TX_FEE_SAFETY_MULTIPLIER=t.SPLIT_TX_FEE_SAFETY_MULTIPLIER;exports.TX_BUFFER_SIZE_OVERHEAD=t.TX_BUFFER_SIZE_OVERHEAD;exports.WALLET_RELAY_FEE_RATE_THRESHOLD=t.WALLET_RELAY_FEE_RATE_THRESHOLD;exports.fundPeginTransaction=t.fundPeginTransaction;exports.parseUnfundedWasmTransaction=t.parseUnfundedWasmTransaction;exports.peginOutputCount=t.peginOutputCount;exports.rateBasedTxBufferFee=t.rateBasedTxBufferFee;exports.UtxoNotAvailableError=d.UtxoNotAvailableError;exports.assertUtxosAvailable=d.assertUtxosAvailable;exports.extractInputsFromTransaction=d.extractInputsFromTransaction;exports.findOverlappingPendingVaults=d.findOverlappingPendingVaults;exports.validateUtxosAvailable=d.validateUtxosAvailable;exports.MEMPOOL_API_URLS=i.MEMPOOL_API_URLS;exports.ViemVaultRegistryReader=i.ViemVaultRegistryReader;exports.getAddressTxs=i.getAddressTxs;exports.getAddressUtxos=i.getAddressUtxos;exports.getMempoolApiUrl=i.getMempoolApiUrl;exports.getNetworkFees=i.getNetworkFees;exports.getOutspend=i.getOutspend;exports.getTipHeight=i.getTipHeight;exports.getTxHex=i.getTxHex;exports.getTxInfo=i.getTxInfo;exports.getUtxoInfo=i.getUtxoInfo;exports.pushTx=i.pushTx;exports.validateOffchainParams=i.validateOffchainParams;exports.validatePegInConfiguration=i.validatePegInConfiguration;exports.validateTBVProtocolParams=i.validateTBVProtocolParams;exports.OnChainBtcVaultStatus=a.OnChainBtcVaultStatus;exports.ServerIdentityError=a.ServerIdentityError;exports.VaultProviderRpcClient=a.VaultProviderRpcClient;exports.ViemProtocolParamsReader=a.ViemProtocolParamsReader;exports.ViemUniversalChallengerReader=a.ViemUniversalChallengerReader;exports.ViemVaultKeeperReader=a.ViemVaultKeeperReader;exports.VpResponseValidationError=a.VpResponseValidationError;exports.VpTokenRegistry=a.VpTokenRegistry;exports.batchPollByProvider=a.batchPollByProvider;exports.createAuthenticatedVpClient=a.createAuthenticatedVpClient;exports.primeVpTokenRegistry=a.primeVpTokenRegistry;exports.resolveProtocolAddresses=a.resolveProtocolAddresses;exports.validateRequestDepositorClaimerArtifactsResponse=a.validateRequestDepositorClaimerArtifactsResponse;exports.verifyServerIdentity=a.verifyServerIdentity;exports.vpTokenRegistry=a.vpTokenRegistry;exports.AUTH_EXPIRED_DATA_KIND=s.AUTH_EXPIRED_DATA_KIND;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_BATCH_MAX_SIZE=s.VP_BATCH_MAX_SIZE;exports.VP_TERMINAL_FAILURE_STATUSES=s.VP_TERMINAL_FAILURE_STATUSES;exports.VP_TRANSIENT_STATUSES=s.VP_TRANSIENT_STATUSES;exports.isWotsMismatchError=g.isWotsMismatchError;exports.parseFundingOutpointsFromTx=g.parseFundingOutpointsFromTx;exports.BIP68NotMatureError=e.BIP68NotMatureError;exports.ClaimerPegoutStatusValue=e.ClaimerPegoutStatusValue;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=e.REFUND_MAX_FEE_FRACTION_DENOMINATOR;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=e.REFUND_MAX_FEE_FRACTION_NUMERATOR;exports.REFUND_MAX_FEE_RATE_SATS_VB=e.REFUND_MAX_FEE_RATE_SATS_VB;exports.REFUND_VSIZE=e.REFUND_VSIZE;exports.RegisteredVaultVersionMismatchError=e.RegisteredVaultVersionMismatchError;exports.activateVault=e.activateVault;exports.buildAndBroadcastRefund=e.buildAndBroadcastRefund;exports.estimateRefundFeeSats=e.estimateRefundFeeSats;exports.isDepositAmountValid=e.isDepositAmountValid;exports.isPegoutTerminalStatus=e.isPegoutTerminalStatus;exports.isRecognizedPegoutStatus=e.isRecognizedPegoutStatus;exports.isRegisteredVaultVersionMismatchError=e.isRegisteredVaultVersionMismatchError;exports.runDepositorPresignFlow=e.runDepositorPresignFlow;exports.signDepositorGraph=e.signDepositorGraph;exports.submitWotsPublicKey=e.submitWotsPublicKey;exports.validateDepositAmount=e.validateDepositAmount;exports.validateMultiVaultDepositInputs=e.validateMultiVaultDepositInputs;exports.validateOnChainParticipantKeys=e.validateOnChainParticipantKeys;exports.validateProviderSelection=e.validateProviderSelection;exports.validateRemainingCapacity=e.validateRemainingCapacity;exports.validateVaultAmounts=e.validateVaultAmounts;exports.validateVaultProviderPubkey=e.validateVaultProviderPubkey;exports.verifyRegisteredVaultVersions=e.verifyRegisteredVaultVersions;exports.waitForPeginStatus=e.waitForPeginStatus;exports.ContractStatus=T.ContractStatus;exports.PeginAction=T.PeginAction;exports.canPerformAction=T.canPerformAction;exports.getPeginProtocolState=T.getPeginProtocolState;
2
2
  //# sourceMappingURL=index.cjs.map
package/dist/tbv/index.js CHANGED
@@ -15,10 +15,10 @@ import { B as fa, a as ba, f as Ia, c as Oa, b as Va, d as va, g as Ca, i as Fa,
15
15
  import { B as Da, D as Ma, F as Ha, L as La, M as Xa, c as ka, P as Wa, b as Ka, a as wa, S as Ga, T as Ya, W as Za, f as Ja, d as ja, p as qa, r as za } from "../fundPeginTransaction-96FxwYYJ.js";
16
16
  import { U as $a, a as ae, e as ee, f as se, v as te } from "../reservation-BxvKbQH2.js";
17
17
  import { M as oe, V as ie, g as ne, a as ue, b as le, c as pe, d as de, e as Pe, f as ce, h as Te, i as Ee, p as Se, v as Ae, j as _e, k as ge } from "../mempoolApi-Dc1KSVNI.js";
18
- import { O as me, S as xe, V as fe, g as be, h as Ie, i as Oe, a as Ve, d as ve, b as Ce, f as Fe, p as he, r as Ue, v as Ne, c as ye, e as Be } from "../primeVpAuth-CZsFLrHX.js";
18
+ import { O as me, S as xe, V as fe, g as be, h as Ie, i as Oe, a as Ve, d as ve, b as Ce, f as Fe, p as he, r as Ue, v as Ne, c as ye, e as Be } from "../primeVpAuth-BdrwraAe.js";
19
19
  import { A as Me, D as He, b as Le, J as Xe, a as ke, d as We, P as Ke, R as we, e as Ge, c as Ye, V as Ze } from "../types-CQDRQvV-.js";
20
20
  import { i as je, p as qe } from "../errors-9AkghWyk.js";
21
- import { B as Qe, C as $e, p as as, q as es, t as ss, u as ts, R as rs, a as os, n as is, o as ns, i as us, m as ls, l as ps, j as ds, r as Ps, b as cs, s as Ts, v as Es, g as Ss, h as As, d as _s, c as gs, e as Rs, f as ms, k as xs, w as fs } from "../buildAndBroadcastRefund-o9Byvkut.js";
21
+ import { B as Qe, C as $e, p as as, q as es, t as ss, u as ts, R as rs, a as os, n as is, o as ns, i as us, m as ls, l as ps, j as ds, r as Ps, b as cs, s as Ts, v as Es, g as Ss, h as As, d as _s, c as gs, e as Rs, f as ms, k as xs, w as fs } from "../buildAndBroadcastRefund-Bmz9WJuN.js";
22
22
  import { C as Is, P as Os, c as Vs, g as vs } from "../peginState-CBAlxgXk.js";
23
23
  export {
24
24
  Me as AUTH_EXPIRED_DATA_KIND,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonlabs-io/ts-sdk",
3
- "version": "0.48.5",
3
+ "version": "0.49.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1,2 +0,0 @@
1
- "use strict";var ee=Object.defineProperty;var te=(e,t,r)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var R=(e,t,r)=>te(e,typeof t!="symbol"?t+"":t,r);const re=require("./BTCVaultRegistry.abi-JdeqLz4x.cjs"),h=require("./bitcoin-CHfKAhcI.cjs"),F=require("./PayoutManager-BZVEyi10.cjs"),f=require("./types-WA0LrDk1.cjs"),_=require("bitcoinjs-lib"),b=require("./verifyScriptPathSchnorrSignature-Cl7tu77P.cjs"),I=require("./noPayout-lyIRiUyG.cjs"),V=require("./signing-Bnsro0hE.cjs"),X=require("@babylonlabs-io/babylon-tbv-rust-wasm"),ne=/^0x[0-9a-fA-F]{64}$/,oe=/^0x[0-9a-fA-F]{40}$/,ie=/^0x([0-9a-fA-F]{2})*$/;function C(e,t){if(e.length!==66)throw new Error(`${t} must be 32 bytes (66 hex chars with 0x prefix), got length ${e.length}`);if(!ne.test(e))throw new Error(`${t} must contain only hex characters after the 0x prefix`)}function ae(e,t){if(!oe.test(e))throw new Error(`${t} must be a 20-byte 0x-prefixed hex address (42 chars)`)}function se(e,t){if(!ie.test(e))throw new Error(`${t} must be a 0x-prefixed hex string with an even number of hex chars`)}async function ue(e){const{btcVaultRegistryAddress:t,vaultId:r,hashlock:n,activationMetadata:s,writeContract:u,signal:a}=e;a==null||a.throwIfAborted(),ae(t,"btcVaultRegistryAddress"),C(r,"vaultId");const o=h.ensureHexPrefix(e.secret);if(C(o,"secret"),n!==void 0&&(C(n,"hashlock"),!F.validateSecretAgainstHashlock(o,n)))throw new Error("Invalid secret: SHA256(secret) does not match the provided hashlock");return se(s,"activationMetadata"),u({address:t,abi:re.BTCVaultRegistryABI,functionName:"activateVaultWithSecret",args:[r,o,s]})}const le=1e4;async function M(e){const{statusReader:t,peginTxid:r,targetStatuses:n,timeoutMs:s,pollIntervalMs:u=le,signal:a}=e,o=Date.now();for(;;){if(a!=null&&a.aborted)throw new Error(`Polling aborted for pegin ${r.slice(0,8)}… (target: ${[...n].join(", ")})`);if(Date.now()-o>=s)throw new Error(`Polling timeout after ${s}ms for pegin ${r.slice(0,8)}… (target: ${[...n].join(", ")})`);try{const i=await t.getPeginStatus({pegin_txid:r},a);if(i.pegin_txid.toLowerCase()!==r.toLowerCase())throw new Error(`getPeginStatus returned status for pegin ${i.pegin_txid.slice(0,8)}…, requested ${r.slice(0,8)}…`);const l=i.status;if(n.has(l)||l===f.DaemonStatus.ACTIVATED)return l;if(l===f.DaemonStatus.EXPIRED||f.VP_TERMINAL_FAILURE_STATUSES.has(l))throw new Error(`Pegin ${r.slice(0,8)}… reached terminal status "${l}" while waiting for ${[...n].join(", ")}`)}catch(i){if(!(i instanceof f.JsonRpcError&&i.code===f.RpcErrorCode.PEGIN_NOT_FOUND))throw i}await new Promise((i,l)=>{const d=()=>{clearTimeout(c),l(new Error(`Polling aborted for pegin ${r.slice(0,8)}… (target: ${[...n].join(", ")})`))},c=setTimeout(()=>{a==null||a.removeEventListener("abort",d),i()},u);a==null||a.addEventListener("abort",d,{once:!0})})}}const ce=300*1e3,he=new Set([f.DaemonStatus.PENDING_DEPOSITOR_WOTS_PK,...f.POST_WOTS_STATUSES]);async function de(e){const{statusReader:t,wotsSubmitter:r,peginTxid:n,depositorPk:s,wotsPublicKeys:u,timeoutMs:a=ce,signal:o}=e;o==null||o.throwIfAborted();const i=await M({statusReader:t,peginTxid:n,targetStatuses:he,timeoutMs:a,signal:o});f.POST_WOTS_STATUSES.has(i)||(o==null||o.throwIfAborted(),await r.submitDepositorWotsKey({pegin_txid:n,depositor_pk:s,wots_public_keys:u},o))}const z=1,pe=1;function ge(e,t){const r=h.stripHexPrefix(t).toLowerCase(),s=e.map(u=>h.stripHexPrefix(u).toLowerCase()).filter(u=>u!==r);if(s.length===0)throw new Error("Cannot derive localChallengers: vault keeper set is empty (or contains only the depositor)");if(new Set(s).size!==s.length)throw new Error("Cannot derive localChallengers: duplicate vaultKeeper key — signing context is misconfigured");return s}function fe(e,t,r){const n=r.map(c=>h.stripHexPrefix(c).toLowerCase()),s=t.filter(c=>n.includes(c));if(s.length>0)throw new Error(`Cannot validate challenger set: vault keepers and universal challengers overlap (${s.join(", ")})`);const u=[...t,...n],a=e.map(c=>h.stripHexPrefix(c.challenger_pubkey).toLowerCase()),o=new Set(a);if(o.size!==a.length)throw new Error("Depositor graph contains duplicate challenger entries in challenger_presign_data");const i=new Set(u),l=u.filter(c=>!o.has(c)),d=a.filter(c=>!i.has(c));if(l.length>0||d.length>0)throw new Error("Depositor graph challenger set does not match expected (local ∪ universal)"+(l.length>0?` (missing: ${l.join(", ")})`:"")+(d.length>0?` (unexpected: ${d.join(", ")})`:""))}function Pe(e,t){const r=e.ins[t];return h.uint8ArrayToHex(new Uint8Array(r.hash).slice().reverse())}function B(e,t,r,n,s){const u=e.ins[t];if(u.index!==0)throw new Error(`NoPayout (challenger ${s}) input ${t} expected to spend ${n} vout 0, got vout ${u.index}`);const a=r.getId(),o=Pe(e,t);if(o!==a)throw new Error(`NoPayout (challenger ${s}) input ${t} does not reference ${n} (expected txid ${a}, got ${o})`)}async function me(e,t,r){const n=[],s=[],u=[],a=ge(r.vaultKeeperBtcPubkeys,r.depositorBtcPubkey);fe(e.challenger_presign_data,a,r.universalChallengerBtcPubkeys);const o=await b.buildPayoutPsbt({payoutTxHex:e.payout_tx.tx_hex,peginTxHex:r.peginTxHex,assertTxHex:e.assert_tx.tx_hex,depositorBtcPubkey:r.depositorBtcPubkey,vaultProviderBtcPubkey:r.vaultProviderBtcPubkey,vaultKeeperBtcPubkeys:r.vaultKeeperBtcPubkeys,universalChallengerBtcPubkeys:r.universalChallengerBtcPubkeys,timelockPegin:r.timelockPegin,network:r.network,claimerBtcPubkey:r.depositorBtcPubkey,registeredPayoutScriptPubKey:r.registeredPayoutScriptPubKey,commissionBps:pe});n.push(o.psbtHex),s.push(V.createTaprootScriptPathSignOptions(t,z));const i=h.stripHexPrefix(r.depositorBtcPubkey),l=_.Transaction.fromHex(h.stripHexPrefix(e.assert_tx.tx_hex));for(const d of e.challenger_presign_data){const c=h.stripHexPrefix(d.challenger_pubkey),p=n.length,y=await be({challenger:d,challengerPubkey:c,claimerPubkey:i,localChallengers:a,assertTxParsed:l,ctx:r});n.push(y),s.push(V.createTaprootScriptPathSignOptions(t,z)),u.push({challengerPubkey:c,noPayoutIdx:p})}return{psbtHexes:n,signOptions:s,challengerEntries:u}}async function be(e){const{challenger:t,challengerPubkey:r,claimerPubkey:n,localChallengers:s,assertTxParsed:u,ctx:a}=e;I.assertNoPayoutOutputMatchesChallenger(t.nopayout_tx.tx_hex,r,a.network);const o=_.Transaction.fromHex(h.stripHexPrefix(t.nopayout_tx.tx_hex)),i=_.Transaction.fromHex(h.stripHexPrefix(t.challenge_assert_x_tx.tx_hex)),l=_.Transaction.fromHex(h.stripHexPrefix(t.challenge_assert_y_tx.tx_hex));if(o.ins.length!==3)throw new Error(`NoPayout (challenger ${r}) must have exactly 3 inputs, got ${o.ins.length}`);B(o,0,u,"Assert",r),B(o,1,i,"ChallengeAssertX",r),B(o,2,l,"ChallengeAssertY",r);const d=[u.outs[0],i.outs[0],l.outs[0]].map(c=>({script_pubkey:h.uint8ArrayToHex(new Uint8Array(c.script)),value:c.value}));return I.buildNoPayoutPsbt({noPayoutTxHex:t.nopayout_tx.tx_hex,challengerPubkey:r,prevouts:d,connectorParams:{claimer:n,localChallengers:s,universalChallengers:a.universalChallengerBtcPubkeys,timelockAssert:a.timelockAssert,councilMembers:a.councilMembers,councilQuorum:a.councilQuorum}})}function ye(e,t,r){b.assertPsbtUnsignedTxMatches(e[0]);const s=b.extractPayoutSignature(e[0].returnedPsbtHex,r);b.assertScriptPathSchnorrSignature({requestedPsbtHex:e[0].requestedPsbtHex,signatureHex:s,signerXOnlyPubkeyHex:r,inputIndex:0});const u={};for(const a of t){b.assertPsbtUnsignedTxMatches(e[a.noPayoutIdx]);const o=b.extractPayoutSignature(e[a.noPayoutIdx].returnedPsbtHex,r);b.assertScriptPathSchnorrSignature({requestedPsbtHex:e[a.noPayoutIdx].requestedPsbtHex,signatureHex:o,signerXOnlyPubkeyHex:r,inputIndex:0}),u[a.challengerPubkey]={nopayout_signature:o}}return{payout_signatures:{payout_signature:s},per_challenger:u}}async function xe(e,t,r){if(typeof e.signPsbts=="function")return e.signPsbts(t,r);const n=[];for(let s=0;s<t.length;s++)n.push(await e.signPsbt(t[s],r==null?void 0:r[s]));return n}async function G(e){const{depositorGraph:t,btcWallet:r,signingContext:n}=e,s=await r.getPublicKeyHex(),{depositorPubkey:u}=h.validateWalletPubkey(s,h.stripHexPrefix(n.depositorBtcPubkey)),{psbtHexes:a,signOptions:o,challengerEntries:i}=await me(t,s,n),l=await xe(r,a,o);if(l.length!==a.length)throw new Error(`Wallet returned ${l.length} signed PSBTs, expected ${a.length}`);const d=a.map((c,p)=>({requestedPsbtHex:c,returnedPsbtHex:l[p]}));return ye(d,i,u)}const we=1200*1e3,W=new Set([f.DaemonStatus.PENDING_ACKS,f.DaemonStatus.PENDING_ACTIVATION,f.DaemonStatus.ACTIVATED_PENDING_BROADCAST,f.DaemonStatus.ACTIVATED]),ve=new Set([f.DaemonStatus.PENDING_DEPOSITOR_SIGNATURES,...W]);function Ee(e){return e.map(t=>({claimerPubkeyXOnly:h.processPublicKeyToXOnly(t.claimer_pubkey),payoutTxHex:t.payout_tx.tx_hex,assertTxHex:t.assert_tx.tx_hex}))}function S(e){return h.processPublicKeyToXOnly(e).toLowerCase()}function Te(e,t,r,n){const s=S(n),u=[S(t),...r.map(S)],a=new Set(u);if(a.size!==u.length)throw new Error("Cannot validate claimer set: signing context contains duplicate vault provider or vault keeper key");if(a.has(s))throw new Error("Cannot validate claimer set: depositor key overlaps with vault provider or vault keeper set");const o=e.map(p=>S(p.claimer_pubkey));if(new Set(o).size!==o.length)throw new Error("Presign response contains duplicate claimer entries");const i=o.filter(p=>p!==s),l=new Set(i),d=u.filter(p=>!l.has(p)),c=i.filter(p=>!a.has(p));if(d.length>0||c.length>0)throw new Error("Presign response claimer set does not match expected (vault provider ∪ vault keepers)"+(d.length>0?` (missing: ${d.join(", ")})`:"")+(c.length>0?` (unexpected: ${c.join(", ")})`:""))}function q(e,t){return{payoutTxHex:e.payoutTxHex,peginTxHex:t.peginTxHex,assertTxHex:e.assertTxHex,vaultProviderBtcPubkey:t.vaultProviderBtcPubkey,vaultKeeperBtcPubkeys:t.vaultKeeperBtcPubkeys,universalChallengerBtcPubkeys:t.universalChallengerBtcPubkeys,depositorBtcPubkey:t.depositorBtcPubkey,timelockPegin:t.timelockPegin,registeredPayoutScriptPubKey:t.registeredPayoutScriptPubKey,claimerBtcPubkey:e.claimerPubkeyXOnly,commissionBps:t.commissionBps}}async function Se(e,t,r,n){const s=new F.PayoutManager({network:t.network,btcWallet:e}),u=r.length;n==null||n(0,u);let a;if(s.supportsBatchSigning())a=(await s.signPayoutTransactionsBatch(r.map(l=>q(l,t)))).map(l=>l.payoutSignature);else{a=[];for(let i=0;i<r.length;i++){n==null||n(i,u);const l=await s.signPayoutTransaction(q(r[i],t));a.push(l.signature)}}const o={};for(let i=0;i<r.length;i++)o[r[i].claimerPubkeyXOnly]={payout_signature:a[i]};return n==null||n(u,u),o}async function _e(e){const{statusReader:t,presignClient:r,btcWallet:n,peginTxid:s,depositorPk:u,signingContext:a,timeoutMs:o=we,signal:i,onProgress:l}=e,d=await M({statusReader:t,peginTxid:s,targetStatuses:ve,timeoutMs:o,signal:i});if(W.has(d))return;i==null||i.throwIfAborted();const c=await r.requestDepositorPresignTransactions({pegin_txid:s,depositor_pk:u},i);i==null||i.throwIfAborted();const p=S(u);Te(c.txs,a.vaultProviderBtcPubkey,a.vaultKeeperBtcPubkeys,u);const y=c.txs.filter(x=>S(x.claimer_pubkey)!==p),P=Ee(y),w=await Se(n,a,P,l);i==null||i.throwIfAborted();const v=await G({depositorGraph:c.depositor_graph,btcWallet:n,signingContext:{peginTxHex:a.peginTxHex,depositorBtcPubkey:u,vaultProviderBtcPubkey:a.vaultProviderBtcPubkey,vaultKeeperBtcPubkeys:a.vaultKeeperBtcPubkeys,universalChallengerBtcPubkeys:a.universalChallengerBtcPubkeys,timelockPegin:a.timelockPegin,timelockAssert:a.timelockAssert,councilMembers:a.councilMembers,councilQuorum:a.councilQuorum,network:a.network,registeredPayoutScriptPubKey:a.registeredPayoutScriptPubKey}});i==null||i.throwIfAborted();const E={...w};E[h.stripHexPrefix(u)]=v.payout_signatures,await r.submitDepositorPresignatures({pegin_txid:s,depositor_pk:u,signatures:E,depositor_claimer_presignatures:v},i)}function ke(e){return/^[0-9a-fA-F]{64}$/.test(e)}function Ae(e){const{amountSats:t,minDeposit:r,maxDeposit:n,btcBalance:s,estimatedFeeSats:u,depositorClaimValue:a}=e;return!(t<=0n||t<r||n&&n>0n&&t>n||u==null||a==null||t+u+a>s)}function Re(e,t,r){return e<=0n?{valid:!1,error:"Deposit amount must be greater than zero"}:e<t?{valid:!1,error:`Minimum deposit is ${h.formatSatoshisToBtc(t)} BTC`}:r&&r>0n&&e>r?{valid:!1,error:`Maximum deposit is ${h.formatSatoshisToBtc(r)} BTC`}:{valid:!0}}function Ce(e){const{amount:t,effectiveRemaining:r}=e;return r===null?{valid:!0}:r===0n?{valid:!1,error:"Supply cap reached — deposits temporarily paused"}:t>r?{valid:!1,error:`Vault size exceeds remaining capacity (${h.formatSatoshisToBtc(r)} BTC)`}:{valid:!0}}function Be(e,t){if(!e||e.length===0)return{valid:!1,error:"At least one vault provider must be selected"};const r=t.map(s=>s.toLowerCase());return e.filter(s=>!r.includes(s.toLowerCase())).length>0?{valid:!1,error:"Invalid vault provider selected"}:{valid:!0}}function Q(e,t,r){if(!e||e.length===0)return{valid:!1,error:"At least one vault amount required"};for(let n=0;n<e.length;n++){const s=e[n];if(s<=0n)return{valid:!1,error:`Vault ${n+1} amount must be positive`};if(t&&s<t)return{valid:!1,error:`Vault ${n+1} amount ${h.formatSatoshisToBtc(s)} BTC is below minimum deposit ${h.formatSatoshisToBtc(t)} BTC`};if(r&&s>r)return{valid:!1,error:`Vault ${n+1} amount ${h.formatSatoshisToBtc(s)} BTC exceeds maximum deposit ${h.formatSatoshisToBtc(r)} BTC`}}return{valid:!0}}function j(e){const t=h.stripHexPrefix(e);return ke(t)?{valid:!0}:{valid:!1,error:"Invalid pubkey format: must be 64 hex characters (32-byte x-only public key, no 0x prefix)"}}function $e(e){if(!e||e.length===0)throw new Error("No vault keepers available. The system requires at least one vault keeper to create a deposit.")}function Ie(e){if(!e||e.length===0)throw new Error("No universal challengers available. The system requires at least one universal challenger to create a deposit.")}function Ve(e){if(e.length===0)throw new Error("No spendable UTXOs available")}function He(e){const{vaultAmounts:t,confirmedUTXOs:r,vaultProviderBtcPubkey:n,vaultKeeperBtcPubkeys:s,universalChallengerBtcPubkeys:u,minDeposit:a,maxDeposit:o}=e,i=Q(t,a,o);if(!i.valid)throw new Error(i.error);const l=j(n);if(!l.valid)throw new Error(l.error);$e(s),Ie(u),Ve(r)}async function Ne(e){const{vaultRegistryReader:t,vaultKeeperReader:r,universalChallengerReader:n,vaultProviderEthAddress:s,applicationEntryPoint:u,expectedVaultProviderBtcPubkey:a,expectedVaultKeeperBtcPubkeys:o,expectedUniversalChallengerBtcPubkeys:i}=e,[l,d,c]=await Promise.all([t.getVaultProviderBtcPubKey(s),r.getCurrentVaultKeepersVersion(u),n.getLatestUniversalChallengersVersion()]),[p,y]=await Promise.all([r.getVaultKeepersByVersion(u,d),n.getUniversalChallengersByVersion(c)]),P=g=>h.processPublicKeyToXOnly(g).toLowerCase(),w=g=>g.map(P).sort();if(P(a)!==l)throw new Error(`Vault provider BTC pubkey indexer hint does not match BTCVaultRegistry for ${s}. Refresh and try again.`);const E=w(o),x=w(p.map(g=>g.btcPubKey));if(E.length!==x.length||E.some((g,k)=>g!==x[k]))throw new Error(`Vault keeper BTC pubkeys (v${d}) indexer set does not match ApplicationRegistry on-chain set. Refresh and try again.`);const A=w(i),T=w(y.map(g=>g.btcPubKey));if(A.length!==T.length||A.some((g,k)=>g!==T[k]))throw new Error(`Universal challenger BTC pubkeys (v${c}) indexer set does not match ProtocolParams on-chain set. Refresh and try again.`);return{vaultProviderBtcPubkeyXOnly:l,vaultKeeperBtcPubkeysSorted:x,universalChallengerBtcPubkeysSorted:T,expectedAppVaultKeepersVersion:d,expectedUniversalChallengersVersion:c}}class K extends Error{constructor(t){super(t),this.name="RegisteredVaultVersionMismatchError"}}function Oe(e){return e instanceof K||e instanceof Error&&e.name==="RegisteredVaultVersionMismatchError"}async function De(e){const{vaultRegistryReader:t,vaultIds:r,expectedOffchainParamsVersion:n,expectedAppVaultKeepersVersion:s,expectedUniversalChallengersVersion:u}=e,a=await t.getProtocolInfoBatch(r),o=[];if(a.forEach((i,l)=>{const d=r[l];i.offchainParamsVersion!==n&&o.push(`vault ${d}: offchainParams expected v${n}, got v${i.offchainParamsVersion}`),i.appVaultKeepersVersion!==s&&o.push(`vault ${d}: appVaultKeepers expected v${s}, got v${i.appVaultKeepersVersion}`),i.universalChallengersVersion!==u&&o.push(`vault ${d}: universalChallengers expected v${u}, got v${i.universalChallengersVersion}`)}),o.length>0)throw new K(`Aborting BTC broadcast: signer-set or offchain-params versions changed during registration (${o.join("; ")}). The Pre-PegIn was not broadcast; the registered ETH vault will time out per protocol rules.`)}var U=(e=>(e.CLAIM_EVENT_RECEIVED="ClaimEventReceived",e.CLAIM_BROADCAST="ClaimBroadcast",e.ASSERT_BROADCAST="AssertBroadcast",e.PAYOUT_BROADCAST="PayoutBroadcast",e.PAYOUT_BLOCKED="PayoutBlocked",e))(U||{});const Fe=new Set(["PayoutBroadcast","PayoutBlocked"]);function Me(e){return Object.values(U).includes(e)}function Ke(e){return!!e&&Fe.has(e)}class Y extends Error{constructor(r,n){super(`Refund not yet mature (BIP68 not final): ${n.message}`);R(this,"vaultId");R(this,"cause");this.name="BIP68NotMatureError",this.vaultId=r,this.cause=n}}const Ue=/^0x[0-9a-fA-F]{64}$/,Le=/^(?:0x)?(?:[0-9a-fA-F]{2})+$/,Z=/^(?:0x)?(?:[0-9a-fA-F]{64}|[0-9a-fA-F]{66})$/,L=160,H=2e3,N=10n,O=100n;function Xe(e){if(!Number.isFinite(e)||e<=0)throw new Error(`feeRateSatsVb must be a positive finite number, got ${e}`);return BigInt(Math.ceil(e*L))}const ze=1,qe=/non-BIP68-final/i;function D(e,t){if(e.length!==66)throw new Error(`${t} must be 32 bytes (66 hex chars with 0x prefix), got length ${e.length}`);if(!Ue.test(e))throw new Error(`${t} must contain only hex characters after the 0x prefix`)}function $(e,t){if(!Number.isInteger(e)||e<0)throw new Error(`${t} must be a non-negative integer, got ${e}`)}function Ge(e){if(D(e.hashlock,"hashlock"),!Number.isInteger(e.htlcVout)||e.htlcVout<0)throw new Error(`htlcVout must be a non-negative integer, got ${e.htlcVout}`);if(!Array.isArray(e.batch)||e.batch.length===0)throw new Error("batch must be a non-empty array of HTLC entries");if(e.htlcVout>=e.batch.length)throw new Error(`htlcVout ${e.htlcVout} is out of range for batch of size ${e.batch.length}`);for(let r=0;r<e.batch.length;r++){const n=e.batch[r];if(D(n.hashlock,`batch[${r}].hashlock`),!Number.isInteger(n.htlcVout)||n.htlcVout!==r)throw new Error(`batch[${r}].htlcVout must equal ${r} (contiguous vout-ordered vector), got ${n.htlcVout}`);if(typeof n.amount!="bigint"||n.amount<=0n)throw new Error(`batch[${r}].amount must be a positive bigint, got ${n.amount}`)}const t=e.batch[e.htlcVout];if(t.hashlock.toLowerCase()!==e.hashlock.toLowerCase())throw new Error(`batch[${e.htlcVout}].hashlock (${t.hashlock}) does not match target hashlock (${e.hashlock})`);if(t.amount!==e.amount)throw new Error(`batch[${e.htlcVout}].amount (${t.amount}) does not match target amount (${e.amount})`);if($(e.offchainParamsVersion,"offchainParamsVersion"),$(e.appVaultKeepersVersion,"appVaultKeepersVersion"),$(e.universalChallengersVersion,"universalChallengersVersion"),typeof e.unsignedPrePeginTxHex!="string"||e.unsignedPrePeginTxHex.length===0)throw new Error("unsignedPrePeginTxHex must be a non-empty hex string");if(!Le.test(e.unsignedPrePeginTxHex))throw new Error("unsignedPrePeginTxHex must be a hex byte string (optional 0x prefix, even length)");if(!e.depositorBtcPubkey||!Z.test(e.depositorBtcPubkey))throw new Error("depositorBtcPubkey must be 32 or 33 bytes of hex (optional 0x prefix)");if(typeof e.amount!="bigint"||e.amount<=0n)throw new Error(`amount must be a positive bigint, got ${e.amount}`)}function We(e){if(!e.vaultProviderPubkey||!Z.test(e.vaultProviderPubkey))throw new Error("vaultProviderPubkey must be 32 or 33 bytes of hex");if(e.vaultKeeperPubkeys.length===0)throw new Error("vaultKeeperPubkeys must be non-empty");if(e.universalChallengerPubkeys.length===0)throw new Error("universalChallengerPubkeys must be non-empty");if(!Number.isInteger(e.timelockRefund)||e.timelockRefund<=0)throw new Error(`timelockRefund must be a positive integer, got ${e.timelockRefund}`);if(typeof e.feeRate!="bigint"||e.feeRate<=0n)throw new Error(`protocol feeRate must be a positive bigint, got ${e.feeRate}`);if(typeof e.minPeginFeeRate!="bigint"||e.minPeginFeeRate<=0n)throw new Error(`minPeginFeeRate must be a positive bigint, got ${e.minPeginFeeRate}`);if(!Number.isInteger(e.numLocalChallengers)||e.numLocalChallengers<0)throw new Error("numLocalChallengers must be a non-negative integer");if(!Number.isInteger(e.councilQuorum)||!Number.isInteger(e.councilSize)||e.councilQuorum<=0||e.councilSize<=0||e.councilQuorum>e.councilSize)throw new Error(`councilQuorum (${e.councilQuorum}) must be in [1, councilSize=${e.councilSize}]`)}async function Qe(e,t){const r=await X.computeMinClaimValue(t.numLocalChallengers,t.universalChallengerPubkeys.length,t.councilQuorum,t.councilSize,t.feeRate),n=await X.computeMinPeginFee(t.vaultKeeperPubkeys.length,t.universalChallengerPubkeys.length,t.minPeginFeeRate),s=r+n;return e.map((u,a)=>{const o=u.amount-s;if(o<=0n)throw new Error(`Re-derived peginAmount for batch[${a}] is non-positive (${o}): HTLC value ${u.amount} does not exceed depositorClaimValue ${r} + minPeginFee ${n}. Refusing to build a refund from an inconsistent (amount, protocol params) pair.`);return o})}function je(e){const t=_.Psbt.fromHex(e);try{t.finalizeAllInputs()}catch(r){const n=r instanceof Error?r.message:String(r);if(!n.includes("already finalized"))throw new Error(`Failed to finalize refund PSBT: ${n}`)}return t.extractTransaction().toHex()}async function Ye(e){const{vaultId:t,readVault:r,readPrePeginContext:n,feeRate:s,signPsbt:u,broadcastTx:a,signal:o}=e;o==null||o.throwIfAborted(),D(t,"vaultId");const i=await r();Ge(i),o==null||o.throwIfAborted();const l=await n(i);if(We(l),o==null||o.throwIfAborted(),!Number.isFinite(s)||s<=0)throw new Error(`feeRate must be a positive number, got ${s}`);if(s>H)throw new Error(`feeRate ${s} sat/vB exceeds refund safety cap ${H} sat/vB; refusing to sign refund.`);const d=BigInt(Math.ceil(s*L)),c=i.amount*N/O;if(d>c)throw new Error(`Refund fee ${d} sats exceeds the per-vault safety cap of ${c} sats (${N}/${O} of vault.amount=${i.amount}); refusing to sign refund.`);o==null||o.throwIfAborted();const p=h.processPublicKeyToXOnly(i.depositorBtcPubkey),y=h.stripHexPrefix(i.unsignedPrePeginTxHex),P=F.findAuthAnchorOpReturn(y);if(P!==void 0&&P.vout!==i.batch.length)throw new Error(`Auth-anchor OP_RETURN at vout ${P.vout} does not match batch size (${i.batch.length} HTLC outputs expect the anchor at vout ${i.batch.length}). Refund refused — sibling HTLC vector is incomplete.`);const w=P==null?void 0:P.hash;let v;try{v=_.Transaction.fromHex(y)}catch(m){throw new Error(`Failed to parse funded Pre-PegIn transaction hex: ${m instanceof Error?m.message:String(m)}`)}if(v.outs.length<i.batch.length)throw new Error(`Funded Pre-PegIn tx has ${v.outs.length} outputs but batch requires at least ${i.batch.length} HTLC outputs. Refund refused — funded tx shape disagrees with sibling vector.`);const E=await Qe(i.batch,l);o==null||o.throwIfAborted();const{psbtHex:x}=await I.buildRefundPsbt({prePeginParams:{depositorPubkey:p,vaultProviderPubkey:h.stripHexPrefix(l.vaultProviderPubkey),vaultKeeperPubkeys:l.vaultKeeperPubkeys.map(h.stripHexPrefix),universalChallengerPubkeys:l.universalChallengerPubkeys.map(h.stripHexPrefix),hashlocks:i.batch.map(m=>h.stripHexPrefix(m.hashlock)),timelockRefund:l.timelockRefund,pegInAmounts:E,feeRate:l.feeRate,minPeginFeeRate:l.minPeginFeeRate,numLocalChallengers:l.numLocalChallengers,councilQuorum:l.councilQuorum,councilSize:l.councilSize,network:l.network,authAnchorHash:w},fundedPrePeginTxHex:y,htlcVout:i.htlcVout,refundFee:d,hashlock:h.stripHexPrefix(i.hashlock)});o==null||o.throwIfAborted();const A=V.createTaprootScriptPathSignOptions(i.depositorBtcPubkey,ze),T=await u(x,A);b.assertPsbtUnsignedTxMatches({requestedPsbtHex:x,returnedPsbtHex:T});const g=0,k=b.extractPayoutSignature(T,p,g);b.assertScriptPathSchnorrSignature({requestedPsbtHex:x,signatureHex:k,signerXOnlyPubkeyHex:p,inputIndex:g});const J=je(T);o==null||o.throwIfAborted();try{return await a(J)}catch(m){throw m instanceof Error&&qe.test(m.message)?new Y(t,m):m}}exports.BIP68NotMatureError=Y;exports.ClaimerPegoutStatusValue=U;exports.REFUND_MAX_FEE_FRACTION_DENOMINATOR=O;exports.REFUND_MAX_FEE_FRACTION_NUMERATOR=N;exports.REFUND_MAX_FEE_RATE_SATS_VB=H;exports.REFUND_VSIZE=L;exports.RegisteredVaultVersionMismatchError=K;exports.activateVault=ue;exports.buildAndBroadcastRefund=Ye;exports.estimateRefundFeeSats=Xe;exports.isDepositAmountValid=Ae;exports.isPegoutTerminalStatus=Ke;exports.isRecognizedPegoutStatus=Me;exports.isRegisteredVaultVersionMismatchError=Oe;exports.runDepositorPresignFlow=_e;exports.signDepositorGraph=G;exports.submitWotsPublicKey=de;exports.validateDepositAmount=Re;exports.validateMultiVaultDepositInputs=He;exports.validateOnChainParticipantKeys=Ne;exports.validateProviderSelection=Be;exports.validateRemainingCapacity=Ce;exports.validateVaultAmounts=Q;exports.validateVaultProviderPubkey=j;exports.verifyRegisteredVaultVersions=De;exports.waitForPeginStatus=M;
2
- //# sourceMappingURL=buildAndBroadcastRefund-BOtxUi05.cjs.map