rubic-sdk 5.19.1-alpha.lifi.1 → 5.19.1-alpha.lifi.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/lib/common/utils/blockchain.js +1 -1
  2. package/lib/common/utils/blockchain.js.map +1 -1
  3. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.d.ts +2 -1
  4. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.js +3 -1
  5. package/lib/features/cross-chain/calculation-manager/constants/cross-chain-providers.js.map +1 -1
  6. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.d.ts +1 -0
  7. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.js +2 -1
  8. package/lib/features/cross-chain/calculation-manager/models/cross-chain-trade-type.js.map +1 -1
  9. package/lib/features/cross-chain/calculation-manager/providers/common/cross-chain-trade.js +0 -8
  10. package/lib/features/cross-chain/calculation-manager/providers/common/cross-chain-trade.js.map +1 -1
  11. package/lib/features/cross-chain/calculation-manager/providers/common/models/bridge-type.d.ts +2 -1
  12. package/lib/features/cross-chain/calculation-manager/providers/common/models/default-bridge-type.d.ts +1 -0
  13. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-provider.js +1 -1
  14. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-provider.js.map +1 -1
  15. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-trade.d.ts +2 -1
  16. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-trade.js +22 -3
  17. package/lib/features/cross-chain/calculation-manager/providers/lifi-provider/lifi-cross-chain-trade.js.map +1 -1
  18. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-abi.d.ts +2 -0
  19. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-abi.js +17 -0
  20. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-abi.js.map +1 -0
  21. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-contract-addresses.d.ts +2 -0
  22. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-contract-addresses.js +38 -0
  23. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-contract-addresses.js.map +1 -0
  24. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-cross-chain-supported-chains.d.ts +2 -0
  25. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-cross-chain-supported-chains.js +38 -0
  26. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/constants/meson-cross-chain-supported-chains.js.map +1 -0
  27. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-provider.d.ts +22 -0
  28. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-provider.js +160 -0
  29. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-provider.js.map +1 -0
  30. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-trade.d.ts +42 -0
  31. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-trade.js +123 -0
  32. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-trade.js.map +1 -0
  33. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-api-types.d.ts +99 -0
  34. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-api-types.js +3 -0
  35. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-api-types.js.map +1 -0
  36. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-provider-types.d.ts +8 -0
  37. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-provider-types.js +3 -0
  38. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-provider-types.js.map +1 -0
  39. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-trade-types.d.ts +26 -0
  40. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-trade-types.js +3 -0
  41. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-trade-types.js.map +1 -0
  42. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/services/meson-cross-chain-api-service.d.ts +10 -0
  43. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/services/meson-cross-chain-api-service.js +93 -0
  44. package/lib/features/cross-chain/calculation-manager/providers/meson-provider/services/meson-cross-chain-api-service.js.map +1 -0
  45. package/lib/features/cross-chain/calculation-manager/utils/get-cross-chain-gas-data.js +2 -1
  46. package/lib/features/cross-chain/calculation-manager/utils/get-cross-chain-gas-data.js.map +1 -1
  47. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.d.ts +1 -0
  48. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.js +6 -1
  49. package/lib/features/cross-chain/status-manager/cross-chain-status-manager.js.map +1 -1
  50. package/lib/index.d.ts +9 -0
  51. package/lib/index.js +9 -0
  52. package/lib/index.js.map +1 -1
  53. package/package.json +2 -2
