@subwallet/extension-base 1.1.35-beta.2 → 1.1.36-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 (89) hide show
  1. package/background/KoniTypes.d.ts +12 -0
  2. package/background/KoniTypes.js +3 -0
  3. package/cjs/background/KoniTypes.js +3 -0
  4. package/cjs/koni/api/nft/config.js +11 -6
  5. package/cjs/koni/api/nft/index.js +4 -2
  6. package/cjs/koni/api/nft/transfer.js +7 -19
  7. package/cjs/koni/api/nft/unique_network_nft/index.js +154 -0
  8. package/cjs/koni/api/staking/bonding/utils.js +44 -0
  9. package/cjs/koni/api/tokens/evm/transfer.js +35 -19
  10. package/cjs/koni/api/yield/helper/utils.js +6 -3
  11. package/cjs/koni/background/handlers/Extension.js +20 -12
  12. package/cjs/koni/background/handlers/State.js +15 -5
  13. package/cjs/packageInfo.js +1 -1
  14. package/cjs/services/balance-service/index.js +1 -1
  15. package/cjs/services/chain-service/constants.js +1 -1
  16. package/cjs/services/chain-service/index.js +3 -5
  17. package/cjs/services/earning-service/handlers/liquid-staking/base.js +2 -1
  18. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
  19. package/cjs/services/earning-service/handlers/liquid-staking/index.js +7 -0
  20. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
  21. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +10 -2
  22. package/cjs/services/earning-service/handlers/nomination-pool/index.js +10 -2
  23. package/cjs/services/earning-service/handlers/special.js +7 -3
  24. package/cjs/services/earning-service/service.js +38 -14
  25. package/cjs/services/notification-service/NotificationService.js +7 -4
  26. package/cjs/services/request-service/handler/EvmRequestHandler.js +46 -29
  27. package/cjs/services/transaction-service/constants.js +1 -1
  28. package/cjs/services/transaction-service/index.js +44 -15
  29. package/cjs/signers/web3/QrSigner.js +2 -0
  30. package/cjs/types/yield/actions/join/step.js +1 -0
  31. package/cjs/utils/eth/mergeTransactionAndSignature.js +25 -10
  32. package/cjs/utils/eth.js +60 -2
  33. package/cjs/utils/number.js +5 -1
  34. package/koni/api/nft/config.d.ts +3 -2
  35. package/koni/api/nft/config.js +8 -3
  36. package/koni/api/nft/index.js +3 -2
  37. package/koni/api/nft/transfer.d.ts +0 -1
  38. package/koni/api/nft/transfer.js +7 -18
  39. package/koni/api/nft/unique_network_nft/index.d.ts +9 -0
  40. package/koni/api/nft/unique_network_nft/index.js +146 -0
  41. package/koni/api/staking/bonding/utils.d.ts +5 -0
  42. package/koni/api/staking/bonding/utils.js +40 -0
  43. package/koni/api/tokens/evm/transfer.js +36 -21
  44. package/koni/api/yield/helper/utils.d.ts +1 -1
  45. package/koni/api/yield/helper/utils.js +5 -3
  46. package/koni/background/handlers/Extension.js +21 -13
  47. package/koni/background/handlers/State.js +16 -6
  48. package/package.json +21 -12
  49. package/packageInfo.js +1 -1
  50. package/services/balance-service/index.js +1 -1
  51. package/services/chain-service/constants.js +1 -1
  52. package/services/chain-service/index.js +4 -6
  53. package/services/earning-service/handlers/liquid-staking/base.d.ts +1 -1
  54. package/services/earning-service/handlers/liquid-staking/base.js +2 -1
  55. package/services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts +37 -0
  56. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +132 -0
  57. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +3 -3
  58. package/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
  59. package/services/earning-service/handlers/liquid-staking/index.d.ts +1 -0
  60. package/services/earning-service/handlers/liquid-staking/index.js +1 -0
  61. package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
  62. package/services/earning-service/handlers/native-staking/relay-chain.js +11 -3
  63. package/services/earning-service/handlers/nomination-pool/index.js +11 -3
  64. package/services/earning-service/handlers/special.js +7 -3
  65. package/services/earning-service/service.d.ts +4 -2
  66. package/services/earning-service/service.js +40 -16
  67. package/services/notification-service/NotificationService.js +7 -4
  68. package/services/request-service/handler/EvmRequestHandler.d.ts +2 -2
  69. package/services/request-service/handler/EvmRequestHandler.js +46 -29
  70. package/services/transaction-service/constants.js +1 -1
  71. package/services/transaction-service/index.js +45 -16
  72. package/services/transaction-service/types.d.ts +2 -2
  73. package/signers/types.d.ts +2 -0
  74. package/signers/web3/QrSigner.js +2 -0
  75. package/types/yield/actions/join/step.d.ts +1 -0
  76. package/types/yield/actions/join/step.js +1 -0
  77. package/utils/eth/mergeTransactionAndSignature.js +25 -10
  78. package/utils/eth.d.ts +14 -0
  79. package/utils/eth.js +57 -0
  80. package/utils/number.d.ts +2 -0
  81. package/utils/number.js +2 -0
  82. package/cjs/koni/api/dotsama/balance.js +0 -464
  83. package/cjs/services/migration-service/scripts/MigrateEthProvider.js +0 -17
  84. package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +0 -17
  85. package/cjs/services/migration-service/scripts/MigrateProvider.js +0 -29
  86. package/cjs/services/storage-service/index.js +0 -241
  87. package/cjs/types.js +0 -1
  88. package/cjs/utils/address.js +0 -34
  89. package/cjs/utils/keyring.js +0 -57
