-
Notifications
You must be signed in to change notification settings - Fork 8
/
getRecipientAmountsFromMultiOutPayment.ts
35 lines (29 loc) · 1.35 KB
/
getRecipientAmountsFromMultiOutPayment.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import {Transaction, MultioutRecipientAmount} from '..';
import {isMultiOutSameTransaction} from './isMultiOutSameTransaction';
import {isMultiOutTransaction} from './isMultiOutTransaction';
import {convertNQTStringToNumber, convertNumberToNQTString} from '@signumjs/util';
/**
* Tries to extract recipients and its amounts for multi out payments (different and same amount)
* @param transaction The transaction
* @return A list of recipients and their payed amount (in NQT)
* @throws An exception in case of wrong transaction types
* @module core
*/
export function getRecipientAmountsFromMultiOutPayment(transaction: Transaction): Array<MultioutRecipientAmount> {
if (isMultiOutSameTransaction(transaction)) {
const recipients = transaction.attachment.recipients;
const amount = recipients.length ? convertNQTStringToNumber(transaction.amountNQT) / recipients.length : 0;
const amountNQT = convertNumberToNQTString(amount);
return transaction.attachment.recipients.map(recipient => ({
recipient,
amountNQT
}));
}
if (isMultiOutTransaction(transaction)) {
return transaction.attachment.recipients.map(r => ({
recipient: r[0],
amountNQT: r[1],
}));
}
throw new Error(`Transaction ${transaction.transaction} is not of type 'Multi Out Payment'`);
}