@ledgerhq/coin-celo
Version:
37 lines • 1.79 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createWithdrawMutation = void 0;
const invariant_1 = __importDefault(require("invariant"));
const index_1 = require("@ledgerhq/cryptoassets/index");
const parseCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/parseCurrencyUnit");
const logic_1 = require("../../logic");
const currency = (0, index_1.getCryptoCurrencyById)("celo");
const minimalAmount = (0, parseCurrencyUnit_1.parseCurrencyUnit)(currency.units[0], "0.001");
const createWithdrawMutation = () => ({
name: "Celo: Withdraw",
feature: "staking",
maxRun: 1,
transaction: ({ account, bridge, maxSpendable }) => {
const celoAccount = account;
const { celoResources } = celoAccount;
(0, invariant_1.default)(celoResources?.registrationStatus, "Celo: Withdraw | Account is not registered");
const pendingWithdrawals = (0, logic_1.availablePendingWithdrawals)(celoAccount);
(0, invariant_1.default)(pendingWithdrawals.length > 0, "Celo: Withdraw | No withdrawable balance");
(0, invariant_1.default)(maxSpendable.gt(minimalAmount), "Celo: Withdraw Vote | balance is too low");
return {
transaction: bridge.createTransaction(celoAccount),
updates: [
{
mode: "withdraw",
recipient: celoAccount.celoResources.lockedGoldAddress,
index: pendingWithdrawals[0].index,
},
],
};
},
});
exports.createWithdrawMutation = createWithdrawMutation;
//# sourceMappingURL=createWithdrawMutation.js.map