rubic-sdk
Version:
Simplify dApp creation
65 lines • 3.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnosysV3FlareProvider = void 0;
const errors_1 = require("../../../../../../../../common/errors");
const blockchain_1 = require("../../../../../../../../common/utils/blockchain");
const blockchain_name_1 = require("../../../../../../../../core/blockchain/models/blockchain-name");
const evm_web3_pure_1 = require("../../../../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure");
const token_native_address_proxy_1 = require("../../../../../../../common/utils/token-native-address-proxy");
const on_chain_trade_type_1 = require("../../../../common/models/on-chain-trade-type");
const spark_dex_v3_quoter_controller_1 = require("../../../common/uniswap-v3-abstract/utils/quoter-controller/spark-dex-v3-quoter-controller");
const uniswap_v3_algebra_abstract_provider_1 = require("../../../common/uniswap-v3-algebra-abstract/uniswap-v3-algebra-abstract-provider");
const enosys_v3_flare_quoter_data_1 = require("./constants/enosys-v3-flare-quoter-data");
const enosys_v3_flare_router_configuration_1 = require("./constants/enosys-v3-flare-router-configuration");
const enosys_v3_flare_swap_router_data_1 = require("./constants/enosys-v3-flare-swap-router-data");
const enosys_v3_flare_trade_1 = require("./enosys-v3-flare-trade");
const uniswap_v3_flare_configuration_1 = require("./uniswap-v3-flare-configuration");
class EnosysV3FlareProvider extends uniswap_v3_algebra_abstract_provider_1.UniswapV3AlgebraAbstractProvider {
constructor() {
super(...arguments);
this.blockchain = blockchain_name_1.BLOCKCHAIN_NAME.FLARE;
this.contractAbi = enosys_v3_flare_swap_router_data_1.ENOSYS_V3_SWAP_ROUTER_CONTRACT_ABI;
this.contractAddress = enosys_v3_flare_swap_router_data_1.ENOSYS_V3_SWAP_ROUTER_CONTRACT_ADDRESS;
this.OnChainTradeClass = enosys_v3_flare_trade_1.EnosysV3FlareTrade;
this.providerConfiguration = {
...uniswap_v3_flare_configuration_1.UNI_SWAP_V3_FLARE_PROVIDER_CONFIGURATION,
maxTransitTokens: 2
};
this.routerConfiguration = enosys_v3_flare_router_configuration_1.UNI_SWAP_V3_ENOSYS_FLARE_ROUTER_CONFIGURATION;
this.quoterController = new spark_dex_v3_quoter_controller_1.SparkDexV3QuoterController(this.blockchain, this.routerConfiguration, enosys_v3_flare_quoter_data_1.ENOSYS_V3_FLARE_QUOTER_CONTRACT_ADDRESS, enosys_v3_flare_quoter_data_1.ENOSYS_V3_FLARE_QUOTER_CONTRACT_ABI, '0x9F070ebDf1D9f0bFA8e2F0209E7Bcc32487c98A6');
}
get type() {
return on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.ENOSYS_V3;
}
createTradeInstance(tradeStruct, route, providerAddress) {
const path = this.extractPath(route);
return new this.OnChainTradeClass({
...tradeStruct,
path,
route
}, providerAddress);
}
extractPath(route) {
const initialPool = route.poolsPath[0];
if (!initialPool) {
throw new errors_1.RubicSdkError('Initial pool has to be defined');
}
const path = [
(0, blockchain_1.compareAddresses)(initialPool.token0.address, route.initialTokenAddress)
? initialPool.token0
: initialPool.token1
];
const lastToken = path[path.length - 1];
if (!lastToken) {
throw new errors_1.RubicSdkError('Last token has to be defined');
}
route.poolsPath.forEach(pool => {
path.push(!(0, blockchain_1.compareAddresses)(pool.token0.address, lastToken.address)
? pool.token0
: pool.token1);
});
return (0, token_native_address_proxy_1.createTokenNativeAddressProxyInPathStartAndEnd)(path, evm_web3_pure_1.EvmWeb3Pure.nativeTokenAddress);
}
}
exports.EnosysV3FlareProvider = EnosysV3FlareProvider;
//# sourceMappingURL=enosys-v3-flare-provider.js.map