rubic-sdk 4.45.3 → 4.47.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 (163) hide show
  1. package/dist/rubic-sdk.min.js +3816 -17
  2. package/dist/rubic-sdk.min.js.map +1 -1
  3. package/lib/common/tokens/token.js +1 -1
  4. package/lib/common/tokens/token.js.map +1 -1
  5. package/lib/core/blockchain/models/blockchain-name.d.ts +2 -0
  6. package/lib/core/blockchain/models/blockchain-name.js +1 -0
  7. package/lib/core/blockchain/models/blockchain-name.js.map +1 -1
  8. package/lib/core/blockchain/models/chain-type.d.ts +1 -1
  9. package/lib/core/blockchain/models/chain-type.js +1 -1
  10. package/lib/core/blockchain/models/chain-type.js.map +1 -1
  11. package/lib/core/blockchain/web3-private-service/models/web-private-supported-blockchain.d.ts +1 -1
  12. package/lib/core/blockchain/web3-public-service/models/web3-public-storage.d.ts +1 -1
  13. package/lib/features/common/providers/rango/constants/rango-api-common.d.ts +2 -0
  14. package/lib/features/common/providers/rango/constants/rango-api-common.js +6 -0
  15. package/lib/features/common/providers/rango/constants/rango-api-common.js.map +1 -0
  16. package/lib/features/common/providers/rango/constants/rango-contract-address.d.ts +3 -0
  17. package/lib/features/common/providers/rango/constants/rango-contract-address.js +73 -0
  18. package/lib/features/common/providers/rango/constants/rango-contract-address.js.map +1 -0
  19. package/lib/features/common/providers/rango/models/rango-api-best-route-types.d.ts +54 -0
  20. package/lib/features/common/providers/rango/models/rango-api-best-route-types.js +3 -0
  21. package/lib/features/common/providers/rango/models/rango-api-best-route-types.js.map +1 -0
  22. package/lib/features/common/providers/rango/models/rango-api-blockchain-names.d.ts +3 -0
  23. package/lib/features/common/providers/rango/models/rango-api-blockchain-names.js +20 -0
  24. package/lib/features/common/providers/rango/models/rango-api-blockchain-names.js.map +1 -0
  25. package/lib/features/common/providers/rango/models/rango-api-common-types.d.ts +26 -0
  26. package/lib/features/common/providers/rango/models/rango-api-common-types.js +10 -0
  27. package/lib/features/common/providers/rango/models/rango-api-common-types.js.map +1 -0
  28. package/lib/features/common/providers/rango/models/rango-api-status-types.d.ts +38 -0
  29. package/lib/features/common/providers/rango/models/rango-api-status-types.js +9 -0
  30. package/lib/features/common/providers/rango/models/rango-api-status-types.js.map +1 -0
  31. package/lib/features/common/providers/rango/models/rango-api-swap-types.d.ts +56 -0
  32. package/lib/features/common/providers/rango/models/rango-api-swap-types.js +3 -0
  33. package/lib/features/common/providers/rango/models/rango-api-swap-types.js.map +1 -0
  34. package/lib/features/common/providers/rango/models/rango-api-symbol-names.d.ts +3 -0
  35. package/lib/features/common/providers/rango/models/rango-api-symbol-names.js +20 -0
  36. package/lib/features/common/providers/rango/models/rango-api-symbol-names.js.map +1 -0
  37. package/lib/features/common/providers/rango/models/rango-api-trade-types.d.ts +125 -0
  38. package/lib/features/common/providers/rango/models/rango-api-trade-types.js +69 -0
  39. package/lib/features/common/providers/rango/models/rango-api-trade-types.js.map +1 -0
  40. package/lib/features/common/providers/rango/models/rango-parser-types.d.ts +37 -0
  41. package/lib/features/common/providers/rango/models/rango-parser-types.js +3 -0
  42. package/lib/features/common/providers/rango/models/rango-parser-types.js.map +1 -0
  43. package/lib/features/common/providers/rango/models/rango-supported-blockchains.d.ts +2 -0
  44. package/lib/features/common/providers/rango/models/rango-supported-blockchains.js +20 -0
  45. package/lib/features/common/providers/rango/models/rango-supported-blockchains.js.map +1 -0
  46. package/lib/features/common/providers/rango/services/rango-parser.d.ts +13 -0
  47. package/lib/features/common/providers/rango/services/rango-parser.js +56 -0
  48. package/lib/features/common/providers/rango/services/rango-parser.js.map +1 -0
  49. package/lib/features/common/providers/rango/utils/rango-utils.d.ts +18 -0
  50. package/lib/features/common/providers/rango/utils/rango-utils.js +63 -0
  51. package/lib/features/common/providers/rango/utils/rango-utils.js.map +1 -0
  52. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.d.ts +3 -1
  53. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.js +5 -1
  54. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.js.map +1 -1
  55. package/lib/features/cross-chain/calculation-manager/models/cross-chain-options.d.ts +5 -0
  56. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.d.ts +2 -0
  57. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.js +3 -1
  58. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.js.map +1 -1
  59. package/lib/features/cross-chain/calculation-manager/providers/changenow-provider/changenow-cross-chain-trade.d.ts +1 -1
  60. package/lib/features/cross-chain/calculation-manager/providers/common/cross-chain-trade.d.ts +1 -0
  61. package/lib/features/cross-chain/calculation-manager/providers/common/cross-chain-trade.js.map +1 -1
  62. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/constants/evm-common-cross-chain-abi.js +26 -8
  63. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/constants/evm-common-cross-chain-abi.js.map +1 -1
  64. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/evm-cross-chain-trade.d.ts +4 -0
  65. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/evm-cross-chain-trade.js +4 -0
  66. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/evm-cross-chain-trade.js.map +1 -1
  67. package/lib/features/cross-chain/calculation-manager/providers/common/models/bridge-type.d.ts +9 -2
  68. package/lib/features/cross-chain/calculation-manager/providers/common/models/default-bridge-type.d.ts +8 -1
  69. package/lib/features/cross-chain/calculation-manager/providers/common/models/default-bridge-type.js +6 -1
  70. package/lib/features/cross-chain/calculation-manager/providers/common/models/default-bridge-type.js.map +1 -1
  71. package/lib/features/cross-chain/calculation-manager/providers/common/models/rubicStep.d.ts +2 -2
  72. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/erc-677-abi.d.ts +2 -0
  73. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/erc-677-abi.js +17 -0
  74. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/erc-677-abi.js.map +1 -0
  75. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/fee-manager-abi.d.ts +2 -0
  76. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/fee-manager-abi.js +61 -0
  77. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/fee-manager-abi.js.map +1 -0
  78. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/foreign-bridge-abi.d.ts +2 -0
  79. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/foreign-bridge-abi.js +72 -0
  80. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/foreign-bridge-abi.js.map +1 -0
  81. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/home-bridge-abi.d.ts +2 -0
  82. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/home-bridge-abi.js +1390 -0
  83. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/home-bridge-abi.js.map +1 -0
  84. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/native-bridge-abi.d.ts +2 -0
  85. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/native-bridge-abi.js +14 -0
  86. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/native-bridge-abi.js.map +1 -0
  87. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/pulse-chain-contract-address.d.ts +6 -0
  88. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/pulse-chain-contract-address.js +16 -0
  89. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/pulse-chain-contract-address.js.map +1 -0
  90. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/pulse-chain-supported-blockchains.d.ts +2 -0
  91. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/pulse-chain-supported-blockchains.js +9 -0
  92. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/constants/pulse-chain-supported-blockchains.js.map +1 -0
  93. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/bridge-manager.d.ts +7 -0
  94. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/bridge-manager.js +15 -0
  95. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/bridge-manager.js.map +1 -0
  96. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/foreign-bridge.d.ts +14 -0
  97. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/foreign-bridge.js +54 -0
  98. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/foreign-bridge.js.map +1 -0
  99. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/home-bridge.d.ts +14 -0
  100. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/home-bridge.js +54 -0
  101. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/home-bridge.js.map +1 -0
  102. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/omni-bridge.d.ts +108 -0
  103. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/omni-bridge.js +112 -0
  104. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/omni-bridge-entities/omni-bridge.js.map +1 -0
  105. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-provider.d.ts +19 -0
  106. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-provider.js +182 -0
  107. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-provider.js.map +1 -0
  108. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-trade.d.ts +55 -0
  109. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-trade.js +232 -0
  110. package/lib/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-trade.js.map +1 -0
  111. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-api-types.d.ts +8 -0
  112. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-api-types.js +3 -0
  113. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-api-types.js.map +1 -0
  114. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-parser-types.d.ts +32 -0
  115. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-parser-types.js +3 -0
  116. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-parser-types.js.map +1 -0
  117. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/rango-cross-chain-provider.d.ts +21 -0
  118. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/rango-cross-chain-provider.js +111 -0
  119. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/rango-cross-chain-provider.js.map +1 -0
  120. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/rango-cross-chain-trade.d.ts +48 -0
  121. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/rango-cross-chain-trade.js +210 -0
  122. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/rango-cross-chain-trade.js.map +1 -0
  123. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/services/rango-cross-chain-api-service.d.ts +12 -0
  124. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/services/rango-cross-chain-api-service.js +36 -0
  125. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/services/rango-cross-chain-api-service.js.map +1 -0
  126. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/services/rango-cross-chain-params-parser.d.ts +4 -0
  127. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/services/rango-cross-chain-params-parser.js +37 -0
  128. package/lib/features/cross-chain/calculation-manager/providers/rango-provider/services/rango-cross-chain-params-parser.js.map +1 -0
  129. package/lib/features/cross-chain/calculation-manager/providers/stargate-provider/stargate-cross-chain-trade.d.ts +1 -2
  130. package/lib/features/cross-chain/calculation-manager/providers/stargate-provider/stargate-cross-chain-trade.js.map +1 -1
  131. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/symbiosis-cross-chain-provider.js +1 -1
  132. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/symbiosis-cross-chain-provider.js.map +1 -1
  133. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.d.ts +2 -0
  134. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.js +39 -1
  135. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.js.map +1 -1
  136. package/lib/features/cross-chain/status-manager/models/rubic-backend-ps-status.d.ts +6 -0
  137. package/lib/features/cross-chain/status-manager/models/rubic-backend-ps-status.js +3 -0
  138. package/lib/features/cross-chain/status-manager/models/rubic-backend-ps-status.js.map +1 -0
  139. package/lib/features/on-chain/calculation-manager/on-chain-manager.d.ts +3 -0
  140. package/lib/features/on-chain/calculation-manager/on-chain-manager.js +34 -2
  141. package/lib/features/on-chain/calculation-manager/on-chain-manager.js.map +1 -1
  142. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.d.ts +14 -0
  143. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.js +14 -0
  144. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.js.map +1 -1
  145. package/lib/features/on-chain/calculation-manager/providers/rango/models/rango-on-chain-disabled-providers.d.ts +2 -0
  146. package/lib/features/on-chain/calculation-manager/providers/rango/models/rango-on-chain-disabled-providers.js +19 -0
  147. package/lib/features/on-chain/calculation-manager/providers/rango/models/rango-on-chain-disabled-providers.js.map +1 -0
  148. package/lib/features/on-chain/calculation-manager/providers/rango/models/rango-on-chain-trade-types.d.ts +5 -0
  149. package/lib/features/on-chain/calculation-manager/providers/rango/models/rango-on-chain-trade-types.js +3 -0
  150. package/lib/features/on-chain/calculation-manager/providers/rango/models/rango-on-chain-trade-types.js.map +1 -0
  151. package/lib/features/on-chain/calculation-manager/providers/rango/rango-on-chain-provider.d.ts +17 -0
  152. package/lib/features/on-chain/calculation-manager/providers/rango/rango-on-chain-provider.js +105 -0
  153. package/lib/features/on-chain/calculation-manager/providers/rango/rango-on-chain-provider.js.map +1 -0
  154. package/lib/features/on-chain/calculation-manager/providers/rango/rango-on-chain-trade.d.ts +22 -0
  155. package/lib/features/on-chain/calculation-manager/providers/rango/rango-on-chain-trade.js +114 -0
  156. package/lib/features/on-chain/calculation-manager/providers/rango/rango-on-chain-trade.js.map +1 -0
  157. package/lib/features/on-chain/calculation-manager/providers/rango/services/rango-on-chain-api-service.d.ts +12 -0
  158. package/lib/features/on-chain/calculation-manager/providers/rango/services/rango-on-chain-api-service.js +36 -0
  159. package/lib/features/on-chain/calculation-manager/providers/rango/services/rango-on-chain-api-service.js.map +1 -0
  160. package/lib/index.d.ts +38 -0
  161. package/lib/index.js +38 -0
  162. package/lib/index.js.map +1 -1
  163. package/package.json +1 -2
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PulseChainCrossChainProvider = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const errors_1 = require("../../../../../common/errors");
9
+ const tokens_1 = require("../../../../../common/tokens");
10
+ const blockchain_1 = require("../../../../../common/utils/blockchain");
11
+ const blockchain_name_1 = require("../../../../../core/blockchain/models/blockchain-name");
12
+ const web3_pure_1 = require("../../../../../core/blockchain/web3-pure/web3-pure");
13
+ const get_from_without_fee_1 = require("../../../../common/utils/get-from-without-fee");
14
+ const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type");
15
+ const cross_chain_provider_1 = require("../common/cross-chain-provider");
16
+ const proxy_cross_chain_evm_trade_1 = require("../common/proxy-cross-chain-evm-facade/proxy-cross-chain-evm-trade");
17
+ const pulse_chain_supported_blockchains_1 = require("./constants/pulse-chain-supported-blockchains");
18
+ const bridge_manager_1 = require("./omni-bridge-entities/bridge-manager");
19
+ const pulse_chain_cross_chain_trade_1 = require("./pulse-chain-cross-chain-trade");
20
+ const typed_trade_providers_1 = require("../../../../on-chain/calculation-manager/constants/trade-providers/typed-trade-providers");
21
+ class PulseChainCrossChainProvider extends cross_chain_provider_1.CrossChainProvider {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.PULSE_CHAIN_BRIDGE;
25
+ }
26
+ isSupportedBlockchain(blockchain) {
27
+ return pulse_chain_supported_blockchains_1.pulseChainSupportedBlockchains.some(chain => chain === blockchain);
28
+ }
29
+ async calculate(fromToken, toToken, options) {
30
+ const fromBlockchain = fromToken.blockchain;
31
+ const toBlockchain = toToken.blockchain;
32
+ const useProxy = options?.useProxy?.[this.type] ?? true;
33
+ if (!this.areSupportedBlockchains(fromBlockchain, toBlockchain) ||
34
+ // @TODO Remove after home bridge development
35
+ fromToken.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.PULSECHAIN) {
36
+ return {
37
+ trade: null,
38
+ error: new errors_1.NotSupportedTokensError(),
39
+ tradeType: this.type
40
+ };
41
+ }
42
+ const feeInfo = await this.getFeeInfo(fromBlockchain, options.providerAddress, fromToken, useProxy);
43
+ try {
44
+ const sourceBridgeManager = bridge_manager_1.BridgeManager.createBridge(fromToken, toToken);
45
+ const targetBridgeManager = bridge_manager_1.BridgeManager.createBridge(fromToken, toToken);
46
+ const fromTokenAddress = this.getTokenAddress(fromToken);
47
+ const toTokenAddress = this.getTokenAddress(toToken);
48
+ const tokenRegistered = await sourceBridgeManager.isTokenRegistered(fromTokenAddress);
49
+ const targetTokenAddress = await sourceBridgeManager.getBridgeToken(fromTokenAddress);
50
+ if (!(0, blockchain_1.compareAddresses)(toTokenAddress, targetTokenAddress)) {
51
+ return {
52
+ trade: null,
53
+ error: new errors_1.NotSupportedTokensError(),
54
+ tradeType: this.type
55
+ };
56
+ }
57
+ const fromWithoutFee = (0, get_from_without_fee_1.getFromWithoutFee)(fromToken, feeInfo.rubicProxy?.platformFee?.percent);
58
+ let onChainTrade = null;
59
+ let transitTokenAmount = fromWithoutFee.tokenAmount;
60
+ let transitMinAmount = transitTokenAmount;
61
+ let transitToken = fromWithoutFee;
62
+ if (!tokenRegistered) {
63
+ if (!useProxy) {
64
+ return {
65
+ trade: null,
66
+ error: new errors_1.NotSupportedTokensError(),
67
+ tradeType: this.type
68
+ };
69
+ }
70
+ const transitTokenAddress = await targetBridgeManager.getBridgeToken(toToken.address);
71
+ onChainTrade = await this.getOnChainTrade(fromWithoutFee, [], options.slippageTolerance, transitTokenAddress);
72
+ if (!onChainTrade) {
73
+ return {
74
+ trade: null,
75
+ error: new errors_1.NotSupportedTokensError(),
76
+ tradeType: this.type
77
+ };
78
+ }
79
+ transitTokenAmount = onChainTrade.to.tokenAmount;
80
+ transitMinAmount = onChainTrade.toTokenAmountMin.tokenAmount;
81
+ transitToken = onChainTrade.to;
82
+ }
83
+ const targetAmount = await sourceBridgeManager.calculateAmount(toToken.address, web3_pure_1.Web3Pure.toWei(transitTokenAmount, transitToken.decimals));
84
+ const targetAmountMin = await sourceBridgeManager.calculateAmount(toToken.address, web3_pure_1.Web3Pure.toWei(transitMinAmount, transitToken.decimals));
85
+ const amountsErrors = await this.getMinMaxAmountsErrors(fromTokenAddress, sourceBridgeManager, transitToken);
86
+ if (!targetAmount) {
87
+ throw new errors_1.RubicSdkError('Can not estimate trade');
88
+ }
89
+ const to = new tokens_1.PriceTokenAmount({
90
+ ...toToken.asStruct,
91
+ tokenAmount: web3_pure_1.Web3Pure.fromWei(targetAmount, toToken.decimals)
92
+ });
93
+ const gasData = options.gasCalculation === 'enabled'
94
+ ? await pulse_chain_cross_chain_trade_1.PulseChainCrossChainTrade.getGasData(fromToken, to, onChainTrade, feeInfo, targetAmountMin, options.providerAddress, options.receiverAddress || this.getWalletAddress(fromToken.blockchain), sourceBridgeManager.sourceBridgeAddress, tokenRegistered)
95
+ : null;
96
+ return {
97
+ trade: new pulse_chain_cross_chain_trade_1.PulseChainCrossChainTrade({
98
+ from: fromToken,
99
+ to,
100
+ gasData,
101
+ slippage: options.slippageTolerance,
102
+ feeInfo: feeInfo,
103
+ toTokenAmountMin: targetAmountMin,
104
+ onChainTrade,
105
+ priceImpact: fromToken.calculatePriceImpactPercent(to),
106
+ routerAddress: sourceBridgeManager.sourceBridgeAddress,
107
+ tokenRegistered
108
+ }, options.providerAddress, await this.getRoutePath(fromToken, transitToken, to, onChainTrade)),
109
+ error: amountsErrors,
110
+ tradeType: this.type
111
+ };
112
+ }
113
+ catch (err) {
114
+ const rubicSdkError = cross_chain_provider_1.CrossChainProvider.parseError(err);
115
+ return {
116
+ trade: null,
117
+ error: rubicSdkError,
118
+ tradeType: this.type
119
+ };
120
+ }
121
+ }
122
+ async getOnChainTrade(from, _availableDexes, slippageTolerance, transitTokenAddress) {
123
+ const fromBlockchain = from.blockchain;
124
+ const dexes = Object.values(typed_trade_providers_1.typedTradeProviders[fromBlockchain]).filter(dex => dex.supportReceiverAddress);
125
+ const to = await tokens_1.PriceToken.createToken({
126
+ address: transitTokenAddress,
127
+ blockchain: fromBlockchain
128
+ });
129
+ const onChainTrades = (await Promise.allSettled(dexes.map(dex => dex.calculate(from, to, {
130
+ slippageTolerance,
131
+ gasCalculation: 'disabled',
132
+ useProxy: false
133
+ }))))
134
+ .filter(value => value.status === 'fulfilled')
135
+ .map(value => value.value)
136
+ .sort((a, b) => b.to.tokenAmount.comparedTo(a.to.tokenAmount));
137
+ if (!onChainTrades.length) {
138
+ return null;
139
+ }
140
+ return onChainTrades[0];
141
+ }
142
+ async getMinMaxAmountsErrors(fromTokenAddress, fromBridgeManager, fromToken) {
143
+ try {
144
+ const minAmountWei = await fromBridgeManager.getMinAmountToken(fromTokenAddress);
145
+ const minAmount = new bignumber_js_1.default(minAmountWei);
146
+ if (minAmount.gte(fromToken.stringWeiAmount)) {
147
+ return new errors_1.MinAmountError(web3_pure_1.Web3Pure.fromWei(minAmount, fromToken.decimals), fromToken.symbol);
148
+ }
149
+ }
150
+ catch {
151
+ return undefined;
152
+ }
153
+ return undefined;
154
+ }
155
+ async getFeeInfo(fromBlockchain, providerAddress, percentFeeToken, useProxy) {
156
+ return proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getFeeInfo(fromBlockchain, providerAddress, percentFeeToken, useProxy);
157
+ }
158
+ async getRoutePath(from, transit, to, onChainTrade) {
159
+ const routePath = [];
160
+ if (onChainTrade) {
161
+ routePath.push({
162
+ type: 'on-chain',
163
+ path: [from, transit],
164
+ provider: onChainTrade.type
165
+ });
166
+ }
167
+ routePath.push({
168
+ type: 'cross-chain',
169
+ path: [transit, to],
170
+ provider: cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.PULSE_CHAIN_BRIDGE
171
+ });
172
+ return routePath;
173
+ }
174
+ getTokenAddress(token) {
175
+ if (token.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ETHEREUM) {
176
+ return token.isNative ? '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' : token.address;
177
+ }
178
+ return token.isNative ? '0xA1077a294dDE1B09bB078844df40758a5D0f9a27' : token.address;
179
+ }
180
+ }
181
+ exports.PulseChainCrossChainProvider = PulseChainCrossChainProvider;
182
+ //# sourceMappingURL=pulse-chain-cross-chain-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulse-chain-cross-chain-provider.js","sourceRoot":"","sources":["../../../../../../src/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PriceTokenAmount } from "../../../../../common/tokens";
3
+ import { EvmBlockchainName } from "../../../../../core/blockchain/models/blockchain-name";
4
+ import { ContractParams } from "../../../../common/models/contract-params";
5
+ import { SwapTransactionOptions } from "../../../../common/models/swap-transaction-options";
6
+ import { EvmCrossChainTrade } from "../common/emv-cross-chain-trade/evm-cross-chain-trade";
7
+ import { GasData } from "../common/emv-cross-chain-trade/models/gas-data";
8
+ import { FeeInfo } from "../common/models/fee-info";
9
+ import { GetContractParamsOptions } from "../common/models/get-contract-params-options";
10
+ import { OnChainSubtype } from "../common/models/on-chain-subtype";
11
+ import { RubicStep } from "../common/models/rubicStep";
12
+ import { TradeInfo } from "../common/models/trade-info";
13
+ import { EvmOnChainTrade } from "../../../../on-chain/calculation-manager/providers/common/on-chain-trade/evm-on-chain-trade/evm-on-chain-trade";
14
+ export declare class PulseChainCrossChainTrade extends EvmCrossChainTrade {
15
+ /** @internal */
16
+ static getGasData(from: PriceTokenAmount<EvmBlockchainName>, toToken: PriceTokenAmount<EvmBlockchainName>, onChainTrade: EvmOnChainTrade | null, feeInfo: FeeInfo, toTokenAmountMin: BigNumber, providerAddress: string, receiverAddress: string, routerAddress: string, tokenRegistered: boolean): Promise<GasData | null>;
17
+ readonly type: "pulse_chain_bridge";
18
+ readonly isAggregator = false;
19
+ readonly bridgeType: "pulse_chain_bridge";
20
+ readonly from: PriceTokenAmount<EvmBlockchainName>;
21
+ readonly to: PriceTokenAmount<EvmBlockchainName>;
22
+ readonly toTokenAmountMin: BigNumber;
23
+ readonly priceImpact: number | null;
24
+ readonly gasData: GasData | null;
25
+ private readonly routerAddress;
26
+ private get fromBlockchain();
27
+ protected get fromContractAddress(): string;
28
+ readonly feeInfo: FeeInfo;
29
+ private readonly slippage;
30
+ readonly onChainSubtype: OnChainSubtype;
31
+ readonly onChainTrade: EvmOnChainTrade | null;
32
+ protected get methodName(): string;
33
+ private readonly isTokenRegistered;
34
+ private get isErc677();
35
+ constructor(crossChainTrade: {
36
+ from: PriceTokenAmount<EvmBlockchainName>;
37
+ to: PriceTokenAmount<EvmBlockchainName>;
38
+ gasData: GasData | null;
39
+ slippage: number;
40
+ feeInfo: FeeInfo;
41
+ toTokenAmountMin: BigNumber;
42
+ onChainTrade: EvmOnChainTrade | null;
43
+ priceImpact: number | null;
44
+ routerAddress: string;
45
+ tokenRegistered: boolean;
46
+ }, providerAddress: string, routePath: RubicStep[]);
47
+ needApprove(): Promise<boolean>;
48
+ protected swapDirect(options?: SwapTransactionOptions): Promise<string | never>;
49
+ getContractParams(options: GetContractParamsOptions): Promise<ContractParams>;
50
+ getTradeAmountRatio(fromUsd: BigNumber): BigNumber;
51
+ getTradeInfo(): TradeInfo;
52
+ private getTransactionRequest;
53
+ private getTokenAddress;
54
+ private getProviderDataForErc677;
55
+ }
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PulseChainCrossChainTrade = void 0;
4
+ const blockchain_name_1 = require("../../../../../core/blockchain/models/blockchain-name");
5
+ const evm_web3_pure_1 = require("../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure");
6
+ const web3_pure_1 = require("../../../../../core/blockchain/web3-pure/web3-pure");
7
+ const injector_1 = require("../../../../../core/injector/injector");
8
+ const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type");
9
+ const rubic_proxy_contract_address_1 = require("../common/constants/rubic-proxy-contract-address");
10
+ const evm_common_cross_chain_abi_1 = require("../common/emv-cross-chain-trade/constants/evm-common-cross-chain-abi");
11
+ const gateway_rubic_cross_chain_abi_1 = require("../common/emv-cross-chain-trade/constants/gateway-rubic-cross-chain-abi");
12
+ const evm_cross_chain_trade_1 = require("../common/emv-cross-chain-trade/evm-cross-chain-trade");
13
+ const bridge_type_1 = require("../common/models/bridge-type");
14
+ const proxy_cross_chain_evm_trade_1 = require("../common/proxy-cross-chain-evm-facade/proxy-cross-chain-evm-trade");
15
+ const bridge_manager_1 = require("./omni-bridge-entities/bridge-manager");
16
+ const omni_bridge_1 = require("./omni-bridge-entities/omni-bridge");
17
+ const convert_gas_price_1 = require("../../utils/convert-gas-price");
18
+ class PulseChainCrossChainTrade extends evm_cross_chain_trade_1.EvmCrossChainTrade {
19
+ /** @internal */
20
+ static async getGasData(from, toToken, onChainTrade, feeInfo, toTokenAmountMin, providerAddress, receiverAddress, routerAddress, tokenRegistered) {
21
+ const fromBlockchain = from.blockchain;
22
+ const walletAddress = injector_1.Injector.web3PrivateService.getWeb3PrivateByBlockchain(fromBlockchain).address;
23
+ if (!walletAddress) {
24
+ return null;
25
+ }
26
+ try {
27
+ let gasLimit;
28
+ let gasDetails;
29
+ const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(fromBlockchain);
30
+ if (feeInfo.rubicProxy?.fixedFee?.amount.gt(0)) {
31
+ const { contractAddress, contractAbi, methodName, methodArguments, value } = await new PulseChainCrossChainTrade({
32
+ from,
33
+ to: toToken,
34
+ gasData: null,
35
+ priceImpact: 0,
36
+ slippage: 0,
37
+ feeInfo: feeInfo,
38
+ toTokenAmountMin,
39
+ onChainTrade: onChainTrade,
40
+ routerAddress,
41
+ tokenRegistered
42
+ }, providerAddress || evm_web3_pure_1.EvmWeb3Pure.EMPTY_ADDRESS, []).getContractParams({});
43
+ const [proxyGasLimit, proxyGasDetails] = await Promise.all([
44
+ web3Public.getEstimatedGas(contractAbi, contractAddress, methodName, methodArguments, walletAddress, value),
45
+ (0, convert_gas_price_1.convertGasDataToBN)(await injector_1.Injector.gasPriceApi.getGasPrice(from.blockchain))
46
+ ]);
47
+ gasLimit = proxyGasLimit;
48
+ gasDetails = proxyGasDetails;
49
+ }
50
+ else {
51
+ const { data, to, value } = new PulseChainCrossChainTrade({
52
+ from,
53
+ to: toToken,
54
+ gasData: null,
55
+ priceImpact: 0,
56
+ slippage: 0,
57
+ feeInfo: feeInfo,
58
+ toTokenAmountMin,
59
+ onChainTrade: onChainTrade,
60
+ routerAddress,
61
+ tokenRegistered
62
+ }, providerAddress || evm_web3_pure_1.EvmWeb3Pure.EMPTY_ADDRESS, []).getTransactionRequest(receiverAddress, onChainTrade ? onChainTrade.to : from, toToken);
63
+ const defaultGasLimit = await web3Public.getEstimatedGasByData(walletAddress, to, {
64
+ data,
65
+ value
66
+ });
67
+ const defaultGasDetails = (0, convert_gas_price_1.convertGasDataToBN)(await injector_1.Injector.gasPriceApi.getGasPrice(from.blockchain));
68
+ gasLimit = defaultGasLimit;
69
+ gasDetails = defaultGasDetails;
70
+ }
71
+ if (!gasLimit?.isFinite()) {
72
+ return null;
73
+ }
74
+ const increasedGasLimit = web3_pure_1.Web3Pure.calculateGasMargin(gasLimit, 1.2);
75
+ return {
76
+ gasLimit: increasedGasLimit,
77
+ ...gasDetails
78
+ };
79
+ }
80
+ catch (_err) {
81
+ return null;
82
+ }
83
+ }
84
+ get fromBlockchain() {
85
+ return this.from.blockchain;
86
+ }
87
+ get fromContractAddress() {
88
+ return this.isProxyTrade
89
+ ? rubic_proxy_contract_address_1.rubicProxyContractAddress[this.fromBlockchain].gateway
90
+ : this.routerAddress;
91
+ }
92
+ get methodName() {
93
+ if (this.isErc677 && this.from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ETHEREUM) {
94
+ return this.onChainTrade
95
+ ? 'swapAndStartBridgeTokensViaTransferAndCall'
96
+ : 'startBridgeTokensViaTransferAndCall';
97
+ }
98
+ return this.onChainTrade
99
+ ? 'swapAndStartBridgeTokensViaGenericCrossChain'
100
+ : 'startBridgeTokensViaGenericCrossChain';
101
+ }
102
+ get isErc677() {
103
+ return !this.isTokenRegistered || omni_bridge_1.OmniBridge.isCustomWrap(this.from);
104
+ }
105
+ constructor(crossChainTrade, providerAddress, routePath) {
106
+ super(providerAddress, routePath);
107
+ this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.PULSE_CHAIN_BRIDGE;
108
+ this.isAggregator = false;
109
+ this.bridgeType = bridge_type_1.BRIDGE_TYPE.PULSE_CHAIN_BRIDGE;
110
+ this.from = crossChainTrade.from;
111
+ this.to = crossChainTrade.to;
112
+ this.gasData = crossChainTrade.gasData;
113
+ this.slippage = crossChainTrade.slippage;
114
+ this.toTokenAmountMin = web3_pure_1.Web3Pure.fromWei(crossChainTrade.toTokenAmountMin, crossChainTrade.to.decimals);
115
+ this.feeInfo = crossChainTrade.feeInfo;
116
+ this.priceImpact = crossChainTrade.priceImpact;
117
+ this.routerAddress = crossChainTrade.routerAddress;
118
+ this.onChainSubtype = crossChainTrade.onChainTrade
119
+ ? { from: crossChainTrade.onChainTrade.type, to: undefined }
120
+ : { from: undefined, to: undefined };
121
+ this.onChainTrade = crossChainTrade.onChainTrade;
122
+ this.isTokenRegistered = crossChainTrade.tokenRegistered;
123
+ }
124
+ async needApprove() {
125
+ this.checkWalletConnected();
126
+ if (this.from.isNative || (this.isErc677 && !this.isProxyTrade)) {
127
+ return false;
128
+ }
129
+ const allowance = await this.fromWeb3Public.getAllowance(this.from.address, this.walletAddress, this.fromContractAddress);
130
+ return this.from.weiAmount.gt(allowance);
131
+ }
132
+ async swapDirect(options = {}) {
133
+ await this.checkTradeErrors();
134
+ if (!this.isProxyTrade || this.isTokenRegistered) {
135
+ await this.checkAllowanceAndApprove(options);
136
+ }
137
+ const { onConfirm, gasLimit, gasPrice, gasPriceOptions } = options;
138
+ let transactionHash;
139
+ const onTransactionHash = (hash) => {
140
+ if (onConfirm) {
141
+ onConfirm(hash);
142
+ }
143
+ transactionHash = hash;
144
+ };
145
+ // eslint-disable-next-line no-useless-catch
146
+ try {
147
+ const { data, to, value } = this.getTransactionRequest(options.receiverAddress || this.walletAddress, this.from, this.to);
148
+ await this.web3Private.trySendTransaction(to, {
149
+ data,
150
+ value,
151
+ onTransactionHash,
152
+ gas: gasLimit,
153
+ gasPrice,
154
+ gasPriceOptions
155
+ });
156
+ return transactionHash;
157
+ }
158
+ catch (err) {
159
+ throw err;
160
+ }
161
+ }
162
+ async getContractParams(options) {
163
+ const receiverAddress = options?.receiverAddress || this.walletAddress;
164
+ const { data, to, value: providerValue } = this.getTransactionRequest(receiverAddress, this.onChainTrade ? this.onChainTrade.to : this.from, this.to);
165
+ const bridgeData = proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getBridgeData(options, {
166
+ walletAddress: this.walletAddress,
167
+ fromTokenAmount: this.from,
168
+ toTokenAmount: this.to,
169
+ srcChainTrade: this.onChainTrade,
170
+ providerAddress: this.providerAddress,
171
+ type: `native:${this.type}`,
172
+ fromAddress: this.walletAddress
173
+ });
174
+ const swapData = this.onChainTrade &&
175
+ (await proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getSwapData(options, {
176
+ walletAddress: this.walletAddress,
177
+ contractAddress: rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].router,
178
+ fromTokenAmount: this.from,
179
+ toTokenAmount: this.onChainTrade.to,
180
+ onChainEncodeFn: this.onChainTrade.encode.bind(this.onChainTrade)
181
+ }));
182
+ const providerData = this.isErc677
183
+ ? this.getProviderDataForErc677(this.from, this.to, receiverAddress)
184
+ : await proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getGenericProviderData(to, data, this.fromBlockchain, to, '0');
185
+ const methodArguments = swapData
186
+ ? [bridgeData, swapData, providerData]
187
+ : [bridgeData, providerData];
188
+ const value = this.getSwapValue(providerValue);
189
+ const transactionConfiguration = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].router, evm_common_cross_chain_abi_1.evmCommonCrossChainAbi, this.methodName, methodArguments, value);
190
+ const sendingToken = this.from.isNative ? [] : [this.from.address];
191
+ const sendingAmount = this.from.isNative ? [] : [this.from.stringWeiAmount];
192
+ return {
193
+ contractAddress: rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].gateway,
194
+ contractAbi: gateway_rubic_cross_chain_abi_1.gatewayRubicCrossChainAbi,
195
+ methodName: 'startViaRubic',
196
+ methodArguments: [sendingToken, sendingAmount, transactionConfiguration.data],
197
+ value
198
+ };
199
+ }
200
+ getTradeAmountRatio(fromUsd) {
201
+ return fromUsd.dividedBy(this.to.tokenAmount);
202
+ }
203
+ getTradeInfo() {
204
+ return {
205
+ estimatedGas: this.estimatedGas,
206
+ feeInfo: this.feeInfo,
207
+ priceImpact: this.priceImpact ?? null,
208
+ slippage: this.slippage * 100,
209
+ routePath: this.routePath
210
+ };
211
+ }
212
+ getTransactionRequest(receiverAddress, fromToken, toToken) {
213
+ const sourceBridgeManager = bridge_manager_1.BridgeManager.createBridge(fromToken, toToken);
214
+ const tokenAddress = this.getTokenAddress(fromToken);
215
+ if (fromToken.isNative) {
216
+ return sourceBridgeManager.getDataForNativeSwap(receiverAddress, fromToken.stringWeiAmount);
217
+ }
218
+ return sourceBridgeManager.getDataForTokenSwap(receiverAddress, fromToken.stringWeiAmount, this.isErc677, tokenAddress);
219
+ }
220
+ getTokenAddress(token) {
221
+ if (token.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ETHEREUM) {
222
+ return token.isNative ? '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' : token.address;
223
+ }
224
+ return token.isNative ? '0xA1077a294dDE1B09bB078844df40758a5D0f9a27' : token.address;
225
+ }
226
+ getProviderDataForErc677(fromToken, toToken, receiverAddress) {
227
+ const sourceBridgeManager = bridge_manager_1.BridgeManager.createBridge(fromToken, toToken);
228
+ return [sourceBridgeManager.sourceBridgeAddress, receiverAddress];
229
+ }
230
+ }
231
+ exports.PulseChainCrossChainTrade = PulseChainCrossChainTrade;
232
+ //# sourceMappingURL=pulse-chain-cross-chain-trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulse-chain-cross-chain-trade.js","sourceRoot":"","sources":["../../../../../../src/features/cross-chain/calculation-manager/providers/pulse-chain-bridge/pulse-chain-cross-chain-trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { RequiredCrossChainOptions } from '../../../models/cross-chain-options';
2
+ /**
3
+ * @property {RangoSupportedBlockchain[]} swappers List of all accepted swappers (e.g. providers), an empty list means no filter is required
4
+ * @property {boolean} [swappersGroupsExclude] - Defines the provided swappers' tags as the include/exclude list. Default is false (include)
5
+ */
6
+ export type RangoCrossChainOptions = RequiredCrossChainOptions & {
7
+ swappersGroupsExclude?: boolean;
8
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=rango-cross-chain-api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rango-cross-chain-api-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-api-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PriceTokenAmount } from "../../../../../../common/tokens";
3
+ import { EvmBlockchainName } from "../../../../../../core/blockchain/models/blockchain-name";
4
+ import { RangoSwapQueryParams } from "../../../../../common/providers/rango/models/rango-parser-types";
5
+ import { GasData } from '../../common/emv-cross-chain-trade/models/gas-data';
6
+ import { FeeInfo } from '../../common/models/fee-info';
7
+ import { RubicStep } from '../../common/models/rubicStep';
8
+ import { RangoCrossChainOptions } from './rango-cross-chain-api-types';
9
+ export interface RangoCrossChainTradeConstructorParams {
10
+ crossChainTrade: {
11
+ from: PriceTokenAmount<EvmBlockchainName>;
12
+ to: PriceTokenAmount<EvmBlockchainName>;
13
+ gasData: GasData | null;
14
+ toTokenAmountMin: BigNumber;
15
+ feeInfo: FeeInfo;
16
+ priceImpact: number | null;
17
+ slippage: number;
18
+ swapQueryParams: RangoSwapQueryParams;
19
+ };
20
+ providerAddress: string;
21
+ routePath: RubicStep[];
22
+ }
23
+ export interface GetCrossChainTradeConstructorParamsType {
24
+ fromToken: PriceTokenAmount<EvmBlockchainName>;
25
+ toToken: PriceTokenAmount<EvmBlockchainName>;
26
+ options: RangoCrossChainOptions;
27
+ routePath: RubicStep[];
28
+ feeInfo: FeeInfo;
29
+ toTokenAmountMin: BigNumber;
30
+ swapQueryParams: RangoSwapQueryParams;
31
+ }
32
+ export type RangoGetGasDataParams = Omit<GetCrossChainTradeConstructorParamsType, 'toTokenAmountMin' | 'options'>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=rango-cross-chain-parser-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rango-cross-chain-parser-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/rango-provider/model/rango-cross-chain-parser-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { PriceToken, PriceTokenAmount } from "../../../../../common/tokens";
2
+ import { EvmBlockchainName } from "../../../../../core/blockchain/models/blockchain-name";
3
+ import { RangoQuotePath } from "../../../../common/providers/rango/models/rango-api-best-route-types";
4
+ import { RangoSupportedBlockchain } from "../../../../common/providers/rango/models/rango-supported-blockchains";
5
+ import { CrossChainTradeType } from '../../models/cross-chain-trade-type';
6
+ import { CrossChainProvider } from '../common/cross-chain-provider';
7
+ import { CalculationResult } from '../common/models/calculation-result';
8
+ import { FeeInfo } from '../common/models/fee-info';
9
+ import { RubicStep } from '../common/models/rubicStep';
10
+ import { RangoCrossChainOptions } from './model/rango-cross-chain-api-types';
11
+ export declare class RangoCrossChainProvider extends CrossChainProvider {
12
+ type: CrossChainTradeType;
13
+ static readonly apiKey = "a24ca428-a18e-4e84-b57f-edb3e2a5bf13";
14
+ static readonly apiEndpoint = "https://api.rango.exchange/basic";
15
+ private rangoSupportedBlockchains;
16
+ isSupportedBlockchain(blockchain: EvmBlockchainName): boolean;
17
+ calculate(from: PriceTokenAmount<EvmBlockchainName>, toToken: PriceToken<EvmBlockchainName>, options: RangoCrossChainOptions): Promise<CalculationResult>;
18
+ protected getRoutePath(fromToken: PriceTokenAmount<EvmBlockchainName>, toToken: PriceTokenAmount<EvmBlockchainName>, path: RangoQuotePath[] | null): Promise<RubicStep[]>;
19
+ private getStep;
20
+ protected getFeeInfo(fromBlockchain: RangoSupportedBlockchain, providerAddress: string, percentFeeToken: PriceTokenAmount, useProxy: boolean): Promise<FeeInfo>;
21
+ }