rubic-sdk
Version:
Simplify dApp creation
96 lines • 5.01 kB
JavaScript
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
;