@pax2pay/model-banking 0.1.564 → 0.1.565

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 (38) hide show
  1. package/Account/Charge/Applies.ts +53 -0
  2. package/Account/{Charge.ts → Charge/index.ts} +21 -20
  3. package/Settlement/Entry/index.ts +6 -2
  4. package/Transaction/Amount.ts +3 -4
  5. package/Transaction/Creatable.ts +10 -2
  6. package/dist/cjs/Account/Charge/Applies.d.ts +23 -0
  7. package/dist/cjs/Account/Charge/Applies.js +44 -0
  8. package/dist/cjs/Account/Charge/Applies.js.map +1 -0
  9. package/dist/cjs/Account/{Charge.d.ts → Charge/index.d.ts} +6 -9
  10. package/dist/cjs/Account/{Charge.js → Charge/index.js} +12 -14
  11. package/dist/cjs/Account/Charge/index.js.map +1 -0
  12. package/dist/cjs/Settlement/Entry/index.d.ts +2 -1
  13. package/dist/cjs/Settlement/Entry/index.js +2 -2
  14. package/dist/cjs/Settlement/Entry/index.js.map +1 -1
  15. package/dist/cjs/Transaction/Amount.d.ts +2 -4
  16. package/dist/cjs/Transaction/Amount.js +2 -2
  17. package/dist/cjs/Transaction/Amount.js.map +1 -1
  18. package/dist/cjs/Transaction/Creatable.d.ts +2 -1
  19. package/dist/cjs/Transaction/Creatable.js +2 -2
  20. package/dist/cjs/Transaction/Creatable.js.map +1 -1
  21. package/dist/mjs/Account/Charge/Applies.d.ts +23 -0
  22. package/dist/mjs/Account/Charge/Applies.js +41 -0
  23. package/dist/mjs/Account/Charge/Applies.js.map +1 -0
  24. package/dist/mjs/Account/{Charge.d.ts → Charge/index.d.ts} +6 -9
  25. package/dist/mjs/Account/{Charge.js → Charge/index.js} +12 -14
  26. package/dist/mjs/Account/Charge/index.js.map +1 -0
  27. package/dist/mjs/Settlement/Entry/index.d.ts +2 -1
  28. package/dist/mjs/Settlement/Entry/index.js +2 -2
  29. package/dist/mjs/Settlement/Entry/index.js.map +1 -1
  30. package/dist/mjs/Transaction/Amount.d.ts +2 -4
  31. package/dist/mjs/Transaction/Amount.js +2 -2
  32. package/dist/mjs/Transaction/Amount.js.map +1 -1
  33. package/dist/mjs/Transaction/Creatable.d.ts +2 -1
  34. package/dist/mjs/Transaction/Creatable.js +2 -2
  35. package/dist/mjs/Transaction/Creatable.js.map +1 -1
  36. package/package.json +1 -1
  37. package/dist/cjs/Account/Charge.js.map +0 -1
  38. package/dist/mjs/Account/Charge.js.map +0 -1
@@ -0,0 +1,53 @@
1
+ import { isly } from "isly"
2
+ import { Card } from "../../Card"
3
+ import type { Rail } from "../../Rail"
4
+ import type { Transaction } from "../../Transaction"
5
+
6
+ export interface Applies {
7
+ to: {
8
+ presets?: Card.Preset[]
9
+ merchants?: Card.Restriction.Merchant[]
10
+ fx?: boolean
11
+ }
12
+ }
13
+ export namespace Applies {
14
+ export const type = isly.object<Applies>({
15
+ to: isly.object({
16
+ presets: Card.Preset.type.array().optional(),
17
+ merchants: Card.Restriction.Merchant.type.array().optional(),
18
+ fx: isly.boolean().optional(),
19
+ }),
20
+ })
21
+ export namespace Presets {
22
+ export function evaluate(presets: Card.Preset[] = [], preset?: Card.Preset): boolean {
23
+ return presets.length === 0 || (!!preset && presets.includes(preset))
24
+ }
25
+ }
26
+ export namespace Merchant {
27
+ export function evaluate(
28
+ merchants: Card.Restriction.Merchant[] = [],
29
+ counterpart: Rail.Address.Card.Counterpart
30
+ ): boolean {
31
+ return (
32
+ merchants.length === 0 || merchants.some(merchant => Card.Restriction.Merchant.check(merchant, counterpart))
33
+ )
34
+ }
35
+ }
36
+ export namespace Fx {
37
+ export function evaluate(fx?: boolean, exchange?: Transaction.Exchange): boolean {
38
+ return fx == undefined || (fx && !!exchange)
39
+ }
40
+ }
41
+ export function evaluate(
42
+ applies: Applies,
43
+ counterpart: Rail.Address.Card.Counterpart,
44
+ preset?: Card.Preset,
45
+ exchange?: Transaction.Exchange
46
+ ): boolean {
47
+ const result =
48
+ Presets.evaluate(applies.to.presets, preset) &&
49
+ Fx.evaluate(applies.to.fx, exchange) &&
50
+ Merchant.evaluate(applies.to.merchants, counterpart)
51
+ return result
52
+ }
53
+ }
@@ -1,9 +1,10 @@
1
1
  import { cryptly } from "cryptly"
2
2
  import { isoly } from "isoly"
3
3
  import { isly } from "isly"
4
- import { Card } from "../Card"
5
- import type { Rail } from "../Rail"
6
- import { Transaction } from "../Transaction"
4
+ import type { Card } from "../../Card"
5
+ import type { Rail } from "../../Rail"
6
+ import type { Transaction } from "../../Transaction"
7
+ import { Applies } from "./Applies"
7
8
 
