rubic-sdk 6.0.0-alpha.ton.2 → 6.0.0-alpha.ton.3

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 (119) hide show
  1. package/lib/common/tokens/constants/native-tokens.js +7 -0
  2. package/lib/common/tokens/constants/native-tokens.js.map +1 -1
  3. package/lib/common/tokens/constants/wrapped-addresses.js +2 -1
  4. package/lib/common/tokens/constants/wrapped-addresses.js.map +1 -1
  5. package/lib/common/tokens/constants/wrapped-native-tokens.js +8 -1
  6. package/lib/common/tokens/constants/wrapped-native-tokens.js.map +1 -1
  7. package/lib/core/blockchain/models/backend-blockchains.d.ts +2 -1
  8. package/lib/core/blockchain/models/backend-blockchains.js +3 -2
  9. package/lib/core/blockchain/models/backend-blockchains.js.map +1 -1
  10. package/lib/core/blockchain/models/blockchain-name.d.ts +2 -0
  11. package/lib/core/blockchain/models/blockchain-name.js +2 -1
  12. package/lib/core/blockchain/models/blockchain-name.js.map +1 -1
  13. package/lib/core/blockchain/utils/blockchains-info/constants/blockchain-id.js +2 -1
  14. package/lib/core/blockchain/utils/blockchains-info/constants/blockchain-id.js.map +1 -1
  15. package/lib/core/blockchain/web3-private-service/models/web-private-supported-blockchain.d.ts +1 -1
  16. package/lib/core/blockchain/web3-private-service/web3-private/evm-web3-private/evm-web3-private.d.ts +1 -1
  17. package/lib/core/blockchain/web3-private-service/web3-private/evm-web3-private/evm-web3-private.js +2 -2
  18. package/lib/core/blockchain/web3-private-service/web3-private/evm-web3-private/evm-web3-private.js.map +1 -1
  19. package/lib/core/blockchain/web3-private-service/web3-private/evm-web3-private/models/evm-transaction-options.d.ts +4 -0
  20. package/lib/core/blockchain/web3-public-service/models/web3-public-storage.d.ts +1 -1
  21. package/lib/core/blockchain/web3-public-service/web3-public/constants/multicall-addresses.js +2 -1
  22. package/lib/core/blockchain/web3-public-service/web3-public/constants/multicall-addresses.js.map +1 -1
  23. package/lib/features/common/constants/proxy-supported-blockchain.d.ts +1 -1
  24. package/lib/features/common/constants/proxy-supported-blockchain.js +2 -1
  25. package/lib/features/common/constants/proxy-supported-blockchain.js.map +1 -1
  26. package/lib/features/common/providers/rango/models/rango-api-trade-types.d.ts +2 -2
  27. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.d.ts +2 -1
  28. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.js +3 -1
  29. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.js.map +1 -1
  30. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.d.ts +1 -0
  31. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.js +2 -1
  32. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.js.map +1 -1
  33. package/lib/features/cross-chain/calculation-manager/providers/changenow-provider/changenow-cross-chain-trade.d.ts +1 -1
  34. package/lib/features/cross-chain/calculation-manager/providers/common/constants/rubic-proxy-contract-address.js +2 -1
  35. package/lib/features/cross-chain/calculation-manager/providers/common/constants/rubic-proxy-contract-address.js.map +1 -1
  36. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/evm-cross-chain-trade.d.ts +1 -0
  37. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/evm-cross-chain-trade.js +10 -1
  38. package/lib/features/cross-chain/calculation-manager/providers/common/emv-cross-chain-trade/evm-cross-chain-trade.js.map +1 -1
  39. package/lib/features/cross-chain/calculation-manager/providers/common/models/bridge-type.d.ts +2 -1
  40. package/lib/features/cross-chain/calculation-manager/providers/common/models/default-bridge-type.d.ts +1 -0
  41. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/eddy-bridge-contract-addresses.d.ts +4 -0
  42. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/eddy-bridge-contract-addresses.js +14 -0
  43. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/eddy-bridge-contract-addresses.js.map +1 -0
  44. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/eddy-bridge-supported-chains.d.ts +4 -0
  45. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/eddy-bridge-supported-chains.js +10 -0
  46. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/eddy-bridge-supported-chains.js.map +1 -0
  47. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/edyy-bridge-abi.d.ts +2 -0
  48. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/edyy-bridge-abi.js +83 -0
  49. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/edyy-bridge-abi.js.map +1 -0
  50. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/swap-limits.d.ts +10 -0
  51. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/swap-limits.js +42 -0
  52. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/swap-limits.js.map +1 -0
  53. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/zrc-20-token-abi.d.ts +2 -0
  54. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/zrc-20-token-abi.js +26 -0
  55. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/constants/zrc-20-token-abi.js.map +1 -0
  56. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-provider.d.ts +18 -0
  57. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-provider.js +186 -0
  58. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-provider.js.map +1 -0
  59. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-trade.d.ts +47 -0
  60. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-trade.js +174 -0
  61. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-trade.js.map +1 -0
  62. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-bridge-api-types.d.ts +8 -0
  63. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-bridge-api-types.js +3 -0
  64. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-bridge-api-types.js.map +1 -0
  65. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-trade-types.d.ts +29 -0
  66. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-trade-types.js +3 -0
  67. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-trade-types.js.map +1 -0
  68. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-api-service.d.ts +3 -0
  69. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-api-service.js +20 -0
  70. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-api-service.js.map +1 -0
  71. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-contract-service.d.ts +12 -0
  72. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-contract-service.js +35 -0
  73. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-contract-service.js.map +1 -0
  74. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/eddy-bridge-routing-directions.d.ts +9 -0
  75. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/eddy-bridge-routing-directions.js +28 -0
  76. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/eddy-bridge-routing-directions.js.map +1 -0
  77. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/get-eddy-bridge-dst-status.d.ts +3 -0
  78. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/get-eddy-bridge-dst-status.js +33 -0
  79. package/lib/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/get-eddy-bridge-dst-status.js.map +1 -0
  80. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-provider.js +2 -2
  81. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-provider.js.map +1 -1
  82. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/models/symbiosis-cross-chain-supported-blockchains.d.ts +1 -1
  83. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/models/symbiosis-cross-chain-supported-blockchains.js +1 -0
  84. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/models/symbiosis-cross-chain-supported-blockchains.js.map +1 -1
  85. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/symbiosis-cross-chain-trade.js +4 -0
  86. package/lib/features/cross-chain/calculation-manager/providers/symbiosis-provider/symbiosis-cross-chain-trade.js.map +1 -1
  87. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.d.ts +1 -0
  88. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.js +8 -2
  89. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.js.map +1 -1
  90. package/lib/features/on-chain/calculation-manager/constants/trade-providers/uniswap-v2-trade-providers.d.ts +2 -1
  91. package/lib/features/on-chain/calculation-manager/constants/trade-providers/uniswap-v2-trade-providers.js +4 -1
  92. package/lib/features/on-chain/calculation-manager/constants/trade-providers/uniswap-v2-trade-providers.js.map +1 -1
  93. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/models/okuswap-api-types.d.ts +6 -3
  94. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-provider.js +13 -9
  95. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-provider.js.map +1 -1
  96. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-trade.d.ts +2 -0
  97. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-trade.js +15 -0
  98. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-trade.js.map +1 -1
  99. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.d.ts +1 -0
  100. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.js +1 -0
  101. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.js.map +1 -1
  102. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/default-constants.d.ts +3 -0
  103. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/default-constants.js +18 -0
  104. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/default-constants.js.map +1 -0
  105. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/constants.d.ts +2 -0
  106. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/constants.js +7 -0
  107. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/constants.js.map +1 -0
  108. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-provider.d.ts +9 -0
  109. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-provider.js +23 -0
  110. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-provider.js.map +1 -0
  111. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-trade.d.ts +9 -0
  112. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-trade.js +27 -0
  113. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-trade.js.map +1 -0
  114. package/lib/features/on-chain/calculation-manager/providers/dexes/mode/eddy-finance-mode/eddy-finance-mode-trade.js +1 -1
  115. package/lib/features/on-chain/calculation-manager/providers/dexes/mode/eddy-finance-mode/eddy-finance-mode-trade.js.map +1 -1
  116. package/lib/index.d.ts +17 -0
  117. package/lib/index.js +17 -0
  118. package/lib/index.js.map +1 -1
  119. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EddyBridgeProvider = void 0;
