UNPKG

rubic-sdk

Version:
96 lines 5.01 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.CelerCrossChainContractData = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const errors_1 = require("../../../../../common/errors"); const tokens_1 = require("../../../../../common/tokens"); const native_tokens_1 = require("../../../../../common/tokens/constants/native-tokens"); const decorators_1 = require("../../../../../common/utils/decorators"); const blockchain_id_1 = require("../../../../../core/blockchain/utils/blockchains-info/constants/blockchain-id"); const injector_1 = require("../../../../../core/injector/injector"); const celer_message_bus_controller_1 = require("./celer-message-bus-controller/celer-message-bus-controller"); const celer_cross_chain_contract_abi_1 = require("./constants/celer-cross-chain-contract-abi"); const celer_transit_tokens_1 = require("./constants/celer-transit-tokens"); /** * Class to work with readable methods of cross-chain contract. */ class CelerCrossChainContractData { constructor(blockchain, address, providersData) { this.blockchain = blockchain; this.address = address; this.providersData = providersData; this.web3Public = injector_1.Injector.web3PublicService.getWeb3Public(this.blockchain); this.messageBusController = new celer_message_bus_controller_1.CelerMessageBusController(this.web3Public); } getProvider(providerIndex) { const provider = this.providersData?.[providerIndex]?.provider; if (!provider) { throw new errors_1.RubicSdkError('Provider has to be defined'); } return provider; } async destinationCryptoFee(toBlockchain) { const destinationBlockchainId = blockchain_id_1.blockchainId[toBlockchain]; return new bignumber_js_1.default(await this.web3Public.callContractMethod(this.address, celer_cross_chain_contract_abi_1.celerCrossChainContractAbi, 'blockchainToGasFee', [String(destinationBlockchainId)])); } async getMinMaxTransitTokenAmounts(tokenAddress) { return (await this.web3Public.multicallContractMethods(this.address, celer_cross_chain_contract_abi_1.celerCrossChainContractAbi, [ { methodName: 'minTokenAmount', methodArguments: [tokenAddress] }, { methodName: 'maxTokenAmount', methodArguments: [tokenAddress] } ])).map(result => result.output); } async getTransitToken() { const address = this.getTransitTokenAddressBasedOnBlockchain(this.blockchain); return tokens_1.Token.createToken({ address, blockchain: this.blockchain }); } isPaused() { return this.web3Public.callContractMethod(this.address, celer_cross_chain_contract_abi_1.celerCrossChainContractAbi, 'paused'); } messageBusAddress() { return this.web3Public.callContractMethod(this.address, celer_cross_chain_contract_abi_1.celerCrossChainContractAbi, 'messageBus'); } celerFeePerByte(message, messageBusAddress) { return this.messageBusController.getCalcFee(message, messageBusAddress); } celerFeeBase(messageBusAddress) { return this.messageBusController.getFeeBase(messageBusAddress); } getTransitTokenAddressBasedOnBlockchain(blockchain) { return celer_transit_tokens_1.celerTransitTokens[blockchain].address; } async getFeeInPercents() { const feeAbsolute = await this.web3Public.callContractMethod(this.address, celer_cross_chain_contract_abi_1.celerCrossChainContractAbi, 'RubicPlatformFee'); return Number(feeAbsolute) / 10000; } async getCryptoFeeToken(toContract) { const feeAmount = await this.destinationCryptoFee(toContract.blockchain); const nativeToken = native_tokens_1.nativeTokensList[this.blockchain]; return tokens_1.PriceTokenAmount.createFromToken({ ...nativeToken, weiAmount: feeAmount }); } } __decorate([ decorators_1.Cache ], CelerCrossChainContractData.prototype, "getTransitToken", null); exports.CelerCrossChainContractData = CelerCrossChainContractData; //# sourceMappingURL=celer-cross-chain-contract-data.js.map