@t2000/sdk 9.7.1 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1152,6 +1152,19 @@ async function payWithMpp(args) {
1152
1152
  }
1153
1153
  const requirements = await pickSuiExactRequirements(probe, client.network);
1154
1154
  if (requirements) {
1155
+ const { isX402EscrowRequirements } = await import('@suimpp/mpp/x402');
1156
+ if (isX402EscrowRequirements(requirements)) {
1157
+ const escrow = requirements.extra.escrow;
1158
+ const price = atomicToHuman(
1159
+ BigInt(requirements.maxAmountRequired),
1160
+ await assetDecimals(requirements.asset)
1161
+ );
1162
+ throw new exports.T2000Error(
1163
+ "ESCROW_REQUIRED",
1164
+ `This endpoint sells deliverable work through on-chain escrow, not an instant call. Create a job instead: t2 job create ${price} ${requirements.payTo} --spec <your-brief> \u2014 funds lock in a Job object and release on delivery. No payment was made.`,
1165
+ { payTo: requirements.payTo, priceUsdc: price, escrow }
1166
+ );
1167
+ }
1155
1168
  const result = await payViaX402({ signer, client, options, reqInit, requirements });
1156
1169
  await reportDirectPayment(result, options.url);
1157
1170
  return result;
@@ -3137,10 +3150,23 @@ init_errors();
3137
3150
  init_token_registry();
3138
3151
  init_preflight();
3139
3152
  init_coinSelection();
3140
- var A2A_ESCROW_PACKAGE_ID = process.env.A2A_ESCROW_PACKAGE_ID ?? "0x9e67c380fb7079d793d6d15ff916b24d82779d7119bfa4631863102ed485c0a0";
3153
+ var A2A_ESCROW_PACKAGE_ID = process.env.A2A_ESCROW_PACKAGE_ID ?? "0x88de0d2a5f36691c0b198637350b9cedfa9ba300ed322851b184bda97859508b";
3154
+ var A2A_ESCROW_FEE_CONFIG_ID = process.env.A2A_ESCROW_FEE_CONFIG_ID ?? "0x2800f55a924c408ecdebfd20bafa03257f0830426720e5ad5cb26294e82f038f";
3155
+ var A2A_ESCROW_FEE_CONFIG_VERSION = Number(
3156
+ process.env.A2A_ESCROW_FEE_CONFIG_VERSION ?? 790540335
3157
+ );
3141
3158
  var CLOCK_ID2 = "0x6";
3142
3159
  var MODULE = "escrow";
3160
+ function feeConfigArg(tx) {
3161
+ return tx.sharedObjectRef({
3162
+ objectId: A2A_ESCROW_FEE_CONFIG_ID,
3163
+ initialSharedVersion: A2A_ESCROW_FEE_CONFIG_VERSION,
3164
+ mutable: false
3165
+ });
3166
+ }
3143
3167
  var MAX_JOB_USDC = 50;
3168
+ var MAX_REVIEW_WINDOW_MS = 2592e6;
3169
+ var MAX_DELIVER_HORIZON_MS = 31536e6;
3144
3170
  var JOB_STATES = [
3145
3171
  "funded",
3146
3172
  "delivered",
@@ -3183,8 +3209,11 @@ function preflightCreateJob(terms) {
3183
3209
  if (terms.deliverByMs <= Date.now()) {
3184
3210
  return preflightFail("INVALID_AMOUNT", "deliverByMs must be in the future.");
3185
3211
  }
3186
- if (terms.reviewWindowMs < 0) {
3187
- return preflightFail("INVALID_AMOUNT", "reviewWindowMs must be \u2265 0.");
3212
+ if (terms.deliverByMs > Date.now() + MAX_DELIVER_HORIZON_MS) {
3213
+ return preflightFail("INVALID_AMOUNT", "deliverByMs is more than 365 days out.");
3214
+ }
3215
+ if (terms.reviewWindowMs < 0 || terms.reviewWindowMs > MAX_REVIEW_WINDOW_MS) {
3216
+ return preflightFail("INVALID_AMOUNT", "reviewWindowMs must be 0\u201330 days.");
3188
3217
  }
3189
3218
  if (!Number.isInteger(terms.rejectSplitBps) || terms.rejectSplitBps < 0 || terms.rejectSplitBps > 1e4) {
3190
3219
  return preflightFail("INVALID_AMOUNT", "rejectSplitBps must be an integer 0\u201310000.");
@@ -3222,6 +3251,7 @@ async function buildCreateJobTx({
3222
3251
  tx.pure.u64(terms.deliverByMs),
3223
3252
  tx.pure.u64(terms.reviewWindowMs),
3224
3253
  tx.pure.u64(terms.rejectSplitBps),
3254
+ feeConfigArg(tx),
3225
3255
  tx.object(CLOCK_ID2)
3226
3256
  ]
3227
3257
  });
@@ -3232,7 +3262,7 @@ function jobCall(jobId, fn) {
3232
3262
  tx.moveCall({
3233
3263
  target: `${A2A_ESCROW_PACKAGE_ID}::${MODULE}::${fn}`,
3234
3264
  typeArguments: [exports.USDC_TYPE],
3235
- arguments: [tx.object(jobId), tx.object(CLOCK_ID2)]
3265
+ arguments: [tx.object(jobId), feeConfigArg(tx), tx.object(CLOCK_ID2)]
3236
3266
  });
3237
3267
  return tx;
3238
3268
  }
@@ -3244,6 +3274,7 @@ function buildDeliverJobTx(jobId, deliveryHash) {
3244
3274
  arguments: [
3245
3275
  tx.object(jobId),
3246
3276
  tx.pure.vector("u8", hexToBytes2(deliveryHash)),
3277
+ feeConfigArg(tx),
3247
3278
  tx.object(CLOCK_ID2)
3248
3279
  ]
3249
3280
  });
@@ -3284,6 +3315,7 @@ async function getJob(client, jobId) {
3284
3315
  seller: String(json.seller),
3285
3316
  amountUsdc: Number(json.amount) / 10 ** USDC_DECIMALS,
3286
3317
  escrowUsdc: Number(json.escrow) / 10 ** USDC_DECIMALS,
3318
+ feeBps: Number(json.fee_bps ?? 0),
3287
3319
  specHash: bytesToHex2(json.spec_hash ?? []),
3288
3320
  deliverByMs: Number(json.deliver_by_ms),
3289
3321
  reviewWindowMs: Number(json.review_window_ms),
@@ -3758,6 +3790,7 @@ function displayHandle(label, parentName = AUDRIC_PARENT_NAME) {
3758
3790
  // src/index.ts
3759
3791
  init_preflight();
3760
3792
 
3793
+ exports.A2A_ESCROW_FEE_CONFIG_ID = A2A_ESCROW_FEE_CONFIG_ID;
3761
3794
  exports.A2A_ESCROW_PACKAGE_ID = A2A_ESCROW_PACKAGE_ID;
3762
3795
  exports.AGENT_ID_PARENT = AGENT_ID_PARENT;
3763
3796
  exports.AGENT_ID_PARENT_NAME = AGENT_ID_PARENT_NAME;
@@ -3780,7 +3813,9 @@ exports.KeypairSigner = KeypairSigner;
3780
3813
  exports.LABEL_PATTERNS = LABEL_PATTERNS;
3781
3814
  exports.LimitEnforcer = LimitEnforcer;
3782
3815
  exports.LimitExceededError = LimitExceededError;
3816
+ exports.MAX_DELIVER_HORIZON_MS = MAX_DELIVER_HORIZON_MS;
3783
3817
  exports.MAX_JOB_USDC = MAX_JOB_USDC;
3818
+ exports.MAX_REVIEW_WINDOW_MS = MAX_REVIEW_WINDOW_MS;
3784
3819
  exports.MIST_PER_SUI = MIST_PER_SUI;
3785
3820
  exports.OPERATION_ASSETS = OPERATION_ASSETS;
3786
3821
  exports.SENDABLE_ASSETS = SENDABLE_ASSETS;