rubic-sdk
Version:
Simplify dApp creation
78 lines • 4.26 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.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
;