@interest-protocol/xswap-sdk 1.0.2 → 1.0.4

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.mjs CHANGED
@@ -1,18 +1,19 @@
1
1
  import invariant from 'tiny-invariant';
2
2
  import { z } from 'zod';
3
3
 
4
- const MAINNET_PACKAGE_ID = '0x90db0c50c4e1de33ce47efad1b66268697e3cc7c6e078408b73706b9800e8029';
5
- const ENCLAVE_CAP_OBJECT_ID = '0x77603cae7a47a0b626849a693881ce388b06cfe4064e078593e59dd9c30dcb73';
6
- const ENCLAVE_OBJECT_ID = '0x6a3114a47361653001fdaf82c2bd8a2fe05e1f1a04f00ccc0761663827b1362f';
7
- const ENCLAVE_INITIAL_SHARED_VERSION = '782601414';
4
+ const ORIGINAL_PACKAGE_ID = '0xb188334e53f795fe12f0b516716d5b0b8024ddf51482df23525fd599c875edfa';
5
+ const MAINNET_PACKAGE_ID = '0xb188334e53f795fe12f0b516716d5b0b8024ddf51482df23525fd599c875edfa';
6
+ const ENCLAVE_CAP_OBJECT_ID = '0xe0f1b062c6ce742b8659e59ca29f8ebed7a926c292b4f8fc479ed82c04997abf';
7
+ const ENCLAVE_OBJECT_ID = '0x73ed1600688bde2ffaaf8669ed0292809ae86c6945f076daa369c093060f7f04';
8
+ const ENCLAVE_INITIAL_SHARED_VERSION = '788631979';
8
9
  const ENCLAVE_SHARED_OBJECT_DATA = {
9
10
  objectId: ENCLAVE_OBJECT_ID,
10
11
  initialSharedVersion: ENCLAVE_INITIAL_SHARED_VERSION,
11
12
  };
