@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
19 lines (15 loc) • 744 B
text/typescript
import type { TransactionStatus } from "../../../../generated/types";
import { BigNumber } from "bignumber.js";
export type StatusWithTxOutputs = TransactionStatus & {
txOutputs?: ReadonlyArray<{ isChange: boolean; value: BigNumber }>;
};
export function hasTxOutputs(status: TransactionStatus): status is StatusWithTxOutputs {
return "txOutputs" in status;
}
/** Bitcoin status includes txOutputs with change; generic status may not. */
export function getChangeToReturn(status: TransactionStatus): BigNumber {
const outputs = hasTxOutputs(status) ? status.txOutputs ?? [] : [];
return outputs
.filter((o): o is { isChange: true; value: BigNumber } => o.isChange)
.reduce((sum, o) => sum.plus(o.value), new BigNumber(0));
}