@pax2pay/model-banking 0.1.360 → 0.1.361

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.
@@ -4,19 +4,68 @@ import { Balances } from "../Balances"
4
4
  import { Counterbalance as CounterbalanceOperation } from "../Counterbalance"
5
5
  import { Change } from "./Change"
6
6
 
7
- export type Changes = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>
8
-
7
+ export type Changes = Partial<Record<Changes.Entry.Balance, Change>> & Record<Changes.Entry.Counterbalance, Change>
9
8
  export namespace Changes {
9
+ export function available(changes: Changes, currency: isoly.Currency): number {
10
+ return Object.entries(changes).reduce(
11
+ (r, [entry, change]) =>
12
+ isoly.Currency.add(
13
+ currency,
14
+ r,
15
+ Balances.Balance.Entry.is(entry) || Entry.Balance.type.is(entry)
16
+ ? (entry == "actual" || entry == "available" ? 1 : -1) *
17
+ (change.type == "subtract" ? -1 : 1) *
18
+ (change.amount ?? 0)
19
+ : 0
20
+ ),
21
+ 0
22
+ )
23
+ }
24
+ export function reserved(changes: Changes, currency: isoly.Currency): number {
25
+ return Object.entries(changes).reduce(
26
+ (r, [entry, change]) =>
27
+ isoly.Currency.add(
28
+ currency,
29
+ r,
30
+ entry == "actual" ||
31
+ entry == "available" ||
32
+ (!Balances.Balance.Entry.is(entry) && !Entry.Balance.type.is(entry))
33
+ ? 0
34
+ : (change.type == "subtract" ? -1 : 1) * (change.amount ?? 0)
35
+ ),
36
+ 0
37
+ )
38
+ }
39
+ export type Sum = Partial<Record<Changes.Entry.Balance, number>> & Record<Changes.Entry.Counterbalance, number>
40
+ export type MaybeLegacy = Changes | Legacy
41
+ export const type = isly.record<Legacy>(isly.string(), Change.type)
42
+ export type Legacy = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>
43
+ export namespace Legacy {
44
+ export const type = isly.record<Legacy>(isly.string(), Change.type)
45
+ export const is = type.is
46
+ export const flaw = type.flaw
47
+ export type Entry = Balances.Balance.Entry | Legacy.Entry.Counterbalance
48
+ export namespace Entry {
49
+ export type Balance = typeof Balances.Balance.Entry.values[number]
50
+ export namespace Balance {
51
+ export const type = Balances.Balance.Entry.type
52
+ }
53
+ export type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`
54
+ }
55
+ }
56
+ export type Entry = Changes.Entry.Balance | Changes.Entry.Counterbalance
10
57
  export namespace Entry {
58
+ export const type = isly.string<Entry>()
11
59
  export type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`
12
60
  export function split(counterbalance: Counterbalance): [CounterbalanceOperation.Link, isoly.DateTime] {
13
61
  const split = counterbalance.split("-")
14
62
  const [realm, supplier, account, hour] = [split[0], split[1], split[2], split.slice(3).join("-")]
15
63
  return [`${realm}-${supplier}-${account}`, hour]
16
64
  }
65
+ export type Balance = typeof Balance.values[number]
66
+ export namespace Balance {
67
+ export const values = ["available", "incomingReserved", "outgoingReserved", "bufferReserved"] as const
68
+ export const type = isly.string<Balance>(values)
69
+ }
17
70
  }
18
- export type Entry = Balances.Balance.Entry | Entry.Counterbalance
19
- export const type = isly.record<Changes>(isly.string(), Change.type)
20
- export const is = type.is
21
- export const flaw = type.flaw
22
71
  }
@@ -49,15 +49,6 @@ export namespace Creatable {
49
49
  currency,
50
50
  type: "refund",
51
51
  changes: {
52
- actual: {
53
- type: "add",
54
- amount: isoly.Currency.subtract(
55
- currency,
56
- isoly.Currency.add(currency, operationAmount, operationFee),
57
- Math.abs(charge)
58
- ),
59
- status: "pending",
60
- },
61
52
  incomingReserved: {
62
53
  type: "add",
63
54
  amount: isoly.Currency.add(currency, operationAmount, operationFee),
@@ -12,17 +12,23 @@ export interface Operation extends OperationCreatable {
12
12
  previous?: string
13
13
  }
14
14
  export namespace Operation {
15
+ export function sum(operations: Operation[]): Changes.Sum {
16
+ const result: Changes.Sum = {}
17
+ for (const operation of operations) {
18
+ Object.entries(operation.changes).forEach(([entry, change]) => {
19
+ result[entry as Changes.Entry.Balance] = isoly.Currency[change.type](
20
+ operation.currency,
21
+ result[entry as Changes.Entry.Balance] ?? 0,
22
+ change.amount
23
+ )
24
+ })
25
+ }
26
+ return result
27
+ }
15
28
  export const Signer = OperationSigner
16
29
  export type Creatable = OperationCreatable
17
30
  export const Creatable = OperationCreatable
18
- export type Changes = OperationChanges
19
- export const Changes = OperationChanges
20
- export namespace Changes {
21
- export type Entry = OperationChanges.Entry
22
- export namespace Entry {
23
- export type Counterbalance = OperationChanges.Entry.Counterbalance
24
- }
25
- }
31
+ export import Changes = OperationChanges
26
32
  export const type = OperationCreatable.type.extend<Operation>({
27
33
  transaction: isly.string(),
28
34
  counter: isly.number(),
@@ -3,14 +3,36 @@ import { isly } from "isly";
3
3
  import { Balances } from "../Balances";
4
4
  import { Counterbalance as CounterbalanceOperation } from "../Counterbalance";
5
5
  import { Change } from "./Change";
6
- export type Changes = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>;
6
+ export type Changes = Partial<Record<Changes.Entry.Balance, Change>> & Record<Changes.Entry.Counterbalance, Change>;
7
7
  export declare namespace Changes {
8
+ function available(changes: Changes, currency: isoly.Currency): number;
9
+ function reserved(changes: Changes, currency: isoly.Currency): number;
10
+ type Sum = Partial<Record<Changes.Entry.Balance, number>> & Record<Changes.Entry.Counterbalance, number>;
11
+ type MaybeLegacy = Changes | Legacy;
12
+ const type: isly.Type<Legacy>;
13
+ type Legacy = Partial<Record<Balances.Balance.Entry, Change>> & Record<Changes.Entry.Counterbalance, Change>;
14
+ namespace Legacy {
15
+ const type: isly.Type<Legacy>;
16
+ const is: isly.Type.IsFunction<Legacy>;
17
+ const flaw: isly.Type.FlawFunction;
18
+ type Entry = Balances.Balance.Entry | Legacy.Entry.Counterbalance;
19
+ namespace Entry {
20
+ type Balance = typeof Balances.Balance.Entry.values[number];
21
+ namespace Balance {
22
+ const type: isly.Type<"actual" | "incomingReserved" | "outgoingReserved" | "bufferReserved">;
23
+ }
24
+ type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`;
25
+ }
26
+ }
27
+ type Entry = Changes.Entry.Balance | Changes.Entry.Counterbalance;
8
28
  namespace Entry {
29
+ const type: isly.Type<Entry>;
9
30
  type Counterbalance = `${CounterbalanceOperation.Link}-${isoly.DateTime}`;
10
31
  function split(counterbalance: Counterbalance): [CounterbalanceOperation.Link, isoly.DateTime];
32
+ type Balance = typeof Balance.values[number];
33
+ namespace Balance {
34
+ const values: readonly ["available", "incomingReserved", "outgoingReserved", "bufferReserved"];
35
+ const type: isly.Type<"incomingReserved" | "outgoingReserved" | "bufferReserved" | "available">;
36
+ }
11
37
  }
12
- type Entry = Balances.Balance.Entry | Entry.Counterbalance;
13
- const type: isly.Type<Changes>;
14
- const is: isly.Type.IsFunction<Changes>;
15
- const flaw: isly.Type.FlawFunction;
16
38
  }
@@ -1,18 +1,53 @@
1
+ import { isoly } from "isoly";
1
2
  import { isly } from "isly";
3
+ import { Balances } from "../Balances";
2
4
  import { Change } from "./Change";
3
5
  export var Changes;
4
6
  (function (Changes) {
7
+ function available(changes, currency) {
8
+ return Object.entries(changes).reduce((r, [entry, change]) => isoly.Currency.add(currency, r, Balances.Balance.Entry.is(entry) || Entry.Balance.type.is(entry)
9
+ ? (entry == "actual" || entry == "available" ? 1 : -1) *
10
+ (change.type == "subtract" ? -1 : 1) *
11
+ (change.amount ?? 0)
12
+ : 0), 0);
13
+ }
14
+ Changes.available = available;
15
+ function reserved(changes, currency) {
16
+ return Object.entries(changes).reduce((r, [entry, change]) => isoly.Currency.add(currency, r, entry == "actual" ||
17
+ entry == "available" ||
18
+ (!Balances.Balance.Entry.is(entry) && !Entry.Balance.type.is(entry))
19
+ ? 0
20
+ : (change.type == "subtract" ? -1 : 1) * (change.amount ?? 0)), 0);
21
+ }
22
+ Changes.reserved = reserved;
23
+ Changes.type = isly.record(isly.string(), Change.type);
24
+ let Legacy;
25
+ (function (Legacy) {
26
+ Legacy.type = isly.record(isly.string(), Change.type);
27
+ Legacy.is = Legacy.type.is;
28
+ Legacy.flaw = Legacy.type.flaw;
29
+ let Entry;
30
+ (function (Entry) {
31
+ let Balance;
32
+ (function (Balance) {
33
+ Balance.type = Balances.Balance.Entry.type;
34
+ })(Balance = Entry.Balance || (Entry.Balance = {}));
35
+ })(Entry = Legacy.Entry || (Legacy.Entry = {}));
36
+ })(Legacy = Changes.Legacy || (Changes.Legacy = {}));
5
37
  let Entry;
6
38
  (function (Entry) {
39
+ Entry.type = isly.string();
7
40
  function split(counterbalance) {
8
41
  const split = counterbalance.split("-");
9
42
  const [realm, supplier, account, hour] = [split[0], split[1], split[2], split.slice(3).join("-")];
10
43
  return [`${realm}-${supplier}-${account}`, hour];
11
44
  }
12
45
  Entry.split = split;
46
+ let Balance;
47
+ (function (Balance) {
48
+ Balance.values = ["available", "incomingReserved", "outgoingReserved", "bufferReserved"];
49
+ Balance.type = isly.string(Balance.values);
50
+ })(Balance = Entry.Balance || (Entry.Balance = {}));
13
51
  })(Entry = Changes.Entry || (Changes.Entry = {}));
14
- Changes.type = isly.record(isly.string(), Change.type);
15
- Changes.is = Changes.type.is;
16
- Changes.flaw = Changes.type.flaw;
17
52
  })(Changes || (Changes = {}));
18
53
  //# sourceMappingURL=Changes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Changes.js","sourceRoot":"../","sources":["Operation/Changes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAIjC,MAAM,KAAW,OAAO,CAavB;AAbD,WAAiB,OAAO;IACvB,IAAiB,KAAK,CAOrB;IAPD,WAAiB,KAAK;QAErB,SAAgB,KAAK,CAAC,cAA8B;YACnD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACjG,OAAO,CAAC,GAAG,KAAK,IAAI,QAAQ,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;QACjD,CAAC;QAJe,WAAK,QAIpB,CAAA;IACF,CAAC,EAPgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAOrB;IAEY,YAAI,GAAG,IAAI,CAAC,MAAM,CAAU,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACvD,UAAE,GAAG,QAAA,IAAI,CAAC,EAAE,CAAA;IACZ,YAAI,GAAG,QAAA,IAAI,CAAC,IAAI,CAAA;AAC9B,CAAC,EAbgB,OAAO,KAAP,OAAO,QAavB"}
1
+ {"version":3,"file":"Changes.js","sourceRoot":"../","sources":["Operation/Changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,MAAM,KAAW,OAAO,CA+DvB;AA/DD,WAAiB,OAAO;IACvB,SAAgB,SAAS,CAAC,OAAgB,EAAE,QAAwB;QACnE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjB,QAAQ,EACR,CAAC,EACD,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YAC/D,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC,CACJ,EACF,CAAC,CACD,CAAA;IACF,CAAC;IAde,iBAAS,YAcxB,CAAA;IACD,SAAgB,QAAQ,CAAC,OAAgB,EAAE,QAAwB;QAClE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CACtB,KAAK,CAAC,QAAQ,CAAC,GAAG,CACjB,QAAQ,EACR,CAAC,EACD,KAAK,IAAI,QAAQ;YAChB,KAAK,IAAI,WAAW;YACpB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAC9D,EACF,CAAC,CACD,CAAA;IACF,CAAC;IAde,gBAAQ,WAcvB,CAAA;IAGY,YAAI,GAAG,IAAI,CAAC,MAAM,CAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAEnE,IAAiB,MAAM,CAYtB;IAZD,WAAiB,MAAM;QACT,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACtD,SAAE,GAAG,OAAA,IAAI,CAAC,EAAE,CAAA;QACZ,WAAI,GAAG,OAAA,IAAI,CAAC,IAAI,CAAA;QAE7B,IAAiB,KAAK,CAMrB;QAND,WAAiB,KAAK;YAErB,IAAiB,OAAO,CAEvB;YAFD,WAAiB,OAAO;gBACV,YAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;YAChD,CAAC,EAFgB,OAAO,GAAP,aAAO,KAAP,aAAO,QAEvB;QAEF,CAAC,EANgB,KAAK,GAAL,YAAK,KAAL,YAAK,QAMrB;IACF,CAAC,EAZgB,MAAM,GAAN,cAAM,KAAN,cAAM,QAYtB;IAED,IAAiB,KAAK,CAarB;IAbD,WAAiB,KAAK;QACR,UAAI,GAAG,IAAI,CAAC,MAAM,EAAS,CAAA;QAExC,SAAgB,KAAK,CAAC,cAA8B;YACnD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YACjG,OAAO,CAAC,GAAG,KAAK,IAAI,QAAQ,IAAI,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;QACjD,CAAC;QAJe,WAAK,QAIpB,CAAA;QAED,IAAiB,OAAO,CAGvB;QAHD,WAAiB,OAAO;YACV,cAAM,GAAG,CAAC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,CAAU,CAAA;YACzF,YAAI,GAAG,IAAI,CAAC,MAAM,CAAU,QAAA,MAAM,CAAC,CAAA;QACjD,CAAC,EAHgB,OAAO,GAAP,aAAO,KAAP,aAAO,QAGvB;IACF,CAAC,EAbgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAarB;AACF,CAAC,EA/DgB,OAAO,KAAP,OAAO,QA+DvB"}
@@ -38,11 +38,6 @@ export var Creatable;
38
38
  currency,
39
39
  type: "refund",
40
40
  changes: {
41
- actual: {
42
- type: "add",
43
- amount: isoly.Currency.subtract(currency, isoly.Currency.add(currency, operationAmount, operationFee), Math.abs(charge)),
44
- status: "pending",
45
- },
46
41
  incomingReserved: {
47
42
  type: "add",
48
43
  amount: isoly.Currency.add(currency, operationAmount, operationFee),
@@ -1 +1 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,CAuDzB;AAvDD,WAAiB,SAAS;IACZ,eAAK,GAAG;QACpB,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;KACL,CAAA;IAEG,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAA,KAAK,CAAC;KACxB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,UAAU,CAAC,OAAe,EAAE,KAAwC,EAAE,MAAc;QAGnG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACR,MAAM,EAAE;oBACP,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAC9B,QAAQ,EACR,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,EAC3D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAChB;oBACD,MAAM,EAAE,SAAS;iBACjB;gBACD,gBAAgB,EAAE;oBACjB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;oBACnE,MAAM,EAAE,SAAS;iBACjB;aACD;SACD,CAAA;IACF,CAAC;IA3Be,oBAAU,aA2BzB,CAAA;AACF,CAAC,EAvDgB,SAAS,KAAT,SAAS,QAuDzB"}
1
+ {"version":3,"file":"Creatable.js","sourceRoot":"../","sources":["Operation/Creatable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,KAAW,SAAS,CA8CzB;AA9CD,WAAiB,SAAS;IACZ,eAAK,GAAG;QACpB,UAAU;QACV,kBAAkB;QAClB,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;KACL,CAAA;IAEG,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAA,KAAK,CAAC;KACxB,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,UAAU,CAAC,OAAe,EAAE,KAAwC,EAAE,MAAc;QAGnG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;QAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,QAAQ;YACR,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACR,gBAAgB,EAAE;oBACjB,IAAI,EAAE,KAAK;oBACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC;oBACnE,MAAM,EAAE,SAAS;iBACjB;aACD;SACD,CAAA;IACF,CAAC;IAlBe,oBAAU,aAkBzB,CAAA;AACF,CAAC,EA9CgB,SAAS,KAAT,SAAS,QA8CzB"}
@@ -11,17 +11,11 @@ export interface Operation extends OperationCreatable {
11
11
  previous?: string;
12
12
  }
13
13
  export declare namespace Operation {
14
+ function sum(operations: Operation[]): Changes.Sum;
14
15
  const Signer: typeof OperationSigner;
15
16
  type Creatable = OperationCreatable;
16
17
  const Creatable: typeof OperationCreatable;
17
- type Changes = OperationChanges;
18
- const Changes: typeof OperationChanges;
19
- namespace Changes {
20
- type Entry = OperationChanges.Entry;
21
- namespace Entry {
22
- type Counterbalance = OperationChanges.Entry.Counterbalance;
23
- }
24
- }
18
+ export import Changes = OperationChanges;
25
19
  const type: isly.object.ExtendableType<Operation>;
26
20
  const is: isly.Type.IsFunction<Operation>;
27
21
  const flaw: isly.Type.FlawFunction;
@@ -5,6 +5,16 @@ import { Creatable as OperationCreatable } from "./Creatable";
5
5
  import { Signer as OperationSigner } from "./Signer";
6
6
  export var Operation;
7
7
  (function (Operation) {
8
+ function sum(operations) {
9
+ const result = {};
10
+ for (const operation of operations) {
11
+ Object.entries(operation.changes).forEach(([entry, change]) => {
12
+ result[entry] = isoly.Currency[change.type](operation.currency, result[entry] ?? 0, change.amount);
13
+ });
14
+ }
15
+ return result;
16
+ }
17
+ Operation.sum = sum;
8
18
  Operation.Signer = OperationSigner;
9
19
  Operation.Creatable = OperationCreatable;
10
20
  Operation.Changes = OperationChanges;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,MAAM,KAAW,SAAS,CA6BzB;AA7BD,WAAiB,SAAS;IACZ,gBAAM,GAAG,eAAe,CAAA;IAExB,mBAAS,GAAG,kBAAkB,CAAA;IAE9B,iBAAO,GAAG,gBAAgB,CAAA;IAO1B,cAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAY;QAC7D,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,aAAa,CAAC,WAAmB,EAAE,SAAoB;QACtE,OAAO;YACN,GAAG,SAAS;YACZ,WAAW;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;SAC7B,CAAA;IACF,CAAC;IAPe,uBAAa,gBAO5B,CAAA;AACF,CAAC,EA7BgB,SAAS,KAAT,SAAS,QA6BzB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Operation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAA;AASpD,MAAM,KAAW,SAAS,CAmCzB;AAnCD,WAAiB,SAAS;IACzB,SAAgB,GAAG,CAAC,UAAuB;QAC1C,MAAM,MAAM,GAAgB,EAAE,CAAA;QAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;gBAC7D,MAAM,CAAC,KAA8B,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CACnE,SAAS,CAAC,QAAQ,EAClB,MAAM,CAAC,KAA8B,CAAC,IAAI,CAAC,EAC3C,MAAM,CAAC,MAAM,CACb,CAAA;YACF,CAAC,CAAC,CAAA;QACH,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAZe,aAAG,MAYlB,CAAA;IACY,gBAAM,GAAG,eAAe,CAAA;IAExB,mBAAS,GAAG,kBAAkB,CAAA;IAC7B,iBAAO,GAAG,gBAAgB,CAAA;IAC3B,cAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAY;QAC7D,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACW,YAAE,GAAG,UAAA,IAAI,CAAC,EAAE,CAAA;IACZ,cAAI,GAAG,UAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,aAAa,CAAC,WAAmB,EAAE,SAAoB;QACtE,OAAO;YACN,GAAG,SAAS;YACZ,WAAW;YACX,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;SAC7B,CAAA;IACF,CAAC;IAPe,uBAAa,gBAO5B,CAAA;AACF,CAAC,EAnCgB,SAAS,KAAT,SAAS,QAmCzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pax2pay/model-banking",
3
- "version": "0.1.360",
3
+ "version": "0.1.361",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",