@pax2pay/model-banking 0.1.261 → 0.1.263
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Counterbalance2.ts +5 -14
- package/Settlement/Amount.ts +21 -0
- package/Settlement/Creatable.ts +3 -3
- package/Settlement/Entry/Capture.ts +1 -1
- package/Settlement/Entry/index.ts +0 -7
- package/Settlement/Total.ts +72 -24
- package/Settlement/Totals.ts +54 -0
- package/Settlement/index.ts +49 -39
- package/Treasury/Account/Storable.ts +2 -0
- package/Treasury/Snapshot/Fragment.ts +24 -7
- package/Treasury/Snapshot/index.ts +1 -2
- package/Treasury/index.ts +1 -7
- package/dist/Counterbalance2.d.ts +5 -7
- package/dist/Counterbalance2.js +3 -12
- package/dist/Counterbalance2.js.map +1 -1
- package/dist/Operation/Changes.d.ts +1 -1
- package/dist/Settlement/Amount.d.ts +12 -0
- package/dist/Settlement/Amount.js +17 -0
- package/dist/Settlement/Amount.js.map +1 -0
- package/dist/Settlement/Creatable.d.ts +2 -2
- package/dist/Settlement/Creatable.js +2 -2
- package/dist/Settlement/Creatable.js.map +1 -1
- package/dist/Settlement/Entry/index.d.ts +0 -2
- package/dist/Settlement/Entry/index.js +0 -8
- package/dist/Settlement/Entry/index.js.map +1 -1
- package/dist/Settlement/Total.d.ts +25 -13
- package/dist/Settlement/Total.js +62 -23
- package/dist/Settlement/Total.js.map +1 -1
- package/dist/Settlement/Totals.d.ts +13 -0
- package/dist/Settlement/Totals.js +48 -0
- package/dist/Settlement/Totals.js.map +1 -0
- package/dist/Settlement/index.d.ts +39 -25
- package/dist/Settlement/index.js +39 -37
- package/dist/Settlement/index.js.map +1 -1
- package/dist/Treasury/Account/Storable.d.ts +1 -0
- package/dist/Treasury/Account/Storable.js +1 -0
- package/dist/Treasury/Account/Storable.js.map +1 -1
- package/dist/Treasury/Snapshot/Fragment.d.ts +22 -2
- package/dist/Treasury/Snapshot/Fragment.js +18 -2
- package/dist/Treasury/Snapshot/Fragment.js.map +1 -1
- package/dist/Treasury/Snapshot/index.d.ts +1 -2
- package/dist/Treasury/Snapshot/index.js.map +1 -1
- package/dist/Treasury/index.d.ts +1 -7
- package/dist/Treasury/index.js.map +1 -1
- package/package.json +1 -1
- package/Settlement/Settled.ts +0 -16
- package/dist/Settlement/Settled.d.ts +0 -11
- package/dist/Settlement/Settled.js +0 -12
- package/dist/Settlement/Settled.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Settlement/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Settlement/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AASjC,MAAM,KAAW,SAAS,CASzB;AATD,WAAiB,SAAS;IACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QAC1B,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EATgB,SAAS,KAAT,SAAS,QASzB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { gracely } from "gracely";
|
|
2
2
|
import { isly } from "isly";
|
|
3
3
|
import { Transaction } from "../../Transaction";
|
|
4
|
-
import { Total } from "../Total";
|
|
5
4
|
import { Cancel as EntryCancel } from "./Cancel";
|
|
6
5
|
import { Capture as EntryCapture } from "./Capture";
|
|
7
6
|
import { Creatable as EntryCreatable } from "./Creatable";
|
|
@@ -35,7 +34,6 @@ export declare namespace Entry {
|
|
|
35
34
|
const Summary: typeof EntrySummary;
|
|
36
35
|
type Creatable = EntryCreatable;
|
|
37
36
|
const Creatable: typeof EntryCreatable;
|
|
38
|
-
function compile(entry: Entry): Total;
|
|
39
37
|
function from(creatable: Entry.Creatable, transaction: Transaction | gracely.Error | string): Entry;
|
|
40
38
|
const type: isly.Type<Entry>;
|
|
41
39
|
const is: isly.Type.IsFunction<Entry>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { gracely } from "gracely";
|
|
2
2
|
import { isly } from "isly";
|
|
3
|
-
import { Amount } from "../../Amount";
|
|
4
3
|
import { Transaction } from "../../Transaction";
|
|
5
|
-
import { Total } from "../Total";
|
|
6
4
|
import { Cancel as EntryCancel } from "./Cancel";
|
|
7
5
|
import { Capture as EntryCapture } from "./Capture";
|
|
8
6
|
import { Creatable as EntryCreatable } from "./Creatable";
|
|
@@ -17,12 +15,6 @@ export var Entry;
|
|
|
17
15
|
Entry.Unknown = EntryUnknown;
|
|
18
16
|
Entry.Summary = EntrySummary;
|
|
19
17
|
Entry.Creatable = EntryCreatable;
|
|
20
|
-
function compile(entry) {
|
|
21
|
-
return entry.type == "unknown"
|
|
22
|
-
? Total.initiate()
|
|
23
|
-
: Total.initiate({ amount: Amount.toAmounts(entry.amount), fee: entry.fee });
|
|
24
|
-
}
|
|
25
|
-
Entry.compile = compile;
|
|
26
18
|
function from(creatable, transaction) {
|
|
27
19
|
let result;
|
|
28
20
|
if (!Transaction.is(transaction) || transaction.status != "finalized")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Settlement/Entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Settlement/Entry/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,29 @@
|
|
|
1
|
+
import { isoly } from "isoly";
|
|
1
2
|
import { isly } from "isly";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
import { Amount } from "./Amount";
|
|
4
|
+
export interface Total {
|
|
5
|
+
expected: Amount;
|
|
6
|
+
outcome?: Amount;
|
|
7
|
+
collected?: Amount & {
|
|
8
|
+
transactions: {
|
|
9
|
+
net: string;
|
|
10
|
+
fee: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
settled?: Total.Settled;
|
|
14
|
+
}
|
|
9
15
|
export declare namespace Total {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
type Settled = {
|
|
17
|
+
net: number;
|
|
18
|
+
transactions: string[];
|
|
19
|
+
};
|
|
20
|
+
const Settled: isly.object.ExtendableType<Settled>;
|
|
14
21
|
const type: isly.object.ExtendableType<Total>;
|
|
15
|
-
|
|
16
|
-
|
|
22
|
+
function create(): Total;
|
|
23
|
+
function verify(total: Total, type: "outcome" | "collected" | "settled"): boolean;
|
|
24
|
+
function add(currency: isoly.Currency, addendee: Total, addend: Partial<Total>): Total;
|
|
25
|
+
function collect(currency: isoly.Currency, total: Total, collected: Amount, transactions: {
|
|
26
|
+
net: string;
|
|
27
|
+
fee: string;
|
|
28
|
+
}): Total;
|
|
17
29
|
}
|
package/dist/Settlement/Total.js
CHANGED
|
@@ -1,34 +1,73 @@
|
|
|
1
|
+
import { isoly } from "isoly";
|
|
1
2
|
import { isly } from "isly";
|
|
2
|
-
import {
|
|
3
|
-
import { Fee } from "./Fee";
|
|
3
|
+
import { Amount } from "./Amount";
|
|
4
4
|
export var Total;
|
|
5
5
|
(function (Total) {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
Total.Settled = isly.object({ net: isly.number(), transactions: isly.string().array() });
|
|
7
|
+
Total.type = isly.object({
|
|
8
|
+
expected: Amount.type,
|
|
9
|
+
outcome: Amount.type.optional(),
|
|
10
|
+
collected: Amount.type
|
|
11
|
+
.extend({
|
|
12
|
+
transactions: isly.object({
|
|
13
|
+
net: isly.string(),
|
|
14
|
+
fee: isly.string(),
|
|
15
|
+
}),
|
|
16
|
+
})
|
|
17
|
+
.optional(),
|
|
18
|
+
settled: Total.Settled.optional(),
|
|
19
|
+
});
|
|
20
|
+
function create() {
|
|
21
|
+
return { expected: { net: 0, fee: { other: 0 } } };
|
|
8
22
|
}
|
|
9
|
-
Total.
|
|
10
|
-
function
|
|
11
|
-
|
|
23
|
+
Total.create = create;
|
|
24
|
+
function verify(total, type) {
|
|
25
|
+
let result;
|
|
26
|
+
switch (type) {
|
|
27
|
+
case "outcome":
|
|
28
|
+
result = total.outcome?.net == total.expected.net && total.outcome.fee.other == total.expected.fee.other;
|
|
29
|
+
break;
|
|
30
|
+
case "collected":
|
|
31
|
+
result = total.collected?.net == total.outcome?.net && total.collected?.fee.other == total.outcome?.fee.other;
|
|
32
|
+
break;
|
|
33
|
+
case "settled":
|
|
34
|
+
result = total.settled?.net == total.collected?.net;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
12
38
|
}
|
|
13
|
-
Total.
|
|
14
|
-
function
|
|
15
|
-
|
|
39
|
+
Total.verify = verify;
|
|
40
|
+
function add(currency, addendee, addend) {
|
|
41
|
+
const result = { ...addendee };
|
|
42
|
+
addend.expected && (result.expected = Amount.add(currency, result.expected, addend.expected));
|
|
43
|
+
if (result.outcome || addend.outcome)
|
|
44
|
+
result.outcome = Amount.add(currency, result.outcome ?? { net: 0, fee: { other: 0 } }, addend.outcome ?? {});
|
|
45
|
+
if (result.collected || addend.collected)
|
|
46
|
+
result.collected = {
|
|
47
|
+
...Amount.add(currency, result.collected ?? { net: 0, fee: { other: 0 } }, addend.collected ?? {}),
|
|
48
|
+
transactions: {
|
|
49
|
+
net: addend.collected?.transactions.net ?? result.collected?.transactions.net ?? "",
|
|
50
|
+
fee: addend.collected?.transactions.fee ?? result.collected?.transactions.fee ?? "",
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
if (result.settled || addend.settled)
|
|
54
|
+
result.settled = {
|
|
55
|
+
net: isoly.Currency.add(currency, result.settled?.net ?? 0, addend.settled?.net ?? 0),
|
|
56
|
+
transactions: (result.settled?.transactions ?? []).concat(addend.settled?.transactions ?? []),
|
|
57
|
+
};
|
|
58
|
+
return result;
|
|
16
59
|
}
|
|
17
|
-
Total.
|
|
18
|
-
function
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
result = add(result, initiate({ fee: { other: { [currency]: amount } } }));
|
|
24
|
-
else if (entry.startsWith("settle"))
|
|
25
|
-
result = add(result, initiate({ amount: { [currency]: amount } }));
|
|
60
|
+
Total.add = add;
|
|
61
|
+
function collect(currency, total, collected, transactions) {
|
|
62
|
+
const result = { ...total };
|
|
63
|
+
if (result.collected) {
|
|
64
|
+
result.collected.net = isoly.Currency.add(currency, result.collected.net, collected.net);
|
|
65
|
+
result.collected.fee.other = isoly.Currency.add(currency, result.collected.fee.other, collected.fee.other);
|
|
26
66
|
}
|
|
67
|
+
else
|
|
68
|
+
result.collected = { ...collected, transactions };
|
|
27
69
|
return result;
|
|
28
70
|
}
|
|
29
|
-
Total.
|
|
30
|
-
Total.type = isly.object({ amount: Amounts.type, fee: Fee.type });
|
|
31
|
-
Total.is = Total.type.is;
|
|
32
|
-
Total.flaw = Total.type.flaw;
|
|
71
|
+
Total.collect = collect;
|
|
33
72
|
})(Total || (Total = {}));
|
|
34
73
|
//# sourceMappingURL=Total.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Total.js","sourceRoot":"../","sources":["Settlement/Total.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Total.js","sourceRoot":"../","sources":["Settlement/Total.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAQjC,MAAM,KAAW,KAAK,CAuErB;AAvED,WAAiB,KAAK;IAKR,aAAO,GAAG,IAAI,CAAC,MAAM,CAAU,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC3F,UAAI,GAAG,IAAI,CAAC,MAAM,CAAQ;QACtC,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAC,IAAI;aACpB,MAAM,CAA+B;YACrC,YAAY,EAAE,IAAI,CAAC,MAAM,CAA+C;gBACvE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;gBAClB,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE;aAClB,CAAC;SACF,CAAC;aACD,QAAQ,EAAE;QACZ,OAAO,EAAE,MAAA,OAAO,CAAC,QAAQ,EAAE;KAC3B,CAAC,CAAA;IACF,SAAgB,MAAM;QACrB,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAA;IACnD,CAAC;IAFe,YAAM,SAErB,CAAA;IACD,SAAgB,MAAM,CAAC,KAAY,EAAE,IAAyC;QAC7E,IAAI,MAAe,CAAA;QACnB,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,SAAS;gBACb,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAA;gBACxG,MAAK;YACN,KAAK,WAAW;gBACf,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAA;gBAC7G,MAAK;YACN,KAAK,SAAS;gBACb,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,GAAG,CAAA;gBACnD,MAAK;QACP,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAde,YAAM,SAcrB,CAAA;IACD,SAAgB,GAAG,CAAC,QAAwB,EAAE,QAAe,EAAE,MAAsB;QACpF,MAAM,MAAM,GAAU,EAAE,GAAG,QAAQ,EAAE,CAAA;QACrC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC7F,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;YACnC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAC7G,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;YACvC,MAAM,CAAC,SAAS,GAAG;gBAClB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBAClG,YAAY,EAAE;oBACb,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI,EAAE;oBACnF,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAI,EAAE;iBACnF;aACD,CAAA;QACF,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;YACnC,MAAM,CAAC,OAAO,GAAG;gBAChB,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;gBACrF,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;aAC7F,CAAA;QACF,OAAO,MAAM,CAAA;IACd,CAAC;IAnBe,SAAG,MAmBlB,CAAA;IACD,SAAgB,OAAO,CACtB,QAAwB,EACxB,KAAY,EACZ,SAAiB,EACjB,YAA0C;QAE1C,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;QAC3B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;YACxF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC3G,CAAC;;YACA,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,CAAA;QAClD,OAAO,MAAM,CAAA;IACd,CAAC;IAbe,aAAO,UAatB,CAAA;AACF,CAAC,EAvEgB,KAAK,KAAL,KAAK,QAuErB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isoly } from "isoly";
|
|
2
|
+
import { isly } from "isly";
|
|
3
|
+
import type { Collect } from "../Transaction/Collect";
|
|
4
|
+
import { Entry } from "./Entry";
|
|
5
|
+
import { Total } from "./Total";
|
|
6
|
+
export type Totals = Partial<Record<isoly.Currency, Total>>;
|
|
7
|
+
export declare namespace Totals {
|
|
8
|
+
const type: isly.Type<Record<"BTN" | "CHE" | "MKD" | "AED" | "AFN" | "ALL" | "AMD" | "ANG" | "AOA" | "ARS" | "AUD" | "AWG" | "AZN" | "BAM" | "BBD" | "BDT" | "BGN" | "BHD" | "BIF" | "BMD" | "BND" | "BOB" | "BOV" | "BRL" | "BSD" | "BWP" | "BYN" | "BZD" | "CAD" | "CDF" | "CHF" | "CHW" | "CLF" | "CLP" | "CNY" | "COP" | "COU" | "CRC" | "CUC" | "CUP" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "EUR" | "FJD" | "FKP" | "GBP" | "GEL" | "GHS" | "GIP" | "GMD" | "GNF" | "GTQ" | "GYD" | "HKD" | "HNL" | "HRK" | "HTG" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KGS" | "KHR" | "KMF" | "KPW" | "KRW" | "KWD" | "KYD" | "KZT" | "LAK" | "LBP" | "LKR" | "LRD" | "LSL" | "LYD" | "MAD" | "MDL" | "MGA" | "MMK" | "MNT" | "MOP" | "MRU" | "MUR" | "MVR" | "MWK" | "MXN" | "MXV" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PGK" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SBD" | "SCR" | "SDG" | "SEK" | "SGD" | "SHP" | "SLL" | "SOS" | "SRD" | "SSP" | "STN" | "SVC" | "SYP" | "SZL" | "THB" | "TJS" | "TMT" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "USD" | "USN" | "UYI" | "UYU" | "UYW" | "UZS" | "VES" | "VND" | "VUV" | "WST" | "XAF" | "XAG" | "XAU" | "XBA" | "XBB" | "XBC" | "XBD" | "XCD" | "XDR" | "XOF" | "XPD" | "XPF" | "XPT" | "XSU" | "XTS" | "XUA" | "XXX" | "YER" | "ZAR" | "ZMW" | "ZWL", Total>>;
|
|
9
|
+
function addEntry(totals: Totals, entry: Entry): Totals;
|
|
10
|
+
function verify(totals: Totals, type: "outcome" | "collected" | "settled"): boolean;
|
|
11
|
+
function add(addendee: Totals, addends: Partial<Record<isoly.Currency, Partial<Total>>>): Totals;
|
|
12
|
+
function collect(totals: Totals, collect: Collect): Totals;
|
|
13
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { isoly } from "isoly";
|
|
2
|
+
import { isly } from "isly";
|
|
3
|
+
import { Total } from "./Total";
|
|
4
|
+
export var Totals;
|
|
5
|
+
(function (Totals) {
|
|
6
|
+
Totals.type = isly.record(isly.string(isoly.Currency.types), Total.type);
|
|
7
|
+
function addEntry(totals, entry) {
|
|
8
|
+
const result = { ...totals };
|
|
9
|
+
if (entry.status == "succeeded" && (entry.type == "capture" || entry.type == "refund")) {
|
|
10
|
+
result[entry.amount[0]] = Total.add(entry.amount[0], result[entry.amount[0]] ?? Total.create(), {
|
|
11
|
+
outcome: {
|
|
12
|
+
net: entry.amount[1],
|
|
13
|
+
fee: { other: entry.fee.other[entry.amount[0]] ?? 0 },
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
Totals.addEntry = addEntry;
|
|
20
|
+
function verify(totals, type) {
|
|
21
|
+
return Object.values(totals).every(t => Total.verify(t, type));
|
|
22
|
+
}
|
|
23
|
+
Totals.verify = verify;
|
|
24
|
+
function add(addendee, addends) {
|
|
25
|
+
const result = { ...addendee };
|
|
26
|
+
for (const [currency, addend] of Object.entries(addends)) {
|
|
27
|
+
result[currency] = Total.add(currency, result[currency] ?? Total.create(), addend);
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
Totals.add = add;
|
|
32
|
+
function collect(totals, collect) {
|
|
33
|
+
const result = { ...totals };
|
|
34
|
+
for (const [currency, counterbalance] of Object.entries(collect.counterbalances)) {
|
|
35
|
+
const collected = { net: 0, fee: { other: 0 } };
|
|
36
|
+
for (const [entry, amount] of Object.entries(counterbalance)) {
|
|
37
|
+
if (entry.startsWith("fee"))
|
|
38
|
+
collected.fee.other = isoly.Currency.add(currency, collected.fee.other, amount ?? 0);
|
|
39
|
+
else if (entry.startsWith("settle"))
|
|
40
|
+
collected.net = isoly.Currency.add(currency, collected.net, amount ?? 0);
|
|
41
|
+
}
|
|
42
|
+
result[currency] = Total.collect(currency, result[currency] ?? Total.create(), collected, { net: "", fee: "" });
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
Totals.collect = collect;
|
|
47
|
+
})(Totals || (Totals = {}));
|
|
48
|
+
//# sourceMappingURL=Totals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Totals.js","sourceRoot":"../","sources":["Settlement/Totals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
import { isoly } from "isoly";
|
|
2
2
|
import { isly } from "isly";
|
|
3
|
-
import {
|
|
3
|
+
import { Amounts } from "../Amounts";
|
|
4
|
+
import { Amount as SettlementAmount } from "./Amount";
|
|
4
5
|
import { Batch as SettlementBatch } from "./Batch";
|
|
5
6
|
import { Creatable as SettlementCreatable } from "./Creatable";
|
|
6
7
|
import { Entry as SettlementEntry } from "./Entry";
|
|
7
8
|
import { Fee as SettlementFee } from "./Fee";
|
|
8
|
-
import { Settled as SettlementSettled } from "./Settled";
|
|
9
9
|
import { Status } from "./Status";
|
|
10
10
|
import { Total as SettlementTotal } from "./Total";
|
|
11
|
+
import { Totals as SettlementTotals } from "./Totals";
|
|
11
12
|
export interface Settlement extends Settlement.Creatable {
|
|
12
13
|
id: string;
|
|
13
14
|
by?: string;
|
|
14
15
|
created: isoly.DateTime;
|
|
15
16
|
status: Status;
|
|
16
|
-
collected?: Settlement.Total;
|
|
17
|
-
outcome: Settlement.Total;
|
|
18
|
-
settled?: Settlement.Settled;
|
|
19
17
|
entries: Settlement.Entry.Summary;
|
|
20
18
|
}
|
|
21
19
|
export declare namespace Settlement {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
type
|
|
26
|
-
const
|
|
27
|
-
type
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
type
|
|
31
|
-
const
|
|
32
|
-
type
|
|
33
|
-
const
|
|
34
|
-
|
|
20
|
+
export const Total: typeof SettlementTotal;
|
|
21
|
+
export type Total = SettlementTotal;
|
|
22
|
+
export const Totals: typeof SettlementTotals;
|
|
23
|
+
export type Totals = SettlementTotals;
|
|
24
|
+
export const Amount: typeof SettlementAmount;
|
|
25
|
+
export type Amount = SettlementAmount;
|
|
26
|
+
export const Fee: typeof SettlementFee;
|
|
27
|
+
export type Fee = SettlementFee;
|
|
28
|
+
export type Creatable = SettlementCreatable;
|
|
29
|
+
export const Creatable: typeof SettlementCreatable;
|
|
30
|
+
export type Entry = SettlementEntry;
|
|
31
|
+
export const Entry: typeof SettlementEntry;
|
|
32
|
+
export type Batch = SettlementBatch;
|
|
33
|
+
export const Batch: typeof SettlementBatch;
|
|
34
|
+
export namespace Entry {
|
|
35
35
|
type Summary = SettlementEntry.Summary;
|
|
36
36
|
type Creatable = SettlementEntry.Creatable;
|
|
37
37
|
type Refund = SettlementEntry.Refund;
|
|
@@ -51,11 +51,25 @@ export declare namespace Settlement {
|
|
|
51
51
|
type Creatable = SettlementEntry.Unknown.Creatable;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
function
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
export function from(creatable: Settlement.Creatable, by: string): Settlement;
|
|
55
|
+
export function compile(settlement: Settlement, entries: Settlement.Entry[]): Settlement;
|
|
56
|
+
type OldTotal = {
|
|
57
|
+
amount: Amounts;
|
|
58
|
+
fee: Fee;
|
|
59
|
+
};
|
|
60
|
+
export type OldSettlement = Omit<Settlement, "totals"> & {
|
|
61
|
+
expected?: OldTotal;
|
|
62
|
+
collected?: OldTotal;
|
|
63
|
+
outcome: OldTotal;
|
|
64
|
+
settled?: {
|
|
65
|
+
paid: Amounts;
|
|
66
|
+
transactions: string[];
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
export type MaybeOld = Settlement | OldSettlement;
|
|
70
|
+
export function fromLegacy(settlement: MaybeOld): Settlement;
|
|
71
|
+
export const type: isly.object.ExtendableType<Settlement>;
|
|
72
|
+
export const is: isly.Type.IsFunction<Settlement>;
|
|
73
|
+
export const flaw: isly.Type.FlawFunction;
|
|
74
|
+
export {};
|
|
61
75
|
}
|
package/dist/Settlement/index.js
CHANGED
|
@@ -1,41 +1,28 @@
|
|
|
1
1
|
import { isoly } from "isoly";
|
|
2
2
|
import { isly } from "isly";
|
|
3
3
|
import { Identifier } from "../Identifier";
|
|
4
|
+
import { Amount as SettlementAmount } from "./Amount";
|
|
4
5
|
import { Batch as SettlementBatch } from "./Batch";
|
|
5
6
|
import { Creatable as SettlementCreatable } from "./Creatable";
|
|
6
7
|
import { Entry as SettlementEntry } from "./Entry";
|
|
7
8
|
import { Fee as SettlementFee } from "./Fee";
|
|
8
|
-
import { Settled as SettlementSettled } from "./Settled";
|
|
9
9
|
import { Status } from "./Status";
|
|
10
10
|
import { Total as SettlementTotal } from "./Total";
|
|
11
|
+
import { Totals as SettlementTotals } from "./Totals";
|
|
11
12
|
export var Settlement;
|
|
12
13
|
(function (Settlement) {
|
|
13
|
-
Settlement.Settled = SettlementSettled;
|
|
14
14
|
Settlement.Total = SettlementTotal;
|
|
15
|
+
Settlement.Totals = SettlementTotals;
|
|
16
|
+
Settlement.Amount = SettlementAmount;
|
|
15
17
|
Settlement.Fee = SettlementFee;
|
|
16
18
|
Settlement.Creatable = SettlementCreatable;
|
|
17
19
|
Settlement.Entry = SettlementEntry;
|
|
18
20
|
Settlement.Batch = SettlementBatch;
|
|
19
|
-
function
|
|
21
|
+
function from(creatable, by) {
|
|
20
22
|
return {
|
|
21
|
-
id:
|
|
22
|
-
by,
|
|
23
|
-
created: isoly.DateTime.now(),
|
|
24
|
-
batch,
|
|
25
|
-
processor,
|
|
26
|
-
status: { collected: "pending", settled: "pending" },
|
|
27
|
-
expected: Settlement.Total.initiate(),
|
|
28
|
-
outcome: Settlement.Total.initiate(),
|
|
29
|
-
entries: { count: 0 },
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
Settlement.initiate = initiate;
|
|
33
|
-
function from(id, creatable, by) {
|
|
34
|
-
return {
|
|
35
|
-
id,
|
|
23
|
+
id: Identifier.generate(),
|
|
36
24
|
status: { collected: "pending", settled: "pending" },
|
|
37
25
|
by,
|
|
38
|
-
outcome: Settlement.Total.initiate(),
|
|
39
26
|
...creatable,
|
|
40
27
|
created: isoly.DateTime.now(),
|
|
41
28
|
entries: { count: 0 },
|
|
@@ -47,7 +34,7 @@ export var Settlement;
|
|
|
47
34
|
for (const entry of entries) {
|
|
48
35
|
switch (entry.status) {
|
|
49
36
|
case "succeeded":
|
|
50
|
-
result.
|
|
37
|
+
result.totals = Settlement.Totals.addEntry(result.totals, entry);
|
|
51
38
|
result.entries.count++;
|
|
52
39
|
break;
|
|
53
40
|
case "failed":
|
|
@@ -58,29 +45,44 @@ export var Settlement;
|
|
|
58
45
|
return result;
|
|
59
46
|
}
|
|
60
47
|
Settlement.compile = compile;
|
|
61
|
-
function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
48
|
+
function fromLegacy(settlement) {
|
|
49
|
+
let result;
|
|
50
|
+
if (!Settlement.is(settlement)) {
|
|
51
|
+
const totalToAmount = (currency, oldTotal) => ({
|
|
52
|
+
net: oldTotal?.amount[currency] ?? 0,
|
|
53
|
+
fee: { other: oldTotal?.fee.other[currency] ?? 0 },
|
|
54
|
+
});
|
|
55
|
+
const { expected, collected, outcome, settled, ...partialSettlement } = settlement;
|
|
56
|
+
const currencies = Array.from(new Set([
|
|
57
|
+
...Object.keys(expected?.amount ?? {}),
|
|
58
|
+
...Object.keys(collected?.amount ?? {}),
|
|
59
|
+
...Object.keys(settled?.paid ?? {}),
|
|
60
|
+
...Object.keys(outcome.amount),
|
|
61
|
+
]));
|
|
62
|
+
const totals = currencies.reduce((total, currency) => {
|
|
63
|
+
total[currency] = {
|
|
64
|
+
expected: totalToAmount(currency, expected),
|
|
65
|
+
...(outcome ? { outcome: totalToAmount(currency, outcome) } : {}),
|
|
66
|
+
...(collected
|
|
67
|
+
? { collected: { ...totalToAmount(currency, collected), transactions: { net: "", fee: "" } } }
|
|
68
|
+
: {}),
|
|
69
|
+
...(settled ? { settled: { net: settled.paid[currency] ?? 0, transactions: settled.transactions } } : {}),
|
|
70
|
+
};
|
|
71
|
+
return total;
|
|
72
|
+
}, {});
|
|
73
|
+
result = { ...partialSettlement, totals };
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
result = settlement;
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
74
79
|
}
|
|
75
|
-
Settlement.
|
|
80
|
+
Settlement.fromLegacy = fromLegacy;
|
|
76
81
|
Settlement.type = SettlementCreatable.type.extend({
|
|
77
82
|
id: isly.string(),
|
|
78
83
|
by: isly.string().optional(),
|
|
79
84
|
created: isly.fromIs("isoly.DateTime", isoly.DateTime.is),
|
|
80
85
|
status: Status.type,
|
|
81
|
-
collected: Settlement.Total.type.optional(),
|
|
82
|
-
outcome: Settlement.Total.type,
|
|
83
|
-
settled: Settlement.Settled.type.optional(),
|
|
84
86
|
entries: Settlement.Entry.Summary.type,
|
|
85
87
|
});
|
|
86
88
|
Settlement.is = Settlement.type.is;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Settlement/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"../","sources":["Settlement/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export var Storable;
|
|
|
11
11
|
created: isly.fromIs("Treasury.Account.Storable", isoly.DateTime.is),
|
|
12
12
|
realm: isly.fromIs("realm", Realm.is),
|
|
13
13
|
supplier: isly.fromIs("supplier", Supplier.is),
|
|
14
|
+
link: isly.string(),
|
|
14
15
|
type: Category.type,
|
|
15
16
|
reference: isly.string(),
|
|
16
17
|
conditions: Conditions.type.optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Storable.js","sourceRoot":"../","sources":["Treasury/Account/Storable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"Storable.js","sourceRoot":"../","sources":["Treasury/Account/Storable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAazC,MAAM,KAAW,QAAQ,CAaxB;AAbD,WAAiB,QAAQ;IACX,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW;QACzC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QACrC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9C,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;QACxB,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAA;IACW,WAAE,GAAG,SAAA,IAAI,CAAC,EAAE,CAAA;IACZ,aAAI,GAAG,SAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAbgB,QAAQ,KAAR,QAAQ,QAaxB"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { isly } from "isly";
|
|
2
2
|
import { Balances } from "../../Balances";
|
|
3
|
-
import { Counterbalance2 } from "../../Counterbalance2";
|
|
4
3
|
import { Account } from "../Account";
|
|
5
4
|
import { Warning } from "./Warning";
|
|
6
5
|
export interface Fragment {
|
|
7
6
|
warnings: Warning[];
|
|
8
|
-
emoney: Balances.Balance
|
|
7
|
+
emoney: Balances.Balance;
|
|
8
|
+
minted: Fragment.Coinage.Minted;
|
|
9
|
+
burned: Fragment.Coinage.Burned;
|
|
9
10
|
fiat: {
|
|
10
11
|
safe: number;
|
|
11
12
|
unsafe: number;
|
|
@@ -16,5 +17,24 @@ export interface Fragment {
|
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
export declare namespace Fragment {
|
|
20
|
+
namespace Coinage {
|
|
21
|
+
export type LedgerAccount = string;
|
|
22
|
+
export type Change = {
|
|
23
|
+
account: Record<LedgerAccount, number>;
|
|
24
|
+
amount: number;
|
|
25
|
+
};
|
|
26
|
+
export const change: isly.object.ExtendableType<Change>;
|
|
27
|
+
type Source = string;
|
|
28
|
+
export type Minted = Record<Source, Change>;
|
|
29
|
+
export namespace Minted {
|
|
30
|
+
const type: isly.Type<Minted>;
|
|
31
|
+
}
|
|
32
|
+
type Sink = string;
|
|
33
|
+
export type Burned = Record<Sink, Change>;
|
|
34
|
+
export namespace Burned {
|
|
35
|
+
const type: isly.Type<Burned>;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
38
|
+
}
|
|
19
39
|
const type: isly.object.ExtendableType<Fragment>;
|
|
20
40
|
}
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import { isly } from "isly";
|
|
2
2
|
import { Balances } from "../../Balances";
|
|
3
|
-
import { Counterbalance2 } from "../../Counterbalance2";
|
|
4
3
|
import { Account } from "../Account";
|
|
5
4
|
import { Warning } from "./Warning";
|
|
6
5
|
export var Fragment;
|
|
7
6
|
(function (Fragment) {
|
|
7
|
+
let Coinage;
|
|
8
|
+
(function (Coinage) {
|
|
9
|
+
Coinage.change = isly.object({
|
|
10
|
+
account: isly.record(isly.string(), isly.number()),
|
|
11
|
+
amount: isly.number(),
|
|
12
|
+
});
|
|
13
|
+
let Minted;
|
|
14
|
+
(function (Minted) {
|
|
15
|
+
Minted.type = isly.record(isly.string(), Fragment.Coinage.change);
|
|
16
|
+
})(Minted = Coinage.Minted || (Coinage.Minted = {}));
|
|
17
|
+
let Burned;
|
|
18
|
+
(function (Burned) {
|
|
19
|
+
Burned.type = isly.record(isly.string(), Fragment.Coinage.change);
|
|
20
|
+
})(Burned = Coinage.Burned || (Coinage.Burned = {}));
|
|
21
|
+
})(Coinage = Fragment.Coinage || (Fragment.Coinage = {}));
|
|
8
22
|
Fragment.type = isly.object({
|
|
9
23
|
warnings: Warning.type.array(),
|
|
10
|
-
emoney:
|
|
24
|
+
emoney: Balances.Balance.type,
|
|
25
|
+
minted: Fragment.Coinage.Minted.type,
|
|
26
|
+
burned: Fragment.Coinage.Burned.type,
|
|
11
27
|
fiat: isly.object({
|
|
12
28
|
safe: isly.number(),
|
|
13
29
|
unsafe: isly.number(),
|