12
- const ADMIN_CAP_OBJECT_ID = '0xf7ab8d9fe74d1879ca16c4e789c10e06db91aa16de432c62dc979c8c7a7c4ae6';
13
- const UPGRADE_CAP_OBJECT_ID = '0xb8b11297b8d15f2a654eb9825f0ef78a4d231af3cfd289ac6182a64e59690124';
14
- const XSWAP_OBJECT_ID = '0xf1c5200b411c1ddc496a442bf4bfdf656072dde47338fa6cd5f6ef9e896a4250';
15
- const XSWAP_INITIAL_SHARED_VERSION = '781617911';
13
+ const ADMIN_CAP_OBJECT_ID = '0xbab05412dc7b3eeb9ae441d73c86f1f3442b49cf6ca4f34c5ca59c3c0dded688';
14
+ const UPGRADE_CAP_OBJECT_ID = '0xa4e1aaf8a79289e097ffb3f7ac3ea7882fddf81329596fc25645b1e3d68dd1fc';
15
+ const XSWAP_OBJECT_ID = '0xcbc04da0c892ca1f9d170976e84ff45dc6ae3439f01cbc93b3f06855c6c3e8a7';
16
+ const XSWAP_INITIAL_SHARED_VERSION = '788588232';
16
17
  const XSWAP_SHARED_OBJECT_DATA = {
17
18
  objectId: XSWAP_OBJECT_ID,
18
19
  initialSharedVersion: XSWAP_INITIAL_SHARED_VERSION,
@@ -27,8 +28,8 @@ const Modules = {
27
28
  XSwap: 'xswap',
28
29
  Structs: 'structs',
29
30
  };
30
- const WITNESS_TYPE = `${MAINNET_PACKAGE_ID}::${Modules.XSwap}::Witness`;
31
- const XSWAP_TYPE = `${MAINNET_PACKAGE_ID}::${Modules.XSwap}::XSWAP`;
31
+ const WITNESS_TYPE = `${ORIGINAL_PACKAGE_ID}::${Modules.XSwap}::Witness`;
32
+ const XSWAP_TYPE = `${ORIGINAL_PACKAGE_ID}::${Modules.XSwap}::XSWAP`;
32
33
  const Functions = {
33
34
  InitApp: 'init_app',
34
35
  NewRequest: 'new_request',
@@ -46,7 +47,8 @@ const Functions = {
46
47
  Unpause: 'unpause',
47
48
  AddWallet: 'add_wallet',
48
49
  MintPresign: 'mint_presign',
49
- SetPresignFee: 'set_presign_fee',
50
+ TakePresign: 'take_presign',
51
+ SetRequestFee: 'set_request_fee',
50
52
  CollectFees: 'collect_fees',
51
53
  NewRequestParams: 'new_request_params',
52
54
  NewSettleParams: 'new_settle_params',
@@ -76,19 +78,19 @@ const WalletKey = {
76
78
  [ChainId.Solana]: 0n,
77
79
  };
78
80
  const DWalletAddress = {
79
- [ChainId.Sui]: '0xf77b45be3624ed93009ad76b8fea4b2d075f32db03472f279c5462a532ae9f93',
80
- [ChainId.Solana]: 'Bnvdx32q42RA2wXHx2uagmkCuBgqpp7ZpXhSKdpdejHL',
81
+ [ChainId.Sui]: '0x0d6d396862af7cd10d235069fee9580545e7fc0a9e74cf7a92ec1a6a1996313b',
82
+ [ChainId.Solana]: 'HmBJM5kjvCRE4iBd4kakGFRoaAyUfkq9xivMZgVzqGGC',
81
83
  };
82
84
  const DWalletId = {
83
- [ChainId.Sui]: '0xba527a47bdc39b38bcb35b50457649f03998f77e7c806c517f10ca8e19769058',
84
- [ChainId.Solana]: '0xee7f0f00f9684c870a74146feef10ec90e019e6d13c63cb433c53f18f8e38efd',
85
+ [ChainId.Sui]: '0x66b32816bff596b27b7ae99ec2e0bc69e63035a0e087006fe4937b6b09e30b95',
86
+ [ChainId.Solana]: '0x3ca05691123a358e6793946ba38595d0925c68b656efe91ad08bbee430bfb26b',
85
87
  };
86
88
  const XCoreWalletId = {
87
- [ChainId.Sui]: '0x3a994a05e57f7e30c9bdf554610117f1386032870d67f2d411c0a4616c513554',
88
- [ChainId.Solana]: '0xc5185b39a5800d31916a3087c860bd36a1fe8738764a2f261f5b9eed65b9d655',
89
+ [ChainId.Sui]: '0xb15f12512da8f21d853dcb549e2029f49e0a5dd0f56e88fc7b45d91d703ace0f',
90
+ [ChainId.Solana]: '0xc1b88839208b334cefbe141304a70fc51364069f7051a6b6b86fd0c3e9816144',
89
91
  };
90
- const XCORE_PACKAGE_ID = '0x0966345c144f5c8daec0560b2d8ed054ed704db5d0d75fb29801aca7ac88977d';
91
- const PRESIGN_CAP_TYPE = `${XCORE_PACKAGE_ID}::presign_cap::PresignCap`;
92
+ const XCORE_PACKAGE_ID = '0x1f9ded5e071cc9cb59dc1c4a0249e5674b82af44241092a0f40fc7a9bf6ea251';
93
+ const PRESIGN_CAP_TYPE = `${XCORE_PACKAGE_ID}::presign_cap::PresignCap<${ORIGINAL_PACKAGE_ID}::xswap::Witness>`;
92
94
  const PCR_LENGTH = 48;
93
95
  const EMPTY_PCR = new Uint8Array(PCR_LENGTH).fill(0);
94
96
  const SOLANA_WALLET_CONFIG = {
@@ -2748,11 +2750,6 @@ const WithdrawRequestProofRawSchema = z.object({
2748
2750
  tx_bytes: numberArray,
2749
2751
  });
2750
2752
  const PresignCapFieldsRawSchema = z.object({
2751
- app_type_name: z.object({
2752
- fields: z.object({
2753
- name: z.string(),
2754
- }),
2755
- }),
2756
2753
  wallet_key: z.string(),
2757
2754
  cap: z.object({
2758
2755
  fields: z.object({
@@ -2763,7 +2760,7 @@ const PresignCapFieldsRawSchema = z.object({
2763
2760
  const PresignSessionFieldsRawSchema = z.object({
2764
2761
  state: z.object({
2765
2762
  fields: z.object({
2766
- presign: numberArray,
2763
+ presign: numberArray.optional(),
2767
2764
  }),
2768
2765
  }),
2769
2766
  });
@@ -6222,44 +6219,16 @@ const parseU256LittleEndian = (bytes) => {
6222
6219
  }
6223
6220
  return result;
6224
6221
  };
6225
- /**
6226
- * Extract the ed25519 public key from a dWallet's public_output.
6227
- *
6228
- * The public_output format is: [count, length, ...pubkey]
6229
- * - Byte 0: count (typically 1)
6230
- * - Byte 1: key length (32 for ed25519)
6231
- * - Bytes 2-33: the 32-byte public key
6232
- */
6233
6222
  const extractEd25519PublicKey = (publicOutput) => {
6234
6223
  const keyLength = publicOutput[1];
6235
6224
  invariant(keyLength === ED25519_PUBKEY_LENGTH, `Expected ed25519 key length ${ED25519_PUBKEY_LENGTH}, got ${keyLength}`);
6236
6225
  return publicOutput.slice(2, 2 + ED25519_PUBKEY_LENGTH);
6237
6226
  };
6238
- /**
6239
- * Extract the compressed secp256k1 public key from a dWallet's public_output.
6240
- *
6241
- * The public_output format is: [count, length, ...compressed_pubkey]
6242
- * - Byte 0: count (typically 1)
6243
- * - Byte 1: key length (33 for secp256k1 compressed)
6244
- * - Bytes 2-34: the 33-byte compressed public key
6245
- */
6246
6227
  const extractSecp256k1PublicKey = (publicOutput) => {
6247
6228
  const keyLength = publicOutput[1];
6248
6229
  invariant(keyLength === SECP256K1_COMPRESSED_PUBKEY_LENGTH, `Expected secp256k1 compressed key length ${SECP256K1_COMPRESSED_PUBKEY_LENGTH}, got ${keyLength}`);
6249
6230
  return publicOutput.slice(2, 2 + SECP256K1_COMPRESSED_PUBKEY_LENGTH);
6250
6231
  };
6251
- /**
6252
- * Serialize a secp256k1 signature for Sui transaction execution.
6253
- *
6254
- * Sui signature format: [flag byte] + [64-byte signature] + [33-byte compressed pubkey]
6255
- * - Flag byte 0x01 indicates secp256k1
6256
- * - Signature is 64 bytes (r || s)
6257
- * - Public key is 33 bytes (compressed secp256k1)
6258
- *
6259
- * @param signature - 64-byte secp256k1 signature from IKA dWallet signing
6260
- * @param publicKey - 33-byte compressed secp256k1 public key
6261
- * @returns Serialized signature ready for Sui executeTransactionBlock
6262
- */
6263
6232
  const serializeSuiSecp256k1Signature = (signature, publicKey) => {
6264
6233
  invariant(signature.length === SECP256K1_SIGNATURE_LENGTH, `Expected signature length ${SECP256K1_SIGNATURE_LENGTH}, got ${signature.length}`);
6265
6234
  invariant(publicKey.length === SECP256K1_COMPRESSED_PUBKEY_LENGTH, `Expected public key length ${SECP256K1_COMPRESSED_PUBKEY_LENGTH}, got ${publicKey.length}`);
@@ -6275,7 +6244,7 @@ const TxBytesKind = {
6275
6244
  SuiTransaction: 'sui_transaction',
6276
6245
  };
6277
6246
 
6278
- var _XSwap_suiClient, _XSwap_packageId, _XSwap_xswapSharedObjectData, _XSwap_xcoreSharedObjectData, _XSwap_registrySharedObjectData, _XSwap_dwalletCoordinatorSharedObjectData, _XSwap_enclaveSharedObjectData;
6247
+ var _XSwap_suiClient, _XSwap_packageId, _XSwap_originalPackageId, _XSwap_xswapSharedObjectData, _XSwap_xcoreSharedObjectData, _XSwap_registrySharedObjectData, _XSwap_dwalletCoordinatorSharedObjectData, _XSwap_enclaveSharedObjectData;
6279
6248
  const bcsBytes = suiBcs.vector(suiBcs.u8());
6280
6249
  class XSwap {
6281
6250
  static parseTxBytes(sourceChain, txBytes) {
@@ -6336,9 +6305,10 @@ class XSwap {
6336
6305
  static parseWithdrawProof(raw) {
6337
6306
  return XSwap.parseWithdrawRequestProof(raw);
6338
6307
  }
6339
- constructor({ suiClient, packageId, xswapSharedObjectData, xcoreSharedObjectData, registrySharedObjectData, dwalletCoordinatorSharedObjectData, enclaveSharedObjectData, }) {
6308
+ constructor({ suiClient, packageId, originalPackageId, xswapSharedObjectData, xcoreSharedObjectData, registrySharedObjectData, dwalletCoordinatorSharedObjectData, enclaveSharedObjectData, }) {
6340
6309
  _XSwap_suiClient.set(this, void 0);
6341
6310
  _XSwap_packageId.set(this, void 0);
6311
+ _XSwap_originalPackageId.set(this, void 0);
6342
6312
  _XSwap_xswapSharedObjectData.set(this, void 0);
6343
6313
  _XSwap_xcoreSharedObjectData.set(this, void 0);
6344
6314
  _XSwap_registrySharedObjectData.set(this, void 0);
@@ -6346,13 +6316,13 @@ class XSwap {
6346
6316
  _XSwap_enclaveSharedObjectData.set(this, void 0);
6347
6317
  __classPrivateFieldSet(this, _XSwap_suiClient, suiClient, "f");
6348
6318
  __classPrivateFieldSet(this, _XSwap_packageId, packageId ?? MAINNET_PACKAGE_ID, "f");
6319
+ __classPrivateFieldSet(this, _XSwap_originalPackageId, originalPackageId ?? ORIGINAL_PACKAGE_ID, "f");
6349
6320
  __classPrivateFieldSet(this, _XSwap_xswapSharedObjectData, xswapSharedObjectData, "f");
6350
6321
  __classPrivateFieldSet(this, _XSwap_xcoreSharedObjectData, xcoreSharedObjectData, "f");
6351
6322
  __classPrivateFieldSet(this, _XSwap_registrySharedObjectData, registrySharedObjectData, "f");
6352
6323
  __classPrivateFieldSet(this, _XSwap_dwalletCoordinatorSharedObjectData, dwalletCoordinatorSharedObjectData, "f");
6353
6324
  __classPrivateFieldSet(this, _XSwap_enclaveSharedObjectData, enclaveSharedObjectData, "f");
6354
6325
  }
6355
- // === Params Builders ===
6356
6326
  newRequestParams(tx, params) {
6357
6327
  return tx.moveCall({
6358
6328
  target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::${Functions.NewRequestParams}`,
@@ -6405,7 +6375,6 @@ class XSwap {
6405
6375
  ],
6406
6376
  });
6407
6377
  }
6408
- // === Transaction Builders ===
6409
6378
  initApp({ tx = new Transaction() } = {}) {
6410
6379
  tx.moveCall({
6411
6380
  target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.InitApp}`,
@@ -6413,7 +6382,7 @@ class XSwap {
6413
6382
  });
6414
6383
  return tx;
6415
6384
  }
6416
- newRequest({ tx = new Transaction(), params }) {
6385
+ newRequest({ tx = new Transaction(), params, fee }) {
6417
6386
  const requestParams = this.newRequestParams(tx, params);
6418
6387
  const result = tx.moveCall({
6419
6388
  target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.NewRequest}`,
@@ -6424,6 +6393,7 @@ class XSwap {
6424
6393
  this.immutableRegistryRef(tx),
6425
6394
  this.immutableEnclaveRef(tx),
6426
6395
  requestParams,
6396
+ fee,
6427
6397
  ],
6428
6398
  });
6429
6399
  return { tx, result };
@@ -6448,11 +6418,11 @@ class XSwap {
6448
6418
  target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.SettleRequest}`,
6449
6419
  arguments: [
6450
6420
  this.mutableXSwapRef(tx),
6451
- tx.object.clock(),
6452
6421
  this.mutableXCoreRef(tx),
6453
6422
  this.mutableDwalletCoordinatorRef(tx),
6454
- this.immutableRegistryRef(tx),
6455
6423
  requestRef,
6424
+ tx.object.clock(),
6425
+ this.immutableRegistryRef(tx),
6456
6426
  this.immutableEnclaveRef(tx),
6457
6427
  tx.object(presignCapId),
6458
6428
  settleParams,
@@ -6495,20 +6465,31 @@ class XSwap {
6495
6465
  });
6496
6466
  return { tx, result };
6497
6467
  }
6498
- mintPresign({ tx = new Transaction(), walletKey, fee }) {
6499
- const result = tx.moveCall({
6468
+ mintPresign({ tx = new Transaction(), walletKey }) {
6469
+ tx.moveCall({
6500
6470
  target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.MintPresign}`,
6501
6471
  arguments: [
6502
6472
  this.mutableXSwapRef(tx),
6503
6473
  this.mutableXCoreRef(tx),
6504
6474
  this.mutableDwalletCoordinatorRef(tx),
6505
- fee,
6506
6475
  tx.pure.u64(walletKey),
6507
6476
  ],
6508
6477
  });
6478
+ return tx;
6479
+ }
6480
+ takePresign({ tx = new Transaction(), walletKey, fee }) {
6481
+ const result = tx.moveCall({
6482
+ target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.TakePresign}`,
6483
+ arguments: [
6484
+ this.mutableXSwapRef(tx),
6485
+ this.mutableXCoreRef(tx),
6486
+ this.mutableDwalletCoordinatorRef(tx),
6487
+ tx.pure.u64(walletKey),
6488
+ fee,
6489
+ ],
6490
+ });
6509
6491
  return { tx, result };
6510
6492
  }
6511
- // === Manager ===
6512
6493
  addManager({ tx = new Transaction(), manager }) {
6513
6494
  tx.moveCall({
6514
6495
  target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.AddManager}`,
@@ -6523,10 +6504,9 @@ class XSwap {
6523
6504
  });
6524
6505
  return tx;
6525
6506
  }
6526
- // === Admin ===
6527
- setPresignFee({ tx = new Transaction(), adminCapId, fee }) {
6507
+ setRequestFee({ tx = new Transaction(), adminCapId, fee }) {
6528
6508
  tx.moveCall({
6529
- target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.SetPresignFee}`,
6509
+ target: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::${Functions.SetRequestFee}`,
6530
6510
  arguments: [this.mutableXSwapRef(tx), tx.object(adminCapId), tx.pure.u64(fee)],
6531
6511
  });
6532
6512
  return tx;
@@ -6620,7 +6600,6 @@ class XSwap {
6620
6600
  });
6621
6601
  return tx;
6622
6602
  }
6623
- // === Getters ===
6624
6603
  async getRequest({ requestId }) {
6625
6604
  const [obj, dynamicFields] = await Promise.all([
6626
6605
  __classPrivateFieldGet(this, _XSwap_suiClient, "f").getObject({
@@ -6637,7 +6616,7 @@ class XSwap {
6637
6616
  return XSwap.parseRequestFields(fields, txBytes);
6638
6617
  }
6639
6618
  async resolveTxBytes(dynamicFieldsData, sourceChain) {
6640
- const txBytesField = dynamicFieldsData.find((field) => field.name.type === `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.XSwap}::TxBytesKey`);
6619
+ const txBytesField = dynamicFieldsData.find((field) => field.name.type === `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.XSwap}::TxBytesKey`);
6641
6620
  if (!txBytesField) {
6642
6621
  return null;
6643
6622
  }
@@ -6680,13 +6659,33 @@ class XSwap {
6680
6659
  txBytes,
6681
6660
  };
6682
6661
  }
6683
- async getFirstPresign({ owner, walletKey, appTypeName, }) {
6684
- const caps = await this.getPresignCaps({ owner, walletKey, appTypeName });
6662
+ async getFirstPresign({ owner, walletKey }) {
6663
+ const caps = await this.getPresignCaps({ owner, walletKey });
6685
6664
  const first = caps[0];
6686
- invariant(first, `getFirstPresign: no PresignCap found for owner ${owner} with walletKey ${walletKey} and appTypeName ${appTypeName}`);
6665
+ invariant(first, `getFirstPresign: no PresignCap found for owner ${owner} with walletKey ${walletKey}`);
6687
6666
  return first;
6688
6667
  }
6689
- async getPresignCaps({ owner, walletKey, appTypeName, }) {
6668
+ async getPresignData({ presignCapId }) {
6669
+ const obj = await __classPrivateFieldGet(this, _XSwap_suiClient, "f").getObject({
6670
+ id: presignCapId,
6671
+ options: { showContent: true },
6672
+ });
6673
+ invariant(obj.data?.content?.dataType === 'moveObject', `getPresignData: failed to fetch PresignCap ${presignCapId}`);
6674
+ const fields = PresignCapFieldsRawSchema.parse(obj.data.content.fields);
6675
+ const presignSessionId = fields.cap.fields.presign_id;
6676
+ const sessionObj = await __classPrivateFieldGet(this, _XSwap_suiClient, "f").getObject({
6677
+ id: presignSessionId,
6678
+ options: { showContent: true },
6679
+ });
6680
+ invariant(sessionObj.data?.content?.dataType === 'moveObject', `getPresignData: failed to fetch presign session ${presignSessionId}`);
6681
+ const sessionFields = PresignSessionFieldsRawSchema.parse(sessionObj.data.content.fields);
6682
+ invariant(sessionFields.state.fields.presign, `getPresignData: presign session ${presignSessionId} has no presign data`);
6683
+ return {
6684
+ presignCapId,
6685
+ presign: new Uint8Array(sessionFields.state.fields.presign),
6686
+ };
6687
+ }
6688
+ async getPresignCaps({ owner, walletKey }) {
6690
6689
  const ownedObjects = await __classPrivateFieldGet(this, _XSwap_suiClient, "f").getOwnedObjects({
6691
6690
  owner,
6692
6691
  filter: { StructType: PRESIGN_CAP_TYPE },
@@ -6697,14 +6696,9 @@ class XSwap {
6697
6696
  invariant(obj.data?.content?.dataType === 'moveObject', `getPresignCaps: unexpected content type for ${obj.data?.objectId}`);
6698
6697
  const fields = PresignCapFieldsRawSchema.parse(obj.data.content.fields);
6699
6698
  const objWalletKey = BigInt(fields.wallet_key);
6700
- const objAppTypeName = fields.app_type_name.fields.name;
6701
6699
  if (walletKey !== undefined && objWalletKey !== walletKey) {
6702
6700
  continue;
6703
6701
  }
6704
- if (appTypeName !== undefined &&
6705
- normalizeStructTag(objAppTypeName) !== normalizeStructTag(appTypeName)) {
6706
- continue;
6707
- }
6708
6702
  const presignSessionId = fields.cap.fields.presign_id;
6709
6703
  const sessionObj = await __classPrivateFieldGet(this, _XSwap_suiClient, "f").getObject({
6710
6704
  id: presignSessionId,
@@ -6712,6 +6706,8 @@ class XSwap {
6712
6706
  });
6713
6707
  invariant(sessionObj.data?.content?.dataType === 'moveObject', `getPresignCaps: failed to fetch presign session ${presignSessionId}`);
6714
6708
  const sessionFields = PresignSessionFieldsRawSchema.parse(sessionObj.data.content.fields);
6709
+ if (!sessionFields.state.fields.presign)
6710
+ continue;
6715
6711
  results.push({
6716
6712
  presignCapId: obj.data.objectId,
6717
6713
  presign: new Uint8Array(sessionFields.state.fields.presign),
@@ -6752,24 +6748,22 @@ class XSwap {
6752
6748
  const [rawBytes] = result.results[0].returnValues[0];
6753
6749
  return suiBcs.bool().parse(new Uint8Array(rawBytes));
6754
6750
  }
6755
- // === Events ===
6756
6751
  getEventTypes() {
6757
6752
  return {
6758
- requestCreated: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::RequestCreated`,
6759
- requestSettled: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::RequestSettled`,
6760
- requestCancelled: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::RequestCancelled`,
6761
- requestExpired: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::RequestExpired`,
6762
- requestWithdrawn: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::RequestWithdrawn`,
6763
- chainAdded: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::ChainAdded`,
6764
- chainRemoved: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::ChainRemoved`,
6765
- paused: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::Paused`,
6766
- unpaused: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::Unpaused`,
6767
- solverAdded: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::SolverAdded`,
6768
- solverRemoved: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::SolverRemoved`,
6769
- walletAdded: `${__classPrivateFieldGet(this, _XSwap_packageId, "f")}::${Modules.Structs}::WalletAdded`,
6753
+ requestCreated: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::RequestCreated`,
6754
+ requestSettled: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::RequestSettled`,
6755
+ requestCancelled: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::RequestCancelled`,
6756
+ requestExpired: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::RequestExpired`,
6757
+ requestWithdrawn: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::RequestWithdrawn`,
6758
+ chainAdded: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::ChainAdded`,
6759
+ chainRemoved: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::ChainRemoved`,
6760
+ paused: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::Paused`,
6761
+ unpaused: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::Unpaused`,
6762
+ solverAdded: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::SolverAdded`,
6763
+ solverRemoved: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::SolverRemoved`,
6764
+ walletAdded: `${__classPrivateFieldGet(this, _XSwap_originalPackageId, "f")}::${Modules.Structs}::WalletAdded`,
6770
6765
  };
6771
6766
  }
6772
- // === Helpers ===
6773
6767
  immutableXSwapRef(tx) {
6774
6768
  return tx.sharedObjectRef({
6775
6769
  objectId: __classPrivateFieldGet(this, _XSwap_xswapSharedObjectData, "f").objectId,
@@ -6837,9 +6831,19 @@ class XSwap {
6837
6831
  return __classPrivateFieldGet(this, _XSwap_suiClient, "f");
6838
6832
  }
6839
6833
  }
6840
- _XSwap_suiClient = new WeakMap(), _XSwap_packageId = new WeakMap(), _XSwap_xswapSharedObjectData = new WeakMap(), _XSwap_xcoreSharedObjectData = new WeakMap(), _XSwap_registrySharedObjectData = new WeakMap(), _XSwap_dwalletCoordinatorSharedObjectData = new WeakMap(), _XSwap_enclaveSharedObjectData = new WeakMap();
6834
+ _XSwap_suiClient = new WeakMap(), _XSwap_packageId = new WeakMap(), _XSwap_originalPackageId = new WeakMap(), _XSwap_xswapSharedObjectData = new WeakMap(), _XSwap_xcoreSharedObjectData = new WeakMap(), _XSwap_registrySharedObjectData = new WeakMap(), _XSwap_dwalletCoordinatorSharedObjectData = new WeakMap(), _XSwap_enclaveSharedObjectData = new WeakMap();
6841
6835
 
6842
6836
  var _EnclaveClient_instances, _EnclaveClient_baseUrl, _EnclaveClient_apiKey, _EnclaveClient_fetchFromEnclave, _EnclaveClient_validateDigest;
6837
+ const TEXT_DECODER = new TextDecoder();
6838
+ const TEXT_ENCODER = new TextEncoder();
6839
+ const encodeTokenForEnclave = (tokenBytes, chainId) => {
6840
+ if (chainId === ChainId.Sui) {
6841
+ const structTag = TEXT_DECODER.decode(tokenBytes);
6842
+ const normalized = normalizeStructTag(structTag);
6843
+ return toHex(TEXT_ENCODER.encode(normalized)).replace(/^0x/, '');
6844
+ }
6845
+ return toHex(tokenBytes).replace(/^0x/, '');
6846
+ };
6843
6847
  class EnclaveClient {
6844
6848
  constructor({ baseUrl, apiKey }) {
6845
6849
  _EnclaveClient_instances.add(this);
@@ -6868,9 +6872,9 @@ class EnclaveClient {
6868
6872
  source_chain: args.sourceChain,
6869
6873
  destination_chain: args.destinationChain,
6870
6874
  destination_address: toHex(args.destinationAddress).replace(/^0x/, ''),
6871
- destination_token: toHex(args.destinationToken).replace(/^0x/, ''),
6875
+ destination_token: encodeTokenForEnclave(args.destinationToken, args.destinationChain),
6872
6876
  solver_recipient: args.solverRecipient.replace(/^0x/, ''),
6873
- source_token: toHex(args.sourceToken),
6877
+ source_token: encodeTokenForEnclave(args.sourceToken, args.sourceChain),
6874
6878
  source_amount: args.sourceAmount.toString(),
6875
6879
  nonce_account: nonceAccount,
6876
6880
  sui_gas_price_multiplier: suiGasPriceMultiplier,
@@ -6883,7 +6887,7 @@ class EnclaveClient {
6883
6887
  const raw = await __classPrivateFieldGet(this, _EnclaveClient_instances, "m", _EnclaveClient_fetchFromEnclave).call(this, '/withdraw_request', {
6884
6888
  chain_id: args.chainId,
6885
6889
  user: toHex(args.user).replace(/^0x/, ''),
6886
- token: toHex(args.token).replace(/^0x/, ''),
6890
+ token: encodeTokenForEnclave(args.token, args.chainId),
6887
6891
  amount: args.amount.toString(),
6888
6892
  recipient: toHex(args.recipient).replace(/^0x/, ''),
6889
6893
  nonce_account: nonceAccount,
@@ -6928,5 +6932,5 @@ _EnclaveClient_baseUrl = new WeakMap(), _EnclaveClient_apiKey = new WeakMap(), _
6928
6932
  }
6929
6933
  };
6930
6934
 
6931
- export { ADMIN_CAP_OBJECT_ID, ChainId, DWALLET_COORDINATOR_INITIAL_SHARED_VERSION, DWALLET_COORDINATOR_OBJECT_ID, DWALLET_COORDINATOR_SHARED_OBJECT_DATA, DWalletAddress, DWalletId, EMPTY_PCR, ENCLAVE_CAP_OBJECT_ID, ENCLAVE_INITIAL_SHARED_VERSION, ENCLAVE_OBJECT_ID, ENCLAVE_SHARED_OBJECT_DATA, EnclaveClient, Functions, Intent$1 as Intent, MAINNET_PACKAGE_ID, Modules, PCR_LENGTH, PRESIGN_CAP_TYPE, RequestStatus, SOLANA_WALLET_CONFIG, SUI_WALLET_CONFIG, TxBytesKind, UPGRADE_CAP_OBJECT_ID, WITNESS_TYPE, WalletKey, XCORE_PACKAGE_ID, XCoreWalletId, XSWAP_INITIAL_SHARED_VERSION, XSWAP_OBJECT_ID, XSWAP_SHARED_OBJECT_DATA, XSWAP_TYPE, XSwap, extractEd25519PublicKey, extractSecp256k1PublicKey, parseU256LittleEndian, serializeSuiSecp256k1Signature };
6935
+ export { ADMIN_CAP_OBJECT_ID, ChainId, DWALLET_COORDINATOR_INITIAL_SHARED_VERSION, DWALLET_COORDINATOR_OBJECT_ID, DWALLET_COORDINATOR_SHARED_OBJECT_DATA, DWalletAddress, DWalletId, EMPTY_PCR, ENCLAVE_CAP_OBJECT_ID, ENCLAVE_INITIAL_SHARED_VERSION, ENCLAVE_OBJECT_ID, ENCLAVE_SHARED_OBJECT_DATA, EnclaveClient, Functions, Intent$1 as Intent, MAINNET_PACKAGE_ID, Modules, ORIGINAL_PACKAGE_ID, PCR_LENGTH, PRESIGN_CAP_TYPE, RequestStatus, SOLANA_WALLET_CONFIG, SUI_WALLET_CONFIG, TxBytesKind, UPGRADE_CAP_OBJECT_ID, WITNESS_TYPE, WalletKey, XCORE_PACKAGE_ID, XCoreWalletId, XSWAP_INITIAL_SHARED_VERSION, XSWAP_OBJECT_ID, XSWAP_SHARED_OBJECT_DATA, XSWAP_TYPE, XSwap, extractEd25519PublicKey, extractSecp256k1PublicKey, parseU256LittleEndian, serializeSuiSecp256k1Signature };
6932
6936
  //# sourceMappingURL=index.mjs.map