@subwallet/extension-base 1.3.51-0 → 1.3.52-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.
Files changed (53) hide show
  1. package/cjs/constants/environment.js +3 -1
  2. package/cjs/koni/background/handlers/State.js +1 -5
  3. package/cjs/packageInfo.js +1 -1
  4. package/cjs/services/balance-service/index.js +3 -4
  5. package/cjs/services/balance-service/transfer/cardano-transfer.js +43 -11
  6. package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +13 -92
  7. package/cjs/services/balance-service/transfer/xcm/index.js +12 -4
  8. package/cjs/services/chain-service/utils/patch.js +3 -2
  9. package/cjs/services/earning-service/handlers/native-staking/dtao.js +28 -301
  10. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +4 -4
  11. package/cjs/services/earning-service/handlers/native-staking/tao.js +174 -148
  12. package/cjs/services/earning-service/handlers/nomination-pool/index.js +11 -5
  13. package/cjs/services/earning-service/service.js +5 -2
  14. package/cjs/services/fee-service/utils/tokenPayFee.js +17 -13
  15. package/cjs/services/price-service/coingecko.js +3 -3
  16. package/cjs/services/swap-service/handler/hydradx-handler.js +19 -13
  17. package/cjs/services/swap-service/index.js +8 -5
  18. package/cjs/services/transaction-service/utils.js +31 -22
  19. package/cjs/utils/index.js +12 -0
  20. package/cjs/utils/setup-api-sdk.js +27 -0
  21. package/constants/environment.d.ts +1 -0
  22. package/constants/environment.js +1 -0
  23. package/koni/background/handlers/State.js +3 -7
  24. package/package.json +12 -6
  25. package/packageInfo.js +1 -1
  26. package/services/balance-service/index.js +3 -4
  27. package/services/balance-service/transfer/cardano-transfer.js +42 -10
  28. package/services/balance-service/transfer/xcm/acrossBridge/index.js +14 -93
  29. package/services/balance-service/transfer/xcm/index.js +12 -4
  30. package/services/chain-service/utils/patch.d.ts +1 -0
  31. package/services/chain-service/utils/patch.js +1 -1
  32. package/services/earning-service/handlers/native-staking/dtao.d.ts +4 -36
  33. package/services/earning-service/handlers/native-staking/dtao.js +24 -298
  34. package/services/earning-service/handlers/native-staking/relay-chain.d.ts +1 -2
  35. package/services/earning-service/handlers/native-staking/relay-chain.js +4 -4
  36. package/services/earning-service/handlers/native-staking/tao.d.ts +25 -5
  37. package/services/earning-service/handlers/native-staking/tao.js +169 -149
  38. package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -2
  39. package/services/earning-service/handlers/nomination-pool/index.js +11 -5
  40. package/services/earning-service/service.d.ts +1 -0
  41. package/services/earning-service/service.js +4 -2
  42. package/services/fee-service/utils/tokenPayFee.js +17 -13
  43. package/services/price-service/coingecko.js +2 -3
  44. package/services/swap-service/handler/hydradx-handler.js +19 -13
  45. package/services/swap-service/index.js +8 -5
  46. package/services/transaction-service/utils.d.ts +0 -1
  47. package/services/transaction-service/utils.js +31 -21
  48. package/types/swap/index.d.ts +1 -1
  49. package/types/yield/info/chain/info.d.ts +1 -0
  50. package/utils/index.d.ts +1 -0
  51. package/utils/index.js +2 -1
  52. package/utils/setup-api-sdk.d.ts +1 -0
  53. package/utils/setup-api-sdk.js +20 -0
@@ -16,7 +16,7 @@ var _types = require("@subwallet/extension-base/types");
16
16
  var _serviceBase = require("@subwallet/extension-base/types/service-base");
17
17
  var _swap = require("@subwallet/extension-base/types/swap");
18
18
  var _utils3 = require("@subwallet/extension-base/utils");
19
- var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
19
+ var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
20
20
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
21
21
  var _util = require("@polkadot/util");
22
22
  // Copyright 2019-2022 @subwallet/extension-base
