rubic-sdk-next
Version:
Simplify dApp creation
35 lines • 1.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EddyBridgeTrade = void 0;
const bignumber_js_1 = __importDefault(require("bignumber.js"));
const errors_1 = require("../../../../../common/errors");
const evm_api_cross_chain_trade_1 = require("../../../../ws-api/chains/evm/evm-api-cross-chain-trade");
class EddyBridgeTrade extends evm_api_cross_chain_trade_1.EvmApiCrossChainTrade {
async needApprove() {
// @TODO API FIX
this.checkWalletConnected();
if (this.from.isNative)
return false;
const allowance = await this.fromWeb3Public.getAllowance(this.from.address, this.walletAddress, this.contractSpender);
// need allowance = amount + 1 wei at least
return this.from.weiAmount.gte(allowance);
}
async approve(options, checkNeedApprove = true, amount = new bignumber_js_1.default(0)) {
if (checkNeedApprove) {
const needApprove = await this.needApprove();
if (!needApprove) {
throw new errors_1.UnnecessaryApproveError();
}
}
this.checkWalletConnected();
await this.checkBlockchainCorrect();
// because of error on EddyBridge contract(they check on allowance > amount instead of allowance >= amount)
const approveAmount = amount.plus(1);
return super.approve(options, checkNeedApprove, approveAmount);
}
}
exports.EddyBridgeTrade = EddyBridgeTrade;
//# sourceMappingURL=eddy-bridge-trade.js.map