@pax2pay/model-banking 0.1.528 → 0.1.530

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 (46) hide show
  1. package/Card/Preset.ts +9 -7
  2. package/Client/Treasury.ts +4 -3
  3. package/Settlement/Identifier.ts +3 -0
  4. package/Supplier/index.ts +6 -0
  5. package/Treasury/Snapshot/Emoney.ts +2 -0
  6. package/Treasury/Snapshot/index.ts +65 -5
  7. package/dist/cjs/Card/Preset.d.ts +3 -3
  8. package/dist/cjs/Card/Preset.js +9 -7
  9. package/dist/cjs/Card/Preset.js.map +1 -1
  10. package/dist/cjs/Client/Treasury.d.ts +1 -1
  11. package/dist/cjs/Client/Treasury.js +1 -2
  12. package/dist/cjs/Client/Treasury.js.map +1 -1
  13. package/dist/cjs/Settlement/Identifier.d.ts +1 -0
  14. package/dist/cjs/Settlement/Identifier.js +4 -0
  15. package/dist/cjs/Settlement/Identifier.js.map +1 -1
  16. package/dist/cjs/Supplier/index.d.ts +2 -0
  17. package/dist/cjs/Supplier/index.js +5 -0
  18. package/dist/cjs/Supplier/index.js.map +1 -1
  19. package/dist/cjs/Treasury/Snapshot/Emoney.d.ts +2 -0
  20. package/dist/cjs/Treasury/Snapshot/index.d.ts +35 -183
  21. package/dist/cjs/Treasury/Snapshot/index.js +44 -3
  22. package/dist/cjs/Treasury/Snapshot/index.js.map +1 -1
  23. package/dist/mjs/Card/Preset.d.ts +3 -3
  24. package/dist/mjs/Card/Preset.js +9 -7
  25. package/dist/mjs/Card/Preset.js.map +1 -1
  26. package/dist/mjs/Client/Treasury.d.ts +1 -1
  27. package/dist/mjs/Client/Treasury.js +1 -2
  28. package/dist/mjs/Client/Treasury.js.map +1 -1
  29. package/dist/mjs/Settlement/Identifier.d.ts +1 -0
  30. package/dist/mjs/Settlement/Identifier.js +4 -0
  31. package/dist/mjs/Settlement/Identifier.js.map +1 -1
  32. package/dist/mjs/Supplier/index.d.ts +2 -0
  33. package/dist/mjs/Supplier/index.js +5 -0
  34. package/dist/mjs/Supplier/index.js.map +1 -1
  35. package/dist/mjs/Treasury/Snapshot/Emoney.d.ts +2 -0
  36. package/dist/mjs/Treasury/Snapshot/index.d.ts +35 -183
  37. package/dist/mjs/Treasury/Snapshot/index.js +44 -3
  38. package/dist/mjs/Treasury/Snapshot/index.js.map +1 -1
  39. package/package.json +1 -1
  40. package/Treasury/Snapshot/Fragment.ts +0 -115
  41. package/dist/cjs/Treasury/Snapshot/Fragment.d.ts +0 -53
  42. package/dist/cjs/Treasury/Snapshot/Fragment.js +0 -93
  43. package/dist/cjs/Treasury/Snapshot/Fragment.js.map +0 -1
  44. package/dist/mjs/Treasury/Snapshot/Fragment.d.ts +0 -53
  45. package/dist/mjs/Treasury/Snapshot/Fragment.js +0 -90
  46. package/dist/mjs/Treasury/Snapshot/Fragment.js.map +0 -1
package/Card/Preset.ts CHANGED
@@ -7,6 +7,8 @@ export type Preset = typeof Preset.names[number]
7
7
  // (test OR p2p)-scheme-interchange