@@ -145,21 +145,27 @@ class HydradxHandler {
145
145
  let bnSendingValue = (0, _bignumber.default)(fromAmount);
146
146
  let bnExpectedReceive = (0, _bignumber.default)(selectedQuote.toAmount);
147
147
  if (needModifyData) {
148
- var _subwalletApiSdk$swap;
148
+ var _quotes;
149
149
  // override info if xcm-swap-xcm
150
150
  bnSendingValue = bnSendingValue.multipliedBy(_utils2.DEFAULT_EXCESS_AMOUNT_WEIGHT);
151
151
  bnExpectedReceive = bnExpectedReceive.multipliedBy(_utils2.DEFAULT_EXCESS_AMOUNT_WEIGHT);
152
- const quotes = await ((_subwalletApiSdk$swap = _subwalletApiSdk.default.swapApi) === null || _subwalletApiSdk$swap === void 0 ? void 0 : _subwalletApiSdk$swap.fetchSwapQuoteData({
153
- address: sender,
154
- pair: {
155
- from: swapPairInfo.from,
156
- to: swapPairInfo.to,
157
- slug: swapPairInfo.slug
158
- },
159
- fromAmount: bnSendingValue.toFixed(0, 1),
160
- slippage: params.request.slippage
161
- }));
162
- const quoteAskResponse = quotes === null || quotes === void 0 ? void 0 : quotes.find(quote => quote.provider === this.providerSlug);
152
+ let quotes = []; // todo
153
+
154
+ try {
155
+ quotes = await _subwalletServicesSdk.default.swapApi.fetchSwapQuoteData({
156
+ address: sender,
157
+ pair: {
158
+ from: swapPairInfo.from,
159
+ to: swapPairInfo.to,
160
+ slug: swapPairInfo.slug
161
+ },
162
+ fromAmount: bnSendingValue.toFixed(0, 1),
163
+ slippage: params.request.slippage
164
+ });
165
+ } catch (error) {
166
+ throw new Error(`Failed to fetch swap quote: ${error.message}`);
167
+ }
168
+ const quoteAskResponse = (_quotes = quotes) === null || _quotes === void 0 ? void 0 : _quotes.find(quote => quote.provider === this.providerSlug);
163
169
  if (!quoteAskResponse || !quoteAskResponse.quote) {
164
170
  return Promise.resolve(undefined);
165
171
  }
@@ -21,7 +21,7 @@ var _types3 = require("@subwallet/extension-base/types");
21
21
  var _serviceBase = require("@subwallet/extension-base/types/service-base");
22
22
  var _swap = require("@subwallet/extension-base/types/swap");
23
23
  var _utils3 = require("@subwallet/extension-base/utils");
24
- var _subwalletApiSdk = _interopRequireDefault(require("@subwallet/subwallet-api-sdk"));
24
+ var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
25
25
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
26
26
  var _i18next = require("i18next");
27
27
  var _rxjs = require("rxjs");
@@ -43,7 +43,6 @@ class SwapService {
43
43
  this.chainService = state.chainService;
44
44
  }
45
45
  async askProvidersForQuote(_request) {
46
- var _subwalletApiSdk$swap;
47
46
  const availableQuotes = [];
48
47
 
49
48
  // hotfix // todo: remove later
@@ -51,7 +50,7 @@ class SwapService {
51
50
  ..._request,
52
51
  isSupportKyberVersion: true
53
52
  };
54
- const quotes = await ((_subwalletApiSdk$swap = _subwalletApiSdk.default.swapApi) === null || _subwalletApiSdk$swap === void 0 ? void 0 : _subwalletApiSdk$swap.fetchSwapQuoteData(request));
53
+ const quotes = await _subwalletServicesSdk.default.swapApi.fetchSwapQuoteData(request);
55
54
  if (Array.isArray(quotes)) {
56
55
  quotes.forEach(quoteData => {
57
56
  if (!_swap._SUPPORTED_SWAP_PROVIDERS.includes(quoteData.provider)) {
@@ -272,8 +271,12 @@ class SwapService {
272
271
  return [[], undefined];
273
272
  }
274
273
  async getLatestQuoteFromSwapRequest(request) {
275
- var _subwalletApiSdk$swap2;
276
- const availablePath = await ((_subwalletApiSdk$swap2 = _subwalletApiSdk.default.swapApi) === null || _subwalletApiSdk$swap2 === void 0 ? void 0 : _subwalletApiSdk$swap2.findAvailablePath(request));
274
+ let availablePath;
275
+ try {
276
+ availablePath = await _subwalletServicesSdk.default.swapApi.findAvailablePath(request);
277
+ } catch (e) {
278
+ console.log('Error findAvailablePath', e);
279
+ }
277
280
  if (!availablePath) {
278
281
  return {
279
282
  path: [],
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getChainflipExplorerLink = getChainflipExplorerLink;
7
7
  exports.getExplorerLink = getExplorerLink;
8
8
  exports.getSimpleSwapExplorerLink = getSimpleSwapExplorerLink;
9
- exports.getTransactionId = getTransactionId;
10
9
  exports.parseTransactionData = parseTransactionData;
11
10
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
12
11
  var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
@@ -52,12 +51,18 @@ function getBlockExplorerAccountRoute(explorerLink) {
52
51
  if (explorerLink.includes('devnet-explorer.mosaicchain.io')) {
53
52
  return 'accounts';
54
53
  }
54
+ if (explorerLink.includes('pdexmon.com')) {
55
+ return 'holders';
56
+ }
55
57
  return 'address';
56
58
  }
57
59
  function getBlockExplorerTxRoute(chainInfo) {
58
60
  if ((0, _utils._isPureEvmChain)(chainInfo) || (0, _utils._isPureBitcoinChain)(chainInfo)) {
59
61
  return 'tx';
60
62
  }
63
+ if (['moonbeam'].includes(chainInfo.slug)) {
64
+ return 'tx';
65
+ }
61
66
  if ((0, _utils._isPureCardanoChain)(chainInfo) || (0, _utils._isPureTonChain)(chainInfo)) {
62
67
  return 'transaction';
63
68
  }
@@ -67,33 +72,38 @@ function getBlockExplorerTxRoute(chainInfo) {
67
72
  if (['gen6_public'].includes(chainInfo.slug)) {
68
73
  return '#/extrinsics';
69
74
  }
70
- if (['mosaicTest'].includes(chainInfo.slug)) {
75
+ if (['mosaicTest', 'polkadex'].includes(chainInfo.slug)) {
71
76
  return 'transactions';
72
77
  }
78
+ if (['autonomys'].includes(chainInfo.slug)) {
79
+ return 'extrinsics';
80
+ }
73
81
  const explorerLink = (0, _utils._getBlockExplorerFromChain)(chainInfo);
74
82
  if (explorerLink && explorerLink.includes('statescan.io')) {
75
83
  return '#/extrinsics';
76
84
  }
77
85
  return 'extrinsic';
78
86
  }
79
- function getTransactionId(value) {
80
- const query = `
81
- query ExtrinsicQuery {
82
- extrinsics(where: {hash_eq: ${value}}, limit: 1) {
83
- id
84
- }
85
- }`;
86
- const apiUrl = 'https://archive-explorer.truth-network.io/graphql';
87
- return fetch(apiUrl, {
88
- method: 'POST',
89
- headers: {
90
- 'Content-Type': 'application/json'
91
- },
92
- body: JSON.stringify({
93
- query
94
- })
95
- }).then(response => response.json()).then(result => result.data.extrinsics[0].id);
96
- }
87
+
88
+ // export function getTransactionId (value: string): Promise<string> {
89
+ // const query = `
90
+ // query ExtrinsicQuery {
91
+ // extrinsics(where: {hash_eq: ${value}}, limit: 1) {
92
+ // id
93
+ // }
94
+ // }`;
95
+ //
96
+ // const apiUrl = 'https://archive-explorer.truth-network.io/graphql';
97
+ //
98
+ // return fetch(apiUrl, {
99
+ // method: 'POST',
100
+ // headers: { 'Content-Type': 'application/json' },
101
+ // body: JSON.stringify({ query })
102
+ // })
103
+ // .then((response) => response.json())
104
+ // .then((result: SWApiResponse<ExtrinsicsDataResponse>) => result.data.extrinsics[0].id);
105
+ // }
106
+
97
107
  function getExplorerLink(chainInfo, value, type) {
98
108
  const explorerLink = (0, _utils._getBlockExplorerFromChain)(chainInfo);
99
109
  if (explorerLink && type === 'account') {
@@ -129,6 +139,5 @@ function getChainflipExplorerLink(data, chainInfo) {
129
139
  return `${chainflipDomain}/channels/${data.depositChannelId}`;
130
140
  }
131
141
  function getSimpleSwapExplorerLink(data) {
132
- const simpleswapDomain = _utils2.SIMPLE_SWAP_EXPLORER;
133
- return `${simpleswapDomain}/exchange?id=${data.id}`;
142
+ return `${_utils2.SIMPLE_SWAP_EXPLORER}/exchange?id=${data.id}`;
134
143
  }
@@ -343,6 +343,18 @@ Object.keys(_bitcoin).forEach(function (key) {
343
343
  }
344
344
  });
345
345
  });
346
+ var _setupApiSdk = require("./setup-api-sdk");
347
+ Object.keys(_setupApiSdk).forEach(function (key) {
348
+ if (key === "default" || key === "__esModule") return;
349
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
350
+ if (key in exports && exports[key] === _setupApiSdk[key]) return;
351
+ Object.defineProperty(exports, key, {
352
+ enumerable: true,
353
+ get: function () {
354
+ return _setupApiSdk[key];
355
+ }
356
+ });
357
+ });
346
358
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
347
359
  // SPDX-License-Identifier: Apache-2.0
348
360
 
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.setupApiSDK = setupApiSDK;
8
+ var _constants = require("@subwallet/extension-base/constants");
9
+ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
10
+ var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
11
+ var _environment = require("./environment");
12
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
13
+ // SPDX-License-Identifier: Apache-2.0
14
+
15
+ function setupApiSDK() {
16
+ _subwalletServicesSdk.default.updateConfig({
17
+ appVersion: _constants.APP_VERSION,
18
+ baseUrl: _constants.BACKEND_API_URL,
19
+ platform: _environment.TARGET_ENV,
20
+ chainListVersion: _utils.ChainListVersion
21
+ });
22
+
23
+ // Custom the price history API with other different base URL
24
+ _subwalletServicesSdk.default.priceHistoryApi.updateConfig({
25
+ baseUrl: _constants.BACKEND_PRICE_HISTORY_URL
26
+ });
27
+ }
@@ -1,3 +1,4 @@
1
+ export declare const APP_VERSION: string;
1
2
  export declare const isProductionMode: boolean;
2
3
  export declare const BACKEND_API_URL: string;
3
4
  export declare const BACKEND_PRICE_HISTORY_URL: string;
@@ -3,6 +3,7 @@
3
3
 
4
4
  const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
5
5
  const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
6
+ export const APP_VERSION = process.env.PKG_VERSION || '';
6
7
  export const isProductionMode = PRODUCTION_BRANCHES.indexOf(branchName) > -1;
7
8
  export const BACKEND_API_URL = process.env.SUBWALLET_API || (isProductionMode ? 'https://sw-services.subwallet.app/api' : 'https://be-dev.subwallet.app/api');
8
9
  export const BACKEND_PRICE_HISTORY_URL = process.env.SUBWALLET_PRICE_HISTORY_API || (isProductionMode ? 'https://price-history.subwallet.app/api' : 'https://price-history-dev.subwallet.app/api');
@@ -8,7 +8,7 @@ import { EvmProviderError } from '@subwallet/extension-base/background/errors/Ev
8
8
  import { withErrorLog } from '@subwallet/extension-base/background/handlers/helpers';
9
9
  import { isSubscriptionRunning, unsubscribe } from '@subwallet/extension-base/background/handlers/subscriptions';
10
10
  import { APIItemState, BitcoinProviderErrorType, CardanoProviderErrorType, ChainType, EvmProviderErrorType, ExternalRequestPromiseStatus, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
11
- import { BACKEND_API_URL, BACKEND_PRICE_HISTORY_URL, MANTA_PAY_BALANCE_INTERVAL, REMIND_EXPORT_ACCOUNT } from '@subwallet/extension-base/constants';
11
+ import { MANTA_PAY_BALANCE_INTERVAL, REMIND_EXPORT_ACCOUNT } from '@subwallet/extension-base/constants';
12
12
  import { convertErrorFormat, generateValidationProcess, validationAuthCardanoMiddleware, validationAuthMiddleware, validationAuthWCMiddleware, validationBitcoinConnectMiddleware, validationBitcoinSendTransactionMiddleware, validationBitcoinSignMessageMiddleware, validationBitcoinSignPsbtMiddleware, validationCardanoSignDataMiddleware, validationConnectMiddleware, validationEvmDataTransactionMiddleware, validationEvmSignMessageMiddleware } from '@subwallet/extension-base/core/logic-validation';
13
13
  import { BalanceService } from '@subwallet/extension-base/services/balance-service';
14
14
  import { ServiceStatus } from '@subwallet/extension-base/services/base/types';
@@ -41,10 +41,9 @@ import TransactionService from '@subwallet/extension-base/services/transaction-s
41
41
  import WalletConnectService from '@subwallet/extension-base/services/wallet-connect-service';
42
42
  import { SWStorage } from '@subwallet/extension-base/storage';
43
43
  import { BasicTxErrorType } from '@subwallet/extension-base/types';
44
- import { addLazy, isManifestV3, isSameAddress, reformatAddress, sailsCache, stripUrl, targetIsWeb } from '@subwallet/extension-base/utils';
44
+ import { addLazy, isManifestV3, isSameAddress, reformatAddress, sailsCache, setupApiSDK, stripUrl, targetIsWeb } from '@subwallet/extension-base/utils';
45
45
  import { convertCardanoHexToBech32, validateAddressNetwork } from '@subwallet/extension-base/utils/cardano';
46
46
  import { createPromiseHandler } from '@subwallet/extension-base/utils/promise';
47
- import subwalletApiSdk from '@subwallet/subwallet-api-sdk';
48
47
  import { keyring } from '@subwallet/ui-keyring';
49
48
  import BigN from 'bignumber.js';
50
49
  import * as bitcoin from 'bitcoinjs-lib';
@@ -93,10 +92,7 @@ export default class KoniState {
93
92
  waitStartingFull = null;
94
93
  constructor(providers = {}) {
95
94
  // Init subwallet api sdk
96
- subwalletApiSdk.init({
97
- url: BACKEND_API_URL,
98
- priceHistoryUrl: BACKEND_PRICE_HISTORY_URL
99
- });
95
+ setupApiSDK();
100
96
  this.providers = providers;
101
97
  this.eventService = new EventService();
102
98
  this.dbService = new DatabaseService(this.eventService);
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "./cjs/detectPackage.js"
18
18
  ],
19
19
  "type": "module",
20
- "version": "1.3.51-0",
20
+ "version": "1.3.52-0",
21
21
  "main": "./cjs/index.js",
22
22
  "module": "./index.js",
23
23
  "types": "./index.d.ts",
@@ -2801,6 +2801,11 @@
2801
2801
  "require": "./cjs/utils/request.js",
2802
2802
  "default": "./utils/request.js"
2803
2803
  },
2804
+ "./utils/setup-api-sdk": {
2805
+ "types": "./utils/setup-api-sdk.d.ts",
2806
+ "require": "./cjs/utils/setup-api-sdk.js",
2807
+ "default": "./utils/setup-api-sdk.js"
2808
+ },
2804
2809
  "./utils/staticData": {
2805
2810
  "types": "./utils/staticData/index.d.ts",
2806
2811
  "require": "./cjs/utils/staticData/index.js",
@@ -2865,11 +2870,12 @@
2865
2870
  "@reduxjs/toolkit": "^1.9.1",
2866
2871
  "@sora-substrate/type-definitions": "^1.17.7",
2867
2872
  "@substrate/connect": "^0.8.9",
2868
- "@subwallet/chain-list": "0.2.110",
2869
- "@subwallet/extension-base": "^1.3.51-0",
2870
- "@subwallet/extension-chains": "^1.3.51-0",
2871
- "@subwallet/extension-dapp": "^1.3.51-0",
2872
- "@subwallet/extension-inject": "^1.3.51-0",
2873
+ "@subwallet-monorepos/subwallet-services-sdk": "^0.1.8",
2874
+ "@subwallet/chain-list": "0.2.111",
2875
+ "@subwallet/extension-base": "^1.3.52-0",
2876
+ "@subwallet/extension-chains": "^1.3.52-0",
2877
+ "@subwallet/extension-dapp": "^1.3.52-0",
2878
+ "@subwallet/extension-inject": "^1.3.52-0",
2873
2879
  "@subwallet/keyring": "^0.1.12",
2874
2880
  "@subwallet/subwallet-api-sdk": "^1.3.51-0",
2875
2881
  "@subwallet/ui-keyring": "^0.1.12",
package/packageInfo.js CHANGED
@@ -7,5 +7,5 @@ export const packageInfo = {
7
7
  name: '@subwallet/extension-base',
8
8
  path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
9
9
  type: 'esm',
10
- version: '1.3.51-0'
10
+ version: '1.3.52-0'
11
11
  };
@@ -12,8 +12,8 @@ import DetectAccountBalanceStore from '@subwallet/extension-base/stores/DetectAc
12
12
  import { addLazy, createPromiseHandler, isAccountAll, waitTimeout } from '@subwallet/extension-base/utils';
13
13
  import { getKeypairTypeByAddress } from '@subwallet/keyring';
14
14
  import { EthereumKeypairTypes, SubstrateKeypairTypes } from '@subwallet/keyring/types';
15
- import subwalletApiSdk from '@subwallet/subwallet-api-sdk';
16
15
  import keyring from '@subwallet/ui-keyring';
16
+ import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
17
17
  import BigN from 'bignumber.js';
18
18
  import { t } from 'i18next';
19
19
  import { BehaviorSubject } from 'rxjs';
@@ -448,12 +448,11 @@ export class BalanceService {
448
448
  const typeValid = [...EthereumKeypairTypes].includes(type);
449
449
  if (typeValid) {
450
450
  return new Promise(resolve => {
451
- var _subwalletApiSdk$bala;
452
451
  const timeOutPromise = new Promise(_resolve => {
453
452
  setTimeout(() => _resolve([]), 30000);
454
453
  });
455
- const apiPromise = ((_subwalletApiSdk$bala = subwalletApiSdk.balanceDetectionApi) === null || _subwalletApiSdk$bala === void 0 ? void 0 : _subwalletApiSdk$bala.getEvmTokenBalanceSlug(address)) || Promise.resolve([]);
456
- Promise.race([timeOutPromise, apiPromise]).then(result => resolve(result)).catch(error => {
454
+ const balanceDetectionApi = subwalletApiSdk.balanceDetectionApi || Promise.resolve([]);
455
+ Promise.race([timeOutPromise, balanceDetectionApi.getEvmTokenBalanceSlug(address)]).then(result => resolve(result)).catch(error => {
457
456
  console.error(error);
458
457
  resolve(null);
459
458
  });
@@ -4,7 +4,22 @@
4
4
  import * as csl from '@emurgo/cardano-serialization-lib-nodejs';
5
5
  import { _AssetType } from '@subwallet/chain-list/types';
6
6
  import { getAdaBelongUtxo, getCardanoTxFee, splitCardanoId } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/utils';
7
- import { subwalletApiSdk } from '@subwallet/subwallet-api-sdk';
7
+ import { toUnit } from '@subwallet/extension-base/utils';
8
+ import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
9
+ var POPULAR_CARDANO_ERROR_PHRASE;
10
+ (function (POPULAR_CARDANO_ERROR_PHRASE) {
11
+ POPULAR_CARDANO_ERROR_PHRASE["NOT_MATCH_MIN_AMOUNT"] = "less than the minimum UTXO value";
12
+ POPULAR_CARDANO_ERROR_PHRASE["INSUFFICIENT_INPUT"] = "Insufficient input in transaction";
13
+ })(POPULAR_CARDANO_ERROR_PHRASE || (POPULAR_CARDANO_ERROR_PHRASE = {}));
14
+ function getFirstNumberAfterSubstring(inputStr, subStr) {
15
+ const regex = new RegExp(`(${subStr})\\D*(\\d+)`);
16
+ const match = inputStr.match(regex);
17
+ if (match) {
18
+ return parseInt(match[2], 10);
19
+ } else {
20
+ return null;
21
+ }
22
+ }
8
23
  export async function createCardanoTransaction(params) {
9
24
  var _tokenInfo$metadata;
10
25
  const {
@@ -22,15 +37,32 @@ export async function createCardanoTransaction(params) {
22
37
  if (!cardanoId) {
23
38
  throw new Error('Missing token policy id metadata');
24
39
  }
25
- const payload = await subwalletApiSdk.fetchUnsignedPayload({
26
- tokenDecimals: params.tokenInfo.decimals || 0,
27
- nativeTokenSymbol: params.nativeTokenInfo.symbol,
28
- cardanoId,
29
- from: params.from,
30
- to: params.to,
31
- value: params.value,
32
- cardanoTtlOffset: params.cardanoTtlOffset
33
- });
40
+ let payload;
41
+ try {
42
+ payload = await subwalletApiSdk.cardanoApi.fetchUnsignedPayload({
43
+ sender: from,
44
+ receiver: to,
45
+ unit: cardanoId,
46
+ quantity: value
47
+ });
48
+ } catch (error) {
49
+ const errorMessage = error.message;
50
+ const tokenDecimals = params.tokenInfo.decimals || 0; // todo: review if should use nativeTokenDecimals?
51
+ const nativeTokenSymbol = params.nativeTokenInfo.symbol;
52
+ if (errorMessage.includes(POPULAR_CARDANO_ERROR_PHRASE.NOT_MATCH_MIN_AMOUNT)) {
53
+ const minAdaRequiredRaw = getFirstNumberAfterSubstring(errorMessage, POPULAR_CARDANO_ERROR_PHRASE.NOT_MATCH_MIN_AMOUNT);
54
+ const minAdaRequired = minAdaRequiredRaw ? toUnit(minAdaRequiredRaw, tokenDecimals) : 1;
55
+ throw new Error(`Amount too low. Increase your amount above ${minAdaRequired} ${nativeTokenSymbol} and try again`);
56
+ }
57
+ if (errorMessage.includes(POPULAR_CARDANO_ERROR_PHRASE.INSUFFICIENT_INPUT)) {
58
+ throw new Error(`Insufficient ${nativeTokenSymbol} balance to perform transaction. Top up ${nativeTokenSymbol} and try again`);
59
+ }
60
+ console.error(`Transaction is not built successfully: ${errorMessage}`);
61
+ throw new Error('Unable to perform this transaction at the moment. Try again later');
62
+ }
63
+ if (!payload) {
64
+ throw new Error('Build cardano payload failed!');
65
+ }
34
66
  console.log('Build cardano payload successfully!', payload);
35
67
  validatePayload(payload, params);
36
68
  const fee = getCardanoTxFee(payload);
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
5
5
  import { _isAcrossBridgeXcm } from '@subwallet/extension-base/core/substrate/xcm-parser';
6
- import subwalletApiSdk from '@subwallet/subwallet-api-sdk';
6
+ import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
7
7
  // Across Bridge
8
8
  const acrossPairsMap = new Map([[COMMON_CHAIN_SLUGS.ETHEREUM, new Set(['optimism', 'base_mainnet', 'arbitrum_one'])], ['optimism', new Set([COMMON_CHAIN_SLUGS.ETHEREUM, 'base_mainnet', 'arbitrum_one'])], ['base_mainnet', new Set([COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'arbitrum_one'])], ['arbitrum_one', new Set([COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'base_mainnet'])], [COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA, new Set(['base_sepolia', 'arbitrum_sepolia'])],
9
9
  // TESTNET START HERE
@@ -37,100 +37,21 @@ export const getAcrossQuote = async ({
37
37
  throw new Error('Sender is required');
38
38
  }
39
39
  try {
40
- var _subwalletApiSdk$xcmA;
41
- const data = await ((_subwalletApiSdk$xcmA = subwalletApiSdk.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
40
+ const data = await subwalletApiSdk.xcmApi.fetchXcmData({
41
+ address: sender,
42
+ from: originTokenInfo.slug,
43
+ to: destinationTokenInfo.slug,
44
+ recipient,
45
+ value: sendingValue
46
+ });
42
47
  if (!data) {
43
- throw new Error('Failed to fetch Across Bridge Data. Please try again later');
48
+ return Promise.reject(new Error('Failed to fetch Across Bridge Data. Please try again later'));
44
49
  }
45
50
  return data;
46
51
  } catch (error) {
47
- return Promise.reject(error);
52
+ if (error instanceof SyntaxError) {
53
+ return Promise.reject(new Error('Unable to perform this transaction at the moment. Try again later'));
54
+ }
55
+ return Promise.reject(new Error((error === null || error === void 0 ? void 0 : error.message) || 'Unable to perform this transaction at the moment. Try again later'));
48
56
  }
49
- };
50
-
51
- // export const SpokePoolMapping: Record<number, { SpokePool: { address: string; blockNumber: number } }> = {
52
- // 1: {
53
- // SpokePool: { address: '0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5', blockNumber: 17117454 }
54
- // },
55
- // 10: {
56
- // SpokePool: { address: '0x6f26Bf09B1C792e3228e5467807a900A503c0281', blockNumber: 93903076 }
57
- // },
58
- // 11155111: {
59
- // SpokePool: { address: '0x5ef6C01E11889d86803e0B23e3cB3F9E9d97B662', blockNumber: 5288470 }
60
- // },
61
- // 11155420: {
62
- // SpokePool: { address: '0x4e8E101924eDE233C13e2D8622DC8aED2872d505', blockNumber: 7762656 }
63
- // },
64
- // 1135: {
65
- // SpokePool: { address: '0x9552a0a6624A23B848060AE5901659CDDa1f83f8', blockNumber: 2602337 }
66
- // },
67
- // 130: {
68
- // SpokePool: { address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64', blockNumber: 7915488 }
69
- // },
70
- // 137: {
71
- // SpokePool: { address: '0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096', blockNumber: 41908657 }
72
- // },
73
- // 168587773: {
74
- // SpokePool: { address: '0x5545092553Cf5Bf786e87a87192E902D50D8f022', blockNumber: 7634204 }
75
- // },
76
- // 1868: {
77
- // SpokePool: { address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96', blockNumber: 1709997 }
78
- // },
79
- // 288: {
80
- // SpokePool: { address: '0xBbc6009fEfFc27ce705322832Cb2068F8C1e0A58', blockNumber: 619993 }
81
- // },
82
- // 324: {
83
- // SpokePool: { address: '0xE0B015E54d54fc84a6cB9B666099c46adE9335FF', blockNumber: 10352565 }
84
- // },
85
- // 34443: {
86
- // SpokePool: { address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96', blockNumber: 8043187 }
87
- // },
88
- // 37111: {
89
- // SpokePool: { address: '0x6A0a7f39530923911832Dd60667CE5da5449967B', blockNumber: 156275 }
90
- // },
91
- // 41455: {
92
- // SpokePool: { address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97', blockNumber: 4240318 }
93
- // },
94
- // 4202: {
95
- // SpokePool: { address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4', blockNumber: 7267988 }
96
- // },
97
- // 42161: {
98
- // SpokePool: { address: '0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A', blockNumber: 83868041 }
99
- // },
100
- // 421614: {
101
- // SpokePool: { address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75', blockNumber: 12411026 }
102
- // },
103
- // 480: {
104
- // SpokePool: { address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64', blockNumber: 4524742 }
105
- // },
106
- // 534352: {
107
- // SpokePool: { address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96', blockNumber: 7489705 }
108
- // },
109
- // 57073: {
110
- // SpokePool: { address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4', blockNumber: 1139240 }
111
- // },
112
- // 59144: {
113
- // SpokePool: { address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75', blockNumber: 2721169 }
114
- // },
115
- // 690: {
116
- // SpokePool: { address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97', blockNumber: 5512122 }
117
- // },
118
- // 7777777: {
119
- // SpokePool: { address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97', blockNumber: 18382867 }
120
- // },
121
- // 80002: {
122
- // SpokePool: { address: '0xd08baaE74D6d2eAb1F3320B2E1a53eeb391ce8e5', blockNumber: 7529960 }
123
- // },
124
- // 81457: {
125
- // SpokePool: { address: '0x2D509190Ed0172ba588407D4c2df918F955Cc6E1', blockNumber: 5574280 }
126
- // },
127
- // 8453: {
128
- // SpokePool: { address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64', blockNumber: 2164878 }
129
- // },
130
- // 84532: {
131
- // SpokePool: { address: '0x82B564983aE7274c86695917BBf8C99ECb6F0F8F', blockNumber: 6082004 }
132
- // },
133
- // 919: {
134
- // SpokePool: { address: '0xbd886FC0725Cc459b55BbFEb3E4278610331f83b', blockNumber: 13999465 }
135
- // }
136
- // };
57
+ };
@@ -12,7 +12,7 @@ import { getExtrinsicByXtokensPallet } from '@subwallet/extension-base/services/
12
12
  import { _XCM_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
13
13
  import { _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
14
14
  import { combineEthFee } from '@subwallet/extension-base/utils';
15
- import subwalletApiSdk from '@subwallet/subwallet-api-sdk';
15
+ import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
16
16
  import { _createPosBridgeL1toL2Extrinsic, _createPosBridgeL2toL1Extrinsic } from "./posBridge.js";
17
17
  // SnowBridge
18
18
  export const createSnowBridgeExtrinsic = async ({
@@ -175,8 +175,13 @@ export const createAcrossBridgeExtrinsic = async ({
175
175
  throw new Error('Sender is required');
176
176
  }
177
177
  try {
178
- var _subwalletApiSdk$xcmA;
179
- const data = await ((_subwalletApiSdk$xcmA = subwalletApiSdk.xcmApi) === null || _subwalletApiSdk$xcmA === void 0 ? void 0 : _subwalletApiSdk$xcmA.fetchXcmData(sender, originTokenInfo.slug, destinationTokenInfo.slug, recipient, sendingValue));
178
+ const data = await subwalletApiSdk.xcmApi.fetchXcmData({
179
+ address: sender,
180
+ from: originTokenInfo.slug,
181
+ to: destinationTokenInfo.slug,
182
+ recipient,
183
+ value: sendingValue
184
+ });
180
185
  const _feeCustom = feeCustom;
181
186
  const feeCombine = combineEthFee(feeInfo, feeOption, _feeCustom);
182
187
  if (!data) {
@@ -193,6 +198,9 @@ export const createAcrossBridgeExtrinsic = async ({
193
198
  transactionConfig.gas = gasLimit.toString();
194
199
  return transactionConfig;
195
200
  } catch (error) {
196
- return Promise.reject(error);
201
+ if (error instanceof SyntaxError) {
202
+ return Promise.reject(new Error('Unable to perform this transaction at the moment. Try again later'));
203
+ }
204
+ return Promise.reject(new Error((error === null || error === void 0 ? void 0 : error.message) || 'Unable to perform this transaction at the moment. Try again later'));
197
205
  }
198
206
  };
@@ -1,4 +1,5 @@
1
1
  import { _ChainAsset, _ChainInfo, _MultiChainAsset } from '@subwallet/chain-list/types';
2
+ export declare const ChainListVersion = "0.2.111";
2
3
  export interface PatchInfo {
3
4
  patchVersion: string;
4
5
  appliedVersion: string;
@@ -5,7 +5,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
5
5
  const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
6
6
  const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
7
7
  const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
8
- const ChainListVersion = '0.2.110'; // update this when build chainlist
8
+ export const ChainListVersion = '0.2.111'; // update this when build chain-list
9
9
 
10
10
  // todo: move this interface to chainlist
11
11