@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.
Files changed (49) hide show
  1. package/Counterbalance2.ts +5 -14
  2. package/Settlement/Amount.ts +21 -0
  3. package/Settlement/Creatable.ts +3 -3
  4. package/Settlement/Entry/Capture.ts +1 -1
  5. package/Settlement/Entry/index.ts +0 -7
  6. package/Settlement/Total.ts +72 -24
  7. package/Settlement/Totals.ts +54 -0
  8. package/Settlement/index.ts +49 -39
  9. package/Treasury/Account/Storable.ts +2 -0
  10. package/Treasury/Snapshot/Fragment.ts +24 -7
  11. package/Treasury/Snapshot/index.ts +1 -2
  12. package/Treasury/index.ts +1 -7
  13. package/dist/Counterbalance2.d.ts +5 -7
  14. package/dist/Counterbalance2.js +3 -12
  15. package/dist/Counterbalance2.js.map +1 -1
  16. package/dist/Operation/Changes.d.ts +1 -1
  17. package/dist/Settlement/Amount.d.ts +12 -0
  18. package/dist/Settlement/Amount.js +17 -0
  19. package/dist/Settlement/Amount.js.map +1 -0
  20. package/dist/Settlement/Creatable.d.ts +2 -2
  21. package/dist/Settlement/Creatable.js +2 -2
  22. package/dist/Settlement/Creatable.js.map +1 -1
  23. package/dist/Settlement/Entry/index.d.ts +0 -2
  24. package/dist/Settlement/Entry/index.js +0 -8
  25. package/dist/Settlement/Entry/index.js.map +1 -1
  26. package/dist/Settlement/Total.d.ts +25 -13
  27. package/dist/Settlement/Total.js +62 -23
  28. package/dist/Settlement/Total.js.map +1 -1
  29. package/dist/Settlement/Totals.d.ts +13 -0
  30. package/dist/Settlement/Totals.js +48 -0
  31. package/dist/Settlement/Totals.js.map +1 -0
  32. package/dist/Settlement/index.d.ts +39 -25
  33. package/dist/Settlement/index.js +39 -37
  34. package/dist/Settlement/index.js.map +1 -1
  35. package/dist/Treasury/Account/Storable.d.ts +1 -0
  36. package/dist/Treasury/Account/Storable.js +1 -0
  37. package/dist/Treasury/Account/Storable.js.map +1 -1
  38. package/dist/Treasury/Snapshot/Fragment.d.ts +22 -2
  39. package/dist/Treasury/Snapshot/Fragment.js +18 -2
  40. package/dist/Treasury/Snapshot/Fragment.js.map +1 -1
  41. package/dist/Treasury/Snapshot/index.d.ts +1 -2
  42. package/dist/Treasury/Snapshot/index.js.map +1 -1
  43. package/dist/Treasury/index.d.ts +1 -7
  44. package/dist/Treasury/index.js.map +1 -1
  45. package/package.json +1 -1
  46. package/Settlement/Settled.ts +0 -16
  47. package/dist/Settlement/Settled.d.ts +0 -11
  48. package/dist/Settlement/Settled.js +0 -12
  49. 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,KAAK,EAAE,MAAM,SAAS,CAAA;AAS/B,MAAM,KAAW,SAAS,CASzB;AATD,WAAiB,SAAS;IACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC/B,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