@@ -371,16 +371,19 @@ export declare enum ExtrinsicType {
371
371
  MINT_SDOT = "earn.mint_sdot",
372
372
  MINT_QDOT = "earn.mint_qdot",
373
373
  MINT_STDOT = "earn.mint_stdot",
374
+ MINT_VMANTA = "earn.mint_vmanta",
374
375
  REDEEM_QDOT = "earn.redeem_qdot",
375
376
  REDEEM_VDOT = "earn.redeem_vdot",
376
377
  REDEEM_LDOT = "earn.redeem_ldot",
377
378
  REDEEM_SDOT = "earn.redeem_sdot",
378
379
  REDEEM_STDOT = "earn.redeem_stdot",
380
+ REDEEM_VMANTA = "earn.redeem_vmanta",
379
381
  UNSTAKE_QDOT = "earn.unstake_qdot",
380
382
  UNSTAKE_VDOT = "earn.unstake_vdot",
381
383
  UNSTAKE_LDOT = "earn.unstake_ldot",
382
384
  UNSTAKE_SDOT = "earn.unstake_sdot",
383
385
  UNSTAKE_STDOT = "earn.unstake_stdot",
386
+ UNSTAKE_VMANTA = "earn.unstake_vmanta",
384
387
  TOKEN_APPROVE = "evm.token_approve",
385
388
  EVM_EXECUTE = "evm.execute",
386
389
  UNKNOWN = "unknown"
@@ -407,16 +410,19 @@ export interface ExtrinsicDataTypeMap {
407
410
  [ExtrinsicType.MINT_QDOT]: SubmitYieldStepData;
408
411
  [ExtrinsicType.MINT_STDOT]: SubmitYieldStepData;
409
412
  [ExtrinsicType.MINT_STDOT]: SubmitYieldStepData;
413
+ [ExtrinsicType.MINT_VMANTA]: SubmitYieldStepData;
410
414
  [ExtrinsicType.UNSTAKE_VDOT]: RequestYieldLeave;
411
415
  [ExtrinsicType.UNSTAKE_QDOT]: RequestYieldLeave;
412
416
  [ExtrinsicType.UNSTAKE_LDOT]: RequestYieldLeave;
413
417
  [ExtrinsicType.UNSTAKE_SDOT]: RequestYieldLeave;
414
418
  [ExtrinsicType.UNSTAKE_STDOT]: RequestYieldLeave;
419
+ [ExtrinsicType.UNSTAKE_VMANTA]: RequestYieldLeave;
415
420
  [ExtrinsicType.REDEEM_VDOT]: RequestYieldLeave;
416
421
  [ExtrinsicType.REDEEM_QDOT]: RequestYieldLeave;
417
422
  [ExtrinsicType.REDEEM_LDOT]: RequestYieldLeave;
418
423
  [ExtrinsicType.REDEEM_SDOT]: RequestYieldLeave;
419
424
  [ExtrinsicType.REDEEM_STDOT]: RequestYieldLeave;
425
+ [ExtrinsicType.REDEEM_VMANTA]: RequestYieldLeave;
420
426
  [ExtrinsicType.TOKEN_APPROVE]: TokenApproveData;
421
427
  [ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
422
428
  [ExtrinsicType.CROWDLOAN]: any;
@@ -455,6 +461,9 @@ export interface BasicTokenInfo {
455
461
  export interface AmountData extends BasicTokenInfo {
456
462
  value: string;
457
463
  }
464
+ export interface FeeData extends AmountData {
465
+ tooHigh?: boolean;
466
+ }
458
467
  export interface AmountDataWithId extends AmountData {
459
468
  id: string;
460
469
  }
@@ -470,16 +479,19 @@ export declare type TransactionAdditionalInfo = {
470
479
  [ExtrinsicType.TRANSFER_XCM]: XCMTransactionAdditionalInfo;
471
480
  [ExtrinsicType.SEND_NFT]: NFTTransactionAdditionalInfo;
472
481
  [ExtrinsicType.MINT_VDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
482
+ [ExtrinsicType.MINT_VMANTA]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
473
483
  [ExtrinsicType.MINT_QDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
474
484
  [ExtrinsicType.MINT_SDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
475
485
  [ExtrinsicType.MINT_LDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
476
486
  [ExtrinsicType.MINT_STDOT]: Pick<SubmitYieldStepData, 'derivativeTokenSlug' | 'exchangeRate' | 'slug'>;
477
487
  [ExtrinsicType.REDEEM_VDOT]: LeavePoolAdditionalData;
488
+ [ExtrinsicType.REDEEM_VMANTA]: LeavePoolAdditionalData;
478
489
  [ExtrinsicType.REDEEM_QDOT]: LeavePoolAdditionalData;
479
490
  [ExtrinsicType.REDEEM_SDOT]: LeavePoolAdditionalData;
480
491
  [ExtrinsicType.REDEEM_LDOT]: LeavePoolAdditionalData;
481
492
  [ExtrinsicType.REDEEM_STDOT]: LeavePoolAdditionalData;
482
493
  [ExtrinsicType.UNSTAKE_VDOT]: LeavePoolAdditionalData;
494
+ [ExtrinsicType.UNSTAKE_VMANTA]: LeavePoolAdditionalData;
483
495
  [ExtrinsicType.UNSTAKE_QDOT]: LeavePoolAdditionalData;
484
496
  [ExtrinsicType.UNSTAKE_SDOT]: LeavePoolAdditionalData;
485
497
  [ExtrinsicType.UNSTAKE_LDOT]: LeavePoolAdditionalData;
@@ -81,16 +81,19 @@ export let ExtrinsicType;
81
81
  ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
82
82
  ExtrinsicType["MINT_QDOT"] = "earn.mint_qdot";
83
83
  ExtrinsicType["MINT_STDOT"] = "earn.mint_stdot";
84
+ ExtrinsicType["MINT_VMANTA"] = "earn.mint_vmanta";
84
85
  ExtrinsicType["REDEEM_QDOT"] = "earn.redeem_qdot";
85
86
  ExtrinsicType["REDEEM_VDOT"] = "earn.redeem_vdot";
86
87
  ExtrinsicType["REDEEM_LDOT"] = "earn.redeem_ldot";
87
88
  ExtrinsicType["REDEEM_SDOT"] = "earn.redeem_sdot";
88
89
  ExtrinsicType["REDEEM_STDOT"] = "earn.redeem_stdot";
90
+ ExtrinsicType["REDEEM_VMANTA"] = "earn.redeem_vmanta";
89
91
  ExtrinsicType["UNSTAKE_QDOT"] = "earn.unstake_qdot";
90
92
  ExtrinsicType["UNSTAKE_VDOT"] = "earn.unstake_vdot";
91
93
  ExtrinsicType["UNSTAKE_LDOT"] = "earn.unstake_ldot";
92
94
  ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
93
95
  ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
96
+ ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
94
97
  ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
95
98
  ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
96
99
  ExtrinsicType["UNKNOWN"] = "unknown";
@@ -95,16 +95,19 @@ exports.ExtrinsicType = ExtrinsicType;
95
95
  ExtrinsicType["MINT_SDOT"] = "earn.mint_sdot";
96
96
  ExtrinsicType["MINT_QDOT"] = "earn.mint_qdot";
97
97
  ExtrinsicType["MINT_STDOT"] = "earn.mint_stdot";
98
+ ExtrinsicType["MINT_VMANTA"] = "earn.mint_vmanta";
98
99
  ExtrinsicType["REDEEM_QDOT"] = "earn.redeem_qdot";
99
100
  ExtrinsicType["REDEEM_VDOT"] = "earn.redeem_vdot";
100
101
  ExtrinsicType["REDEEM_LDOT"] = "earn.redeem_ldot";
101
102
  ExtrinsicType["REDEEM_SDOT"] = "earn.redeem_sdot";
102
103
  ExtrinsicType["REDEEM_STDOT"] = "earn.redeem_stdot";
104
+ ExtrinsicType["REDEEM_VMANTA"] = "earn.redeem_vmanta";
103
105
  ExtrinsicType["UNSTAKE_QDOT"] = "earn.unstake_qdot";
104
106
  ExtrinsicType["UNSTAKE_VDOT"] = "earn.unstake_vdot";
105
107
  ExtrinsicType["UNSTAKE_LDOT"] = "earn.unstake_ldot";
106
108
  ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
107
109
  ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
110
+ ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
108
111
  ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
109
112
  ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
110
113
  ExtrinsicType["UNKNOWN"] = "unknown";
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = void 0;
7
+ exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = void 0;
8
8
  exports.getRandomIpfsGateway = getRandomIpfsGateway;
9
9
  var _storage = require("@subwallet/extension-base/storage");
10
10
  var _utils = require("@subwallet/extension-base/utils");
@@ -41,15 +41,20 @@ const CF_IPFS_GATEWAY = 'https://cf-ipfs.com/ipfs/';
41
41
  // XOrigin
42
42
  exports.CF_IPFS_GATEWAY = CF_IPFS_GATEWAY;
43
43
  const PINATA_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';
44
+
45
+ // deprecated
46
+ // export const UNIQUE_SCAN_ENDPOINT = 'https://explorer-api.unique.network/v1/graphql';
47
+ // export const QUARTZ_SCAN_ENDPOINT = 'https://hasura-quartz.unique.network/v1/graphql';
44
48
  exports.PINATA_IPFS_GATEWAY = PINATA_IPFS_GATEWAY;
45
- const UNIQUE_SCAN_ENDPOINT = 'https://explorer-api.unique.network/v1/graphql';
49
+ const VARA_SCAN_ENDPOINT = 'https://nft-explorer.vara-network.io/graphql';
50
+ exports.VARA_SCAN_ENDPOINT = VARA_SCAN_ENDPOINT;
51
+ const UNIQUE_SCAN_ENDPOINT = 'https://api-unique.uniquescan.io/v1/graphql';
46
52
  exports.UNIQUE_SCAN_ENDPOINT = UNIQUE_SCAN_ENDPOINT;
47
- const QUARTZ_SCAN_ENDPOINT = 'https://hasura-quartz.unique.network/v1/graphql';
53
+ const QUARTZ_SCAN_ENDPOINT = 'https://api-quartz.uniquescan.io/v1/graphql';
48
54
  exports.QUARTZ_SCAN_ENDPOINT = QUARTZ_SCAN_ENDPOINT;
49
- const VARA_SCAN_ENDPOINT = 'https://nft-explorer.vara-network.io/graphql';
50
-
55
+ const OPAL_SCAN_ENDPOINT = 'https://api-opal.uniquescan.io/v1/graphql';
51
56
  // GATEWAY
52
- exports.VARA_SCAN_ENDPOINT = VARA_SCAN_ENDPOINT;
57
+ exports.OPAL_SCAN_ENDPOINT = OPAL_SCAN_ENDPOINT;
53
58
  const UNIQUE_IPFS_GATEWAY = 'https://ipfs.unique.network/ipfs/';
54
59
 
55
60
  // XOrigin
@@ -12,7 +12,7 @@ var _karura_nft = require("@subwallet/extension-base/koni/api/nft/karura_nft");
12
12
  var _ordinal_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/ordinal_nft"));
13
13
  var _rmrk_nft = require("@subwallet/extension-base/koni/api/nft/rmrk_nft");
14
14
  var _statemine_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/statemine_nft"));
15
- var _unique_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/unique_nft"));
15
+ var _unique_network_nft = require("@subwallet/extension-base/koni/api/nft/unique_network_nft");
16
16
  var _vara_nft = require("@subwallet/extension-base/koni/api/nft/vara_nft");
17
17
  var _wasm_nft = require("@subwallet/extension-base/koni/api/nft/wasm_nft");
18
18
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
@@ -22,6 +22,8 @@ var _statemint_nft = _interopRequireDefault(require("./statemint_nft"));
22
22
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
23
23
  // SPDX-License-Identifier: Apache-2.0
24
24
 
25
+ // import UniqueNftApi from '@subwallet/extension-base/koni/api/nft/unique_nft';
26
+
25
27
  function createSubstrateNftApi(chain, substrateApi, addresses) {
26
28
  const [substrateAddresses] = (0, _utils2.categoryAddresses)(addresses);
27
29
  if (_constants._NFT_CHAIN_GROUP.acala.includes(chain)) {
@@ -35,7 +37,7 @@ function createSubstrateNftApi(chain, substrateApi, addresses) {
35
37
  } else if (_constants._NFT_CHAIN_GROUP.statemint.includes(chain)) {
36
38
  return new _statemint_nft.default(substrateApi, substrateAddresses, chain);
37
39
  } else if (_constants._NFT_CHAIN_GROUP.unique_network.includes(chain)) {
38
- return new _unique_nft.default(substrateApi, substrateAddresses, chain);
40
+ return new _unique_network_nft.UniqueNftApi(chain, substrateAddresses);
39
41
  } else if (_constants._NFT_CHAIN_GROUP.bitcountry.includes(chain)) {
40
42
  return new _bit.BitCountryNftApi(substrateApi, substrateAddresses, chain);
41
43
  } else if (_constants._NFT_CHAIN_GROUP.vara.includes(chain)) {
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.acalaGetExtrinsic = acalaGetExtrinsic;
7
7
  exports.getNftTransferExtrinsic = getNftTransferExtrinsic;
8
8
  exports.isRecipientSelf = isRecipientSelf;
9
- exports.quartzGetExtrinsic = quartzGetExtrinsic;
10
9
  exports.rmrkGetExtrinsic = rmrkGetExtrinsic;
11
10
  exports.statemineGetExtrinsic = statemineGetExtrinsic;
12
11
  exports.statemintGetExtrinsic = statemintGetExtrinsic;
@@ -43,18 +42,6 @@ function rmrkGetExtrinsic(substrateApi, senderAddress, recipientAddress, params)
43
42
  }
44
43
  }
45
44
  function uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params) {
46
- try {
47
- const itemId = params.itemId;
48
- const collectionId = params.collectionId;
49
- return substrateApi.api.tx.nft.transfer({
50
- Substrate: recipientAddress
51
- }, collectionId, itemId, 1);
52
- } catch (e) {
53
- console.error(e);
54
- return null;
55
- }
56
- }
57
- function quartzGetExtrinsic(substrateApi, senderAddress, recipientAddress, params) {
58
45
  try {
59
46
  const itemId = params.itemId;
60
47
  const collectionId = params.collectionId;
@@ -94,12 +81,13 @@ function getNftTransferExtrinsic(networkKey, substrateApi, senderAddress, recipi
94
81
  return acalaGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
95
82
  case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.kusama:
96
83
  return rmrkGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
97
- case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.uniqueNft:
98
- return uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
99
- case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.quartz:
100
- return quartzGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
101
- case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.opal:
102
- return quartzGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
84
+ // temporary prevent send nfts on Unique network-based chains
85
+ // case SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.uniqueNft:
86
+ // return uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
87
+ // case SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.quartz:
88
+ // return uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
89
+ // case SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.opal:
90
+ // return uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
103
91
  case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.statemine:
104
92
  return statemineGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
105
93
  case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.statemint:
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.UniqueNftApi = void 0;
8
+ var _config = require("@subwallet/extension-base/koni/api/nft/config");
9
+ var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
10
+ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
11
+ var _utilCrypto = require("@polkadot/util-crypto");
12
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
13
+ // SPDX-License-Identifier: Apache-2.0
14
+
15
+ class UniqueNftApi extends _nft.BaseNftApi {
16
+ constructor(chain, addresses) {
17
+ super(chain, undefined, addresses);
18
+ }
19
+ handleProperties(nft) {
20
+ const propertiesMap = {};
21
+ const attRecord = nft.attributes;
22
+ if (attRecord) {
23
+ for (const item in attRecord) {
24
+ if (attRecord[item].name._.toLowerCase() === 'traits') {
25
+ const traits = [];
26
+ const traitValues = attRecord[item].value;
27
+ for (const trait in traitValues) {
28
+ traits.push(traitValues[trait]._);
29
+ }
30
+ propertiesMap.traits = {
31
+ value: traits
32
+ };
33
+ } else {
34
+ propertiesMap[attRecord[item].name._] = {
35
+ value: attRecord[item].value._
36
+ };
37
+ }
38
+ }
39
+ }
40
+ return propertiesMap;
41
+ }
42
+ static parseNftRequest(uniqueAddress) {
43
+ return {
44
+ query: `
45
+ query {
46
+ tokens(
47
+ limit: 99999
48
+ offset: 0
49
+ where: { owner: { _eq: "${uniqueAddress}" }, burned: { _eq: "false" }})
50
+ {
51
+ data {
52
+ collection_id
53
+ collection_name
54
+ collection_description
55
+ collection_cover
56
+ token_id
57
+ token_name
58
+ image
59
+ attributes
60
+ }
61
+ }
62
+ }
63
+ `
64
+ };
65
+ }
66
+ async getNftByAccount(address) {
67
+ var _result$data, _result$data$tokens;
68
+ let endpoint = '';
69
+ let uniqueAddress = '';
70
+
71
+ // Use exactly endpoint for each network
72
+ if (['unique_network'].includes(this.chain)) {
73
+ endpoint = _config.UNIQUE_SCAN_ENDPOINT;
74
+ uniqueAddress = (0, _utilCrypto.encodeAddress)((0, _utilCrypto.decodeAddress)(address), 7391);
75
+ // Unique network prefix: 7391
76
+ } else if (['quartz'].includes(this.chain)) {
77
+ endpoint = _config.QUARTZ_SCAN_ENDPOINT;
78
+ uniqueAddress = (0, _utilCrypto.encodeAddress)((0, _utilCrypto.decodeAddress)(address), 255);
79
+ // Quartz prefix: 255
80
+ } else if (['opal'].includes(this.chain)) {
81
+ endpoint = _config.OPAL_SCAN_ENDPOINT;
82
+ uniqueAddress = address;
83
+ // Opal address: Normal address
84
+ }
85
+
86
+ const resp = await (0, _crossFetch.default)(endpoint, {
87
+ method: 'post',
88
+ headers: {
89
+ 'Content-Type': 'application/json'
90
+ },
91
+ body: JSON.stringify(UniqueNftApi.parseNftRequest(uniqueAddress))
92
+ });
93
+ const result = await resp.json();
94
+
95
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
96
+ return result === null || result === void 0 ? void 0 : (_result$data = result.data) === null || _result$data === void 0 ? void 0 : (_result$data$tokens = _result$data.tokens) === null || _result$data$tokens === void 0 ? void 0 : _result$data$tokens.data;
97
+ }
98
+ async handleNfts(params) {
99
+ try {
100
+ await Promise.all(this.addresses.map(async address => {
101
+ const nfts = await this.getNftByAccount(address);
102
+ if (nfts) {
103
+ const collectionMap = {};
104
+ for (const nft of nfts) {
105
+ var _nft$image;
106
+ // Handle case rendering image on Quartz Network (Temporary solution)
107
+ if (this.chain === 'quartz' && nft.collection_id.toString() === '141') {
108
+ continue;
109
+ }
110
+
111
+ // Handle properties
112
+ const propertiesMap = this.handleProperties(nft);
113
+
114
+ // Update Nft information
115
+ const parsedNft = {
116
+ id: nft.token_id.toString(),
117
+ chain: this.chain,
118
+ owner: address,
119
+ name: nft.token_name,
120
+ image: this.parseUrl((_nft$image = nft.image) === null || _nft$image === void 0 ? void 0 : _nft$image.fullUrl),
121
+ description: nft.collection_description,
122
+ collectionId: nft.collection_id.toString(),
123
+ properties: propertiesMap
124
+ };
125
+ params.updateItem(this.chain, parsedNft, address);
126
+
127
+ // Update Collection information
128
+ if (!collectionMap[nft.collection_id.toString()]) {
129
+ const parsedCollection = {
130
+ collectionId: nft.collection_id.toString(),
131
+ chain: this.chain,
132
+ collectionName: nft.collection_name,
133
+ image: this.parseUrl(nft.collection_cover)
134
+ };
135
+ collectionMap[nft.collection_id.toString()] = parsedCollection;
136
+ params.updateCollection(this.chain, parsedCollection);
137
+ }
138
+ }
139
+ }
140
+ }));
141
+ } catch (e) {
142
+ console.error(`Failed to fetch ${this.chain} nft`, e);
143
+ }
144
+ }
145
+ async fetchNfts(params) {
146
+ try {
147
+ await this.handleNfts(params);
148
+ } catch (e) {
149
+ return 0;
150
+ }
151
+ return 1;
152
+ }
153
+ }
154
+ exports.UniqueNftApi = UniqueNftApi;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -8,9 +9,11 @@ exports.calcInflationRewardCurve = calcInflationRewardCurve;
8
9
  exports.calcInflationUniformEraPayout = calcInflationUniformEraPayout;
9
10
  exports.calculateAlephZeroValidatorReturn = calculateAlephZeroValidatorReturn;
10
11
  exports.calculateChainStakedReturn = calculateChainStakedReturn;
12
+ exports.calculateChainStakedReturnV2 = calculateChainStakedReturnV2;
11
13
  exports.calculateInflation = calculateInflation;
12
14
  exports.calculateTernoaValidatorReturn = calculateTernoaValidatorReturn;
13
15
  exports.calculateValidatorStakedReturn = calculateValidatorStakedReturn;
16
+ exports.getAvgValidatorEraReward = getAvgValidatorEraReward;
14
17
  exports.getBondedValidators = getBondedValidators;
15
18
  exports.getCommission = getCommission;
16
19
  exports.getEarningStatusByNominations = getEarningStatusByNominations;
@@ -20,6 +23,7 @@ exports.getMinStakeErrorMessage = exports.getMaxValidatorErrorMessage = void 0;
20
23
  exports.getParaCurrentInflation = getParaCurrentInflation;
21
24
  exports.getStakingAvailableActionsByChain = getStakingAvailableActionsByChain;
22
25
  exports.getStakingAvailableActionsByNominator = getStakingAvailableActionsByNominator;
26
+ exports.getSupportedDaysByHistoryDepth = getSupportedDaysByHistoryDepth;
23
27
  exports.getValidatorLabel = getValidatorLabel;
24
28
  exports.getWithdrawalInfo = getWithdrawalInfo;
25
29
  exports.getYieldAvailableActionsByPosition = getYieldAvailableActionsByPosition;
@@ -37,6 +41,7 @@ var _constants2 = require("@subwallet/extension-base/services/earning-service/co
37
41
  var _types = require("@subwallet/extension-base/types");
38
42
  var _utils2 = require("@subwallet/extension-base/utils");
39
43
  var _number = require("@subwallet/extension-base/utils/number");
44
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
40
45
  var _i18next = require("i18next");
41
46
  var _util = require("@polkadot/util");
42
47
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
@@ -102,6 +107,24 @@ function calculateChainStakedReturn(inflation, totalEraStake, totalIssuance, net
102
107
 
103
108
  return stakedReturn;
104
109
  }
110
+ function calculateChainStakedReturnV2(chainInfo, totalIssuance, erasPerDay, lastTotalStaked, validatorEraReward, isCompound) {
111
+ const DAYS_PER_YEAR = 365;
112
+ // @ts-ignore
113
+ const DECIMAL = chainInfo.substrateInfo.decimals;
114
+ const lastTotalStakedUnit = new _bignumber.default(lastTotalStaked).dividedBy(new _bignumber.default(10 ** DECIMAL));
115
+ const totalIssuanceUnit = new _bignumber.default(totalIssuance).dividedBy(new _bignumber.default(10 ** DECIMAL));
116
+ const supplyStaked = lastTotalStakedUnit.dividedBy(totalIssuanceUnit);
117
+ const dayRewardRate = validatorEraReward.multipliedBy(erasPerDay).dividedBy(totalIssuance).multipliedBy(100);
118
+ let inflationToStakers = new _bignumber.default(0);
119
+ if (!isCompound) {
120
+ inflationToStakers = dayRewardRate.multipliedBy(DAYS_PER_YEAR);
121
+ } else {
122
+ const multiplier = dayRewardRate.dividedBy(100).plus(1).exponentiatedBy(365);
123
+ inflationToStakers = new _bignumber.default(100).multipliedBy(multiplier).minus(100);
124
+ }
125
+ const averageRewardRate = inflationToStakers.dividedBy(supplyStaked);
126
+ return averageRewardRate.toNumber();
127
+ }
105
128
  function calculateAlephZeroValidatorReturn(chainStakedReturn, commission) {
106
129
  return chainStakedReturn * (100 - commission) / 100;
107
130
  }
@@ -343,6 +366,27 @@ function getValidatorLabel(chain) {
343
366
  }
344
367
  return 'Collator';
345
368
  }
369
+ function getAvgValidatorEraReward(supportedDays, eraRewardHistory) {
370
+ let sumEraReward = new _bignumber.default(0);
371
+ let failEra = 0;
372
+ for (const _item of eraRewardHistory) {
373
+ const item = _item.toString();
374
+ if (!item) {
375
+ failEra += 1;
376
+ } else {
377
+ const eraReward = new _bignumber.default(item);
378
+ sumEraReward = sumEraReward.plus(eraReward);
379
+ }
380
+ }
381
+ return sumEraReward.dividedBy(new _bignumber.default(supportedDays - failEra));
382
+ }
383
+ function getSupportedDaysByHistoryDepth(erasPerDay, maxSupportedEras) {
384
+ if (maxSupportedEras / erasPerDay > 30) {
385
+ return 30;
386
+ } else {
387
+ return 15;
388
+ }
389
+ }
346
390
  const getMinStakeErrorMessage = (chainInfo, bnMinStake) => {
347
391
  const tokenInfo = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
348
392
  const number = (0, _number.formatNumber)(bnMinStake.toString(), tokenInfo.decimals || 0, _number.balanceFormatter);
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -12,6 +13,7 @@ var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
12
13
  var _constants = require("@subwallet/extension-base/services/chain-service/constants");
13
14
  var _helper = require("@subwallet/extension-base/services/chain-service/helper");
14
15
  var _eth = require("@subwallet/extension-base/utils/eth");
16
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
15
17
  var _util = require("@polkadot/util");
16
18
  // Copyright 2019-2022 @subwallet/extension-base
17
19
  // SPDX-License-Identifier: Apache-2.0
@@ -45,20 +47,29 @@ const handleTransferBalanceResult = _ref => {
45
47
  };
46
48
  exports.handleTransferBalanceResult = handleTransferBalanceResult;
47
49
  async function getEVMTransactionObject(chainInfo, from, to, value, transferAll, evmApiMap) {
50
+ var _priority$maxFeePerGa, _priority$maxPriority;
48
51
  const networkKey = chainInfo.slug;
49
52
  const web3Api = evmApiMap[networkKey];
50
- const _price = await web3Api.api.eth.getGasPrice();
51
- const gasPrice = (0, _eth.recalculateGasPrice)(_price, chainInfo.slug);
53
+ const priority = await (0, _eth.calculateGasFeeParams)(web3Api, networkKey);
52
54
  const transactionObject = {
53
- gasPrice: gasPrice,
54
55
  to: to,
55
56
  value: value,
56
- from: from
57
+ from: from,
58
+ gasPrice: priority.gasPrice,
59
+ maxFeePerGas: (_priority$maxFeePerGa = priority.maxFeePerGas) === null || _priority$maxFeePerGa === void 0 ? void 0 : _priority$maxFeePerGa.toString(),
60
+ maxPriorityFeePerGas: (_priority$maxPriority = priority.maxPriorityFeePerGas) === null || _priority$maxPriority === void 0 ? void 0 : _priority$maxPriority.toString()
57
61
  };
58
62
  const gasLimit = await web3Api.api.eth.estimateGas(transactionObject);
59
63
  transactionObject.gas = gasLimit;
60
- const estimateFee = new _util.BN(gasLimit).mul(new _util.BN(gasPrice));
61
- transactionObject.value = transferAll ? new _util.BN(value).sub(estimateFee).toString() : value;
64
+ let estimateFee;
65
+ if (priority.baseGasFee) {
66
+ const priorityFee = priority.baseGasFee.plus(priority.maxPriorityFeePerGas);
67
+ const maxFee = priority.maxFeePerGas.gte(priorityFee) ? priority.maxFeePerGas : priorityFee;
68
+ estimateFee = maxFee.multipliedBy(gasLimit);
69
+ } else {
70
+ estimateFee = new _bignumber.default(priority.gasPrice).multipliedBy(gasLimit);
71
+ }
72
+ transactionObject.value = transferAll ? new _bignumber.default(value).minus(estimateFee).toString() : value;
62
73
  if (_constants.EVM_REFORMAT_DECIMALS.acala.includes(networkKey)) {
63
74
  const numberReplace = 18 - 12;
64
75
  transactionObject.value = transactionObject.value.substring(0, transactionObject.value.length - 6) + new Array(numberReplace).fill('0').join('');
@@ -66,53 +77,58 @@ async function getEVMTransactionObject(chainInfo, from, to, value, transferAll,
66
77
  return [transactionObject, transactionObject.value.toString()];
67
78
  }
68
79
  async function getERC20TransactionObject(assetAddress, chainInfo, from, to, value, transferAll, evmApiMap) {
80
+ var _priority$maxFeePerGa2, _priority$maxPriority2;
69
81
  const networkKey = chainInfo.slug;
70
82
  const evmApi = evmApiMap[networkKey];
71
83
  const erc20Contract = (0, _web.getERC20Contract)(networkKey, assetAddress, evmApiMap);
72
- let freeAmount = new _util.BN(0);
84
+ let freeAmount = new _bignumber.default(0);
73
85
  let transferValue = value;
74
86
  if (transferAll) {
75
87
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
76
88
  const bal = await erc20Contract.methods.balanceOf(from).call();
77
- freeAmount = new _util.BN(bal || '0');
78
- transferValue = freeAmount.toString() || '0';
89
+ freeAmount = new _bignumber.default(bal || '0');
90
+ transferValue = freeAmount.toFixed(0) || '0';
79
91
  }
80
92
  function generateTransferData(to, transferValue) {
81
93
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
82
94
  return erc20Contract.methods.transfer(to, transferValue).encodeABI();
83
95
  }
84
96
  const transferData = generateTransferData(to, transferValue);
85
- const [gasLimit, _price] = await Promise.all([
97
+ const [gasLimit, priority] = await Promise.all([
86
98
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
87
99
  erc20Contract.methods.transfer(to, transferValue).estimateGas({
88
100
  from
89
- }), evmApi.api.eth.getGasPrice()]);
90
- const gasPrice = (0, _eth.recalculateGasPrice)(_price, chainInfo.slug);
101
+ }), (0, _eth.calculateGasFeeParams)(evmApi, networkKey)]);
91
102
  const transactionObject = {
92
- gasPrice: gasPrice,
93
103
  gas: gasLimit,
94
104
  from,
105
+ value: '0',
95
106
  to: assetAddress,
96
- data: transferData
107
+ data: transferData,
108
+ gasPrice: priority.gasPrice,
109
+ maxFeePerGas: (_priority$maxFeePerGa2 = priority.maxFeePerGas) === null || _priority$maxFeePerGa2 === void 0 ? void 0 : _priority$maxFeePerGa2.toString(),
110
+ maxPriorityFeePerGas: (_priority$maxPriority2 = priority.maxPriorityFeePerGas) === null || _priority$maxPriority2 === void 0 ? void 0 : _priority$maxPriority2.toString()
97
111
  };
98
112
  if (transferAll) {
99
- transferValue = new _util.BN(freeAmount).toString();
113
+ transferValue = freeAmount.toFixed(0);
100
114
  transactionObject.data = generateTransferData(to, transferValue);
101
115
  }
102
116
  return [transactionObject, transferValue];
103
117
  }
104
118
  async function getERC721Transaction(web3Api, chain, contractAddress, senderAddress, recipientAddress, tokenId) {
119
+ var _priority$maxFeePerGa3, _priority$maxPriority3;
105
120
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
106
121
  const contract = new web3Api.api.eth.Contract(_helper._ERC721_ABI, contractAddress);
107
- const [gasLimit, _price] = await Promise.all([
122
+ const [gasLimit, priority] = await Promise.all([
108
123
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
109
124
  contract.methods.safeTransferFrom(senderAddress, recipientAddress, tokenId).estimateGas({
110
125
  from: senderAddress
111
- }), web3Api.api.eth.getGasPrice()]);
112
- const gasPrice = (0, _eth.recalculateGasPrice)(_price, chain);
126
+ }), (0, _eth.calculateGasFeeParams)(web3Api, chain)]);
113
127
  return {
114
128
  from: senderAddress,
115
- gasPrice,
129
+ gasPrice: priority.gasPrice,
130
+ maxFeePerGas: (_priority$maxFeePerGa3 = priority.maxFeePerGas) === null || _priority$maxFeePerGa3 === void 0 ? void 0 : _priority$maxFeePerGa3.toString(),
131
+ maxPriorityFeePerGas: (_priority$maxPriority3 = priority.maxPriorityFeePerGas) === null || _priority$maxPriority3 === void 0 ? void 0 : _priority$maxPriority3.toString(),
116
132
  gas: gasLimit,
117
133
  to: contractAddress,
118
134
  value: '0x00',
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -10,6 +11,8 @@ exports.syntheticSelectedValidators = void 0;
10
11
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
11
12
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
12
13
  var _types = require("@subwallet/extension-base/types");
14
+ var _utils2 = require("@subwallet/extension-base/utils");
15
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
13
16
  // Copyright 2019-2022 @subwallet/extension-base
14
17
  // SPDX-License-Identifier: Apache-2.0
15
18
 
@@ -40,7 +43,7 @@ function convertDerivativeToOriginToken(amount, poolInfo, derivativeTokenInfo, o
40
43
  const derivativeDecimals = (0, _utils._getAssetDecimals)(derivativeTokenInfo);
41
44
  const originDecimals = (0, _utils._getAssetDecimals)(originTokenInfo);
42
45
  const exchangeRate = ((_poolInfo$statistic = poolInfo.statistic) === null || _poolInfo$statistic === void 0 ? void 0 : (_poolInfo$statistic$a = _poolInfo$statistic.assetEarning) === null || _poolInfo$statistic$a === void 0 ? void 0 : _poolInfo$statistic$a[0].exchangeRate) || 1;
43
- const formattedAmount = parseInt(amount) / 10 ** derivativeDecimals; // TODO: decimals
44
- const minAmount = formattedAmount * exchangeRate;
45
- return Math.floor(minAmount * 10 ** originDecimals);
46
+ const formattedAmount = new _bignumber.default(amount).dividedBy(_utils2.BN_TEN.pow(derivativeDecimals)); // TODO: decimals
47
+ const minAmount = formattedAmount.multipliedBy(exchangeRate);
48
+ return minAmount.multipliedBy(_utils2.BN_TEN.pow(originDecimals)).toFixed(0);
46
49
  }