4
+ const errors_1 = require("../../../../../common/errors");
5
+ const tokens_1 = require("../../../../../common/tokens");
6
+ const blockchain_1 = require("../../../../../common/utils/blockchain");
7
+ const blockchain_name_1 = require("../../../../../core/blockchain/models/blockchain-name");
8
+ const fake_wallet_address_1 = require("../../../../common/constants/fake-wallet-address");
9
+ const check_unsupported_receiver_address_1 = require("../../../../common/utils/check-unsupported-receiver-address");
10
+ const get_from_without_fee_1 = require("../../../../common/utils/get-from-without-fee");
11
+ const eddy_finance_provider_1 = require("../../../../on-chain/calculation-manager/providers/dexes/zetachain/eddy-finance/eddy-finance-provider");
12
+ const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type");
13
+ const cross_chain_provider_1 = require("../common/cross-chain-provider");
14
+ const proxy_cross_chain_evm_trade_1 = require("../common/proxy-cross-chain-evm-facade/proxy-cross-chain-evm-trade");
15
+ const eddy_bridge_contract_addresses_1 = require("./constants/eddy-bridge-contract-addresses");
16
+ const eddy_bridge_supported_chains_1 = require("./constants/eddy-bridge-supported-chains");
17
+ const swap_limits_1 = require("./constants/swap-limits");
18
+ const eddy_bridge_trade_1 = require("./eddy-bridge-trade");
19
+ const eddy_bridge_api_service_1 = require("./services/eddy-bridge-api-service");
20
+ const eddy_bridge_contract_service_1 = require("./services/eddy-bridge-contract-service");
21
+ const eddy_bridge_routing_directions_1 = require("./utils/eddy-bridge-routing-directions");
22
+ class EddyBridgeProvider extends cross_chain_provider_1.CrossChainProvider {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.EDDY_BRIDGE;
26
+ }
27
+ isSupportedBlockchain(fromBlockchain) {
28
+ return eddy_bridge_supported_chains_1.eddyBridgeSupportedChains.some(chain => chain === fromBlockchain);
29
+ }
30
+ async calculate(from, toToken, options) {
31
+ const fromBlockchain = from.blockchain;
32
+ const useProxy = false;
33
+ const walletAddress = this.getWalletAddress(fromBlockchain) || fake_wallet_address_1.FAKE_WALLET_ADDRESS;
34
+ try {
35
+ (0, check_unsupported_receiver_address_1.checkUnsupportedReceiverAddress)(options?.receiverAddress, options?.fromAddress || walletAddress);
36
+ const isSupportedRoute = this.checkIsSupportedRoute(from, toToken);
37
+ if (!isSupportedRoute) {
38
+ throw new errors_1.NotSupportedTokensError();
39
+ }
40
+ const routingDirection = (0, eddy_bridge_routing_directions_1.eddyRoutingDirection)(from, toToken);
41
+ const feeInfo = await this.getFeeInfo(fromBlockchain, options.providerAddress, from, useProxy);
42
+ const fromWithoutFee = (0, get_from_without_fee_1.getFromWithoutFee)(from, feeInfo.rubicProxy?.platformFee?.percent);
43
+ const [eddySlippage, { toAmount, gasInTargetChain }] = await Promise.all([
44
+ eddy_bridge_contract_service_1.EddyBridgeContractService.getEddySlipage(),
45
+ this.getToTokenAmount(fromWithoutFee, toToken, options, routingDirection)
46
+ ]);
47
+ const to = await tokens_1.PriceTokenAmount.createToken({
48
+ ...toToken.asStruct,
49
+ tokenAmount: toAmount
50
+ });
51
+ const gasData = options.gasCalculation === 'enabled'
52
+ ? await eddy_bridge_trade_1.EddyBridgeTrade.getGasData({
53
+ feeInfo,
54
+ from: fromWithoutFee,
55
+ toToken: to,
56
+ providerAddress: options.providerAddress,
57
+ slippage: options.slippageTolerance,
58
+ routingDirection: routingDirection
59
+ })
60
+ : null;
61
+ const trade = new eddy_bridge_trade_1.EddyBridgeTrade({
62
+ crossChainTrade: {
63
+ feeInfo,
64
+ from: fromWithoutFee,
65
+ gasData,
66
+ to,
67
+ priceImpact: from.calculatePriceImpactPercent(to),
68
+ slippage: eddySlippage,
69
+ prevGasAmountInNonZetaChain: gasInTargetChain,
70
+ routingDirection: routingDirection
71
+ },
72
+ providerAddress: options.providerAddress,
73
+ routePath: await this.getRoutePath(from, to)
74
+ });
75
+ return this.getCalculationResult(fromWithoutFee, trade);
76
+ }
77
+ catch (err) {
78
+ const rubicSdkError = cross_chain_provider_1.CrossChainProvider.parseError(err);
79
+ return {
80
+ trade: null,
81
+ error: rubicSdkError,
82
+ tradeType: this.type
83
+ };
84
+ }
85
+ }
86
+ async getCalculationResult(fromWithoutFee, trade) {
87
+ const limits = swap_limits_1.EDDY_BRIDGE_LIMITS.find(info => fromWithoutFee.isEqualTo(info));
88
+ if (!limits) {
89
+ throw new errors_1.NotSupportedTokensError();
90
+ }
91
+ let hasEnoughCapacity = true;
92
+ if (fromWithoutFee.blockchain !== blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN) {
93
+ try {
94
+ const maxAmountWei = await eddy_bridge_api_service_1.EddyBridgeApiService.getWeiTokenLimitInForeignChain(fromWithoutFee.symbol);
95
+ hasEnoughCapacity = fromWithoutFee.weiAmount.lte(maxAmountWei);
96
+ }
97
+ catch { }
98
+ }
99
+ if (fromWithoutFee.tokenAmount.lt(limits.min)) {
100
+ return {
101
+ trade,
102
+ error: new errors_1.MinAmountError(limits.min, fromWithoutFee.symbol),
103
+ tradeType: this.type
104
+ };
105
+ }
106
+ if (fromWithoutFee.tokenAmount.gt(limits.max) || !hasEnoughCapacity) {
107
+ return {
108
+ trade,
109
+ error: new errors_1.MaxAmountError(limits.max, fromWithoutFee.symbol),
110
+ tradeType: this.type
111
+ };
112
+ }
113
+ return { trade, tradeType: this.type };
114
+ }
115
+ async getToTokenAmount(from, toToken, options, routingDirection) {
116
+ const eddyFee = await eddy_bridge_contract_service_1.EddyBridgeContractService.getPlatformFee();
117
+ const ratioToAmount = 1 - eddyFee;
118
+ if (routingDirection === eddy_bridge_routing_directions_1.ERD.ZETA_TOKEN_TO_ANY_CHAIN_NATIVE) {
119
+ const gasInTargetChainNonWei = await eddy_bridge_contract_service_1.EddyBridgeContractService.getGasInTargetChain(from);
120
+ const toAmount = from.tokenAmount
121
+ .multipliedBy(ratioToAmount)
122
+ .minus(gasInTargetChainNonWei);
123
+ return { toAmount, gasInTargetChain: gasInTargetChainNonWei };
124
+ }
125
+ if (routingDirection === eddy_bridge_routing_directions_1.ERD.ZETA_NATIVE_TO_ANY_CHAIN_NATIVE) {
126
+ const to = await tokens_1.PriceToken.createToken({
127
+ address: eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS[toToken.symbol],
128
+ blockchain: blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN
129
+ });
130
+ const fromWithEddyBridgeFee = new tokens_1.PriceTokenAmount({
131
+ ...from.asStruct,
132
+ tokenAmount: from.tokenAmount.multipliedBy(ratioToAmount)
133
+ });
134
+ const calcData = await new eddy_finance_provider_1.EddyFinanceProvider().calculate(fromWithEddyBridgeFee, to, {
135
+ ...options,
136
+ gasCalculation: 'disabled',
137
+ useProxy: false
138
+ });
139
+ return { toAmount: calcData.to.tokenAmount, gasInTargetChain: undefined };
140
+ }
141
+ // BNB or ETH -> ZETA
142
+ const fromTokenInZetaChain = await tokens_1.PriceTokenAmount.createToken({
143
+ address: eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS[from.symbol],
144
+ blockchain: blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN,
145
+ tokenAmount: from.tokenAmount.multipliedBy(ratioToAmount)
146
+ });
147
+ const calcData = await new eddy_finance_provider_1.EddyFinanceProvider().calculate(fromTokenInZetaChain, toToken, {
148
+ ...options,
149
+ gasCalculation: 'disabled',
150
+ useProxy: false
151
+ });
152
+ return { toAmount: calcData.to.tokenAmount, gasInTargetChain: undefined };
153
+ }
154
+ checkIsSupportedRoute(from, toToken) {
155
+ // Prevents bridges BSC <-> Ethereum
156
+ if (from.blockchain !== blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN &&
157
+ toToken.blockchain !== blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN) {
158
+ return false;
159
+ }
160
+ // Only gas-token(BNB, ETH) can be bridged from supported chains in ZetaChain(ZETA)
161
+ if (from.blockchain !== blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN && from.isNative && toToken.isNative) {
162
+ return true;
163
+ }
164
+ const isSupportedZrc20 = Object.values(eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS).some(zrc20Address => (0, blockchain_1.compareAddresses)(zrc20Address, from.address));
165
+ // Zetachain(BNB) -> BSC(BNB) and Zetachain(ETH) -> ETH(ETH)
166
+ if (from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN &&
167
+ isSupportedZrc20 &&
168
+ toToken.isNative &&
169
+ new RegExp(toToken.symbol, 'i').test(from.symbol)) {
170
+ return true;
171
+ }
172
+ // ZetaChain(ZETA) -> BSC(BNB) or ETH(ETH)
173
+ if (from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN && from.isNative && toToken.isNative) {
174
+ return true;
175
+ }
176
+ return false;
177
+ }
178
+ async getRoutePath(fromToken, toToken) {
179
+ return [{ type: 'cross-chain', provider: this.type, path: [fromToken, toToken] }];
180
+ }
181
+ async getFeeInfo(fromBlockchain, providerAddress, percentFeeToken, useProxy) {
182
+ return proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getFeeInfo(fromBlockchain, providerAddress, percentFeeToken, useProxy);
183
+ }
184
+ }
185
+ exports.EddyBridgeProvider = EddyBridgeProvider;
186
+ //# sourceMappingURL=eddy-bridge-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-bridge-provider.js","sourceRoot":"","sources":["../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PriceTokenAmount } from '../../../../../common/tokens';
3
+ import { EvmBlockchainName } from '../../../../../core/blockchain/models/blockchain-name';
4
+ import { EvmBasicTransactionOptions } from '../../../../../core/blockchain/web3-private-service/web3-private/evm-web3-private/models/evm-basic-transaction-options';
5
+ import { EvmEncodeConfig } from '../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/models/evm-encode-config';
6
+ import { ContractParams } from '../../../../common/models/contract-params';
7
+ import { TransactionReceipt } from 'web3-eth';
8
+ import { CrossChainTradeType } from '../../models/cross-chain-trade-type';
9
+ import { EvmCrossChainTrade } from '../common/emv-cross-chain-trade/evm-cross-chain-trade';
10
+ import { GasData } from '../common/emv-cross-chain-trade/models/gas-data';
11
+ import { BridgeType } from '../common/models/bridge-type';
12
+ import { FeeInfo } from '../common/models/fee-info';
13
+ import { GetContractParamsOptions } from '../common/models/get-contract-params-options';
14
+ import { OnChainSubtype } from '../common/models/on-chain-subtype';
15
+ import { TradeInfo } from '../common/models/trade-info';
16
+ import { EddyBridgeGetGasDataParams, EddyBridgeTradeConstructorParams } from './models/eddy-trade-types';
17
+ export declare class EddyBridgeTrade extends EvmCrossChainTrade {
18
+ /** @internal */
19
+ static getGasData({ feeInfo, from, providerAddress, toToken, slippage, routingDirection }: EddyBridgeGetGasDataParams): Promise<GasData | null>;
20
+ /**ABSTRACT PROPS */
21
+ readonly type: CrossChainTradeType;
22
+ readonly isAggregator: boolean;
23
+ readonly to: PriceTokenAmount<EvmBlockchainName>;
24
+ readonly from: PriceTokenAmount<EvmBlockchainName>;
25
+ readonly toTokenAmountMin: BigNumber;
26
+ readonly feeInfo: FeeInfo;
27
+ readonly onChainSubtype: OnChainSubtype;
28
+ readonly bridgeType: BridgeType;
29
+ readonly gasData: GasData;
30
+ readonly priceImpact: number | null;
31
+ private readonly slippage;
32
+ /** */
33
+ private readonly prevGasAmountInNonZetaChain;
34
+ private readonly routingDirection;
35
+ private get fromBlockchain();
36
+ protected get fromContractAddress(): string;
37
+ protected get methodName(): string;
38
+ constructor(params: EddyBridgeTradeConstructorParams);
39
+ getContractParams(options: GetContractParamsOptions): Promise<ContractParams>;
40
+ protected getTransactionConfigAndAmount(_receiverAddress?: string): Promise<{
41
+ config: EvmEncodeConfig;
42
+ amount: string;
43
+ }>;
44
+ getTradeInfo(): TradeInfo;
45
+ needApprove(): Promise<boolean>;
46
+ approve(options: EvmBasicTransactionOptions, checkNeedApprove?: boolean, amount?: BigNumber): Promise<TransactionReceipt>;
47
+ }
@@ -0,0 +1,174 @@
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.EddyBridgeTrade = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const errors_1 = require("../../../../../common/errors");
9
+ const wrapped_native_tokens_1 = require("../../../../../common/tokens/constants/wrapped-native-tokens");
10
+ const blockchain_name_1 = require("../../../../../core/blockchain/models/blockchain-name");
11
+ const evm_web3_pure_1 = require("../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure");
12
+ const web3_pure_1 = require("../../../../../core/blockchain/web3-pure/web3-pure");
13
+ const fake_wallet_address_1 = require("../../../../common/constants/fake-wallet-address");
14
+ const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type");
15
+ const get_cross_chain_gas_data_1 = require("../../utils/get-cross-chain-gas-data");
16
+ const rubic_proxy_contract_address_1 = require("../common/constants/rubic-proxy-contract-address");
17
+ const evm_common_cross_chain_abi_1 = require("../common/emv-cross-chain-trade/constants/evm-common-cross-chain-abi");
18
+ const gateway_rubic_cross_chain_abi_1 = require("../common/emv-cross-chain-trade/constants/gateway-rubic-cross-chain-abi");
19
+ const evm_cross_chain_trade_1 = require("../common/emv-cross-chain-trade/evm-cross-chain-trade");
20
+ const bridge_type_1 = require("../common/models/bridge-type");
21
+ const proxy_cross_chain_evm_trade_1 = require("../common/proxy-cross-chain-evm-facade/proxy-cross-chain-evm-trade");
22
+ const eddy_bridge_contract_addresses_1 = require("./constants/eddy-bridge-contract-addresses");
23
+ const edyy_bridge_abi_1 = require("./constants/edyy-bridge-abi");
24
+ const eddy_bridge_contract_service_1 = require("./services/eddy-bridge-contract-service");
25
+ const eddy_bridge_routing_directions_1 = require("./utils/eddy-bridge-routing-directions");
26
+ class EddyBridgeTrade extends evm_cross_chain_trade_1.EvmCrossChainTrade {
27
+ /** @internal */
28
+ static async getGasData({ feeInfo, from, providerAddress, toToken, slippage, routingDirection }) {
29
+ const trade = new EddyBridgeTrade({
30
+ crossChainTrade: {
31
+ from,
32
+ to: toToken,
33
+ gasData: null,
34
+ priceImpact: 0,
35
+ feeInfo,
36
+ slippage,
37
+ prevGasAmountInNonZetaChain: new bignumber_js_1.default(0),
38
+ routingDirection
39
+ },
40
+ providerAddress: providerAddress || evm_web3_pure_1.EvmWeb3Pure.EMPTY_ADDRESS,
41
+ routePath: []
42
+ });
43
+ return (0, get_cross_chain_gas_data_1.getCrossChainGasData)(trade);
44
+ }
45
+ get fromBlockchain() {
46
+ return this.from.blockchain;
47
+ }
48
+ // EddyFinance has deployed contract only in ZetaChain, other routes go directly via `transfer`
49
+ get fromContractAddress() {
50
+ return this.isProxyTrade
51
+ ? rubic_proxy_contract_address_1.rubicProxyContractAddress[this.fromBlockchain].gateway
52
+ : eddy_bridge_contract_addresses_1.EDDY_CONTRACT_ADDRESS_IN_ZETACHAIN;
53
+ }
54
+ get methodName() {
55
+ return 'startBridgeTokensViaGenericCrossChain';
56
+ }
57
+ constructor(params) {
58
+ super(params.providerAddress, params.routePath);
59
+ /**ABSTRACT PROPS */
60
+ this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.EDDY_BRIDGE;
61
+ this.isAggregator = false;
62
+ this.onChainSubtype = { from: undefined, to: undefined };
63
+ this.bridgeType = bridge_type_1.BRIDGE_TYPE.EDDY_BRIDGE;
64
+ this.to = params.crossChainTrade.to;
65
+ this.from = params.crossChainTrade.from;
66
+ this.feeInfo = params.crossChainTrade.feeInfo;
67
+ this.gasData = params.crossChainTrade.gasData;
68
+ this.priceImpact = params.crossChainTrade.priceImpact;
69
+ this.slippage = params.crossChainTrade.slippage;
70
+ this.toTokenAmountMin = web3_pure_1.Web3Pure.fromWei(this.to.weiAmountMinusSlippage(this.slippage), this.to.decimals);
71
+ this.prevGasAmountInNonZetaChain = params.crossChainTrade.prevGasAmountInNonZetaChain;
72
+ this.routingDirection = params.crossChainTrade.routingDirection;
73
+ }
74
+ async getContractParams(options) {
75
+ const receiverAddress = options?.receiverAddress || this.walletAddress;
76
+ const { data, value: providerValue, to: providerRouter } = await this.setTransactionConfig(false, options?.useCacheData || false, options?.receiverAddress || this.walletAddress);
77
+ const bridgeData = proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getBridgeData(options, {
78
+ walletAddress: receiverAddress,
79
+ fromTokenAmount: this.from,
80
+ toTokenAmount: this.to,
81
+ srcChainTrade: null,
82
+ providerAddress: this.providerAddress,
83
+ type: `native:${this.bridgeType}`,
84
+ fromAddress: this.walletAddress
85
+ });
86
+ const providerData = await proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getGenericProviderData(providerRouter, data, this.from.blockchain, providerRouter, '0');
87
+ const methodArguments = [bridgeData, providerData];
88
+ const value = this.getSwapValue(providerValue);
89
+ 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);
90
+ const sendingToken = this.from.isNative ? [] : [this.from.address];
91
+ const sendingAmount = this.from.isNative ? [] : [this.from.stringWeiAmount];
92
+ return {
93
+ contractAddress: rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].gateway,
94
+ contractAbi: gateway_rubic_cross_chain_abi_1.gatewayRubicCrossChainAbi,
95
+ methodName: 'startViaRubic',
96
+ methodArguments: [sendingToken, sendingAmount, transactionConfiguration.data],
97
+ value
98
+ };
99
+ }
100
+ async getTransactionConfigAndAmount(_receiverAddress) {
101
+ let config = {};
102
+ const wrappedZetaAddress = wrapped_native_tokens_1.wrappedNativeTokensList[blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN].address;
103
+ if (this.routingDirection === eddy_bridge_routing_directions_1.ERD.ANY_CHAIN_NATIVE_TO_ZETA_NATIVE) {
104
+ const walletAddress = this.walletAddress || fake_wallet_address_1.FAKE_WALLET_ADDRESS;
105
+ let data = eddy_bridge_contract_addresses_1.EDDY_CONTRACT_ADDRESS_IN_ZETACHAIN +
106
+ walletAddress.slice(2) +
107
+ wrappedZetaAddress.slice(2);
108
+ config = {
109
+ data,
110
+ to: eddy_bridge_contract_addresses_1.TSS_ADDRESSES_EDDY_BRIDGE[this.fromBlockchain],
111
+ value: this.from.stringWeiAmount
112
+ };
113
+ }
114
+ else if (this.routingDirection === eddy_bridge_routing_directions_1.ERD.ZETA_NATIVE_TO_ANY_CHAIN_NATIVE) {
115
+ const destZrc20TokenAddress = eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS[this.to.symbol];
116
+ config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(eddy_bridge_contract_addresses_1.EDDY_CONTRACT_ADDRESS_IN_ZETACHAIN, edyy_bridge_abi_1.EDDY_BRIDGE_ABI, 'transferZetaToConnectedChain', ['0x', wrappedZetaAddress, destZrc20TokenAddress], this.from.stringWeiAmount);
117
+ }
118
+ else if (this.routingDirection === eddy_bridge_routing_directions_1.ERD.ZETA_TOKEN_TO_ANY_CHAIN_NATIVE) {
119
+ const srcZrc20TokenAddress = this.from.address;
120
+ const destZrc20TokenAddress = eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS[this.to.symbol];
121
+ const methodArgs = [
122
+ '0x',
123
+ this.from.stringWeiAmount,
124
+ srcZrc20TokenAddress,
125
+ destZrc20TokenAddress
126
+ ];
127
+ config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(eddy_bridge_contract_addresses_1.EDDY_CONTRACT_ADDRESS_IN_ZETACHAIN, edyy_bridge_abi_1.EDDY_BRIDGE_ABI, 'withdrawToNativeChain', methodArgs, '0');
128
+ }
129
+ if (this.routingDirection === eddy_bridge_routing_directions_1.ERD.ZETA_TOKEN_TO_ANY_CHAIN_NATIVE) {
130
+ const newGasAmount = await eddy_bridge_contract_service_1.EddyBridgeContractService.getGasInTargetChain(this.from);
131
+ const newNonWeiAmount = web3_pure_1.Web3Pure.fromWei(this.to.stringWeiAmount, this.to.decimals)
132
+ .plus(this.prevGasAmountInNonZetaChain)
133
+ .minus(newGasAmount);
134
+ const newWeiAmount = web3_pure_1.Web3Pure.toWei(newNonWeiAmount, this.to.decimals);
135
+ return { config, amount: newWeiAmount };
136
+ }
137
+ return {
138
+ config,
139
+ amount: this.to.stringWeiAmount
140
+ };
141
+ }
142
+ getTradeInfo() {
143
+ return {
144
+ estimatedGas: this.estimatedGas,
145
+ feeInfo: this.feeInfo,
146
+ priceImpact: this.priceImpact || null,
147
+ slippage: this.slippage * 100,
148
+ routePath: this.routePath
149
+ };
150
+ }
151
+ async needApprove() {
152
+ this.checkWalletConnected();
153
+ if (this.from.isNative)
154
+ return false;
155
+ const allowance = await this.fromWeb3Public.getAllowance(this.from.address, this.walletAddress, this.fromContractAddress);
156
+ // need allowance = amount + 1 wei at least
157
+ return this.from.weiAmount.gte(allowance);
158
+ }
159
+ async approve(options, checkNeedApprove = true, amount = new bignumber_js_1.default(0)) {
160
+ if (checkNeedApprove) {
161
+ const needApprove = await this.needApprove();
162
+ if (!needApprove) {
163
+ throw new errors_1.UnnecessaryApproveError();
164
+ }
165
+ }
166
+ this.checkWalletConnected();
167
+ await this.checkBlockchainCorrect();
168
+ // because of error on EddyBridge contract(they check on allowance > amount instead of allowance >= amount)
169
+ const approveAmount = amount.plus(1);
170
+ return this.web3Private.approveTokens(this.from.address, this.fromContractAddress, approveAmount, options);
171
+ }
172
+ }
173
+ exports.EddyBridgeTrade = EddyBridgeTrade;
174
+ //# sourceMappingURL=eddy-bridge-trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-bridge-trade.js","sourceRoot":"","sources":["../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface ZetaChainForeignCoinsRes {
2
+ foreignCoins: ZetaChainForeignCoinInfo[];
3
+ }
4
+ interface ZetaChainForeignCoinInfo {
5
+ zrc20_contract_address: string;
6
+ liquidity_cap: string;
7
+ }
8
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=eddy-bridge-api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-bridge-api-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-bridge-api-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PriceTokenAmount } from '../../../../../../common/tokens';
3
+ import { EvmBlockchainName } from '../../../../../../core/blockchain/models/blockchain-name';
4
+ import { GasData } from '../../common/emv-cross-chain-trade/models/gas-data';
5
+ import { FeeInfo } from '../../common/models/fee-info';
6
+ import { RubicStep } from '../../common/models/rubicStep';
7
+ import { EddyRoutingDirection } from '../utils/eddy-bridge-routing-directions';
8
+ export interface EddyBridgeGetGasDataParams {
9
+ from: PriceTokenAmount<EvmBlockchainName>;
10
+ toToken: PriceTokenAmount<EvmBlockchainName>;
11
+ feeInfo: FeeInfo;
12
+ providerAddress: string;
13
+ slippage: number;
14
+ routingDirection: EddyRoutingDirection;
15
+ }
16
+ export interface EddyBridgeTradeConstructorParams {
17
+ crossChainTrade: {
18
+ from: PriceTokenAmount<EvmBlockchainName>;
19
+ to: PriceTokenAmount<EvmBlockchainName>;
20
+ gasData: GasData | null;
21
+ feeInfo: FeeInfo;
22
+ priceImpact: number | null;
23
+ slippage: number;
24
+ prevGasAmountInNonZetaChain: BigNumber | undefined;
25
+ routingDirection: EddyRoutingDirection;
26
+ };
27
+ providerAddress: string;
28
+ routePath: RubicStep[];
29
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=eddy-trade-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-trade-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/models/eddy-trade-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare class EddyBridgeApiService {
2
+ static getWeiTokenLimitInForeignChain(tokenSymbol: string): Promise<string>;
3
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EddyBridgeApiService = void 0;
4
+ const errors_1 = require("../../../../../../common/errors");
5
+ const blockchain_1 = require("../../../../../../common/utils/blockchain");
6
+ const injector_1 = require("../../../../../../core/injector/injector");
7
+ const eddy_bridge_contract_addresses_1 = require("../constants/eddy-bridge-contract-addresses");
8
+ class EddyBridgeApiService {
9
+ static async getWeiTokenLimitInForeignChain(tokenSymbol) {
10
+ const { foreignCoins } = await injector_1.Injector.httpClient.get(`https://zetachain.blockpi.network/lcd/v1/public/zeta-chain/fungible/foreign_coins`);
11
+ const zrc20TokenAddress = eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS[tokenSymbol];
12
+ const tokenInfo = foreignCoins.find(token => (0, blockchain_1.compareAddresses)(token.zrc20_contract_address, zrc20TokenAddress));
13
+ if (!tokenInfo) {
14
+ throw new errors_1.NotSupportedTokensError();
15
+ }
16
+ return tokenInfo.liquidity_cap;
17
+ }
18
+ }
19
+ exports.EddyBridgeApiService = EddyBridgeApiService;
20
+ //# sourceMappingURL=eddy-bridge-api-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-bridge-api-service.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-api-service.ts"],"names":[],"mappings":";;;AAAA,8CAA4D;AAC5D,4DAA+D;AAC/D,yDAAsD;AAEtD,gGAAgG;AAGhG,MAAa,oBAAoB;IACtB,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,WAAmB;QAClE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,mBAAQ,CAAC,UAAU,CAAC,GAAG,CAClD,mFAAmF,CACtF,CAAC;QACF,MAAM,iBAAiB,GAAG,kEAAiC,CAAC,WAAW,CAAE,CAAC;QAE1E,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACxC,IAAA,6BAAgB,EAAC,KAAK,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CACpE,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,gCAAuB,EAAE,CAAC;SACvC;QAED,OAAO,SAAS,CAAC,aAAa,CAAC;IACnC,CAAC;CACJ;AAjBD,oDAiBC"}
@@ -0,0 +1,12 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PriceTokenAmount } from '../../../../../../common/tokens';
3
+ import { EvmBlockchainName } from '../../../../../../core/blockchain/models/blockchain-name';
4
+ export declare class EddyBridgeContractService {
5
+ static getPlatformFee(): Promise<number>;
6
+ static getGasInTargetChain(from: PriceTokenAmount<EvmBlockchainName>): Promise<BigNumber>;
7
+ /**
8
+ *
9
+ * @returns eddy static slippage from 0 to 1
10
+ */
11
+ static getEddySlipage(): Promise<number>;
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EddyBridgeContractService = void 0;
4
+ const blockchain_name_1 = require("../../../../../../core/blockchain/models/blockchain-name");
5
+ const web3_pure_1 = require("../../../../../../core/blockchain/web3-pure/web3-pure");
6
+ const injector_1 = require("../../../../../../core/injector/injector");
7
+ const eddy_bridge_contract_addresses_1 = require("../constants/eddy-bridge-contract-addresses");
8
+ const edyy_bridge_abi_1 = require("../constants/edyy-bridge-abi");
9
+ const zrc_20_token_abi_1 = require("../constants/zrc-20-token-abi");
10
+ class EddyBridgeContractService {
11
+ static async getPlatformFee() {
12
+ const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN);
13
+ const res = await web3Public.callContractMethod(eddy_bridge_contract_addresses_1.EDDY_CONTRACT_ADDRESS_IN_ZETACHAIN, edyy_bridge_abi_1.EDDY_BRIDGE_ABI, 'platformFee', []);
14
+ // eddy currently takes 1% from bridged amount (platformFee = 10, ratioToAmount in than case = 0.99)
15
+ return res / 1000;
16
+ }
17
+ static async getGasInTargetChain(from) {
18
+ const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN);
19
+ const res = await web3Public.callContractMethod(from.address, zrc_20_token_abi_1.ZRC_20_ABI, 'withdrawGasFee', []);
20
+ const gasFeeNonWei = web3_pure_1.Web3Pure.fromWei(res?.[1] || 0, from.decimals);
21
+ return gasFeeNonWei;
22
+ }
23
+ /**
24
+ *
25
+ * @returns eddy static slippage from 0 to 1
26
+ */
27
+ static async getEddySlipage() {
28
+ const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN);
29
+ const res = await web3Public.callContractMethod(eddy_bridge_contract_addresses_1.EDDY_CONTRACT_ADDRESS_IN_ZETACHAIN, edyy_bridge_abi_1.EDDY_BRIDGE_ABI, 'slippage', []);
30
+ // if res equals to 10 then 10 / 1000 = 1%
31
+ return res / 1000;
32
+ }
33
+ }
34
+ exports.EddyBridgeContractService = EddyBridgeContractService;
35
+ //# sourceMappingURL=eddy-bridge-contract-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-bridge-contract-service.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/services/eddy-bridge-contract-service.ts"],"names":[],"mappings":";;;AAEA,gFAAgG;AAChG,uEAAmE;AACnE,yDAAsD;AAEtD,gGAAiG;AACjG,kEAA+D;AAC/D,oEAA2D;AAE3D,MAAa,yBAAyB;IAC3B,MAAM,CAAC,KAAK,CAAC,cAAc;QAC9B,MAAM,UAAU,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,iCAAe,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAC3C,mEAAkC,EAClC,iCAAe,EACf,aAAa,EACb,EAAE,CACL,CAAC;QACF,oGAAoG;QACpG,OAAO,GAAG,GAAG,IAAK,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACnC,IAAyC;QAEzC,MAAM,UAAU,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,iCAAe,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAC3C,IAAI,CAAC,OAAO,EACZ,6BAAU,EACV,gBAAgB,EAChB,EAAE,CACL,CAAC;QACF,MAAM,YAAY,GAAG,oBAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpE,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc;QAC9B,MAAM,UAAU,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,iCAAe,CAAC,SAAS,CAAC,CAAC;QACvF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAC3C,mEAAkC,EAClC,iCAAe,EACf,UAAU,EACV,EAAE,CACL,CAAC;QACF,0CAA0C;QAC1C,OAAO,GAAG,GAAG,IAAK,CAAC;IACvB,CAAC;CACJ;AA3CD,8DA2CC"}
@@ -0,0 +1,9 @@
1
+ import { PriceToken, PriceTokenAmount } from '../../../../../../common/tokens';
2
+ import { EvmBlockchainName } from '../../../../../../core/blockchain/models/blockchain-name';
3
+ export declare const ERD: {
4
+ readonly ANY_CHAIN_NATIVE_TO_ZETA_NATIVE: "ANY_CHAIN_NATIVE_TO_ZETA_NATIVE";
5
+ readonly ZETA_NATIVE_TO_ANY_CHAIN_NATIVE: "ZETA_NATIVE_TO_ANY_CHAIN_NATIVE";
6
+ readonly ZETA_TOKEN_TO_ANY_CHAIN_NATIVE: "ZETA_TOKEN_TO_ANY_CHAIN_NATIVE";
7
+ };
8
+ export type EddyRoutingDirection = (typeof ERD)[keyof typeof ERD];
9
+ export declare function eddyRoutingDirection(from: PriceTokenAmount<EvmBlockchainName>, to: PriceToken<EvmBlockchainName>): EddyRoutingDirection;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eddyRoutingDirection = exports.ERD = void 0;
4
+ const errors_1 = require("../../../../../../common/errors");
5
+ const blockchain_1 = require("../../../../../../common/utils/blockchain");
6
+ const blockchain_name_1 = require("../../../../../../core/blockchain/models/blockchain-name");
7
+ const eddy_bridge_contract_addresses_1 = require("../constants/eddy-bridge-contract-addresses");
8
+ // Eddy Routing Direction
9
+ exports.ERD = {
10
+ ANY_CHAIN_NATIVE_TO_ZETA_NATIVE: 'ANY_CHAIN_NATIVE_TO_ZETA_NATIVE',
11
+ ZETA_NATIVE_TO_ANY_CHAIN_NATIVE: 'ZETA_NATIVE_TO_ANY_CHAIN_NATIVE',
12
+ ZETA_TOKEN_TO_ANY_CHAIN_NATIVE: 'ZETA_TOKEN_TO_ANY_CHAIN_NATIVE'
13
+ };
14
+ function eddyRoutingDirection(from, to) {
15
+ if (from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN &&
16
+ Object.values(eddy_bridge_contract_addresses_1.TOKEN_SYMBOL_TO_ZETACHAIN_ADDRESS).some(zrc20Address => (0, blockchain_1.compareAddresses)(zrc20Address, from.address))) {
17
+ return exports.ERD.ZETA_TOKEN_TO_ANY_CHAIN_NATIVE;
18
+ }
19
+ if (from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN && from.isNative) {
20
+ return exports.ERD.ZETA_NATIVE_TO_ANY_CHAIN_NATIVE;
21
+ }
22
+ if (from.blockchain !== blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN && from.isNative && to.isNative) {
23
+ return exports.ERD.ANY_CHAIN_NATIVE_TO_ZETA_NATIVE;
24
+ }
25
+ throw new errors_1.NotSupportedTokensError();
26
+ }
27
+ exports.eddyRoutingDirection = eddyRoutingDirection;
28
+ //# sourceMappingURL=eddy-bridge-routing-directions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eddy-bridge-routing-directions.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/eddy-bridge/utils/eddy-bridge-routing-directions.ts"],"names":[],"mappings":";;;AAAA,8CAA4D;AAE5D,4DAA+D;AAC/D,gFAAgG;AAEhG,gGAAgG;AAEhG,yBAAyB;AACZ,QAAA,GAAG,GAAG;IACf,+BAA+B,EAAE,iCAAiC;IAClE,+BAA+B,EAAE,iCAAiC;IAClE,8BAA8B,EAAE,gCAAgC;CAC1D,CAAC;AAIX,SAAgB,oBAAoB,CAChC,IAAyC,EACzC,EAAiC;IAEjC,IACI,IAAI,CAAC,UAAU,KAAK,iCAAe,CAAC,SAAS;QAC7C,MAAM,CAAC,MAAM,CAAC,kEAAiC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CACjE,IAAA,6BAAgB,EAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAC/C,EACH;QACE,OAAO,WAAG,CAAC,8BAA8B,CAAC;KAC7C;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,iCAAe,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;QAChE,OAAO,WAAG,CAAC,+BAA+B,CAAC;KAC9C;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,iCAAe,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE;QAC/E,OAAO,WAAG,CAAC,+BAA+B,CAAC;KAC9C;IACD,MAAM,IAAI,gCAAuB,EAAE,CAAC;AACxC,CAAC;AAnBD,oDAmBC"}