UNPKG

rubic-sdk

Version:
78 lines 4.26 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OnChainProxyService = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const tokens_1 = require("../../../../../../common/tokens"); const decorators_1 = require("../../../../../../common/utils/decorators"); const evm_web3_pure_1 = require("../../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure"); const injector_1 = require("../../../../../../core/injector/injector"); const on_chain_proxy_contract_1 = require("./constants/on-chain-proxy-contract"); const on_chain_proxy_supported_blockchain_1 = require("./models/on-chain-proxy-supported-blockchain"); class OnChainProxyService { static isSupportedBlockchain(blockchain) { return on_chain_proxy_supported_blockchain_1.onChainProxySupportedBlockchains.some(supportedBlockchain => supportedBlockchain === blockchain); } isContractPaused(fromBlockchain) { const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(fromBlockchain); const contractAddress = on_chain_proxy_contract_1.onChainProxyContractAddress[fromBlockchain]; return web3Public.callContractMethod(contractAddress, on_chain_proxy_contract_1.onChainProxyContractAbi, 'paused', []); } async getFeeInfo(from, providerAddress) { const fromBlockchain = from.blockchain; const web3Public = injector_1.Injector.web3PublicService.getWeb3Public(fromBlockchain); const contractAddress = on_chain_proxy_contract_1.onChainProxyContractAddress[fromBlockchain]; let fixedCryptoFeeWei; let platformFeePercent; if (providerAddress !== evm_web3_pure_1.EvmWeb3Pure.EMPTY_ADDRESS) { const integratorToFeeInfo = await web3Public.callContractMethod(contractAddress, on_chain_proxy_contract_1.onChainProxyContractAbi, 'integratorToFeeInfo', [providerAddress]); if (integratorToFeeInfo.isIntegrator) { fixedCryptoFeeWei = integratorToFeeInfo.fixedFeeAmount; platformFeePercent = parseInt(integratorToFeeInfo.tokenFee) / 10000; } } if (fixedCryptoFeeWei === undefined) { const feeInfo = await Promise.all([ web3Public.callContractMethod(contractAddress, on_chain_proxy_contract_1.onChainProxyContractAbi, 'fixedCryptoFee', []), web3Public.callContractMethod(contractAddress, on_chain_proxy_contract_1.onChainProxyContractAbi, 'RubicPlatformFee', []) ]); fixedCryptoFeeWei = feeInfo[0]; platformFeePercent = parseInt(feeInfo[1]) / 10000; } const fixedFeeToken = new tokens_1.TokenAmount({ ...tokens_1.nativeTokensList[fromBlockchain], weiAmount: new bignumber_js_1.default(fixedCryptoFeeWei) }); const platformFee = { percent: platformFeePercent, token: new tokens_1.TokenAmount({ ...from, tokenAmount: from.tokenAmount.multipliedBy(platformFeePercent / 100) }) }; return { fixedFeeToken, platformFee }; } } __decorate([ (0, decorators_1.Cache)({ maxAge: 15000 }) ], OnChainProxyService.prototype, "isContractPaused", null); __decorate([ (0, decorators_1.Cache)({ maxAge: 15000 }) ], OnChainProxyService.prototype, "getFeeInfo", null); exports.OnChainProxyService = OnChainProxyService; //# sourceMappingURL=on-chain-proxy-service.js.map