8
9
  export interface Charge extends Charge.Creatable {
9
10
  id: string
@@ -12,21 +13,13 @@ export namespace Charge {
12
13
  export interface Creatable {
13
14
  destination: { account: string }
14
15
  rate: number // rate: 0.01 for 1%
15
- applies: {
16
- to: {
17
- merchants: Card.Restriction.Merchant[]
18
- }
19
- }
16
+ applies: Applies
20
17
  }
21
18
  export namespace Creatable {
22
19
  export const type = isly.object<Creatable>({
23
20
  destination: isly.object({ account: isly.string() }),
24
21
  rate: isly.number(),
25
- applies: isly.object({
26
- to: isly.object<Creatable["applies"]["to"]>({
27
- merchants: Card.Restriction.Merchant.type.array(),
28
- }),
29
- }),
22
+ applies: Applies.type,
30
23
  })
31
24
  }
32
25
  export const type = Creatable.type.extend<Charge>({
@@ -39,18 +32,26 @@ export namespace Charge {
39
32
  charges: Charge[] = [],
40
33
  counterpart: Rail.Address.Card.Counterpart,
41
34
  currency: isoly.Currency,
42
- amount: number
35
+ amount: number,
36
+ preset?: Card.Preset,
37
+ exchange?: Transaction.Exchange
43
38
  ): Transaction.Amount.Charge[] {
44
39
  const result: Transaction.Amount.Charge[] = []
45
40
  for (const charge of charges)
46
- if (charge.applies.to.merchants.some(merchant => Card.Restriction.Merchant.check(merchant, counterpart)))
47
- result.push({
48
- destination: charge.destination,
49
- type: "merchant",
50
- amount: -isoly.Currency.multiply(currency, amount, charge.rate),
51
- })
41
+ if (Applies.evaluate(charge.applies, counterpart, preset, exchange))
42
+ result.push(toTransactionAmountCharge(currency, amount, charge))
52
43
  return result
53
44
  }
45
+ function toTransactionAmountCharge(
46
+ currency: isoly.Currency,
47
+ amount: number,
48
+ charge: Charge
49
+ ): Transaction.Amount.Charge {
50
+ return {
51
+ amount: -isoly.Currency.multiply(currency, amount, charge.rate),
52
+ charge,
53
+ }
54
+ }
54
55
  export function sum(charges: Transaction.Amount.Charge[], currency: isoly.Currency): number {
55
56
  return charges.reduce((sum, charge) => isoly.Currency.add(currency, sum, charge.amount), 0)
56
57
  }
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly"
2
2
  import { Account } from "../../Account"
3
+ import { Preset } from "../../Card/Preset"
3
4
  import type { Rail } from "../../Rail"
4
5
  import type { Transaction } from "../../Transaction"
5
6
  import { Creatable as EntryCreatable } from "./Creatable"
@@ -26,13 +27,16 @@ export namespace Entry {
26
27
  export function charge(
27
28
  charges: Account.Charge[] = [],
28
29
  counterpart: Rail.Address.Card.Counterpart,
29
- capture: Creatable.Capture
30
+ capture: Creatable.Capture,
31
+ preset?: Preset
30
32
  ): Transaction.Amount.Charge[] {
31
33
  return Account.Charge.evaluate(
32
34
  charges,
33
35
  counterpart,
34
36
  capture.amount[0],
35
- isoly.Currency.add(capture.amount[0], capture.amount[1], capture.fee.other[capture.amount[0]] ?? 0)
37
+ isoly.Currency.add(capture.amount[0], capture.amount[1], capture.fee.other[capture.amount[0]] ?? 0),
38
+ preset,
39
+ capture.exchange
36
40
  )
37
41
  }
38
42
  }
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly"
2
2
  import { isly } from "isly"
3
+ import { Charge as AccountCharge } from "../Account/Charge"
3
4
  import type { Rule } from "../Rule"
4
5
  import { Exchange } from "./Exchange"
5
6
 
@@ -13,14 +14,12 @@ export interface Amount {
13
14
  export namespace Amount {
14
15
  export interface Charge {
15
16
  amount: number
16
- type: "merchant" | "exchange"
17
- destination: { account: string }
17
+ charge: AccountCharge
18
18
  }
19
19
  export namespace Charge {
20
20
  export const type = isly.object<Charge>({
21
21
  amount: isly.number(),
22
- type: isly.string(["merchant", "exchange"]),
23
- destination: isly.object({ account: isly.string() }),
22
+ charge: AccountCharge.type,
24
23
  })
25
24
  export function total(currency: isoly.Currency, charges: Charge[] = []): number {
26
25
  return charges.reduce((r, c) => isoly.Currency.add(currency, r, c.amount), 0)
@@ -1,6 +1,7 @@
1
1
  import { isoly } from "isoly"
2
2
  import { isly } from "isly"
3
3
  import { Account } from "../Account"
4
+ import { Preset } from "../Card/Preset"
4
5
  import { Rail } from "../Rail"
5
6
  import { Amount } from "./Amount"
6
7
  import { Exchange } from "./Exchange"
@@ -36,8 +37,15 @@ export namespace Creatable {
36
37
  reference: isly.object<{ reference: string }>({ reference: isly.string() }),
37
38
  approvalCode: isly.string().optional(),
38
39
  })
39
- export function charge(charges: Account.Charge[], creatable: CardTransaction): Amount.Charge[] {
40
- return Account.Charge.evaluate(charges, creatable.counterpart, creatable.currency, creatable.amount)
40
+ export function charge(charges: Account.Charge[], creatable: CardTransaction, preset?: Preset): Amount.Charge[] {
41
+ return Account.Charge.evaluate(
42
+ charges,
43
+ creatable.counterpart,
44
+ creatable.currency,
45
+ creatable.amount,
46
+ preset,
47
+ creatable.exchange
48
+ )
41
49
  }
42
50
  }
43
51
  }
@@ -0,0 +1,23 @@
1
+ import { Card } from "../../Card";
2
+ import type { Rail } from "../../Rail";
3
+ import type { Transaction } from "../../Transaction";
4
+ export interface Applies {
5
+ to: {
6
+ presets?: Card.Preset[];
7
+ merchants?: Card.Restriction.Merchant[];
8
+ fx?: boolean;
9
+ };
10
+ }
11
+ export declare namespace Applies {
12
+ const type: import("isly/dist/cjs/object").IslyObject<Applies, object>;
13
+ namespace Presets {
14
+ function evaluate(presets?: Card.Preset[], preset?: Card.Preset): boolean;
15
+ }
16
+ namespace Merchant {
17
+ function evaluate(merchants: Card.Restriction.Merchant[] | undefined, counterpart: Rail.Address.Card.Counterpart): boolean;
18
+ }
19
+ namespace Fx {
20
+ function evaluate(fx?: boolean, exchange?: Transaction.Exchange): boolean;
21
+ }
22
+ function evaluate(applies: Applies, counterpart: Rail.Address.Card.Counterpart, preset?: Card.Preset, exchange?: Transaction.Exchange): boolean;
23
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Applies = void 0;
4
+ const isly_1 = require("isly");
5
+ const Card_1 = require("../../Card");
6
+ var Applies;
7
+ (function (Applies) {
8
+ Applies.type = isly_1.isly.object({
9
+ to: isly_1.isly.object({
10
+ presets: Card_1.Card.Preset.type.array().optional(),
11
+ merchants: Card_1.Card.Restriction.Merchant.type.array().optional(),
12
+ fx: isly_1.isly.boolean().optional(),
13
+ }),
14
+ });
15
+ let Presets;
16
+ (function (Presets) {
17
+ function evaluate(presets = [], preset) {
18
+ return presets.length === 0 || (!!preset && presets.includes(preset));
19
+ }
20
+ Presets.evaluate = evaluate;
21
+ })(Presets = Applies.Presets || (Applies.Presets = {}));
22
+ let Merchant;
23
+ (function (Merchant) {
24
+ function evaluate(merchants = [], counterpart) {
25
+ return (merchants.length === 0 || merchants.some(merchant => Card_1.Card.Restriction.Merchant.check(merchant, counterpart)));
26
+ }
27
+ Merchant.evaluate = evaluate;
28
+ })(Merchant = Applies.Merchant || (Applies.Merchant = {}));
29
+ let Fx;
30
+ (function (Fx) {
31
+ function evaluate(fx, exchange) {
32
+ return fx == undefined || (fx && !!exchange);
33
+ }
34
+ Fx.evaluate = evaluate;
35
+ })(Fx = Applies.Fx || (Applies.Fx = {}));
36
+ function evaluate(applies, counterpart, preset, exchange) {
37
+ const result = Presets.evaluate(applies.to.presets, preset) &&
38
+ Fx.evaluate(applies.to.fx, exchange) &&
39
+ Merchant.evaluate(applies.to.merchants, counterpart);
40
+ return result;
41
+ }
42
+ Applies.evaluate = evaluate;
43
+ })(Applies || (exports.Applies = Applies = {}));
44
+ //# sourceMappingURL=Applies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Applies.js","sourceRoot":"","sources":["../../../../Account/Charge/Applies.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,qCAAiC;AAWjC,IAAiB,OAAO,CAwCvB;AAxCD,WAAiB,OAAO;IACV,YAAI,GAAG,WAAI,CAAC,MAAM,CAAU;QACxC,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC;YACf,OAAO,EAAE,WAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;YAC5C,SAAS,EAAE,WAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;YAC5D,EAAE,EAAE,WAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;KACF,CAAC,CAAA;IACF,IAAiB,OAAO,CAIvB;IAJD,WAAiB,OAAO;QACvB,SAAgB,QAAQ,CAAC,UAAyB,EAAE,EAAE,MAAoB;YACzE,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACtE,CAAC;QAFe,gBAAQ,WAEvB,CAAA;IACF,CAAC,EAJgB,OAAO,GAAP,eAAO,KAAP,eAAO,QAIvB;IACD,IAAiB,QAAQ,CASxB;IATD,WAAiB,QAAQ;QACxB,SAAgB,QAAQ,CACvB,YAAyC,EAAE,EAC3C,WAA0C;YAE1C,OAAO,CACN,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAC5G,CAAA;QACF,CAAC;QAPe,iBAAQ,WAOvB,CAAA;IACF,CAAC,EATgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QASxB;IACD,IAAiB,EAAE,CAIlB;IAJD,WAAiB,EAAE;QAClB,SAAgB,QAAQ,CAAC,EAAY,EAAE,QAA+B;YACrE,OAAO,EAAE,IAAI,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC;QAFe,WAAQ,WAEvB,CAAA;IACF,CAAC,EAJgB,EAAE,GAAF,UAAE,KAAF,UAAE,QAIlB;IACD,SAAgB,QAAQ,CACvB,OAAgB,EAChB,WAA0C,EAC1C,MAAoB,EACpB,QAA+B;QAE/B,MAAM,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YAC5C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC;YACpC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACrD,OAAO,MAAM,CAAA;IACd,CAAC;IAXe,gBAAQ,WAWvB,CAAA;AACF,CAAC,EAxCgB,OAAO,uBAAP,OAAO,QAwCvB"}
@@ -1,7 +1,8 @@
1
1
  import { isoly } from "isoly";
2
- import { Card } from "../Card";
3
- import type { Rail } from "../Rail";
4
- import { Transaction } from "../Transaction";
2
+ import type { Card } from "../../Card";
3
+ import type { Rail } from "../../Rail";
4
+ import type { Transaction } from "../../Transaction";
5
+ import { Applies } from "./Applies";
5
6
  export interface Charge extends Charge.Creatable {
6
7
  id: string;
7
8
  }
@@ -11,17 +12,13 @@ export declare namespace Charge {
11
12
  account: string;
12
13
  };
13
14
  rate: number;
14
- applies: {
15
- to: {
16
- merchants: Card.Restriction.Merchant[];
17
- };
18
- };
15
+ applies: Applies;
19
16
  }
20
17
  namespace Creatable {
21
18
  const type: import("isly/dist/cjs/object").IslyObject<Creatable, object>;
22
19
  }
23
20
  const type: import("isly/dist/cjs/object").IslyObject<Charge, Creatable>;
24
21
  function fromCreatable(creatable: Creatable): Charge;
25
- function evaluate(charges: Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, currency: isoly.Currency, amount: number): Transaction.Amount.Charge[];
22
+ function evaluate(charges: Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, currency: isoly.Currency, amount: number, preset?: Card.Preset, exchange?: Transaction.Exchange): Transaction.Amount.Charge[];
26
23
  function sum(charges: Transaction.Amount.Charge[], currency: isoly.Currency): number;
27
24
  }
@@ -4,7 +4,7 @@ exports.Charge = void 0;
4
4
  const cryptly_1 = require("cryptly");
5
5
  const isoly_1 = require("isoly");
6
6
  const isly_1 = require("isly");
7
- const Card_1 = require("../Card");
7
+ const Applies_1 = require("./Applies");
8
8
  var Charge;
9
9
  (function (Charge) {
10
10
  let Creatable;
@@ -12,11 +12,7 @@ var Charge;
12
12
  Creatable.type = isly_1.isly.object({
13
13
  destination: isly_1.isly.object({ account: isly_1.isly.string() }),
14
14
  rate: isly_1.isly.number(),
15
- applies: isly_1.isly.object({
16
- to: isly_1.isly.object({
17
- merchants: Card_1.Card.Restriction.Merchant.type.array(),
18
- }),
19
- }),
15
+ applies: Applies_1.Applies.type,
20
16
  });
21
17
  })(Creatable = Charge.Creatable || (Charge.Creatable = {}));
22
18
  Charge.type = Creatable.type.extend({
@@ -26,21 +22,23 @@ var Charge;
26
22
  return { ...creatable, id: cryptly_1.cryptly.Identifier.generate(4) };
27
23
  }
28
24
  Charge.fromCreatable = fromCreatable;
29
- function evaluate(charges = [], counterpart, currency, amount) {
25
+ function evaluate(charges = [], counterpart, currency, amount, preset, exchange) {
30
26
  const result = [];
31
27
  for (const charge of charges)
32
- if (charge.applies.to.merchants.some(merchant => Card_1.Card.Restriction.Merchant.check(merchant, counterpart)))
33
- result.push({
34
- destination: charge.destination,
35
- type: "merchant",
36
- amount: -isoly_1.isoly.Currency.multiply(currency, amount, charge.rate),
37
- });
28
+ if (Applies_1.Applies.evaluate(charge.applies, counterpart, preset, exchange))
29
+ result.push(toTransactionAmountCharge(currency, amount, charge));
38
30
  return result;
39
31
  }
40
32
  Charge.evaluate = evaluate;
33
+ function toTransactionAmountCharge(currency, amount, charge) {
34
+ return {
35
+ amount: -isoly_1.isoly.Currency.multiply(currency, amount, charge.rate),
36
+ charge,
37
+ };
38
+ }
41
39
  function sum(charges, currency) {
42
40
  return charges.reduce((sum, charge) => isoly_1.isoly.Currency.add(currency, sum, charge.amount), 0);
43
41
  }
44
42
  Charge.sum = sum;
45
43
  })(Charge || (exports.Charge = Charge = {}));
46
- //# sourceMappingURL=Charge.js.map
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Account/Charge/index.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AACjC,iCAA6B;AAC7B,+BAA2B;AAI3B,uCAAmC;AAKnC,IAAiB,MAAM,CA8CtB;AA9CD,WAAiB,MAAM;IAMtB,IAAiB,SAAS,CAMzB;IAND,WAAiB,SAAS;QACZ,cAAI,GAAG,WAAI,CAAC,MAAM,CAAY;YAC1C,WAAW,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,EAAE,WAAI,CAAC,MAAM,EAAE;YACnB,OAAO,EAAE,iBAAO,CAAC,IAAI;SACrB,CAAC,CAAA;IACH,CAAC,EANgB,SAAS,GAAT,gBAAS,KAAT,gBAAS,QAMzB;IACY,WAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAS;QACjD,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;KACjB,CAAC,CAAA;IACF,SAAgB,aAAa,CAAC,SAAoB;QACjD,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,iBAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,CAAC;IAFe,oBAAa,gBAE5B,CAAA;IACD,SAAgB,QAAQ,CACvB,UAAoB,EAAE,EACtB,WAA0C,EAC1C,QAAwB,EACxB,MAAc,EACd,MAAoB,EACpB,QAA+B;QAE/B,MAAM,MAAM,GAAgC,EAAE,CAAA;QAC9C,KAAK,MAAM,MAAM,IAAI,OAAO;YAC3B,IAAI,iBAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,OAAO,MAAM,CAAA;IACd,CAAC;IAbe,eAAQ,WAavB,CAAA;IACD,SAAS,yBAAyB,CACjC,QAAwB,EACxB,MAAc,EACd,MAAc;QAEd,OAAO;YACN,MAAM,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YAC/D,MAAM;SACN,CAAA;IACF,CAAC;IACD,SAAgB,GAAG,CAAC,OAAoC,EAAE,QAAwB;QACjF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5F,CAAC;IAFe,UAAG,MAElB,CAAA;AACF,CAAC,EA9CgB,MAAM,sBAAN,MAAM,QA8CtB"}
@@ -1,4 +1,5 @@
1
1
  import { Account } from "../../Account";
2
+ import { Preset } from "../../Card/Preset";
2
3
  import type { Rail } from "../../Rail";
3
4
  import type { Transaction } from "../../Transaction";
4
5
  import { Creatable as EntryCreatable } from "./Creatable";
@@ -20,5 +21,5 @@ export declare namespace Entry {
20
21
  export import Summary = EntrySummary;
21
22
  const type: import("isly/dist/cjs/Type").Type<Entry>;
22
23
  const from: typeof fromCreatable;
23
- function charge(charges: Account.Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, capture: Creatable.Capture): Transaction.Amount.Charge[];
24
+ function charge(charges: Account.Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, capture: Creatable.Capture, preset?: Preset): Transaction.Amount.Charge[];
24
25
  }
@@ -17,8 +17,8 @@ var Entry;
17
17
  Entry.Summary = Summary_1.Summary;
18
18
  Entry.type = type_1.type;
19
19
  Entry.from = fromCreatable_1.fromCreatable;
20
- function charge(charges = [], counterpart, capture) {
21
- return Account_1.Account.Charge.evaluate(charges, counterpart, capture.amount[0], isoly_1.isoly.Currency.add(capture.amount[0], capture.amount[1], capture.fee.other[capture.amount[0]] ?? 0));
20
+ function charge(charges = [], counterpart, capture, preset) {
21
+ return Account_1.Account.Charge.evaluate(charges, counterpart, capture.amount[0], isoly_1.isoly.Currency.add(capture.amount[0], capture.amount[1], capture.fee.other[capture.amount[0]] ?? 0), preset, capture.exchange);
22
22
  }
23
23
  Entry.charge = charge;
24
24
  })(Entry || (exports.Entry = Entry = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Settlement/Entry/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,2CAAuC;AAGvC,2CAAyD;AACzD,qCAAgD;AAChD,mDAA+C;AAC/C,2CAAyD;AACzD,uCAAmD;AACnD,iCAA0C;AAG1C,IAAiB,KAAK,CAyBrB;AAzBD,WAAiB,KAAK;IAOP,eAAS,GAAG,qBAAc,CAAA;IAC1B,YAAM,GAAG,eAAW,CAAA;IACpB,eAAS,GAAG,qBAAc,CAAA;IAC1B,aAAO,GAAG,iBAAY,CAAA;IACvB,UAAI,GAAG,WAAS,CAAA;IAChB,UAAI,GAAG,6BAAa,CAAA;IACjC,SAAgB,MAAM,CACrB,UAA4B,EAAE,EAC9B,WAA0C,EAC1C,OAA0B;QAE1B,OAAO,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAC7B,OAAO,EACP,WAAW,EACX,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACnG,CAAA;IACF,CAAC;IAXe,YAAM,SAWrB,CAAA;AACF,CAAC,EAzBgB,KAAK,qBAAL,KAAK,QAyBrB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Settlement/Entry/index.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,2CAAuC;AAIvC,2CAAyD;AACzD,qCAAgD;AAChD,mDAA+C;AAC/C,2CAAyD;AACzD,uCAAmD;AACnD,iCAA0C;AAG1C,IAAiB,KAAK,CA4BrB;AA5BD,WAAiB,KAAK;IAOP,eAAS,GAAG,qBAAc,CAAA;IAC1B,YAAM,GAAG,eAAW,CAAA;IACpB,eAAS,GAAG,qBAAc,CAAA;IAC1B,aAAO,GAAG,iBAAY,CAAA;IACvB,UAAI,GAAG,WAAS,CAAA;IAChB,UAAI,GAAG,6BAAa,CAAA;IACjC,SAAgB,MAAM,CACrB,UAA4B,EAAE,EAC9B,WAA0C,EAC1C,OAA0B,EAC1B,MAAe;QAEf,OAAO,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAC7B,OAAO,EACP,WAAW,EACX,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACnG,MAAM,EACN,OAAO,CAAC,QAAQ,CAChB,CAAA;IACF,CAAC;IAde,YAAM,SAcrB,CAAA;AACF,CAAC,EA5BgB,KAAK,qBAAL,KAAK,QA4BrB"}
@@ -1,4 +1,5 @@
1
1
  import { isoly } from "isoly";
2
+ import { Charge as AccountCharge } from "../Account/Charge";
2
3
  import type { Rule } from "../Rule";
3
4
  import { Exchange } from "./Exchange";
4
5
  export interface Amount {
@@ -11,10 +12,7 @@ export interface Amount {
11
12
  export declare namespace Amount {
12
13
  interface Charge {
13
14
  amount: number;
14
- type: "merchant" | "exchange";
15
- destination: {
16
- account: string;
17
- };
15
+ charge: AccountCharge;
18
16
  }
19
17
  namespace Charge {
20
18
  const type: import("isly/dist/cjs/object").IslyObject<Charge, object>;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Amount = void 0;
4
4
  const isoly_1 = require("isoly");
5
5
  const isly_1 = require("isly");
6
+ const Charge_1 = require("../Account/Charge");
6
7
  const Exchange_1 = require("./Exchange");
7
8
  var Amount;
8
9
  (function (Amount) {
@@ -10,8 +11,7 @@ var Amount;
10
11
  (function (Charge) {
11
12
  Charge.type = isly_1.isly.object({
12
13
  amount: isly_1.isly.number(),
13
- type: isly_1.isly.string(["merchant", "exchange"]),
14
- destination: isly_1.isly.object({ account: isly_1.isly.string() }),
14
+ charge: Charge_1.Charge.type,
15
15
  });
16
16
  function total(currency, charges = []) {
17
17
  return charges.reduce((r, c) => isoly_1.isoly.Currency.add(currency, r, c.amount), 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Amount.js","sourceRoot":"","sources":["../../../Transaction/Amount.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAE3B,yCAAqC;AASrC,IAAiB,MAAM,CA8CtB;AA9CD,WAAiB,MAAM;IAMtB,IAAiB,MAAM,CAStB;IATD,WAAiB,MAAM;QACT,WAAI,GAAG,WAAI,CAAC,MAAM,CAAS;YACvC,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3C,WAAW,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,CAAC;SACpD,CAAC,CAAA;QACF,SAAgB,KAAK,CAAC,QAAwB,EAAE,UAAoB,EAAE;YACrE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAFe,YAAK,QAEpB,CAAA;IACF,CAAC,EATgB,MAAM,GAAN,aAAM,KAAN,aAAM,QAStB;IACY,WAAI,GAAG,WAAI,CAAC,MAAM,CAAS;QACvC,QAAQ,EAAE,WAAI,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,WAAI,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,mBAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACF,SAAgB,SAAS,CAAC,KAAiB,EAAE,OAAkB;QAC9D,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3G,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAA;QACJ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO;YACN,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;YAClD,MAAM,EAAE,CAAC;YACT,OAAO;YACP,KAAK,EAAE,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/G,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ;SACtE,CAAA;IACF,CAAC;IAZe,gBAAS,YAYxB,CAAA;IACD,SAAgB,MAAM,CACrB,QAAwB,EACxB,MAAc,EACd,MAAc,EACd,IAA6D;QAE7D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QACtE,MAAM,CAAC,KAAK,GAAG,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACd,CAAC;IATe,aAAM,SASrB,CAAA;AACF,CAAC,EA9CgB,MAAM,sBAAN,MAAM,QA8CtB"}
1
+ {"version":3,"file":"Amount.js","sourceRoot":"","sources":["../../../Transaction/Amount.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,8CAA2D;AAE3D,yCAAqC;AASrC,IAAiB,MAAM,CA4CtB;AA5CD,WAAiB,MAAM;IAKtB,IAAiB,MAAM,CAQtB;IARD,WAAiB,MAAM;QACT,WAAI,GAAG,WAAI,CAAC,MAAM,CAAS;YACvC,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;YACrB,MAAM,EAAE,eAAa,CAAC,IAAI;SAC1B,CAAC,CAAA;QACF,SAAgB,KAAK,CAAC,QAAwB,EAAE,UAAoB,EAAE;YACrE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAFe,YAAK,QAEpB,CAAA;IACF,CAAC,EARgB,MAAM,GAAN,aAAM,KAAN,aAAM,QAQtB;IACY,WAAI,GAAG,WAAI,CAAC,MAAM,CAAS;QACvC,QAAQ,EAAE,WAAI,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,WAAI,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,mBAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACF,SAAgB,SAAS,CAAC,KAAiB,EAAE,OAAkB;QAC9D,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3G,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAA;QACJ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO;YACN,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;YAClD,MAAM,EAAE,CAAC;YACT,OAAO;YACP,KAAK,EAAE,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/G,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ;SACtE,CAAA;IACF,CAAC;IAZe,gBAAS,YAYxB,CAAA;IACD,SAAgB,MAAM,CACrB,QAAwB,EACxB,MAAc,EACd,MAAc,EACd,IAA6D;QAE7D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QACtE,MAAM,CAAC,KAAK,GAAG,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACd,CAAC;IATe,aAAM,SASrB,CAAA;AACF,CAAC,EA5CgB,MAAM,sBAAN,MAAM,QA4CtB"}
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly";
2
2
  import { Account } from "../Account";
3
+ import { Preset } from "../Card/Preset";
3
4
  import { Rail } from "../Rail";
4
5
  import { Amount } from "./Amount";
5
6
  import { Exchange } from "./Exchange";
@@ -26,6 +27,6 @@ export declare namespace Creatable {
26
27
  }
27
28
  namespace CardTransaction {
28
29
  const type: import("isly/dist/cjs/object").IslyObject<CardTransaction, Creatable>;
29
- function charge(charges: Account.Charge[], creatable: CardTransaction): Amount.Charge[];
30
+ function charge(charges: Account.Charge[], creatable: CardTransaction, preset?: Preset): Amount.Charge[];
30
31
  }
31
32
  }
@@ -24,8 +24,8 @@ var Creatable;
24
24
  reference: isly_1.isly.object({ reference: isly_1.isly.string() }),
25
25
  approvalCode: isly_1.isly.string().optional(),
26
26
  });
27
- function charge(charges, creatable) {
28
- return Account_1.Account.Charge.evaluate(charges, creatable.counterpart, creatable.currency, creatable.amount);
27
+ function charge(charges, creatable, preset) {
28
+ return Account_1.Account.Charge.evaluate(charges, creatable.counterpart, creatable.currency, creatable.amount, preset, creatable.exchange);
29
29
  }
30
30
  CardTransaction.charge = charge;
31
31
  })(CardTransaction = Creatable.CardTransaction || (Creatable.CardTransaction = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"","sources":["../../../Transaction/Creatable.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,wCAAoC;AACpC,kCAA8B;AAE9B,yCAAqC;AASrC,IAAiB,SAAS,CA4BzB;AA5BD,WAAiB,SAAS;IAEZ,cAAI,GAAG,WAAI,CAAC,MAAM,CAAY;QAC1C,WAAW,EAAE,WAAI,CAAC,KAAK,CAA8C,WAAI,CAAC,MAAM,EAAE,EAAE,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtG,QAAQ,EAAE,WAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;QACrB,WAAW,EAAE,WAAI,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,mBAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IAQF,IAAiB,eAAe,CAW/B;IAXD,WAAiB,eAAe;QAClB,oBAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAkB;YAC1D,OAAO,EAAE,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpD,SAAS,EAAE,WAAI,CAAC,MAAM,EAAE;YACxB,WAAW,EAAE,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAC/C,SAAS,EAAE,WAAI,CAAC,MAAM,CAAwB,EAAE,SAAS,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3E,YAAY,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAA;QACF,SAAgB,MAAM,CAAC,OAAyB,EAAE,SAA0B;YAC3E,OAAO,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;QACrG,CAAC;QAFe,sBAAM,SAErB,CAAA;IACF,CAAC,EAXgB,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAW/B;AACF,CAAC,EA5BgB,SAAS,yBAAT,SAAS,QA4BzB"}
1
+ {"version":3,"file":"Creatable.js","sourceRoot":"","sources":["../../../Transaction/Creatable.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,+BAA2B;AAC3B,wCAAoC;AAEpC,kCAA8B;AAE9B,yCAAqC;AASrC,IAAiB,SAAS,CAmCzB;AAnCD,WAAiB,SAAS;IAEZ,cAAI,GAAG,WAAI,CAAC,MAAM,CAAY;QAC1C,WAAW,EAAE,WAAI,CAAC,KAAK,CAA8C,WAAI,CAAC,MAAM,EAAE,EAAE,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtG,QAAQ,EAAE,WAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,WAAI,CAAC,MAAM,EAAE;QACrB,WAAW,EAAE,WAAI,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,mBAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IAQF,IAAiB,eAAe,CAkB/B;IAlBD,WAAiB,eAAe;QAClB,oBAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAkB;YAC1D,OAAO,EAAE,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpD,SAAS,EAAE,WAAI,CAAC,MAAM,EAAE;YACxB,WAAW,EAAE,WAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAC/C,SAAS,EAAE,WAAI,CAAC,MAAM,CAAwB,EAAE,SAAS,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3E,YAAY,EAAE,WAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAA;QACF,SAAgB,MAAM,CAAC,OAAyB,EAAE,SAA0B,EAAE,MAAe;YAC5F,OAAO,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAC7B,OAAO,EACP,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,MAAM,EAChB,MAAM,EACN,SAAS,CAAC,QAAQ,CAClB,CAAA;QACF,CAAC;QATe,sBAAM,SASrB,CAAA;IACF,CAAC,EAlBgB,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAkB/B;AACF,CAAC,EAnCgB,SAAS,yBAAT,SAAS,QAmCzB"}
@@ -0,0 +1,23 @@
1
+ import { Card } from "../../Card";
2
+ import type { Rail } from "../../Rail";
3
+ import type { Transaction } from "../../Transaction";
4
+ export interface Applies {
5
+ to: {
6
+ presets?: Card.Preset[];
7
+ merchants?: Card.Restriction.Merchant[];
8
+ fx?: boolean;
9
+ };
10
+ }
11
+ export declare namespace Applies {
12
+ const type: import("isly/dist/cjs/object").IslyObject<Applies, object>;
13
+ namespace Presets {
14
+ function evaluate(presets?: Card.Preset[], preset?: Card.Preset): boolean;
15
+ }
16
+ namespace Merchant {
17
+ function evaluate(merchants: Card.Restriction.Merchant[] | undefined, counterpart: Rail.Address.Card.Counterpart): boolean;
18
+ }
19
+ namespace Fx {
20
+ function evaluate(fx?: boolean, exchange?: Transaction.Exchange): boolean;
21
+ }
22
+ function evaluate(applies: Applies, counterpart: Rail.Address.Card.Counterpart, preset?: Card.Preset, exchange?: Transaction.Exchange): boolean;
23
+ }
@@ -0,0 +1,41 @@
1
+ import { isly } from "isly";
2
+ import { Card } from "../../Card";
3
+ export var Applies;
4
+ (function (Applies) {
5
+ Applies.type = isly.object({
6
+ to: isly.object({
7
+ presets: Card.Preset.type.array().optional(),
8
+ merchants: Card.Restriction.Merchant.type.array().optional(),
9
+ fx: isly.boolean().optional(),
10
+ }),
11
+ });
12
+ let Presets;
13
+ (function (Presets) {
14
+ function evaluate(presets = [], preset) {
15
+ return presets.length === 0 || (!!preset && presets.includes(preset));
16
+ }
17
+ Presets.evaluate = evaluate;
18
+ })(Presets = Applies.Presets || (Applies.Presets = {}));
19
+ let Merchant;
20
+ (function (Merchant) {
21
+ function evaluate(merchants = [], counterpart) {
22
+ return (merchants.length === 0 || merchants.some(merchant => Card.Restriction.Merchant.check(merchant, counterpart)));
23
+ }
24
+ Merchant.evaluate = evaluate;
25
+ })(Merchant = Applies.Merchant || (Applies.Merchant = {}));
26
+ let Fx;
27
+ (function (Fx) {
28
+ function evaluate(fx, exchange) {
29
+ return fx == undefined || (fx && !!exchange);
30
+ }
31
+ Fx.evaluate = evaluate;
32
+ })(Fx = Applies.Fx || (Applies.Fx = {}));
33
+ function evaluate(applies, counterpart, preset, exchange) {
34
+ const result = Presets.evaluate(applies.to.presets, preset) &&
35
+ Fx.evaluate(applies.to.fx, exchange) &&
36
+ Merchant.evaluate(applies.to.merchants, counterpart);
37
+ return result;
38
+ }
39
+ Applies.evaluate = evaluate;
40
+ })(Applies || (Applies = {}));
41
+ //# sourceMappingURL=Applies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Applies.js","sourceRoot":"","sources":["../../../../Account/Charge/Applies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAWjC,MAAM,KAAW,OAAO,CAwCvB;AAxCD,WAAiB,OAAO;IACV,YAAI,GAAG,IAAI,CAAC,MAAM,CAAU;QACxC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;YACf,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;YAC5C,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;YAC5D,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC;KACF,CAAC,CAAA;IACF,IAAiB,OAAO,CAIvB;IAJD,WAAiB,OAAO;QACvB,SAAgB,QAAQ,CAAC,UAAyB,EAAE,EAAE,MAAoB;YACzE,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACtE,CAAC;QAFe,gBAAQ,WAEvB,CAAA;IACF,CAAC,EAJgB,OAAO,GAAP,eAAO,KAAP,eAAO,QAIvB;IACD,IAAiB,QAAQ,CASxB;IATD,WAAiB,QAAQ;QACxB,SAAgB,QAAQ,CACvB,YAAyC,EAAE,EAC3C,WAA0C;YAE1C,OAAO,CACN,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAC5G,CAAA;QACF,CAAC;QAPe,iBAAQ,WAOvB,CAAA;IACF,CAAC,EATgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QASxB;IACD,IAAiB,EAAE,CAIlB;IAJD,WAAiB,EAAE;QAClB,SAAgB,QAAQ,CAAC,EAAY,EAAE,QAA+B;YACrE,OAAO,EAAE,IAAI,SAAS,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC;QAFe,WAAQ,WAEvB,CAAA;IACF,CAAC,EAJgB,EAAE,GAAF,UAAE,KAAF,UAAE,QAIlB;IACD,SAAgB,QAAQ,CACvB,OAAgB,EAChB,WAA0C,EAC1C,MAAoB,EACpB,QAA+B;QAE/B,MAAM,MAAM,GACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;YAC5C,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC;YACpC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACrD,OAAO,MAAM,CAAA;IACd,CAAC;IAXe,gBAAQ,WAWvB,CAAA;AACF,CAAC,EAxCgB,OAAO,KAAP,OAAO,QAwCvB"}
@@ -1,7 +1,8 @@
1
1
  import { isoly } from "isoly";
2
- import { Card } from "../Card";
3
- import type { Rail } from "../Rail";
4
- import { Transaction } from "../Transaction";
2
+ import type { Card } from "../../Card";
3
+ import type { Rail } from "../../Rail";
4
+ import type { Transaction } from "../../Transaction";
5
+ import { Applies } from "./Applies";
5
6
  export interface Charge extends Charge.Creatable {
6
7
  id: string;
7
8
  }
@@ -11,17 +12,13 @@ export declare namespace Charge {
11
12
  account: string;
12
13
  };
13
14
  rate: number;
14
- applies: {
15
- to: {
16
- merchants: Card.Restriction.Merchant[];
17
- };
18
- };
15
+ applies: Applies;
19
16
  }
20
17
  namespace Creatable {
21
18
  const type: import("isly/dist/cjs/object").IslyObject<Creatable, object>;
22
19
  }
23
20
  const type: import("isly/dist/cjs/object").IslyObject<Charge, Creatable>;
24
21
  function fromCreatable(creatable: Creatable): Charge;
25
- function evaluate(charges: Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, currency: isoly.Currency, amount: number): Transaction.Amount.Charge[];
22
+ function evaluate(charges: Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, currency: isoly.Currency, amount: number, preset?: Card.Preset, exchange?: Transaction.Exchange): Transaction.Amount.Charge[];
26
23
  function sum(charges: Transaction.Amount.Charge[], currency: isoly.Currency): number;
27
24
  }
@@ -1,7 +1,7 @@
1
1
  import { cryptly } from "cryptly";
2
2
  import { isoly } from "isoly";
3
3
  import { isly } from "isly";
4
- import { Card } from "../Card";
4
+ import { Applies } from "./Applies";
5
5
  export var Charge;
6
6
  (function (Charge) {
7
7
  let Creatable;
@@ -9,11 +9,7 @@ export var Charge;
9
9
  Creatable.type = isly.object({
10
10
  destination: isly.object({ account: isly.string() }),
11
11
  rate: isly.number(),
12
- applies: isly.object({
13
- to: isly.object({
14
- merchants: Card.Restriction.Merchant.type.array(),
15
- }),
16
- }),
12
+ applies: Applies.type,
17
13
  });
18
14
  })(Creatable = Charge.Creatable || (Charge.Creatable = {}));
19
15
  Charge.type = Creatable.type.extend({
@@ -23,21 +19,23 @@ export var Charge;
23
19
  return { ...creatable, id: cryptly.Identifier.generate(4) };
24
20
  }
25
21
  Charge.fromCreatable = fromCreatable;
26
- function evaluate(charges = [], counterpart, currency, amount) {
22
+ function evaluate(charges = [], counterpart, currency, amount, preset, exchange) {
27
23
  const result = [];
28
24
  for (const charge of charges)
29
- if (charge.applies.to.merchants.some(merchant => Card.Restriction.Merchant.check(merchant, counterpart)))
30
- result.push({
31
- destination: charge.destination,
32
- type: "merchant",
33
- amount: -isoly.Currency.multiply(currency, amount, charge.rate),
34
- });
25
+ if (Applies.evaluate(charge.applies, counterpart, preset, exchange))
26
+ result.push(toTransactionAmountCharge(currency, amount, charge));
35
27
  return result;
36
28
  }
37
29
  Charge.evaluate = evaluate;
30
+ function toTransactionAmountCharge(currency, amount, charge) {
31
+ return {
32
+ amount: -isoly.Currency.multiply(currency, amount, charge.rate),
33
+ charge,
34
+ };
35
+ }
38
36
  function sum(charges, currency) {
39
37
  return charges.reduce((sum, charge) => isoly.Currency.add(currency, sum, charge.amount), 0);
40
38
  }
41
39
  Charge.sum = sum;
42
40
  })(Charge || (Charge = {}));
43
- //# sourceMappingURL=Charge.js.map
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Account/Charge/index.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;AAI3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,MAAM,KAAW,MAAM,CA8CtB;AA9CD,WAAiB,MAAM;IAMtB,IAAiB,SAAS,CAMzB;IAND,WAAiB,SAAS;QACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;YAC1C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACnB,OAAO,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC,CAAA;IACH,CAAC,EANgB,SAAS,GAAT,gBAAS,KAAT,gBAAS,QAMzB;IACY,WAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAS;QACjD,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;KACjB,CAAC,CAAA;IACF,SAAgB,aAAa,CAAC,SAAoB;QACjD,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,CAAC;IAFe,oBAAa,gBAE5B,CAAA;IACD,SAAgB,QAAQ,CACvB,UAAoB,EAAE,EACtB,WAA0C,EAC1C,QAAwB,EACxB,MAAc,EACd,MAAoB,EACpB,QAA+B;QAE/B,MAAM,MAAM,GAAgC,EAAE,CAAA;QAC9C,KAAK,MAAM,MAAM,IAAI,OAAO;YAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;QAClE,OAAO,MAAM,CAAA;IACd,CAAC;IAbe,eAAQ,WAavB,CAAA;IACD,SAAS,yBAAyB,CACjC,QAAwB,EACxB,MAAc,EACd,MAAc;QAEd,OAAO;YACN,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YAC/D,MAAM;SACN,CAAA;IACF,CAAC;IACD,SAAgB,GAAG,CAAC,OAAoC,EAAE,QAAwB;QACjF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5F,CAAC;IAFe,UAAG,MAElB,CAAA;AACF,CAAC,EA9CgB,MAAM,KAAN,MAAM,QA8CtB"}
@@ -1,4 +1,5 @@
1
1
  import { Account } from "../../Account";
2
+ import { Preset } from "../../Card/Preset";
2
3
  import type { Rail } from "../../Rail";
3
4
  import type { Transaction } from "../../Transaction";
4
5
  import { Creatable as EntryCreatable } from "./Creatable";
@@ -20,5 +21,5 @@ export declare namespace Entry {
20
21
  export import Summary = EntrySummary;
21
22
  const type: import("isly/dist/cjs/Type").Type<Entry>;
22
23
  const from: typeof fromCreatable;
23
- function charge(charges: Account.Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, capture: Creatable.Capture): Transaction.Amount.Charge[];
24
+ function charge(charges: Account.Charge[] | undefined, counterpart: Rail.Address.Card.Counterpart, capture: Creatable.Capture, preset?: Preset): Transaction.Amount.Charge[];
24
25
  }
@@ -14,8 +14,8 @@ export var Entry;
14
14
  Entry.Summary = EntrySummary;
15
15
  Entry.type = entryType;
16
16
  Entry.from = fromCreatable;
17
- function charge(charges = [], counterpart, capture) {
18
- return Account.Charge.evaluate(charges, counterpart, capture.amount[0], isoly.Currency.add(capture.amount[0], capture.amount[1], capture.fee.other[capture.amount[0]] ?? 0));
17
+ function charge(charges = [], counterpart, capture, preset) {
18
+ return Account.Charge.evaluate(charges, counterpart, capture.amount[0], isoly.Currency.add(capture.amount[0], capture.amount[1], capture.fee.other[capture.amount[0]] ?? 0), preset, capture.exchange);
19
19
  }
20
20
  Entry.charge = charge;
21
21
  })(Entry || (Entry = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Settlement/Entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,QAAQ,CAAA;AAG1C,MAAM,KAAW,KAAK,CAyBrB;AAzBD,WAAiB,KAAK;IAOP,eAAS,GAAG,cAAc,CAAA;IAC1B,YAAM,GAAG,WAAW,CAAA;IACpB,eAAS,GAAG,cAAc,CAAA;IAC1B,aAAO,GAAG,YAAY,CAAA;IACvB,UAAI,GAAG,SAAS,CAAA;IAChB,UAAI,GAAG,aAAa,CAAA;IACjC,SAAgB,MAAM,CACrB,UAA4B,EAAE,EAC9B,WAA0C,EAC1C,OAA0B;QAE1B,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAC7B,OAAO,EACP,WAAW,EACX,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACnG,CAAA;IACF,CAAC;IAXe,YAAM,SAWrB,CAAA;AACF,CAAC,EAzBgB,KAAK,KAAL,KAAK,QAyBrB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Settlement/Entry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAIvC,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,QAAQ,CAAA;AAG1C,MAAM,KAAW,KAAK,CA4BrB;AA5BD,WAAiB,KAAK;IAOP,eAAS,GAAG,cAAc,CAAA;IAC1B,YAAM,GAAG,WAAW,CAAA;IACpB,eAAS,GAAG,cAAc,CAAA;IAC1B,aAAO,GAAG,YAAY,CAAA;IACvB,UAAI,GAAG,SAAS,CAAA;IAChB,UAAI,GAAG,aAAa,CAAA;IACjC,SAAgB,MAAM,CACrB,UAA4B,EAAE,EAC9B,WAA0C,EAC1C,OAA0B,EAC1B,MAAe;QAEf,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAC7B,OAAO,EACP,WAAW,EACX,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACnG,MAAM,EACN,OAAO,CAAC,QAAQ,CAChB,CAAA;IACF,CAAC;IAde,YAAM,SAcrB,CAAA;AACF,CAAC,EA5BgB,KAAK,KAAL,KAAK,QA4BrB"}
@@ -1,4 +1,5 @@
1
1
  import { isoly } from "isoly";
2
+ import { Charge as AccountCharge } from "../Account/Charge";
2
3
  import type { Rule } from "../Rule";
3
4
  import { Exchange } from "./Exchange";
4
5
  export interface Amount {
@@ -11,10 +12,7 @@ export interface Amount {
11
12
  export declare namespace Amount {
12
13
  interface Charge {
13
14
  amount: number;
14
- type: "merchant" | "exchange";
15
- destination: {
16
- account: string;
17
- };
15
+ charge: AccountCharge;
18
16
  }
19
17
  namespace Charge {
20
18
  const type: import("isly/dist/cjs/object").IslyObject<Charge, object>;
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly";
2
2
  import { isly } from "isly";
3
+ import { Charge as AccountCharge } from "../Account/Charge";
3
4
  import { Exchange } from "./Exchange";
4
5
  export var Amount;
5
6
  (function (Amount) {
@@ -7,8 +8,7 @@ export var Amount;
7
8
  (function (Charge) {
8
9
  Charge.type = isly.object({
9
10
  amount: isly.number(),
10
- type: isly.string(["merchant", "exchange"]),
11
- destination: isly.object({ account: isly.string() }),
11
+ charge: AccountCharge.type,
12
12
  });
13
13
  function total(currency, charges = []) {
14
14
  return charges.reduce((r, c) => isoly.Currency.add(currency, r, c.amount), 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Amount.js","sourceRoot":"","sources":["../../../Transaction/Amount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASrC,MAAM,KAAW,MAAM,CA8CtB;AA9CD,WAAiB,MAAM;IAMtB,IAAiB,MAAM,CAStB;IATD,WAAiB,MAAM;QACT,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;SACpD,CAAC,CAAA;QACF,SAAgB,KAAK,CAAC,QAAwB,EAAE,UAAoB,EAAE;YACrE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAFe,YAAK,QAEpB,CAAA;IACF,CAAC,EATgB,MAAM,GAAN,aAAM,KAAN,aAAM,QAStB;IACY,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS;QACvC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACF,SAAgB,SAAS,CAAC,KAAiB,EAAE,OAAkB;QAC9D,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3G,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAA;QACJ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO;YACN,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;YAClD,MAAM,EAAE,CAAC;YACT,OAAO;YACP,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/G,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ;SACtE,CAAA;IACF,CAAC;IAZe,gBAAS,YAYxB,CAAA;IACD,SAAgB,MAAM,CACrB,QAAwB,EACxB,MAAc,EACd,MAAc,EACd,IAA6D;QAE7D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QACtE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACd,CAAC;IATe,aAAM,SASrB,CAAA;AACF,CAAC,EA9CgB,MAAM,KAAN,MAAM,QA8CtB"}
1
+ {"version":3,"file":"Amount.js","sourceRoot":"","sources":["../../../Transaction/Amount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASrC,MAAM,KAAW,MAAM,CA4CtB;AA5CD,WAAiB,MAAM;IAKtB,IAAiB,MAAM,CAQtB;IARD,WAAiB,MAAM;QACT,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS;YACvC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC1B,CAAC,CAAA;QACF,SAAgB,KAAK,CAAC,QAAwB,EAAE,UAAoB,EAAE;YACrE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9E,CAAC;QAFe,YAAK,QAEpB,CAAA;IACF,CAAC,EARgB,MAAM,GAAN,aAAM,KAAN,aAAM,QAQtB;IACY,WAAI,GAAG,IAAI,CAAC,MAAM,CAAS;QACvC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IACF,SAAgB,SAAS,CAAC,KAAiB,EAAE,OAAkB;QAC9D,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;YAC3G,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAA;QACJ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO;YACN,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM;YAClD,MAAM,EAAE,CAAC;YACT,OAAO;YACP,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;YAC/G,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,QAAQ;SACtE,CAAA;IACF,CAAC;IAZe,gBAAS,YAYxB,CAAA;IACD,SAAgB,MAAM,CACrB,QAAwB,EACxB,MAAc,EACd,MAAc,EACd,IAA6D;QAE7D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QACtE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACjE,OAAO,MAAM,CAAA;IACd,CAAC;IATe,aAAM,SASrB,CAAA;AACF,CAAC,EA5CgB,MAAM,KAAN,MAAM,QA4CtB"}
@@ -1,5 +1,6 @@
1
1
  import { isoly } from "isoly";
2
2
  import { Account } from "../Account";
3
+ import { Preset } from "../Card/Preset";
3
4
  import { Rail } from "../Rail";
4
5
  import { Amount } from "./Amount";
5
6
  import { Exchange } from "./Exchange";
@@ -26,6 +27,6 @@ export declare namespace Creatable {
26
27
  }
27
28
  namespace CardTransaction {
28
29
  const type: import("isly/dist/cjs/object").IslyObject<CardTransaction, Creatable>;
29
- function charge(charges: Account.Charge[], creatable: CardTransaction): Amount.Charge[];
30
+ function charge(charges: Account.Charge[], creatable: CardTransaction, preset?: Preset): Amount.Charge[];
30
31
  }
31
32
  }
@@ -21,8 +21,8 @@ export var Creatable;
21
21
  reference: isly.object({ reference: isly.string() }),
22
22
  approvalCode: isly.string().optional(),
23
23
  });
24
- function charge(charges, creatable) {
25
- return Account.Charge.evaluate(charges, creatable.counterpart, creatable.currency, creatable.amount);
24
+ function charge(charges, creatable, preset) {
25
+ return Account.Charge.evaluate(charges, creatable.counterpart, creatable.currency, creatable.amount, preset, creatable.exchange);
26
26
  }
27
27
  CardTransaction.charge = charge;
28
28
  })(CardTransaction = Creatable.CardTransaction || (Creatable.CardTransaction = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"Creatable.js","sourceRoot":"","sources":["../../../Transaction/Creatable.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,YAAY,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASrC,MAAM,KAAW,SAAS,CA4BzB;AA5BD,WAAiB,SAAS;IAEZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,WAAW,EAAE,IAAI,CAAC,KAAK,CAA8C,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtG,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IAQF,IAAiB,eAAe,CAW/B;IAXD,WAAiB,eAAe;QAClB,oBAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAkB;YAC1D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;YACxB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAC/C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3E,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAA;QACF,SAAgB,MAAM,CAAC,OAAyB,EAAE,SAA0B;YAC3E,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;QACrG,CAAC;QAFe,sBAAM,SAErB,CAAA;IACF,CAAC,EAXgB,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAW/B;AACF,CAAC,EA5BgB,SAAS,KAAT,SAAS,QA4BzB"}
1
+ {"version":3,"file":"Creatable.js","sourceRoot":"","sources":["../../../Transaction/Creatable.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,YAAY,CAAA;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASrC,MAAM,KAAW,SAAS,CAmCzB;AAnCD,WAAiB,SAAS;IAEZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;QAC1C,WAAW,EAAE,IAAI,CAAC,KAAK,CAA8C,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACtG,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;QACrB,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE;QAC1B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;KAClC,CAAC,CAAA;IAQF,IAAiB,eAAe,CAkB/B;IAlBD,WAAiB,eAAe;QAClB,oBAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAkB;YAC1D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpD,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;YACxB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;YAC/C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3E,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC,CAAA;QACF,SAAgB,MAAM,CAAC,OAAyB,EAAE,SAA0B,EAAE,MAAe;YAC5F,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAC7B,OAAO,EACP,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,MAAM,EAChB,MAAM,EACN,SAAS,CAAC,QAAQ,CAClB,CAAA;QACF,CAAC;QATe,sBAAM,SASrB,CAAA;IACF,CAAC,EAlBgB,eAAe,GAAf,yBAAe,KAAf,yBAAe,QAkB/B;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.564",
3
+ "version": "0.1.565",
4
4
  "description": "Library containing data model types and functions for the Pax2Pay Banking API.",
5
5
  "author": "Pax2Pay Ltd",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../Account/Charge.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AACjC,iCAA6B;AAC7B,+BAA2B;AAC3B,kCAA8B;AAO9B,IAAiB,MAAM,CA8CtB;AA9CD,WAAiB,MAAM;IAUtB,IAAiB,SAAS,CAUzB;IAVD,WAAiB,SAAS;QACZ,cAAI,GAAG,WAAI,CAAC,MAAM,CAAY;YAC1C,WAAW,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,EAAE,WAAI,CAAC,MAAM,EAAE;YACnB,OAAO,EAAE,WAAI,CAAC,MAAM,CAAC;gBACpB,EAAE,EAAE,WAAI,CAAC,MAAM,CAA6B;oBAC3C,SAAS,EAAE,WAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;iBACjD,CAAC;aACF,CAAC;SACF,CAAC,CAAA;IACH,CAAC,EAVgB,SAAS,GAAT,gBAAS,KAAT,gBAAS,QAUzB;IACY,WAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAS;QACjD,EAAE,EAAE,WAAI,CAAC,MAAM,EAAE;KACjB,CAAC,CAAA;IACF,SAAgB,aAAa,CAAC,SAAoB;QACjD,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,iBAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,CAAC;IAFe,oBAAa,gBAE5B,CAAA;IACD,SAAgB,QAAQ,CACvB,UAAoB,EAAE,EACtB,WAA0C,EAC1C,QAAwB,EACxB,MAAc;QAEd,MAAM,MAAM,GAAgC,EAAE,CAAA;QAC9C,KAAK,MAAM,MAAM,IAAI,OAAO;YAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACvG,MAAM,CAAC,IAAI,CAAC;oBACX,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;iBAC/D,CAAC,CAAA;QACJ,OAAO,MAAM,CAAA;IACd,CAAC;IAfe,eAAQ,WAevB,CAAA;IACD,SAAgB,GAAG,CAAC,OAAoC,EAAE,QAAwB;QACjF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,aAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5F,CAAC;IAFe,UAAG,MAElB,CAAA;AACF,CAAC,EA9CgB,MAAM,sBAAN,MAAM,QA8CtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../Account/Charge.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;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAO9B,MAAM,KAAW,MAAM,CA8CtB;AA9CD,WAAiB,MAAM;IAUtB,IAAiB,SAAS,CAUzB;IAVD,WAAiB,SAAS;QACZ,cAAI,GAAG,IAAI,CAAC,MAAM,CAAY;YAC1C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;gBACpB,EAAE,EAAE,IAAI,CAAC,MAAM,CAA6B;oBAC3C,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;iBACjD,CAAC;aACF,CAAC;SACF,CAAC,CAAA;IACH,CAAC,EAVgB,SAAS,GAAT,gBAAS,KAAT,gBAAS,QAUzB;IACY,WAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAS;QACjD,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE;KACjB,CAAC,CAAA;IACF,SAAgB,aAAa,CAAC,SAAoB;QACjD,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5D,CAAC;IAFe,oBAAa,gBAE5B,CAAA;IACD,SAAgB,QAAQ,CACvB,UAAoB,EAAE,EACtB,WAA0C,EAC1C,QAAwB,EACxB,MAAc;QAEd,MAAM,MAAM,GAAgC,EAAE,CAAA;QAC9C,KAAK,MAAM,MAAM,IAAI,OAAO;YAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACvG,MAAM,CAAC,IAAI,CAAC;oBACX,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;iBAC/D,CAAC,CAAA;QACJ,OAAO,MAAM,CAAA;IACd,CAAC;IAfe,eAAQ,WAevB,CAAA;IACD,SAAgB,GAAG,CAAC,OAAoC,EAAE,QAAwB;QACjF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5F,CAAC;IAFe,UAAG,MAElB,CAAA;AACF,CAAC,EA9CgB,MAAM,KAAN,MAAM,QA8CtB"}