@ledgerhq/coin-celo
Version:
42 lines • 1.34 kB
JavaScript
import BigNumber from "bignumber.js";
import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
const MODE_TO_TYPE = {
send: "OUT",
lock: "LOCK",
unlock: "UNLOCK",
withdraw: "WITHDRAW",
vote: "VOTE",
revoke: "REVOKE",
activate: "ACTIVATE",
register: "REGISTER",
default: "FEES",
};
export const buildOptimisticOperation = (account, transaction, fee) => {
const type = MODE_TO_TYPE[transaction.mode] ?? MODE_TO_TYPE.default;
const value = type === "OUT" || type === "LOCK"
? new BigNumber(transaction.amount).plus(fee)
: new BigNumber(transaction.amount);
const operation = {
id: encodeOperationId(account.id, "", type),
hash: "",
type,
value,
fee,
blockHash: null,
blockHeight: null,
senders: [account.freshAddress],
recipients: [transaction.recipient].filter(Boolean),
accountId: account.id,
date: new Date(),
extra: {
celoOperationValue: new BigNumber(transaction.amount),
...(["ACTIVATE", "VOTE", "REVOKE"].includes(type)
? {
celoSourceValidator: transaction.recipient,
}
: {}),
},
};
return operation;
};
//# sourceMappingURL=buildOptimisticOperation.js.map