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