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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) 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/models/on-chain-manager-aggregators-types.d.ts +2 -0
  94. package/lib/features/on-chain/calculation-manager/models/on-chain-manager-aggregators-types.js +3 -1
  95. package/lib/features/on-chain/calculation-manager/models/on-chain-manager-aggregators-types.js.map +1 -1
  96. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/models/okuswap-api-types.d.ts +6 -3
  97. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-provider.js +13 -9
  98. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-provider.js.map +1 -1
  99. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-trade.d.ts +2 -0
  100. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-trade.js +15 -0
  101. package/lib/features/on-chain/calculation-manager/providers/aggregators/okuswap/okuswap-on-chain-trade.js.map +1 -1
  102. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.d.ts +1 -0
  103. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.js +1 -0
  104. package/lib/features/on-chain/calculation-manager/providers/common/models/on-chain-trade-type.js.map +1 -1
  105. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/default-constants.d.ts +3 -0
  106. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/default-constants.js +18 -0
  107. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/default-constants.js.map +1 -0
  108. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/constants.d.ts +2 -0
  109. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/constants.js +7 -0
  110. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/constants.js.map +1 -0
  111. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-provider.d.ts +9 -0
  112. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-provider.js +23 -0
  113. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-provider.js.map +1 -0
  114. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-trade.d.ts +9 -0
  115. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-trade.js +27 -0
  116. package/lib/features/on-chain/calculation-manager/providers/dexes/bahamut/uniswap-v2-bahamut/uniswap-v2-bahamut-trade.js.map +1 -0
  117. package/lib/features/on-chain/calculation-manager/providers/dexes/mode/eddy-finance-mode/eddy-finance-mode-trade.js +1 -1
  118. package/lib/features/on-chain/calculation-manager/providers/dexes/mode/eddy-finance-mode/eddy-finance-mode-trade.js.map +1 -1
  119. package/lib/index.d.ts +17 -0
  120. package/lib/index.js +17 -0
  121. package/lib/index.js.map +1 -1
  122. 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"}