@openocean.finance/widget 1.0.52 → 1.0.53

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.
Files changed (56) hide show
  1. package/dist/esm/AppProvider.js +2 -1
  2. package/dist/esm/AppProvider.js.map +1 -1
  3. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js +21 -0
  4. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  5. package/dist/esm/components/TokenList/VirtualizedTokenList.js +1 -1
  6. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  7. package/dist/esm/components/TransactionDetails.js +6 -0
  8. package/dist/esm/components/TransactionDetails.js.map +1 -1
  9. package/dist/esm/config/version.d.ts +1 -1
  10. package/dist/esm/config/version.js +1 -1
  11. package/dist/esm/cross/adapters/NearIntentsAdapter.js +94 -25
  12. package/dist/esm/cross/adapters/NearIntentsAdapter.js.map +1 -1
  13. package/dist/esm/cross/crossChainQuote.d.ts +3 -2
  14. package/dist/esm/cross/crossChainQuote.js +2 -2
  15. package/dist/esm/cross/crossChainQuote.js.map +1 -1
  16. package/dist/esm/hooks/useGasPrice.js +2 -2
  17. package/dist/esm/hooks/useGasPrice.js.map +1 -1
  18. package/dist/esm/hooks/useGasRecommendation.d.ts +1 -1
  19. package/dist/esm/hooks/useGasRecommendation.js +7 -1
  20. package/dist/esm/hooks/useGasRecommendation.js.map +1 -1
  21. package/dist/esm/hooks/useRouteExecution.js +5 -0
  22. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  23. package/dist/esm/hooks/useRoutes.js +1 -1
  24. package/dist/esm/hooks/useRoutes.js.map +1 -1
  25. package/dist/esm/hooks/useToken.js.map +1 -1
  26. package/dist/esm/providers/WalletProvider/NearProvider.d.ts +3 -0
  27. package/dist/esm/providers/WalletProvider/NearProvider.js +95 -0
  28. package/dist/esm/providers/WalletProvider/NearProvider.js.map +1 -0
  29. package/dist/esm/providers/WalletProvider/SDKProviders.js +4 -1
  30. package/dist/esm/providers/WalletProvider/SDKProviders.js.map +1 -1
  31. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js +1 -1
  32. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
  33. package/dist/esm/services/ExecuteRoute.d.ts +1 -0
  34. package/dist/esm/services/ExecuteRoute.js +121 -0
  35. package/dist/esm/services/ExecuteRoute.js.map +1 -1
  36. package/dist/esm/services/OpenOceanService.d.ts +5 -1
  37. package/dist/esm/services/OpenOceanService.js +121 -6
  38. package/dist/esm/services/OpenOceanService.js.map +1 -1
  39. package/package.json +9 -5
  40. package/src/AppProvider.tsx +8 -5
  41. package/src/components/BaseTransactionButton/BaseTransactionButton.tsx +20 -0
  42. package/src/components/TokenList/VirtualizedTokenList.tsx +1 -1
  43. package/src/components/TransactionDetails.tsx +17 -11
  44. package/src/config/version.ts +1 -1
  45. package/src/cross/adapters/NearIntentsAdapter.ts +100 -28
  46. package/src/cross/crossChainQuote.ts +6 -2
  47. package/src/hooks/useGasPrice.ts +2 -2
  48. package/src/hooks/useGasRecommendation.ts +8 -1
  49. package/src/hooks/useRouteExecution.ts +5 -0
  50. package/src/hooks/useRoutes.ts +1 -1
  51. package/src/hooks/useToken.ts +0 -1
  52. package/src/providers/WalletProvider/NearProvider.tsx +110 -0
  53. package/src/providers/WalletProvider/SDKProviders.tsx +5 -0
  54. package/src/providers/WalletProvider/useExternalWalletProvider.ts +1 -1
  55. package/src/services/ExecuteRoute.ts +134 -1
  56. package/src/services/OpenOceanService.ts +135 -7
@@ -18,6 +18,9 @@ export declare class OpenOceanService {
18
18
  disabledDexIds?: string;
19
19
  enabledDexIds?: string;
20
20
  referrer?: string;
21
+ account?: string;
22
+ inTokenDecimals?: number;
23
+ outTokenDecimals?: number;
21
24
  }): Promise<any>;
