@ledgerhq/coin-celo
Version:
30 lines • 1.39 kB
JavaScript
import invariant from "invariant";
import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/index";
import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
import { availablePendingWithdrawals } from "../../logic";
const currency = getCryptoCurrencyById("celo");
const minimalAmount = parseCurrencyUnit(currency.units[0], "0.001");
export const createWithdrawMutation = () => ({
name: "Celo: Withdraw",
feature: "staking",
maxRun: 1,
transaction: ({ account, bridge, maxSpendable }) => {
const celoAccount = account;
const { celoResources } = celoAccount;
invariant(celoResources?.registrationStatus, "Celo: Withdraw | Account is not registered");
const pendingWithdrawals = availablePendingWithdrawals(celoAccount);
invariant(pendingWithdrawals.length > 0, "Celo: Withdraw | No withdrawable balance");
invariant(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,
},
],
};
},
});
//# sourceMappingURL=createWithdrawMutation.js.map