@atumlabs/payment-gateway-client 3.0.0 → 3.0.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.
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /*
3
- * Copyright (c) 2026 Atum Labs, Inc. All rights reserved.
4
- * Proprietary and confidential.
5
- * Access and use are governed by the LICENSE file distributed with this package.
6
- * Do not remove, alter, or obscure this notice.
3
+ * Copyright 2026 Atum Labs, Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
7
5
  */
8
6
  "use strict";
9
7
  var __create = Object.create;
@@ -12,11 +10,20 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
10
  var __getOwnPropNames = Object.getOwnPropertyNames;
13
11
  var __getProtoOf = Object.getPrototypeOf;
14
12
  var __hasOwnProp = Object.prototype.hasOwnProperty;
15
- var __esm = (fn, res) => function __init() {
16
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
13
+ var __esm = (fn, res, err) => function __init() {
14
+ if (err) throw err[0];
15
+ try {
16
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
17
+ } catch (e) {
18
+ throw err = [e], e;
19
+ }
17
20
  };
18
21
  var __commonJS = (cb, mod) => function __require() {
19
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ try {
23
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
24
+ } catch (e) {
25
+ throw mod = 0, e;
26
+ }
20
27
  };
21
28
  var __copyProps = (to, from, except, desc) => {
22
29
  if (from && typeof from === "object" || typeof from === "function") {
@@ -2101,7 +2108,7 @@ var require_errors2 = __commonJS({
2101
2108
  "../contracts/svm/escrow-encoding/typescript/dist/errors.js"(exports2) {
2102
2109
  "use strict";
2103
2110
  Object.defineProperty(exports2, "__esModule", { value: true });
2104
- exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroSourceAmountError = exports2.ZeroQuoteHashError = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = void 0;
2111
+ exports2.InvalidEscrowDomainError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroSourceAmountError = exports2.ZeroQuoteHashError = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = void 0;
2105
2112
  var EncodingError = class extends Error {
2106
2113
  constructor(message) {
2107
2114
  super(message);
@@ -2214,6 +2221,13 @@ var require_errors2 = __commonJS({
2214
2221
  }
2215
2222
  };
2216
2223
  exports2.DestinationTooLongError = DestinationTooLongError;
2224
+ var InvalidEscrowDomainError = class extends EncodingError {
2225
+ constructor(message) {
2226
+ super(message);
2227
+ this.name = "InvalidEscrowDomainError";
2228
+ }
2229
+ };
2230
+ exports2.InvalidEscrowDomainError = InvalidEscrowDomainError;
2217
2231
  }
2218
2232
  });
2219
2233
 
@@ -2922,12 +2936,17 @@ var require_escrow_domain = __commonJS({
2922
2936
  "use strict";
2923
2937
  Object.defineProperty(exports2, "__esModule", { value: true });
2924
2938
  exports2.escrowDomainPrefixBytes = escrowDomainPrefixBytes;
2939
+ exports2.newEscrowDomain = newEscrowDomain;
2940
+ var errors_1 = require_errors2();
2925
2941
  function escrowDomainPrefixBytes(domain) {
2926
2942
  if (domain.clusterId.length !== 32) {
2927
- throw new Error(`EscrowDomain.clusterId must be 32 bytes, got ${domain.clusterId.length}`);
2943
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.clusterId must be 32 bytes, got ${domain.clusterId.length}`);
2944
+ }
2945
+ if (domain.programId.isZero()) {
2946
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain.programId cannot be zero");
2928
2947
  }
2929
2948
  if (!Number.isInteger(domain.signatureDomainVersion) || domain.signatureDomainVersion < 1 || domain.signatureDomainVersion > 255) {
2930
- throw new Error(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${domain.signatureDomainVersion}`);
2949
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${domain.signatureDomainVersion}`);
2931
2950
  }
2932
2951
  return [
2933
2952
  new TextEncoder().encode("escrow"),
@@ -2936,6 +2955,25 @@ var require_escrow_domain = __commonJS({
2936
2955
  domain.programId.toBytes()
2937
2956
  ];
2938
2957
  }
2958
+ function newEscrowDomain(clusterName, signatureDomainVersion, programId) {
2959
+ const trimmed = clusterName.trim();
2960
+ if (trimmed.length === 0) {
2961
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain cluster name cannot be empty");
2962
+ }
2963
+ const encoded = new TextEncoder().encode(trimmed);
2964
+ if (encoded.length > 32) {
2965
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain cluster name "${trimmed}" exceeds 32 bytes`);
2966
+ }
2967
+ if (!Number.isInteger(signatureDomainVersion) || signatureDomainVersion < 1 || signatureDomainVersion > 255) {
2968
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${signatureDomainVersion}`);
2969
+ }
2970
+ if (programId.isZero()) {
2971
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain.programId cannot be zero");
2972
+ }
2973
+ const clusterId = new Uint8Array(32);
2974
+ clusterId.set(encoded);
2975
+ return { clusterId, signatureDomainVersion, programId };
2976
+ }
2939
2977
  }
2940
2978
  });
2941
2979
 
@@ -3134,7 +3172,7 @@ var require_dist4 = __commonJS({
3134
3172
  "../contracts/svm/escrow-encoding/typescript/dist/index.js"(exports2) {
3135
3173
  "use strict";
3136
3174
  Object.defineProperty(exports2, "__esModule", { value: true });
3137
- exports2.DEPOSIT_COMPUTE_UNIT_LIMIT = exports2.REPLAY_BUCKETS = exports2.MAX_VALID_SLOT = exports2.REPLAY_SLOTS = exports2.generateNonce = exports2.computeRefundHashV2 = exports2.computeRefundHash = exports2.computeReleaseHashV2 = exports2.computeReleaseHash = exports2.computeReserveHashV3 = exports2.computeReserveHashV2 = exports2.computeReserveHash = exports2.MAX_DESTINATION_LEN = exports2.computeDestinationHash = exports2.computeDepositHashV2 = exports2.computeDepositHash = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroQuoteHashError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = exports2.escrowDomainPrefixBytes = exports2.isZeroBytes32 = exports2.stringToBytes = exports2.keccak256 = exports2.encodeU64LE = exports2.Pubkey = void 0;
3175
+ exports2.DEPOSIT_COMPUTE_UNIT_LIMIT = exports2.REPLAY_BUCKETS = exports2.MAX_VALID_SLOT = exports2.REPLAY_SLOTS = exports2.generateNonce = exports2.computeRefundHashV2 = exports2.computeRefundHash = exports2.computeReleaseHashV2 = exports2.computeReleaseHash = exports2.computeReserveHashV3 = exports2.computeReserveHashV2 = exports2.computeReserveHash = exports2.MAX_DESTINATION_LEN = exports2.computeDestinationHash = exports2.computeDepositHashV2 = exports2.computeDepositHash = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.InvalidEscrowDomainError = exports2.ZeroSourceAmountError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroQuoteHashError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = exports2.newEscrowDomain = exports2.escrowDomainPrefixBytes = exports2.isZeroBytes32 = exports2.stringToBytes = exports2.keccak256 = exports2.encodeU64LE = exports2.Pubkey = void 0;
3138
3176
  var pubkey_1 = require_pubkey();
3139
3177
  Object.defineProperty(exports2, "Pubkey", { enumerable: true, get: function() {
3140
3178
  return pubkey_1.Pubkey;
@@ -3156,6 +3194,9 @@ var require_dist4 = __commonJS({
3156
3194
  Object.defineProperty(exports2, "escrowDomainPrefixBytes", { enumerable: true, get: function() {
3157
3195
  return escrow_domain_1.escrowDomainPrefixBytes;
3158
3196
  } });
3197
+ Object.defineProperty(exports2, "newEscrowDomain", { enumerable: true, get: function() {
3198
+ return escrow_domain_1.newEscrowDomain;
3199
+ } });
3159
3200
  var errors_1 = require_errors2();
3160
3201
  Object.defineProperty(exports2, "EncodingError", { enumerable: true, get: function() {
3161
3202
  return errors_1.EncodingError;
@@ -3193,6 +3234,12 @@ var require_dist4 = __commonJS({
3193
3234
  Object.defineProperty(exports2, "ZeroDepositHashError", { enumerable: true, get: function() {
3194
3235
  return errors_1.ZeroDepositHashError;
3195
3236
  } });
3237
+ Object.defineProperty(exports2, "ZeroSourceAmountError", { enumerable: true, get: function() {
3238
+ return errors_1.ZeroSourceAmountError;
3239
+ } });
3240
+ Object.defineProperty(exports2, "InvalidEscrowDomainError", { enumerable: true, get: function() {
3241
+ return errors_1.InvalidEscrowDomainError;
3242
+ } });
3196
3243
  Object.defineProperty(exports2, "InvalidPubkeyLengthError", { enumerable: true, get: function() {
3197
3244
  return errors_1.InvalidPubkeyLengthError;
3198
3245
  } });
@@ -4878,6 +4925,9 @@ var PaymentGatewayClient = class {
4878
4925
  }
4879
4926
  };
4880
4927
 
4928
+ // src/timeout-http-request.ts
4929
+ var import_axios2 = __toESM(require("axios"));
4930
+
4881
4931
  // src/errors.ts
4882
4932
  var GatewayTimeoutError = class extends Error {
4883
4933
  constructor(baseUrl, timeoutMs) {
@@ -4941,6 +4991,12 @@ function isAxiosTimeout(error) {
4941
4991
  if (failure.code === "ECONNABORTED" || failure.code === "ETIMEDOUT") return true;
4942
4992
  return failure.code === "ERR_BAD_RESPONSE" && /stream has been aborted/i.test(failure.message ?? "");
4943
4993
  }
4994
+ function dropPartialResponseOnTimeout(error) {
4995
+ if (isAxiosTimeout(error) && error !== null && typeof error === "object" && "response" in error) {
4996
+ delete error.response;
4997
+ }
4998
+ return error;
4999
+ }
4944
5000
  function translateTimeout(error, baseUrl, fallbackTimeoutMs) {
4945
5001
  if (!isAxiosTimeout(error)) return error;
4946
5002
  const configured = error.config?.timeout;
@@ -4948,6 +5004,11 @@ function translateTimeout(error, baseUrl, fallbackTimeoutMs) {
4948
5004
  }
4949
5005
 
4950
5006
  // src/timeout-http-request.ts
5007
+ var timeoutAxios = import_axios2.default.create();
5008
+ timeoutAxios.interceptors.response.use(
5009
+ void 0,
5010
+ (error) => Promise.reject(dropPartialResponseOnTimeout(error))
5011
+ );
4951
5012
  function withRequestTimeout(config2, timeouts) {
4952
5013
  const request2 = new Interceptors();
4953
5014
  for (const fn of config2?.interceptors?.request?._fns ?? []) request2.use(fn);
@@ -4963,7 +5024,7 @@ var TimeoutHttpRequest = class extends AxiosHttpRequest {
4963
5024
  }
4964
5025
  request(options) {
4965
5026
  return new CancelablePromise((resolve2, reject, onCancel) => {
4966
- const pending = super.request(options);
5027
+ const pending = request(this.config, options, timeoutAxios);
4967
5028
  onCancel(() => pending.cancel());
4968
5029
  pending.then(resolve2, (error) => {
4969
5030
  const request2 = { method: options.method, url: options.url, wait: options.query?.wait };
@@ -5530,8 +5591,8 @@ var PaymentGatewayClient2 = class extends PaymentGatewayClient {
5530
5591
  // reasonable against that type - would otherwise build an EIP-712 domain around a
5531
5592
  // null verifyingContract.
5532
5593
  permit2Contract: data.permit2_contract ?? void 0,
5533
- // Which deposit witness the escrow on this chain pins (CORE-2033). Absent means the
5534
- // four-member CORE-2120 witness — see ChainDefaults.depositWitnessVersion for why
5594
+ // Which deposit witness the escrow on this chain pins. Absent means the
5595
+ // four-member witness — see ChainDefaults.depositWitnessVersion for why
5535
5596
  // absence is the permissive default. EVM/Tron only; Solana uses the svm_* fields below.
5536
5597
  depositWitnessVersion: data.deposit_witness_version ?? void 0,
5537
5598
  // V3 Solana escrow domain separation. Present only for Solana
@@ -5717,7 +5778,7 @@ var PaymentGatewayClient2 = class extends PaymentGatewayClient {
5717
5778
  };
5718
5779
 
5719
5780
  // src/version.ts
5720
- var PACKAGE_VERSION = true ? "3.0.0" : "0.0.0-dev";
5781
+ var PACKAGE_VERSION = true ? "3.0.1" : "0.0.0-dev";
5721
5782
 
5722
5783
  // src/cli/load-env.ts
5723
5784
  var import_dotenv = require("dotenv");
@@ -5758,7 +5819,7 @@ function describePaymentOutcome(input) {
5758
5819
  summary: `completed: ${payment} settled.${replay}`
5759
5820
  };
5760
5821
  }
5761
- if (status === "failed" || status === "cancelled") {
5822
+ if (status === "failed") {
5762
5823
  const reason = errorCode ? ` (${errorCode})` : "";
5763
5824
  return {
5764
5825
  exitCode: EXIT_TERMINAL_FAILURE,
@@ -5784,7 +5845,7 @@ program.name("payment-status").description("Fetch the status of a payment (no si
5784
5845
  Example:
5785
5846
  payment-status --gateway http://localhost:8080 0x<payment_id>
5786
5847
 
5787
- Status values: pending | completed | failed | cancelled
5848
+ Status values: pending | finalizing | completed | failed
5788
5849
 
5789
5850
  Output:
5790
5851
  Response JSON -> stdout (for parsing/automation, e.g. | jq)
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /*
3
- * Copyright (c) 2026 Atum Labs, Inc. All rights reserved.
4
- * Proprietary and confidential.
5
- * Access and use are governed by the LICENSE file distributed with this package.
6
- * Do not remove, alter, or obscure this notice.
3
+ * Copyright 2026 Atum Labs, Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
7
5
  */
8
6
  "use strict";
9
7
  var __create = Object.create;
@@ -12,11 +10,20 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
10
  var __getOwnPropNames = Object.getOwnPropertyNames;
13
11
  var __getProtoOf = Object.getPrototypeOf;
14
12
  var __hasOwnProp = Object.prototype.hasOwnProperty;
15
- var __esm = (fn, res) => function __init() {
16
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
13
+ var __esm = (fn, res, err) => function __init() {
14
+ if (err) throw err[0];
15
+ try {
16
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
17
+ } catch (e) {
18
+ throw err = [e], e;
19
+ }
17
20
  };
18
21
  var __commonJS = (cb, mod) => function __require() {
19
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ try {
23
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
24
+ } catch (e) {
25
+ throw mod = 0, e;
26
+ }
20
27
  };
21
28
  var __copyProps = (to, from, except, desc) => {
22
29
  if (from && typeof from === "object" || typeof from === "function") {
@@ -2101,7 +2108,7 @@ var require_errors2 = __commonJS({
2101
2108
  "../contracts/svm/escrow-encoding/typescript/dist/errors.js"(exports2) {
2102
2109
  "use strict";
2103
2110
  Object.defineProperty(exports2, "__esModule", { value: true });
2104
- exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroSourceAmountError = exports2.ZeroQuoteHashError = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = void 0;
2111
+ exports2.InvalidEscrowDomainError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroSourceAmountError = exports2.ZeroQuoteHashError = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = void 0;
2105
2112
  var EncodingError = class extends Error {
2106
2113
  constructor(message) {
2107
2114
  super(message);
@@ -2214,6 +2221,13 @@ var require_errors2 = __commonJS({
2214
2221
  }
2215
2222
  };
2216
2223
  exports2.DestinationTooLongError = DestinationTooLongError;
2224
+ var InvalidEscrowDomainError = class extends EncodingError {
2225
+ constructor(message) {
2226
+ super(message);
2227
+ this.name = "InvalidEscrowDomainError";
2228
+ }
2229
+ };
2230
+ exports2.InvalidEscrowDomainError = InvalidEscrowDomainError;
2217
2231
  }
2218
2232
  });
2219
2233
 
@@ -2922,12 +2936,17 @@ var require_escrow_domain = __commonJS({
2922
2936
  "use strict";
2923
2937
  Object.defineProperty(exports2, "__esModule", { value: true });
2924
2938
  exports2.escrowDomainPrefixBytes = escrowDomainPrefixBytes;
2939
+ exports2.newEscrowDomain = newEscrowDomain;
2940
+ var errors_1 = require_errors2();
2925
2941
  function escrowDomainPrefixBytes(domain) {
2926
2942
  if (domain.clusterId.length !== 32) {
2927
- throw new Error(`EscrowDomain.clusterId must be 32 bytes, got ${domain.clusterId.length}`);
2943
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.clusterId must be 32 bytes, got ${domain.clusterId.length}`);
2944
+ }
2945
+ if (domain.programId.isZero()) {
2946
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain.programId cannot be zero");
2928
2947
  }
2929
2948
  if (!Number.isInteger(domain.signatureDomainVersion) || domain.signatureDomainVersion < 1 || domain.signatureDomainVersion > 255) {
2930
- throw new Error(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${domain.signatureDomainVersion}`);
2949
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${domain.signatureDomainVersion}`);
2931
2950
  }
2932
2951
  return [
2933
2952
  new TextEncoder().encode("escrow"),
@@ -2936,6 +2955,25 @@ var require_escrow_domain = __commonJS({
2936
2955
  domain.programId.toBytes()
2937
2956
  ];
2938
2957
  }
2958
+ function newEscrowDomain(clusterName, signatureDomainVersion, programId) {
2959
+ const trimmed = clusterName.trim();
2960
+ if (trimmed.length === 0) {
2961
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain cluster name cannot be empty");
2962
+ }
2963
+ const encoded = new TextEncoder().encode(trimmed);
2964
+ if (encoded.length > 32) {
2965
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain cluster name "${trimmed}" exceeds 32 bytes`);
2966
+ }
2967
+ if (!Number.isInteger(signatureDomainVersion) || signatureDomainVersion < 1 || signatureDomainVersion > 255) {
2968
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${signatureDomainVersion}`);
2969
+ }
2970
+ if (programId.isZero()) {
2971
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain.programId cannot be zero");
2972
+ }
2973
+ const clusterId = new Uint8Array(32);
2974
+ clusterId.set(encoded);
2975
+ return { clusterId, signatureDomainVersion, programId };
2976
+ }
2939
2977
  }
2940
2978
  });
2941
2979
 
@@ -3134,7 +3172,7 @@ var require_dist4 = __commonJS({
3134
3172
  "../contracts/svm/escrow-encoding/typescript/dist/index.js"(exports2) {
3135
3173
  "use strict";
3136
3174
  Object.defineProperty(exports2, "__esModule", { value: true });
3137
- exports2.DEPOSIT_COMPUTE_UNIT_LIMIT = exports2.REPLAY_BUCKETS = exports2.MAX_VALID_SLOT = exports2.REPLAY_SLOTS = exports2.generateNonce = exports2.computeRefundHashV2 = exports2.computeRefundHash = exports2.computeReleaseHashV2 = exports2.computeReleaseHash = exports2.computeReserveHashV3 = exports2.computeReserveHashV2 = exports2.computeReserveHash = exports2.MAX_DESTINATION_LEN = exports2.computeDestinationHash = exports2.computeDepositHashV2 = exports2.computeDepositHash = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroQuoteHashError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = exports2.escrowDomainPrefixBytes = exports2.isZeroBytes32 = exports2.stringToBytes = exports2.keccak256 = exports2.encodeU64LE = exports2.Pubkey = void 0;
3175
+ exports2.DEPOSIT_COMPUTE_UNIT_LIMIT = exports2.REPLAY_BUCKETS = exports2.MAX_VALID_SLOT = exports2.REPLAY_SLOTS = exports2.generateNonce = exports2.computeRefundHashV2 = exports2.computeRefundHash = exports2.computeReleaseHashV2 = exports2.computeReleaseHash = exports2.computeReserveHashV3 = exports2.computeReserveHashV2 = exports2.computeReserveHash = exports2.MAX_DESTINATION_LEN = exports2.computeDestinationHash = exports2.computeDepositHashV2 = exports2.computeDepositHash = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.InvalidEscrowDomainError = exports2.ZeroSourceAmountError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroQuoteHashError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = exports2.newEscrowDomain = exports2.escrowDomainPrefixBytes = exports2.isZeroBytes32 = exports2.stringToBytes = exports2.keccak256 = exports2.encodeU64LE = exports2.Pubkey = void 0;
3138
3176
  var pubkey_1 = require_pubkey();
3139
3177
  Object.defineProperty(exports2, "Pubkey", { enumerable: true, get: function() {
3140
3178
  return pubkey_1.Pubkey;
@@ -3156,6 +3194,9 @@ var require_dist4 = __commonJS({
3156
3194
  Object.defineProperty(exports2, "escrowDomainPrefixBytes", { enumerable: true, get: function() {
3157
3195
  return escrow_domain_1.escrowDomainPrefixBytes;
3158
3196
  } });
3197
+ Object.defineProperty(exports2, "newEscrowDomain", { enumerable: true, get: function() {
3198
+ return escrow_domain_1.newEscrowDomain;
3199
+ } });
3159
3200
  var errors_1 = require_errors2();
3160
3201
  Object.defineProperty(exports2, "EncodingError", { enumerable: true, get: function() {
3161
3202
  return errors_1.EncodingError;
@@ -3193,6 +3234,12 @@ var require_dist4 = __commonJS({
3193
3234
  Object.defineProperty(exports2, "ZeroDepositHashError", { enumerable: true, get: function() {
3194
3235
  return errors_1.ZeroDepositHashError;
3195
3236
  } });
3237
+ Object.defineProperty(exports2, "ZeroSourceAmountError", { enumerable: true, get: function() {
3238
+ return errors_1.ZeroSourceAmountError;
3239
+ } });
3240
+ Object.defineProperty(exports2, "InvalidEscrowDomainError", { enumerable: true, get: function() {
3241
+ return errors_1.InvalidEscrowDomainError;
3242
+ } });
3196
3243
  Object.defineProperty(exports2, "InvalidPubkeyLengthError", { enumerable: true, get: function() {
3197
3244
  return errors_1.InvalidPubkeyLengthError;
3198
3245
  } });
@@ -4878,6 +4925,9 @@ var PaymentGatewayClient = class {
4878
4925
  }
4879
4926
  };
4880
4927
 
4928
+ // src/timeout-http-request.ts
4929
+ var import_axios2 = __toESM(require("axios"));
4930
+
4881
4931
  // src/errors.ts
4882
4932
  var GatewayTimeoutError = class extends Error {
4883
4933
  constructor(baseUrl, timeoutMs) {
@@ -4941,6 +4991,12 @@ function isAxiosTimeout(error) {
4941
4991
  if (failure.code === "ECONNABORTED" || failure.code === "ETIMEDOUT") return true;
4942
4992
  return failure.code === "ERR_BAD_RESPONSE" && /stream has been aborted/i.test(failure.message ?? "");
4943
4993
  }
4994
+ function dropPartialResponseOnTimeout(error) {
4995
+ if (isAxiosTimeout(error) && error !== null && typeof error === "object" && "response" in error) {
4996
+ delete error.response;
4997
+ }
4998
+ return error;
4999
+ }
4944
5000
  function translateTimeout(error, baseUrl, fallbackTimeoutMs) {
4945
5001
  if (!isAxiosTimeout(error)) return error;
4946
5002
  const configured = error.config?.timeout;
@@ -4948,6 +5004,11 @@ function translateTimeout(error, baseUrl, fallbackTimeoutMs) {
4948
5004
  }
4949
5005
 
4950
5006
  // src/timeout-http-request.ts
5007
+ var timeoutAxios = import_axios2.default.create();
5008
+ timeoutAxios.interceptors.response.use(
5009
+ void 0,
5010
+ (error) => Promise.reject(dropPartialResponseOnTimeout(error))
5011
+ );
4951
5012
  function withRequestTimeout(config2, timeouts) {
4952
5013
  const request2 = new Interceptors();
4953
5014
  for (const fn of config2?.interceptors?.request?._fns ?? []) request2.use(fn);
@@ -4963,7 +5024,7 @@ var TimeoutHttpRequest = class extends AxiosHttpRequest {
4963
5024
  }
4964
5025
  request(options) {
4965
5026
  return new CancelablePromise((resolve2, reject, onCancel) => {
4966
- const pending = super.request(options);
5027
+ const pending = request(this.config, options, timeoutAxios);
4967
5028
  onCancel(() => pending.cancel());
4968
5029
  pending.then(resolve2, (error) => {
4969
5030
  const request2 = { method: options.method, url: options.url, wait: options.query?.wait };
@@ -5530,8 +5591,8 @@ var PaymentGatewayClient2 = class extends PaymentGatewayClient {
5530
5591
  // reasonable against that type - would otherwise build an EIP-712 domain around a
5531
5592
  // null verifyingContract.
5532
5593
  permit2Contract: data.permit2_contract ?? void 0,
5533
- // Which deposit witness the escrow on this chain pins (CORE-2033). Absent means the
5534
- // four-member CORE-2120 witness — see ChainDefaults.depositWitnessVersion for why
5594
+ // Which deposit witness the escrow on this chain pins. Absent means the
5595
+ // four-member witness — see ChainDefaults.depositWitnessVersion for why
5535
5596
  // absence is the permissive default. EVM/Tron only; Solana uses the svm_* fields below.
5536
5597
  depositWitnessVersion: data.deposit_witness_version ?? void 0,
5537
5598
  // V3 Solana escrow domain separation. Present only for Solana
@@ -5717,7 +5778,7 @@ var PaymentGatewayClient2 = class extends PaymentGatewayClient {
5717
5778
  };
5718
5779
 
5719
5780
  // src/version.ts
5720
- var PACKAGE_VERSION = true ? "3.0.0" : "0.0.0-dev";
5781
+ var PACKAGE_VERSION = true ? "3.0.1" : "0.0.0-dev";
5721
5782
 
5722
5783
  // src/cli/load-env.ts
5723
5784
  var import_dotenv = require("dotenv");
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  /*
3
- * Copyright (c) 2026 Atum Labs, Inc. All rights reserved.
4
- * Proprietary and confidential.
5
- * Access and use are governed by the LICENSE file distributed with this package.
6
- * Do not remove, alter, or obscure this notice.
3
+ * Copyright 2026 Atum Labs, Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
7
5
  */
8
6
  "use strict";
9
7
  var __create = Object.create;
@@ -12,11 +10,20 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
10
  var __getOwnPropNames = Object.getOwnPropertyNames;
13
11
  var __getProtoOf = Object.getPrototypeOf;
14
12
  var __hasOwnProp = Object.prototype.hasOwnProperty;
15
- var __esm = (fn, res) => function __init() {
16
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
13
+ var __esm = (fn, res, err) => function __init() {
14
+ if (err) throw err[0];
15
+ try {
16
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
17
+ } catch (e) {
18
+ throw err = [e], e;
19
+ }
17
20
  };
18
21
  var __commonJS = (cb, mod) => function __require() {
19
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ try {
23
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
24
+ } catch (e) {
25
+ throw mod = 0, e;
26
+ }
20
27
  };
21
28
  var __copyProps = (to, from, except, desc) => {
22
29
  if (from && typeof from === "object" || typeof from === "function") {
@@ -2101,7 +2108,7 @@ var require_errors2 = __commonJS({
2101
2108
  "../contracts/svm/escrow-encoding/typescript/dist/errors.js"(exports2) {
2102
2109
  "use strict";
2103
2110
  Object.defineProperty(exports2, "__esModule", { value: true });
2104
- exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroSourceAmountError = exports2.ZeroQuoteHashError = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = void 0;
2111
+ exports2.InvalidEscrowDomainError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroSourceAmountError = exports2.ZeroQuoteHashError = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = void 0;
2105
2112
  var EncodingError = class extends Error {
2106
2113
  constructor(message) {
2107
2114
  super(message);
@@ -2214,6 +2221,13 @@ var require_errors2 = __commonJS({
2214
2221
  }
2215
2222
  };
2216
2223
  exports2.DestinationTooLongError = DestinationTooLongError;
2224
+ var InvalidEscrowDomainError = class extends EncodingError {
2225
+ constructor(message) {
2226
+ super(message);
2227
+ this.name = "InvalidEscrowDomainError";
2228
+ }
2229
+ };
2230
+ exports2.InvalidEscrowDomainError = InvalidEscrowDomainError;
2217
2231
  }
2218
2232
  });
2219
2233
 
@@ -2922,12 +2936,17 @@ var require_escrow_domain = __commonJS({
2922
2936
  "use strict";
2923
2937
  Object.defineProperty(exports2, "__esModule", { value: true });
2924
2938
  exports2.escrowDomainPrefixBytes = escrowDomainPrefixBytes;
2939
+ exports2.newEscrowDomain = newEscrowDomain;
2940
+ var errors_1 = require_errors2();
2925
2941
  function escrowDomainPrefixBytes(domain) {
2926
2942
  if (domain.clusterId.length !== 32) {
2927
- throw new Error(`EscrowDomain.clusterId must be 32 bytes, got ${domain.clusterId.length}`);
2943
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.clusterId must be 32 bytes, got ${domain.clusterId.length}`);
2944
+ }
2945
+ if (domain.programId.isZero()) {
2946
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain.programId cannot be zero");
2928
2947
  }
2929
2948
  if (!Number.isInteger(domain.signatureDomainVersion) || domain.signatureDomainVersion < 1 || domain.signatureDomainVersion > 255) {
2930
- throw new Error(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${domain.signatureDomainVersion}`);
2949
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${domain.signatureDomainVersion}`);
2931
2950
  }
2932
2951
  return [
2933
2952
  new TextEncoder().encode("escrow"),
@@ -2936,6 +2955,25 @@ var require_escrow_domain = __commonJS({
2936
2955
  domain.programId.toBytes()
2937
2956
  ];
2938
2957
  }
2958
+ function newEscrowDomain(clusterName, signatureDomainVersion, programId) {
2959
+ const trimmed = clusterName.trim();
2960
+ if (trimmed.length === 0) {
2961
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain cluster name cannot be empty");
2962
+ }
2963
+ const encoded = new TextEncoder().encode(trimmed);
2964
+ if (encoded.length > 32) {
2965
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain cluster name "${trimmed}" exceeds 32 bytes`);
2966
+ }
2967
+ if (!Number.isInteger(signatureDomainVersion) || signatureDomainVersion < 1 || signatureDomainVersion > 255) {
2968
+ throw new errors_1.InvalidEscrowDomainError(`EscrowDomain.signatureDomainVersion must be an integer in 1..=255, got ${signatureDomainVersion}`);
2969
+ }
2970
+ if (programId.isZero()) {
2971
+ throw new errors_1.InvalidEscrowDomainError("EscrowDomain.programId cannot be zero");
2972
+ }
2973
+ const clusterId = new Uint8Array(32);
2974
+ clusterId.set(encoded);
2975
+ return { clusterId, signatureDomainVersion, programId };
2976
+ }
2939
2977
  }
2940
2978
  });
2941
2979
 
@@ -3134,7 +3172,7 @@ var require_dist4 = __commonJS({
3134
3172
  "../contracts/svm/escrow-encoding/typescript/dist/index.js"(exports2) {
3135
3173
  "use strict";
3136
3174
  Object.defineProperty(exports2, "__esModule", { value: true });
3137
- exports2.DEPOSIT_COMPUTE_UNIT_LIMIT = exports2.REPLAY_BUCKETS = exports2.MAX_VALID_SLOT = exports2.REPLAY_SLOTS = exports2.generateNonce = exports2.computeRefundHashV2 = exports2.computeRefundHash = exports2.computeReleaseHashV2 = exports2.computeReleaseHash = exports2.computeReserveHashV3 = exports2.computeReserveHashV2 = exports2.computeReserveHash = exports2.MAX_DESTINATION_LEN = exports2.computeDestinationHash = exports2.computeDepositHashV2 = exports2.computeDepositHash = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroQuoteHashError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = exports2.escrowDomainPrefixBytes = exports2.isZeroBytes32 = exports2.stringToBytes = exports2.keccak256 = exports2.encodeU64LE = exports2.Pubkey = void 0;
3175
+ exports2.DEPOSIT_COMPUTE_UNIT_LIMIT = exports2.REPLAY_BUCKETS = exports2.MAX_VALID_SLOT = exports2.REPLAY_SLOTS = exports2.generateNonce = exports2.computeRefundHashV2 = exports2.computeRefundHash = exports2.computeReleaseHashV2 = exports2.computeReleaseHash = exports2.computeReserveHashV3 = exports2.computeReserveHashV2 = exports2.computeReserveHash = exports2.MAX_DESTINATION_LEN = exports2.computeDestinationHash = exports2.computeDepositHashV2 = exports2.computeDepositHash = exports2.InvalidHexError = exports2.InvalidBase58Error = exports2.InvalidPubkeyLengthError = exports2.InvalidEscrowDomainError = exports2.ZeroSourceAmountError = exports2.ZeroDepositHashError = exports2.ZeroRecipientError = exports2.ZeroReleaserError = exports2.ZeroReserverError = exports2.ZeroAmountError = exports2.ZeroMintError = exports2.ZeroDepositorError = exports2.DestinationTooLongError = exports2.EmptyDestinationError = exports2.ZeroQuoteHashError = exports2.ZeroDepositRequestHashError = exports2.EncodingError = exports2.newEscrowDomain = exports2.escrowDomainPrefixBytes = exports2.isZeroBytes32 = exports2.stringToBytes = exports2.keccak256 = exports2.encodeU64LE = exports2.Pubkey = void 0;
3138
3176
  var pubkey_1 = require_pubkey();
3139
3177
  Object.defineProperty(exports2, "Pubkey", { enumerable: true, get: function() {
3140
3178
  return pubkey_1.Pubkey;
@@ -3156,6 +3194,9 @@ var require_dist4 = __commonJS({
3156
3194
  Object.defineProperty(exports2, "escrowDomainPrefixBytes", { enumerable: true, get: function() {
3157
3195
  return escrow_domain_1.escrowDomainPrefixBytes;
3158
3196
  } });
3197
+ Object.defineProperty(exports2, "newEscrowDomain", { enumerable: true, get: function() {
3198
+ return escrow_domain_1.newEscrowDomain;
3199
+ } });
3159
3200
  var errors_1 = require_errors2();
3160
3201
  Object.defineProperty(exports2, "EncodingError", { enumerable: true, get: function() {
3161
3202
  return errors_1.EncodingError;
@@ -3193,6 +3234,12 @@ var require_dist4 = __commonJS({
3193
3234
  Object.defineProperty(exports2, "ZeroDepositHashError", { enumerable: true, get: function() {
3194
3235
  return errors_1.ZeroDepositHashError;
3195
3236
  } });
3237
+ Object.defineProperty(exports2, "ZeroSourceAmountError", { enumerable: true, get: function() {
3238
+ return errors_1.ZeroSourceAmountError;
3239
+ } });
3240
+ Object.defineProperty(exports2, "InvalidEscrowDomainError", { enumerable: true, get: function() {
3241
+ return errors_1.InvalidEscrowDomainError;
3242
+ } });
3196
3243
  Object.defineProperty(exports2, "InvalidPubkeyLengthError", { enumerable: true, get: function() {
3197
3244
  return errors_1.InvalidPubkeyLengthError;
3198
3245
  } });
@@ -4878,6 +4925,9 @@ var PaymentGatewayClient = class {
4878
4925
  }
4879
4926
  };
4880
4927
 
4928
+ // src/timeout-http-request.ts
4929
+ var import_axios2 = __toESM(require("axios"));
4930
+
4881
4931
  // src/errors.ts
4882
4932
  var GatewayTimeoutError = class extends Error {
4883
4933
  constructor(baseUrl, timeoutMs) {
@@ -4941,6 +4991,12 @@ function isAxiosTimeout(error) {
4941
4991
  if (failure.code === "ECONNABORTED" || failure.code === "ETIMEDOUT") return true;
4942
4992
  return failure.code === "ERR_BAD_RESPONSE" && /stream has been aborted/i.test(failure.message ?? "");
4943
4993
  }
4994
+ function dropPartialResponseOnTimeout(error) {
4995
+ if (isAxiosTimeout(error) && error !== null && typeof error === "object" && "response" in error) {
4996
+ delete error.response;
4997
+ }
4998
+ return error;
4999
+ }
4944
5000
  function translateTimeout(error, baseUrl, fallbackTimeoutMs) {
4945
5001
  if (!isAxiosTimeout(error)) return error;
4946
5002
  const configured = error.config?.timeout;
@@ -4948,6 +5004,11 @@ function translateTimeout(error, baseUrl, fallbackTimeoutMs) {
4948
5004
  }
4949
5005
 
4950
5006
  // src/timeout-http-request.ts
5007
+ var timeoutAxios = import_axios2.default.create();
5008
+ timeoutAxios.interceptors.response.use(
5009
+ void 0,
5010
+ (error) => Promise.reject(dropPartialResponseOnTimeout(error))
5011
+ );
4951
5012
  function withRequestTimeout(config2, timeouts) {
4952
5013
  const request2 = new Interceptors();
4953
5014
  for (const fn of config2?.interceptors?.request?._fns ?? []) request2.use(fn);
@@ -4963,7 +5024,7 @@ var TimeoutHttpRequest = class extends AxiosHttpRequest {
4963
5024
  }
4964
5025
  request(options) {
4965
5026
  return new CancelablePromise((resolve2, reject, onCancel) => {
4966
- const pending = super.request(options);
5027
+ const pending = request(this.config, options, timeoutAxios);
4967
5028
  onCancel(() => pending.cancel());
4968
5029
  pending.then(resolve2, (error) => {
4969
5030
  const request2 = { method: options.method, url: options.url, wait: options.query?.wait };
@@ -5530,8 +5591,8 @@ var PaymentGatewayClient2 = class extends PaymentGatewayClient {
5530
5591
  // reasonable against that type - would otherwise build an EIP-712 domain around a
5531
5592
  // null verifyingContract.
5532
5593
  permit2Contract: data.permit2_contract ?? void 0,
5533
- // Which deposit witness the escrow on this chain pins (CORE-2033). Absent means the
5534
- // four-member CORE-2120 witness — see ChainDefaults.depositWitnessVersion for why
5594
+ // Which deposit witness the escrow on this chain pins. Absent means the
5595
+ // four-member witness — see ChainDefaults.depositWitnessVersion for why
5535
5596
  // absence is the permissive default. EVM/Tron only; Solana uses the svm_* fields below.
5536
5597
  depositWitnessVersion: data.deposit_witness_version ?? void 0,
5537
5598
  // V3 Solana escrow domain separation. Present only for Solana
@@ -5746,7 +5807,7 @@ function runCli(program2, ...parseArgs) {
5746
5807
  }
5747
5808
 
5748
5809
  // src/version.ts
5749
- var PACKAGE_VERSION = true ? "3.0.0" : "0.0.0-dev";
5810
+ var PACKAGE_VERSION = true ? "3.0.1" : "0.0.0-dev";
5750
5811
 
5751
5812
  // src/cli/load-env.ts
5752
5813
  var import_dotenv = require("dotenv");