@skip-go/client 1.6.0 → 1.6.2

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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkKGK6P2R2_cjs = require('./chunk-KGK6P2R2.cjs');
4
- var chunkX2ASEG4P_cjs = require('./chunk-X2ASEG4P.cjs');
3
+ var chunkTH6KKS4X_cjs = require('./chunk-TH6KKS4X.cjs');
4
+ var chunkXJASQLBH_cjs = require('./chunk-XJASQLBH.cjs');
5
5
  var chunkNCFH5MGF_cjs = require('./chunk-NCFH5MGF.cjs');
6
6
  var chunkAUTOIM57_cjs = require('./chunk-AUTOIM57.cjs');
7
7
  var chunk2QPPD3BB_cjs = require('./chunk-2QPPD3BB.cjs');
@@ -24,7 +24,7 @@ var executeMultipleRoutes = async (options) => {
24
24
  `executeMultipleRoutes error: no user addresses found for route: ${routeKey}`
25
25
  );
26
26
  }
27
- const routeAddressList = await chunkKGK6P2R2_cjs.createValidAddressList({
27
+ const routeAddressList = await chunkTH6KKS4X_cjs.createValidAddressList({
28
28
  userAddresses: _userAddresses,
29
29
  route: routeValue
30
30
  });
@@ -119,7 +119,7 @@ var executeMultipleRoutes = async (options) => {
119
119
  const executeTransactionList = {};
120
120
  const mergedMainAndSecondaryRoutes = Object.entries(msgsRecord).length !== Object.entries(route).length;
121
121
  for (const [routeKey, msgsResponse] of Object.entries(msgsRecord)) {
122
- const { id: routeId } = chunkX2ASEG4P_cjs.updateRouteDetails({
122
+ const { id: routeId } = chunkXJASQLBH_cjs.updateRouteDetails({
123
123
  status: "unconfirmed",
124
124
  options: {
125
125
  route: route[routeKey],
@@ -132,7 +132,7 @@ var executeMultipleRoutes = async (options) => {
132
132
  if (routeKey === "mainRoute") {
133
133
  mainRouteId = routeId;
134
134
  }
135
- const { transactionDetails, executeTransaction: _executeTransaction } = await chunkKGK6P2R2_cjs.executeTransactions({
135
+ const { transactionDetails, executeTransaction: _executeTransaction } = await chunkTH6KKS4X_cjs.executeTransactions({
136
136
  ...restOptions,
137
137
  routeId,
138
138
  txs: msgsResponse?.txs,
@@ -144,7 +144,7 @@ var executeMultipleRoutes = async (options) => {
144
144
  const txResult = await _executeTransaction(index2);
145
145
  if (routeKey !== "mainRoute" || mergedMainAndSecondaryRoutes) {
146
146
  const relatedRoutes = Object.entries(route).filter(([key]) => key !== "mainRoute").map(([key, route2]) => ({ route: route2, routeKey: key, status: "pending" }));
147
- chunkX2ASEG4P_cjs.updateRouteDetails({
147
+ chunkXJASQLBH_cjs.updateRouteDetails({
148
148
  options: {
149
149
  route: route[routeKey],
150
150
  ...restOptions
@@ -182,7 +182,7 @@ var executeMultipleRoutes = async (options) => {
182
182
  }
183
183
  await Promise.all(
184
184
  Object.entries(msgsRecord).map(([routeKey, msgsResponse], index2) => {
185
- return chunkX2ASEG4P_cjs.executeAndSubscribeToRouteStatus({
185
+ return chunkXJASQLBH_cjs.executeAndSubscribeToRouteStatus({
186
186
  transactionDetails: transactionDetailsList[index2],
187
187
  executeTransaction: executeTransactionList[index2],
188
188
  routeId: msgsRecordIndexToRouteId[index2],
@@ -193,7 +193,7 @@ var executeMultipleRoutes = async (options) => {
193
193
  onRouteStatusUpdated: (routeStatus) => {
194
194
  const relatedRoutes = Object.entries(route).filter(([key]) => key !== "mainRoute").map(([key, route2]) => ({ route: route2, routeKey: key, status: routeStatus.status }));
195
195
  if (routeKey !== "mainRoute") {
196
- chunkX2ASEG4P_cjs.updateRouteDetails({
196
+ chunkXJASQLBH_cjs.updateRouteDetails({
197
197
  options: {
198
198
  route: route[routeKey],
199
199
  ...restOptions
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunkKGK6P2R2_cjs = require('./chunk-KGK6P2R2.cjs');
4
- var chunkX2ASEG4P_cjs = require('./chunk-X2ASEG4P.cjs');
3
+ var chunkTH6KKS4X_cjs = require('./chunk-TH6KKS4X.cjs');
4
+ var chunkXJASQLBH_cjs = require('./chunk-XJASQLBH.cjs');
5
5
  var chunkNCFH5MGF_cjs = require('./chunk-NCFH5MGF.cjs');
6
6
  var chunk2QPPD3BB_cjs = require('./chunk-2QPPD3BB.cjs');
7
7
 
8
8
  // src/public-functions/executeRoute.ts
9
9
  var executeRoute = async (options) => {
10
10
  const { route, userAddresses, appendCosmosMsgs, timeoutSeconds } = options;
11
- const { id: routeId } = chunkX2ASEG4P_cjs.updateRouteDetails({
11
+ const { id: routeId } = chunkXJASQLBH_cjs.updateRouteDetails({
12
12
  status: "unconfirmed",
13
13
  options
14
14
  });
15
- const addressList = await chunkKGK6P2R2_cjs.createValidAddressList({
15
+ const addressList = await chunkTH6KKS4X_cjs.createValidAddressList({
16
16
  userAddresses,
17
17
  route
18
18
  });
@@ -43,8 +43,14 @@ var executeRoute = async (options) => {
43
43
  }
44
44
  });
45
45
  }
46
- const { transactionDetails, executeTransaction } = await chunkKGK6P2R2_cjs.executeTransactions({ ...options, routeId, txs: response?.txs });
47
- await chunkX2ASEG4P_cjs.executeAndSubscribeToRouteStatus({
46
+ const batchSignTxs = chunkXJASQLBH_cjs.routeRequiresSequentialSigning(route?.operations) ? false : options.batchSignTxs;
47
+ const { transactionDetails, executeTransaction } = await chunkTH6KKS4X_cjs.executeTransactions({
48
+ ...options,
49
+ batchSignTxs,
50
+ routeId,
51
+ txs: response?.txs
52
+ });
53
+ await chunkXJASQLBH_cjs.executeAndSubscribeToRouteStatus({
48
54
  transactionDetails,
49
55
  executeTransaction,
50
56
  routeId,
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkX2ASEG4P_cjs = require('./chunk-X2ASEG4P.cjs');
3
+ var chunkXJASQLBH_cjs = require('./chunk-XJASQLBH.cjs');
4
4
  var chunkERKGQBNL_cjs = require('./chunk-ERKGQBNL.cjs');
5
5
  var chunk477CU2G2_cjs = require('./chunk-477CU2G2.cjs');
6
6
  var chunkF3EB2AQG_cjs = require('./chunk-F3EB2AQG.cjs');
@@ -327,7 +327,7 @@ var signCosmosTransaction = async ({
327
327
  txIndex: index,
328
328
  signerAddress: currentUserAddress
329
329
  });
330
- chunkX2ASEG4P_cjs.updateRouteDetails({
330
+ chunkXJASQLBH_cjs.updateRouteDetails({
331
331
  status: "signing",
332
332
  routeId,
333
333
  options
@@ -343,7 +343,7 @@ var signCosmosTransaction = async ({
343
343
  options?.onTransactionSigned?.({
344
344
  chainId
345
345
  });
346
- chunkX2ASEG4P_cjs.updateRouteDetails({
346
+ chunkXJASQLBH_cjs.updateRouteDetails({
347
347
  status: "pending",
348
348
  routeId,
349
349
  options
@@ -629,7 +629,7 @@ var executeEvmTransaction = async (message, options, index, routeId) => {
629
629
  status: "pending",
630
630
  allowance: requiredApproval
631
631
  });
632
- chunkX2ASEG4P_cjs.updateRouteDetails({
632
+ chunkXJASQLBH_cjs.updateRouteDetails({
633
633
  status: "allowance",
634
634
  routeId,
635
635
  options
@@ -663,7 +663,7 @@ var executeEvmTransaction = async (message, options, index, routeId) => {
663
663
  signerAddress: evmSigner.account.address,
664
664
  txIndex: index
665
665
  });
666
- chunkX2ASEG4P_cjs.updateRouteDetails({
666
+ chunkXJASQLBH_cjs.updateRouteDetails({
667
667
  status: "signing",
668
668
  routeId,
669
669
  options
@@ -675,7 +675,7 @@ var executeEvmTransaction = async (message, options, index, routeId) => {
675
675
  chain: evmSigner.chain,
676
676
  value: evmTx.value === "" ? void 0 : BigInt(evmTx.value)
677
677
  });
678
- chunkX2ASEG4P_cjs.updateRouteDetails({
678
+ chunkXJASQLBH_cjs.updateRouteDetails({
679
679
  status: "pending",
680
680
  routeId,
681
681
  options
@@ -751,14 +751,14 @@ var signSvmTransaction = async ({
751
751
  signerAddress: signer.publicKey?.toBase58(),
752
752
  txIndex: index
753
753
  });
754
- chunkX2ASEG4P_cjs.updateRouteDetails({
754
+ chunkXJASQLBH_cjs.updateRouteDetails({
755
755
  status: "signing",
756
756
  routeId,
757
757
  options
758
758
  });
759
759
  const signedTx = await signer.signTransaction(transaction);
760
760
  options?.onTransactionSigned?.({ chainId: svmTx.chainId });
761
- chunkX2ASEG4P_cjs.updateRouteDetails({
761
+ chunkXJASQLBH_cjs.updateRouteDetails({
762
762
  status: "pending",
763
763
  routeId,
764
764
  options
@@ -889,7 +889,7 @@ var validateEvmTokenApproval = async ({
889
889
  status: "pending",
890
890
  allowance: requiredApproval
891
891
  });
892
- chunkX2ASEG4P_cjs.updateRouteDetails({
892
+ chunkXJASQLBH_cjs.updateRouteDetails({
893
893
  status: "allowance",
894
894
  routeId,
895
895
  options
@@ -916,7 +916,7 @@ var validateEvmTokenApproval = async ({
916
916
  onApproveAllowance?.({
917
917
  status: "completed"
918
918
  });
919
- chunkX2ASEG4P_cjs.updateRouteDetails({
919
+ chunkXJASQLBH_cjs.updateRouteDetails({
920
920
  status: "signing",
921
921
  routeId,
922
922
  options
@@ -1108,7 +1108,7 @@ var validateGasBalances = async ({
1108
1108
  onValidateGasBalance?.({
1109
1109
  status: "pending"
1110
1110
  });
1111
- chunkX2ASEG4P_cjs.updateRouteDetails({
1111
+ chunkXJASQLBH_cjs.updateRouteDetails({
1112
1112
  status: "validating",
1113
1113
  routeId,
1114
1114
  options
@@ -1142,7 +1142,7 @@ var validateGasBalances = async ({
1142
1142
  onValidateGasBalance?.({
1143
1143
  status: "pending"
1144
1144
  });
1145
- chunkX2ASEG4P_cjs.updateRouteDetails({
1145
+ chunkXJASQLBH_cjs.updateRouteDetails({
1146
1146
  status: "validating",
1147
1147
  routeId,
1148
1148
  options
@@ -1175,7 +1175,7 @@ var validateGasBalances = async ({
1175
1175
  onValidateGasBalance?.({
1176
1176
  status: "pending"
1177
1177
  });
1178
- chunkX2ASEG4P_cjs.updateRouteDetails({
1178
+ chunkXJASQLBH_cjs.updateRouteDetails({
1179
1179
  status: "validating",
1180
1180
  routeId,
1181
1181
  options
@@ -1271,7 +1271,7 @@ var executeTransactions = async (options) => {
1271
1271
  throw new Error("executeRoute error: invalid message type");
1272
1272
  }
1273
1273
  });
1274
- chunkX2ASEG4P_cjs.updateRouteDetails({
1274
+ chunkXJASQLBH_cjs.updateRouteDetails({
1275
1275
  transactionDetails,
1276
1276
  routeId,
1277
1277
  options
@@ -6,6 +6,121 @@ var chunk2QPPD3BB_cjs = require('./chunk-2QPPD3BB.cjs');
6
6
  var uuid = require('uuid');
7
7
 
8
8
  // src/utils/clientType.ts
9
+ var OperationType = /* @__PURE__ */ ((OperationType2) => {
10
+ OperationType2["swap"] = "swap";
11
+ OperationType2["evmSwap"] = "evmSwap";
12
+ OperationType2["transfer"] = "transfer";
13
+ OperationType2["axelarTransfer"] = "axelarTransfer";
14
+ OperationType2["cctpTransfer"] = "cctpTransfer";
15
+ OperationType2["cctpTransferV2"] = "cctpTransferV2";
16
+ OperationType2["hyperlaneTransfer"] = "hyperlaneTransfer";
17
+ OperationType2["opInitTransfer"] = "opInitTransfer";
18
+ OperationType2["bankSend"] = "bankSend";
19
+ OperationType2["goFastTransfer"] = "goFastTransfer";
20
+ OperationType2["stargateTransfer"] = "stargateTransfer";
21
+ OperationType2["eurekaTransfer"] = "eurekaTransfer";
22
+ OperationType2["layerZeroTransfer"] = "layerZeroTransfer";
23
+ return OperationType2;
24
+ })(OperationType || {});
25
+ function getOperationDetailsAndType(operation) {
26
+ const combinedOperation = operation;
27
+ let returnValue = {
28
+ details: {},
29
+ type: void 0
30
+ };
31
+ Object.values(OperationType).find((type) => {
32
+ const originalDetails = combinedOperation?.[type];
33
+ if (originalDetails) {
34
+ const operationDetails = { ...originalDetails };
35
+ switch (type) {
36
+ case "swap" /* swap */:
37
+ case "evmSwap" /* evmSwap */:
38
+ operationDetails.toChainId = originalDetails.fromChainId;
39
+ break;
40
+ case "axelarTransfer" /* axelarTransfer */:
41
+ operationDetails.denomIn = originalDetails.ibcTransferToAxelar?.denomIn ?? originalDetails.denomIn;
42
+ break;
43
+ case "bankSend" /* bankSend */: {
44
+ const bankSend = originalDetails;
45
+ operationDetails.denomIn = bankSend.denom;
46
+ operationDetails.denomOut = bankSend.denom;
47
+ operationDetails.fromChainId = bankSend.chainId;
48
+ operationDetails.toChainId = bankSend.chainId;
49
+ break;
50
+ }
51
+ }
52
+ returnValue = {
53
+ details: operationDetails,
54
+ type
55
+ };
56
+ }
57
+ });
58
+ return returnValue;
59
+ }
60
+ function getClientOperation(operation) {
61
+ const { details, type } = getOperationDetailsAndType(operation);
62
+ return {
63
+ type,
64
+ ...details,
65
+ txIndex: operation.txIndex,
66
+ amountIn: operation.amountIn,
67
+ amountOut: operation.amountOut,
68
+ swapVenues: [
69
+ ...details.swapVenues ?? [],
70
+ ...details?.swapIn ? [details?.swapIn.swapVenue] : [],
71
+ ...details?.swapOut ? [details?.swapOut.swapVenue] : []
72
+ ]
73
+ };
74
+ }
75
+ function getClientOperations(operations) {
76
+ if (!operations) return [];
77
+ let transferIndex = 0;
78
+ const filteredOperations = filterNeutronSwapFee(operations);
79
+ return filteredOperations.map((operation, index, arr) => {
80
+ const prevOperation = arr[index - 1];
81
+ const signRequired = (() => {
82
+ if (index === 0) {
83
+ return false;
84
+ } else {
85
+ if (prevOperation && operation.txIndex > prevOperation.txIndex) {
86
+ return true;
87
+ }
88
+ return false;
89
+ }
90
+ })();
91
+ const clientOperation = getClientOperation(operation);
92
+ const isSwap = clientOperation.type === "swap" /* swap */ || clientOperation.type === "evmSwap" /* evmSwap */;
93
+ const result = {
94
+ ...clientOperation,
95
+ transferIndex,
96
+ signRequired,
97
+ isSwap
98
+ };
99
+ if (!isSwap) {
100
+ transferIndex++;
101
+ }
102
+ return result;
103
+ });
104
+ }
105
+ function routeRequiresSequentialSigning(operations) {
106
+ const bridgeIds = new Set(getClientOperations(operations).map((operation) => operation.bridgeId));
107
+ return bridgeIds.has("CCTP" /* CCTP */) && bridgeIds.has("CCTP_V2" /* CCTP_V2 */);
108
+ }
109
+ function filterNeutronSwapFee(operations) {
110
+ return operations.filter((op, i) => {
111
+ const clientOperation = getClientOperation(op);
112
+ if (clientOperation.type === "swap" /* swap */ && clientOperation.chainId === "neutron-1" && clientOperation.denomOut === "untrn" && clientOperation.fromChainId === "neutron-1" && clientOperation.swapOut?.swapAmountOut === "200000") {
113
+ const nextOperation = operations[i + 1];
114
+ if (nextOperation) {
115
+ const nextClientOperation = getClientOperation(nextOperation);
116
+ if (nextClientOperation.type === "swap" /* swap */ && nextClientOperation.chainId === "neutron-1") {
117
+ return false;
118
+ }
119
+ }
120
+ }
121
+ return true;
122
+ });
123
+ }
9
124
  function getClientTransferEvent(transferEvent) {
10
125
  const combinedTransferEvent = transferEvent;
11
126
  const axelarTransfer = combinedTransferEvent?.axelarTransfer;
@@ -75,7 +190,7 @@ function getClientTransferEvent(transferEvent) {
75
190
  explorerLink: goFastTransfer.txs.orderFilledTx?.explorerLink ?? goFastTransfer.txs.orderTimeoutTx?.explorerLink ?? goFastTransfer.txs.orderRefundedTx?.explorerLink,
76
191
  txHash: goFastTransfer.txs.orderFilledTx?.txHash
77
192
  };
78
- case "axelarTransfer" /* axelarTransfer */:
193
+ case "axelarTransfer" /* axelarTransfer */: {
79
194
  const sendTokenTxs = axelarTransfer.txs;
80
195
  const contractCallWithTokenTxs = axelarTransfer.txs?.contractCallWithTokenTxs;
81
196
  if (type === "send") {
@@ -88,6 +203,7 @@ function getClientTransferEvent(transferEvent) {
88
203
  explorerLink: sendTokenTxs?.executeTx?.explorerLink ?? contractCallWithTokenTxs?.executeTx?.explorerLink,
89
204
  txHash: sendTokenTxs?.executeTx?.txHash ?? contractCallWithTokenTxs?.executeTx?.txHash
90
205
  };
206
+ }
91
207
  default:
92
208
  if (type === "send") {
93
209
  return {
@@ -575,5 +691,6 @@ exports.executeAndSubscribeToRouteStatus = executeAndSubscribeToRouteStatus;
575
691
  exports.getSimpleOverallStatus = getSimpleOverallStatus;
576
692
  exports.getTransactionStatus = getTransactionStatus;
577
693
  exports.getTransferEventsFromTxStatusResponse = getTransferEventsFromTxStatusResponse;
694
+ exports.routeRequiresSequentialSigning = routeRequiresSequentialSigning;
578
695
  exports.subscribeToRouteStatus = subscribeToRouteStatus;
579
696
  exports.updateRouteDetails = updateRouteDetails;
@@ -4,10 +4,10 @@ var chunk25TA7Z7R_cjs = require('./chunk-25TA7Z7R.cjs');
4
4
  var chunkAVWWCQ5P_cjs = require('./chunk-AVWWCQ5P.cjs');
5
5
  var chunkCK6CQWQU_cjs = require('./chunk-CK6CQWQU.cjs');
6
6
  var chunk4BWE7SOV_cjs = require('./chunk-4BWE7SOV.cjs');
7
- var chunk3NPG3IJC_cjs = require('./chunk-3NPG3IJC.cjs');
8
- var chunk77NJD7SH_cjs = require('./chunk-77NJD7SH.cjs');
9
- require('./chunk-KGK6P2R2.cjs');
10
- var chunkX2ASEG4P_cjs = require('./chunk-X2ASEG4P.cjs');
7
+ var chunkG5IM3QEA_cjs = require('./chunk-G5IM3QEA.cjs');
8
+ var chunkIYPDWN6H_cjs = require('./chunk-IYPDWN6H.cjs');
9
+ require('./chunk-TH6KKS4X.cjs');
10
+ var chunkXJASQLBH_cjs = require('./chunk-XJASQLBH.cjs');
11
11
  var chunkERKGQBNL_cjs = require('./chunk-ERKGQBNL.cjs');
12
12
  var chunk477CU2G2_cjs = require('./chunk-477CU2G2.cjs');
13
13
  require('./chunk-NM4PISTQ.cjs');
@@ -141,27 +141,27 @@ Object.defineProperty(exports, "waitForTransactionWithCancel", {
141
141
  });
142
142
  Object.defineProperty(exports, "executeMultipleRoutes", {
143
143
  enumerable: true,
144
- get: function () { return chunk3NPG3IJC_cjs.executeMultipleRoutes; }
144
+ get: function () { return chunkG5IM3QEA_cjs.executeMultipleRoutes; }
145
145
  });
146
146
  Object.defineProperty(exports, "executeRoute", {
147
147
  enumerable: true,
148
- get: function () { return chunk77NJD7SH_cjs.executeRoute; }
148
+ get: function () { return chunkIYPDWN6H_cjs.executeRoute; }
149
149
  });
150
150
  Object.defineProperty(exports, "TransferType", {
151
151
  enumerable: true,
152
- get: function () { return chunkX2ASEG4P_cjs.TransferType; }
152
+ get: function () { return chunkXJASQLBH_cjs.TransferType; }
153
153
  });
154
154
  Object.defineProperty(exports, "getSimpleOverallStatus", {
155
155
  enumerable: true,
156
- get: function () { return chunkX2ASEG4P_cjs.getSimpleOverallStatus; }
156
+ get: function () { return chunkXJASQLBH_cjs.getSimpleOverallStatus; }
157
157
  });
158
158
  Object.defineProperty(exports, "getTransferEventsFromTxStatusResponse", {
159
159
  enumerable: true,
160
- get: function () { return chunkX2ASEG4P_cjs.getTransferEventsFromTxStatusResponse; }
160
+ get: function () { return chunkXJASQLBH_cjs.getTransferEventsFromTxStatusResponse; }
161
161
  });
162
162
  Object.defineProperty(exports, "subscribeToRouteStatus", {
163
163
  enumerable: true,
164
- get: function () { return chunkX2ASEG4P_cjs.subscribeToRouteStatus; }
164
+ get: function () { return chunkXJASQLBH_cjs.subscribeToRouteStatus; }
165
165
  });
166
166
  Object.defineProperty(exports, "validateCosmosGasBalance", {
167
167
  enumerable: true,
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunk3NPG3IJC_cjs = require('../chunk-3NPG3IJC.cjs');
4
- require('../chunk-KGK6P2R2.cjs');
5
- require('../chunk-X2ASEG4P.cjs');
3
+ var chunkG5IM3QEA_cjs = require('../chunk-G5IM3QEA.cjs');
4
+ require('../chunk-TH6KKS4X.cjs');
5
+ require('../chunk-XJASQLBH.cjs');
6
6
  require('../chunk-ERKGQBNL.cjs');
7
7
  require('../chunk-477CU2G2.cjs');
8
8
  require('../chunk-NM4PISTQ.cjs');
@@ -23,5 +23,5 @@ require('../chunk-LJV45UGL.cjs');
23
23
 
24
24
  Object.defineProperty(exports, "executeMultipleRoutes", {
25
25
  enumerable: true,
26
- get: function () { return chunk3NPG3IJC_cjs.executeMultipleRoutes; }
26
+ get: function () { return chunkG5IM3QEA_cjs.executeMultipleRoutes; }
27
27
  });
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunk77NJD7SH_cjs = require('../chunk-77NJD7SH.cjs');
4
- require('../chunk-KGK6P2R2.cjs');
5
- require('../chunk-X2ASEG4P.cjs');
3
+ var chunkIYPDWN6H_cjs = require('../chunk-IYPDWN6H.cjs');
4
+ require('../chunk-TH6KKS4X.cjs');
5
+ require('../chunk-XJASQLBH.cjs');
6
6
  require('../chunk-ERKGQBNL.cjs');
7
7
  require('../chunk-477CU2G2.cjs');
8
8
  require('../chunk-NM4PISTQ.cjs');
@@ -23,5 +23,5 @@ require('../chunk-LJV45UGL.cjs');
23
23
 
24
24
  Object.defineProperty(exports, "executeRoute", {
25
25
  enumerable: true,
26
- get: function () { return chunk77NJD7SH_cjs.executeRoute; }
26
+ get: function () { return chunkIYPDWN6H_cjs.executeRoute; }
27
27
  });
@@ -4,10 +4,10 @@ var chunk25TA7Z7R_cjs = require('../chunk-25TA7Z7R.cjs');
4
4
  require('../chunk-AVWWCQ5P.cjs');
5
5
  require('../chunk-CK6CQWQU.cjs');
6
6
  require('../chunk-4BWE7SOV.cjs');
7
- require('../chunk-3NPG3IJC.cjs');
8
- require('../chunk-77NJD7SH.cjs');
9
- require('../chunk-KGK6P2R2.cjs');
10
- require('../chunk-X2ASEG4P.cjs');
7
+ require('../chunk-G5IM3QEA.cjs');
8
+ require('../chunk-IYPDWN6H.cjs');
9
+ require('../chunk-TH6KKS4X.cjs');
10
+ require('../chunk-XJASQLBH.cjs');
11
11
  require('../chunk-ERKGQBNL.cjs');
12
12
  require('../chunk-477CU2G2.cjs');
13
13
  require('../chunk-NM4PISTQ.cjs');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkX2ASEG4P_cjs = require('../chunk-X2ASEG4P.cjs');
3
+ var chunkXJASQLBH_cjs = require('../chunk-XJASQLBH.cjs');
4
4
  require('../chunk-AUTOIM57.cjs');
5
5
  require('../chunk-PDNKS5R2.cjs');
6
6
  require('../chunk-2QPPD3BB.cjs');
@@ -10,17 +10,17 @@ require('../chunk-LJV45UGL.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "executeAndSubscribeToRouteStatus", {
12
12
  enumerable: true,
13
- get: function () { return chunkX2ASEG4P_cjs.executeAndSubscribeToRouteStatus; }
13
+ get: function () { return chunkXJASQLBH_cjs.executeAndSubscribeToRouteStatus; }
14
14
  });
15
15
  Object.defineProperty(exports, "getTransactionStatus", {
16
16
  enumerable: true,
17
- get: function () { return chunkX2ASEG4P_cjs.getTransactionStatus; }
17
+ get: function () { return chunkXJASQLBH_cjs.getTransactionStatus; }
18
18
  });
19
19
  Object.defineProperty(exports, "subscribeToRouteStatus", {
20
20
  enumerable: true,
21
- get: function () { return chunkX2ASEG4P_cjs.subscribeToRouteStatus; }
21
+ get: function () { return chunkXJASQLBH_cjs.subscribeToRouteStatus; }
22
22
  });
23
23
  Object.defineProperty(exports, "updateRouteDetails", {
24
24
  enumerable: true,
25
- get: function () { return chunkX2ASEG4P_cjs.updateRouteDetails; }
25
+ get: function () { return chunkXJASQLBH_cjs.updateRouteDetails; }
26
26
  });
@@ -1,5 +1,5 @@
1
- import { createValidAddressList, executeTransactions } from './chunk-W4ZLRWOX.js';
2
- import { updateRouteDetails, executeAndSubscribeToRouteStatus } from './chunk-QCGHODGV.js';
1
+ import { createValidAddressList, executeTransactions } from './chunk-U7ROAZO7.js';
2
+ import { updateRouteDetails, executeAndSubscribeToRouteStatus } from './chunk-TMHJ6YFK.js';
3
3
  import { messages } from './chunk-P36PE4CR.js';
4
4
  import { trackTransaction } from './chunk-SXBG57J3.js';
5
5
  import { ApiState } from './chunk-F66EKL3W.js';
@@ -1,5 +1,5 @@
1
- import { createValidAddressList, executeTransactions } from './chunk-W4ZLRWOX.js';
2
- import { updateRouteDetails, executeAndSubscribeToRouteStatus } from './chunk-QCGHODGV.js';
1
+ import { createValidAddressList, executeTransactions } from './chunk-U7ROAZO7.js';
2
+ import { updateRouteDetails, routeRequiresSequentialSigning, executeAndSubscribeToRouteStatus } from './chunk-TMHJ6YFK.js';
3
3
  import { messages } from './chunk-P36PE4CR.js';
4
4
  import { ApiState } from './chunk-F66EKL3W.js';
5
5
 
@@ -41,7 +41,13 @@ var executeRoute = async (options) => {
41
41
  }
42
42
  });
43
43
  }
44
- const { transactionDetails, executeTransaction } = await executeTransactions({ ...options, routeId, txs: response?.txs });
44
+ const batchSignTxs = routeRequiresSequentialSigning(route?.operations) ? false : options.batchSignTxs;
45
+ const { transactionDetails, executeTransaction } = await executeTransactions({
46
+ ...options,
47
+ batchSignTxs,
48
+ routeId,
49
+ txs: response?.txs
50
+ });
45
51
  await executeAndSubscribeToRouteStatus({
46
52
  transactionDetails,
47
53
  executeTransaction,
@@ -4,6 +4,121 @@ import { wait } from './chunk-F66EKL3W.js';
4
4
  import { v4 } from 'uuid';
5
5
 
6
6
  // src/utils/clientType.ts
7
+ var OperationType = /* @__PURE__ */ ((OperationType2) => {
8
+ OperationType2["swap"] = "swap";
9
+ OperationType2["evmSwap"] = "evmSwap";
10
+ OperationType2["transfer"] = "transfer";
11
+ OperationType2["axelarTransfer"] = "axelarTransfer";
12
+ OperationType2["cctpTransfer"] = "cctpTransfer";
13
+ OperationType2["cctpTransferV2"] = "cctpTransferV2";
14
+ OperationType2["hyperlaneTransfer"] = "hyperlaneTransfer";
15
+ OperationType2["opInitTransfer"] = "opInitTransfer";
16
+ OperationType2["bankSend"] = "bankSend";
17
+ OperationType2["goFastTransfer"] = "goFastTransfer";
18
+ OperationType2["stargateTransfer"] = "stargateTransfer";
19
+ OperationType2["eurekaTransfer"] = "eurekaTransfer";
20
+ OperationType2["layerZeroTransfer"] = "layerZeroTransfer";
21
+ return OperationType2;
22
+ })(OperationType || {});
23
+ function getOperationDetailsAndType(operation) {
24
+ const combinedOperation = operation;
25
+ let returnValue = {
26
+ details: {},
27
+ type: void 0
28
+ };
29
+ Object.values(OperationType).find((type) => {
30
+ const originalDetails = combinedOperation?.[type];
31
+ if (originalDetails) {
32
+ const operationDetails = { ...originalDetails };
33
+ switch (type) {
34
+ case "swap" /* swap */:
35
+ case "evmSwap" /* evmSwap */:
36
+ operationDetails.toChainId = originalDetails.fromChainId;
37
+ break;
38
+ case "axelarTransfer" /* axelarTransfer */:
39
+ operationDetails.denomIn = originalDetails.ibcTransferToAxelar?.denomIn ?? originalDetails.denomIn;
40
+ break;
41
+ case "bankSend" /* bankSend */: {
42
+ const bankSend = originalDetails;
43
+ operationDetails.denomIn = bankSend.denom;
44
+ operationDetails.denomOut = bankSend.denom;
45
+ operationDetails.fromChainId = bankSend.chainId;
46
+ operationDetails.toChainId = bankSend.chainId;
47
+ break;
48
+ }
49
+ }
50
+ returnValue = {
51
+ details: operationDetails,
52
+ type
53
+ };
54
+ }
55
+ });
56
+ return returnValue;
57
+ }
58
+ function getClientOperation(operation) {
59
+ const { details, type } = getOperationDetailsAndType(operation);
60
+ return {
61
+ type,
62
+ ...details,
63
+ txIndex: operation.txIndex,
64
+ amountIn: operation.amountIn,
65
+ amountOut: operation.amountOut,
66
+ swapVenues: [
67
+ ...details.swapVenues ?? [],
68
+ ...details?.swapIn ? [details?.swapIn.swapVenue] : [],
69
+ ...details?.swapOut ? [details?.swapOut.swapVenue] : []
70
+ ]
71
+ };
72
+ }
73
+ function getClientOperations(operations) {
74
+ if (!operations) return [];
75
+ let transferIndex = 0;
76
+ const filteredOperations = filterNeutronSwapFee(operations);
77
+ return filteredOperations.map((operation, index, arr) => {
78
+ const prevOperation = arr[index - 1];
79
+ const signRequired = (() => {
80
+ if (index === 0) {
81
+ return false;
82
+ } else {
83
+ if (prevOperation && operation.txIndex > prevOperation.txIndex) {
84
+ return true;
85
+ }
86
+ return false;
87
+ }
88
+ })();
89
+ const clientOperation = getClientOperation(operation);
90
+ const isSwap = clientOperation.type === "swap" /* swap */ || clientOperation.type === "evmSwap" /* evmSwap */;
91
+ const result = {
92
+ ...clientOperation,
93
+ transferIndex,
94
+ signRequired,
95
+ isSwap
96
+ };
97
+ if (!isSwap) {
98
+ transferIndex++;
99
+ }
100
+ return result;
101
+ });
102
+ }
103
+ function routeRequiresSequentialSigning(operations) {
104
+ const bridgeIds = new Set(getClientOperations(operations).map((operation) => operation.bridgeId));
105
+ return bridgeIds.has("CCTP" /* CCTP */) && bridgeIds.has("CCTP_V2" /* CCTP_V2 */);
106
+ }
107
+ function filterNeutronSwapFee(operations) {
108
+ return operations.filter((op, i) => {
109
+ const clientOperation = getClientOperation(op);
110
+ if (clientOperation.type === "swap" /* swap */ && clientOperation.chainId === "neutron-1" && clientOperation.denomOut === "untrn" && clientOperation.fromChainId === "neutron-1" && clientOperation.swapOut?.swapAmountOut === "200000") {
111
+ const nextOperation = operations[i + 1];
112
+ if (nextOperation) {
113
+ const nextClientOperation = getClientOperation(nextOperation);
114
+ if (nextClientOperation.type === "swap" /* swap */ && nextClientOperation.chainId === "neutron-1") {
115
+ return false;
116
+ }
117
+ }
118
+ }
119
+ return true;
120
+ });
121
+ }
7
122
  function getClientTransferEvent(transferEvent) {
8
123
  const combinedTransferEvent = transferEvent;
9
124
  const axelarTransfer = combinedTransferEvent?.axelarTransfer;
@@ -73,7 +188,7 @@ function getClientTransferEvent(transferEvent) {
73
188
  explorerLink: goFastTransfer.txs.orderFilledTx?.explorerLink ?? goFastTransfer.txs.orderTimeoutTx?.explorerLink ?? goFastTransfer.txs.orderRefundedTx?.explorerLink,
74
189
  txHash: goFastTransfer.txs.orderFilledTx?.txHash
75
190
  };
76
- case "axelarTransfer" /* axelarTransfer */:
191
+ case "axelarTransfer" /* axelarTransfer */: {
77
192
  const sendTokenTxs = axelarTransfer.txs;
78
193
  const contractCallWithTokenTxs = axelarTransfer.txs?.contractCallWithTokenTxs;
79
194
  if (type === "send") {
@@ -86,6 +201,7 @@ function getClientTransferEvent(transferEvent) {
86
201
  explorerLink: sendTokenTxs?.executeTx?.explorerLink ?? contractCallWithTokenTxs?.executeTx?.explorerLink,
87
202
  txHash: sendTokenTxs?.executeTx?.txHash ?? contractCallWithTokenTxs?.executeTx?.txHash
88
203
  };
204
+ }
89
205
  default:
90
206
  if (type === "send") {
91
207
  return {
@@ -568,4 +684,4 @@ var updateRelatedRoutes = ({
568
684
  return updatedRelatedRoutes;
569
685
  };
570
686
 
571
- export { TransferType, executeAndSubscribeToRouteStatus, getSimpleOverallStatus, getTransactionStatus, getTransferEventsFromTxStatusResponse, subscribeToRouteStatus, updateRouteDetails };
687
+ export { TransferType, executeAndSubscribeToRouteStatus, getSimpleOverallStatus, getTransactionStatus, getTransferEventsFromTxStatusResponse, routeRequiresSequentialSigning, subscribeToRouteStatus, updateRouteDetails };
@@ -1,4 +1,4 @@
1
- import { updateRouteDetails } from './chunk-QCGHODGV.js';
1
+ import { updateRouteDetails } from './chunk-TMHJ6YFK.js';
2
2
  import { validateCosmosGasBalance } from './chunk-CRKF5WSW.js';
3
3
  import { getEncodeObjectFromCosmosMessage } from './chunk-GPEO2I4P.js';
4
4
  import { getEVMGasAmountForMessage } from './chunk-GV2QOWB4.js';
package/dist/esm/index.js CHANGED
@@ -2,10 +2,10 @@ export { AutopilotActionJson, AxelarTransferStateJson, AxelarTransferTypeJson, B
2
2
  export { setClientOptions } from './chunk-GZJLX2CP.js';
3
3
  export { setApiOptions } from './chunk-QYXGDTUU.js';
4
4
  export { waitForTransaction, waitForTransactionWithCancel } from './chunk-E4NRDAVO.js';
5
- export { executeMultipleRoutes } from './chunk-YLO3LH4B.js';
6
- export { executeRoute } from './chunk-R2AIIQDV.js';
7
- import './chunk-W4ZLRWOX.js';
8
- export { TransferType, getSimpleOverallStatus, getTransferEventsFromTxStatusResponse, subscribeToRouteStatus } from './chunk-QCGHODGV.js';
5
+ export { executeMultipleRoutes } from './chunk-FH37EMLQ.js';
6
+ export { executeRoute } from './chunk-SJG6WKJT.js';
7
+ import './chunk-U7ROAZO7.js';
8
+ export { TransferType, getSimpleOverallStatus, getTransferEventsFromTxStatusResponse, subscribeToRouteStatus } from './chunk-TMHJ6YFK.js';
9
9
  export { validateCosmosGasBalance } from './chunk-CRKF5WSW.js';
10
10
  export { getCosmosGasAmountForMessage } from './chunk-GPEO2I4P.js';
11
11
  import './chunk-F2LQB2DP.js';
@@ -1,6 +1,6 @@
1
- export { executeMultipleRoutes } from '../chunk-YLO3LH4B.js';
2
- import '../chunk-W4ZLRWOX.js';
3
- import '../chunk-QCGHODGV.js';
1
+ export { executeMultipleRoutes } from '../chunk-FH37EMLQ.js';
2
+ import '../chunk-U7ROAZO7.js';
3
+ import '../chunk-TMHJ6YFK.js';
4
4
  import '../chunk-CRKF5WSW.js';
5
5
  import '../chunk-GPEO2I4P.js';
6
6
  import '../chunk-F2LQB2DP.js';
@@ -1,6 +1,6 @@
1
- export { executeRoute } from '../chunk-R2AIIQDV.js';
2
- import '../chunk-W4ZLRWOX.js';
3
- import '../chunk-QCGHODGV.js';
1
+ export { executeRoute } from '../chunk-SJG6WKJT.js';
2
+ import '../chunk-U7ROAZO7.js';
3
+ import '../chunk-TMHJ6YFK.js';
4
4
  import '../chunk-CRKF5WSW.js';
5
5
  import '../chunk-GPEO2I4P.js';
6
6
  import '../chunk-F2LQB2DP.js';
@@ -2,10 +2,10 @@ export { getRouteWithGasOnReceive } from '../chunk-RH7PDDI5.js';
2
2
  import '../chunk-GZJLX2CP.js';
3
3
  import '../chunk-QYXGDTUU.js';
4
4
  import '../chunk-E4NRDAVO.js';
5
- import '../chunk-YLO3LH4B.js';
6
- import '../chunk-R2AIIQDV.js';
7
- import '../chunk-W4ZLRWOX.js';
8
- import '../chunk-QCGHODGV.js';
5
+ import '../chunk-FH37EMLQ.js';
6
+ import '../chunk-SJG6WKJT.js';
7
+ import '../chunk-U7ROAZO7.js';
8
+ import '../chunk-TMHJ6YFK.js';
9
9
  import '../chunk-CRKF5WSW.js';
10
10
  import '../chunk-GPEO2I4P.js';
11
11
  import '../chunk-F2LQB2DP.js';
@@ -1,4 +1,4 @@
1
- export { executeAndSubscribeToRouteStatus, getTransactionStatus, subscribeToRouteStatus, updateRouteDetails } from '../chunk-QCGHODGV.js';
1
+ export { executeAndSubscribeToRouteStatus, getTransactionStatus, subscribeToRouteStatus, updateRouteDetails } from '../chunk-TMHJ6YFK.js';
2
2
  import '../chunk-SXBG57J3.js';
3
3
  import '../chunk-N4PTRCNT.js';
4
4
  import '../chunk-F66EKL3W.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@skip-go/client",
3
3
  "description": "JavaScript SDK for Skip Go API",
4
- "version": "1.6.0",
4
+ "version": "1.6.2",
5
5
  "repository": "https://github.com/skip-mev/skip-go",
6
6
  "type": "module",
7
7
  "main": "./dist/cjs/index.cjs",
@@ -34,7 +34,7 @@
34
34
  "sideEffects": false,
35
35
  "peerDependencies": {
36
36
  "@solana/web3.js": "^1.95.8",
37
- "viem": "2.x"
37
+ "viem": ">=2.39.0"
38
38
  },
39
39
  "dependencies": {
40
40
  "@cosmjs/amino": "0.33.1",