+ {"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,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AAInD,MAAM,KAAW,KAAK,CA2ErB;AA3ED,WAAiB,KAAK;IAER,YAAM,GAAG,WAAW,CAAA;IAKpB,aAAO,GAAG,YAAY,CAAA;IAKtB,YAAM,GAAG,WAAW,CAAA;IAKpB,aAAO,GAAG,YAAY,CAAA;IAMtB,aAAO,GAAG,YAAY,CAAA;IAEtB,eAAS,GAAG,cAAc,CAAA;IACvC,SAAgB,OAAO,CAAC,KAAY;QACnC,OAAO,KAAK,CAAC,IAAI,IAAI,SAAS;YAC7B,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;YAClB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IAC9E,CAAC;IAJe,aAAO,UAItB,CAAA;IACD,SAAgB,IAAI,CAAC,SAA0B,EAAE,WAAiD;QACjG,IAAI,MAAa,CAAA;QACjB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW;YACpE,MAAM,GAAG;gBACR,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;gBACtC,GAAG,SAAS;aACZ,CAAA;aACG,CAAC;YACL,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,SAAS;oBACb,MAAM,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBAChC,MAAK;gBACN,KAAK,QAAQ;oBACZ,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;oBAC5C,MAAK;gBACN;oBACC,MAAM,GAAG,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAA;oBACtF,MAAK;YACP,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAtBe,UAAI,OAsBnB,CAAA;IACD,SAAS,MAAM,CAAC,SAA0B,EAAE,WAAiD;QAC5F,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,CAAC,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACjE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;YAChC,MAAM,CAAC,IAAI,CACV,kBAAkB,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,EAAE,CACvG,CAAA;aACG,IAAI,OAAO,WAAW,IAAI,QAAQ;YACtC,MAAM,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,EAAE,eAAe,WAAW,CAAC,SAAS,0BAA0B,CAAC,CAAA;;YAExG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAA;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACY,UAAI,GAAG,IAAI,CAAC,KAAK,CAC7B,KAAK,CAAC,MAAM,CAAC,IAAI,EACjB,KAAK,CAAC,OAAO,CAAC,IAAI,EAClB,KAAK,CAAC,MAAM,CAAC,IAAI,EACjB,KAAK,CAAC,OAAO,CAAC,IAAI,CAClB,CAAA;IACY,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;IACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EA3EgB,KAAK,KAAL,KAAK,QA2ErB"}
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,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AAInD,MAAM,KAAW,KAAK,CAsErB;AAtED,WAAiB,KAAK;IAER,YAAM,GAAG,WAAW,CAAA;IAKpB,aAAO,GAAG,YAAY,CAAA;IAKtB,YAAM,GAAG,WAAW,CAAA;IAKpB,aAAO,GAAG,YAAY,CAAA;IAMtB,aAAO,GAAG,YAAY,CAAA;IAEtB,eAAS,GAAG,cAAc,CAAA;IACvC,SAAgB,IAAI,CAAC,SAA0B,EAAE,WAAiD;QACjG,IAAI,MAAa,CAAA;QACjB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW;YACpE,MAAM,GAAG;gBACR,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;gBACtC,GAAG,SAAS;aACZ,CAAA;aACG,CAAC;YACL,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,SAAS;oBACb,MAAM,GAAG,MAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBAChC,MAAK;gBACN,KAAK,QAAQ;oBACZ,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;oBAC5C,MAAK;gBACN;oBACC,MAAM,GAAG,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAA;oBACtF,MAAK;YACP,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAtBe,UAAI,OAsBnB,CAAA;IACD,SAAS,MAAM,CAAC,SAA0B,EAAE,WAAiD;QAC5F,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,CAAC,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACjE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;YAChC,MAAM,CAAC,IAAI,CACV,kBAAkB,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,EAAE,CACvG,CAAA;aACG,IAAI,OAAO,WAAW,IAAI,QAAQ;YACtC,MAAM,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,EAAE,eAAe,WAAW,CAAC,SAAS,0BAA0B,CAAC,CAAA;;YAExG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAA;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IACY,UAAI,GAAG,IAAI,CAAC,KAAK,CAC7B,KAAK,CAAC,MAAM,CAAC,IAAI,EACjB,KAAK,CAAC,OAAO,CAAC,IAAI,EAClB,KAAK,CAAC,MAAM,CAAC,IAAI,EACjB,KAAK,CAAC,OAAO,CAAC,IAAI,CAClB,CAAA;IACY,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;IACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAtEgB,KAAK,KAAL,KAAK,QAsErB"}
@@ -1,17 +1,29 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
2
- import { Amounts } from "../Amounts";
3
- import { Transaction } from "../Transaction";
4
- import { Fee } from "./Fee";
5
- export type Total = {
6
- amount: Amounts;
7
- fee: Fee;
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
- function initiate(partial?: Partial<Total>): Total;
11
- function add(addendee: Total, addend: Total): Total;
12
- function compare(expected: Total, outcome: Total): boolean;
13
- function from(collect: Transaction.Collect, collected?: Total): Total;
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
- const is: isly.Type.IsFunction<Total>;
16
- const flaw: isly.Type.FlawFunction;
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
  }
@@ -1,34 +1,73 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
2
- import { Amounts } from "../Amounts";
3
- import { Fee } from "./Fee";
3
+ import { Amount } from "./Amount";
4
4
  export var Total;
