@ledgerhq/coin-near
Version:
82 lines (73 loc) • 1.98 kB
text/typescript
import type { CommonDeviceTransactionField as DeviceTransactionField } from "@ledgerhq/coin-framework/transaction/common";
import type { Transaction } from "./types";
function getDeviceTransactionConfig({
transaction,
}: {
transaction: Transaction;
}): Array<DeviceTransactionField> {
const fields: Array<DeviceTransactionField> = [];
const confirmField = {
type: "text",
label: "Confirm",
} as DeviceTransactionField;
const amountField = {
type: "amount",
label: "Amount",
} as DeviceTransactionField;
const validatorField = {
type: "address",
label: "To",
address: transaction.recipient,
} as DeviceTransactionField;
switch (transaction.mode) {
case "stake":
fields.push({
...confirmField,
value: "deposit_and_stake",
} as DeviceTransactionField);
fields.push({
type: "amount",
label: "Deposit",
});
fields.push(validatorField);
break;
case "unstake":
if (transaction.useAllAmount) {
fields.push({
...confirmField,
value: "unstake_all",
} as DeviceTransactionField);
} else {
fields.push({
...confirmField,
value: "unstake",
} as DeviceTransactionField);
}
fields.push(validatorField);
fields.push(amountField);
break;
case "withdraw":
if (transaction.useAllAmount) {
fields.push({
...confirmField,
value: "withdraw_all",
} as DeviceTransactionField);
} else {
fields.push({
...confirmField,
value: "withdraw",
} as DeviceTransactionField);
}
fields.push(validatorField);
fields.push(amountField);
break;
default:
fields.push({
...confirmField,
value: "transfer",
} as DeviceTransactionField);
fields.push(amountField);
}
return fields;
}
export default getDeviceTransactionConfig;