8
8
  export namespace Preset {
9
9
  export const names = [
10
+ "p2p-diners-175",
11
+ "p2p-diners-200",
10
12
  "p2p-mc-200",
11
13
  "p2p-visa-bid-115",
12
14
  "p2p-visa-bp-140",
@@ -14,12 +16,11 @@ export namespace Preset {
14
16
  "p2p-visa-idx-140",
15
17
  "p2p-visa-idx-160",
16
18
  "p2p-visa-idx-200",
17
- "test-pg-200",
18
19
  "test-pg-150",
19
- "test-ta-pg-200",
20
+ "test-pg-200",
20
21
  "test-ta-mc-200",
21
- "p2p-diners-175",
22
- "p2p-diners-200",
22
+ "test-ta-pg-200",
23
+ "test-ta-pg-bc-200",
23
24
  ] as const
24
25
  export const type = isly.string<Preset>(names)
25
26
  export const type2 = isly2
@@ -27,6 +28,8 @@ export namespace Preset {
27
28
  .rename("Preset")
28
29
  .describe("Card configuration (iin/scheme/interchange).")
29
30
  export const presets: Record<Preset, Stack> = {
31
+ "p2p-diners-175": "uk-diners-dpg",
32
+ "p2p-diners-200": "uk-diners-dpg",
30
33
  "p2p-mc-200": "uk-mc-tpl-marqeta",
31
34
  "p2p-visa-bid-115": "uk-visa-tpl-marqeta",
32
35
  "p2p-visa-bp-140": "uk-visa-tpl-marqeta",
@@ -34,11 +37,10 @@ export namespace Preset {
34
37
  "p2p-visa-idx-140": "uk-visa-tpl-marqeta",
35
38
  "p2p-visa-idx-160": "uk-visa-tpl-marqeta",
36
39
  "p2p-visa-idx-200": "uk-visa-tpl-marqeta",
37
- "p2p-diners-175": "uk-diners-dpg",
38
- "p2p-diners-200": "uk-diners-dpg",
40
+ "test-pg-150": "test-paxgiro",
39
41
  "test-pg-200": "test-paxgiro",
40
42
  "test-ta-mc-200": "test-tpl-paxgiro",
41
43
  "test-ta-pg-200": "test-tpl-paxgiro",
42
- "test-pg-150": "test-paxgiro",
44
+ "test-ta-pg-bc-200": "test-tpl-paxgiro",
43
45
  }
44
46
  }
@@ -5,9 +5,10 @@ import { Treasury as TreasuryModel } from "../Treasury"
5
5
 
6
6
  export class Treasury {
7
7
  constructor(private readonly client: http.Client) {}
8
- async fetch(hour?: isoly.DateTime): Promise<TreasuryModel.Snapshot | gracely.Error> {
9
- const path = hour ? `/${isoly.DateTime.truncate(hour, "hours")}` : ""
10
- return this.client.get<TreasuryModel.Snapshot>(`/treasury/v2/snapshot${path}`)
8
+ async fetch(hour?: isoly.DateTime): Promise<TreasuryModel.Snapshot[] | gracely.Error> {
9
+ return this.client.get<TreasuryModel.Snapshot[]>(
10
+ `/treasury/v2/snapshot${hour ? `/${isoly.DateTime.truncate(hour, "hours")}` : ""}`
11
+ )
11
12
  }
12
13
  async listTransactions(accountId: string): Promise<TreasuryModel.Transaction[] | gracely.Error> {
13
14
  return this.client.get<TreasuryModel.Transaction[]>(`/treasury/account/${accountId}/transaction`)
@@ -9,6 +9,9 @@ export namespace Identifier {
9
9
  export function getCharacter(identifier: Identifier): Card.Stack.Character {
10
10
  return identifier.substring(8, 9) as Card.Stack.Character
11
11
  }
12
+ export function getCycle(identifier: Identifier): number {
13
+ return +identifier.substring(9)
14
+ }
12
15
  export function toProcessor(identifier: Identifier): Card.Stack | undefined {
13
16
  return Card.Stack.Character.toStack(getCharacter(identifier))
14
17
  }
package/Supplier/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly"
2
2
  import { isly } from "isly"
3
+ import { Realm } from "../Realm"
3
4
 
4
5
  export type Supplier = typeof Supplier.names[number]
5
6
  export namespace Supplier {
@@ -11,4 +12,9 @@ export namespace Supplier {
11
12
  paxgiro: ["GBP", "SEK", "USD", "EUR"],
12
13
  paxgiroCredit: ["GBP", "SEK", "USD", "EUR"],
13
14
  }
15
+ export const realm: Record<Realm, Supplier[]> = {
16
+ eea: [],
17
+ test: ["paxgiro", "paxgiroCredit"],
18
+ uk: ["bankingcircle", "clearbank"],
19
+ }
14
20
  }
@@ -1,10 +1,12 @@
1
1
  import { isoly } from "isoly"
2
2
  import { Balances } from "../../Balances"
3
3
  import { Counterbalances } from "../../Counterbalances"
4
+ import { Supplier } from "../../Supplier"
4
5
 
5
6
  export interface Emoney {
6
7
  organization: string
7
8
  account: string
9
+ supplier?: Supplier
8
10
  timestamp: isoly.DateTime
9
11
  balances: Balances
10
12
  counterbalances: Counterbalances
@@ -1,16 +1,76 @@
1
1
  import { isoly } from "isoly"
2
2
  import { isly } from "isly"
3
+ import { Balance } from "../../Balance"
4
+ import { Supplier } from "../../Supplier"
5
+ import { Warning } from "../../Warning"
6
+ import { Account } from "../Account"
3
7
  import { Emoney as SnapshotEmoney } from "./Emoney"
4
8
  import { Fiat as SnapshotFiat } from "./Fiat"
5
- import { Fragment as SnapshotFragment } from "./Fragment"
6
9
  import { funding as snapshotFunding } from "./funding"
7
10
 
8
- export type Snapshot = Partial<Record<isoly.Currency, Snapshot.Fragment>>
9
-
11
+ export interface Snapshot {
12
+ warnings: Warning.Snapshot[]
13
+ emoney: Balance.Extended & { total?: number }
14
+ currency: isoly.Currency
15
+ supplier: Supplier
16
+ counterbalance: Snapshot.Counterbalance
17
+ fiat: {
18
+ safe: number
19
+ unsafe: number
20
+ total: number // emoney issuable total amount
21
+ other: number
22
+ buffer: number
23
+ accounts: Account[]
24
+ }
25
+ }
10
26
  export namespace Snapshot {
11
- export import Fragment = SnapshotFragment
12
27
  export import funding = snapshotFunding
13
28
  export type Emoney = SnapshotEmoney
14
29
  export type Fiat = SnapshotFiat
15
- export const type = isly.record(isly.fromIs("Currency", isoly.Currency.is), Fragment.type)
30
+ export type Counterbalance = Record<string, { total: number; account: Record<string, { amount: number }> }>
31
+ export namespace Counterbalance {
32
+ export const type = isly.record<Counterbalance>(
33
+ isly.string(),
34
+ isly.object<Counterbalance[string]>({
35
+ total: isly.number(),
36
+ account: isly.record<Counterbalance[string]["account"]>(
37
+ isly.string(),
38
+ isly.object<Counterbalance[string]["account"][string]>({ amount: isly.number() })
39
+ ),
40
+ })
41
+ )
42
+ export function sum(currency: isoly.Currency, accounts: Record<string, { amount: number }>): number {
43
+ return Object.values(accounts).reduce(
44
+ (result, account) => isoly.Currency.add(currency, result, account.amount),
45
+ 0
46
+ )
47
+ }
48
+ export function validate(currency: isoly.Currency, counterbalances: Counterbalance): boolean {
49
+ for (const counterbalance of Object.values(counterbalances))
50
+ if (isoly.Currency.subtract(currency, counterbalance.total, sum(currency, counterbalance.account)))
51
+ return false
52
+ return true
53
+ }
54
+ }
55
+ export function validate(snapshot: Snapshot): boolean {
56
+ const validCounterbalance = Counterbalance.validate(snapshot.currency, snapshot.counterbalance)
57
+ const issuable = snapshot.fiat.total
58
+ const actual = snapshot.emoney.actual ?? 0
59
+ return validCounterbalance && issuable == actual
60
+ }
61
+ export const type = isly.object<Snapshot>({
62
+ warnings: Warning.Snapshot.type.array(),
63
+ emoney: Balance.Extended,
64
+ counterbalance: Counterbalance.type,
65
+ currency: isly.fromIs("currency", isoly.Currency.is),
66
+ supplier: Supplier.type,
67
+ fiat: isly.object({
68
+ safe: isly.number(),
69
+ unsafe: isly.number(),
70
+ total: isly.number(),
71
+ other: isly.number(),
72
+ buffer: isly.number(),
73
+ accounts: Account.type.array(),
74
+ }),
75
+ })
16
76
  }
@@ -3,8 +3,8 @@ import { isly as isly2 } from "isly2";
3
3
  import { Stack } from "./Stack";
4
4
  export type Preset = typeof Preset.names[number];
5
5
  export declare namespace Preset {
6
- const names: readonly ["p2p-mc-200", "p2p-visa-bid-115", "p2p-visa-bp-140", "p2p-visa-cdd-185", "p2p-visa-idx-140", "p2p-visa-idx-160", "p2p-visa-idx-200", "test-pg-200", "test-pg-150", "test-ta-pg-200", "test-ta-mc-200", "p2p-diners-175", "p2p-diners-200"];
7
- const type: isly.Type<"p2p-mc-200" | "p2p-visa-bid-115" | "p2p-visa-bp-140" | "p2p-visa-cdd-185" | "p2p-visa-idx-140" | "p2p-visa-idx-160" | "p2p-visa-idx-200" | "test-pg-200" | "test-pg-150" | "test-ta-pg-200" | "test-ta-mc-200" | "p2p-diners-175" | "p2p-diners-200">;
8
- const type2: isly2.String<"p2p-mc-200" | "p2p-visa-bid-115" | "p2p-visa-bp-140" | "p2p-visa-cdd-185" | "p2p-visa-idx-140" | "p2p-visa-idx-160" | "p2p-visa-idx-200" | "test-pg-200" | "test-pg-150" | "test-ta-pg-200" | "test-ta-mc-200" | "p2p-diners-175" | "p2p-diners-200">;
6
+ const names: readonly ["p2p-diners-175", "p2p-diners-200", "p2p-mc-200", "p2p-visa-bid-115", "p2p-visa-bp-140", "p2p-visa-cdd-185", "p2p-visa-idx-140", "p2p-visa-idx-160", "p2p-visa-idx-200", "test-pg-150", "test-pg-200", "test-ta-mc-200", "test-ta-pg-200", "test-ta-pg-bc-200"];
7
+ const type: isly.Type<"p2p-diners-175" | "p2p-diners-200" | "p2p-mc-200" | "p2p-visa-bid-115" | "p2p-visa-bp-140" | "p2p-visa-cdd-185" | "p2p-visa-idx-140" | "p2p-visa-idx-160" | "p2p-visa-idx-200" | "test-pg-150" | "test-pg-200" | "test-ta-mc-200" | "test-ta-pg-200" | "test-ta-pg-bc-200">;
8
+ const type2: isly2.String<"p2p-diners-175" | "p2p-diners-200" | "p2p-mc-200" | "p2p-visa-bid-115" | "p2p-visa-bp-140" | "p2p-visa-cdd-185" | "p2p-visa-idx-140" | "p2p-visa-idx-160" | "p2p-visa-idx-200" | "test-pg-150" | "test-pg-200" | "test-ta-mc-200" | "test-ta-pg-200" | "test-ta-pg-bc-200">;
9
9
  const presets: Record<Preset, Stack>;
10
10
  }
@@ -6,6 +6,8 @@ const isly2_1 = require("isly2");
6
6
  var Preset;
7
7
  (function (Preset) {
8
8
  Preset.names = [
9
+ "p2p-diners-175",
10
+ "p2p-diners-200",
9
11
  "p2p-mc-200",
10
12
  "p2p-visa-bid-115",
11
13
  "p2p-visa-bp-140",
@@ -13,12 +15,11 @@ var Preset;
13
15
  "p2p-visa-idx-140",
14
16
  "p2p-visa-idx-160",
15
17
  "p2p-visa-idx-200",
16
- "test-pg-200",
17
18
  "test-pg-150",
18
- "test-ta-pg-200",
19
+ "test-pg-200",
19
20
  "test-ta-mc-200",
20
- "p2p-diners-175",
21
- "p2p-diners-200",
21
+ "test-ta-pg-200",
22
+ "test-ta-pg-bc-200",
22
23
  ];
23
24
  Preset.type = isly_1.isly.string(Preset.names);
24
25
  Preset.type2 = isly2_1.isly
@@ -26,6 +27,8 @@ var Preset;
26
27
  .rename("Preset")
27
28
  .describe("Card configuration (iin/scheme/interchange).");
28
29
  Preset.presets = {
30
+ "p2p-diners-175": "uk-diners-dpg",
31
+ "p2p-diners-200": "uk-diners-dpg",
29
32
  "p2p-mc-200": "uk-mc-tpl-marqeta",
30
33
  "p2p-visa-bid-115": "uk-visa-tpl-marqeta",
31
34
  "p2p-visa-bp-140": "uk-visa-tpl-marqeta",
@@ -33,12 +36,11 @@ var Preset;
33
36
  "p2p-visa-idx-140": "uk-visa-tpl-marqeta",
34
37
  "p2p-visa-idx-160": "uk-visa-tpl-marqeta",
35
38
  "p2p-visa-idx-200": "uk-visa-tpl-marqeta",
36
- "p2p-diners-175": "uk-diners-dpg",
37
- "p2p-diners-200": "uk-diners-dpg",
39
+ "test-pg-150": "test-paxgiro",
38
40
  "test-pg-200": "test-paxgiro",
39
41
  "test-ta-mc-200": "test-tpl-paxgiro",
40
42
  "test-ta-pg-200": "test-tpl-paxgiro",
41
- "test-pg-150": "test-paxgiro",
43
+ "test-ta-pg-bc-200": "test-tpl-paxgiro",
42
44
  };
43
45
  })(Preset || (exports.Preset = Preset = {}));
44
46
  //# sourceMappingURL=Preset.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Preset.js","sourceRoot":"","sources":["../../../Card/Preset.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,iCAAqC;AAMrC,IAAiB,MAAM,CAoCtB;AApCD,WAAiB,MAAM;IACT,YAAK,GAAG;QACpB,YAAY;QACZ,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,gBAAgB;KACP,CAAA;IACG,WAAI,GAAG,WAAI,CAAC,MAAM,CAAS,OAAA,KAAK,CAAC,CAAA;IACjC,YAAK,GAAG,YAAK;SACxB,MAAM,CAAS,OAAO,EAAE,GAAG,OAAA,KAAK,CAAC;SACjC,MAAM,CAAC,QAAQ,CAAC;SAChB,QAAQ,CAAC,8CAA8C,CAAC,CAAA;IAC7C,cAAO,GAA0B;QAC7C,YAAY,EAAE,mBAAmB;QACjC,kBAAkB,EAAE,qBAAqB;QACzC,iBAAiB,EAAE,qBAAqB;QACxC,kBAAkB,EAAE,qBAAqB;QACzC,kBAAkB,EAAE,qBAAqB;QACzC,kBAAkB,EAAE,qBAAqB;QACzC,kBAAkB,EAAE,qBAAqB;QACzC,gBAAgB,EAAE,eAAe;QACjC,gBAAgB,EAAE,eAAe;QACjC,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,kBAAkB;QACpC,gBAAgB,EAAE,kBAAkB;QACpC,aAAa,EAAE,cAAc;KAC7B,CAAA;AACF,CAAC,EApCgB,MAAM,sBAAN,MAAM,QAoCtB"}
1
+ {"version":3,"file":"Preset.js","sourceRoot":"","sources":["../../../Card/Preset.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,iCAAqC;AAMrC,IAAiB,MAAM,CAsCtB;AAtCD,WAAiB,MAAM;IACT,YAAK,GAAG;QACpB,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;KACV,CAAA;IACG,WAAI,GAAG,WAAI,CAAC,MAAM,CAAS,OAAA,KAAK,CAAC,CAAA;IACjC,YAAK,GAAG,YAAK;SACxB,MAAM,CAAS,OAAO,EAAE,GAAG,OAAA,KAAK,CAAC;SACjC,MAAM,CAAC,QAAQ,CAAC;SAChB,QAAQ,CAAC,8CAA8C,CAAC,CAAA;IAC7C,cAAO,GAA0B;QAC7C,gBAAgB,EAAE,eAAe;QACjC,gBAAgB,EAAE,eAAe;QACjC,YAAY,EAAE,mBAAmB;QACjC,kBAAkB,EAAE,qBAAqB;QACzC,iBAAiB,EAAE,qBAAqB;QACxC,kBAAkB,EAAE,qBAAqB;QACzC,kBAAkB,EAAE,qBAAqB;QACzC,kBAAkB,EAAE,qBAAqB;QACzC,kBAAkB,EAAE,qBAAqB;QACzC,aAAa,EAAE,cAAc;QAC7B,aAAa,EAAE,cAAc;QAC7B,gBAAgB,EAAE,kBAAkB;QACpC,gBAAgB,EAAE,kBAAkB;QACpC,mBAAmB,EAAE,kBAAkB;KACvC,CAAA;AACF,CAAC,EAtCgB,MAAM,sBAAN,MAAM,QAsCtB"}
@@ -5,7 +5,7 @@ import { Treasury as TreasuryModel } from "../Treasury";
5
5
  export declare class Treasury {
6
6
  private readonly client;
7
7
  constructor(client: http.Client);
8
- fetch(hour?: isoly.DateTime): Promise<TreasuryModel.Snapshot | gracely.Error>;
8
+ fetch(hour?: isoly.DateTime): Promise<TreasuryModel.Snapshot[] | gracely.Error>;
9
9
  listTransactions(accountId: string): Promise<TreasuryModel.Transaction[] | gracely.Error>;
10
10
  listAccounts(): Promise<TreasuryModel.Account.Listable[] | gracely.Error>;
11
11
  }
@@ -8,8 +8,7 @@ class Treasury {
8
8
  this.client = client;
9
9
  }
10
10
  async fetch(hour) {
11
- const path = hour ? `/${isoly_1.isoly.DateTime.truncate(hour, "hours")}` : "";
12
- return this.client.get(`/treasury/v2/snapshot${path}`);
11
+ return this.client.get(`/treasury/v2/snapshot${hour ? `/${isoly_1.isoly.DateTime.truncate(hour, "hours")}` : ""}`);
13
12
  }
14
13
  async listTransactions(accountId) {
15
14
  return this.client.get(`/treasury/account/${accountId}/transaction`);
@@ -1 +1 @@
1
- {"version":3,"file":"Treasury.js","sourceRoot":"","sources":["../../../Client/Treasury.ts"],"names":[],"mappings":";;;AACA,iCAA6B;AAI7B,MAAa,QAAQ;IACS;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IACpD,KAAK,CAAC,KAAK,CAAC,IAAqB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACrE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAyB,wBAAwB,IAAI,EAAE,CAAC,CAAA;IAC/E,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAA8B,qBAAqB,SAAS,cAAc,CAAC,CAAA;IAClG,CAAC;IACD,KAAK,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmC,mBAAmB,CAAC,CAAA;IAC9E,CAAC;CACD;AAZD,4BAYC"}
1
+ {"version":3,"file":"Treasury.js","sourceRoot":"","sources":["../../../Client/Treasury.ts"],"names":[],"mappings":";;;AACA,iCAA6B;AAI7B,MAAa,QAAQ;IACS;IAA7B,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IACpD,KAAK,CAAC,KAAK,CAAC,IAAqB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CACrB,wBAAwB,IAAI,CAAC,CAAC,CAAC,IAAI,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAClF,CAAA;IACF,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAA8B,qBAAqB,SAAS,cAAc,CAAC,CAAA;IAClG,CAAC;IACD,KAAK,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmC,mBAAmB,CAAC,CAAA;IAC9E,CAAC;CACD;AAbD,4BAaC"}
@@ -4,6 +4,7 @@ import { Card } from "../Card";
4
4
  export type Identifier = `${isoly.Date}${string}`;
5
5
  export declare namespace Identifier {
6
6
  function getCharacter(identifier: Identifier): Card.Stack.Character;
7
+ function getCycle(identifier: Identifier): number;
7
8
  function toProcessor(identifier: Identifier): Card.Stack | undefined;
8
9
  const type: isly.Type<string>;
9
10
  function create(date: isoly.Date, stack: Card.Stack, order: number): Identifier;
@@ -10,6 +10,10 @@ var Identifier;
10
10
  return identifier.substring(8, 9);
11
11
  }
12
12
  Identifier.getCharacter = getCharacter;
13
+ function getCycle(identifier) {
14
+ return +identifier.substring(9);
15
+ }
16
+ Identifier.getCycle = getCycle;
13
17
  function toProcessor(identifier) {
14
18
  return Card_1.Card.Stack.Character.toStack(getCharacter(identifier));
15
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Identifier.js","sourceRoot":"","sources":["../../../Settlement/Identifier.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,kCAA8B;AAK9B,IAAiB,UAAU,CAe1B;AAfD,WAAiB,UAAU;IAC1B,SAAgB,YAAY,CAAC,UAAsB;QAClD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAyB,CAAA;IAC1D,CAAC;IAFe,uBAAY,eAE3B,CAAA;IACD,SAAgB,WAAW,CAAC,UAAsB;QACjD,OAAO,WAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,CAAC;IAFe,sBAAW,cAE1B,CAAA;IACY,eAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAA;IACjC,SAAgB,MAAM,CAAC,IAAgB,EAAE,KAAiB,EAAE,KAAa;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;IACzE,CAAC;IAFe,iBAAM,SAErB,CAAA;IACD,SAAgB,OAAO,CAAC,UAAsB;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7G,OAAO,aAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9C,CAAC;IAHe,kBAAO,UAGtB,CAAA;AACF,CAAC,EAfgB,UAAU,0BAAV,UAAU,QAe1B"}
1
+ {"version":3,"file":"Identifier.js","sourceRoot":"","sources":["../../../Settlement/Identifier.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,kCAA8B;AAK9B,IAAiB,UAAU,CAkB1B;AAlBD,WAAiB,UAAU;IAC1B,SAAgB,YAAY,CAAC,UAAsB;QAClD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAyB,CAAA;IAC1D,CAAC;IAFe,uBAAY,eAE3B,CAAA;IACD,SAAgB,QAAQ,CAAC,UAAsB;QAC9C,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAChC,CAAC;IAFe,mBAAQ,WAEvB,CAAA;IACD,SAAgB,WAAW,CAAC,UAAsB;QACjD,OAAO,WAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAA;IAC9D,CAAC;IAFe,sBAAW,cAE1B,CAAA;IACY,eAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAA;IACjC,SAAgB,MAAM,CAAC,IAAgB,EAAE,KAAiB,EAAE,KAAa;QACxE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,WAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;IACzE,CAAC;IAFe,iBAAM,SAErB,CAAA;IACD,SAAgB,OAAO,CAAC,UAAsB;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7G,OAAO,aAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9C,CAAC;IAHe,kBAAO,UAGtB,CAAA;AACF,CAAC,EAlBgB,UAAU,0BAAV,UAAU,QAkB1B"}
@@ -1,8 +1,10 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
+ import { Realm } from "../Realm";
3
4
  export type Supplier = typeof Supplier.names[number];
4
5
  export declare namespace Supplier {
5
6
  const names: readonly ["paxgiro", "clearbank", "bankingcircle", "paxgiroCredit"];
6
7
  const type: isly.Type<"paxgiro" | "clearbank" | "bankingcircle" | "paxgiroCredit">;
7
8
  const currencies: Record<Supplier, isoly.Currency[]>;
9
+ const realm: Record<Realm, Supplier[]>;
8
10
  }
@@ -12,5 +12,10 @@ var Supplier;
12
12
  paxgiro: ["GBP", "SEK", "USD", "EUR"],
13
13
  paxgiroCredit: ["GBP", "SEK", "USD", "EUR"],
14
14
  };
15
+ Supplier.realm = {
16
+ eea: [],
17
+ test: ["paxgiro", "paxgiroCredit"],
18
+ uk: ["bankingcircle", "clearbank"],
19
+ };
15
20
  })(Supplier || (exports.Supplier = Supplier = {}));
16
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../Supplier/index.ts"],"names":[],"mappings":";;;AACA,+BAA2B;AAG3B,IAAiB,QAAQ,CASxB;AATD,WAAiB,QAAQ;IACX,cAAK,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,CAAU,CAAA;IAC3E,aAAI,GAAG,WAAI,CAAC,MAAM,CAAW,SAAA,KAAK,CAAC,CAAA;IACnC,mBAAU,GAAuC;QAC7D,SAAS,EAAE,CAAC,KAAK,CAAC;QAClB,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACvE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACrC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;KAC3C,CAAA;AACF,CAAC,EATgB,QAAQ,wBAAR,QAAQ,QASxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../Supplier/index.ts"],"names":[],"mappings":";;;AACA,+BAA2B;AAI3B,IAAiB,QAAQ,CAcxB;AAdD,WAAiB,QAAQ;IACX,cAAK,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,CAAU,CAAA;IAC3E,aAAI,GAAG,WAAI,CAAC,MAAM,CAAW,SAAA,KAAK,CAAC,CAAA;IACnC,mBAAU,GAAuC;QAC7D,SAAS,EAAE,CAAC,KAAK,CAAC;QAClB,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACvE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACrC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;KAC3C,CAAA;IACY,cAAK,GAA8B;QAC/C,GAAG,EAAE,EAAE;QACP,IAAI,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;QAClC,EAAE,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;KAClC,CAAA;AACF,CAAC,EAdgB,QAAQ,wBAAR,QAAQ,QAcxB"}
@@ -1,9 +1,11 @@
1
1
  import { isoly } from "isoly";
2
2
  import { Balances } from "../../Balances";
3
3
  import { Counterbalances } from "../../Counterbalances";
4
+ import { Supplier } from "../../Supplier";
4
5
  export interface Emoney {
5
6
  organization: string;
6
7
  account: string;
8
+ supplier?: Supplier;
7
9
  timestamp: isoly.DateTime;
8
10
  balances: Balances;
9
11
  counterbalances: Counterbalances;
@@ -1,194 +1,46 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
+ import { Balance } from "../../Balance";
4
+ import { Supplier } from "../../Supplier";
5
+ import { Warning } from "../../Warning";
6
+ import { Account } from "../Account";
3
7
  import { Emoney as SnapshotEmoney } from "./Emoney";
4
8
  import { Fiat as SnapshotFiat } from "./Fiat";
5
- import { Fragment as SnapshotFragment } from "./Fragment";
6
9
  import { funding as snapshotFunding } from "./funding";
7
- export type Snapshot = Partial<Record<isoly.Currency, Snapshot.Fragment>>;
10
+ export interface Snapshot {
11
+ warnings: Warning.Snapshot[];
12
+ emoney: Balance.Extended & {
13
+ total?: number;
14
+ };
15
+ currency: isoly.Currency;
16
+ supplier: Supplier;
17
+ counterbalance: Snapshot.Counterbalance;
18
+ fiat: {
19
+ safe: number;
20
+ unsafe: number;
21
+ total: number;
22
+ other: number;
23
+ buffer: number;
24
+ accounts: Account[];
25
+ };
26
+ }
8
27
  export declare namespace Snapshot {
9
- export import Fragment = SnapshotFragment;
10
28
  export import funding = snapshotFunding;
11
29
  type Emoney = SnapshotEmoney;
12
30
  type Fiat = SnapshotFiat;
13
- const type: isly.Type<{
14
- AED: any;
15
- AFN: any;
16
- ALL: any;
17
- AMD: any;
18
- ANG: any;
19
- AOA: any;
20
- ARS: any;
21
- AUD: any;
22
- AWG: any;
23
- AZN: any;
24
- BAM: any;
25
- BBD: any;
26
- BDT: any;
27
- BGN: any;
28
- BHD: any;
29
- BIF: any;
30
- BMD: any;
31
- BND: any;
32
- BOB: any;
33
- BOV: any;
34
- BRL: any;
35
- BSD: any;
36
- BTN: any;
37
- BWP: any;
38
- BYN: any;
39
- BZD: any;
40
- CAD: any;
41
- CDF: any;
42
- CHE: any;
43
- CHF: any;
44
- CHW: any;
45
- CLF: any;
46
- CLP: any;
47
- CNY: any;
48
- COP: any;
49
- COU: any;
50
- CRC: any;
51
- CUC: any;
52
- CUP: any;
53
- CVE: any;
54
- CZK: any;
55
- DJF: any;
56
- DKK: any;
57
- DOP: any;
58
- DZD: any;
59
- EGP: any;
60
- ERN: any;
61
- ETB: any;
62
- EUR: any;
63
- FJD: any;
64
- FKP: any;
65
- GBP: any;
66
- GEL: any;
67
- GHS: any;
68
- GIP: any;
69
- GMD: any;
70
- GNF: any;
71
- GTQ: any;
72
- GYD: any;
73
- HKD: any;
74
- HNL: any;
75
- HRK: any;
76
- HTG: any;
77
- HUF: any;
78
- IDR: any;
79
- ILS: any;
80
- INR: any;
81
- IQD: any;
82
- IRR: any;
83
- ISK: any;
84
- JMD: any;
85
- JOD: any;
86
- JPY: any;
87
- KES: any;
88
- KGS: any;
89
- KHR: any;
90
- KMF: any;
91
- KPW: any;
92
- KRW: any;
93
- KWD: any;
94
- KYD: any;
95
- KZT: any;
96
- LAK: any;
97
- LBP: any;
98
- LKR: any;
99
- LRD: any;
100
- LSL: any;
101
- LYD: any;
102
- MAD: any;
103
- MDL: any;
104
- MGA: any;
105
- MKD: any;
106
- MMK: any;
107
- MNT: any;
108
- MOP: any;
109
- MRU: any;
110
- MUR: any;
111
- MVR: any;
112
- MWK: any;
113
- MXN: any;
114
- MXV: any;
115
- MYR: any;
116
- MZN: any;
117
- NAD: any;
118
- NGN: any;
119
- NIO: any;
120
- NOK: any;
121
- NPR: any;
122
- NZD: any;
123
- OMR: any;
124
- PAB: any;
125
- PEN: any;
126
- PGK: any;
127
- PHP: any;
128
- PKR: any;
129
- PLN: any;
130
- PYG: any;
131
- QAR: any;
132
- RON: any;
133
- RSD: any;
134
- RUB: any;
135
- RWF: any;
136
- SAR: any;
137
- SBD: any;
138
- SCR: any;
139
- SDG: any;
140
- SEK: any;
141
- SGD: any;
142
- SHP: any;
143
- SLL: any;
144
- SOS: any;
145
- SRD: any;
146
- SSP: any;
147
- STN: any;
148
- SVC: any;
149
- SYP: any;
150
- SZL: any;
151
- THB: any;
152
- TJS: any;
153
- TMT: any;
154
- TND: any;
155
- TOP: any;
156
- TRY: any;
157
- TTD: any;
158
- TWD: any;
159
- TZS: any;
160
- UAH: any;
161
- UGX: any;
162
- USD: any;
163
- USN: any;
164
- UYI: any;
165
- UYU: any;
166
- UYW: any;
167
- UZS: any;
168
- VES: any;
169
- VND: any;
170
- VUV: any;
171
- WST: any;
172
- XAF: any;
173
- XAG: any;
174
- XAU: any;
175
- XBA: any;
176
- XBB: any;
177
- XBC: any;
178
- XBD: any;
179
- XCD: any;
180
- XDR: any;
181
- XOF: any;
182
- XPD: any;
183
- XPF: any;
184
- XPT: any;
185
- XSU: any;
186
- XTS: any;
187
- XUA: any;
188
- XXX: any;
189
- YER: any;
190
- ZAR: any;
191
- ZMW: any;
192
- ZWL: any;
31
+ type Counterbalance = Record<string, {
32
+ total: number;
33
+ account: Record<string, {
34
+ amount: number;
35
+ }>;
193
36
  }>;
37
+ namespace Counterbalance {
38
+ const type: isly.Type<Counterbalance>;
39
+ function sum(currency: isoly.Currency, accounts: Record<string, {
40
+ amount: number;
41
+ }>): number;
42
+ function validate(currency: isoly.Currency, counterbalances: Counterbalance): boolean;
43
+ }
44
+ function validate(snapshot: Snapshot): boolean;
45
+ const type: import("isly/dist/cjs/object").IslyObject<Snapshot, object>;
194
46
  }
@@ -3,12 +3,53 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Snapshot = void 0;
4
4
  const isoly_1 = require("isoly");
5
5
  const isly_1 = require("isly");
6
- const Fragment_1 = require("./Fragment");
6
+ const Balance_1 = require("../../Balance");
7
+ const Supplier_1 = require("../../Supplier");
8
+ const Warning_1 = require("../../Warning");
9
+ const Account_1 = require("../Account");
7
10
  const funding_1 = require("./funding");
8
11
  var Snapshot;
9
12
  (function (Snapshot) {
10
- Snapshot.Fragment = Fragment_1.Fragment;
11
13
  Snapshot.funding = funding_1.funding;
12
- Snapshot.type = isly_1.isly.record(isly_1.isly.fromIs("Currency", isoly_1.isoly.Currency.is), Snapshot.Fragment.type);
14
+ let Counterbalance;
15
+ (function (Counterbalance) {
16
+ Counterbalance.type = isly_1.isly.record(isly_1.isly.string(), isly_1.isly.object({
17
+ total: isly_1.isly.number(),
18
+ account: isly_1.isly.record(isly_1.isly.string(), isly_1.isly.object({ amount: isly_1.isly.number() })),
19
+ }));
20
+ function sum(currency, accounts) {
21
+ return Object.values(accounts).reduce((result, account) => isoly_1.isoly.Currency.add(currency, result, account.amount), 0);
22
+ }
23
+ Counterbalance.sum = sum;
24
+ function validate(currency, counterbalances) {
25
+ for (const counterbalance of Object.values(counterbalances))
26
+ if (isoly_1.isoly.Currency.subtract(currency, counterbalance.total, sum(currency, counterbalance.account)))
27
+ return false;
28
+ return true;
29
+ }
30
+ Counterbalance.validate = validate;
31
+ })(Counterbalance = Snapshot.Counterbalance || (Snapshot.Counterbalance = {}));
32
+ function validate(snapshot) {
33
+ const validCounterbalance = Counterbalance.validate(snapshot.currency, snapshot.counterbalance);
34
+ const issuable = snapshot.fiat.total;
35
+ const actual = snapshot.emoney.actual ?? 0;
36
+ return validCounterbalance && issuable == actual;
37
+ }
38
+ Snapshot.validate = validate;
39
+ Snapshot.type = isly_1.isly.object({
40
+ warnings: Warning_1.Warning.Snapshot.type.array(),
41
+ emoney: Balance_1.Balance.Extended,
42
+ counterbalance: Counterbalance.type,
43
+ currency: isly_1.isly.fromIs("currency", isoly_1.isoly.Currency.is),
44
+ supplier: Supplier_1.Supplier.type,
45
+ fiat: isly_1.isly.object({
46
+ safe: isly_1.isly.number(),
47
+ unsafe: isly_1.isly.number(),
48
+ total: isly_1.isly.number(),
49
+ other: isly_1.isly.number(),
50
+ buffer: isly_1.isly.number(),
51
+ accounts: Account_1.Account.type.array(),
52
+ }),
53
+ });
13
54
  })(Snapshot || (exports.Snapshot = Snapshot = {}));
14
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Treasury/Snapshot/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAG3B,yCAAyD;AACzD,uCAAsD;AAItD,IAAiB,QAAQ,CAMxB;AAND,WAAiB,QAAQ;IACV,iBAAQ,GAAG,mBAAgB,CAAA;IAC3B,gBAAO,GAAG,iBAAe,CAAA;IAG1B,aAAI,GAAG,WAAI,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,CAAC,UAAU,EAAE,aAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAA,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC3F,CAAC,EANgB,QAAQ,wBAAR,QAAQ,QAMxB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Treasury/Snapshot/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,2CAAuC;AACvC,6CAAyC;AACzC,2CAAuC;AACvC,wCAAoC;AAGpC,uCAAsD;AAiBtD,IAAiB,QAAQ,CAkDxB;AAlDD,WAAiB,QAAQ;IACV,gBAAO,GAAG,iBAAe,CAAA;IAIvC,IAAiB,cAAc,CAuB9B;IAvBD,WAAiB,cAAc;QACjB,mBAAI,GAAG,WAAI,CAAC,MAAM,CAC9B,WAAI,CAAC,MAAM,EAAE,EACb,WAAI,CAAC,MAAM,CAAyB;YACnC,KAAK,EAAE,WAAI,CAAC,MAAM,EAAE;YACpB,OAAO,EAAE,WAAI,CAAC,MAAM,CACnB,WAAI,CAAC,MAAM,EAAE,EACb,WAAI,CAAC,MAAM,CAA4C,EAAE,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CACjF;SACD,CAAC,CACF,CAAA;QACD,SAAgB,GAAG,CAAC,QAAwB,EAAE,QAA4C;YACzF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CACpC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EACzE,CAAC,CACD,CAAA;QACF,CAAC;QALe,kBAAG,MAKlB,CAAA;QACD,SAAgB,QAAQ,CAAC,QAAwB,EAAE,eAA+B;YACjF,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC1D,IAAI,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;oBACjG,OAAO,KAAK,CAAA;YACd,OAAO,IAAI,CAAA;QACZ,CAAC;QALe,uBAAQ,WAKvB,CAAA;IACF,CAAC,EAvBgB,cAAc,GAAd,uBAAc,KAAd,uBAAc,QAuB9B;IACD,SAAgB,QAAQ,CAAC,QAAkB;QAC1C,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC/F,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAA;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;QAC1C,OAAO,mBAAmB,IAAI,QAAQ,IAAI,MAAM,CAAA;IACjD,CAAC;IALe,iBAAQ,WAKvB,CAAA;IACY,aAAI,GAAG,WAAI,CAAC,MAAM,CAAW;QACzC,QAAQ,EAAE,iBAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;QACvC,MAAM,EAAE,iBAAO,CAAC,QAAQ;QACxB,cAAc,EAAE,cAAc,CAAC,IAAI;QACnC,QAAQ,EAAE,WAAI,CAAC,MAAM,CAAC,UAAU,EAAE,aAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,QAAQ,EAAE,mBAAQ,CAAC,IAAI;QACvB,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAI,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,WAAI,CAAC,MAAM,EAAE;YACpB,KAAK,EAAE,WAAI,CAAC,MAAM,EAAE;YACpB,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,iBAAO,CAAC,IAAI,CAAC,KAAK,EAAE;SAC9B,CAAC;KACF,CAAC,CAAA;AACH,CAAC,EAlDgB,QAAQ,wBAAR,QAAQ,QAkDxB"}