5
5
  (function (Total) {
6
- function initiate(partial) {
7
- return { amount: partial?.amount ?? {}, fee: partial?.fee ?? { other: {} } };
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.initiate = initiate;
10
- function add(addendee, addend) {
11
- return { amount: Amounts.add(addendee.amount, addend.amount), fee: Fee.add(addendee.fee, addend.fee) };
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.add = add;
14
- function compare(expected, outcome) {
15
- return Amounts.compare(expected.amount, outcome.amount) && Amounts.compare(expected.fee.other, outcome.fee.other);
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.compare = compare;
18
- function from(collect, collected = initiate()) {
19
- let result = collected;
20
- for (const [currency, counterbalance] of Object.entries(collect.counterbalances)) {
21
- for (const [entry, amount] of Object.entries(counterbalance))
22
- if (entry.startsWith("fee"))
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.from = from;
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,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAM3B,MAAM,KAAW,KAAK,CAwBrB;AAxBD,WAAiB,KAAK;IACrB,SAAgB,QAAQ,CAAC,OAAwB;QAChD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAA;IAC7E,CAAC;IAFe,cAAQ,WAEvB,CAAA;IACD,SAAgB,GAAG,CAAC,QAAe,EAAE,MAAa;QACjD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;IACvG,CAAC;IAFe,SAAG,MAElB,CAAA;IACD,SAAgB,OAAO,CAAC,QAAe,EAAE,OAAc;QACtD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClH,CAAC;IAFe,aAAO,UAEtB,CAAA;IACD,SAAgB,IAAI,CAAC,OAA4B,EAAE,YAAmB,QAAQ,EAAE;QAC/E,IAAI,MAAM,GAAU,SAAS,CAAA;QAC7B,KAAK,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAClF,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC3D,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;oBAC1B,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;qBACtE,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAClC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAVe,UAAI,OAUnB,CAAA;IACY,UAAI,GAAG,IAAI,CAAC,MAAM,CAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAClE,QAAE,GAAG,MAAA,IAAI,CAAC,EAAE,CAAA;IACZ,UAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAxBgB,KAAK,KAAL,KAAK,QAwBrB"}
1
+ {"version":3,"file":"Total.js","sourceRoot":"../","sources":["Settlement/Total.ts"],"names":[],"mappings":"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"}
@@ -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 { Card } from "../Card";
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
- type Settled = SettlementSettled;
23
- const Settled: typeof SettlementSettled;
24
- const Total: typeof SettlementTotal;
25
- type Total = SettlementTotal;
26
- const Fee: typeof SettlementFee;
27
- type Fee = SettlementFee;
28
- type Creatable = SettlementCreatable;
29
- const Creatable: typeof SettlementCreatable;
30
- type Entry = SettlementEntry;
31
- const Entry: typeof SettlementEntry;
32
- type Batch = SettlementBatch;
33
- const Batch: typeof SettlementBatch;
34
- namespace Entry {
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 initiate(id: string, by: string, batch: Batch, processor: Card.Stack): Settlement;
55
- function from(id: string, creatable: Settlement.Creatable, by: string): Settlement;
56
- function compile(settlement: Settlement, entries: Settlement.Entry[]): Settlement;
57
- function toFailed(id: string, creatable: Settlement.Creatable, by: string, reason: string): Settlement;
58
- const type: isly.object.ExtendableType<Settlement>;
59
- const is: isly.Type.IsFunction<Settlement>;
60
- const flaw: isly.Type.FlawFunction;
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
  }
@@ -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 initiate(id, by, batch, processor) {
21
+ function from(creatable, by) {
20
22
  return {
21
- id: id ?? Identifier.generate(),
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.outcome = Settlement.Total.add(result.outcome, Settlement.Entry.compile(entry));
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 toFailed(id, creatable, by, reason) {
62
- return {
63
- id,
64
- created: isoly.DateTime.now(),
65
- status: { collected: "failed", settled: "failed" },
66
- by,
67
- processor: creatable.processor,
68
- references: creatable.references,
69
- batch: creatable.batch,
70
- expected: Settlement.Total.initiate(),
71
- outcome: Settlement.Total.initiate(),
72
- entries: { count: 0 },
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.toFailed = toFailed;
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Settlement/index.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface Storable {
10
10
  created: isoly.DateTime;
11
11
  realm: Realm;
12
12
  supplier: Supplier;
13
+ link: string;
13
14
  type: Category;
14
15
  reference: string;
15
16
  conditions?: Conditions;
@@ -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;AAYzC,MAAM,KAAW,QAAQ,CAYxB;AAZD,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,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,EAZgB,QAAQ,KAAR,QAAQ,QAYxB"}
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 & Counterbalance2;
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: isly.union(Balances.Balance.type, Counterbalance2.type),
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(),