22
25
  static getSwapQuote(params: {
23
26
  chain: string;
@@ -34,6 +37,7 @@ export declare class OpenOceanService {
34
37
  referrer?: string;
35
38
  referrerFee?: string;
36
39
  referrerFeeShare?: string;
40
+ inTokenDecimals?: number;
37
41
  }): Promise<any>;
38
42
  static getTokenList(chain: string): Promise<any>;
39
43
  static getDexList(chain: string): Promise<any>;
@@ -57,5 +61,5 @@ export declare class OpenOceanService {
57
61
  * @returns Promise<Record<string, string>> returns an object where key is token address and value is price
58
62
  */
59
63
  static getTokensPrice(chain: string, tokenAddresses: string[]): Promise<Record<string, string>>;
60
- static getRpcUrl(): Promise<any>;
64
+ static getRpcUrl(): Promise<string>;
61
65
  }
@@ -21,14 +21,60 @@ export class OpenOceanService {
21
21
  return tokenAddress;
22
22
  }
23
23
  static async getQuote(params) {
24
+ const isNearChain = params.chain === '20000000000006' || params.chain === 'near';
25
+ // Near 链使用特殊的 API 端点和参数格式
26
+ if (isNearChain) {
27
+ const nearApiUrl = 'https://ethapi.openocean.finance/v1/near';
28
+ // 计算 amountAll(格式化后的金额,用于显示)
29
+ let amountAll = '';
30
+ if (params.inTokenDecimals !== undefined) {
31
+ const amountBigInt = BigInt(params.amount);
32
+ const decimals = BigInt(10 ** params.inTokenDecimals);
33
+ const wholePart = amountBigInt / decimals;
34
+ const fractionalPart = amountBigInt % decimals;
35
+ if (fractionalPart === 0n) {
36
+ amountAll = wholePart.toString();
37
+ }
38
+ else {
39
+ const fractionalStr = fractionalPart.toString().padStart(params.inTokenDecimals, '0');
40
+ // 移除尾部的 0,但保留至少一位小数
41
+ const trimmedFractional = fractionalStr.replace(/0+$/, '') || '0';
42
+ amountAll = `${wholePart}.${trimmedFractional}`;
43
+ }
44
+ }
45
+ // 转换 slippage:从 0.01 (1%) 转为 100 (百分比格式)
46
+ const slippagePercent = params.slippage
47
+ ? Math.floor(Number(params.slippage) * 100).toString()
48
+ : '100'; // 默认 1%
49
+ const queryParams = new URLSearchParams({
50
+ quoteType: 'swap',
51
+ inTokenSymbol: params.inTokenSymbol,
52
+ inTokenAddress: params.inTokenAddress,
53
+ outTokenSymbol: params.outTokenSymbol,
54
+ outTokenAddress: params.outTokenAddress,
55
+ amount: params.amount,
56
+ ...(amountAll && { amountAll }),
57
+ slippage: slippagePercent,
58
+ gasPrice: params.gasPrice || '5000000000',
59
+ referrer: params.referrer || '0x3487ef9f9b36547e43268b8f0e2349a226c70b53',
60
+ disabledDexIds: params.disabledDexIds || '',
61
+ disableRfq: '', // Near API 特有参数
62
+ ...(params.account && { account: params.account }),
63
+ });
64
+ const response = await fetch(`${nearApiUrl}/quote?${queryParams.toString()}`);
65
+ return {
66
+ data: await response.json(),
67
+ };
68
+ }
69
+ // 其他链使用原有逻辑
24
70
  const apiUrl = this.getApiUrl(params.chain);
25
71
  const slippage = (Number(params.slippage || 0.01)).toString();
26
72
  const queryParams = new URLSearchParams({
27
73
  quoteType: 'quote',
28
74
  inTokenSymbol: params.inTokenSymbol,
29
- inTokenAddress: params.inTokenAddress,
75
+ inTokenAddress: this.getSolanaAddress(params.chain, params.inTokenAddress),
30
76
  outTokenSymbol: params.outTokenSymbol,
31
- outTokenAddress: params.outTokenAddress,
77
+ outTokenAddress: this.getSolanaAddress(params.chain, params.outTokenAddress),
32
78
  amountDecimals: params.amount,
33
79
  slippage,
34
80
  gasPriceDecimals: params.gasPrice || '',
@@ -40,6 +86,58 @@ export class OpenOceanService {
40
86
  return response.json();
41
87
  }
42
88
  static async getSwapQuote(params) {
89
+ const isNearChain = params.chain === '20000000000006' || params.chain === 'near';
90
+ // Near 链使用特殊的 API 端点和参数格式
91
+ if (isNearChain) {
92
+ const nearApiUrl = 'https://ethapi.openocean.finance/v1/near';
93
+ // 计算 amountAll(格式化后的金额,用于显示)
94
+ let amountAll = '';
95
+ if (params.inTokenDecimals !== undefined) {
96
+ const amountBigInt = BigInt(params.amount);
97
+ const decimals = BigInt(10 ** params.inTokenDecimals);
98
+ const wholePart = amountBigInt / decimals;
99
+ const fractionalPart = amountBigInt % decimals;
100
+ if (fractionalPart === 0n) {
101
+ amountAll = wholePart.toString();
102
+ }
103
+ else {
104
+ const fractionalStr = fractionalPart.toString().padStart(params.inTokenDecimals, '0');
105
+ // 移除尾部的 0,但保留至少一位小数
106
+ const trimmedFractional = fractionalStr.replace(/0+$/, '') || '0';
107
+ amountAll = `${wholePart}.${trimmedFractional}`;
108
+ }
109
+ }
110
+ // 转换 slippage:从 0.01 (1%) 转为 100 (百分比格式)
111
+ const slippagePercent = params.slippage
112
+ ? Math.floor(Number(params.slippage) * 100).toString()
113
+ : '100'; // 默认 1%
114
+ const queryParams = new URLSearchParams({
115
+ quoteType: 'swap',
116
+ inTokenSymbol: params.inTokenSymbol,
117
+ inTokenAddress: params.inTokenAddress,
118
+ outTokenSymbol: params.outTokenSymbol,
119
+ outTokenAddress: params.outTokenAddress,
120
+ amount: params.amount,
121
+ ...(amountAll && { amountAll }),
122
+ gasPrice: params.gasPrice || '5000000000',
123
+ disabledDexIds: params.disabledDexIds || '',
124
+ slippage: slippagePercent,
125
+ account: params.account,
126
+ referrer: params.referrer || '0x3487ef9f9b36547e43268b8f0e2349a226c70b53',
127
+ flags: '0', // Near API 特有参数
128
+ disableRfq: '', // Near API 特有参数
129
+ });
130
+ const response = await fetch(`${nearApiUrl}/swap-quote?${queryParams.toString()}`);
131
+ const data = await response.json();
132
+ return {
133
+ data: {
134
+ ...data,
135
+ data: data.transaction,
136
+ price_impact: 0
137
+ }
138
+ };
139
+ }
140
+ // 其他链使用原有逻辑
43
141
  const apiUrl = this.getApiUrl(params.chain);
44
142
  const slippage = (Number(params.slippage || 0.01)).toString();
45
143
  const referrer = {
@@ -120,7 +218,7 @@ export class OpenOceanService {
120
218
  return response.json();
121
219
  }
122
220
  static async getGasPrice(chain) {
123
- if (!chain || chain === '1151111081099710' || chain === '20000000000001') {
221
+ if (!chain || chain === '1151111081099710' || chain === '20000000000001' || chain === '20000000000006') {
124
222
  return {
125
223
  data: {
126
224
  gasPrice: '1000000000000000000',
@@ -130,6 +228,13 @@ export class OpenOceanService {
130
228
  // const apiUrl = this.getApiUrl(chain)
131
229
  const response = await fetch(`${this.API_V4_URL}/${chain}/gasPrice`);
132
230
  const { data } = await response.json();
231
+ if (chain == '1') {
232
+ return {
233
+ standard: data?.standard?.maxFeePerGas || '101021713',
234
+ instant: data?.instant?.maxFeePerGas || '101021713',
235
+ fast: data?.fast?.maxFeePerGas || '101021713',
236
+ };
237
+ }
133
238
  return data;
134
239
  }
135
240
  static async getTokenInfo(chain, tokenAddress) {
@@ -194,9 +299,19 @@ export class OpenOceanService {
194
299
  let url = `${this.API_V3_URL}/solana/getRpc`;
195
300
  const response = await fetch(url);
196
301
  const data = await response.json();
197
- let rpcUrl = data.data?.openapi_v1?.[0] || '';
198
- this.solanaRpcUrl = rpcUrl;
199
- return rpcUrl;
302
+ if (data.data?.openapi_v1) {
303
+ let rpcUrl = data.data?.openapi_v1?.[0] || '';
304
+ this.solanaRpcUrl = rpcUrl;
305
+ }
306
+ if (data.data?.openapi_v2) {
307
+ let rpcUrl = data.data?.openapi_v2?.[0] || '';
308
+ this.solanaRpcUrl = rpcUrl;
309
+ }
310
+ if (data.data?.openapi_v3) {
311
+ let rpcUrl = data.data?.openapi_v3?.[0] || '';
312
+ this.solanaRpcUrl = rpcUrl;
313
+ }
314
+ return this.solanaRpcUrl;
200
315
  }
201
316
  }
202
317
  // private static readonly API_V1_URL = 'https://ethapi.openocean.finance/v1'
@@ -1 +1 @@
1
- {"version":3,"file":"OpenOceanService.js","sourceRoot":"","sources":["../../../src/services/OpenOceanService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenOceanService.js","sourceRoot":"","sources":["../../../src/services/OpenOceanService.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,gBAAgB;IAc3B,qCAAqC;IAC7B,MAAM,CAAC,YAAY,CAAC,OAAwB;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAA;IACzD,CAAC;IAED,gCAAgC;IACxB,MAAM,CAAC,SAAS,CAAC,OAAwB;QAC/C,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChE,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YACnC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,CAAA;IACrC,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,KAAa,EAAE,YAAoB;QACjE,IAAI,KAAK,KAAK,kBAAkB,IAAI,YAAY,KAAK,6CAA6C,EAAE,CAAC;YACnG,OAAO,kCAAkC,CAAA;QAC3C,CAAC;aAAM,IAAI,KAAK,KAAK,kBAAkB,IAAI,YAAY,KAAK,kCAAkC,EAAE,CAAC;YAC/F,OAAO,6CAA6C,CAAA;QACtD,CAAC;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAerB;QACC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,KAAK,gBAAgB,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAA;QAChF,0BAA0B;QAC1B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,0CAA0C,CAAA;YAE7D,6BAA6B;YAC7B,IAAI,SAAS,GAAG,EAAE,CAAA;YAClB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,eAAe,CAAC,CAAA;gBACrD,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAA;gBACzC,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAA;gBAC9C,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC1B,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACN,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;oBACrF,oBAAoB;oBACpB,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAA;oBACjE,SAAS,GAAG,GAAG,SAAS,IAAI,iBAAiB,EAAE,CAAA;gBACjD,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ;gBACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtD,CAAC,CAAC,KAAK,CAAA,CAAC,QAAQ;YAElB,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;gBACtC,SAAS,EAAE,MAAM;gBACjB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC/B,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY;gBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,4CAA4C;gBACzE,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;gBAC3C,UAAU,EAAE,EAAE,EAAE,gBAAgB;gBAChC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aACnD,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,UAAU,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAC7E,OAAO;gBACL,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC5B,CAAA;QACH,CAAC;QAED,YAAY;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAE9D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,SAAS,EAAE,OAAO;YAClB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;YAC1E,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC;YAC5E,cAAc,EAAE,MAAM,CAAC,MAAM;YAC7B,QAAQ;YACR,gBAAgB,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YACvC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;YAC3C,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,4CAA4C;SAC1E,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,UAAU,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACzE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAgBzB;QACC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,KAAK,gBAAgB,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAA;QAEhF,0BAA0B;QAC1B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,0CAA0C,CAAA;YAE7D,6BAA6B;YAC7B,IAAI,SAAS,GAAG,EAAE,CAAA;YAClB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;gBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,eAAe,CAAC,CAAA;gBACrD,MAAM,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAA;gBACzC,MAAM,cAAc,GAAG,YAAY,GAAG,QAAQ,CAAA;gBAC9C,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC1B,SAAS,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACN,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;oBACrF,oBAAoB;oBACpB,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAA;oBACjE,SAAS,GAAG,GAAG,SAAS,IAAI,iBAAiB,EAAE,CAAA;gBACjD,CAAC;YACH,CAAC;YAED,yCAAyC;YACzC,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ;gBACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE;gBACtD,CAAC,CAAC,KAAK,CAAA,CAAC,QAAQ;YAElB,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;gBACtC,SAAS,EAAE,MAAM;gBACjB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY;gBACzC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;gBAC3C,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,4CAA4C;gBACzE,KAAK,EAAE,GAAG,EAAE,gBAAgB;gBAC5B,UAAU,EAAE,EAAE,EAAE,gBAAgB;aACjC,CAAC,CAAA;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,eAAe,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;YAClF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAClC,OAAO;gBAEL,IAAI,EAAE;oBACJ,GAAG,IAAI;oBACP,IAAI,EAAE,IAAI,CAAC,WAAW;oBACtB,YAAY,EAAE,CAAC;iBAChB;aACF,CAAA;QACH,CAAC;QAED,YAAY;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAQ;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,4CAA4C;SAC1E,CAAA;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClD,iEAAiE;QACnE,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;YACtC,SAAS,EAAE,MAAM;YACjB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;YAC1E,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC;YAC5E,cAAc,EAAE,MAAM,CAAC,MAAM;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ;YACR,gBAAgB,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YACvC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;YAC3C,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;YACzC,GAAG,QAAQ;SACZ,CAAC,CAAA;QACF,mFAAmF;QACnF,uDAAuD;QACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,SAAS,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACxE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAa;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,YAAY,CAAC,CAAA;QACzE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,GAAG;oBACV;wBACE,OAAO,EAAE,SAAS;wBAClB,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,CAAC;wBACX,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,kEAAkE;wBACxE,GAAG,EAAE,QAAQ;qBACd;iBACF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAqB,EAAE,EAAE;YAC7C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;YAC3B,sCAAsC;YACtC,IAAI,KAAK,KAAK,kBAAkB,IAAI,OAAO,KAAK,6CAA6C,EAAE,CAAC;gBAC9F,OAAO,GAAG,kCAAkC,CAAA;YAC9C,CAAC;YACD,0CAA0C;YAC1C,IAAI,OAAO,KAAK,4CAA4C,EAAE,CAAC;gBAC7D,OAAO,GAAG,4CAA4C,CAAA;YACxD,CAAC;YACD,OAAO;gBACL,OAAO;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,IAAI;gBACnB,QAAQ,EAAE,KAAK,CAAC,GAAG;gBACnB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;gBACtB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,KAAK;aACf,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAa;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,UAAU,CAAC,CAAA;QACjD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAa;QACpC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YACvG,OAAO;gBACL,IAAI,EAAE;oBACJ,QAAQ,EAAE,qBAAqB;iBAChC;aACF,CAAA;QACH,CAAC;QACD,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,WAAW,CAAC,CAAA;QACpE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACtC,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,OAAO;gBACL,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,IAAI,WAAW;gBACrD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,IAAI,WAAW;gBACnD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,IAAI,WAAW;aAC9C,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,YAAoB;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1C,gCAAgC;QAChC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACxH,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;QAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,8BAA8B,YAAY,EAAE,CAAC,CAAA;QACzG,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;YACtB,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,cAAwB;QACjE,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YAC/B,cAAc,GAAG,CAAC,4CAA4C,CAAC,CAAA;YAC/D,SAAS,GAAG,GAAG,CAAA;QACjB,CAAC;QAED,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,gCAAgC,iBAAiB,EAAE,CAAC,CAAA;QAChH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAElC,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAA2B,EAAE,KAAqB,EAAE,EAAE;YACrF,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC/B,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;oBAC/B,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAA;gBACzB,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAA;gBAC9C,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,YAAY,CAAA;QAC1B,CAAC;QACD,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,gBAAgB,CAAA;QAC5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;YAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;YAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;YAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAA;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;;AAzXD,6EAA6E;AAC7E,4EAA4E;AACpD,2BAAU,GAAG,uCAAuC,CAAA;AACpD,2BAAU,GAAG,uCAAuC,CAAA;AACrE,6BAAY,GAAG,EAAE,CAAA;AAExB,2CAA2C;AACnB,6BAAY,GAAoC;IACtE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB;IAC7C,cAAc,EAAE,SAAS,EAAE,kBAAkB;IAC7C,cAAc,EAAE,MAAM,EAAE,eAAe;CACxC,CAAA;AAiXH,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;AAC7C,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openocean.finance/widget",
3
- "version": "1.0.52",
3
+ "version": "1.0.53",
4
4
  "description": "Openocean Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
5
5
  "type": "module",
6
6
  "main": "./dist/esm/index.js",
@@ -51,9 +51,8 @@
51
51
  "@mui/icons-material": "6.0.2",
52
52
  "@mui/material": "^6.4.8",
53
53
  "@mui/system": "^6.4.8",
54
- "@near-wallet-selector/react-hook": "^9.0.0",
55
- "@openocean.finance/wallet-management": "^1.0.15",
56
- "@openocean.finance/widget-sdk": "^1.0.15",
54
+ "@openocean.finance/wallet-management": "^1.0.16",
55
+ "@openocean.finance/widget-sdk": "^1.0.16",
57
56
  "@relayprotocol/relay-bitcoin-wallet-adapter": "^11.0.1",
58
57
  "@reservoir0x/relay-sdk": "^2.4.0",
59
58
  "@relayprotocol/relay-sdk": "^5.1.0",
@@ -71,7 +70,12 @@
71
70
  "react-intersection-observer": "^9.16.0",
72
71
  "react-router-dom": "^6.30.0",
73
72
  "viem": "^2.40.3",
74
- "zustand": "^5.0.3"
73
+ "zustand": "^5.0.3",
74
+ "@near-wallet-selector/react-hook": "^9.0.0",
75
+ "@near-wallet-selector/core": "^9.0.0",
76
+ "@near-wallet-selector/meteor-wallet": "^9.0.0",
77
+ "@near-wallet-selector/sender": "^9.0.0",
78
+ "@near-wallet-selector/modal-ui": "^9.0.0"
75
79
  },
76
80
  "devDependencies": {
77
81
  "cpy-cli": "^5.0.0",
@@ -11,6 +11,7 @@ import { queryClient } from './config/queryClient.js'
11
11
  import { I18nProvider } from './providers/I18nProvider/I18nProvider.js'
12
12
  import { ThemeProvider } from './providers/ThemeProvider/ThemeProvider.js'
13
13
  import { WalletProvider } from './providers/WalletProvider/WalletProvider.js'
14
+ import { NearProvider } from './providers/WalletProvider/NearProvider.js'
14
15
  import {
15
16
  WidgetProvider,
16
17
  useWidgetConfig,
@@ -29,11 +30,13 @@ export const AppProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({
29
30
  <WidgetProvider config={config}>
30
31
  <I18nProvider>
31
32
  <ThemeProvider>
32
- <WalletProvider>
33
- <StoreProvider config={config} formRef={formRef}>
34
- <AppRouter>{children}</AppRouter>
35
- </StoreProvider>
36
- </WalletProvider>
33
+ <NearProvider>
34
+ <WalletProvider>
35
+ <StoreProvider config={config} formRef={formRef}>
36
+ <AppRouter>{children}</AppRouter>
37
+ </StoreProvider>
38
+ </WalletProvider>
39
+ </NearProvider>
37
40
  </ThemeProvider>
38
41
  </I18nProvider>
39
42
  </WidgetProvider>
@@ -1,10 +1,12 @@
1
1
  import { Button } from '@mui/material'
2
2
  import { useAccount, useWalletMenu } from '@openocean.finance/wallet-management'
3
+ import { ChainType } from '@openocean.finance/widget-sdk'
3
4
  import { useTranslation } from 'react-i18next'
4
5
  import { useChain } from '../../hooks/useChain.js'
5
6
  import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'
6
7
  import { useFieldValues } from '../../stores/form/useFieldValues.js'
7
8
  import type { BaseTransactionButtonProps } from './types.js'
9
+ import { useWalletSelector } from '@near-wallet-selector/react-hook'
8
10
 
9
11
  export const BaseTransactionButton: React.FC<BaseTransactionButtonProps> = ({
10
12
  onClick,
@@ -18,9 +20,27 @@ export const BaseTransactionButton: React.FC<BaseTransactionButtonProps> = ({
18
20
  const [fromChainId] = useFieldValues('fromChain')
19
21
  const { chain } = useChain(fromChainId)
20
22
  const { account } = useAccount({ chainType: chain?.chainType })
23
+ const nearWallet = useWalletSelector() as any
24
+ const isNearChain = chain?.chainType === ChainType.NVM
21
25
  const handleClick = async () => {
22
26
  if (account.isConnected) {
23
27
  onClick?.()
28
+ } else if (isNearChain && nearWallet) {
29
+ // Near 链:不打开内部钱包菜单,直接调用 Near wallet-selector 的登录流程,
30
+ // 只展示 Near 自己的 UI(用户在其中选择 Meteor / Sender 等钱包)。
31
+ await nearWallet.signIn?.({
32
+ contractId: '',
33
+ methodNames: [],
34
+ })
35
+ // 修改 .modal-left-title 下的 h2 标签文本为英文"Connect Wallet"
36
+ const interval = setInterval(() => {
37
+ const h2 = document.querySelector('.modal-left-title h2');
38
+ if (h2 && h2.textContent !== 'Connect Wallet') {
39
+ h2.textContent = 'Connect Wallet';
40
+ clearInterval(interval);
41
+ }
42
+ }, 50);
43
+ setTimeout(() => clearInterval(interval), 3000); // 最长执行3秒
24
44
  } else if (walletConfig?.onConnect) {
25
45
  walletConfig.onConnect()
26
46
  } else {
@@ -73,7 +73,7 @@ export const VirtualizedTokenList: FC<VirtualizedTokenListProps> = ({
73
73
  </List>
74
74
  )
75
75
  }
76
- console.log(getVirtualItems().length)
76
+ // console.log(getVirtualItems().length)
77
77
  return (
78
78
  <List style={{ height: getTotalSize() }} disablePadding>
79
79
  {getVirtualItems().map((item) => {
@@ -36,7 +36,6 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
36
36
  const isBradge = route ? fromChainId !== toChainId : state === 'bridge'
37
37
  const { token } = useToken(fromChainId, chain?.nativeToken?.address)
38
38
  const { gasPrice } = useGasPrice(fromChainId?.toString() || '')
39
-
40
39
  if (!route) {
41
40
  route = {
42
41
  fromAmount: '0',
@@ -60,6 +59,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
60
59
  priceImpact: '0',
61
60
  fromAmountMin: 0,
62
61
  estimatedGas: 0,
62
+ gas: 0,
63
63
  steps: [],
64
64
  } as unknown as RouteExtended
65
65
  }
@@ -68,17 +68,23 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
68
68
  }
69
69
 
70
70
  let gasCostUSD = 0
71
- const feeCosts:any = []
71
+ const feeCosts: any = []
72
72
  const combinedFeesUSD =
73
- gasCostUSD + feeCosts.reduce((sum:number, fee:any) => sum + fee.costUSD, 0)
74
- const feeCostUSD = feeCosts.reduce((sum:number, fee:any) => sum + fee.costUSD, 0)
73
+ gasCostUSD + feeCosts.reduce((sum: number, fee: any) => sum + fee.costUSD, 0)
74
+ const feeCostUSD = feeCosts.reduce((sum: number, fee: any) => sum + fee.costUSD, 0)
75
75
  const estimatedGas =
76
76
  (route as any)?.estimatedGas || (route as any)?.data?.estimatedGas
77
+ const gasCost = (route as any)?.gas || 0
78
+
77
79
  if (token && gasPrice && estimatedGas) {
78
80
  const d = 10 ** token.decimals
79
81
  gasCostUSD =
80
82
  Number(token.priceUSD) * ((Number(gasPrice) * Number(estimatedGas)) / d)
81
83
  }
84
+ if (token && gasCost) {
85
+ gasCostUSD =
86
+ Number(token.priceUSD) * Number(gasCost)
87
+ }
82
88
  if (isBradge) {
83
89
  gasCostUSD = (route as any).feeCosts?.[0]?.amountUSD || 0
84
90
  }
@@ -87,8 +93,8 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
87
93
 
88
94
  const feeCollectionStep = route.steps[0]
89
95
  ? route.steps[0].includedSteps.find(
90
- (includedStep) => includedStep.tool === 'feeCollection'
91
- )
96
+ (includedStep) => includedStep.tool === 'feeCollection'
97
+ )
92
98
  : 0
93
99
 
94
100
  let feeAmountUSD = 0
@@ -110,7 +116,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
110
116
  const showIntegratorFeeCollectionDetails =
111
117
  (feeAmountUSD || Number.isFinite(feeConfig?.fee)) && !hasGaslessSupport
112
118
 
113
- if(!Number(route.toAmount)){
119
+ if (!Number(route.toAmount)) {
114
120
  return null
115
121
  }
116
122
 
@@ -213,8 +219,8 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
213
219
  <Typography variant="body2" sx={{ fontWeight: 600 }}>
214
220
  {gasCostUSD
215
221
  ? t('format.currency', {
216
- value: gasCostUSD,
217
- })
222
+ value: gasCostUSD,
223
+ })
218
224
  : '--'}
219
225
  </Typography>
220
226
  </Box>
@@ -232,8 +238,8 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
232
238
  </Typography>
233
239
  {feeCostUSD
234
240
  ? t('format.currency', {
235
- value: feeCostUSD,
236
- })
241
+ value: feeCostUSD,
242
+ })
237
243
  : '--'}
238
244
  </Box>
239
245
  ) : null}
@@ -1,2 +1,2 @@
1
1
  export const name = '@openocean.finance/widget'
2
- export const version = '1.0.52'
2
+ export const version = '1.0.53'
@@ -209,6 +209,7 @@ export class NearIntentsAdapter extends BaseSwapAdapter {
209
209
  deadline.setSeconds(deadline.getSeconds() + (params.fromChain === NonEvmChain.Bitcoin ? 60 * 60 : 60 * 20))
210
210
  if (this.nearTokens.length === 0) {
211
211
  await this.getAllSupportedTokens()
212
+ await new Promise(resolve => setTimeout(resolve, 3000))
212
213
  }
213
214
 
214
215
  let fromAssetId: any = ''
@@ -576,75 +577,146 @@ export class NearIntentsAdapter extends BaseSwapAdapter {
576
577
  reject('Not connected')
577
578
  return
578
579
  }
579
- const isNative = (quote.quoteParams.fromToken as any).assetId === 'near'
580
580
 
581
- const transactions: any = []
582
- if (!isNative)
581
+ const fromToken = quote.quoteParams.fromToken as any
582
+ const isNative = fromToken.address === 'near.near'
583
+ const rawAmount = quote.quoteParams.amount || '0'
584
+ const amount = String(rawAmount) // yoctoNEAR 字符串
585
+
586
+ const transactions: {
587
+ signerId: string
588
+ receiverId: string
589
+ actions: any[]
590
+ }[] = []
591
+
592
+ // wNEAR 合约地址(标准 wrap.near)
593
+ const WRAP_CONTRACT_ID = 'wrap.near'
594
+
595
+ const tokenContract = fromToken.address as string | undefined
596
+
597
+ if (isNative) {
598
+ // 原生 NEAR:先在 wNEAR 合约上给桥地址做 storage_deposit,再 near_deposit 包成 wNEAR,然后 ft_transfer 给桥地址
583
599
  transactions.push({
584
600
  signerId: nearWallet.signedAccountId,
585
- receiverId: (quote.quoteParams.fromToken as any).contractAddress,
601
+ receiverId: WRAP_CONTRACT_ID,
586
602
  actions: [
587
603
  {
604
+ // 1) storage_deposit,确保桥地址在 wNEAR 上已注册
588
605
  type: 'FunctionCall',
589
606
  params: {
590
607
  methodName: 'storage_deposit',
591
- args: { account_id: depositAddress, registration_only: true },
608
+ args: {
609
+ account_id: depositAddress,
610
+ registration_only: true,
611
+ },
592
612
  gas: '30000000000000',
593
613
  deposit: '1250000000000000000000', // 0.00125 NEAR
594
614
  },
595
615
  },
616
+ {
617
+ // 2) near_deposit:把原生 NEAR 包成 wNEAR
618
+ type: 'FunctionCall',
619
+ params: {
620
+ methodName: 'near_deposit',
621
+ args: {},
622
+ gas: '30000000000000',
623
+ deposit: amount, // 使用原始 NEAR 数量(yoctoNEAR)
624
+ },
625
+ },
626
+ {
627
+ // 3) ft_transfer:将 wNEAR 发送到桥地址
628
+ type: 'FunctionCall',
629
+ params: {
630
+ methodName: 'ft_transfer',
631
+ args: {
632
+ receiver_id: depositAddress,
633
+ amount,
634
+ },
635
+ gas: '30000000000000',
636
+ deposit: '1', // NEP-141 规范要求 1 yoctoNEAR
637
+ },
638
+ },
596
639
  ],
597
640
  })
598
-
599
- transactions.push({
600
- signerId: nearWallet.signedAccountId,
601
- receiverId: isNative ? depositAddress : (quote.quoteParams.fromToken as any).contractAddress,
602
- actions: [
603
- isNative
604
- ? {
605
- type: 'Transfer',
641
+ } else if (tokenContract) {
642
+ // 非原生 NEP-141 token:先在 token 合约上给桥地址做 storage_deposit,再 ft_transfer
643
+ transactions.push({
644
+ signerId: nearWallet.signedAccountId,
645
+ receiverId: tokenContract,
646
+ actions: [
647
+ {
648
+ type: 'FunctionCall',
606
649
  params: {
607
- deposit: quote.quoteParams.amount,
650
+ methodName: 'storage_deposit',
651
+ args: {
652
+ account_id: depositAddress,
653
+ registration_only: true,
654
+ },
655
+ gas: '30000000000000',
656
+ deposit: '1250000000000000000000', // 0.00125 NEAR
608
657
  },
609
- }
610
- : {
658
+ },
659
+ {
611
660
  type: 'FunctionCall',
612
661
  params: {
613
662
  methodName: 'ft_transfer',
614
663
  args: {
615
664
  receiver_id: depositAddress,
616
- amount: quote.quoteParams.amount,
665
+ amount,
617
666
  },
618
667
  gas: '30000000000000',
619
668
  deposit: '1',
620
669
  },
621
670
  },
622
- ],
623
- })
671
+ ],
672
+ })
673
+ } else {
674
+ reject('Invalid NEAR token contract')
675
+ return
676
+ }
624
677
 
625
- // My near wallet is redirect to wallet website -> need store to process later
626
- if (nearWallet?.wallet?.id === 'my-near-wallet')
678
+ // MyNearWallet 会跳转到网页,需要在本地记录一次
679
+ if (nearWallet?.wallet?.id === 'my-near-wallet') {
627
680
  localStorage.setItem(
628
681
  'cross-chain-swap-my-near-wallet-tx',
629
682
  JSON.stringify({
630
683
  ...params,
631
684
  sourceTxHash: depositAddress,
632
- }),
685
+ })
633
686
  )
687
+ }
634
688
 
635
- await nearWallet
636
- .signAndSendTransactions({
637
- transactions,
638
- })
639
- .catch(e => {
689
+ const txResult = await nearWallet
690
+ .signAndSendTransactions({ transactions })
691
+ .catch((e: any) => {
640
692
  console.log('NearIntents signAndSendTransactions failed', e)
641
693
  if (nearWallet?.wallet?.id === 'my-near-wallet') reject()
642
694
  else reject(e)
643
695
  })
696
+ let transaction: any = { hash: "" };
697
+ if (txResult && txResult.length === 1) {
698
+ transaction = txResult[txResult.length - 1].transaction || {};
699
+ } else if (txResult && txResult.length > 1) {
700
+ transaction = txResult.filter((item: any) => {
701
+ const { actions = [] } = item && item.transaction || {};
702
+ const _actions = actions.filter((fc: any) => {
703
+ const { FunctionCall = {} } = fc;
704
+ const { method_name } = FunctionCall;
705
+ return method_name === 'ft_transfer_call';
706
+ });
707
+ return _actions && _actions.length > 0;
708
+ });
709
+ if (transaction && transaction.length) {
710
+ transaction = transaction[0].transaction;
711
+ } else {
712
+ transaction = txResult[txResult.length - 1].transaction || {};
713
+ }
714
+ }
715
+ const { hash } = transaction;
644
716
 
645
717
  resolve({
646
718
  ...params,
647
- sourceTxHash: depositAddress,
719
+ sourceTxHash: hash,
648
720
  })
649
721
  })
650
722
  }
@@ -213,19 +213,23 @@ export async function getCrossChainQuote({
213
213
  export const bridgeExecuteSwap = async ({
214
214
  quoteData,
215
215
  walletClient,
216
+ nearWallet,
216
217
  }: {
217
218
  quoteData: any
218
219
  walletClient: WalletClient
220
+ // Near Intents adapter 需要的 Near wallet-selector 实例,其它适配器会忽略
221
+ nearWallet?: any
219
222
  }) => {
220
223
  const adapterName = quoteData.quoteAdapterKey
221
224
  const adapter = CrossChainSwapFactory.getAdapterByName(adapterName)
222
225
  if (adapter) {
223
- const result = await adapter?.executeSwap(
226
+ const result = await (adapter as any)?.executeSwap(
224
227
  {
225
228
  adapter,
226
229
  quote: quoteData.quoteRawData as any,
227
230
  },
228
- walletClient
231
+ walletClient,
232
+ nearWallet
229
233
  )
230
234
  return result
231
235
  }
@@ -13,9 +13,9 @@ export const useGasPrice = (chainName: string) => {
13
13
  queryKey: ['gasPrice'],
14
14
  queryFn: () => OpenOceanService.getGasPrice(chainName.toLowerCase()),
15
15
  })
16
- const _gasPrice = data?.[gasKey[gasPrice || 'Normal']]
16
+ const _gasPrice = data?.[gasKey[gasPrice || 'normal']]
17
17
  return {
18
- gasPrice: _gasPrice && _gasPrice.maxFeePerGas,
18
+ gasPrice: _gasPrice || _gasPrice?.maxFeePerGas || data?.gasPrice || 50000000,
19
19
  isLoading,
20
20
  }
21
21
  }