@pax2pay/model-banking 0.1.376 → 0.1.378

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.
@@ -1,11 +1,12 @@
1
1
  import { cryptly } from "cryptly"
2
2
  import { isly } from "isly"
3
+ import { Operation } from "../../Operation"
3
4
  import { Realm } from "../../Realm"
4
5
 
5
6
  export interface Internal {
6
7
  type: "internal"
7
8
  name?: string
8
- identifier: cryptly.Identifier
9
+ identifier: cryptly.Identifier | Operation.Changes.Entry.Counterbalance
9
10
  organization?: string
10
11
  }
11
12
  export namespace Internal {
@@ -13,7 +14,7 @@ export namespace Internal {
13
14
  export const type = isly.object<Internal>({
14
15
  type: isly.string("internal"),
15
16
  name: isly.string().optional(),
16
- identifier: isly.fromIs("Identifier", cryptly.Identifier.is),
17
+ identifier: isly.union(isly.fromIs("Identifier", cryptly.Identifier.is), Operation.Changes.Entry.type),
17
18
  organization: isly.string().optional(),
18
19
  })
19
20
  export const is = type.is
@@ -141,6 +141,33 @@ export namespace Transaction {
141
141
  ...(state.transaction.original.charge && { charge: state.transaction.original.charge }),
142
142
  }
143
143
  }
144
+ export function system(
145
+ creatable: Creatable & { counterpart: Rail.Address },
146
+ operations: Operation[],
147
+ account: { id: string; name: string; organization: string; address: Rail.Address },
148
+ balance: { actual: number; reserved: number; available: number },
149
+ by: string | undefined
150
+ ): Transaction {
151
+ return {
152
+ ...creatable,
153
+ type: getType(creatable.counterpart, account.name),
154
+ direction: "inbound",
155
+ organization: account.organization,
156
+ accountId: account.id,
157
+ accountName: account.name,
158
+ account: account.address,
159
+ id: Identifier.generate(),
160
+ posted: isoly.DateTime.now(),
161
+ by,
162
+ balance,
163
+ operations,
164
+ status: "review",
165
+ rail: "internal",
166
+ flags: [],
167
+ oldFlags: [],
168
+ notes: [],
169
+ }
170
+ }
144
171
  export function empty(
145
172
  creatable: Creatable & { counterpart: Rail.Address },
146
173
  account: { id: string; name: string; organization: string; address: Rail.Address },
@@ -7,8 +7,7 @@ import { Warning } from "./Warning"
7
7
  export interface Fragment {
8
8
  warnings: Warning[]
9
9
  emoney: Balance.Extended
10
- minted: Fragment.Coinage.Minted
11
- burned: Fragment.Coinage.Burned
10
+ counterbalance: Fragment.Counterbalance
12
11
  fiat: {
13
12
  safe: number
14
13
  unsafe: number
@@ -19,32 +18,41 @@ export interface Fragment {
19
18
  }
20
19
  }
21
20
  export namespace Fragment {
22
- export namespace Coinage {
23
- export type LedgerAccount = string
24
- export type Change = { account: Record<LedgerAccount, number>; amount: number }
25
- export const change = isly.object<Change>({
26
- account: isly.record(isly.string(), isly.number()),
27
- amount: isly.number(),
28
- })
29
- type Source = string
30
- export type Minted = Record<Source, Change>
31
- export namespace Minted {
32
- export const type = isly.record<Minted>(isly.string(), Fragment.Coinage.change)
33
- }
34
- type Sink = string
35
- export type Burned = Record<Sink, Change>
36
- export namespace Burned {
37
- export const type = isly.record<Burned>(isly.string(), Fragment.Coinage.change)
21
+ export type Counterbalance = Record<string, { total: number; account: Record<string, { amount: number }> }>
22
+ export namespace Counterbalance {
23
+ export const type = isly.record<Counterbalance>(
24
+ isly.string(),
25
+ isly.object<Counterbalance[string]>({
26
+ total: isly.number(),
27
+ account: isly.record<Counterbalance[string]["account"]>(
28
+ isly.string(),
29
+ isly.object<Counterbalance[string]["account"][string]>({ amount: isly.number() })
30
+ ),
31
+ })
32
+ )
33
+ export function sum(currency: isoly.Currency, accounts: Record<string, { amount: number }>): number {
34
+ return Object.values(accounts).reduce(
35
+ (result, account) => isoly.Currency.add(currency, result, account.amount),
36
+ 0
37
+ )
38
38
  }
39
- export function sum(currency: isoly.Currency, coinage: Burned | Minted): number {
40
- return Object.values(coinage).reduce((result, change) => isoly.Currency.add(currency, result, change.amount), 0)
39
+ export function validate(currency: isoly.Currency, counterbalances: Counterbalance): boolean {
40
+ for (const counterbalance of Object.values(counterbalances))
41
+ if (isoly.Currency.subtract(currency, counterbalance.total, sum(currency, counterbalance.account)))
42
+ return false
43
+ return true
41
44
  }
42
45
  }
46
+ export function validate(currency: isoly.Currency, fragment: Fragment): boolean {
47
+ const validCounterbalance = Counterbalance.validate(currency, fragment.counterbalance)
48
+ const issuable = fragment.fiat.total
49
+ const actual = fragment.emoney.actual ?? 0
50
+ return validCounterbalance && issuable == actual
51
+ }
43
52
  export const type = isly.object<Fragment>({
44
53
  warnings: Warning.type.array(),
45
- emoney: Balance.type,
46
- minted: Fragment.Coinage.Minted.type,
47
- burned: Fragment.Coinage.Burned.type,
54
+ emoney: Balance.Extended,
55
+ counterbalance: Counterbalance.type,
48
56
  fiat: isly.object({
49
57
  safe: isly.number(),
50
58
  unsafe: isly.number(),
@@ -54,9 +62,57 @@ export namespace Fragment {
54
62
  accounts: Account.type.array(),
55
63
  }),
56
64
  })
57
- export function validate(currency: isoly.Currency, fragment: Fragment): boolean {
58
- const issuable = fragment.fiat.total
59
- const actual = fragment.emoney.actual ?? 0
60
- return issuable == actual
65
+ export type Legacy = Omit<Fragment, "counterbalance"> & { minted: Legacy.Coinage; burned: Legacy.Coinage }
66
+ export namespace Legacy {
67
+ export type LedgerAccount = string
68
+ export type Change = { account: Record<LedgerAccount, number>; amount: number }
69
+ export const change = isly.object<Change>({
70
+ account: isly.record(isly.string(), isly.number()),
71
+ amount: isly.number(),
72
+ })
73
+ export type Coinage = Record<string, Change>
74
+ export const type = isly.record<Coinage>(isly.string(), change)
75
+ function mergeAccounts(
76
+ currency: isoly.Currency,
77
+ burned: Record<string, { amount: number }>,
78
+ minted?: Record<string, { amount: number }>
79
+ ): Record<string, { amount: number }> {
80
+ const result: Record<string, { amount: number }> = { ...(minted ?? {}) }
81
+ for (const [id, account] of Object.entries(burned)) {
82
+ result[id] = { amount: isoly.Currency.subtract(currency, result[id]?.amount ?? 0, account.amount) }
83
+ }
84
+ return result
85
+ }
86
+ function accountToNew(account: Record<LedgerAccount, number>): Record<string, { amount: number }> {
87
+ return Object.fromEntries(
88
+ Object.entries(account).map<[string, { amount: number }]>(([id, amount]) => [id, { amount }])
89
+ )
90
+ }
91
+ export function toCounterbalance(currency: isoly.Currency, minted: Coinage, burned: Coinage): Counterbalance {
92
+ const result: Counterbalance = {}
93
+ for (const [code, change] of Object.entries(minted)) {
94
+ result[code] = { total: change.amount, account: accountToNew(change.account) }
95
+ }
96
+ for (const [code, change] of Object.entries(burned)) {
97
+ result[code] = {
98
+ total: isoly.Currency.subtract(currency, result[code]?.total ?? 0, change.amount),
99
+ account: mergeAccounts(currency, accountToNew(change.account), result[code]?.account),
100
+ }
101
+ }
102
+ return result
103
+ }
104
+ }
105
+ export function fromLegacy(currency: isoly.Currency, fragment: Fragment | Legacy): Fragment {
106
+ let result: Fragment
107
+ if ("counterbalance" in fragment) {
108
+ result = fragment
109
+ } else {
110
+ const counterbalance = Legacy.toCounterbalance(currency, fragment.minted, fragment.burned)
111
+ const result: Fragment = { ...fragment, counterbalance }
112
+ "burned" in result && delete result.burned
113
+ "minted" in result && delete result.minted
114
+ return result
115
+ }
116
+ return result
61
117
  }
62
118
  }
@@ -1,10 +1,11 @@
1
1
  import { cryptly } from "cryptly";
2
2
  import { isly } from "isly";
3
+ import { Operation } from "../../Operation";
3
4
  import { Realm } from "../../Realm";
4
5
  export interface Internal {
5
6
  type: "internal";
6
7
  name?: string;
7
- identifier: cryptly.Identifier;
8
+ identifier: cryptly.Identifier | Operation.Changes.Entry.Counterbalance;
8
9
  organization?: string;
9
10
  }
10
11
  export declare namespace Internal {
@@ -1,12 +1,13 @@
1
1
  import { cryptly } from "cryptly";
2
2
  import { isly } from "isly";
3
+ import { Operation } from "../../Operation";
3
4
  export var Internal;
4
5
  (function (Internal) {
5
6
  Internal.currencies = ["EUR", "GBP", "SEK", "USD"];
6
7
  Internal.type = isly.object({
7
8
  type: isly.string("internal"),
8
9
  name: isly.string().optional(),
9
- identifier: isly.fromIs("Identifier", cryptly.Identifier.is),
10
+ identifier: isly.union(isly.fromIs("Identifier", cryptly.Identifier.is), Operation.Changes.Entry.type),
10
11
  organization: isly.string().optional(),
11
12
  });
12
13
  Internal.is = Internal.type.is;
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"../","sources":["Rail/Address/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAS3B,MAAM,KAAW,QAAQ,CAaxB;AAbD,WAAiB,QAAQ;IACX,mBAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;IAClD,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW;QACzC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAA;IACW,WAAE,GAAG,SAAA,IAAI,CAAC,EAAE,CAAA;IACZ,aAAI,GAAG,SAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,MAAM,CAAC,QAAkB,EAAE,KAAY;QACtD,OAAO,GAAG,KAAK,aAAa,QAAQ,CAAC,UAAU,EAAE,CAAA;IAClD,CAAC;IAFe,eAAM,SAErB,CAAA;AACF,CAAC,EAbgB,QAAQ,KAAR,QAAQ,QAaxB"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"../","sources":["Rail/Address/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAS3C,MAAM,KAAW,QAAQ,CAaxB;AAbD,WAAiB,QAAQ;IACX,mBAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;IAClD,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW;QACzC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACtG,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAA;IACW,WAAE,GAAG,SAAA,IAAI,CAAC,EAAE,CAAA;IACZ,aAAI,GAAG,SAAA,IAAI,CAAC,IAAI,CAAA;IAC7B,SAAgB,MAAM,CAAC,QAAkB,EAAE,KAAY;QACtD,OAAO,GAAG,KAAK,aAAa,QAAQ,CAAC,UAAU,EAAE,CAAA;IAClD,CAAC;IAFe,eAAM,SAErB,CAAA;AACF,CAAC,EAbgB,QAAQ,KAAR,QAAQ,QAaxB"}
@@ -77,6 +77,18 @@ export declare namespace Transaction {
77
77
  reserved: number;
78
78
  available: number;
79
79
  }, operation: Operation | Status.Reason, by: string | undefined): Transaction;
80
+ function system(creatable: Creatable & {
81
+ counterpart: Rail.Address;
82
+ }, operations: Operation[], account: {
83
+ id: string;
84
+ name: string;
85
+ organization: string;
86
+ address: Rail.Address;
87
+ }, balance: {
88
+ actual: number;
89
+ reserved: number;
90
+ available: number;
91
+ }, by: string | undefined): Transaction;
80
92
  function empty(creatable: Creatable & {
81
93
  counterpart: Rail.Address;
82
94
  }, account: {
@@ -103,6 +103,28 @@ export var Transaction;
103
103
  };
104
104
  }
105
105
  Transaction.fromCreatable = fromCreatable;
106
+ function system(creatable, operations, account, balance, by) {
107
+ return {
108
+ ...creatable,
109
+ type: getType(creatable.counterpart, account.name),
110
+ direction: "inbound",
111
+ organization: account.organization,
112
+ accountId: account.id,
113
+ accountName: account.name,
114
+ account: account.address,
115
+ id: Identifier.generate(),
116
+ posted: isoly.DateTime.now(),
117
+ by,
118
+ balance,
119
+ operations,
120
+ status: "review",
121
+ rail: "internal",
122
+ flags: [],
123
+ oldFlags: [],
124
+ notes: [],
125
+ };
126
+ }
127
+ Transaction.system = system;
106
128
  function empty(creatable, account, balance, by) {
107
129
  return {
108
130
  ...creatable,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../","sources":["Transaction/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../","sources":["Transaction/index.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,7 @@ import { Warning } from "./Warning";
6
6
  export interface Fragment {
7
7
  warnings: Warning[];
8
8
  emoney: Balance.Extended;
9
- minted: Fragment.Coinage.Minted;
10
- burned: Fragment.Coinage.Burned;
9
+ counterbalance: Fragment.Counterbalance;
11
10
  fiat: {
12
11
  safe: number;
13
12
  unsafe: number;
@@ -18,26 +17,35 @@ export interface Fragment {
18
17
  };
19
18
  }
20
19
  export declare namespace Fragment {
21
- namespace Coinage {
22
- export type LedgerAccount = string;
23
- export type Change = {
20
+ type Counterbalance = Record<string, {
21
+ total: number;
22
+ account: Record<string, {
23
+ amount: number;
24
+ }>;
25
+ }>;
26
+ namespace Counterbalance {
27
+ const type: isly.Type<Counterbalance>;
28
+ function sum(currency: isoly.Currency, accounts: Record<string, {
29
+ amount: number;
30
+ }>): number;
31
+ function validate(currency: isoly.Currency, counterbalances: Counterbalance): boolean;
32
+ }
33
+ function validate(currency: isoly.Currency, fragment: Fragment): boolean;
34
+ const type: isly.object.ExtendableType<Fragment>;
35
+ type Legacy = Omit<Fragment, "counterbalance"> & {
36
+ minted: Legacy.Coinage;
37
+ burned: Legacy.Coinage;
38
+ };
39
+ namespace Legacy {
40
+ type LedgerAccount = string;
41
+ type Change = {
24
42
  account: Record<LedgerAccount, number>;
25
43
  amount: number;
26
44
  };
27
- export const change: isly.object.ExtendableType<Change>;
28
- type Source = string;
29
- export type Minted = Record<Source, Change>;
30
- export namespace Minted {
31
- const type: isly.Type<Minted>;
32
- }
33
- type Sink = string;
34
- export type Burned = Record<Sink, Change>;
35
- export namespace Burned {
36
- const type: isly.Type<Burned>;
37
- }
38
- export function sum(currency: isoly.Currency, coinage: Burned | Minted): number;
39
- export {};
45
+ const change: isly.object.ExtendableType<Change>;
46
+ type Coinage = Record<string, Change>;
47
+ const type: isly.Type<Coinage>;
48
+ function toCounterbalance(currency: isoly.Currency, minted: Coinage, burned: Coinage): Counterbalance;
40
49
  }
41
- const type: isly.object.ExtendableType<Fragment>;
42
- function validate(currency: isoly.Currency, fragment: Fragment): boolean;
50
+ function fromLegacy(currency: isoly.Currency, fragment: Fragment | Legacy): Fragment;
43
51
  }
@@ -5,30 +5,35 @@ import { Account } from "../Account";
5
5
  import { Warning } from "./Warning";
6
6
  export var Fragment;
7
7
  (function (Fragment) {
8
- let Coinage;
9
- (function (Coinage) {
10
- Coinage.change = isly.object({
11
- account: isly.record(isly.string(), isly.number()),
12
- amount: isly.number(),
13
- });
14
- let Minted;
15
- (function (Minted) {
16
- Minted.type = isly.record(isly.string(), Fragment.Coinage.change);
17
- })(Minted = Coinage.Minted || (Coinage.Minted = {}));
18
- let Burned;
19
- (function (Burned) {
20
- Burned.type = isly.record(isly.string(), Fragment.Coinage.change);
21
- })(Burned = Coinage.Burned || (Coinage.Burned = {}));
22
- function sum(currency, coinage) {
23
- return Object.values(coinage).reduce((result, change) => isoly.Currency.add(currency, result, change.amount), 0);
8
+ let Counterbalance;
9
+ (function (Counterbalance) {
10
+ Counterbalance.type = isly.record(isly.string(), isly.object({
11
+ total: isly.number(),
12
+ account: isly.record(isly.string(), isly.object({ amount: isly.number() })),
13
+ }));
14
+ function sum(currency, accounts) {
15
+ return Object.values(accounts).reduce((result, account) => isoly.Currency.add(currency, result, account.amount), 0);
16
+ }
17
+ Counterbalance.sum = sum;
18
+ function validate(currency, counterbalances) {
19
+ for (const counterbalance of Object.values(counterbalances))
20
+ if (isoly.Currency.subtract(currency, counterbalance.total, sum(currency, counterbalance.account)))
21
+ return false;
22
+ return true;
24
23
  }
25
- Coinage.sum = sum;
26
- })(Coinage = Fragment.Coinage || (Fragment.Coinage = {}));
24
+ Counterbalance.validate = validate;
25
+ })(Counterbalance = Fragment.Counterbalance || (Fragment.Counterbalance = {}));
26
+ function validate(currency, fragment) {
27
+ const validCounterbalance = Counterbalance.validate(currency, fragment.counterbalance);
28
+ const issuable = fragment.fiat.total;
29
+ const actual = fragment.emoney.actual ?? 0;
30
+ return validCounterbalance && issuable == actual;
31
+ }
32
+ Fragment.validate = validate;
27
33
  Fragment.type = isly.object({
28
34
  warnings: Warning.type.array(),
29
- emoney: Balance.type,
30
- minted: Fragment.Coinage.Minted.type,
31
- burned: Fragment.Coinage.Burned.type,
35
+ emoney: Balance.Extended,
36
+ counterbalance: Counterbalance.type,
32
37
  fiat: isly.object({
33
38
  safe: isly.number(),
34
39
  unsafe: isly.number(),
@@ -38,11 +43,52 @@ export var Fragment;
38
43
  accounts: Account.type.array(),
39
44
  }),
40
45
  });
41
- function validate(currency, fragment) {
42
- const issuable = fragment.fiat.total;
43
- const actual = fragment.emoney.actual ?? 0;
44
- return issuable == actual;
46
+ let Legacy;
47
+ (function (Legacy) {
48
+ Legacy.change = isly.object({
49
+ account: isly.record(isly.string(), isly.number()),
50
+ amount: isly.number(),
51
+ });
52
+ Legacy.type = isly.record(isly.string(), Legacy.change);
53
+ function mergeAccounts(currency, burned, minted) {
54
+ const result = { ...(minted ?? {}) };
55
+ for (const [id, account] of Object.entries(burned)) {
56
+ result[id] = { amount: isoly.Currency.subtract(currency, result[id]?.amount ?? 0, account.amount) };
57
+ }
58
+ return result;
59
+ }
60
+ function accountToNew(account) {
61
+ return Object.fromEntries(Object.entries(account).map(([id, amount]) => [id, { amount }]));
62
+ }
63
+ function toCounterbalance(currency, minted, burned) {
64
+ const result = {};
65
+ for (const [code, change] of Object.entries(minted)) {
66
+ result[code] = { total: change.amount, account: accountToNew(change.account) };
67
+ }
68
+ for (const [code, change] of Object.entries(burned)) {
69
+ result[code] = {
70
+ total: isoly.Currency.subtract(currency, result[code]?.total ?? 0, change.amount),
71
+ account: mergeAccounts(currency, accountToNew(change.account), result[code]?.account),
72
+ };
73
+ }
74
+ return result;
75
+ }
76
+ Legacy.toCounterbalance = toCounterbalance;
77
+ })(Legacy = Fragment.Legacy || (Fragment.Legacy = {}));
78
+ function fromLegacy(currency, fragment) {
79
+ let result;
80
+ if ("counterbalance" in fragment) {
81
+ result = fragment;
82
+ }
83
+ else {
84
+ const counterbalance = Legacy.toCounterbalance(currency, fragment.minted, fragment.burned);
85
+ const result = { ...fragment, counterbalance };
86
+ "burned" in result && delete result.burned;
87
+ "minted" in result && delete result.minted;
88
+ return result;
89
+ }
90
+ return result;
45
91
  }
46
- Fragment.validate = validate;
92
+ Fragment.fromLegacy = fromLegacy;
47
93
  })(Fragment || (Fragment = {}));
48
94
  //# sourceMappingURL=Fragment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.js","sourceRoot":"../","sources":["Treasury/Snapshot/Fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgBnC,MAAM,KAAW,QAAQ,CAyCxB;AAzCD,WAAiB,QAAQ;IACxB,IAAiB,OAAO,CAoBvB;IApBD,WAAiB,OAAO;QAGV,cAAM,GAAG,IAAI,CAAC,MAAM,CAAS;YACzC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACrB,CAAC,CAAA;QAGF,IAAiB,MAAM,CAEtB;QAFD,WAAiB,MAAM;YACT,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAChF,CAAC,EAFgB,MAAM,GAAN,cAAM,KAAN,cAAM,QAEtB;QAGD,IAAiB,MAAM,CAEtB;QAFD,WAAiB,MAAM;YACT,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAChF,CAAC,EAFgB,MAAM,GAAN,cAAM,KAAN,cAAM,QAEtB;QACD,SAAgB,GAAG,CAAC,QAAwB,EAAE,OAAwB;YACrE,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACjH,CAAC;QAFe,WAAG,MAElB,CAAA;IACF,CAAC,EApBgB,OAAO,GAAP,gBAAO,KAAP,gBAAO,QAoBvB;IACY,aAAI,GAAG,IAAI,CAAC,MAAM,CAAW;QACzC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;QAC9B,MAAM,EAAE,OAAO,CAAC,IAAI;QACpB,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;QACpC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;QACpC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;SAC9B,CAAC;KACF,CAAC,CAAA;IACF,SAAgB,QAAQ,CAAC,QAAwB,EAAE,QAAkB;QACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAA;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAA;QAC1C,OAAO,QAAQ,IAAI,MAAM,CAAA;IAC1B,CAAC;IAJe,iBAAQ,WAIvB,CAAA;AACF,CAAC,EAzCgB,QAAQ,KAAR,QAAQ,QAyCxB"}
1
+ {"version":3,"file":"Fragment.js","sourceRoot":"../","sources":["Treasury/Snapshot/Fragment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAenC,MAAM,KAAW,QAAQ,CAkGxB;AAlGD,WAAiB,QAAQ;IAExB,IAAiB,cAAc,CAuB9B;IAvBD,WAAiB,cAAc;QACjB,mBAAI,GAAG,IAAI,CAAC,MAAM,CAC9B,IAAI,CAAC,MAAM,EAAE,EACb,IAAI,CAAC,MAAM,CAAyB;YACnC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CACnB,IAAI,CAAC,MAAM,EAAE,EACb,IAAI,CAAC,MAAM,CAA4C,EAAE,MAAM,EAAE,IAAI,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,KAAK,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,KAAK,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,QAAwB,EAAE,QAAkB;QACpE,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;QACtF,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,IAAI,CAAC,MAAM,CAAW;QACzC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;QAC9B,MAAM,EAAE,OAAO,CAAC,QAAQ;QACxB,cAAc,EAAE,cAAc,CAAC,IAAI;QACnC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;SAC9B,CAAC;KACF,CAAC,CAAA;IAEF,IAAiB,MAAM,CAsCtB;IAtCD,WAAiB,MAAM;QAGT,aAAM,GAAG,IAAI,CAAC,MAAM,CAAS;YACzC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SACrB,CAAC,CAAA;QAEW,WAAI,GAAG,IAAI,CAAC,MAAM,CAAU,IAAI,CAAC,MAAM,EAAE,EAAE,OAAA,MAAM,CAAC,CAAA;QAC/D,SAAS,aAAa,CACrB,QAAwB,EACxB,MAA0C,EAC1C,MAA2C;YAE3C,MAAM,MAAM,GAAuC,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAA;YACxE,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;YACpG,CAAC;YACD,OAAO,MAAM,CAAA;QACd,CAAC;QACD,SAAS,YAAY,CAAC,OAAsC;YAC3D,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAA+B,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAC7F,CAAA;QACF,CAAC;QACD,SAAgB,gBAAgB,CAAC,QAAwB,EAAE,MAAe,EAAE,MAAe;YAC1F,MAAM,MAAM,GAAmB,EAAE,CAAA;YACjC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;YAC/E,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,GAAG;oBACd,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;oBACjF,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;iBACrF,CAAA;YACF,CAAC;YACD,OAAO,MAAM,CAAA;QACd,CAAC;QAZe,uBAAgB,mBAY/B,CAAA;IACF,CAAC,EAtCgB,MAAM,GAAN,eAAM,KAAN,eAAM,QAsCtB;IACD,SAAgB,UAAU,CAAC,QAAwB,EAAE,QAA2B;QAC/E,IAAI,MAAgB,CAAA;QACpB,IAAI,gBAAgB,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,GAAG,QAAQ,CAAA;QAClB,CAAC;aAAM,CAAC;YACP,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC1F,MAAM,MAAM,GAAa,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,CAAA;YACxD,QAAQ,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,CAAA;YAC1C,QAAQ,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,CAAA;YAC1C,OAAO,MAAM,CAAA;QACd,CAAC;QACD,OAAO,MAAM,CAAA;IACd,CAAC;IAZe,mBAAU,aAYzB,CAAA;AACF,CAAC,EAlGgB,QAAQ,KAAR,QAAQ,QAkGxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pax2pay/model-banking",
3
- "version": "0.1.376",
3
+ "version": "0.1.378",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",