@ensofinance/checkout-widget 0.0.17 → 0.0.18
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/checkout-widget.es.js +21976 -33880
- package/dist/checkout-widget.es.js.map +1 -1
- package/dist/checkout-widget.umd.js +61 -46
- package/dist/checkout-widget.umd.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/package.json +2 -2
- package/src/components/Checkout.tsx +3 -2
- package/src/components/steps/ExchangeFlow.tsx +526 -155
- package/src/enso-api/index.ts +276 -1
- package/src/enso-api/model/action.ts +1 -1
- package/src/enso-api/model/actionAction.ts +1 -1
- package/src/enso-api/model/actionInputs.ts +1 -1
- package/src/enso-api/model/actionToBundle.ts +1 -1
- package/src/enso-api/model/actionToBundleAction.ts +1 -1
- package/src/enso-api/model/actionToBundleArgs.ts +1 -1
- package/src/enso-api/model/approveActionDto.ts +1 -1
- package/src/enso-api/model/approveArgsDto.ts +1 -1
- package/src/enso-api/model/approveArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/balanceActionDto.ts +1 -1
- package/src/enso-api/model/balanceArgsDto.ts +1 -1
- package/src/enso-api/model/borrowActionDto.ts +1 -1
- package/src/enso-api/model/borrowArgsDto.ts +1 -1
- package/src/enso-api/model/borrowArgsDtoAmountOut.ts +1 -1
- package/src/enso-api/model/bridgeActionDto.ts +1 -1
- package/src/enso-api/model/bridgeArgsDto.ts +1 -1
- package/src/enso-api/model/bridgeArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/bridgeArgsDtoCallbackItem.ts +1 -1
- package/src/enso-api/model/bridgeLatencyEstimate.ts +1 -1
- package/src/enso-api/model/bridgeTransactionResponse.ts +37 -0
- package/src/enso-api/model/bridgeTransactionResponseStatus.ts +25 -0
- package/src/enso-api/model/bundleControllerBundleShortcutTransactionBodyItem.ts +1 -1
- package/src/enso-api/model/bundleControllerBundleShortcutTransactionParams.ts +1 -1
- package/src/enso-api/model/bundleControllerBundleShortcutTransactionRoutingStrategy.ts +1 -1
- package/src/enso-api/model/bundleShortcutTransaction.ts +1 -1
- package/src/enso-api/model/bundleShortcutTransactionAmountsOut.ts +1 -1
- package/src/enso-api/model/bundleShortcutTransactionFeeAmount.ts +1 -1
- package/src/enso-api/model/bundleShortcutTransactionMinAmountsOut.ts +1 -1
- package/src/enso-api/model/callActionDto.ts +1 -1
- package/src/enso-api/model/callArgsDto.ts +1 -1
- package/src/enso-api/model/callArgsDtoArgsItem.ts +1 -1
- package/src/enso-api/model/callArgsDtoArgsItemAnyOf.ts +1 -1
- package/src/enso-api/model/callArgsDtoValue.ts +1 -1
- package/src/enso-api/model/callOutput.ts +1 -1
- package/src/enso-api/model/connectedNetwork.ts +1 -1
- package/src/enso-api/model/depositActionDto.ts +1 -1
- package/src/enso-api/model/depositArgsDto.ts +1 -1
- package/src/enso-api/model/depositArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/depositArgsDtoAmountInOneOfItem.ts +1 -1
- package/src/enso-api/model/depositArgsDtoTokenIn.ts +1 -1
- package/src/enso-api/model/depositArgsDtoTokenOut.ts +1 -1
- package/src/enso-api/model/depositCLMMActionDto.ts +1 -1
- package/src/enso-api/model/depositCLMMArgsDto.ts +1 -1
- package/src/enso-api/model/depositCLMMArgsDtoAmountInItem.ts +1 -1
- package/src/enso-api/model/depositCLMMArgsDtoAmountInItemAnyOf.ts +1 -1
- package/src/enso-api/model/ensoEvent.ts +30 -0
- package/src/enso-api/model/ensoFeeActionDto.ts +1 -1
- package/src/enso-api/model/ensoFeeArgsDto.ts +1 -1
- package/src/enso-api/model/ensoFeeArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/ensoMetadata.ts +23 -0
- package/src/enso-api/model/feeActionDto.ts +1 -1
- package/src/enso-api/model/feeArgsDto.ts +1 -1
- package/src/enso-api/model/feeArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/harvestActionDto.ts +1 -1
- package/src/enso-api/model/harvestArgsDto.ts +1 -1
- package/src/enso-api/model/hop.ts +1 -1
- package/src/enso-api/model/hopArgs.ts +1 -1
- package/src/enso-api/model/index.ts +8 -1
- package/src/enso-api/model/iporControllerIporShortcutTransactionParams.ts +1 -1
- package/src/enso-api/model/iporShortcutInput.ts +1 -1
- package/src/enso-api/model/iporShortcutTransaction.ts +1 -1
- package/src/enso-api/model/lZDestinationTokenData.ts +1 -1
- package/src/enso-api/model/lZPoolLookupResponse.ts +1 -1
- package/src/enso-api/model/layerZeroControllerCheckBridgeTransactionParams.ts +21 -0
- package/src/enso-api/model/layerZeroControllerGetPoolAddressParams.ts +1 -1
- package/src/enso-api/model/layerZeroMessageStatus.ts +39 -0
- package/src/enso-api/model/mergeActionDto.ts +1 -1
- package/src/enso-api/model/mergeArgsDto.ts +1 -1
- package/src/enso-api/model/mergeArgsDtoAmountInItem.ts +1 -1
- package/src/enso-api/model/minAmountOutActionDto.ts +1 -1
- package/src/enso-api/model/minAmountOutArgsDto.ts +1 -1
- package/src/enso-api/model/minAmountOutArgsDtoAmountOut.ts +1 -1
- package/src/enso-api/model/minAmountOutArgsDtoMinAmountOut.ts +1 -1
- package/src/enso-api/model/multiDepositActionDto.ts +1 -1
- package/src/enso-api/model/multiDepositArgsDto.ts +1 -1
- package/src/enso-api/model/multiDepositArgsDtoAmountInItem.ts +1 -1
- package/src/enso-api/model/multiDepositArgsDtoAmountInItemAnyOf.ts +1 -1
- package/src/enso-api/model/multiOutSingleDepositActionDto.ts +1 -1
- package/src/enso-api/model/multiOutSingleDepositArgsDto.ts +1 -1
- package/src/enso-api/model/multiOutSingleDepositArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/multiRedeemActionDto.ts +1 -1
- package/src/enso-api/model/multiRedeemArgs2Dto.ts +1 -1
- package/src/enso-api/model/multiRedeemArgs2DtoAmountIn.ts +1 -1
- package/src/enso-api/model/network.ts +1 -1
- package/src/enso-api/model/networksControllerNetworksParams.ts +1 -1
- package/src/enso-api/model/nonTokenizedControllerTokens200.ts +1 -1
- package/src/enso-api/model/nonTokenizedControllerTokens200AllOf.ts +1 -1
- package/src/enso-api/model/nonTokenizedControllerTokensParams.ts +1 -1
- package/src/enso-api/model/nonTokenizedModel.ts +1 -1
- package/src/enso-api/model/nontokenizedControllerRouteNontokenizedShorcutTransactionParams.ts +1 -1
- package/src/enso-api/model/nontokenizedControllerRouteNontokenizedShorcutTransactionRoutingStrategy.ts +1 -1
- package/src/enso-api/model/nontokenizedRouteShortcutTransaction.ts +1 -1
- package/src/enso-api/model/paginatedResult.ts +1 -1
- package/src/enso-api/model/paginationMeta.ts +1 -1
- package/src/enso-api/model/paymasterFeeActionDto.ts +1 -1
- package/src/enso-api/model/paymasterFeeArgsDto.ts +1 -1
- package/src/enso-api/model/paymasterFeeArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/permitTransferFromActionDto.ts +1 -1
- package/src/enso-api/model/permitTransferFromArgsDto.ts +1 -1
- package/src/enso-api/model/permitTransferFromArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/permitTransferFromArgsDtoAmountOneOfItem.ts +1 -1
- package/src/enso-api/model/permitTransferFromArgsDtoToken.ts +1 -1
- package/src/enso-api/model/positionModel.ts +1 -1
- package/src/enso-api/model/price.ts +1 -1
- package/src/enso-api/model/pricesControllerGetPricesParams.ts +1 -1
- package/src/enso-api/model/project.ts +1 -1
- package/src/enso-api/model/protocol.ts +1 -1
- package/src/enso-api/model/protocolModel.ts +1 -1
- package/src/enso-api/model/protocolsControllerFindAllParams.ts +1 -1
- package/src/enso-api/model/redeemActionDto.ts +1 -1
- package/src/enso-api/model/redeemArgsDto.ts +1 -1
- package/src/enso-api/model/redeemArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/redeemArgsDtoTokenOut.ts +1 -1
- package/src/enso-api/model/redeemCLMMActionDto.ts +1 -1
- package/src/enso-api/model/redeemCLMMArgsDto.ts +1 -1
- package/src/enso-api/model/redeemCLMMArgsDtoLiquidity.ts +1 -1
- package/src/enso-api/model/refundDetails.ts +21 -0
- package/src/enso-api/model/repayActionDto.ts +1 -1
- package/src/enso-api/model/repayArgsDto.ts +1 -1
- package/src/enso-api/model/repayArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/routeActionDto.ts +1 -1
- package/src/enso-api/model/routeArgsDto.ts +1 -1
- package/src/enso-api/model/routeArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/routeShortcutTransaction.ts +1 -1
- package/src/enso-api/model/routeShortcutVariableInputs.ts +1 -1
- package/src/enso-api/model/routeShortcutVariableInputsRoutingStrategy.ts +1 -1
- package/src/enso-api/model/routeShortcutVariableInputsVariableEstimates.ts +1 -1
- package/src/enso-api/model/routerControllerRouteShortcutTransactionParams.ts +1 -1
- package/src/enso-api/model/routerControllerRouteShortcutTransactionRoutingStrategy.ts +1 -1
- package/src/enso-api/model/singleDepositActionDto.ts +1 -1
- package/src/enso-api/model/singleDepositArgsDto.ts +1 -1
- package/src/enso-api/model/singleDepositArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/singleRedeemActionDto.ts +1 -1
- package/src/enso-api/model/singleRedeemArgs2Dto.ts +1 -1
- package/src/enso-api/model/singleRedeemArgs2DtoAmountIn.ts +1 -1
- package/src/enso-api/model/slippageActionDto.ts +1 -1
- package/src/enso-api/model/slippageArgsDto.ts +1 -1
- package/src/enso-api/model/slippageArgsDtoAmountOut.ts +1 -1
- package/src/enso-api/model/splitActionDto.ts +1 -1
- package/src/enso-api/model/splitArgsDto.ts +1 -1
- package/src/enso-api/model/splitArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/standard.ts +1 -1
- package/src/enso-api/model/standardAction.ts +1 -1
- package/src/enso-api/model/standardActionAction.ts +1 -1
- package/src/enso-api/model/swapActionDto.ts +1 -1
- package/src/enso-api/model/swapArgsDto.ts +1 -1
- package/src/enso-api/model/swapArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/tokenModel.ts +1 -1
- package/src/enso-api/model/tokenizedMultiDepositActionDto.ts +1 -1
- package/src/enso-api/model/tokenizedMultiDepositArgsDto.ts +1 -1
- package/src/enso-api/model/tokenizedMultiDepositArgsDtoAmountInItem.ts +1 -1
- package/src/enso-api/model/tokenizedMultiDepositArgsDtoAmountInItemAnyOf.ts +1 -1
- package/src/enso-api/model/tokenizedMultiRedeemActionDto.ts +1 -1
- package/src/enso-api/model/tokenizedMultiRedeemArgsDto.ts +1 -1
- package/src/enso-api/model/tokenizedMultiRedeemArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/tokenizedSingleDepositActionDto.ts +1 -1
- package/src/enso-api/model/tokenizedSingleDepositArgsDto.ts +1 -1
- package/src/enso-api/model/tokenizedSingleDepositArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/tokenizedSingleRedeemActionDto.ts +1 -1
- package/src/enso-api/model/tokenizedSingleRedeemArgsDto.ts +1 -1
- package/src/enso-api/model/tokenizedSingleRedeemArgsDtoAmountIn.ts +1 -1
- package/src/enso-api/model/tokensControllerTokens200.ts +1 -1
- package/src/enso-api/model/tokensControllerTokens200AllOf.ts +1 -1
- package/src/enso-api/model/tokensControllerTokensLiquidityType.ts +1 -1
- package/src/enso-api/model/tokensControllerTokensParams.ts +1 -1
- package/src/enso-api/model/tokensControllerTokensType.ts +1 -1
- package/src/enso-api/model/transaction.ts +1 -1
- package/src/enso-api/model/transferActionDto.ts +1 -1
- package/src/enso-api/model/transferArgsDto.ts +1 -1
- package/src/enso-api/model/transferArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/transferFromActionDto.ts +1 -1
- package/src/enso-api/model/transferFromArgsDto.ts +1 -1
- package/src/enso-api/model/transferFromArgsDtoAmount.ts +1 -1
- package/src/enso-api/model/userOperation.ts +1 -1
- package/src/enso-api/model/walletApproveTransaction.ts +1 -1
- package/src/enso-api/model/walletApproveTransactionTx.ts +1 -1
- package/src/enso-api/model/walletBalance.ts +1 -1
- package/src/enso-api/model/walletControllerCreateApproveTransactionParams.ts +1 -1
- package/src/enso-api/model/walletControllerCreateApproveTransactionRoutingStrategy.ts +1 -1
- package/src/enso-api/model/walletControllerWalletBalancesParams.ts +1 -1
- package/src/index.ts +3 -0
- package/src/types/index.ts +2 -0
- package/src/util/constants.tsx +19 -0
- package/src/util/tx-tracker.tsx +162 -1
package/src/util/tx-tracker.tsx
CHANGED
|
@@ -52,7 +52,7 @@ export const useTrackTx = () => {
|
|
|
52
52
|
return { track };
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
enum LayerZeroStatus {
|
|
55
|
+
export enum LayerZeroStatus {
|
|
56
56
|
Pending = "PENDING",
|
|
57
57
|
Success = "SUCCEEDED",
|
|
58
58
|
Failed = "FAILED",
|
|
@@ -61,6 +61,167 @@ enum LayerZeroStatus {
|
|
|
61
61
|
Delivered = "DELIVERED",
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
// Types for Enso bridge check API response
|
|
65
|
+
export interface BridgeCheckResponse {
|
|
66
|
+
sourceChainId: number;
|
|
67
|
+
sourceTxHash: string;
|
|
68
|
+
status: "pending" | "success" | "failed";
|
|
69
|
+
layerZeroMessage?: {
|
|
70
|
+
srcEid: number;
|
|
71
|
+
dstEid: number;
|
|
72
|
+
srcChainId: number;
|
|
73
|
+
dstChainId: number;
|
|
74
|
+
status: LayerZeroStatus;
|
|
75
|
+
srcTxHash: string;
|
|
76
|
+
dstTxHash: string;
|
|
77
|
+
srcBlockNumber: string;
|
|
78
|
+
dstBlockNumber: number;
|
|
79
|
+
sender: string;
|
|
80
|
+
receiver: string;
|
|
81
|
+
};
|
|
82
|
+
destinationChainId?: number;
|
|
83
|
+
destinationTxHash?: string;
|
|
84
|
+
ensoSourceEvent?: {
|
|
85
|
+
accountId: string;
|
|
86
|
+
requestId: string;
|
|
87
|
+
blockNumber: number;
|
|
88
|
+
transactionHash: string;
|
|
89
|
+
chainId: number;
|
|
90
|
+
success: boolean;
|
|
91
|
+
};
|
|
92
|
+
ensoDestinationEvent?: {
|
|
93
|
+
blockNumber: number;
|
|
94
|
+
transactionHash: string;
|
|
95
|
+
chainId: number;
|
|
96
|
+
success: boolean;
|
|
97
|
+
error?: string;
|
|
98
|
+
refundDetails?: {
|
|
99
|
+
token: string;
|
|
100
|
+
amount: string;
|
|
101
|
+
recipient: string;
|
|
102
|
+
isNative: boolean;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Hook for bridge status using Enso API (includes destination execution verification)
|
|
108
|
+
export const useBridgeStatus = (
|
|
109
|
+
hash?: `0x${string}`,
|
|
110
|
+
chainId?: number,
|
|
111
|
+
enabled = true,
|
|
112
|
+
) => {
|
|
113
|
+
const { data, isLoading } = useQuery({
|
|
114
|
+
queryKey: ["bridgeStatus", hash || "none", chainId],
|
|
115
|
+
queryFn: async (): Promise<BridgeCheckResponse | null> => {
|
|
116
|
+
if (!hash || !chainId) return null;
|
|
117
|
+
const res = await fetch(
|
|
118
|
+
`https://api.enso.finance/api/v1/layerzero/bridge/check?chainId=${chainId}&txHash=${hash}`,
|
|
119
|
+
);
|
|
120
|
+
if (!res.ok) return null;
|
|
121
|
+
return res.json();
|
|
122
|
+
},
|
|
123
|
+
refetchInterval: 3000,
|
|
124
|
+
enabled: enabled && !!hash && !!chainId,
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const lzStatus = data?.layerZeroMessage?.status;
|
|
128
|
+
const overallStatus = data?.status;
|
|
129
|
+
const destinationSuccess = data?.ensoDestinationEvent?.success;
|
|
130
|
+
const refundDetails = data?.ensoDestinationEvent?.refundDetails;
|
|
131
|
+
|
|
132
|
+
let step = 0;
|
|
133
|
+
let message = "Waiting for bridge transaction...";
|
|
134
|
+
|
|
135
|
+
if (!data) {
|
|
136
|
+
step = 0;
|
|
137
|
+
message = "Waiting for bridge transaction...";
|
|
138
|
+
} else if (lzStatus === LayerZeroStatus.Inflight) {
|
|
139
|
+
step = 1;
|
|
140
|
+
message = "Funds in transit to destination...";
|
|
141
|
+
} else if (lzStatus === LayerZeroStatus.Confirming) {
|
|
142
|
+
step = 2;
|
|
143
|
+
message = "Confirming on destination chain...";
|
|
144
|
+
} else if (lzStatus === LayerZeroStatus.Delivered) {
|
|
145
|
+
if (overallStatus === "success" || destinationSuccess === true) {
|
|
146
|
+
step = 4;
|
|
147
|
+
message = "Bridge completed successfully!";
|
|
148
|
+
} else if (overallStatus === "failed" || destinationSuccess === false) {
|
|
149
|
+
step = 4;
|
|
150
|
+
message = refundDetails
|
|
151
|
+
? "Destination execution failed. Funds refunded."
|
|
152
|
+
: "Destination execution failed.";
|
|
153
|
+
} else {
|
|
154
|
+
step = 3;
|
|
155
|
+
message = "Verifying destination execution...";
|
|
156
|
+
}
|
|
157
|
+
} else if (lzStatus === LayerZeroStatus.Failed) {
|
|
158
|
+
step = 4;
|
|
159
|
+
message = "Bridge transaction failed.";
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return {
|
|
163
|
+
data,
|
|
164
|
+
isLoading,
|
|
165
|
+
lzStatus,
|
|
166
|
+
overallStatus,
|
|
167
|
+
destinationSuccess,
|
|
168
|
+
refundDetails,
|
|
169
|
+
step,
|
|
170
|
+
message,
|
|
171
|
+
isComplete: overallStatus === "success",
|
|
172
|
+
isFailed: overallStatus === "failed" || lzStatus === LayerZeroStatus.Failed,
|
|
173
|
+
destinationTxHash: data?.destinationTxHash,
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// Legacy hook for LayerZero status polling (kept for backward compatibility)
|
|
178
|
+
export const useLayerZeroStatus = (hash?: `0x${string}`, enabled = true) => {
|
|
179
|
+
const { data, isLoading } = useQuery({
|
|
180
|
+
queryKey: ["layerZeroStatus", hash || "none"],
|
|
181
|
+
queryFn: async () => {
|
|
182
|
+
if (!hash) return null;
|
|
183
|
+
return fetch(
|
|
184
|
+
`https://scan.layerzero-api.com/v1/messages/tx/${hash}`,
|
|
185
|
+
)
|
|
186
|
+
.then((res) => res.json())
|
|
187
|
+
.then((res) => res.data?.[0] ?? null);
|
|
188
|
+
},
|
|
189
|
+
refetchInterval: 2000,
|
|
190
|
+
enabled: enabled && !!hash,
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
const statusName = data?.status?.name as LayerZeroStatus | undefined;
|
|
194
|
+
const sourceStatus = data?.source?.status as LayerZeroStatus | undefined;
|
|
195
|
+
|
|
196
|
+
let step = 0;
|
|
197
|
+
let message = "Waiting for bridge transaction...";
|
|
198
|
+
|
|
199
|
+
if (sourceStatus && sourceStatus !== LayerZeroStatus.Success) {
|
|
200
|
+
step = 1;
|
|
201
|
+
message = "Waiting for funds to be sent on destination";
|
|
202
|
+
} else if (statusName === LayerZeroStatus.Inflight) {
|
|
203
|
+
step = 2;
|
|
204
|
+
message = "Waiting for funds to be delivered on destination";
|
|
205
|
+
} else if (statusName === LayerZeroStatus.Confirming) {
|
|
206
|
+
step = 3;
|
|
207
|
+
message = "Waiting for destination execution";
|
|
208
|
+
} else if (statusName === LayerZeroStatus.Delivered) {
|
|
209
|
+
step = 4;
|
|
210
|
+
message = "Bridging is complete";
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return {
|
|
214
|
+
data,
|
|
215
|
+
isLoading,
|
|
216
|
+
status: statusName,
|
|
217
|
+
sourceStatus,
|
|
218
|
+
step,
|
|
219
|
+
message,
|
|
220
|
+
isComplete: statusName === LayerZeroStatus.Delivered,
|
|
221
|
+
isFailed: statusName === LayerZeroStatus.Failed,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
64
225
|
const useLayerZeroUrl = (hash?: `0x${string}`, reset?: () => void) => {
|
|
65
226
|
// const [loadingToastId, setLoadingToastId] = useState<string>();
|
|
66
227
|
const updateTx = useTrackingStore((state) => state.updateTx);
|