@skip-go/client 1.3.6 → 1.4.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/cjs/api/getAssets.cjs +4 -4
- package/dist/cjs/api/getAssetsBetweenChains.cjs +3 -3
- package/dist/cjs/api/getBridges.cjs +3 -3
- package/dist/cjs/api/getChains.cjs +3 -3
- package/dist/cjs/api/getVenues.cjs +3 -3
- package/dist/cjs/api/postAssetsFromSource.cjs +4 -4
- package/dist/cjs/api/postBalances.cjs +3 -3
- package/dist/cjs/api/postIbcOriginAssets.cjs +3 -3
- package/dist/cjs/api/postMessages.cjs +3 -3
- package/dist/cjs/api/postMessagesDirect.cjs +3 -3
- package/dist/cjs/api/postRecommendAssets.cjs +3 -3
- package/dist/cjs/api/postRoute.cjs +3 -3
- package/dist/cjs/api/postSubmitTransaction.cjs +3 -3
- package/dist/cjs/api/postTrackTransaction.cjs +3 -3
- package/dist/cjs/api/postTransactionStatus.cjs +3 -3
- package/dist/cjs/chunk-3M7YYWGL.cjs +295 -0
- package/dist/cjs/{chunk-IE22IVFA.cjs → chunk-46VB6RQK.cjs} +8 -8
- package/dist/cjs/{chunk-MW3TE7DC.cjs → chunk-5AYPH3ZR.cjs} +2 -2
- package/dist/cjs/{chunk-2CCLIBCC.cjs → chunk-5HDKZVOL.cjs} +2 -2
- package/dist/cjs/{chunk-3FYU3BJ7.cjs → chunk-6LA66667.cjs} +126 -16
- package/dist/cjs/chunk-7MC3BVQN.cjs +370 -0
- package/dist/cjs/{chunk-YYBGBKRE.cjs → chunk-A26H4FVN.cjs} +4 -4
- package/dist/cjs/{chunk-P7CDAHIX.cjs → chunk-AXYRULAI.cjs} +2 -2
- package/dist/cjs/{chunk-WMXUOVHN.cjs → chunk-DWOE6N5S.cjs} +248 -532
- package/dist/cjs/{chunk-7I2KQNIU.cjs → chunk-EJMC4JXF.cjs} +2 -2
- package/dist/cjs/{chunk-HKQ5VION.cjs → chunk-ERGJBZUC.cjs} +5 -1
- package/dist/cjs/{chunk-J5RC6ZU5.cjs → chunk-FNB244QI.cjs} +6 -6
- package/dist/cjs/{chunk-2EKCOIWV.cjs → chunk-IDEJORRT.cjs} +155 -154
- package/dist/cjs/{chunk-DBDB2XWX.cjs → chunk-JBKNEFXB.cjs} +3 -3
- package/dist/cjs/{chunk-N3LR7KTI.cjs → chunk-KM2D7PJL.cjs} +33 -57
- package/dist/cjs/{chunk-XGBCEYWI.cjs → chunk-LHY62HPI.cjs} +2 -2
- package/dist/cjs/{chunk-EXK2GDR5.cjs → chunk-LUVMRHAJ.cjs} +2 -2
- package/dist/cjs/{chunk-QSISUSYP.cjs → chunk-N4UW74AG.cjs} +4 -4
- package/dist/cjs/{chunk-FY56EEFB.cjs → chunk-OZUCMWNE.cjs} +2 -2
- package/dist/cjs/{chunk-JTB3SPCH.cjs → chunk-Q43XCBMX.cjs} +6 -6
- package/dist/cjs/{chunk-2VQ2TNFM.cjs → chunk-QPM7H2YL.cjs} +2 -2
- package/dist/cjs/{chunk-FO25SR66.cjs → chunk-RCGCQD6T.cjs} +6 -6
- package/dist/cjs/chunk-VIG2BHYJ.cjs +185 -0
- package/dist/cjs/{chunk-DCFIIF7G.cjs → chunk-X5AJHZ2J.cjs} +2 -2
- package/dist/cjs/{chunk-SZ64FWGB.cjs → chunk-ZAATXQBG.cjs} +2 -2
- package/dist/cjs/{chunk-MCZ3F457.cjs → chunk-ZBPDDVQ2.cjs} +2 -2
- package/dist/cjs/{chunk-VGS46RWR.cjs → chunk-ZKBSNSHQ.cjs} +188 -209
- package/dist/cjs/index.cjs +57 -51
- package/dist/cjs/public-functions/executeRoute.cjs +16 -15
- package/dist/cjs/public-functions/getCosmosGasAmountForMessage.cjs +5 -4
- package/dist/cjs/public-functions/getFeeInfoForChain.cjs +5 -5
- package/dist/cjs/public-functions/getRecommendedGasPrice.cjs +6 -6
- package/dist/cjs/public-functions/getSigningStargateClient.cjs +6 -5
- package/dist/cjs/public-functions/setApiOptions.cjs +3 -3
- package/dist/cjs/public-functions/setClientOptions.cjs +6 -5
- package/dist/cjs/public-functions/subscribeToRouteStatus.cjs +26 -0
- package/dist/cjs/public-functions/validateCosmosGasBalance.cjs +9 -8
- package/dist/cjs/public-functions/waitForTransaction.cjs +5 -5
- package/dist/esm/api/getAssets.js +2 -2
- package/dist/esm/api/getAssetsBetweenChains.js +2 -2
- package/dist/esm/api/getBridges.js +2 -2
- package/dist/esm/api/getChains.js +2 -2
- package/dist/esm/api/getVenues.js +2 -2
- package/dist/esm/api/postAssetsFromSource.js +3 -3
- package/dist/esm/api/postBalances.js +2 -2
- package/dist/esm/api/postIbcOriginAssets.js +2 -2
- package/dist/esm/api/postMessages.js +2 -2
- package/dist/esm/api/postMessagesDirect.js +2 -2
- package/dist/esm/api/postRecommendAssets.js +2 -2
- package/dist/esm/api/postRoute.js +2 -2
- package/dist/esm/api/postSubmitTransaction.js +2 -2
- package/dist/esm/api/postTrackTransaction.d.ts +2 -1
- package/dist/esm/api/postTrackTransaction.js +2 -2
- package/dist/esm/api/postTransactionStatus.d.ts +1 -1
- package/dist/esm/api/postTransactionStatus.js +2 -2
- package/dist/esm/callbacks-B3kjKg0v.d.ts +175 -0
- package/dist/esm/chunk-3J6O2PVK.js +180 -0
- package/dist/esm/{chunk-SJP6W2SK.js → chunk-3XOGEVJL.js} +1 -1
- package/dist/esm/{chunk-ZL6XF5A3.js → chunk-4RLJWCQR.js} +2 -2
- package/dist/esm/{chunk-JSY7M43P.js → chunk-52PEBJRQ.js} +1 -1
- package/dist/esm/{chunk-7ITTEUMR.js → chunk-7X4ERB3R.js} +1 -1
- package/dist/esm/{chunk-LZI7A4JI.js → chunk-A6KSECAH.js} +5 -1
- package/dist/esm/{chunk-7LSTJXAF.js → chunk-AND7HVIU.js} +1 -1
- package/dist/esm/{chunk-MXCJ2M3K.js → chunk-APRMN34M.js} +1 -1
- package/dist/esm/{chunk-6ZLEWCU2.js → chunk-BAJFQZDT.js} +146 -167
- package/dist/esm/{chunk-5KIWNRW4.js → chunk-CIAOTO3M.js} +1 -1
- package/dist/esm/{chunk-JYUNVL4F.js → chunk-FH2YHZVV.js} +1 -1
- package/dist/esm/{chunk-ADUNNC4O.js → chunk-GHNH5QC3.js} +3 -3
- package/dist/esm/{chunk-OHV2LZEG.js → chunk-JQ4F4WBG.js} +1 -1
- package/dist/esm/{chunk-TV2XPAIF.js → chunk-KNXMSLOB.js} +3 -26
- package/dist/esm/{chunk-YLVFZDR5.js → chunk-KYDY7QRT.js} +109 -3
- package/dist/esm/{chunk-IWXRHEX4.js → chunk-LHNGF5J2.js} +2 -2
- package/dist/esm/{chunk-JIADJKRD.js → chunk-OTS5KO43.js} +1 -1
- package/dist/esm/{chunk-CU6W3622.js → chunk-QIS6ILPS.js} +3 -3
- package/dist/esm/chunk-QO2CYYF5.js +278 -0
- package/dist/esm/{chunk-OL7CWCPB.js → chunk-REWUSU53.js} +4 -3
- package/dist/esm/chunk-RQ7DXNSS.js +365 -0
- package/dist/esm/{chunk-XXTECZG3.js → chunk-S4RO2LHD.js} +1 -1
- package/dist/esm/{chunk-7YN3UVVF.js → chunk-UI3SIFZN.js} +1 -1
- package/dist/esm/{chunk-TD63P2AG.js → chunk-UIDIKXMB.js} +65 -340
- package/dist/esm/{chunk-HT6O3BQ7.js → chunk-Y2YCODZK.js} +1 -1
- package/dist/esm/{chunk-IPHFFTGO.js → chunk-ZI3SYUQH.js} +1 -1
- package/dist/esm/{chunk-2L7PKZDY.js → chunk-ZOUYAZU6.js} +1 -1
- package/dist/esm/index.d.ts +2 -3
- package/dist/esm/index.js +27 -25
- package/dist/esm/public-functions/executeRoute.d.ts +7 -76
- package/dist/esm/public-functions/executeRoute.js +15 -14
- package/dist/esm/public-functions/getCosmosGasAmountForMessage.js +3 -2
- package/dist/esm/public-functions/getFeeInfoForChain.js +4 -4
- package/dist/esm/public-functions/getRecommendedGasPrice.js +5 -5
- package/dist/esm/public-functions/getSigningStargateClient.js +5 -4
- package/dist/esm/public-functions/setApiOptions.js +2 -2
- package/dist/esm/public-functions/setClientOptions.js +5 -4
- package/dist/esm/public-functions/subscribeToRouteStatus.d.ts +12 -0
- package/dist/esm/public-functions/subscribeToRouteStatus.js +5 -0
- package/dist/esm/public-functions/validateCosmosGasBalance.d.ts +3 -2
- package/dist/esm/public-functions/validateCosmosGasBalance.js +8 -7
- package/dist/esm/public-functions/waitForTransaction.d.ts +5 -1
- package/dist/esm/public-functions/waitForTransaction.js +4 -4
- package/package.json +3 -3
- package/dist/cjs/chunk-MN763TPC.cjs +0 -187
- package/dist/esm/callbacks-CuL50GnB.d.ts +0 -38
- package/dist/esm/chunk-VBWLUZXT.js +0 -182
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { trackTransaction } from './chunk-7X4ERB3R.js';
|
|
2
|
+
import { transactionStatus } from './chunk-APRMN34M.js';
|
|
3
|
+
import { wait } from './chunk-A6KSECAH.js';
|
|
4
|
+
import { v4 } from 'uuid';
|
|
5
|
+
|
|
6
|
+
// src/utils/clientType.ts
|
|
7
|
+
function getClientTransferEvent(transferEvent) {
|
|
8
|
+
const combinedTransferEvent = transferEvent;
|
|
9
|
+
const axelarTransfer = combinedTransferEvent?.axelarTransfer;
|
|
10
|
+
const ibcTransfer = combinedTransferEvent?.ibcTransfer;
|
|
11
|
+
const cctpTransfer = combinedTransferEvent?.cctpTransfer;
|
|
12
|
+
const hyperlaneTransfer = combinedTransferEvent?.hyperlaneTransfer;
|
|
13
|
+
const opInitTransfer = combinedTransferEvent?.opInitTransfer;
|
|
14
|
+
const goFastTransfer = combinedTransferEvent?.goFastTransfer;
|
|
15
|
+
const stargateTransfer = combinedTransferEvent?.stargateTransfer;
|
|
16
|
+
const eurekaTransfer = combinedTransferEvent?.eurekaTransfer;
|
|
17
|
+
const layerZeroTransfer = combinedTransferEvent?.layerZeroTransfer;
|
|
18
|
+
let transferType = "";
|
|
19
|
+
if (axelarTransfer) {
|
|
20
|
+
transferType = "axelarTransfer" /* axelarTransfer */;
|
|
21
|
+
} else if (ibcTransfer) {
|
|
22
|
+
transferType = "ibcTransfer" /* ibcTransfer */;
|
|
23
|
+
} else if (cctpTransfer) {
|
|
24
|
+
transferType = "cctpTransfer" /* cctpTransfer */;
|
|
25
|
+
} else if (hyperlaneTransfer) {
|
|
26
|
+
transferType = "hyperlaneTransfer" /* hyperlaneTransfer */;
|
|
27
|
+
} else if (opInitTransfer) {
|
|
28
|
+
transferType = "opInitTransfer" /* opInitTransfer */;
|
|
29
|
+
} else if (goFastTransfer) {
|
|
30
|
+
transferType = "goFastTransfer" /* goFastTransfer */;
|
|
31
|
+
} else if (stargateTransfer) {
|
|
32
|
+
transferType = "stargateTransfer" /* stargateTransfer */;
|
|
33
|
+
} else if (eurekaTransfer) {
|
|
34
|
+
transferType = "eurekaTransfer" /* eurekaTransfer */;
|
|
35
|
+
} else if (layerZeroTransfer) {
|
|
36
|
+
transferType = "layerZeroTransfer" /* layerZeroTransfer */;
|
|
37
|
+
}
|
|
38
|
+
const getExplorerLink = (type) => {
|
|
39
|
+
switch (transferType) {
|
|
40
|
+
case "ibcTransfer" /* ibcTransfer */:
|
|
41
|
+
if (type === "send") {
|
|
42
|
+
return ibcTransfer.packetTxs.sendTx?.explorerLink;
|
|
43
|
+
}
|
|
44
|
+
return ibcTransfer.packetTxs.receiveTx?.explorerLink;
|
|
45
|
+
case "eurekaTransfer" /* eurekaTransfer */:
|
|
46
|
+
if (type === "send") {
|
|
47
|
+
return eurekaTransfer.packetTxs.sendTx?.explorerLink;
|
|
48
|
+
}
|
|
49
|
+
return eurekaTransfer.packetTxs.receiveTx?.explorerLink;
|
|
50
|
+
case "goFastTransfer" /* goFastTransfer */:
|
|
51
|
+
if (type === "send") {
|
|
52
|
+
return goFastTransfer.txs.orderSubmittedTx?.explorerLink;
|
|
53
|
+
}
|
|
54
|
+
return goFastTransfer.txs.orderFilledTx?.explorerLink;
|
|
55
|
+
case "axelarTransfer" /* axelarTransfer */:
|
|
56
|
+
return axelarTransfer?.axelarScanLink;
|
|
57
|
+
default:
|
|
58
|
+
if (type === "send") {
|
|
59
|
+
return combinedTransferEvent[transferType]?.txs?.sendTx?.explorerLink;
|
|
60
|
+
}
|
|
61
|
+
return combinedTransferEvent[transferType]?.txs?.receiveTx?.explorerLink;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const _result = {
|
|
65
|
+
...ibcTransfer,
|
|
66
|
+
...axelarTransfer,
|
|
67
|
+
...cctpTransfer,
|
|
68
|
+
...hyperlaneTransfer,
|
|
69
|
+
...stargateTransfer,
|
|
70
|
+
...hyperlaneTransfer,
|
|
71
|
+
...opInitTransfer,
|
|
72
|
+
...goFastTransfer,
|
|
73
|
+
...stargateTransfer,
|
|
74
|
+
...eurekaTransfer,
|
|
75
|
+
...layerZeroTransfer,
|
|
76
|
+
fromExplorerLink: getExplorerLink("send"),
|
|
77
|
+
toExplorerLink: getExplorerLink("receive")
|
|
78
|
+
};
|
|
79
|
+
const status = getSimpleStatus(_result.state);
|
|
80
|
+
const result = {
|
|
81
|
+
..._result,
|
|
82
|
+
status
|
|
83
|
+
};
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
function getTransferEventsFromTxStatusResponse(txStatusResponse) {
|
|
87
|
+
if (!txStatusResponse) return [];
|
|
88
|
+
return txStatusResponse?.flatMap((txStatus) => {
|
|
89
|
+
return (txStatus.transferSequence ?? []).map((transferEvent) => {
|
|
90
|
+
return getClientTransferEvent(transferEvent);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function getSimpleStatus(state) {
|
|
95
|
+
switch (state) {
|
|
96
|
+
case "TRANSFER_PENDING":
|
|
97
|
+
case "TRANSFER_RECEIVED":
|
|
98
|
+
case "AXELAR_TRANSFER_PENDING_CONFIRMATION":
|
|
99
|
+
case "AXELAR_TRANSFER_PENDING_RECEIPT":
|
|
100
|
+
case "CCTP_TRANSFER_SENT":
|
|
101
|
+
case "CCTP_TRANSFER_PENDING_CONFIRMATION":
|
|
102
|
+
case "CCTP_TRANSFER_CONFIRMED":
|
|
103
|
+
case "HYPERLANE_TRANSFER_SENT":
|
|
104
|
+
case "OPINIT_TRANSFER_SENT":
|
|
105
|
+
case "GO_FAST_TRANSFER_SENT":
|
|
106
|
+
case "STARGATE_TRANSFER_SENT":
|
|
107
|
+
case "LAYER_ZERO_TRANSFER_SENT":
|
|
108
|
+
return "pending";
|
|
109
|
+
case "TRANSFER_SUCCESS":
|
|
110
|
+
case "AXELAR_TRANSFER_SUCCESS":
|
|
111
|
+
case "CCTP_TRANSFER_RECEIVED":
|
|
112
|
+
case "HYPERLANE_TRANSFER_RECEIVED":
|
|
113
|
+
case "OPINIT_TRANSFER_RECEIVED":
|
|
114
|
+
case "STARGATE_TRANSFER_RECEIVED":
|
|
115
|
+
case "GO_FAST_TRANSFER_FILLED":
|
|
116
|
+
case "LAYER_ZERO_TRANSFER_RECEIVED":
|
|
117
|
+
return "completed";
|
|
118
|
+
default:
|
|
119
|
+
return "failed";
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function getTransactionStatus(state) {
|
|
123
|
+
switch (state) {
|
|
124
|
+
case "STATE_SUBMITTED":
|
|
125
|
+
case "STATE_PENDING":
|
|
126
|
+
return "pending";
|
|
127
|
+
case "STATE_COMPLETED_SUCCESS":
|
|
128
|
+
return "success";
|
|
129
|
+
case "STATE_COMPLETED_ERROR":
|
|
130
|
+
case "STATE_PENDING_ERROR":
|
|
131
|
+
return "failed";
|
|
132
|
+
default:
|
|
133
|
+
return "pending";
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
var isFinalRouteStatus = (routeDetails) => {
|
|
137
|
+
if (routeDetails.status === "completed" || routeDetails.status === "failed" || routeDetails.status === "incomplete") {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return false;
|
|
141
|
+
};
|
|
142
|
+
var isFinalState = (transaction) => {
|
|
143
|
+
const transactionState = transaction?.statusResponse?.state;
|
|
144
|
+
const transactionStatus2 = transaction?.status;
|
|
145
|
+
return transactionState === "STATE_COMPLETED_SUCCESS" || transactionState === "STATE_COMPLETED_ERROR" || transactionState === "STATE_ABANDONED" || transactionStatus2 === "failed" || transactionStatus2 === "success";
|
|
146
|
+
};
|
|
147
|
+
var isSuccessState = (transaction) => {
|
|
148
|
+
const transactionState = transaction?.statusResponse?.state;
|
|
149
|
+
const transactionStatus2 = transaction?.status;
|
|
150
|
+
return transactionState === "STATE_COMPLETED_SUCCESS" || transactionStatus2 === "success";
|
|
151
|
+
};
|
|
152
|
+
var routeDetailsMap = /* @__PURE__ */ new Map();
|
|
153
|
+
var initializeNewRouteDetails = (options) => {
|
|
154
|
+
const newRouteId = v4();
|
|
155
|
+
const newRouteDetails = {
|
|
156
|
+
id: newRouteId,
|
|
157
|
+
timestamp: Date.now(),
|
|
158
|
+
route: getSimpleRoute(options?.route),
|
|
159
|
+
status: "unconfirmed",
|
|
160
|
+
txsRequired: options?.route?.txsRequired ?? 1,
|
|
161
|
+
txsSigned: 0,
|
|
162
|
+
transactionDetails: [],
|
|
163
|
+
transferEvents: [],
|
|
164
|
+
senderAddress: options?.userAddresses?.[0]?.address ?? "",
|
|
165
|
+
receiverAddress: options?.userAddresses?.at(-1)?.address ?? ""
|
|
166
|
+
};
|
|
167
|
+
routeDetailsMap.set(newRouteId, newRouteDetails);
|
|
168
|
+
return newRouteDetails;
|
|
169
|
+
};
|
|
170
|
+
var subscribeToRouteStatus = (props) => {
|
|
171
|
+
let cancelled = false;
|
|
172
|
+
const unsubscribe = () => {
|
|
173
|
+
cancelled = true;
|
|
174
|
+
};
|
|
175
|
+
executeAndSubscribeToRouteStatus({
|
|
176
|
+
...props,
|
|
177
|
+
isCancelled: () => cancelled
|
|
178
|
+
});
|
|
179
|
+
return unsubscribe;
|
|
180
|
+
};
|
|
181
|
+
var executeAndSubscribeToRouteStatus = async ({
|
|
182
|
+
transactionDetails,
|
|
183
|
+
executeTransaction,
|
|
184
|
+
trackTxPollingOptions,
|
|
185
|
+
onTransactionTracked,
|
|
186
|
+
onTransactionCompleted,
|
|
187
|
+
routeDetails,
|
|
188
|
+
onRouteStatusUpdated,
|
|
189
|
+
options,
|
|
190
|
+
routeId,
|
|
191
|
+
isCancelled
|
|
192
|
+
}) => {
|
|
193
|
+
removeRoutesWithFinalStatus();
|
|
194
|
+
routeId ??= routeDetails?.id;
|
|
195
|
+
const currentRouteDetails = routeDetailsMap.get(routeId ?? "");
|
|
196
|
+
transactionDetails ??= routeDetails?.transactionDetails ?? currentRouteDetails?.transactionDetails ?? [];
|
|
197
|
+
if (routeDetails && isFinalRouteStatus(routeDetails)) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
for (const [transactionIndex, transaction] of transactionDetails.entries()) {
|
|
201
|
+
if (executeTransaction && !transaction.txHash) {
|
|
202
|
+
let { txHash, explorerLink } = await executeTransaction?.(transactionIndex);
|
|
203
|
+
transaction.txHash = txHash;
|
|
204
|
+
if (!explorerLink) {
|
|
205
|
+
const trackResponse = await trackTransaction({
|
|
206
|
+
chainId: transaction.chainId,
|
|
207
|
+
txHash: transaction.txHash,
|
|
208
|
+
...trackTxPollingOptions
|
|
209
|
+
});
|
|
210
|
+
explorerLink = trackResponse.explorerLink;
|
|
211
|
+
}
|
|
212
|
+
transaction.explorerLink = explorerLink;
|
|
213
|
+
await onTransactionTracked?.({ txHash: transaction.txHash, chainId: transaction.chainId, explorerLink });
|
|
214
|
+
}
|
|
215
|
+
if (transaction.txHash === void 0) {
|
|
216
|
+
updateRouteDetails({
|
|
217
|
+
routeId,
|
|
218
|
+
routeDetails,
|
|
219
|
+
transactionDetails,
|
|
220
|
+
options: {
|
|
221
|
+
onRouteStatusUpdated,
|
|
222
|
+
...options
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
while (!isFinalState(transaction)) {
|
|
228
|
+
if (isCancelled?.()) {
|
|
229
|
+
console.info(`Polling cancelled for route ${routeId}`);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
const statusResponse = await transactionStatus({
|
|
234
|
+
chainId: transaction.chainId,
|
|
235
|
+
txHash: transaction.txHash
|
|
236
|
+
});
|
|
237
|
+
transaction.statusResponse = statusResponse;
|
|
238
|
+
updateRouteDetails({
|
|
239
|
+
routeId,
|
|
240
|
+
routeDetails,
|
|
241
|
+
transactionDetails,
|
|
242
|
+
options: {
|
|
243
|
+
onRouteStatusUpdated,
|
|
244
|
+
...options
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
if (isFinalState(transaction)) {
|
|
248
|
+
onTransactionCompleted?.({
|
|
249
|
+
chainId: transaction.chainId,
|
|
250
|
+
txHash: transaction.txHash,
|
|
251
|
+
status: statusResponse
|
|
252
|
+
});
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
} catch (error) {
|
|
256
|
+
console.error(error);
|
|
257
|
+
} finally {
|
|
258
|
+
await wait(1e3);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
var updateRouteDetails = ({
|
|
264
|
+
transactionDetails,
|
|
265
|
+
routeDetails,
|
|
266
|
+
options,
|
|
267
|
+
status,
|
|
268
|
+
routeId
|
|
269
|
+
}) => {
|
|
270
|
+
routeId ??= routeDetails?.id ?? "";
|
|
271
|
+
let currentRouteDetails = routeDetails ?? routeDetailsMap.get(routeId);
|
|
272
|
+
if (!routeId && currentRouteDetails == void 0) {
|
|
273
|
+
currentRouteDetails = initializeNewRouteDetails(options);
|
|
274
|
+
routeId = currentRouteDetails?.id;
|
|
275
|
+
}
|
|
276
|
+
if (currentRouteDetails === void 0) {
|
|
277
|
+
throw new Error("No route details found");
|
|
278
|
+
}
|
|
279
|
+
transactionDetails ??= currentRouteDetails?.transactionDetails ?? [];
|
|
280
|
+
const txsRequired = currentRouteDetails?.txsRequired ?? options?.route?.txsRequired ?? 1;
|
|
281
|
+
if (currentRouteDetails?.status === "signing" && status === "pending") {
|
|
282
|
+
currentRouteDetails.txsSigned += 1;
|
|
283
|
+
}
|
|
284
|
+
const transferEvents = routeDetails?.transferEvents ?? getTransferEventsFromTxStatusResponse(transactionDetails.map((tx) => tx.statusResponse).filter((status2) => status2 !== void 0));
|
|
285
|
+
const allExpectedTxsStarted = transactionDetails.every(
|
|
286
|
+
(tx) => tx.txHash || tx.status === void 0
|
|
287
|
+
);
|
|
288
|
+
const allKnownDetailsHaveFinalStatus = transactionDetails.every(
|
|
289
|
+
(transaction) => isFinalState(transaction)
|
|
290
|
+
);
|
|
291
|
+
const isAllSettled = allExpectedTxsStarted && allKnownDetailsHaveFinalStatus;
|
|
292
|
+
const someTxSucceeded = transactionDetails.some((tx) => isSuccessState(tx));
|
|
293
|
+
const someTxFailed = transactionDetails.some((tx) => !isSuccessState(tx));
|
|
294
|
+
const getRouteStatus = () => {
|
|
295
|
+
if (status) return status;
|
|
296
|
+
if (someTxSucceeded && !allExpectedTxsStarted) return "incomplete";
|
|
297
|
+
if (isAllSettled) {
|
|
298
|
+
if (!someTxFailed) {
|
|
299
|
+
return "completed";
|
|
300
|
+
} else if (someTxSucceeded && someTxFailed) {
|
|
301
|
+
return "incomplete";
|
|
302
|
+
} else if (someTxFailed) {
|
|
303
|
+
return "failed";
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return currentRouteDetails?.status;
|
|
307
|
+
};
|
|
308
|
+
const transferAssetRelease = transactionDetails?.findLast((i) => i.statusResponse?.transferAssetRelease)?.statusResponse?.transferAssetRelease;
|
|
309
|
+
const senderAddress = options?.userAddresses?.at(0);
|
|
310
|
+
const receiverAddress = options?.userAddresses?.at(-1);
|
|
311
|
+
const newRouteDetails = {
|
|
312
|
+
id: routeId,
|
|
313
|
+
timestamp: currentRouteDetails.timestamp,
|
|
314
|
+
status: getRouteStatus(),
|
|
315
|
+
route: getSimpleRoute(currentRouteDetails?.route ?? options?.route),
|
|
316
|
+
txsRequired,
|
|
317
|
+
transactionDetails,
|
|
318
|
+
transferEvents,
|
|
319
|
+
transferAssetRelease,
|
|
320
|
+
senderAddress: currentRouteDetails?.senderAddress ?? senderAddress?.address ?? "",
|
|
321
|
+
receiverAddress: currentRouteDetails?.receiverAddress ?? receiverAddress?.address ?? "",
|
|
322
|
+
txsSigned: currentRouteDetails?.txsSigned
|
|
323
|
+
};
|
|
324
|
+
const newRouteStatus = getRouteDetailsWithSimpleTransactionDetailsStatus(newRouteDetails);
|
|
325
|
+
const previousRouteStatus = getRouteDetailsWithSimpleTransactionDetailsStatus(currentRouteDetails);
|
|
326
|
+
if (options?.onRouteStatusUpdated && JSON.stringify(newRouteStatus) !== JSON.stringify(previousRouteStatus)) {
|
|
327
|
+
options?.onRouteStatusUpdated?.(newRouteStatus);
|
|
328
|
+
}
|
|
329
|
+
if (routeId) {
|
|
330
|
+
routeDetailsMap.set(routeId, newRouteDetails);
|
|
331
|
+
}
|
|
332
|
+
return newRouteDetails;
|
|
333
|
+
};
|
|
334
|
+
var getSimpleRoute = (route) => {
|
|
335
|
+
return {
|
|
336
|
+
amountIn: route?.amountIn,
|
|
337
|
+
amountOut: route?.amountOut,
|
|
338
|
+
sourceAssetDenom: route?.sourceAssetDenom,
|
|
339
|
+
sourceAssetChainId: route?.sourceAssetChainId,
|
|
340
|
+
destAssetDenom: route?.destAssetDenom,
|
|
341
|
+
destAssetChainId: route?.destAssetChainId,
|
|
342
|
+
estimatedRouteDurationSeconds: route?.estimatedRouteDurationSeconds
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
var getRouteDetailsWithSimpleTransactionDetailsStatus = (routeDetails) => {
|
|
346
|
+
return {
|
|
347
|
+
...routeDetails,
|
|
348
|
+
transactionDetails: routeDetails.transactionDetails.map((txDetails) => {
|
|
349
|
+
const { statusResponse, ...rest } = txDetails;
|
|
350
|
+
return {
|
|
351
|
+
...rest,
|
|
352
|
+
status: txDetails?.status ?? getTransactionStatus(txDetails.statusResponse?.state)
|
|
353
|
+
};
|
|
354
|
+
})
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
var removeRoutesWithFinalStatus = () => {
|
|
358
|
+
routeDetailsMap.forEach((routeDetails, routeId) => {
|
|
359
|
+
if (routeDetails.status === "completed" || routeDetails.status === "failed" || routeDetails.status === "incomplete") {
|
|
360
|
+
routeDetailsMap.delete(routeId);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
export { executeAndSubscribeToRouteStatus, getTransactionStatus, subscribeToRouteStatus, updateRouteDetails };
|