@@ -0,0 +1,160 @@
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.MesonCrossChainProvider = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const errors_1 = require("../../../../../common/errors");
9
+ const tokens_1 = require("../../../../../common/tokens");
10
+ const blockchain_1 = require("../../../../../common/utils/blockchain");
11
+ const blockchain_id_1 = require("../../../../../core/blockchain/utils/blockchains-info/constants/blockchain-id");
12
+ const get_from_without_fee_1 = require("../../../../common/utils/get-from-without-fee");
13
+ const web3_1 = __importDefault(require("web3"));
14
+ const cross_chain_provider_1 = require("../common/cross-chain-provider");
15
+ const bridge_type_1 = require("../common/models/bridge-type");
16
+ const proxy_cross_chain_evm_trade_1 = require("../common/proxy-cross-chain-evm-facade/proxy-cross-chain-evm-trade");
17
+ const meson_cross_chain_supported_chains_1 = require("./constants/meson-cross-chain-supported-chains");
18
+ const meson_cross_chain_trade_1 = require("./meson-cross-chain-trade");
19
+ const meson_cross_chain_api_service_1 = require("./services/meson-cross-chain-api-service");
20
+ class MesonCrossChainProvider extends cross_chain_provider_1.CrossChainProvider {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.type = bridge_type_1.BRIDGE_TYPE.MESON;
24
+ }
25
+ isSupportedBlockchain(blockchain) {
26
+ return meson_cross_chain_supported_chains_1.mesonCrossChainSupportedChains.some(supportedBlockchain => supportedBlockchain === blockchain);
27
+ }
28
+ async calculate(from, toToken, options) {
29
+ const fromBlockchain = from.blockchain;
30
+ const useProxy = options?.useProxy?.[this.type] ?? true;
31
+ try {
32
+ if (!useProxy) {
33
+ throw new errors_1.RubicSdkError('Meson only supports proxy swaps!');
34
+ }
35
+ const fromWith6Decimals = this.getFromWith6Decimals(from);
36
+ const { max, min, mesonFee, sourceAssetString, targetAssetString } = await this.fetchTradeInfo(fromWith6Decimals, toToken);
37
+ const feeInfo = await this.getFeeInfo(fromBlockchain, options.providerAddress, from, useProxy);
38
+ const fromWithoutFee = (0, get_from_without_fee_1.getFromWithoutFee)(fromWith6Decimals, feeInfo.rubicProxy?.platformFee?.percent);
39
+ const toAmount = from.tokenAmount.minus(mesonFee);
40
+ const to = new tokens_1.PriceTokenAmount({
41
+ ...toToken.asStruct,
42
+ tokenAmount: toAmount
43
+ });
44
+ const gasData = options.gasCalculation === 'enabled'
45
+ ? await meson_cross_chain_trade_1.MesonCrossChainTrade.getGasData({
46
+ from: fromWithoutFee,
47
+ feeInfo,
48
+ toToken: to,
49
+ providerAddress: options.providerAddress,
50
+ sourceAssetString,
51
+ targetAssetString
52
+ })
53
+ : null;
54
+ const trade = new meson_cross_chain_trade_1.MesonCrossChainTrade({
55
+ crossChainTrade: {
56
+ feeInfo,
57
+ from: fromWithoutFee,
58
+ gasData,
59
+ to,
60
+ priceImpact: from.calculatePriceImpactPercent(to),
61
+ sourceAssetString,
62
+ targetAssetString
63
+ },
64
+ providerAddress: options.providerAddress,
65
+ routePath: await this.getRoutePath(from, to)
66
+ });
67
+ if (from.tokenAmount.lt(min)) {
68
+ return {
69
+ trade,
70
+ error: new errors_1.MinAmountError(min, from.symbol),
71
+ tradeType: this.type
72
+ };
73
+ }
74
+ if (from.tokenAmount.gt(max)) {
75
+ return {
76
+ trade,
77
+ error: new errors_1.MaxAmountError(max, from.symbol),
78
+ tradeType: this.type
79
+ };
80
+ }
81
+ return { trade, tradeType: this.type };
82
+ }
83
+ catch (err) {
84
+ const rubicSdkError = cross_chain_provider_1.CrossChainProvider.parseError(err);
85
+ return {
86
+ trade: null,
87
+ error: rubicSdkError,
88
+ tradeType: this.type
89
+ };
90
+ }
91
+ }
92
+ async fetchTradeInfo(sourceToken, targetToken) {
93
+ const mesonChains = await meson_cross_chain_api_service_1.MesonCcrApiService.fetchChainsLimits();
94
+ const sourceTokenInfo = this.getApiTokenInfo(sourceToken, mesonChains);
95
+ const targetTokenInfo = this.getApiTokenInfo(targetToken, mesonChains);
96
+ const mesonChainsSymbols = this.getTxChainsSymbols(sourceToken, targetToken, mesonChains);
97
+ const sourceAssetString = `${mesonChainsSymbols[0]}:${sourceTokenInfo.id}`;
98
+ const targetAssetString = `${mesonChainsSymbols[1]}:${targetTokenInfo.id}`;
99
+ const mesonFee = await meson_cross_chain_api_service_1.MesonCcrApiService.fetchMesonFee(sourceAssetString, targetAssetString, sourceToken.tokenAmount.toFixed());
100
+ return {
101
+ mesonFee,
102
+ sourceAssetString,
103
+ targetAssetString,
104
+ min: new bignumber_js_1.default(sourceTokenInfo.min),
105
+ max: new bignumber_js_1.default(sourceTokenInfo.max)
106
+ };
107
+ }
108
+ getApiTokenInfo(token, apiChains) {
109
+ const chainId = blockchain_id_1.blockchainId[token.blockchain];
110
+ const hexChainId = web3_1.default.utils.toHex(chainId);
111
+ const foundChain = apiChains.find(chain => (0, blockchain_1.compareAddresses)(chain.chainId, hexChainId));
112
+ if (!foundChain) {
113
+ throw new errors_1.NotSupportedBlockchain();
114
+ }
115
+ const foundToken = token.isNative
116
+ ? foundChain.tokens.find(apiToken => !Object.hasOwn(apiToken, 'addr'))
117
+ : foundChain.tokens.find(apiToken => (0, blockchain_1.compareAddresses)(apiToken.addr, token.address));
118
+ if (!foundToken) {
119
+ throw new errors_1.NotSupportedTokensError();
120
+ }
121
+ return foundToken;
122
+ }
123
+ getTxChainsSymbols(sourceToken, targetToken, apiChains) {
124
+ const sourceChainIdHex = web3_1.default.utils.toHex(blockchain_id_1.blockchainId[sourceToken.blockchain]);
125
+ const targetChainIdHex = web3_1.default.utils.toHex(blockchain_id_1.blockchainId[targetToken.blockchain]);
126
+ const ids = ['', ''];
127
+ for (const chain of apiChains) {
128
+ if (ids[0] && ids[1])
129
+ break;
130
+ if ((0, blockchain_1.compareAddresses)(chain.chainId, sourceChainIdHex))
131
+ ids[0] = chain.id;
132
+ if ((0, blockchain_1.compareAddresses)(chain.chainId, targetChainIdHex))
133
+ ids[1] = chain.id;
134
+ }
135
+ return ids;
136
+ }
137
+ /**
138
+ * Meson inputs only value with 6 or less decimals in swap request
139
+ */
140
+ getFromWith6Decimals(from) {
141
+ const stringAmount = from.tokenAmount.toFixed();
142
+ const [, decimals] = stringAmount.split('.');
143
+ if (!decimals || decimals.length <= 6) {
144
+ return from;
145
+ }
146
+ const amount = from.tokenAmount.decimalPlaces(6, bignumber_js_1.default.ROUND_DOWN);
147
+ return new tokens_1.PriceTokenAmount({
148
+ ...from.asStruct,
149
+ tokenAmount: amount
150
+ });
151
+ }
152
+ async getRoutePath(fromToken, toToken) {
153
+ return [{ type: 'cross-chain', provider: this.type, path: [fromToken, toToken] }];
154
+ }
155
+ async getFeeInfo(fromBlockchain, providerAddress, percentFeeToken, useProxy) {
156
+ return proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getFeeInfo(fromBlockchain, providerAddress, percentFeeToken, useProxy);
157
+ }
158
+ }
159
+ exports.MesonCrossChainProvider = MesonCrossChainProvider;
160
+ //# sourceMappingURL=meson-cross-chain-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meson-cross-chain-provider.js","sourceRoot":"","sources":["../../../../../../src/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PriceTokenAmount } from '../../../../../common/tokens';
3
+ import { EvmBlockchainName } from '../../../../../core/blockchain/models/blockchain-name';
4
+ import { EvmEncodeConfig } from '../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/models/evm-encode-config';
5
+ import { ContractParams } from '../../../../common/models/contract-params';
6
+ import { CrossChainTradeType } from '../../models/cross-chain-trade-type';
7
+ import { EvmCrossChainTrade } from '../common/emv-cross-chain-trade/evm-cross-chain-trade';
8
+ import { GasData } from '../common/emv-cross-chain-trade/models/gas-data';
9
+ import { BridgeType } from '../common/models/bridge-type';
10
+ import { FeeInfo } from '../common/models/fee-info';
11
+ import { GetContractParamsOptions } from '../common/models/get-contract-params-options';
12
+ import { OnChainSubtype } from '../common/models/on-chain-subtype';
13
+ import { TradeInfo } from '../common/models/trade-info';
14
+ import { MesonCrossChainTradeConstructorParams, MesonGetGasDataParams } from './models/meson-trade-types';
15
+ export declare class MesonCrossChainTrade extends EvmCrossChainTrade {
16
+ /** @internal */
17
+ static getGasData({ feeInfo, from, providerAddress, sourceAssetString, targetAssetString, toToken }: MesonGetGasDataParams): Promise<GasData | null>;
18
+ /**ABSTRACT PROPS */
19
+ readonly type: CrossChainTradeType;
20
+ readonly isAggregator: boolean;
21
+ readonly to: PriceTokenAmount<EvmBlockchainName>;
22
+ readonly from: PriceTokenAmount<EvmBlockchainName>;
23
+ readonly toTokenAmountMin: BigNumber;
24
+ readonly feeInfo: FeeInfo;
25
+ readonly onChainSubtype: OnChainSubtype;
26
+ readonly bridgeType: BridgeType;
27
+ readonly gasData: GasData;
28
+ readonly priceImpact: number | null;
29
+ /** */
30
+ private readonly sourceAssetString;
31
+ private readonly targetAssetString;
32
+ private get fromBlockchain();
33
+ protected get fromContractAddress(): string;
34
+ protected get methodName(): string;
35
+ constructor(params: MesonCrossChainTradeConstructorParams);
36
+ getContractParams(options: GetContractParamsOptions): Promise<ContractParams>;
37
+ protected getTransactionConfigAndAmount(receiverAddress?: string): Promise<{
38
+ config: EvmEncodeConfig;
39
+ amount: string;
40
+ }>;
41
+ getTradeInfo(): TradeInfo;
42
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MesonCrossChainTrade = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const evm_web3_pure_1 = require("../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure");
6
+ const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type");
7
+ const get_cross_chain_gas_data_1 = require("../../utils/get-cross-chain-gas-data");
8
+ const rubic_proxy_contract_address_1 = require("../common/constants/rubic-proxy-contract-address");
9
+ const evm_common_cross_chain_abi_1 = require("../common/emv-cross-chain-trade/constants/evm-common-cross-chain-abi");
10
+ const gateway_rubic_cross_chain_abi_1 = require("../common/emv-cross-chain-trade/constants/gateway-rubic-cross-chain-abi");
11
+ const evm_cross_chain_trade_1 = require("../common/emv-cross-chain-trade/evm-cross-chain-trade");
12
+ const bridge_type_1 = require("../common/models/bridge-type");
13
+ const proxy_cross_chain_evm_trade_1 = require("../common/proxy-cross-chain-evm-facade/proxy-cross-chain-evm-trade");
14
+ const meson_abi_1 = require("./constants/meson-abi");
15
+ const meson_contract_addresses_1 = require("./constants/meson-contract-addresses");
16
+ const meson_cross_chain_api_service_1 = require("./services/meson-cross-chain-api-service");
17
+ class MesonCrossChainTrade extends evm_cross_chain_trade_1.EvmCrossChainTrade {
18
+ /** @internal */
19
+ static async getGasData({ feeInfo, from, providerAddress, sourceAssetString, targetAssetString, toToken }) {
20
+ try {
21
+ const trade = new MesonCrossChainTrade({
22
+ crossChainTrade: {
23
+ from,
24
+ to: toToken,
25
+ gasData: null,
26
+ priceImpact: 0,
27
+ feeInfo,
28
+ sourceAssetString,
29
+ targetAssetString
30
+ },
31
+ providerAddress: providerAddress || evm_web3_pure_1.EvmWeb3Pure.EMPTY_ADDRESS,
32
+ routePath: []
33
+ });
34
+ return (0, get_cross_chain_gas_data_1.getCrossChainGasData)(trade);
35
+ }
36
+ catch (_err) {
37
+ return null;
38
+ }
39
+ }
40
+ get fromBlockchain() {
41
+ return this.from.blockchain;
42
+ }
43
+ get fromContractAddress() {
44
+ return this.isProxyTrade
45
+ ? rubic_proxy_contract_address_1.rubicProxyContractAddress[this.fromBlockchain].gateway
46
+ : meson_contract_addresses_1.mesonContractAddresses[this.fromBlockchain];
47
+ }
48
+ get methodName() {
49
+ return 'startBridgeTokensViaGenericCrossChain';
50
+ }
51
+ constructor(params) {
52
+ super(params.providerAddress, params.routePath);
53
+ /**ABSTRACT PROPS */
54
+ this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.MESON;
55
+ this.isAggregator = false;
56
+ this.onChainSubtype = { from: undefined, to: undefined };
57
+ this.bridgeType = bridge_type_1.BRIDGE_TYPE.MESON;
58
+ this.to = params.crossChainTrade.to;
59
+ this.from = params.crossChainTrade.from;
60
+ this.feeInfo = params.crossChainTrade.feeInfo;
61
+ this.gasData = params.crossChainTrade.gasData;
62
+ this.priceImpact = params.crossChainTrade.priceImpact;
63
+ this.toTokenAmountMin = this.to.tokenAmount;
64
+ this.sourceAssetString = params.crossChainTrade.sourceAssetString;
65
+ this.targetAssetString = params.crossChainTrade.targetAssetString;
66
+ }
67
+ async getContractParams(options) {
68
+ const receiverAddress = options?.receiverAddress || this.walletAddress;
69
+ const { data, value: providerValue, to: providerRouter } = await this.setTransactionConfig(false, options?.useCacheData || false, options?.receiverAddress || this.walletAddress);
70
+ const bridgeData = proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getBridgeData(options, {
71
+ walletAddress: receiverAddress,
72
+ fromTokenAmount: this.from,
73
+ toTokenAmount: this.to,
74
+ srcChainTrade: null,
75
+ providerAddress: this.providerAddress,
76
+ type: `native:${this.bridgeType}`,
77
+ fromAddress: this.walletAddress
78
+ });
79
+ const extraNativeFee = '0';
80
+ const providerData = await proxy_cross_chain_evm_trade_1.ProxyCrossChainEvmTrade.getGenericProviderData(providerRouter, data, this.from.blockchain, providerRouter, extraNativeFee);
81
+ const methodArguments = [bridgeData, providerData];
82
+ const value = this.getSwapValue(providerValue);
83
+ 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);
84
+ const sendingToken = this.from.isNative ? [] : [this.from.address];
85
+ const sendingAmount = this.from.isNative ? [] : [this.from.stringWeiAmount];
86
+ return {
87
+ contractAddress: rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].gateway,
88
+ contractAbi: gateway_rubic_cross_chain_abi_1.gatewayRubicCrossChainAbi,
89
+ methodName: 'startViaRubic',
90
+ methodArguments: [sendingToken, sendingAmount, transactionConfiguration.data],
91
+ value
92
+ };
93
+ }
94
+ async getTransactionConfigAndAmount(receiverAddress) {
95
+ const rubicMultiProxyAddress = rubic_proxy_contract_address_1.rubicProxyContractAddress[this.fromBlockchain].router;
96
+ const fromAddress = this.isProxyTrade ? rubicMultiProxyAddress : this.walletAddress;
97
+ const { encoded, initiator } = await meson_cross_chain_api_service_1.MesonCcrApiService.fetchInfoForTx({
98
+ sourceAssetString: this.sourceAssetString,
99
+ targetAssetString: this.targetAssetString,
100
+ amount: this.from.tokenAmount.toFixed(),
101
+ fromAddress,
102
+ receiverAddress: receiverAddress || this.walletAddress,
103
+ useProxy: this.isProxyTrade
104
+ });
105
+ const postingValue = ethers_1.ethers.utils.solidityPack(['address', 'uint40'], [initiator, 1]);
106
+ const methodName = 'postSwapFromContract';
107
+ const methodArgs = [encoded, postingValue, rubicMultiProxyAddress];
108
+ const value = this.from.isNative ? this.from.stringWeiAmount : '0';
109
+ const config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(meson_contract_addresses_1.mesonContractAddresses[this.fromBlockchain], meson_abi_1.MESON_ABI, methodName, methodArgs, value);
110
+ return { config, amount: this.to.stringWeiAmount };
111
+ }
112
+ getTradeInfo() {
113
+ return {
114
+ estimatedGas: this.estimatedGas,
115
+ feeInfo: this.feeInfo,
116
+ priceImpact: this.priceImpact || null,
117
+ slippage: 0,
118
+ routePath: this.routePath
119
+ };
120
+ }
121
+ }
122
+ exports.MesonCrossChainTrade = MesonCrossChainTrade;
123
+ //# sourceMappingURL=meson-cross-chain-trade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meson-cross-chain-trade.js","sourceRoot":"","sources":["../../../../../../src/features/cross-chain/calculation-manager/providers/meson-provider/meson-cross-chain-trade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ export type MesonErrorRes<T> = {
2
+ error: {
3
+ error: {
4
+ code: number;
5
+ data: {
6
+ swapData: T;
7
+ };
8
+ message: string;
9
+ };
10
+ };
11
+ };
12
+ export type MesonSuccessRes<T> = {
13
+ result: T;
14
+ };
15
+ export type SrcDstChainsIds = [string, string];
16
+ export interface MesonChainsInfo {
17
+ result: MesonChain[];
18
+ }
19
+ export interface MesonChain {
20
+ id: string;
21
+ name: string;
22
+ chainId: string;
23
+ address: string;
24
+ tokens: Array<{
25
+ id: string;
26
+ addr?: string;
27
+ }>;
28
+ }
29
+ export interface MesonLimitsResponse {
30
+ result: MesonLimitsChain[];
31
+ }
32
+ export interface MesonLimitsChain {
33
+ id: string;
34
+ name: string;
35
+ chainId: string;
36
+ address: string;
37
+ tokens: MesonLimitsToken[];
38
+ }
39
+ export interface MesonLimitsToken {
40
+ id: string;
41
+ addr?: string;
42
+ min: string;
43
+ max: string;
44
+ }
45
+ export interface FetchEncodedParamRequest {
46
+ sourceAssetString: string;
47
+ targetAssetString: string;
48
+ amount: string;
49
+ fromAddress: string;
50
+ receiverAddress: string;
51
+ useProxy: boolean;
52
+ }
53
+ export interface EncodeSwapSchema {
54
+ encoded: string;
55
+ fromAddress: string;
56
+ fromContract: string;
57
+ recipient: string;
58
+ fee: {
59
+ serviceFee: string;
60
+ lpFee: string;
61
+ totalFee: string;
62
+ signingRequest: object;
63
+ };
64
+ converted?: {
65
+ amount: string;
66
+ token: string;
67
+ };
68
+ initiator: string;
69
+ }
70
+ export interface TxFeeSchema {
71
+ serviceFee: string;
72
+ lpFee: string;
73
+ totalFee: string;
74
+ converted?: {
75
+ amount: string;
76
+ token: string;
77
+ };
78
+ }
79
+ export interface TxStatusSchema {
80
+ expired?: boolean;
81
+ LOCKED: string;
82
+ BONDED: string;
83
+ EXECUTED: string;
84
+ RELEASED: string;
85
+ swap: {
86
+ id: string;
87
+ encoded: string;
88
+ from: {
89
+ amount: string;
90
+ network: string;
91
+ token: string;
92
+ };
93
+ to: {
94
+ amount: string;
95
+ network: string;
96
+ token: string;
97
+ };
98
+ };
99
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=meson-api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meson-api-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-api-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import BigNumber from 'bignumber.js';
2
+ export interface FetchedMesonTradeInfo {
3
+ mesonFee: string;
4
+ sourceAssetString: string;
5
+ targetAssetString: string;
6
+ min: BigNumber;
7
+ max: BigNumber;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=meson-provider-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meson-provider-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-provider-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { PriceTokenAmount } from '../../../../../../common/tokens';
2
+ import { EvmBlockchainName } from '../../../../../../core/blockchain/models/blockchain-name';
3
+ import { GasData } from '../../common/emv-cross-chain-trade/models/gas-data';
4
+ import { FeeInfo } from '../../common/models/fee-info';
5
+ import { RubicStep } from '../../common/models/rubicStep';
6
+ export interface MesonCrossChainTradeConstructorParams {
7
+ crossChainTrade: {
8
+ from: PriceTokenAmount<EvmBlockchainName>;
9
+ to: PriceTokenAmount<EvmBlockchainName>;
10
+ gasData: GasData | null;
11
+ feeInfo: FeeInfo;
12
+ priceImpact: number | null;
13
+ sourceAssetString: string;
14
+ targetAssetString: string;
15
+ };
16
+ providerAddress: string;
17
+ routePath: RubicStep[];
18
+ }
19
+ export interface MesonGetGasDataParams {
20
+ from: PriceTokenAmount<EvmBlockchainName>;
21
+ toToken: PriceTokenAmount<EvmBlockchainName>;
22
+ feeInfo: FeeInfo;
23
+ providerAddress: string;
24
+ sourceAssetString: string;
25
+ targetAssetString: string;
26
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=meson-trade-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meson-trade-types.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/meson-provider/models/meson-trade-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { TxStatusData } from '../../../../../common/status-manager/models/tx-status-data';
2
+ import { EncodeSwapSchema, FetchEncodedParamRequest, MesonLimitsChain } from '../models/meson-api-types';
3
+ export declare class MesonCcrApiService {
4
+ private static apiUrl;
5
+ static fetchMesonFee(sourceAssetString: string, targetAssetString: string, amount: string): Promise<string>;
6
+ static fetchChainsLimits(): Promise<MesonLimitsChain[]>;
7
+ static fetchInfoForTx(params: FetchEncodedParamRequest): Promise<EncodeSwapSchema>;
8
+ static fetchTxStatus(srcTxHash: string): Promise<TxStatusData>;
9
+ private static parseMesonError;
10
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MesonCcrApiService = void 0;
4
+ const errors_1 = require("../../../../../../common/errors");
5
+ const tx_status_1 = require("../../../../../../core/blockchain/web3-public-service/web3-public/models/tx-status");
6
+ const injector_1 = require("../../../../../../core/injector/injector");
7
+ class MesonCcrApiService {
8
+ static async fetchMesonFee(sourceAssetString, targetAssetString, amount) {
9
+ try {
10
+ const res = await injector_1.Injector.httpClient.post(`${this.apiUrl}/price`, {
11
+ from: sourceAssetString,
12
+ to: targetAssetString,
13
+ amount
14
+ });
15
+ if ('converted' in res.result) {
16
+ throw new errors_1.RubicSdkError('converted');
17
+ }
18
+ return res.result.totalFee;
19
+ }
20
+ catch (e) {
21
+ const res = this.parseMesonError(e);
22
+ return res.totalFee;
23
+ }
24
+ }
25
+ static async fetchChainsLimits() {
26
+ const { result: chains } = await injector_1.Injector.httpClient.get(`${this.apiUrl}/limits`);
27
+ return chains;
28
+ }
29
+ static async fetchInfoForTx(params) {
30
+ try {
31
+ const res = await injector_1.Injector.httpClient.post(`${this.apiUrl}/swap`, {
32
+ from: params.sourceAssetString,
33
+ to: params.targetAssetString,
34
+ amount: params.amount,
35
+ fromAddress: params.fromAddress,
36
+ fromContract: params.useProxy,
37
+ recipient: params.receiverAddress
38
+ });
39
+ if ('converted' in res.result) {
40
+ throw new errors_1.RubicSdkError('converted');
41
+ }
42
+ return res.result;
43
+ }
44
+ catch (e) {
45
+ const res = this.parseMesonError(e);
46
+ return res;
47
+ }
48
+ }
49
+ static async fetchTxStatus(srcTxHash) {
50
+ try {
51
+ const res = await injector_1.Injector.httpClient.get(`${this.apiUrl}/swap`, {
52
+ params: {
53
+ hash: srcTxHash
54
+ }
55
+ });
56
+ if (res.result.expired) {
57
+ return {
58
+ hash: null,
59
+ status: tx_status_1.TX_STATUS.FAIL
60
+ };
61
+ }
62
+ if (res.result.RELEASED) {
63
+ return {
64
+ hash: res.result.RELEASED,
65
+ status: tx_status_1.TX_STATUS.SUCCESS
66
+ };
67
+ }
68
+ return {
69
+ hash: null,
70
+ status: tx_status_1.TX_STATUS.PENDING
71
+ };
72
+ }
73
+ catch {
74
+ return {
75
+ hash: null,
76
+ status: tx_status_1.TX_STATUS.PENDING
77
+ };
78
+ }
79
+ }
80
+ static parseMesonError(err) {
81
+ if (err.message?.includes('converted')) {
82
+ throw new errors_1.NotSupportedTokensError();
83
+ }
84
+ const { error: { error: { data: { swapData } } } } = err;
85
+ if ('converted' in swapData) {
86
+ throw new errors_1.NotSupportedTokensError();
87
+ }
88
+ return swapData;
89
+ }
90
+ }
91
+ exports.MesonCcrApiService = MesonCcrApiService;
92
+ MesonCcrApiService.apiUrl = 'https://relayer.meson.fi/api/v1';
93
+ //# sourceMappingURL=meson-cross-chain-api-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meson-cross-chain-api-service.js","sourceRoot":"","sources":["../../../../../../../src/features/cross-chain/calculation-manager/providers/meson-provider/services/meson-cross-chain-api-service.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,8 @@ const getCrossChainGasData = async (trade, receiverAddress) => {
14
14
  const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(fromBlockchain);
15
15
  const tx = await trade.encode({
16
16
  receiverAddress: receiverAddress,
17
- fromAddress: walletAddress
17
+ fromAddress: walletAddress,
18
+ useCacheData: true
18
19
  });
19
20
  const [gasLimit, gasDetails] = await Promise.all([
20
21
  web3Public.getEstimatedGasByData(walletAddress, tx.to, {
@@ -1 +1 @@
1
- {"version":3,"file":"get-cross-chain-gas-data.js","sourceRoot":"","sources":["../../../../../src/features/cross-chain/calculation-manager/utils/get-cross-chain-gas-data.ts"],"names":[],"mappings":";;;AAAA,uEAAmE;AACnE,yDAAsD;AAGtD,4GAA0G;AAEnG,MAAM,oBAAoB,GAGF,KAAK,EAAE,KAAyB,EAAE,eAAwB,EAAE,EAAE;IACzF,IAAI;QACA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7C,MAAM,aAAa,GACf,mBAAQ,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;QACnF,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,UAAU,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAC1B,eAAe,EAAE,eAAe;YAChC,WAAW,EAAE,aAAa;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,UAAU,CAAC,qBAAqB,CAAC,aAAa,EAAE,EAAE,CAAC,EAAG,EAAE;gBACpD,IAAI,EAAE,EAAE,CAAC,IAAK;gBACd,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;aAC1B,CAAC;YACF,mBAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,sCAAkB,EAAC,GAAG,CAAC,CAAC;SACxF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,iBAAiB,GAAG,oBAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO;YACH,QAAQ,EAAE,iBAAiB;YAC3B,GAAG,UAAU;SAChB,CAAC;KACL;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAtCW,QAAA,oBAAoB,wBAsC/B"}
1
+ {"version":3,"file":"get-cross-chain-gas-data.js","sourceRoot":"","sources":["../../../../../src/features/cross-chain/calculation-manager/utils/get-cross-chain-gas-data.ts"],"names":[],"mappings":";;;AAAA,uEAAmE;AACnE,yDAAsD;AAGtD,4GAA0G;AAEnG,MAAM,oBAAoB,GAGF,KAAK,EAAE,KAAyB,EAAE,eAAwB,EAAE,EAAE;IACzF,IAAI;QACA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7C,MAAM,aAAa,GACf,mBAAQ,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;QACnF,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,UAAU,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAC1B,eAAe,EAAE,eAAe;YAChC,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,IAAI;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,UAAU,CAAC,qBAAqB,CAAC,aAAa,EAAE,EAAE,CAAC,EAAG,EAAE;gBACpD,IAAI,EAAE,EAAE,CAAC,IAAK;gBACd,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;aAC1B,CAAC;YACF,mBAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,sCAAkB,EAAC,GAAG,CAAC,CAAC;SACxF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,iBAAiB,GAAG,oBAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO;YACH,QAAQ,EAAE,iBAAiB;YAC3B,GAAG,UAAU;SAChB,CAAC;KACL;IAAC,MAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAvCW,QAAA,oBAAoB,wBAuC/B"}