@xyo-network/payment-payload-plugins 3.0.18 → 3.0.20

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 +1 @@
1
- {"version":3,"file":"FixedAmount.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/FixedAmount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAOpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,uBAAuB,4CAA0C,CAAA;AAC9E,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,WAAW,uBAAwB,SAAQ,YAAY,EAAE,YAAY;CAE1E;AAKD,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAA;AAKpG,eAAO,MAAM,mBAAmB,gDAAoE,CAAA;AAKpG,eAAO,MAAM,8BAA8B,kGAA+E,CAAA;AAK1H,eAAO,MAAM,2BAA2B,+FAA4E,CAAA"}
1
+ {"version":3,"file":"FixedAmount.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/FixedAmount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAOpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,uBAAuB,4CAA0C,CAAA;AAC9E,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,WAAW,uBAAwB,SAAQ,YAAY,EAAE,YAAY;CAAG;AAK9E,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAA;AAKpG,eAAO,MAAM,mBAAmB,gDAAoE,CAAA;AAKpG,eAAO,MAAM,8BAA8B,kGAA+E,CAAA;AAK1H,eAAO,MAAM,2BAA2B,+FAA4E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"FixedPercentage.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/FixedPercentage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAQpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,2BAA2B,gDAA8C,CAAA;AACtF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,WAAW,2BAA4B,SAAQ,YAAY;IAC/D,UAAU,EAAE,MAAM,CAAA;CAEnB;AAKD,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAA;AAKhH,eAAO,MAAM,uBAAuB,oDAA4E,CAAA;AAKhH,eAAO,MAAM,kCAAkC,sGAAuF,CAAA;AAKtI,eAAO,MAAM,+BAA+B,mGAAoF,CAAA"}
1
+ {"version":3,"file":"FixedPercentage.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/FixedPercentage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAQpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,2BAA2B,gDAA8C,CAAA;AACtF,MAAM,MAAM,2BAA2B,GAAG,OAAO,2BAA2B,CAAA;AAE5E,MAAM,WAAW,2BAA4B,SAAQ,YAAY;IAC/D,UAAU,EAAE,MAAM,CAAA;CACnB;AAKD,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAA;AAKhH,eAAO,MAAM,uBAAuB,oDAA4E,CAAA;AAKhH,eAAO,MAAM,kCAAkC,sGAAuF,CAAA;AAKtI,eAAO,MAAM,+BAA+B,mGAAoF,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { PayloadWithSources } from '@xyo-network/payload-model';
2
+ import type { AmountFields } from '../../../../Amount/index.ts';
3
+ import type { CouponFields } from '../types/index.ts';
4
+ export declare const FixedPriceCouponSchema: "network.xyo.payments.coupon.fixed.price";
5
+ export type FixedPriceCouponSchema = typeof FixedPriceCouponSchema;
6
+ export interface FixedPriceCouponFields extends CouponFields, AmountFields {
7
+ }
8
+ export type FixedPriceCoupon = PayloadWithSources<FixedPriceCouponFields, FixedPriceCouponSchema>;
9
+ export declare const isFixedPriceCoupon: (x?: unknown | null) => x is FixedPriceCoupon;
10
+ export declare const isFixedPriceCouponWithSources: (x?: unknown | null) => x is import("@xyo-network/payload-model").WithSources<FixedPriceCoupon>;
11
+ export declare const isFixedPriceCouponWithMeta: (x?: unknown | null) => x is import("@xyo-network/payload-model").WithMeta<FixedPriceCoupon>;
12
+ //# sourceMappingURL=FixedPrice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FixedPrice.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/FixedPrice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAOpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,eAAO,MAAM,sBAAsB,2CAAyC,CAAA;AAC5E,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,MAAM,WAAW,sBAAuB,SAAQ,YAAY,EAAE,YAAY;CAAI;AAK9E,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAA;AAKjG,eAAO,MAAM,kBAAkB,+CAAkE,CAAA;AAKjG,eAAO,MAAM,6BAA6B,iGAA6E,CAAA;AAKvH,eAAO,MAAM,0BAA0B,8FAA0E,CAAA"}
@@ -1,3 +1,4 @@
1
1
  export * from './FixedAmount.ts';
2
2
  export * from './FixedPercentage.ts';
3
+ export * from './FixedPrice.ts';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/Coupons/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,iBAAiB,CAAA"}
@@ -1,6 +1,6 @@
1
- import { type FixedAmountCoupon, type FixedPercentageCoupon } from './Coupons/index.ts';
2
- export type Coupon = FixedAmountCoupon | FixedPercentageCoupon;
3
- export declare const isCoupon: (x?: unknown | null) => x is FixedAmountCoupon | FixedPercentageCoupon;
4
- export declare const isCouponWithSources: (x?: unknown | null) => x is import("@xyo-network/payload-model").WithSources<FixedAmountCoupon> | import("@xyo-network/payload-model").WithSources<FixedPercentageCoupon>;
1
+ import { type FixedAmountCoupon, type FixedPercentageCoupon, type FixedPriceCoupon } from './Coupons/index.ts';
2
+ export type Coupon = FixedAmountCoupon | FixedPercentageCoupon | FixedPriceCoupon;
3
+ export declare const isCoupon: (x?: unknown | null) => x is FixedAmountCoupon | FixedPercentageCoupon | FixedPriceCoupon;
4
+ export declare const isCouponWithSources: (x?: unknown | null) => x is import("@xyo-network/payload-model").WithSources<FixedAmountCoupon> | import("@xyo-network/payload-model").WithSources<FixedPercentageCoupon> | import("@xyo-network/payload-model").WithSources<FixedPriceCoupon>;
5
5
  export declare const isCouponWithMeta: (x?: unknown | null) => x is import("@xyo-network/payload-model").WithMeta<FixedAmountCoupon> | import("@xyo-network/payload-model").WithMeta<FixedPercentageCoupon>;
6
6
  //# sourceMappingURL=Payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../../../../src/Discount/Payload/Coupon/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAGnD,MAAM,oBAAoB,CAAA;AAK3B,MAAM,MAAM,MAAM,GAAG,iBAAiB,GAAG,qBAAqB,CAAA;AAK9D,eAAO,MAAM,QAAQ,OAAQ,OAAO,GAAG,IAAI,mDAAyD,CAAA;AAKpG,eAAO,MAAM,mBAAmB,OAAQ,OAAO,GAAG,IAAI,uJAA+E,CAAA;AAKrI,eAAO,MAAM,gBAAgB,OAAQ,OAAO,GAAG,IAAI,iJAAyE,CAAA"}
1
+ {"version":3,"file":"Payload.d.ts","sourceRoot":"","sources":["../../../../../src/Discount/Payload/Coupon/Payload.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,gBAAgB,EAM1E,MAAM,oBAAoB,CAAA;AAK3B,MAAM,MAAM,MAAM,GAChB,iBAAiB,GACf,qBAAqB,GACrB,gBAAgB,CAAA;AAKpB,eAAO,MAAM,QAAQ,OAAQ,OAAO,GAAG,IAAI,sEAGjB,CAAA;AAK1B,eAAO,MAAM,mBAAmB,OAAQ,OAAO,GAAG,IAAI,4NAGjB,CAAA;AAKrC,eAAO,MAAM,gBAAgB,OAAQ,OAAO,GAAG,IAAI,iJAEZ,CAAA"}
@@ -1,5 +1,7 @@
1
+ import type { Hash } from '@xylabs/hex';
1
2
  import type { DurationFields } from '@xyo-network/xns-record-payload-plugins';
2
3
  export interface CouponFields extends DurationFields {
4
+ conditions?: Hash[];
3
5
  stackable?: boolean;
4
6
  }
5
7
  //# sourceMappingURL=CouponFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CouponFields.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/types/CouponFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AAK7E,MAAM,WAAW,YAAa,SAAQ,cAAc;IAIlD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
1
+ {"version":3,"file":"CouponFields.d.ts","sourceRoot":"","sources":["../../../../../../src/Discount/Payload/Coupon/types/CouponFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AAK7E,MAAM,WAAW,YAAa,SAAQ,cAAc;IAIlD,UAAU,CAAC,EAAE,IAAI,EAAE,CAAA;IAInB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
@@ -6,7 +6,7 @@ export declare const createEscrowIntent: (terms: EscrowTerms[], account: Account
6
6
  }>, import("@xyo-network/payload-model").WithMeta<{
7
7
  schema: string;
8
8
  } & import("@xyo-network/payload-model").PayloadFields>[], import("@xyo-network/payload-model").WithMeta<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
9
- details?: import(".store/@xylabs-object-npm-4.0.9-48347e4330/package").JsonValue;
9
+ details?: import(".store/@xylabs-object-npm-4.0.10-ecd4ae377a/package").JsonValue;
10
10
  message?: string;
11
11
  name?: string;
12
12
  query?: import("@xylabs/hex").Hash;
@@ -18,7 +18,7 @@ export declare const createEscrowIntentWithSecret: (terms: EscrowTerms, secret:
18
18
  }>, import("@xyo-network/payload-model").WithMeta<{
19
19
  schema: string;
20
20
  } & import("@xyo-network/payload-model").PayloadFields>[], import("@xyo-network/payload-model").WithMeta<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
21
- details?: import(".store/@xylabs-object-npm-4.0.9-48347e4330/package").JsonValue;
21
+ details?: import(".store/@xylabs-object-npm-4.0.10-ecd4ae377a/package").JsonValue;
22
22
  message?: string;
23
23
  name?: string;
24
24
  query?: import("@xylabs/hex").Hash;
@@ -244,9 +244,20 @@ var isFixedPercentageCoupon = isPayloadOfSchemaType4(FixedPercentageCouponSchema
244
244
  var isFixedPercentageCouponWithSources = isPayloadOfSchemaTypeWithSources4(FixedPercentageCouponSchema);
245
245
  var isFixedPercentageCouponWithMeta = isPayloadOfSchemaTypeWithMeta4(FixedPercentageCouponSchema);
246
246
 
247
+ // src/Discount/Payload/Coupon/Coupons/FixedPrice.ts
248
+ import {
249
+ isPayloadOfSchemaType as isPayloadOfSchemaType5,
250
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta5,
251
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources5
252
+ } from "@xyo-network/payload-model";
253
+ var FixedPriceCouponSchema = `${CouponSchema}.fixed.price`;
254
+ var isFixedPriceCoupon = isPayloadOfSchemaType5(FixedPriceCouponSchema);
255
+ var isFixedPriceCouponWithSources = isPayloadOfSchemaTypeWithSources5(FixedPriceCouponSchema);
256
+ var isFixedPriceCouponWithMeta = isPayloadOfSchemaTypeWithMeta5(FixedPriceCouponSchema);
257
+
247
258
  // src/Discount/Payload/Coupon/Payload.ts
248
- var isCoupon = (x) => isFixedAmountCoupon(x) || isFixedPercentageCoupon(x);
249
- var isCouponWithSources = (x) => isFixedAmountCouponWithSources(x) || isFixedPercentageCouponWithSources(x);
259
+ var isCoupon = (x) => isFixedAmountCoupon(x) || isFixedPercentageCoupon(x) || isFixedPriceCoupon(x);
260
+ var isCouponWithSources = (x) => isFixedAmountCouponWithSources(x) || isFixedPercentageCouponWithSources(x) || isFixedPriceCouponWithSources(x);
250
261
  var isCouponWithMeta = (x) => isFixedAmountCouponWithMeta(x) || isFixedPercentageCouponWithMeta(x);
251
262
 
252
263
  // src/Discount/Payload/Coupon/types/isStackable.ts
@@ -254,14 +265,14 @@ var isStackable = (x) => (x ?? { stackable: false })?.stackable;
254
265
 
255
266
  // src/Discount/Payload/Discount.ts
256
267
  import {
257
- isPayloadOfSchemaType as isPayloadOfSchemaType5,
258
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta5,
259
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources5
268
+ isPayloadOfSchemaType as isPayloadOfSchemaType6,
269
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta6,
270
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources6
260
271
  } from "@xyo-network/payload-model";
261
272
  var DiscountSchema = "network.xyo.payments.discount";
262
- var isDiscount = isPayloadOfSchemaType5(DiscountSchema);
263
- var isDiscountWithSources = isPayloadOfSchemaTypeWithSources5(DiscountSchema);
264
- var isDiscountWithMeta = isPayloadOfSchemaTypeWithMeta5(DiscountSchema);
273
+ var isDiscount = isPayloadOfSchemaType6(DiscountSchema);
274
+ var isDiscountWithSources = isPayloadOfSchemaTypeWithSources6(DiscountSchema);
275
+ var isDiscountWithMeta = isPayloadOfSchemaTypeWithMeta6(DiscountSchema);
265
276
 
266
277
  // src/Discount/Payload/NoDiscount.ts
267
278
  var NO_DISCOUNT = {
@@ -290,9 +301,9 @@ var getEscrowSecret = () => {
290
301
 
291
302
  // src/Escrow/Outcome.ts
292
303
  import {
293
- isPayloadOfSchemaType as isPayloadOfSchemaType6,
294
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta6,
295
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources6
304
+ isPayloadOfSchemaType as isPayloadOfSchemaType7,
305
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta7,
306
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources7
296
307
  } from "@xyo-network/payload-model";
297
308
 
298
309
  // src/Escrow/Schema.ts
@@ -300,20 +311,20 @@ var EscrowSchema = "network.xyo.escrow";
300
311
 
301
312
  // src/Escrow/Outcome.ts
302
313
  var EscrowOutcomeSchema = `${EscrowSchema}.outcome`;
303
- var isEscrowOutcome = isPayloadOfSchemaType6(EscrowOutcomeSchema);
304
- var isEscrowOutcomeWithSources = isPayloadOfSchemaTypeWithSources6(EscrowOutcomeSchema);
305
- var isEscrowOutcomeWithMeta = isPayloadOfSchemaTypeWithMeta6(EscrowOutcomeSchema);
314
+ var isEscrowOutcome = isPayloadOfSchemaType7(EscrowOutcomeSchema);
315
+ var isEscrowOutcomeWithSources = isPayloadOfSchemaTypeWithSources7(EscrowOutcomeSchema);
316
+ var isEscrowOutcomeWithMeta = isPayloadOfSchemaTypeWithMeta7(EscrowOutcomeSchema);
306
317
 
307
318
  // src/Escrow/Terms.ts
308
319
  import {
309
- isPayloadOfSchemaType as isPayloadOfSchemaType7,
310
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta7,
311
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources7
320
+ isPayloadOfSchemaType as isPayloadOfSchemaType8,
321
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta8,
322
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources8
312
323
  } from "@xyo-network/payload-model";
313
324
  var EscrowTermsSchema = `${EscrowSchema}.terms`;
314
- var isEscrowTerms = isPayloadOfSchemaType7(EscrowTermsSchema);
315
- var isEscrowTermsWithSources = isPayloadOfSchemaTypeWithSources7(EscrowTermsSchema);
316
- var isEscrowTermsWithMeta = isPayloadOfSchemaTypeWithMeta7(EscrowTermsSchema);
325
+ var isEscrowTerms = isPayloadOfSchemaType8(EscrowTermsSchema);
326
+ var isEscrowTermsWithSources = isPayloadOfSchemaTypeWithSources8(EscrowTermsSchema);
327
+ var isEscrowTermsWithMeta = isPayloadOfSchemaTypeWithMeta8(EscrowTermsSchema);
317
328
 
318
329
  // src/Escrow/validators/common/ModuleInstanceValidators/moduleInstanceValidators.ts
319
330
  var moduleIdentifiersContainsOneOf = (escrowTerms, propertyExpression, moduleIdentifiers, required = true) => {
@@ -624,9 +635,9 @@ var getSellerSecretSignedValidator = (dictionary) => {
624
635
 
625
636
  // src/Payment/Instrument/Card/Payload.ts
626
637
  import {
627
- isPayloadOfSchemaType as isPayloadOfSchemaType8,
628
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta8,
629
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources8
638
+ isPayloadOfSchemaType as isPayloadOfSchemaType9,
639
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta9,
640
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources9
630
641
  } from "@xyo-network/payload-model";
631
642
 
632
643
  // src/Payment/Schema.ts
@@ -639,92 +650,92 @@ var PaymentInstrumentSchema = `${PaymentSchema}.instrument`;
639
650
  var PaymentCardSchema = `${PaymentInstrumentSchema}.card`;
640
651
 
641
652
  // src/Payment/Instrument/Card/Payload.ts
642
- var isPaymentCard = isPayloadOfSchemaType8(PaymentCardSchema);
643
- var isPaymentCardWithSources = isPayloadOfSchemaTypeWithSources8(PaymentCardSchema);
644
- var isPaymentCardWithMeta = isPayloadOfSchemaTypeWithMeta8(PaymentCardSchema);
653
+ var isPaymentCard = isPayloadOfSchemaType9(PaymentCardSchema);
654
+ var isPaymentCardWithSources = isPayloadOfSchemaTypeWithSources9(PaymentCardSchema);
655
+ var isPaymentCardWithMeta = isPayloadOfSchemaTypeWithMeta9(PaymentCardSchema);
645
656
 
646
657
  // src/Payment/Payload.ts
647
658
  import {
648
- isPayloadOfSchemaType as isPayloadOfSchemaType9,
649
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta9,
650
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources9
659
+ isPayloadOfSchemaType as isPayloadOfSchemaType10,
660
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta10,
661
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources10
651
662
  } from "@xyo-network/payload-model";
652
- var isPayment = isPayloadOfSchemaType9(PaymentSchema);
653
- var isPaymentWithSources = isPayloadOfSchemaTypeWithSources9(PaymentSchema);
654
- var isPaymentWithMeta = isPayloadOfSchemaTypeWithMeta9(PaymentSchema);
663
+ var isPayment = isPayloadOfSchemaType10(PaymentSchema);
664
+ var isPaymentWithSources = isPayloadOfSchemaTypeWithSources10(PaymentSchema);
665
+ var isPaymentWithMeta = isPayloadOfSchemaTypeWithMeta10(PaymentSchema);
655
666
 
656
667
  // src/Payment/Status/Payload.ts
657
668
  import {
658
- isPayloadOfSchemaType as isPayloadOfSchemaType10,
659
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta10,
660
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources10
669
+ isPayloadOfSchemaType as isPayloadOfSchemaType11,
670
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta11,
671
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources11
661
672
  } from "@xyo-network/payload-model";
662
673
 
663
674
  // src/Payment/Status/Schema.ts
664
675
  var PaymentStatusSchema = `${PaymentSchema}.status`;
665
676
 
666
677
  // src/Payment/Status/Payload.ts
667
- var isPaymentStatus = isPayloadOfSchemaType10(PaymentStatusSchema);
668
- var isPaymentStatusWithSources = isPayloadOfSchemaTypeWithSources10(PaymentStatusSchema);
669
- var isPaymentStatusWithMeta = isPayloadOfSchemaTypeWithMeta10(PaymentStatusSchema);
678
+ var isPaymentStatus = isPayloadOfSchemaType11(PaymentStatusSchema);
679
+ var isPaymentStatusWithSources = isPayloadOfSchemaTypeWithSources11(PaymentStatusSchema);
680
+ var isPaymentStatusWithMeta = isPayloadOfSchemaTypeWithMeta11(PaymentStatusSchema);
670
681
 
671
682
  // src/Purchase/Payload.ts
672
683
  import {
673
- isPayloadOfSchemaType as isPayloadOfSchemaType11,
674
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta11,
675
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources11
684
+ isPayloadOfSchemaType as isPayloadOfSchemaType12,
685
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta12,
686
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources12
676
687
  } from "@xyo-network/payload-model";
677
688
 
678
689
  // src/Purchase/Schema.ts
679
690
  var PurchaseSchema = `${PaymentsSchema}.purchase`;
680
691
 
681
692
  // src/Purchase/Payload.ts
682
- var isPurchase = isPayloadOfSchemaType11(PurchaseSchema);
683
- var isPurchaseWithSources = isPayloadOfSchemaTypeWithSources11(PurchaseSchema);
684
- var isPurchaseWithMeta = isPayloadOfSchemaTypeWithMeta11(PurchaseSchema);
693
+ var isPurchase = isPayloadOfSchemaType12(PurchaseSchema);
694
+ var isPurchaseWithSources = isPayloadOfSchemaTypeWithSources12(PurchaseSchema);
695
+ var isPurchaseWithMeta = isPayloadOfSchemaTypeWithMeta12(PurchaseSchema);
685
696
 
686
697
  // src/Receipt/Payload.ts
687
698
  import {
688
- isPayloadOfSchemaType as isPayloadOfSchemaType12,
689
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta12,
690
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources12
699
+ isPayloadOfSchemaType as isPayloadOfSchemaType13,
700
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta13,
701
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources13
691
702
  } from "@xyo-network/payload-model";
692
703
 
693
704
  // src/Receipt/Schema.ts
694
705
  var ReceiptSchema = `${PaymentsSchema}.receipt`;
695
706
 
696
707
  // src/Receipt/Payload.ts
697
- var isReceipt = isPayloadOfSchemaType12(ReceiptSchema);
698
- var isReceiptWithSources = isPayloadOfSchemaTypeWithSources12(ReceiptSchema);
699
- var isReceiptWithMeta = isPayloadOfSchemaTypeWithMeta12(ReceiptSchema);
708
+ var isReceipt = isPayloadOfSchemaType13(ReceiptSchema);
709
+ var isReceiptWithSources = isPayloadOfSchemaTypeWithSources13(ReceiptSchema);
710
+ var isReceiptWithMeta = isPayloadOfSchemaTypeWithMeta13(ReceiptSchema);
700
711
 
701
712
  // src/Subtotal/Diviner/Config.ts
702
713
  var PaymentSubtotalDivinerConfigSchema = "network.xyo.diviner.payments.subtotal.config";
703
714
 
704
715
  // src/Subtotal/Diviner/Payload.ts
705
716
  import {
706
- isPayloadOfSchemaType as isPayloadOfSchemaType13,
707
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta13,
708
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources13
717
+ isPayloadOfSchemaType as isPayloadOfSchemaType14,
718
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta14,
719
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources14
709
720
  } from "@xyo-network/payload-model";
710
721
  var SubtotalSchema = "network.xyo.payments.subtotal";
711
- var isSubtotal = isPayloadOfSchemaType13(SubtotalSchema);
712
- var isSubtotalWithSources = isPayloadOfSchemaTypeWithSources13(SubtotalSchema);
713
- var isSubtotalWithMeta = isPayloadOfSchemaTypeWithMeta13(SubtotalSchema);
722
+ var isSubtotal = isPayloadOfSchemaType14(SubtotalSchema);
723
+ var isSubtotalWithSources = isPayloadOfSchemaTypeWithSources14(SubtotalSchema);
724
+ var isSubtotalWithMeta = isPayloadOfSchemaTypeWithMeta14(SubtotalSchema);
714
725
 
715
726
  // src/Total/Diviner/Config.ts
716
727
  var PaymentTotalDivinerConfigSchema = "network.xyo.diviner.payments.total.config";
717
728
 
718
729
  // src/Total/Diviner/Payload.ts
719
730
  import {
720
- isPayloadOfSchemaType as isPayloadOfSchemaType14,
721
- isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta14,
722
- isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources14
731
+ isPayloadOfSchemaType as isPayloadOfSchemaType15,
732
+ isPayloadOfSchemaTypeWithMeta as isPayloadOfSchemaTypeWithMeta15,
733
+ isPayloadOfSchemaTypeWithSources as isPayloadOfSchemaTypeWithSources15
723
734
  } from "@xyo-network/payload-model";
724
735
  var TotalSchema = "network.xyo.payments.total";
725
- var isTotal = isPayloadOfSchemaType14(TotalSchema);
726
- var isTotalWithSources = isPayloadOfSchemaTypeWithSources14(TotalSchema);
727
- var isTotalWithMeta = isPayloadOfSchemaTypeWithMeta14(TotalSchema);
736
+ var isTotal = isPayloadOfSchemaType15(TotalSchema);
737
+ var isTotalWithSources = isPayloadOfSchemaTypeWithSources15(TotalSchema);
738
+ var isTotalWithMeta = isPayloadOfSchemaTypeWithMeta15(TotalSchema);
728
739
  export {
729
740
  AmountSchema,
730
741
  BillingAddressSchema,
@@ -736,6 +747,7 @@ export {
736
747
  EscrowTermsSchema,
737
748
  FixedAmountCouponSchema,
738
749
  FixedPercentageCouponSchema,
750
+ FixedPriceCouponSchema,
739
751
  Iso4217CurrencyCodes,
740
752
  NO_DISCOUNT,
741
753
  PaymentCardSchema,
@@ -792,6 +804,9 @@ export {
792
804
  isFixedPercentageCoupon,
793
805
  isFixedPercentageCouponWithMeta,
794
806
  isFixedPercentageCouponWithSources,
807
+ isFixedPriceCoupon,
808
+ isFixedPriceCouponWithMeta,
809
+ isFixedPriceCouponWithSources,
795
810
  isIso4217CurrencyCode,
796
811
  isPayment,
797
812
  isPaymentCard,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Amount/Iso4217Currency.ts","../../src/Amount/Payload.ts","../../src/Billing/Address/Address.ts","../../src/Schema.ts","../../src/Billing/Schema.ts","../../src/Billing/Address/Schema.ts","../../src/Discount/Config.ts","../../src/Discount/Payload/Coupon/Coupons/FixedAmount.ts","../../src/Discount/Payload/Coupon/Schema.ts","../../src/Discount/Payload/Coupon/Coupons/FixedPercentage.ts","../../src/Discount/Payload/Coupon/Payload.ts","../../src/Discount/Payload/Coupon/types/isStackable.ts","../../src/Discount/Payload/Discount.ts","../../src/Discount/Payload/NoDiscount.ts","../../src/Escrow/createEscrowIntent.ts","../../src/Escrow/getEscrowSecret.ts","../../src/Escrow/Outcome.ts","../../src/Escrow/Schema.ts","../../src/Escrow/Terms.ts","../../src/Escrow/validators/common/ModuleInstanceValidators/moduleInstanceValidators.ts","../../src/Escrow/validators/common/TemporalValidators/validateWithinWindow.ts","../../src/Escrow/validators/escrow/agent.ts","../../src/Escrow/validators/escrow/appraisal.ts","../../src/Escrow/validators/escrow/appraisalAuthorities.ts","../../src/Escrow/validators/escrow/assets.ts","../../src/Escrow/validators/escrow/buyer.ts","../../src/Escrow/validators/escrow/buyerSecret.ts","../../src/Escrow/validators/escrow/nbfExp.ts","../../src/Escrow/validators/escrow/paymentAuthorities.ts","../../src/Escrow/validators/escrow/seller.ts","../../src/Escrow/validators/escrow/sellerSecret.ts","../../src/Payment/Instrument/Card/Payload.ts","../../src/Payment/Schema.ts","../../src/Payment/Instrument/Schema.ts","../../src/Payment/Instrument/Card/Schema.ts","../../src/Payment/Payload.ts","../../src/Payment/Status/Payload.ts","../../src/Payment/Status/Schema.ts","../../src/Purchase/Payload.ts","../../src/Purchase/Schema.ts","../../src/Receipt/Payload.ts","../../src/Receipt/Schema.ts","../../src/Subtotal/Diviner/Config.ts","../../src/Subtotal/Diviner/Payload.ts","../../src/Total/Diviner/Config.ts","../../src/Total/Diviner/Payload.ts"],"sourcesContent":["/* eslint-disable max-lines */\n/**\n * ISO 4217 currency codes\n */\nexport type Iso4217AlphabeticalCode =\n 'AED' |\n 'AFN' |\n 'ALL' |\n 'AMD' |\n 'ANG' |\n 'AOA' |\n 'ARS' |\n 'AUD' |\n 'AWG' |\n 'AZN' |\n 'BAM' |\n 'BBD' |\n 'BDT' |\n 'BGN' |\n 'BHD' |\n 'BIF' |\n 'BMD' |\n 'BND' |\n 'BOB' |\n 'BOV' |\n 'BRL' |\n 'BSD' |\n 'BTN' |\n 'BWP' |\n 'BYN' |\n 'BZD' |\n 'CAD' |\n 'CDF' |\n 'CHE' |\n 'CHF' |\n 'CHW' |\n 'CLF' |\n 'CLP' |\n 'CNY' |\n 'COP' |\n 'COU' |\n 'CRC' |\n 'CUP' |\n 'CVE' |\n 'CZK' |\n 'DJF' |\n 'DKK' |\n 'DOP' |\n 'DZD' |\n 'EGP' |\n 'ERN' |\n 'ETB' |\n 'EUR' |\n 'FJD' |\n 'FKP' |\n 'GBP' |\n 'GEL' |\n 'GHS' |\n 'GIP' |\n 'GMD' |\n 'GNF' |\n 'GTQ' |\n 'GYD' |\n 'HKD' |\n 'HNL' |\n 'HTG' |\n 'HUF' |\n 'IDR' |\n 'ILS' |\n 'INR' |\n 'IQD' |\n 'IRR' |\n 'ISK' |\n 'JMD' |\n 'JOD' |\n 'JPY' |\n 'KES' |\n 'KGS' |\n 'KHR' |\n 'KMF' |\n 'KPW' |\n 'KRW' |\n 'KWD' |\n 'KYD' |\n 'KZT' |\n 'LAK' |\n 'LBP' |\n 'LKR' |\n 'LRD' |\n 'LSL' |\n 'LYD' |\n 'MAD' |\n 'MDL' |\n 'MGA' |\n 'MKD' |\n 'MMK' |\n 'MNT' |\n 'MOP' |\n 'MRU' |\n 'MUR' |\n 'MVR' |\n 'MWK' |\n 'MXN' |\n 'MXV' |\n 'MYR' |\n 'MZN' |\n 'NAD' |\n 'NGN' |\n 'NIO' |\n 'NOK' |\n 'NPR' |\n 'NZD' |\n 'OMR' |\n 'PAB' |\n 'PEN' |\n 'PGK' |\n 'PHP' |\n 'PKR' |\n 'PLN' |\n 'PYG' |\n 'QAR' |\n 'RON' |\n 'RSD' |\n 'RUB' |\n 'RWF' |\n 'SAR' |\n 'SBD' |\n 'SCR' |\n 'SDG' |\n 'SEK' |\n 'SGD' |\n 'SHP' |\n 'SLE' |\n 'SOS' |\n 'SRD' |\n 'SSP' |\n 'STN' |\n 'SVC' |\n 'SYP' |\n 'SZL' |\n 'THB' |\n 'TJS' |\n 'TMT' |\n 'TND' |\n 'TOP' |\n 'TRY' |\n 'TTD' |\n 'TWD' |\n 'TZS' |\n 'UAH' |\n 'UGX' |\n 'USD' |\n 'USN' |\n 'UYI' |\n 'UYU' |\n 'UYW' |\n 'UZS' |\n 'VED' |\n 'VES' |\n 'VND' |\n 'VUV' |\n 'WST' |\n 'XAF' |\n 'XAG' |\n 'XAU' |\n 'XBA' |\n 'XBB' |\n 'XBC' |\n 'XBD' |\n 'XCD' |\n 'XDR' |\n 'XOF' |\n 'XPD' |\n 'XPF' |\n 'XPT' |\n 'XSU' |\n 'XTS' |\n 'XUA' |\n 'XXX' |\n 'YER' |\n 'ZAR' |\n 'ZMW' |\n 'ZWG' |\n 'ZWL'\n\n// TODO: Technically, the values should be 3 digit numbers with leading\n// zeros, so we can padStart if we need to be strict\n/**\n * ISO 4217 numeric currency number codes\n */\nexport type Iso4217NumericCode =\n 784 |\n 971 |\n 8 |\n 51 |\n 532 |\n 973 |\n 32 |\n 36 |\n 533 |\n 944 |\n 977 |\n 52 |\n 50 |\n 975 |\n 48 |\n 108 |\n 60 |\n 96 |\n 68 |\n 984 |\n 986 |\n 44 |\n 64 |\n 72 |\n 933 |\n 84 |\n 124 |\n 976 |\n 947 |\n 756 |\n 948 |\n 990 |\n 152 |\n 156 |\n 170 |\n 970 |\n 188 |\n 192 |\n 132 |\n 203 |\n 262 |\n 208 |\n 214 |\n 12 |\n 818 |\n 232 |\n 230 |\n 978 |\n 242 |\n 238 |\n 826 |\n 981 |\n 936 |\n 292 |\n 270 |\n 324 |\n 320 |\n 328 |\n 344 |\n 340 |\n 332 |\n 348 |\n 360 |\n 376 |\n 356 |\n 368 |\n 364 |\n 352 |\n 388 |\n 400 |\n 392 |\n 404 |\n 417 |\n 116 |\n 174 |\n 408 |\n 410 |\n 414 |\n 136 |\n 398 |\n 418 |\n 422 |\n 144 |\n 430 |\n 426 |\n 434 |\n 504 |\n 498 |\n 969 |\n 807 |\n 104 |\n 496 |\n 446 |\n 929 |\n 480 |\n 462 |\n 454 |\n 484 |\n 979 |\n 458 |\n 943 |\n 516 |\n 566 |\n 558 |\n 578 |\n 524 |\n 554 |\n 512 |\n 590 |\n 604 |\n 598 |\n 608 |\n 586 |\n 985 |\n 600 |\n 634 |\n 946 |\n 941 |\n 643 |\n 646 |\n 682 |\n 90 |\n 690 |\n 938 |\n 752 |\n 702 |\n 654 |\n 925 |\n 706 |\n 968 |\n 728 |\n 930 |\n 222 |\n 760 |\n 748 |\n 764 |\n 972 |\n 934 |\n 788 |\n 776 |\n 949 |\n 780 |\n 901 |\n 834 |\n 980 |\n 800 |\n 840 |\n 997 |\n 940 |\n 858 |\n 927 |\n 860 |\n 926 |\n 928 |\n 704 |\n 548 |\n 882 |\n 950 |\n 961 |\n 959 |\n 955 |\n 956 |\n 957 |\n 958 |\n 951 |\n 960 |\n 952 |\n 964 |\n 953 |\n 962 |\n 994 |\n 963 |\n 965 |\n 999 |\n 886 |\n 710 |\n 967 |\n 924 |\n 932\n\n/**\n * Dictionary of ISO 4217 alphabetical currency codes to numeric currency number codes\n */\nexport const Iso4217CurrencyCodes: Record<Iso4217AlphabeticalCode, Iso4217NumericCode> = {\n AED: 784,\n AFN: 971,\n ALL: 8,\n AMD: 51,\n ANG: 532,\n AOA: 973,\n ARS: 32,\n AUD: 36,\n AWG: 533,\n AZN: 944,\n BAM: 977,\n BBD: 52,\n BDT: 50,\n BGN: 975,\n BHD: 48,\n BIF: 108,\n BMD: 60,\n BND: 96,\n BOB: 68,\n BOV: 984,\n BRL: 986,\n BSD: 44,\n BTN: 64,\n BWP: 72,\n BYN: 933,\n BZD: 84,\n CAD: 124,\n CDF: 976,\n CHE: 947,\n CHF: 756,\n CHW: 948,\n CLF: 990,\n CLP: 152,\n CNY: 156,\n COP: 170,\n COU: 970,\n CRC: 188,\n CUP: 192,\n CVE: 132,\n CZK: 203,\n DJF: 262,\n DKK: 208,\n DOP: 214,\n DZD: 12,\n EGP: 818,\n ERN: 232,\n ETB: 230,\n EUR: 978,\n FJD: 242,\n FKP: 238,\n GBP: 826,\n GEL: 981,\n GHS: 936,\n GIP: 292,\n GMD: 270,\n GNF: 324,\n GTQ: 320,\n GYD: 328,\n HKD: 344,\n HNL: 340,\n HTG: 332,\n HUF: 348,\n IDR: 360,\n ILS: 376,\n INR: 356,\n IQD: 368,\n IRR: 364,\n ISK: 352,\n JMD: 388,\n JOD: 400,\n JPY: 392,\n KES: 404,\n KGS: 417,\n KHR: 116,\n KMF: 174,\n KPW: 408,\n KRW: 410,\n KWD: 414,\n KYD: 136,\n KZT: 398,\n LAK: 418,\n LBP: 422,\n LKR: 144,\n LRD: 430,\n LSL: 426,\n LYD: 434,\n MAD: 504,\n MDL: 498,\n MGA: 969,\n MKD: 807,\n MMK: 104,\n MNT: 496,\n MOP: 446,\n MRU: 929,\n MUR: 480,\n MVR: 462,\n MWK: 454,\n MXN: 484,\n MXV: 979,\n MYR: 458,\n MZN: 943,\n NAD: 516,\n NGN: 566,\n NIO: 558,\n NOK: 578,\n NPR: 524,\n NZD: 554,\n OMR: 512,\n PAB: 590,\n PEN: 604,\n PGK: 598,\n PHP: 608,\n PKR: 586,\n PLN: 985,\n PYG: 600,\n QAR: 634,\n RON: 946,\n RSD: 941,\n RUB: 643,\n RWF: 646,\n SAR: 682,\n SBD: 90,\n SCR: 690,\n SDG: 938,\n SEK: 752,\n SGD: 702,\n SHP: 654,\n SLE: 925,\n SOS: 706,\n SRD: 968,\n SSP: 728,\n STN: 930,\n SVC: 222,\n SYP: 760,\n SZL: 748,\n THB: 764,\n TJS: 972,\n TMT: 934,\n TND: 788,\n TOP: 776,\n TRY: 949,\n TTD: 780,\n TWD: 901,\n TZS: 834,\n UAH: 980,\n UGX: 800,\n USD: 840,\n USN: 997,\n UYI: 940,\n UYU: 858,\n UYW: 927,\n UZS: 860,\n VED: 926,\n VES: 928,\n VND: 704,\n VUV: 548,\n WST: 882,\n XAF: 950,\n XAG: 961,\n XAU: 959,\n XBA: 955,\n XBB: 956,\n XBC: 957,\n XBD: 958,\n XCD: 951,\n XDR: 960,\n XOF: 952,\n XPD: 964,\n XPF: 953,\n XPT: 962,\n XSU: 994,\n XTS: 963,\n XUA: 965,\n XXX: 999,\n YER: 886,\n ZAR: 710,\n ZMW: 967,\n ZWG: 924,\n ZWL: 932,\n}\n\nexport const isIso4217CurrencyCode = (code: string): code is Iso4217AlphabeticalCode => Iso4217CurrencyCodes[code as Iso4217AlphabeticalCode] ? true : false\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { Iso4217AlphabeticalCode } from './Iso4217Currency.ts'\n\nexport const AmountSchema = 'network.xyo.payments.amount' as const\nexport type AmountSchema = typeof AmountSchema\n\nexport interface AmountFields {\n amount: number\n currency: Iso4217AlphabeticalCode\n}\n\n/**\n * The result of a amount\n */\nexport type Amount = PayloadWithSources<AmountFields, AmountSchema>\n\n/**\n * Identity function for determining if an object is an Amount\n */\nexport const isAmount = isPayloadOfSchemaType<Amount>(AmountSchema)\n\n/**\n * Identity function for determining if an object is an Amount with sources\n */\nexport const isAmountWithSources = isPayloadOfSchemaTypeWithSources<Amount>(AmountSchema)\n\n/**\n * Identity function for determining if an object is an Amount with meta\n */\nexport const isAmountWithMeta = isPayloadOfSchemaTypeWithMeta<Amount>(AmountSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType, isPayloadOfSchemaTypeWithMeta, isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { BillingAddressSchema } from './Schema.ts'\n\n/**\n * The fields describing a billing address.\n */\nexport interface BillingAddressFields {\n /** Street address line 1. */\n address?: string\n /** Street address line 2. */\n address2?: string | null\n /** City of the billing address. */\n city?: string\n /** Country code of the billing address, ISO 3166-1 alpha-2 code. */\n country?: string\n /** First name */\n firstName: string\n /** Last name */\n lastName: string\n /** Organization or company name associated with the billing address. */\n organization?: string | null\n /** Postal or ZIP code of the billing address. */\n postalCode?: string\n /** State or region of the billing address. */\n region?: string\n}\n\n/**\n * A BillingAddress Payload\n */\nexport type BillingAddress = Payload<BillingAddressFields, BillingAddressSchema>\n\n/**\n * Identity function for determine if an object is a BillingAddress\n */\nexport const isBillingAddress = isPayloadOfSchemaType<BillingAddress>(BillingAddressSchema)\n\n/**\n * Identity function for determine if an object is a BillingAddress with sources\n */\nexport const isBillingAddressWithSources = isPayloadOfSchemaTypeWithSources<BillingAddress>(BillingAddressSchema)\n\n/**\n * Identity function for determine if an object is a BillingAddress with meta\n */\nexport const isBillingAddressWithMeta = isPayloadOfSchemaTypeWithMeta<BillingAddress>(BillingAddressSchema)\n","export const PaymentsSchema = 'network.xyo.payments'\nexport type PaymentsSchema = typeof PaymentsSchema\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const BillingSchema = `${PaymentsSchema}.billing`\nexport type BillingSchema = typeof BillingSchema\n","import { BillingSchema } from '../Schema.ts'\n\nexport const BillingAddressSchema = `${BillingSchema}.address`\nexport type BillingAddressSchema = typeof BillingAddressSchema\n","// import type { Hash } from '@xylabs/hex'\nimport type { Address } from '@xylabs/hex'\nimport type { DivinerConfig } from '@xyo-network/diviner-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport const PaymentDiscountDivinerConfigSchema = 'network.xyo.diviner.payments.discount.config'\nexport type PaymentDiscountDivinerConfigSchema = typeof PaymentDiscountDivinerConfigSchema\n\n/**\n * The configuration for the Payment Discount Diviner\n */\nexport type PaymentDiscountDivinerConfig = DivinerConfig<\n {\n /**\n * The boundwitness diviner used to query for payloads\n */\n boundWitnessDiviner?: ModuleIdentifier\n /**\n * The list of coupon authorities that can be used to get a discount\n */\n couponAuthorities?: Address[]\n\n // /**\n // * The list of coupons that are supported by this diviner\n // */\n // supportedCoupons?: Hash[]\n\n /**\n * The Diviner that can be used to determine the subtotal to apply discounts to\n */\n paymentSubtotalDiviner?: ModuleIdentifier\n },\n PaymentDiscountDivinerConfigSchema\n>\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../../../Amount/index.ts'\nimport { CouponSchema } from '../Schema.ts'\nimport type { CouponFields } from '../types/index.ts'\n\nexport const FixedAmountCouponSchema = `${CouponSchema}.fixed.amount` as const\nexport type FixedAmountCouponSchema = typeof FixedAmountCouponSchema\n\nexport interface FixedAmountCouponFields extends CouponFields, AmountFields {\n\n}\n\n/**\n * A coupon that provides a fixed discount amount\n */\nexport type FixedAmountCoupon = PayloadWithSources<FixedAmountCouponFields, FixedAmountCouponSchema>\n\n/**\n * Identity function for determining if an object is an FixedAmountCoupon\n */\nexport const isFixedAmountCoupon = isPayloadOfSchemaType<FixedAmountCoupon>(FixedAmountCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedAmountCoupon with sources\n */\nexport const isFixedAmountCouponWithSources = isPayloadOfSchemaTypeWithSources<FixedAmountCoupon>(FixedAmountCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedAmountCoupon with meta\n */\nexport const isFixedAmountCouponWithMeta = isPayloadOfSchemaTypeWithMeta<FixedAmountCoupon>(FixedAmountCouponSchema)\n","export const CouponSchema = 'network.xyo.payments.coupon' as const\nexport type CouponSchema = typeof CouponSchema\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { CouponSchema } from '../Schema.ts'\nimport type { CouponFields } from '../types/index.ts'\n\nexport const FixedPercentageCouponSchema = `${CouponSchema}.fixed.percentage` as const\nexport type FixedPercentageCouponSchema = typeof FixedPercentageCouponSchema\n\nexport interface FixedPercentageCouponFields extends CouponFields {\n percentage: number\n\n}\n\n/**\n * A coupon that provides a fixed discount amount\n */\nexport type FixedPercentageCoupon = PayloadWithSources<FixedPercentageCouponFields, FixedPercentageCouponSchema>\n\n/**\n * Identity function for determining if an object is an FixedPercentageCoupon\n */\nexport const isFixedPercentageCoupon = isPayloadOfSchemaType<FixedPercentageCoupon>(FixedPercentageCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedPercentageCoupon with sources\n */\nexport const isFixedPercentageCouponWithSources = isPayloadOfSchemaTypeWithSources<FixedPercentageCoupon>(FixedPercentageCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedPercentageCoupon with meta\n */\nexport const isFixedPercentageCouponWithMeta = isPayloadOfSchemaTypeWithMeta<FixedPercentageCoupon>(FixedPercentageCouponSchema)\n","import {\n type FixedAmountCoupon, type FixedPercentageCoupon, isFixedAmountCoupon, isFixedAmountCouponWithMeta, isFixedAmountCouponWithSources, isFixedPercentageCoupon,\n isFixedPercentageCouponWithMeta,\n isFixedPercentageCouponWithSources,\n} from './Coupons/index.ts'\n\n/**\n * The result of a discount\n */\nexport type Coupon = FixedAmountCoupon | FixedPercentageCoupon\n\n/**\n * Identity function for determining if an object is an Coupon\n */\nexport const isCoupon = (x?: unknown | null) => isFixedAmountCoupon(x) || isFixedPercentageCoupon(x)\n\n/**\n * Identity function for determining if an object is an Coupon with sources\n */\nexport const isCouponWithSources = (x?: unknown | null) => isFixedAmountCouponWithSources(x) || isFixedPercentageCouponWithSources(x)\n\n/**\n * Identity function for determining if an object is an Coupon with meta\n */\nexport const isCouponWithMeta = (x?: unknown | null) => isFixedAmountCouponWithMeta(x) || isFixedPercentageCouponWithMeta(x)\n","import type { CouponFields } from './CouponFields.ts'\n\n/**\n * Identity function for determining if coupon is stackable\n */\nexport const isStackable = (x?: unknown | null) => (x as CouponFields ?? { stackable: false })?.stackable\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../Amount/index.ts'\n\nexport const DiscountSchema = 'network.xyo.payments.discount' as const\nexport type DiscountSchema = typeof DiscountSchema\n\nexport interface DiscountFields extends AmountFields { }\n\n/**\n * The result of a discount\n */\nexport type Discount = PayloadWithSources<DiscountFields, DiscountSchema>\n\n/**\n * Identity function for determining if an object is an Discount\n */\nexport const isDiscount = isPayloadOfSchemaType<Discount>(DiscountSchema)\n\n/**\n * Identity function for determining if an object is an Discount with sources\n */\nexport const isDiscountWithSources = isPayloadOfSchemaTypeWithSources<Discount>(DiscountSchema)\n\n/**\n * Identity function for determining if an object is an Discount with meta\n */\nexport const isDiscountWithMeta = isPayloadOfSchemaTypeWithMeta<Discount>(DiscountSchema)\n","import type { Discount } from './Discount.ts'\nimport { DiscountSchema } from './Discount.ts'\n\nexport const NO_DISCOUNT: Discount = {\n schema: DiscountSchema,\n amount: 0,\n currency: 'USD',\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { IdPayload } from '@xyo-network/id-payload-plugin'\n\nimport type { EscrowTerms } from './Terms.ts'\n\n/**\n * Creates an escrow intent\n * @deprecated Use createEscrowIntentWithSecret instead\n * @param terms The payloads describing the terms for the escrow\n * @param account The account to create the escrow intent with\n * @returns The escrow intent\n */\nexport const createEscrowIntent = async (terms: EscrowTerms[], account: AccountInstance) => {\n const result = await new BoundWitnessBuilder({ accounts: [account] }).payloads([...terms]).build()\n return result\n}\n\n/**\n * Creates an escrow intent (for a buyer or seller) using the supplied secret\n * @param terms The payload describing the terms for the escrow\n * @param secret The secret for the escrow principal party to use for the escrow\n * @param account The account to create the escrow intent with\n * @returns The escrow intent\n */\nexport const createEscrowIntentWithSecret = async (terms: EscrowTerms, secret: IdPayload, account: AccountInstance) => {\n const result = await new BoundWitnessBuilder({ accounts: [account] }).payloads([terms, secret]).build()\n return result\n}\n","import { Crypto } from '@xylabs/crypto'\nimport type { IdPayload } from '@xyo-network/id-payload-plugin'\nimport { IdSchema } from '@xyo-network/id-payload-plugin'\n\n/**\n * Returns a cryptographically random secret to use for escrow\n * @returns The escrow secret\n */\nexport const getEscrowSecret = (): IdPayload => {\n return { salt: Crypto.randomUUID(), schema: IdSchema }\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { EscrowSchema } from './Schema.ts'\n\nexport const EscrowOutcomeSchema = `${EscrowSchema}.outcome` as const\nexport type EscrowOutcomeSchema = typeof EscrowOutcomeSchema\n\n/**\n * The possible outcomes for an escrow\n */\nexport type EscrowOutcomes = 'fulfilled' | 'expired' // TODO: More outcomes\n\nexport interface EscrowOutcomeFields {\n outcome: EscrowOutcomes\n terms: Hash\n}\n\n/**\n * The terms of an escrow\n */\nexport type EscrowOutcome = PayloadWithSources<EscrowOutcomeFields, EscrowOutcomeSchema>\n\n/**\n * Identity function for determining if an object is an EscrowOutcome\n */\nexport const isEscrowOutcome = isPayloadOfSchemaType<EscrowOutcome>(EscrowOutcomeSchema)\n\n/**\n * Identity function for determining if an object is an EscrowOutcome with sources\n */\nexport const isEscrowOutcomeWithSources = isPayloadOfSchemaTypeWithSources<EscrowOutcome>(EscrowOutcomeSchema)\n\n/**\n * Identity function for determining if an object is an EscrowOutcome with meta\n */\nexport const isEscrowOutcomeWithMeta = isPayloadOfSchemaTypeWithMeta<EscrowOutcome>(EscrowOutcomeSchema)\n","export const EscrowSchema = 'network.xyo.escrow'\nexport type EscrowSchema = typeof EscrowSchema\n","import type { Address, Hash } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType, isPayloadOfSchemaTypeWithMeta, isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { EscrowSchema } from './Schema.ts'\n\nexport const EscrowTermsSchema = `${EscrowSchema}.terms` as const\nexport type EscrowTermsSchema = typeof EscrowTermsSchema\n\n// TODO: Include escrow agent in escrow terms\nexport interface EscrowTermsFields {\n /**\n * The trusted estimators for the worth of the things being sold\n */\n appraisalAuthorities: Address[]\n /**\n * The estimated worths of the things being sold\n */\n appraisals: Hash[]\n /**\n * The things being sold\n */\n assets: Hash[]\n /**\n * The buyer\n */\n buyer: Address[]\n /**\n * The buyer\n */\n buyerSecret: Hash\n /**\n * Any discounts (coupons, vouchers, credits, etc.) to be applied to the escrow\n */\n discounts: Hash[]\n /**\n * The escrow agent responsible for the escrow\n */\n escrowAgent: Address\n /**\n * The time the escrow expires\n */\n exp: number\n /**\n * The time the escrow starts\n */\n nbf: number\n /**\n * The trusted payment authorities\n */\n paymentAuthorities: Address[]\n /**\n * The seller\n */\n seller: Address[]\n /**\n * The seller\n */\n sellerSecret: Hash\n}\n\n/**\n * The terms of an escrow\n */\nexport type EscrowTerms = Payload<Partial<EscrowTermsFields>, EscrowTermsSchema>\n\n/**\n * Identity function for determining if an object is an EscrowTerms\n */\nexport const isEscrowTerms = isPayloadOfSchemaType<EscrowTerms>(EscrowTermsSchema)\n\n/**\n * Identity function for determining if an object is an EscrowTerms with sources\n */\nexport const isEscrowTermsWithSources = isPayloadOfSchemaTypeWithSources<EscrowTerms>(EscrowTermsSchema)\n\n/**\n * Identity function for determining if an object is an EscrowTerms with meta\n */\nexport const isEscrowTermsWithMeta = isPayloadOfSchemaTypeWithMeta<EscrowTerms>(EscrowTermsSchema)\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValueExpression } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../../Terms.ts'\n\n/**\n * Checks if property value of the escrow terms contains one of the valid moduleIdentifiers\n * @param escrowTerms The escrow terms to validate\n * @param propertyExpression The selector to get the property containing the moduleIdentifier(s) from the escrow terms\n * @param moduleIdentifiers The list of allowed moduleIdentifiers\n * @param required Is the property required to be present\n * @returns True if the property value contains one of the valid moduleIdentifiers\n */\nexport const moduleIdentifiersContainsOneOf = (\n escrowTerms: EscrowTerms,\n propertyExpression: PayloadValueExpression<EscrowTerms, 'appraisalAuthorities' | 'buyer' | 'escrowAgent' | 'paymentAuthorities' | 'seller'>,\n moduleIdentifiers: ModuleIdentifier[],\n required: boolean = true,\n) => {\n const termsValue: string | string[] | undefined = propertyExpression(escrowTerms)\n if (termsValue === undefined) {\n return required ? false : true\n } else {\n return Array.isArray(termsValue) ? termsValue.some(address => moduleIdentifiers.includes(address)) : moduleIdentifiers.includes(termsValue)\n }\n}\n\n/**\n * Checks if property value of the escrow terms contains all of the valid moduleIdentifiers\n * @param escrowTerms The escrow terms to validate\n * @param selector The selector to get the property containing the moduleIdentifier(s) from the escrow terms\n * @param moduleIdentifiers The list of allowed moduleIdentifiers\n * @param required Is the property required to be present\n * @returns True if the property value contains all of the valid moduleIdentifiers\n */\nexport const moduleIdentifiersContainsAllOf = (\n escrowTerms: EscrowTerms,\n selector: PayloadValueExpression<EscrowTerms, 'appraisalAuthorities' | 'buyer' | 'escrowAgent' | 'paymentAuthorities' | 'seller'>,\n moduleIdentifiers: ModuleIdentifier[],\n required: boolean = true,\n) => {\n const termsValue: string | string[] | undefined = selector(escrowTerms)\n if (termsValue === undefined) {\n return required ? false : true\n } else {\n return Array.isArray(termsValue) ? termsValue.every(address => moduleIdentifiers.includes(address)) : moduleIdentifiers.includes(termsValue)\n }\n}\n","export type Windowed = { exp?: number; nbf?: number }\n\nexport const validateWithinWindow = (value: Windowed, exp: number, nbf: number = Date.now()): boolean => {\n if (value.nbf === undefined || value.nbf > nbf) return false\n if (value.exp === undefined || value.exp < exp) return false\n return true\n}\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { moduleIdentifiersContainsOneOf } from '../common/index.ts'\n\nconst name = 'EscrowTerms.escrowAgent'\n\nexport const getEscrowAgentAllowedValidator = (allowedEscrowAgent: ModuleIdentifier): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const result = moduleIdentifiersContainsOneOf(terms, t => t.escrowAgent, [allowedEscrowAgent], true)\n if (!result) {\n console.log(`${name}: Escrow agent not allowed: ${terms.escrowAgent}`)\n }\n return result\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport type { HashLeaseEstimate } from '@xyo-network/diviner-hash-lease'\nimport { isHashLeaseEstimateWithSources } from '@xyo-network/diviner-hash-lease'\nimport type {\n Payload, PayloadValidationFunction, WithMeta, WithSources,\n} from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { validateWithinWindow } from '../common/index.ts'\n\nconst name = 'EscrowTerms.appraisal'\n\n/**\n * A function that validates the escrow terms for tbe existence of appraisals\n * @returns True if the escrow terms contain appraisals, false otherwise\n */\nexport const appraisalsExistValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have appraisals\n const appraisals = terms.appraisals\n if (!appraisals || appraisals.length === 0) {\n console.log(`${name}: No appraisals: ${terms.appraisals}`)\n return false\n }\n return true\n}\n\n/**\n * Returns a function that validates the escrow terms for appraisals which are from valid authorities\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for appraisals which are from valid authorities\n */\nexport const getAppraisalsFromValidAuthoritiesValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const appraisals = assertEx(terms.appraisals, () => `${name}: No appraisals: ${terms.appraisals}`)\n const appraisalAuthorities = assertEx(terms.appraisalAuthorities, () => `${name}: No appraisalAuthorities: ${terms.appraisalAuthorities}`)\n\n // Validate the appraisals are signed by valid appraisal authorities. Validation criteria:\n // - We have a bw for each of the appraisal\n // - The bw is signed by an approved appraisal authority\n const appraisalBWsValid: Record<Hash, WithMeta<BoundWitness>[]> = Object.fromEntries(\n appraisals.map<[Hash, WithMeta<BoundWitness>[]]>(hash => [hash, []]),\n )\n for (const bw of Object.values(dictionary).filter(isBoundWitnessWithMeta)) {\n for (const appraisal of appraisals) {\n if (bw.payload_hashes.includes(appraisal) && bw.addresses.some(address => appraisalAuthorities.includes(address))) {\n appraisalBWsValid[appraisal].push(bw)\n }\n }\n }\n for (const [appraisal, bws] of Object.entries(appraisalBWsValid)) {\n if (bws.length === 0) {\n console.log(`${name}: No valid appraisals for ${appraisal}`)\n return false\n }\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms for appraisals which are valid\n * @param dictionary Payload dictionary of the escrow terms\n * @param minimumExp The minium amount of time an estimate needs to be valid\n * for in the future (so as not to expire before the escrow is complete)\n * @returns A function that validates the escrow terms for appraisals which are valid\n */\nexport const getAppraisalsValidValidator = (\n dictionary: Record<Hash, WithMeta<Payload>>,\n minimumExp: number,\n): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n // Verify we have an estimate for each of the assets\n const estimatesByAsset = getEstimatesByAsset(terms, dictionary)\n // Validate each of the estimates are valid (time, price, etc)\n const now = Date.now()\n const exp = now + minimumExp\n for (const [asset, estimates] of Object.entries(estimatesByAsset)) {\n for (const estimate of estimates) {\n if (!validateEstimate(estimate, exp)) {\n console.log(`${name}: Invalid estimate for asset ${asset}: ${estimate}`)\n return false\n }\n }\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms to ensure that they contain an appraisal for each asset\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for appraisals\n */\nexport const getAppraisalsForAllAssetsValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n // Verify we have an estimate for each of the assets\n const estimatesByAsset = getEstimatesByAsset(terms, dictionary)\n const assets = assertEx(terms.assets, () => `${name}: No assets: ${terms.assets}`)\n if (Object.keys(estimatesByAsset).length !== assets.length) {\n console.log(`${name}: Missing appraisals for all assets: ${assets}`)\n return false\n }\n return true\n }\n}\n\nconst validateEstimate = (estimate: WithSources<HashLeaseEstimate>, exp: number): boolean => {\n if (!validateWithinWindow(estimate, exp)) return false\n if (estimate.currency !== 'USD') return false\n if (estimate.price <= 0) return false\n return true\n}\n\nconst getEstimatesByAsset = (terms: EscrowTerms, dictionary: Record<Hash, WithMeta<Payload>>): Record<Hash, WithSources<HashLeaseEstimate>[]> => {\n const assets = assertEx(terms.assets, () => `${name}: No assets: ${terms.assets}`)\n const estimates = Object.values(dictionary).filter(isHashLeaseEstimateWithSources) as unknown as WithSources<HashLeaseEstimate>[]\n const estimatesByAsset: Record<Hash, WithSources<HashLeaseEstimate>[]> = {}\n for (const estimate of estimates) {\n const { sources } = estimate\n if (sources === undefined || sources.length === 0) {\n console.log(`${name}: No sources: ${estimate}`)\n continue\n }\n for (const asset of assets) {\n if (sources.includes(asset)) {\n if (!estimatesByAsset[asset]) estimatesByAsset[asset] = []\n estimatesByAsset[asset].push(estimate)\n }\n }\n }\n return estimatesByAsset\n}\n","import { asAddress } from '@xylabs/hex'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { moduleIdentifiersContainsAllOf } from '../common/index.ts'\n\nconst name = 'EscrowTerms.appraisalAuthorities'\n\n/**\n * A function that validates the escrow terms for appraisalAuthorities\n * @returns True if the escrow terms contain appraisalAuthorities, false otherwise\n */\nexport const appraisalAuthoritiesExistValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have appraisalAuthorities\n const appraisalAuthorities = terms.appraisalAuthorities\n if (!appraisalAuthorities || appraisalAuthorities.length === 0) {\n console.log(`${name}: No appraisalAuthorities: ${terms.appraisalAuthorities}`)\n return false\n }\n // Validate the authorities are addresses\n if (appraisalAuthorities.map(x => asAddress(x)).length !== appraisalAuthorities.length) {\n console.log(`${name}: Invalid address: ${terms.appraisalAuthorities}`)\n return false\n }\n return true\n}\n\nexport const getAppraisalAuthoritiesAllowedValidator = (allowed: ModuleIdentifier[]): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const result = moduleIdentifiersContainsAllOf(terms, t => t.appraisalAuthorities, allowed, true)\n if (!result) {\n console.log(`${name}: Appraisal authority not allowed: ${terms.appraisalAuthorities}`)\n }\n return result\n }\n}\n","import type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.assets'\n\n/**\n * Returns a function that validates the escrow terms for assets\n * @returns A function that validates the escrow terms for assets\n */\nexport const assetsExistValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have assets\n const assets = terms.assets\n if (!assets || assets.length === 0) {\n console.log(`${name}: No assets: ${terms.assets}`)\n return false\n }\n return true\n}\n","import { asAddress } from '@xylabs/hex'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.buyer'\n\n/**\n * A function that validates the escrow terms for buyer\n * @returns True if the escrow terms contain buyer, false otherwise\n */\nexport const buyerExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have buyer\n const buyer = terms.buyer\n if (!buyer || buyer.length === 0) {\n console.log(`${name}: No buyer: ${terms.buyer}`)\n return false\n }\n // Validate the authorities are addresses\n if (buyer.map(x => asAddress(x)).length !== buyer.length) {\n console.log(`${name}: Invalid address: ${terms.buyer}`)\n return false\n }\n return true\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type {\n Payload, PayloadValidationFunction, WithMeta,\n} from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.buyerSecret'\n\n/**\n * Returns a function that validates the escrow terms for buyerSecret\n * @returns A function that validates the escrow terms for buyerSecret\n */\nexport const buyerSecretExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have buyerSecret\n const buyerSecret = terms.buyerSecret\n if (!buyerSecret || buyerSecret.length === 0) {\n console.log(`${name}: No buyerSecret: ${terms.buyerSecret}`)\n return false\n }\n return true\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the buyerSecret in the dictionary\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the buyerSecret in the dictionary\n */\nexport const getBuyerSecretSuppliedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const buyerSecret = assertEx(terms.buyerSecret, () => `${name}: No buyerSecret: ${terms.buyerSecret}`)\n if (!dictionary[buyerSecret]) {\n console.log(`${name}: Payload not supplied for buyerSecret: ${buyerSecret}`)\n return false\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the buyerSecret signed by the buyer\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the buyerSecret signed by the buyer\n */\nexport const getBuyerSecretSignedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return async (terms: EscrowTerms) => {\n const buyer = assertEx(terms.buyer, () => `${name}: No buyer: ${terms.buyer}`)\n const buyerSecret = assertEx(terms.buyerSecret, () => `${name}: No buyerSecret: ${terms.buyerSecret}`)\n // Buyer-signed buyer secrets\n const buyerSecretBWs = Object.values(dictionary)\n // Find all BoundWitnesses\n .filter(isBoundWitnessWithMeta)\n // That contain the buyer secret\n .filter(bw => bw.payload_hashes.includes(buyerSecret))\n // That are signed by all the buyers\n .filter(bw => buyer.every(buyerAddress => bw.addresses.includes(buyerAddress)))\n\n // If there are no buyerSecret BWs, return false\n if (buyerSecretBWs.length === 0) {\n console.log(`${name}: No BoundWitnesses supplied for buyerSecret: ${buyerSecret}`)\n return false\n }\n\n // Ensure each BW supplied for the buyerSecret is valid\n const errors = await Promise.all(buyerSecretBWs.map(bw => new BoundWitnessValidator(bw).validate()))\n const validBoundWitnesses = errors.every(errors => errors.length === 0)\n if (!validBoundWitnesses) {\n console.log(`${name}: Invalid BoundWitnesses supplied for buyerSecret: ${buyerSecret}`)\n return false\n }\n return true\n }\n}\n","import type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nexport const getNbfExpValidator = (now: number, minRequiredDuration: number): PayloadValidationFunction<EscrowTerms> => {\n const minExp = now + minRequiredDuration\n return (terms: EscrowTerms) => {\n const { exp, nbf } = terms\n if (nbf === undefined || nbf < now) {\n console.log(`EscrowTerms.nbf: invalid nbf ${terms.nbf}`)\n return false\n }\n if (exp === undefined || exp < minExp || nbf > exp) {\n console.log(`EscrowTerms.exp: invalid exp ${terms.exp}`)\n return false\n }\n return true\n }\n}\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { moduleIdentifiersContainsAllOf } from '../common/index.ts'\n\nconst name = 'EscrowTerms.paymentAuthorities'\n\nexport const getPaymentAuthoritiesAllowedValidator = (allowed: ModuleIdentifier[]): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const result = moduleIdentifiersContainsAllOf(terms, t => t.paymentAuthorities, allowed, true)\n if (!result) {\n console.log(`${name}: Payment authority not allowed: ${terms.paymentAuthorities}`)\n }\n return result\n }\n}\n","import { asAddress } from '@xylabs/hex'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.seller'\n\n/**\n * A function that validates the escrow terms for seller\n * @returns True if the escrow terms contain seller, false otherwise\n */\nexport const sellerExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have seller\n const seller = terms.seller\n if (!seller || seller.length === 0) {\n console.log(`${name}: No seller: ${terms.seller}`)\n return false\n }\n // Validate the authorities are addresses\n if (seller.map(x => asAddress(x)).length !== seller.length) {\n console.log(`${name}: Invalid address: ${terms.seller}`)\n return false\n }\n return true\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type {\n Payload, PayloadValidationFunction, WithMeta,\n} from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.sellerSecret'\n\n/**\n * Returns a function that validates the escrow terms for sellerSecret\n * @returns A function that validates the escrow terms for sellerSecret\n */\nexport const sellerSecretExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have sellerSecret\n const sellerSecret = terms.sellerSecret\n if (!sellerSecret || sellerSecret.length === 0) {\n console.log(`${name}: No sellerSecret: ${terms.sellerSecret}`)\n return false\n }\n return true\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the sellerSecret in the dictionary\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the sellerSecret in the dictionary\n */\nexport const getSellerSecretSuppliedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const sellerSecret = assertEx(terms.sellerSecret, () => `${name}: No sellerSecret: ${terms.sellerSecret}`)\n if (!dictionary[sellerSecret]) {\n console.log(`${name}: Payload not supplied for sellerSecret: ${sellerSecret}`)\n return false\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the sellerSecret signed by the seller\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the sellerSecret signed by the seller\n */\nexport const getSellerSecretSignedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return async (terms: EscrowTerms) => {\n const seller = assertEx(terms.seller, () => `${name}: No seller: ${terms.seller}`)\n const sellerSecret = assertEx(terms.sellerSecret, () => `${name}: No sellerSecret: ${terms.sellerSecret}`)\n // Seller-signed seller secrets\n const sellerSecretBWs = Object.values(dictionary)\n // Find all BoundWitnesses\n .filter(isBoundWitnessWithMeta)\n // That contain the seller secret\n .filter(bw => bw.payload_hashes.includes(sellerSecret))\n // That are signed by all the sellers\n .filter(bw => seller.every(sellerAddress => bw.addresses.includes(sellerAddress)))\n\n // If there are no sellerSecret BWs, return false\n if (sellerSecretBWs.length === 0) {\n console.log(`${name}: No BoundWitnesses supplied for sellerSecret: ${sellerSecret}`)\n return false\n }\n\n // Ensure each BW supplied for the sellerSecret is valid\n const errors = await Promise.all(sellerSecretBWs.map(bw => new BoundWitnessValidator(bw).validate()))\n const validBoundWitnesses = errors.every(errors => errors.length === 0)\n if (!validBoundWitnesses) {\n console.log(`${name}: Invalid BoundWitnesses supplied for sellerSecret: ${sellerSecret}`)\n return false\n }\n return true\n }\n}\n","import type { Payload } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType, isPayloadOfSchemaTypeWithMeta, isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { PaymentCardSchema } from './Schema.ts'\n\n/**\n * The fields describing a payment card.\n */\nexport interface PaymentCardFields {\n /**\n * Card Number (PAN) of the payment card. This value is required to perform a payment.\n */\n cardNumber: string\n /**\n * The name as it appears on the payment card.\n */\n cardholderName?: string\n /**\n * Card Verification Value (CVV/CVC) of the payment card.\n */\n cvv: string\n /**\n * Expiration month of the payment card.\n */\n expMonth: number\n /**\n * Expiration year of the payment card.\n */\n expYear: number\n}\n\n/**\n * A PaymentCard Payload\n */\nexport type PaymentCard = Payload<PaymentCardFields, PaymentCardSchema>\n\n/**\n * Identity function for determine if an object is a PaymentCard\n */\nexport const isPaymentCard = isPayloadOfSchemaType<PaymentCard>(PaymentCardSchema)\n\n/**\n * Identity function for determine if an object is a PaymentCard with sources\n */\nexport const isPaymentCardWithSources = isPayloadOfSchemaTypeWithSources<PaymentCard>(PaymentCardSchema)\n\n/**\n * Identity function for determine if an object is a PaymentCard with meta\n */\nexport const isPaymentCardWithMeta = isPayloadOfSchemaTypeWithMeta<PaymentCard>(PaymentCardSchema)\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const PaymentSchema = `${PaymentsSchema}.payment`\nexport type PaymentSchema = typeof PaymentSchema\n","import { PaymentSchema } from '../Schema.ts'\n\nexport const PaymentInstrumentSchema = `${PaymentSchema}.instrument`\nexport type PaymentInstrumentSchema = typeof PaymentInstrumentSchema\n","import { PaymentInstrumentSchema } from '../Schema.ts'\n\nexport const PaymentCardSchema = `${PaymentInstrumentSchema}.card`\nexport type PaymentCardSchema = typeof PaymentCardSchema\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { SupportedCurrency } from '../Currency.ts'\nimport { PaymentSchema } from './Schema.ts'\n\nexport interface PaymentFields {\n /**\n * The amount paid\n */\n amount: number\n /**\n * The currency of the amount paid\n */\n currency: SupportedCurrency\n}\n\n/**\n * A payment is a record of an amount to be paid\n */\nexport type Payment = PayloadWithSources<PaymentFields, PaymentSchema>\n\n/**\n * Identity function for determine if an object is a Payment\n */\nexport const isPayment = isPayloadOfSchemaType<Payment>(PaymentSchema)\n\n/**\n * Identity function for determine if an object is a Payment with sources\n */\nexport const isPaymentWithSources = isPayloadOfSchemaTypeWithSources<Payment>(PaymentSchema)\n\n/**\n * Identity function for determine if an object is a Payment with meta\n */\nexport const isPaymentWithMeta = isPayloadOfSchemaTypeWithMeta<Payment>(PaymentSchema)\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { PaymentStatusSchema } from './Schema.ts'\n\nexport interface PaymentStatusFields {\n /**\n * The result of the payment (i.e. declined)\n */\n result?: string\n\n /**\n * The status of the payment (i.e. completed)\n */\n status: string\n}\n\n/**\n * A payment status is the outcome of a payment attempt\n */\nexport type PaymentStatus = PayloadWithSources<PaymentStatusFields, PaymentStatusSchema>\n\n/**\n * Identity function for determine if an object is a PaymentStatus\n */\nexport const isPaymentStatus = isPayloadOfSchemaType<PaymentStatus>(PaymentStatusSchema)\n\n/**\n * Identity function for determine if an object is a PaymentStatus with sources\n */\nexport const isPaymentStatusWithSources = isPayloadOfSchemaTypeWithSources<PaymentStatus>(PaymentStatusSchema)\n\n/**\n * Identity function for determine if an object is a PaymentStatus with meta\n */\nexport const isPaymentStatusWithMeta = isPayloadOfSchemaTypeWithMeta<PaymentStatus>(PaymentStatusSchema)\n","import { PaymentSchema } from '../Schema.ts'\n\nexport const PaymentStatusSchema = `${PaymentSchema}.status`\nexport type PaymentStatusSchema = typeof PaymentStatusSchema\n","import type { Hash } from '@xylabs/hex'\nimport type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { PurchaseSchema } from './Schema.ts'\n\nexport interface PurchaseFields {\n /**\n * The things that were purchased\n */\n assets: Hash[]\n /**\n * The receipts for payments for this purchase. Array to allow for multiple payments\n * for a single quote.\n */\n receipts: Hash[]\n}\n\n/**\n * A purchase ties a payment made to a quote\n */\nexport type Purchase = PayloadWithSources<PurchaseFields, PurchaseSchema>\n\n/**\n * Identity function for determine if an object is a Purchase\n */\nexport const isPurchase = isPayloadOfSchemaType<Purchase>(PurchaseSchema)\n\n/**\n * Identity function for determine if an object is a Purchase with sources\n */\nexport const isPurchaseWithSources = isPayloadOfSchemaTypeWithSources<Purchase>(PurchaseSchema)\n\n/**\n * Identity function for determine if an object is a Purchase with meta\n */\nexport const isPurchaseWithMeta = isPayloadOfSchemaTypeWithMeta<Purchase>(PurchaseSchema)\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const PurchaseSchema = `${PaymentsSchema}.purchase`\nexport type PurchaseSchema = typeof PurchaseSchema\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { SupportedCurrency } from '../Currency.ts'\nimport { ReceiptSchema } from './Schema.ts'\n\nexport interface ReceiptFields {\n /**\n * The amount paid\n */\n amount: number\n /**\n * The currency of the amount paid\n */\n currency: SupportedCurrency\n}\n\n/**\n * A receipt is a record of a payment made\n */\nexport type Receipt = PayloadWithSources<ReceiptFields, ReceiptSchema>\n\n/**\n * Identity function for determine if an object is a Receipt\n */\nexport const isReceipt = isPayloadOfSchemaType<Receipt>(ReceiptSchema)\n\n/**\n * Identity function for determine if an object is a Receipt with sources\n */\nexport const isReceiptWithSources = isPayloadOfSchemaTypeWithSources<Receipt>(ReceiptSchema)\n\n/**\n * Identity function for determine if an object is a Receipt with meta\n */\nexport const isReceiptWithMeta = isPayloadOfSchemaTypeWithMeta<Receipt>(ReceiptSchema)\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const ReceiptSchema = `${PaymentsSchema}.receipt`\nexport type ReceiptSchema = typeof ReceiptSchema\n","// import type { Hash } from '@xylabs/hex'\nimport type { DivinerConfig } from '@xyo-network/diviner-model'\n\nexport const PaymentSubtotalDivinerConfigSchema = 'network.xyo.diviner.payments.subtotal.config'\nexport type PaymentSubtotalDivinerConfigSchema = typeof PaymentSubtotalDivinerConfigSchema\n\n/**\n * The configuration for the Coupon Subtotal Diviner\n */\nexport type PaymentSubtotalDivinerConfig = DivinerConfig<\n {},\n PaymentSubtotalDivinerConfigSchema\n>\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../Amount/index.ts'\n\nexport const SubtotalSchema = 'network.xyo.payments.subtotal' as const\nexport type SubtotalSchema = typeof SubtotalSchema\n\nexport interface SubtotalFields extends AmountFields {}\n\n/**\n * The result of a subtotal\n */\nexport type Subtotal = PayloadWithSources<SubtotalFields, SubtotalSchema>\n\n/**\n * Identity function for determining if an object is an Subtotal\n */\nexport const isSubtotal = isPayloadOfSchemaType<Subtotal>(SubtotalSchema)\n\n/**\n * Identity function for determining if an object is an Subtotal with sources\n */\nexport const isSubtotalWithSources = isPayloadOfSchemaTypeWithSources<Subtotal>(SubtotalSchema)\n\n/**\n * Identity function for determining if an object is an Subtotal with meta\n */\nexport const isSubtotalWithMeta = isPayloadOfSchemaTypeWithMeta<Subtotal>(SubtotalSchema)\n","// import type { Hash } from '@xylabs/hex'\nimport type { DivinerConfig } from '@xyo-network/diviner-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport const PaymentTotalDivinerConfigSchema = 'network.xyo.diviner.payments.total.config'\nexport type PaymentTotalDivinerConfigSchema = typeof PaymentTotalDivinerConfigSchema\n\n/**\n * The configuration for the Total Diviner\n */\nexport type PaymentTotalDivinerConfig = DivinerConfig<\n {\n /**\n * The Diviner that will be used to determine the discount\n */\n paymentDiscountDiviner?: ModuleIdentifier\n\n /**\n * The Diviner that will be used to determine the subtotal\n */\n paymentSubtotalDiviner?: ModuleIdentifier\n },\n PaymentTotalDivinerConfigSchema\n>\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../Amount/index.ts'\n\nexport const TotalSchema = 'network.xyo.payments.total' as const\nexport type TotalSchema = typeof TotalSchema\n\nexport interface TotalFields extends AmountFields {}\n\n/**\n * The result of a total\n */\nexport type Total = PayloadWithSources<TotalFields, TotalSchema>\n\n/**\n * Identity function for determining if an object is an Total\n */\nexport const isTotal = isPayloadOfSchemaType<Total>(TotalSchema)\n\n/**\n * Identity function for determining if an object is an Total with sources\n */\nexport const isTotalWithSources = isPayloadOfSchemaTypeWithSources<Total>(TotalSchema)\n\n/**\n * Identity function for determining if an object is an Total with meta\n */\nexport const isTotalWithMeta = isPayloadOfSchemaTypeWithMeta<Total>(TotalSchema)\n"],"mappings":";AAsXO,IAAM,uBAA4E;AAAA,EACvF,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,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","names":["isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","name","name","name","asAddress","name","assertEx","isBoundWitnessWithMeta","name","errors","name","asAddress","name","assertEx","isBoundWitnessWithMeta","BoundWitnessValidator","name","errors","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources"]}
1
+ {"version":3,"sources":["../../src/Amount/Iso4217Currency.ts","../../src/Amount/Payload.ts","../../src/Billing/Address/Address.ts","../../src/Schema.ts","../../src/Billing/Schema.ts","../../src/Billing/Address/Schema.ts","../../src/Discount/Config.ts","../../src/Discount/Payload/Coupon/Coupons/FixedAmount.ts","../../src/Discount/Payload/Coupon/Schema.ts","../../src/Discount/Payload/Coupon/Coupons/FixedPercentage.ts","../../src/Discount/Payload/Coupon/Coupons/FixedPrice.ts","../../src/Discount/Payload/Coupon/Payload.ts","../../src/Discount/Payload/Coupon/types/isStackable.ts","../../src/Discount/Payload/Discount.ts","../../src/Discount/Payload/NoDiscount.ts","../../src/Escrow/createEscrowIntent.ts","../../src/Escrow/getEscrowSecret.ts","../../src/Escrow/Outcome.ts","../../src/Escrow/Schema.ts","../../src/Escrow/Terms.ts","../../src/Escrow/validators/common/ModuleInstanceValidators/moduleInstanceValidators.ts","../../src/Escrow/validators/common/TemporalValidators/validateWithinWindow.ts","../../src/Escrow/validators/escrow/agent.ts","../../src/Escrow/validators/escrow/appraisal.ts","../../src/Escrow/validators/escrow/appraisalAuthorities.ts","../../src/Escrow/validators/escrow/assets.ts","../../src/Escrow/validators/escrow/buyer.ts","../../src/Escrow/validators/escrow/buyerSecret.ts","../../src/Escrow/validators/escrow/nbfExp.ts","../../src/Escrow/validators/escrow/paymentAuthorities.ts","../../src/Escrow/validators/escrow/seller.ts","../../src/Escrow/validators/escrow/sellerSecret.ts","../../src/Payment/Instrument/Card/Payload.ts","../../src/Payment/Schema.ts","../../src/Payment/Instrument/Schema.ts","../../src/Payment/Instrument/Card/Schema.ts","../../src/Payment/Payload.ts","../../src/Payment/Status/Payload.ts","../../src/Payment/Status/Schema.ts","../../src/Purchase/Payload.ts","../../src/Purchase/Schema.ts","../../src/Receipt/Payload.ts","../../src/Receipt/Schema.ts","../../src/Subtotal/Diviner/Config.ts","../../src/Subtotal/Diviner/Payload.ts","../../src/Total/Diviner/Config.ts","../../src/Total/Diviner/Payload.ts"],"sourcesContent":["/* eslint-disable max-lines */\n/**\n * ISO 4217 currency codes\n */\nexport type Iso4217AlphabeticalCode =\n 'AED' |\n 'AFN' |\n 'ALL' |\n 'AMD' |\n 'ANG' |\n 'AOA' |\n 'ARS' |\n 'AUD' |\n 'AWG' |\n 'AZN' |\n 'BAM' |\n 'BBD' |\n 'BDT' |\n 'BGN' |\n 'BHD' |\n 'BIF' |\n 'BMD' |\n 'BND' |\n 'BOB' |\n 'BOV' |\n 'BRL' |\n 'BSD' |\n 'BTN' |\n 'BWP' |\n 'BYN' |\n 'BZD' |\n 'CAD' |\n 'CDF' |\n 'CHE' |\n 'CHF' |\n 'CHW' |\n 'CLF' |\n 'CLP' |\n 'CNY' |\n 'COP' |\n 'COU' |\n 'CRC' |\n 'CUP' |\n 'CVE' |\n 'CZK' |\n 'DJF' |\n 'DKK' |\n 'DOP' |\n 'DZD' |\n 'EGP' |\n 'ERN' |\n 'ETB' |\n 'EUR' |\n 'FJD' |\n 'FKP' |\n 'GBP' |\n 'GEL' |\n 'GHS' |\n 'GIP' |\n 'GMD' |\n 'GNF' |\n 'GTQ' |\n 'GYD' |\n 'HKD' |\n 'HNL' |\n 'HTG' |\n 'HUF' |\n 'IDR' |\n 'ILS' |\n 'INR' |\n 'IQD' |\n 'IRR' |\n 'ISK' |\n 'JMD' |\n 'JOD' |\n 'JPY' |\n 'KES' |\n 'KGS' |\n 'KHR' |\n 'KMF' |\n 'KPW' |\n 'KRW' |\n 'KWD' |\n 'KYD' |\n 'KZT' |\n 'LAK' |\n 'LBP' |\n 'LKR' |\n 'LRD' |\n 'LSL' |\n 'LYD' |\n 'MAD' |\n 'MDL' |\n 'MGA' |\n 'MKD' |\n 'MMK' |\n 'MNT' |\n 'MOP' |\n 'MRU' |\n 'MUR' |\n 'MVR' |\n 'MWK' |\n 'MXN' |\n 'MXV' |\n 'MYR' |\n 'MZN' |\n 'NAD' |\n 'NGN' |\n 'NIO' |\n 'NOK' |\n 'NPR' |\n 'NZD' |\n 'OMR' |\n 'PAB' |\n 'PEN' |\n 'PGK' |\n 'PHP' |\n 'PKR' |\n 'PLN' |\n 'PYG' |\n 'QAR' |\n 'RON' |\n 'RSD' |\n 'RUB' |\n 'RWF' |\n 'SAR' |\n 'SBD' |\n 'SCR' |\n 'SDG' |\n 'SEK' |\n 'SGD' |\n 'SHP' |\n 'SLE' |\n 'SOS' |\n 'SRD' |\n 'SSP' |\n 'STN' |\n 'SVC' |\n 'SYP' |\n 'SZL' |\n 'THB' |\n 'TJS' |\n 'TMT' |\n 'TND' |\n 'TOP' |\n 'TRY' |\n 'TTD' |\n 'TWD' |\n 'TZS' |\n 'UAH' |\n 'UGX' |\n 'USD' |\n 'USN' |\n 'UYI' |\n 'UYU' |\n 'UYW' |\n 'UZS' |\n 'VED' |\n 'VES' |\n 'VND' |\n 'VUV' |\n 'WST' |\n 'XAF' |\n 'XAG' |\n 'XAU' |\n 'XBA' |\n 'XBB' |\n 'XBC' |\n 'XBD' |\n 'XCD' |\n 'XDR' |\n 'XOF' |\n 'XPD' |\n 'XPF' |\n 'XPT' |\n 'XSU' |\n 'XTS' |\n 'XUA' |\n 'XXX' |\n 'YER' |\n 'ZAR' |\n 'ZMW' |\n 'ZWG' |\n 'ZWL'\n\n// TODO: Technically, the values should be 3 digit numbers with leading\n// zeros, so we can padStart if we need to be strict\n/**\n * ISO 4217 numeric currency number codes\n */\nexport type Iso4217NumericCode =\n 784 |\n 971 |\n 8 |\n 51 |\n 532 |\n 973 |\n 32 |\n 36 |\n 533 |\n 944 |\n 977 |\n 52 |\n 50 |\n 975 |\n 48 |\n 108 |\n 60 |\n 96 |\n 68 |\n 984 |\n 986 |\n 44 |\n 64 |\n 72 |\n 933 |\n 84 |\n 124 |\n 976 |\n 947 |\n 756 |\n 948 |\n 990 |\n 152 |\n 156 |\n 170 |\n 970 |\n 188 |\n 192 |\n 132 |\n 203 |\n 262 |\n 208 |\n 214 |\n 12 |\n 818 |\n 232 |\n 230 |\n 978 |\n 242 |\n 238 |\n 826 |\n 981 |\n 936 |\n 292 |\n 270 |\n 324 |\n 320 |\n 328 |\n 344 |\n 340 |\n 332 |\n 348 |\n 360 |\n 376 |\n 356 |\n 368 |\n 364 |\n 352 |\n 388 |\n 400 |\n 392 |\n 404 |\n 417 |\n 116 |\n 174 |\n 408 |\n 410 |\n 414 |\n 136 |\n 398 |\n 418 |\n 422 |\n 144 |\n 430 |\n 426 |\n 434 |\n 504 |\n 498 |\n 969 |\n 807 |\n 104 |\n 496 |\n 446 |\n 929 |\n 480 |\n 462 |\n 454 |\n 484 |\n 979 |\n 458 |\n 943 |\n 516 |\n 566 |\n 558 |\n 578 |\n 524 |\n 554 |\n 512 |\n 590 |\n 604 |\n 598 |\n 608 |\n 586 |\n 985 |\n 600 |\n 634 |\n 946 |\n 941 |\n 643 |\n 646 |\n 682 |\n 90 |\n 690 |\n 938 |\n 752 |\n 702 |\n 654 |\n 925 |\n 706 |\n 968 |\n 728 |\n 930 |\n 222 |\n 760 |\n 748 |\n 764 |\n 972 |\n 934 |\n 788 |\n 776 |\n 949 |\n 780 |\n 901 |\n 834 |\n 980 |\n 800 |\n 840 |\n 997 |\n 940 |\n 858 |\n 927 |\n 860 |\n 926 |\n 928 |\n 704 |\n 548 |\n 882 |\n 950 |\n 961 |\n 959 |\n 955 |\n 956 |\n 957 |\n 958 |\n 951 |\n 960 |\n 952 |\n 964 |\n 953 |\n 962 |\n 994 |\n 963 |\n 965 |\n 999 |\n 886 |\n 710 |\n 967 |\n 924 |\n 932\n\n/**\n * Dictionary of ISO 4217 alphabetical currency codes to numeric currency number codes\n */\nexport const Iso4217CurrencyCodes: Record<Iso4217AlphabeticalCode, Iso4217NumericCode> = {\n AED: 784,\n AFN: 971,\n ALL: 8,\n AMD: 51,\n ANG: 532,\n AOA: 973,\n ARS: 32,\n AUD: 36,\n AWG: 533,\n AZN: 944,\n BAM: 977,\n BBD: 52,\n BDT: 50,\n BGN: 975,\n BHD: 48,\n BIF: 108,\n BMD: 60,\n BND: 96,\n BOB: 68,\n BOV: 984,\n BRL: 986,\n BSD: 44,\n BTN: 64,\n BWP: 72,\n BYN: 933,\n BZD: 84,\n CAD: 124,\n CDF: 976,\n CHE: 947,\n CHF: 756,\n CHW: 948,\n CLF: 990,\n CLP: 152,\n CNY: 156,\n COP: 170,\n COU: 970,\n CRC: 188,\n CUP: 192,\n CVE: 132,\n CZK: 203,\n DJF: 262,\n DKK: 208,\n DOP: 214,\n DZD: 12,\n EGP: 818,\n ERN: 232,\n ETB: 230,\n EUR: 978,\n FJD: 242,\n FKP: 238,\n GBP: 826,\n GEL: 981,\n GHS: 936,\n GIP: 292,\n GMD: 270,\n GNF: 324,\n GTQ: 320,\n GYD: 328,\n HKD: 344,\n HNL: 340,\n HTG: 332,\n HUF: 348,\n IDR: 360,\n ILS: 376,\n INR: 356,\n IQD: 368,\n IRR: 364,\n ISK: 352,\n JMD: 388,\n JOD: 400,\n JPY: 392,\n KES: 404,\n KGS: 417,\n KHR: 116,\n KMF: 174,\n KPW: 408,\n KRW: 410,\n KWD: 414,\n KYD: 136,\n KZT: 398,\n LAK: 418,\n LBP: 422,\n LKR: 144,\n LRD: 430,\n LSL: 426,\n LYD: 434,\n MAD: 504,\n MDL: 498,\n MGA: 969,\n MKD: 807,\n MMK: 104,\n MNT: 496,\n MOP: 446,\n MRU: 929,\n MUR: 480,\n MVR: 462,\n MWK: 454,\n MXN: 484,\n MXV: 979,\n MYR: 458,\n MZN: 943,\n NAD: 516,\n NGN: 566,\n NIO: 558,\n NOK: 578,\n NPR: 524,\n NZD: 554,\n OMR: 512,\n PAB: 590,\n PEN: 604,\n PGK: 598,\n PHP: 608,\n PKR: 586,\n PLN: 985,\n PYG: 600,\n QAR: 634,\n RON: 946,\n RSD: 941,\n RUB: 643,\n RWF: 646,\n SAR: 682,\n SBD: 90,\n SCR: 690,\n SDG: 938,\n SEK: 752,\n SGD: 702,\n SHP: 654,\n SLE: 925,\n SOS: 706,\n SRD: 968,\n SSP: 728,\n STN: 930,\n SVC: 222,\n SYP: 760,\n SZL: 748,\n THB: 764,\n TJS: 972,\n TMT: 934,\n TND: 788,\n TOP: 776,\n TRY: 949,\n TTD: 780,\n TWD: 901,\n TZS: 834,\n UAH: 980,\n UGX: 800,\n USD: 840,\n USN: 997,\n UYI: 940,\n UYU: 858,\n UYW: 927,\n UZS: 860,\n VED: 926,\n VES: 928,\n VND: 704,\n VUV: 548,\n WST: 882,\n XAF: 950,\n XAG: 961,\n XAU: 959,\n XBA: 955,\n XBB: 956,\n XBC: 957,\n XBD: 958,\n XCD: 951,\n XDR: 960,\n XOF: 952,\n XPD: 964,\n XPF: 953,\n XPT: 962,\n XSU: 994,\n XTS: 963,\n XUA: 965,\n XXX: 999,\n YER: 886,\n ZAR: 710,\n ZMW: 967,\n ZWG: 924,\n ZWL: 932,\n}\n\nexport const isIso4217CurrencyCode = (code: string): code is Iso4217AlphabeticalCode => Iso4217CurrencyCodes[code as Iso4217AlphabeticalCode] ? true : false\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { Iso4217AlphabeticalCode } from './Iso4217Currency.ts'\n\nexport const AmountSchema = 'network.xyo.payments.amount' as const\nexport type AmountSchema = typeof AmountSchema\n\nexport interface AmountFields {\n amount: number\n currency: Iso4217AlphabeticalCode\n}\n\n/**\n * The result of a amount\n */\nexport type Amount = PayloadWithSources<AmountFields, AmountSchema>\n\n/**\n * Identity function for determining if an object is an Amount\n */\nexport const isAmount = isPayloadOfSchemaType<Amount>(AmountSchema)\n\n/**\n * Identity function for determining if an object is an Amount with sources\n */\nexport const isAmountWithSources = isPayloadOfSchemaTypeWithSources<Amount>(AmountSchema)\n\n/**\n * Identity function for determining if an object is an Amount with meta\n */\nexport const isAmountWithMeta = isPayloadOfSchemaTypeWithMeta<Amount>(AmountSchema)\n","import type { Payload } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType, isPayloadOfSchemaTypeWithMeta, isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { BillingAddressSchema } from './Schema.ts'\n\n/**\n * The fields describing a billing address.\n */\nexport interface BillingAddressFields {\n /** Street address line 1. */\n address?: string\n /** Street address line 2. */\n address2?: string | null\n /** City of the billing address. */\n city?: string\n /** Country code of the billing address, ISO 3166-1 alpha-2 code. */\n country?: string\n /** First name */\n firstName: string\n /** Last name */\n lastName: string\n /** Organization or company name associated with the billing address. */\n organization?: string | null\n /** Postal or ZIP code of the billing address. */\n postalCode?: string\n /** State or region of the billing address. */\n region?: string\n}\n\n/**\n * A BillingAddress Payload\n */\nexport type BillingAddress = Payload<BillingAddressFields, BillingAddressSchema>\n\n/**\n * Identity function for determine if an object is a BillingAddress\n */\nexport const isBillingAddress = isPayloadOfSchemaType<BillingAddress>(BillingAddressSchema)\n\n/**\n * Identity function for determine if an object is a BillingAddress with sources\n */\nexport const isBillingAddressWithSources = isPayloadOfSchemaTypeWithSources<BillingAddress>(BillingAddressSchema)\n\n/**\n * Identity function for determine if an object is a BillingAddress with meta\n */\nexport const isBillingAddressWithMeta = isPayloadOfSchemaTypeWithMeta<BillingAddress>(BillingAddressSchema)\n","export const PaymentsSchema = 'network.xyo.payments'\nexport type PaymentsSchema = typeof PaymentsSchema\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const BillingSchema = `${PaymentsSchema}.billing`\nexport type BillingSchema = typeof BillingSchema\n","import { BillingSchema } from '../Schema.ts'\n\nexport const BillingAddressSchema = `${BillingSchema}.address`\nexport type BillingAddressSchema = typeof BillingAddressSchema\n","// import type { Hash } from '@xylabs/hex'\nimport type { Address } from '@xylabs/hex'\nimport type { DivinerConfig } from '@xyo-network/diviner-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport const PaymentDiscountDivinerConfigSchema = 'network.xyo.diviner.payments.discount.config'\nexport type PaymentDiscountDivinerConfigSchema = typeof PaymentDiscountDivinerConfigSchema\n\n/**\n * The configuration for the Payment Discount Diviner\n */\nexport type PaymentDiscountDivinerConfig = DivinerConfig<\n {\n /**\n * The boundwitness diviner used to query for payloads\n */\n boundWitnessDiviner?: ModuleIdentifier\n /**\n * The list of coupon authorities that can be used to get a discount\n */\n couponAuthorities?: Address[]\n\n // /**\n // * The list of coupons that are supported by this diviner\n // */\n // supportedCoupons?: Hash[]\n\n /**\n * The Diviner that can be used to determine the subtotal to apply discounts to\n */\n paymentSubtotalDiviner?: ModuleIdentifier\n },\n PaymentDiscountDivinerConfigSchema\n>\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../../../Amount/index.ts'\nimport { CouponSchema } from '../Schema.ts'\nimport type { CouponFields } from '../types/index.ts'\n\nexport const FixedAmountCouponSchema = `${CouponSchema}.fixed.amount` as const\nexport type FixedAmountCouponSchema = typeof FixedAmountCouponSchema\n\nexport interface FixedAmountCouponFields extends CouponFields, AmountFields {}\n\n/**\n * A coupon that provides a fixed discount amount\n */\nexport type FixedAmountCoupon = PayloadWithSources<FixedAmountCouponFields, FixedAmountCouponSchema>\n\n/**\n * Identity function for determining if an object is an FixedAmountCoupon\n */\nexport const isFixedAmountCoupon = isPayloadOfSchemaType<FixedAmountCoupon>(FixedAmountCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedAmountCoupon with sources\n */\nexport const isFixedAmountCouponWithSources = isPayloadOfSchemaTypeWithSources<FixedAmountCoupon>(FixedAmountCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedAmountCoupon with meta\n */\nexport const isFixedAmountCouponWithMeta = isPayloadOfSchemaTypeWithMeta<FixedAmountCoupon>(FixedAmountCouponSchema)\n","export const CouponSchema = 'network.xyo.payments.coupon' as const\nexport type CouponSchema = typeof CouponSchema\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { CouponSchema } from '../Schema.ts'\nimport type { CouponFields } from '../types/index.ts'\n\nexport const FixedPercentageCouponSchema = `${CouponSchema}.fixed.percentage` as const\nexport type FixedPercentageCouponSchema = typeof FixedPercentageCouponSchema\n\nexport interface FixedPercentageCouponFields extends CouponFields {\n percentage: number\n}\n\n/**\n * A coupon that provides a fixed discount amount\n */\nexport type FixedPercentageCoupon = PayloadWithSources<FixedPercentageCouponFields, FixedPercentageCouponSchema>\n\n/**\n * Identity function for determining if an object is an FixedPercentageCoupon\n */\nexport const isFixedPercentageCoupon = isPayloadOfSchemaType<FixedPercentageCoupon>(FixedPercentageCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedPercentageCoupon with sources\n */\nexport const isFixedPercentageCouponWithSources = isPayloadOfSchemaTypeWithSources<FixedPercentageCoupon>(FixedPercentageCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedPercentageCoupon with meta\n */\nexport const isFixedPercentageCouponWithMeta = isPayloadOfSchemaTypeWithMeta<FixedPercentageCoupon>(FixedPercentageCouponSchema)\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../../../Amount/index.ts'\nimport { CouponSchema } from '../Schema.ts'\nimport type { CouponFields } from '../types/index.ts'\n\nexport const FixedPriceCouponSchema = `${CouponSchema}.fixed.price` as const\nexport type FixedPriceCouponSchema = typeof FixedPriceCouponSchema\n\nexport interface FixedPriceCouponFields extends CouponFields, AmountFields { }\n\n/**\n * A coupon that provides a fixed total price\n */\nexport type FixedPriceCoupon = PayloadWithSources<FixedPriceCouponFields, FixedPriceCouponSchema>\n\n/**\n * Identity function for determining if an object is an FixedPriceCoupon\n */\nexport const isFixedPriceCoupon = isPayloadOfSchemaType<FixedPriceCoupon>(FixedPriceCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedPriceCoupon with sources\n */\nexport const isFixedPriceCouponWithSources = isPayloadOfSchemaTypeWithSources<FixedPriceCoupon>(FixedPriceCouponSchema)\n\n/**\n * Identity function for determining if an object is an FixedPriceCoupon with meta\n */\nexport const isFixedPriceCouponWithMeta = isPayloadOfSchemaTypeWithMeta<FixedPriceCoupon>(FixedPriceCouponSchema)\n","import {\n type FixedAmountCoupon, type FixedPercentageCoupon, type FixedPriceCoupon,\n isFixedAmountCoupon, isFixedAmountCouponWithMeta, isFixedAmountCouponWithSources, isFixedPercentageCoupon,\n isFixedPercentageCouponWithMeta,\n isFixedPercentageCouponWithSources,\n isFixedPriceCoupon,\n isFixedPriceCouponWithSources,\n} from './Coupons/index.ts'\n\n/**\n * The type of coupons\n */\nexport type Coupon =\n FixedAmountCoupon\n | FixedPercentageCoupon\n | FixedPriceCoupon\n\n/**\n * Identity function for determining if an object is an Coupon\n */\nexport const isCoupon = (x?: unknown | null) =>\n isFixedAmountCoupon(x)\n || isFixedPercentageCoupon(x)\n || isFixedPriceCoupon(x)\n\n/**\n * Identity function for determining if an object is an Coupon with sources\n */\nexport const isCouponWithSources = (x?: unknown | null) =>\n isFixedAmountCouponWithSources(x)\n || isFixedPercentageCouponWithSources(x)\n || isFixedPriceCouponWithSources(x)\n\n/**\n * Identity function for determining if an object is an Coupon with meta\n */\nexport const isCouponWithMeta = (x?: unknown | null) =>\n isFixedAmountCouponWithMeta(x)\n || isFixedPercentageCouponWithMeta(x)\n","import type { CouponFields } from './CouponFields.ts'\n\n/**\n * Identity function for determining if coupon is stackable\n */\nexport const isStackable = (x?: unknown | null) => (x as CouponFields ?? { stackable: false })?.stackable\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../Amount/index.ts'\n\nexport const DiscountSchema = 'network.xyo.payments.discount' as const\nexport type DiscountSchema = typeof DiscountSchema\n\nexport interface DiscountFields extends AmountFields { }\n\n/**\n * The result of a discount\n */\nexport type Discount = PayloadWithSources<DiscountFields, DiscountSchema>\n\n/**\n * Identity function for determining if an object is an Discount\n */\nexport const isDiscount = isPayloadOfSchemaType<Discount>(DiscountSchema)\n\n/**\n * Identity function for determining if an object is an Discount with sources\n */\nexport const isDiscountWithSources = isPayloadOfSchemaTypeWithSources<Discount>(DiscountSchema)\n\n/**\n * Identity function for determining if an object is an Discount with meta\n */\nexport const isDiscountWithMeta = isPayloadOfSchemaTypeWithMeta<Discount>(DiscountSchema)\n","import type { Discount } from './Discount.ts'\nimport { DiscountSchema } from './Discount.ts'\n\nexport const NO_DISCOUNT: Discount = {\n schema: DiscountSchema,\n amount: 0,\n currency: 'USD',\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { IdPayload } from '@xyo-network/id-payload-plugin'\n\nimport type { EscrowTerms } from './Terms.ts'\n\n/**\n * Creates an escrow intent\n * @deprecated Use createEscrowIntentWithSecret instead\n * @param terms The payloads describing the terms for the escrow\n * @param account The account to create the escrow intent with\n * @returns The escrow intent\n */\nexport const createEscrowIntent = async (terms: EscrowTerms[], account: AccountInstance) => {\n const result = await new BoundWitnessBuilder({ accounts: [account] }).payloads([...terms]).build()\n return result\n}\n\n/**\n * Creates an escrow intent (for a buyer or seller) using the supplied secret\n * @param terms The payload describing the terms for the escrow\n * @param secret The secret for the escrow principal party to use for the escrow\n * @param account The account to create the escrow intent with\n * @returns The escrow intent\n */\nexport const createEscrowIntentWithSecret = async (terms: EscrowTerms, secret: IdPayload, account: AccountInstance) => {\n const result = await new BoundWitnessBuilder({ accounts: [account] }).payloads([terms, secret]).build()\n return result\n}\n","import { Crypto } from '@xylabs/crypto'\nimport type { IdPayload } from '@xyo-network/id-payload-plugin'\nimport { IdSchema } from '@xyo-network/id-payload-plugin'\n\n/**\n * Returns a cryptographically random secret to use for escrow\n * @returns The escrow secret\n */\nexport const getEscrowSecret = (): IdPayload => {\n return { salt: Crypto.randomUUID(), schema: IdSchema }\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { EscrowSchema } from './Schema.ts'\n\nexport const EscrowOutcomeSchema = `${EscrowSchema}.outcome` as const\nexport type EscrowOutcomeSchema = typeof EscrowOutcomeSchema\n\n/**\n * The possible outcomes for an escrow\n */\nexport type EscrowOutcomes = 'fulfilled' | 'expired' // TODO: More outcomes\n\nexport interface EscrowOutcomeFields {\n outcome: EscrowOutcomes\n terms: Hash\n}\n\n/**\n * The terms of an escrow\n */\nexport type EscrowOutcome = PayloadWithSources<EscrowOutcomeFields, EscrowOutcomeSchema>\n\n/**\n * Identity function for determining if an object is an EscrowOutcome\n */\nexport const isEscrowOutcome = isPayloadOfSchemaType<EscrowOutcome>(EscrowOutcomeSchema)\n\n/**\n * Identity function for determining if an object is an EscrowOutcome with sources\n */\nexport const isEscrowOutcomeWithSources = isPayloadOfSchemaTypeWithSources<EscrowOutcome>(EscrowOutcomeSchema)\n\n/**\n * Identity function for determining if an object is an EscrowOutcome with meta\n */\nexport const isEscrowOutcomeWithMeta = isPayloadOfSchemaTypeWithMeta<EscrowOutcome>(EscrowOutcomeSchema)\n","export const EscrowSchema = 'network.xyo.escrow'\nexport type EscrowSchema = typeof EscrowSchema\n","import type { Address, Hash } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType, isPayloadOfSchemaTypeWithMeta, isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { EscrowSchema } from './Schema.ts'\n\nexport const EscrowTermsSchema = `${EscrowSchema}.terms` as const\nexport type EscrowTermsSchema = typeof EscrowTermsSchema\n\n// TODO: Include escrow agent in escrow terms\nexport interface EscrowTermsFields {\n /**\n * The trusted estimators for the worth of the things being sold\n */\n appraisalAuthorities: Address[]\n /**\n * The estimated worths of the things being sold\n */\n appraisals: Hash[]\n /**\n * The things being sold\n */\n assets: Hash[]\n /**\n * The buyer\n */\n buyer: Address[]\n /**\n * The buyer\n */\n buyerSecret: Hash\n /**\n * Any discounts (coupons, vouchers, credits, etc.) to be applied to the escrow\n */\n discounts: Hash[]\n /**\n * The escrow agent responsible for the escrow\n */\n escrowAgent: Address\n /**\n * The time the escrow expires\n */\n exp: number\n /**\n * The time the escrow starts\n */\n nbf: number\n /**\n * The trusted payment authorities\n */\n paymentAuthorities: Address[]\n /**\n * The seller\n */\n seller: Address[]\n /**\n * The seller\n */\n sellerSecret: Hash\n}\n\n/**\n * The terms of an escrow\n */\nexport type EscrowTerms = Payload<Partial<EscrowTermsFields>, EscrowTermsSchema>\n\n/**\n * Identity function for determining if an object is an EscrowTerms\n */\nexport const isEscrowTerms = isPayloadOfSchemaType<EscrowTerms>(EscrowTermsSchema)\n\n/**\n * Identity function for determining if an object is an EscrowTerms with sources\n */\nexport const isEscrowTermsWithSources = isPayloadOfSchemaTypeWithSources<EscrowTerms>(EscrowTermsSchema)\n\n/**\n * Identity function for determining if an object is an EscrowTerms with meta\n */\nexport const isEscrowTermsWithMeta = isPayloadOfSchemaTypeWithMeta<EscrowTerms>(EscrowTermsSchema)\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValueExpression } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../../Terms.ts'\n\n/**\n * Checks if property value of the escrow terms contains one of the valid moduleIdentifiers\n * @param escrowTerms The escrow terms to validate\n * @param propertyExpression The selector to get the property containing the moduleIdentifier(s) from the escrow terms\n * @param moduleIdentifiers The list of allowed moduleIdentifiers\n * @param required Is the property required to be present\n * @returns True if the property value contains one of the valid moduleIdentifiers\n */\nexport const moduleIdentifiersContainsOneOf = (\n escrowTerms: EscrowTerms,\n propertyExpression: PayloadValueExpression<EscrowTerms, 'appraisalAuthorities' | 'buyer' | 'escrowAgent' | 'paymentAuthorities' | 'seller'>,\n moduleIdentifiers: ModuleIdentifier[],\n required: boolean = true,\n) => {\n const termsValue: string | string[] | undefined = propertyExpression(escrowTerms)\n if (termsValue === undefined) {\n return required ? false : true\n } else {\n return Array.isArray(termsValue) ? termsValue.some(address => moduleIdentifiers.includes(address)) : moduleIdentifiers.includes(termsValue)\n }\n}\n\n/**\n * Checks if property value of the escrow terms contains all of the valid moduleIdentifiers\n * @param escrowTerms The escrow terms to validate\n * @param selector The selector to get the property containing the moduleIdentifier(s) from the escrow terms\n * @param moduleIdentifiers The list of allowed moduleIdentifiers\n * @param required Is the property required to be present\n * @returns True if the property value contains all of the valid moduleIdentifiers\n */\nexport const moduleIdentifiersContainsAllOf = (\n escrowTerms: EscrowTerms,\n selector: PayloadValueExpression<EscrowTerms, 'appraisalAuthorities' | 'buyer' | 'escrowAgent' | 'paymentAuthorities' | 'seller'>,\n moduleIdentifiers: ModuleIdentifier[],\n required: boolean = true,\n) => {\n const termsValue: string | string[] | undefined = selector(escrowTerms)\n if (termsValue === undefined) {\n return required ? false : true\n } else {\n return Array.isArray(termsValue) ? termsValue.every(address => moduleIdentifiers.includes(address)) : moduleIdentifiers.includes(termsValue)\n }\n}\n","export type Windowed = { exp?: number; nbf?: number }\n\nexport const validateWithinWindow = (value: Windowed, exp: number, nbf: number = Date.now()): boolean => {\n if (value.nbf === undefined || value.nbf > nbf) return false\n if (value.exp === undefined || value.exp < exp) return false\n return true\n}\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { moduleIdentifiersContainsOneOf } from '../common/index.ts'\n\nconst name = 'EscrowTerms.escrowAgent'\n\nexport const getEscrowAgentAllowedValidator = (allowedEscrowAgent: ModuleIdentifier): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const result = moduleIdentifiersContainsOneOf(terms, t => t.escrowAgent, [allowedEscrowAgent], true)\n if (!result) {\n console.log(`${name}: Escrow agent not allowed: ${terms.escrowAgent}`)\n }\n return result\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport type { HashLeaseEstimate } from '@xyo-network/diviner-hash-lease'\nimport { isHashLeaseEstimateWithSources } from '@xyo-network/diviner-hash-lease'\nimport type {\n Payload, PayloadValidationFunction, WithMeta, WithSources,\n} from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { validateWithinWindow } from '../common/index.ts'\n\nconst name = 'EscrowTerms.appraisal'\n\n/**\n * A function that validates the escrow terms for tbe existence of appraisals\n * @returns True if the escrow terms contain appraisals, false otherwise\n */\nexport const appraisalsExistValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have appraisals\n const appraisals = terms.appraisals\n if (!appraisals || appraisals.length === 0) {\n console.log(`${name}: No appraisals: ${terms.appraisals}`)\n return false\n }\n return true\n}\n\n/**\n * Returns a function that validates the escrow terms for appraisals which are from valid authorities\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for appraisals which are from valid authorities\n */\nexport const getAppraisalsFromValidAuthoritiesValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const appraisals = assertEx(terms.appraisals, () => `${name}: No appraisals: ${terms.appraisals}`)\n const appraisalAuthorities = assertEx(terms.appraisalAuthorities, () => `${name}: No appraisalAuthorities: ${terms.appraisalAuthorities}`)\n\n // Validate the appraisals are signed by valid appraisal authorities. Validation criteria:\n // - We have a bw for each of the appraisal\n // - The bw is signed by an approved appraisal authority\n const appraisalBWsValid: Record<Hash, WithMeta<BoundWitness>[]> = Object.fromEntries(\n appraisals.map<[Hash, WithMeta<BoundWitness>[]]>(hash => [hash, []]),\n )\n for (const bw of Object.values(dictionary).filter(isBoundWitnessWithMeta)) {\n for (const appraisal of appraisals) {\n if (bw.payload_hashes.includes(appraisal) && bw.addresses.some(address => appraisalAuthorities.includes(address))) {\n appraisalBWsValid[appraisal].push(bw)\n }\n }\n }\n for (const [appraisal, bws] of Object.entries(appraisalBWsValid)) {\n if (bws.length === 0) {\n console.log(`${name}: No valid appraisals for ${appraisal}`)\n return false\n }\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms for appraisals which are valid\n * @param dictionary Payload dictionary of the escrow terms\n * @param minimumExp The minium amount of time an estimate needs to be valid\n * for in the future (so as not to expire before the escrow is complete)\n * @returns A function that validates the escrow terms for appraisals which are valid\n */\nexport const getAppraisalsValidValidator = (\n dictionary: Record<Hash, WithMeta<Payload>>,\n minimumExp: number,\n): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n // Verify we have an estimate for each of the assets\n const estimatesByAsset = getEstimatesByAsset(terms, dictionary)\n // Validate each of the estimates are valid (time, price, etc)\n const now = Date.now()\n const exp = now + minimumExp\n for (const [asset, estimates] of Object.entries(estimatesByAsset)) {\n for (const estimate of estimates) {\n if (!validateEstimate(estimate, exp)) {\n console.log(`${name}: Invalid estimate for asset ${asset}: ${estimate}`)\n return false\n }\n }\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms to ensure that they contain an appraisal for each asset\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for appraisals\n */\nexport const getAppraisalsForAllAssetsValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n // Verify we have an estimate for each of the assets\n const estimatesByAsset = getEstimatesByAsset(terms, dictionary)\n const assets = assertEx(terms.assets, () => `${name}: No assets: ${terms.assets}`)\n if (Object.keys(estimatesByAsset).length !== assets.length) {\n console.log(`${name}: Missing appraisals for all assets: ${assets}`)\n return false\n }\n return true\n }\n}\n\nconst validateEstimate = (estimate: WithSources<HashLeaseEstimate>, exp: number): boolean => {\n if (!validateWithinWindow(estimate, exp)) return false\n if (estimate.currency !== 'USD') return false\n if (estimate.price <= 0) return false\n return true\n}\n\nconst getEstimatesByAsset = (terms: EscrowTerms, dictionary: Record<Hash, WithMeta<Payload>>): Record<Hash, WithSources<HashLeaseEstimate>[]> => {\n const assets = assertEx(terms.assets, () => `${name}: No assets: ${terms.assets}`)\n const estimates = Object.values(dictionary).filter(isHashLeaseEstimateWithSources) as unknown as WithSources<HashLeaseEstimate>[]\n const estimatesByAsset: Record<Hash, WithSources<HashLeaseEstimate>[]> = {}\n for (const estimate of estimates) {\n const { sources } = estimate\n if (sources === undefined || sources.length === 0) {\n console.log(`${name}: No sources: ${estimate}`)\n continue\n }\n for (const asset of assets) {\n if (sources.includes(asset)) {\n if (!estimatesByAsset[asset]) estimatesByAsset[asset] = []\n estimatesByAsset[asset].push(estimate)\n }\n }\n }\n return estimatesByAsset\n}\n","import { asAddress } from '@xylabs/hex'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { moduleIdentifiersContainsAllOf } from '../common/index.ts'\n\nconst name = 'EscrowTerms.appraisalAuthorities'\n\n/**\n * A function that validates the escrow terms for appraisalAuthorities\n * @returns True if the escrow terms contain appraisalAuthorities, false otherwise\n */\nexport const appraisalAuthoritiesExistValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have appraisalAuthorities\n const appraisalAuthorities = terms.appraisalAuthorities\n if (!appraisalAuthorities || appraisalAuthorities.length === 0) {\n console.log(`${name}: No appraisalAuthorities: ${terms.appraisalAuthorities}`)\n return false\n }\n // Validate the authorities are addresses\n if (appraisalAuthorities.map(x => asAddress(x)).length !== appraisalAuthorities.length) {\n console.log(`${name}: Invalid address: ${terms.appraisalAuthorities}`)\n return false\n }\n return true\n}\n\nexport const getAppraisalAuthoritiesAllowedValidator = (allowed: ModuleIdentifier[]): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const result = moduleIdentifiersContainsAllOf(terms, t => t.appraisalAuthorities, allowed, true)\n if (!result) {\n console.log(`${name}: Appraisal authority not allowed: ${terms.appraisalAuthorities}`)\n }\n return result\n }\n}\n","import type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.assets'\n\n/**\n * Returns a function that validates the escrow terms for assets\n * @returns A function that validates the escrow terms for assets\n */\nexport const assetsExistValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have assets\n const assets = terms.assets\n if (!assets || assets.length === 0) {\n console.log(`${name}: No assets: ${terms.assets}`)\n return false\n }\n return true\n}\n","import { asAddress } from '@xylabs/hex'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.buyer'\n\n/**\n * A function that validates the escrow terms for buyer\n * @returns True if the escrow terms contain buyer, false otherwise\n */\nexport const buyerExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have buyer\n const buyer = terms.buyer\n if (!buyer || buyer.length === 0) {\n console.log(`${name}: No buyer: ${terms.buyer}`)\n return false\n }\n // Validate the authorities are addresses\n if (buyer.map(x => asAddress(x)).length !== buyer.length) {\n console.log(`${name}: Invalid address: ${terms.buyer}`)\n return false\n }\n return true\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type {\n Payload, PayloadValidationFunction, WithMeta,\n} from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.buyerSecret'\n\n/**\n * Returns a function that validates the escrow terms for buyerSecret\n * @returns A function that validates the escrow terms for buyerSecret\n */\nexport const buyerSecretExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have buyerSecret\n const buyerSecret = terms.buyerSecret\n if (!buyerSecret || buyerSecret.length === 0) {\n console.log(`${name}: No buyerSecret: ${terms.buyerSecret}`)\n return false\n }\n return true\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the buyerSecret in the dictionary\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the buyerSecret in the dictionary\n */\nexport const getBuyerSecretSuppliedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const buyerSecret = assertEx(terms.buyerSecret, () => `${name}: No buyerSecret: ${terms.buyerSecret}`)\n if (!dictionary[buyerSecret]) {\n console.log(`${name}: Payload not supplied for buyerSecret: ${buyerSecret}`)\n return false\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the buyerSecret signed by the buyer\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the buyerSecret signed by the buyer\n */\nexport const getBuyerSecretSignedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return async (terms: EscrowTerms) => {\n const buyer = assertEx(terms.buyer, () => `${name}: No buyer: ${terms.buyer}`)\n const buyerSecret = assertEx(terms.buyerSecret, () => `${name}: No buyerSecret: ${terms.buyerSecret}`)\n // Buyer-signed buyer secrets\n const buyerSecretBWs = Object.values(dictionary)\n // Find all BoundWitnesses\n .filter(isBoundWitnessWithMeta)\n // That contain the buyer secret\n .filter(bw => bw.payload_hashes.includes(buyerSecret))\n // That are signed by all the buyers\n .filter(bw => buyer.every(buyerAddress => bw.addresses.includes(buyerAddress)))\n\n // If there are no buyerSecret BWs, return false\n if (buyerSecretBWs.length === 0) {\n console.log(`${name}: No BoundWitnesses supplied for buyerSecret: ${buyerSecret}`)\n return false\n }\n\n // Ensure each BW supplied for the buyerSecret is valid\n const errors = await Promise.all(buyerSecretBWs.map(bw => new BoundWitnessValidator(bw).validate()))\n const validBoundWitnesses = errors.every(errors => errors.length === 0)\n if (!validBoundWitnesses) {\n console.log(`${name}: Invalid BoundWitnesses supplied for buyerSecret: ${buyerSecret}`)\n return false\n }\n return true\n }\n}\n","import type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nexport const getNbfExpValidator = (now: number, minRequiredDuration: number): PayloadValidationFunction<EscrowTerms> => {\n const minExp = now + minRequiredDuration\n return (terms: EscrowTerms) => {\n const { exp, nbf } = terms\n if (nbf === undefined || nbf < now) {\n console.log(`EscrowTerms.nbf: invalid nbf ${terms.nbf}`)\n return false\n }\n if (exp === undefined || exp < minExp || nbf > exp) {\n console.log(`EscrowTerms.exp: invalid exp ${terms.exp}`)\n return false\n }\n return true\n }\n}\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\nimport { moduleIdentifiersContainsAllOf } from '../common/index.ts'\n\nconst name = 'EscrowTerms.paymentAuthorities'\n\nexport const getPaymentAuthoritiesAllowedValidator = (allowed: ModuleIdentifier[]): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const result = moduleIdentifiersContainsAllOf(terms, t => t.paymentAuthorities, allowed, true)\n if (!result) {\n console.log(`${name}: Payment authority not allowed: ${terms.paymentAuthorities}`)\n }\n return result\n }\n}\n","import { asAddress } from '@xylabs/hex'\nimport type { PayloadValidationFunction } from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.seller'\n\n/**\n * A function that validates the escrow terms for seller\n * @returns True if the escrow terms contain seller, false otherwise\n */\nexport const sellerExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have seller\n const seller = terms.seller\n if (!seller || seller.length === 0) {\n console.log(`${name}: No seller: ${terms.seller}`)\n return false\n }\n // Validate the authorities are addresses\n if (seller.map(x => asAddress(x)).length !== seller.length) {\n console.log(`${name}: Invalid address: ${terms.seller}`)\n return false\n }\n return true\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { isBoundWitnessWithMeta } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type {\n Payload, PayloadValidationFunction, WithMeta,\n} from '@xyo-network/payload-model'\n\nimport type { EscrowTerms } from '../../Terms.ts'\n\nconst name = 'EscrowTerms.sellerSecret'\n\n/**\n * Returns a function that validates the escrow terms for sellerSecret\n * @returns A function that validates the escrow terms for sellerSecret\n */\nexport const sellerSecretExistsValidator: PayloadValidationFunction<EscrowTerms> = (terms: EscrowTerms) => {\n // Validate we have sellerSecret\n const sellerSecret = terms.sellerSecret\n if (!sellerSecret || sellerSecret.length === 0) {\n console.log(`${name}: No sellerSecret: ${terms.sellerSecret}`)\n return false\n }\n return true\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the sellerSecret in the dictionary\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the sellerSecret in the dictionary\n */\nexport const getSellerSecretSuppliedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return (terms: EscrowTerms) => {\n const sellerSecret = assertEx(terms.sellerSecret, () => `${name}: No sellerSecret: ${terms.sellerSecret}`)\n if (!dictionary[sellerSecret]) {\n console.log(`${name}: Payload not supplied for sellerSecret: ${sellerSecret}`)\n return false\n }\n return true\n }\n}\n\n/**\n * Returns a function that validates the escrow terms for the existence of the sellerSecret signed by the seller\n * @param dictionary Payload dictionary of the escrow terms\n * @returns A function that validates the escrow terms for the existence of the sellerSecret signed by the seller\n */\nexport const getSellerSecretSignedValidator = (dictionary: Record<Hash, WithMeta<Payload>>): PayloadValidationFunction<EscrowTerms> => {\n return async (terms: EscrowTerms) => {\n const seller = assertEx(terms.seller, () => `${name}: No seller: ${terms.seller}`)\n const sellerSecret = assertEx(terms.sellerSecret, () => `${name}: No sellerSecret: ${terms.sellerSecret}`)\n // Seller-signed seller secrets\n const sellerSecretBWs = Object.values(dictionary)\n // Find all BoundWitnesses\n .filter(isBoundWitnessWithMeta)\n // That contain the seller secret\n .filter(bw => bw.payload_hashes.includes(sellerSecret))\n // That are signed by all the sellers\n .filter(bw => seller.every(sellerAddress => bw.addresses.includes(sellerAddress)))\n\n // If there are no sellerSecret BWs, return false\n if (sellerSecretBWs.length === 0) {\n console.log(`${name}: No BoundWitnesses supplied for sellerSecret: ${sellerSecret}`)\n return false\n }\n\n // Ensure each BW supplied for the sellerSecret is valid\n const errors = await Promise.all(sellerSecretBWs.map(bw => new BoundWitnessValidator(bw).validate()))\n const validBoundWitnesses = errors.every(errors => errors.length === 0)\n if (!validBoundWitnesses) {\n console.log(`${name}: Invalid BoundWitnesses supplied for sellerSecret: ${sellerSecret}`)\n return false\n }\n return true\n }\n}\n","import type { Payload } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType, isPayloadOfSchemaTypeWithMeta, isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { PaymentCardSchema } from './Schema.ts'\n\n/**\n * The fields describing a payment card.\n */\nexport interface PaymentCardFields {\n /**\n * Card Number (PAN) of the payment card. This value is required to perform a payment.\n */\n cardNumber: string\n /**\n * The name as it appears on the payment card.\n */\n cardholderName?: string\n /**\n * Card Verification Value (CVV/CVC) of the payment card.\n */\n cvv: string\n /**\n * Expiration month of the payment card.\n */\n expMonth: number\n /**\n * Expiration year of the payment card.\n */\n expYear: number\n}\n\n/**\n * A PaymentCard Payload\n */\nexport type PaymentCard = Payload<PaymentCardFields, PaymentCardSchema>\n\n/**\n * Identity function for determine if an object is a PaymentCard\n */\nexport const isPaymentCard = isPayloadOfSchemaType<PaymentCard>(PaymentCardSchema)\n\n/**\n * Identity function for determine if an object is a PaymentCard with sources\n */\nexport const isPaymentCardWithSources = isPayloadOfSchemaTypeWithSources<PaymentCard>(PaymentCardSchema)\n\n/**\n * Identity function for determine if an object is a PaymentCard with meta\n */\nexport const isPaymentCardWithMeta = isPayloadOfSchemaTypeWithMeta<PaymentCard>(PaymentCardSchema)\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const PaymentSchema = `${PaymentsSchema}.payment`\nexport type PaymentSchema = typeof PaymentSchema\n","import { PaymentSchema } from '../Schema.ts'\n\nexport const PaymentInstrumentSchema = `${PaymentSchema}.instrument`\nexport type PaymentInstrumentSchema = typeof PaymentInstrumentSchema\n","import { PaymentInstrumentSchema } from '../Schema.ts'\n\nexport const PaymentCardSchema = `${PaymentInstrumentSchema}.card`\nexport type PaymentCardSchema = typeof PaymentCardSchema\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { SupportedCurrency } from '../Currency.ts'\nimport { PaymentSchema } from './Schema.ts'\n\nexport interface PaymentFields {\n /**\n * The amount paid\n */\n amount: number\n /**\n * The currency of the amount paid\n */\n currency: SupportedCurrency\n}\n\n/**\n * A payment is a record of an amount to be paid\n */\nexport type Payment = PayloadWithSources<PaymentFields, PaymentSchema>\n\n/**\n * Identity function for determine if an object is a Payment\n */\nexport const isPayment = isPayloadOfSchemaType<Payment>(PaymentSchema)\n\n/**\n * Identity function for determine if an object is a Payment with sources\n */\nexport const isPaymentWithSources = isPayloadOfSchemaTypeWithSources<Payment>(PaymentSchema)\n\n/**\n * Identity function for determine if an object is a Payment with meta\n */\nexport const isPaymentWithMeta = isPayloadOfSchemaTypeWithMeta<Payment>(PaymentSchema)\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { PaymentStatusSchema } from './Schema.ts'\n\nexport interface PaymentStatusFields {\n /**\n * The result of the payment (i.e. declined)\n */\n result?: string\n\n /**\n * The status of the payment (i.e. completed)\n */\n status: string\n}\n\n/**\n * A payment status is the outcome of a payment attempt\n */\nexport type PaymentStatus = PayloadWithSources<PaymentStatusFields, PaymentStatusSchema>\n\n/**\n * Identity function for determine if an object is a PaymentStatus\n */\nexport const isPaymentStatus = isPayloadOfSchemaType<PaymentStatus>(PaymentStatusSchema)\n\n/**\n * Identity function for determine if an object is a PaymentStatus with sources\n */\nexport const isPaymentStatusWithSources = isPayloadOfSchemaTypeWithSources<PaymentStatus>(PaymentStatusSchema)\n\n/**\n * Identity function for determine if an object is a PaymentStatus with meta\n */\nexport const isPaymentStatusWithMeta = isPayloadOfSchemaTypeWithMeta<PaymentStatus>(PaymentStatusSchema)\n","import { PaymentSchema } from '../Schema.ts'\n\nexport const PaymentStatusSchema = `${PaymentSchema}.status`\nexport type PaymentStatusSchema = typeof PaymentStatusSchema\n","import type { Hash } from '@xylabs/hex'\nimport type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport { PurchaseSchema } from './Schema.ts'\n\nexport interface PurchaseFields {\n /**\n * The things that were purchased\n */\n assets: Hash[]\n /**\n * The receipts for payments for this purchase. Array to allow for multiple payments\n * for a single quote.\n */\n receipts: Hash[]\n}\n\n/**\n * A purchase ties a payment made to a quote\n */\nexport type Purchase = PayloadWithSources<PurchaseFields, PurchaseSchema>\n\n/**\n * Identity function for determine if an object is a Purchase\n */\nexport const isPurchase = isPayloadOfSchemaType<Purchase>(PurchaseSchema)\n\n/**\n * Identity function for determine if an object is a Purchase with sources\n */\nexport const isPurchaseWithSources = isPayloadOfSchemaTypeWithSources<Purchase>(PurchaseSchema)\n\n/**\n * Identity function for determine if an object is a Purchase with meta\n */\nexport const isPurchaseWithMeta = isPayloadOfSchemaTypeWithMeta<Purchase>(PurchaseSchema)\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const PurchaseSchema = `${PaymentsSchema}.purchase`\nexport type PurchaseSchema = typeof PurchaseSchema\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { SupportedCurrency } from '../Currency.ts'\nimport { ReceiptSchema } from './Schema.ts'\n\nexport interface ReceiptFields {\n /**\n * The amount paid\n */\n amount: number\n /**\n * The currency of the amount paid\n */\n currency: SupportedCurrency\n}\n\n/**\n * A receipt is a record of a payment made\n */\nexport type Receipt = PayloadWithSources<ReceiptFields, ReceiptSchema>\n\n/**\n * Identity function for determine if an object is a Receipt\n */\nexport const isReceipt = isPayloadOfSchemaType<Receipt>(ReceiptSchema)\n\n/**\n * Identity function for determine if an object is a Receipt with sources\n */\nexport const isReceiptWithSources = isPayloadOfSchemaTypeWithSources<Receipt>(ReceiptSchema)\n\n/**\n * Identity function for determine if an object is a Receipt with meta\n */\nexport const isReceiptWithMeta = isPayloadOfSchemaTypeWithMeta<Receipt>(ReceiptSchema)\n","import { PaymentsSchema } from '../Schema.ts'\n\nexport const ReceiptSchema = `${PaymentsSchema}.receipt`\nexport type ReceiptSchema = typeof ReceiptSchema\n","// import type { Hash } from '@xylabs/hex'\nimport type { DivinerConfig } from '@xyo-network/diviner-model'\n\nexport const PaymentSubtotalDivinerConfigSchema = 'network.xyo.diviner.payments.subtotal.config'\nexport type PaymentSubtotalDivinerConfigSchema = typeof PaymentSubtotalDivinerConfigSchema\n\n/**\n * The configuration for the Coupon Subtotal Diviner\n */\nexport type PaymentSubtotalDivinerConfig = DivinerConfig<\n {},\n PaymentSubtotalDivinerConfigSchema\n>\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../Amount/index.ts'\n\nexport const SubtotalSchema = 'network.xyo.payments.subtotal' as const\nexport type SubtotalSchema = typeof SubtotalSchema\n\nexport interface SubtotalFields extends AmountFields {}\n\n/**\n * The result of a subtotal\n */\nexport type Subtotal = PayloadWithSources<SubtotalFields, SubtotalSchema>\n\n/**\n * Identity function for determining if an object is an Subtotal\n */\nexport const isSubtotal = isPayloadOfSchemaType<Subtotal>(SubtotalSchema)\n\n/**\n * Identity function for determining if an object is an Subtotal with sources\n */\nexport const isSubtotalWithSources = isPayloadOfSchemaTypeWithSources<Subtotal>(SubtotalSchema)\n\n/**\n * Identity function for determining if an object is an Subtotal with meta\n */\nexport const isSubtotalWithMeta = isPayloadOfSchemaTypeWithMeta<Subtotal>(SubtotalSchema)\n","// import type { Hash } from '@xylabs/hex'\nimport type { DivinerConfig } from '@xyo-network/diviner-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport const PaymentTotalDivinerConfigSchema = 'network.xyo.diviner.payments.total.config'\nexport type PaymentTotalDivinerConfigSchema = typeof PaymentTotalDivinerConfigSchema\n\n/**\n * The configuration for the Total Diviner\n */\nexport type PaymentTotalDivinerConfig = DivinerConfig<\n {\n /**\n * The Diviner that will be used to determine the discount\n */\n paymentDiscountDiviner?: ModuleIdentifier\n\n /**\n * The Diviner that will be used to determine the subtotal\n */\n paymentSubtotalDiviner?: ModuleIdentifier\n },\n PaymentTotalDivinerConfigSchema\n>\n","import type { PayloadWithSources } from '@xyo-network/payload-model'\nimport {\n isPayloadOfSchemaType,\n isPayloadOfSchemaTypeWithMeta,\n isPayloadOfSchemaTypeWithSources,\n} from '@xyo-network/payload-model'\n\nimport type { AmountFields } from '../../Amount/index.ts'\n\nexport const TotalSchema = 'network.xyo.payments.total' as const\nexport type TotalSchema = typeof TotalSchema\n\nexport interface TotalFields extends AmountFields {}\n\n/**\n * The result of a total\n */\nexport type Total = PayloadWithSources<TotalFields, TotalSchema>\n\n/**\n * Identity function for determining if an object is an Total\n */\nexport const isTotal = isPayloadOfSchemaType<Total>(TotalSchema)\n\n/**\n * Identity function for determining if an object is an Total with sources\n */\nexport const isTotalWithSources = isPayloadOfSchemaTypeWithSources<Total>(TotalSchema)\n\n/**\n * Identity function for determining if an object is an Total with meta\n */\nexport const isTotalWithMeta = isPayloadOfSchemaTypeWithMeta<Total>(TotalSchema)\n"],"mappings":";AAsXO,IAAM,uBAA4E;AAAA,EACvF,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,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","names":["isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","name","name","name","asAddress","name","assertEx","isBoundWitnessWithMeta","name","errors","name","asAddress","name","assertEx","isBoundWitnessWithMeta","BoundWitnessValidator","name","errors","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources","isPayloadOfSchemaType","isPayloadOfSchemaTypeWithMeta","isPayloadOfSchemaTypeWithSources"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/payment-payload-plugins",
3
- "version": "3.0.18",
3
+ "version": "3.0.20",
4
4
  "description": "Typescript/Javascript Plugins for XYO Platform",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -29,19 +29,19 @@
29
29
  "module": "dist/neutral/index.mjs",
30
30
  "types": "dist/neutral/index.d.ts",
31
31
  "dependencies": {
32
- "@xylabs/assert": "^4.0.9",
33
- "@xylabs/crypto": "^4.0.9",
34
- "@xylabs/hex": "^4.0.9",
35
- "@xyo-network/account-model": "^3.1.9",
36
- "@xyo-network/boundwitness-builder": "^3.1.9",
37
- "@xyo-network/boundwitness-model": "^3.1.9",
38
- "@xyo-network/boundwitness-validator": "^3.1.9",
39
- "@xyo-network/diviner-hash-lease": "^3.1.9",
40
- "@xyo-network/diviner-model": "^3.1.9",
41
- "@xyo-network/id-payload-plugin": "^3.1.9",
42
- "@xyo-network/module-model": "^3.1.9",
43
- "@xyo-network/payload-model": "^3.1.9",
44
- "@xyo-network/xns-record-payload-plugins": "^3.0.18"
32
+ "@xylabs/assert": "^4.0.10",
33
+ "@xylabs/crypto": "^4.0.10",
34
+ "@xylabs/hex": "^4.0.10",
35
+ "@xyo-network/account-model": "^3.1.10",
36
+ "@xyo-network/boundwitness-builder": "^3.1.10",
37
+ "@xyo-network/boundwitness-model": "^3.1.10",
38
+ "@xyo-network/boundwitness-validator": "^3.1.10",
39
+ "@xyo-network/diviner-hash-lease": "^3.1.10",
40
+ "@xyo-network/diviner-model": "^3.1.10",
41
+ "@xyo-network/id-payload-plugin": "^3.1.10",
42
+ "@xyo-network/module-model": "^3.1.10",
43
+ "@xyo-network/payload-model": "^3.1.10",
44
+ "@xyo-network/xns-record-payload-plugins": "^3.0.20"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@xylabs/ts-scripts-yarn3": "^4.0.7",
@@ -12,9 +12,7 @@ import type { CouponFields } from '../types/index.ts'
12
12
  export const FixedAmountCouponSchema = `${CouponSchema}.fixed.amount` as const
13
13
  export type FixedAmountCouponSchema = typeof FixedAmountCouponSchema
14
14
 
15
- export interface FixedAmountCouponFields extends CouponFields, AmountFields {
16
-
17
- }
15
+ export interface FixedAmountCouponFields extends CouponFields, AmountFields {}
18
16
 
19
17
  /**
20
18
  * A coupon that provides a fixed discount amount
@@ -13,7 +13,6 @@ export type FixedPercentageCouponSchema = typeof FixedPercentageCouponSchema
13
13
 
14
14
  export interface FixedPercentageCouponFields extends CouponFields {
15
15
  percentage: number
16
-
17
16
  }
18
17
 
19
18
  /**
@@ -0,0 +1,35 @@
1
+ import type { PayloadWithSources } from '@xyo-network/payload-model'
2
+ import {
3
+ isPayloadOfSchemaType,
4
+ isPayloadOfSchemaTypeWithMeta,
5
+ isPayloadOfSchemaTypeWithSources,
6
+ } from '@xyo-network/payload-model'
7
+
8
+ import type { AmountFields } from '../../../../Amount/index.ts'
9
+ import { CouponSchema } from '../Schema.ts'
10
+ import type { CouponFields } from '../types/index.ts'
11
+
12
+ export const FixedPriceCouponSchema = `${CouponSchema}.fixed.price` as const
13
+ export type FixedPriceCouponSchema = typeof FixedPriceCouponSchema
14
+
15
+ export interface FixedPriceCouponFields extends CouponFields, AmountFields { }
16
+
17
+ /**
18
+ * A coupon that provides a fixed total price
19
+ */
20
+ export type FixedPriceCoupon = PayloadWithSources<FixedPriceCouponFields, FixedPriceCouponSchema>
21
+
22
+ /**
23
+ * Identity function for determining if an object is an FixedPriceCoupon
24
+ */
25
+ export const isFixedPriceCoupon = isPayloadOfSchemaType<FixedPriceCoupon>(FixedPriceCouponSchema)
26
+
27
+ /**
28
+ * Identity function for determining if an object is an FixedPriceCoupon with sources
29
+ */
30
+ export const isFixedPriceCouponWithSources = isPayloadOfSchemaTypeWithSources<FixedPriceCoupon>(FixedPriceCouponSchema)
31
+
32
+ /**
33
+ * Identity function for determining if an object is an FixedPriceCoupon with meta
34
+ */
35
+ export const isFixedPriceCouponWithMeta = isPayloadOfSchemaTypeWithMeta<FixedPriceCoupon>(FixedPriceCouponSchema)
@@ -1,2 +1,3 @@
1
1
  export * from './FixedAmount.ts'
2
2
  export * from './FixedPercentage.ts'
3
+ export * from './FixedPrice.ts'
@@ -1,25 +1,39 @@
1
1
  import {
2
- type FixedAmountCoupon, type FixedPercentageCoupon, isFixedAmountCoupon, isFixedAmountCouponWithMeta, isFixedAmountCouponWithSources, isFixedPercentageCoupon,
2
+ type FixedAmountCoupon, type FixedPercentageCoupon, type FixedPriceCoupon,
3
+ isFixedAmountCoupon, isFixedAmountCouponWithMeta, isFixedAmountCouponWithSources, isFixedPercentageCoupon,
3
4
  isFixedPercentageCouponWithMeta,
4
5
  isFixedPercentageCouponWithSources,
6
+ isFixedPriceCoupon,
7
+ isFixedPriceCouponWithSources,
5
8
  } from './Coupons/index.ts'
6
9
 
7
10
  /**
8
- * The result of a discount
11
+ * The type of coupons
9
12
  */
10
- export type Coupon = FixedAmountCoupon | FixedPercentageCoupon
13
+ export type Coupon =
14
+ FixedAmountCoupon
15
+ | FixedPercentageCoupon
16
+ | FixedPriceCoupon
11
17
 
12
18
  /**
13
19
  * Identity function for determining if an object is an Coupon
14
20
  */
15
- export const isCoupon = (x?: unknown | null) => isFixedAmountCoupon(x) || isFixedPercentageCoupon(x)
21
+ export const isCoupon = (x?: unknown | null) =>
22
+ isFixedAmountCoupon(x)
23
+ || isFixedPercentageCoupon(x)
24
+ || isFixedPriceCoupon(x)
16
25
 
17
26
  /**
18
27
  * Identity function for determining if an object is an Coupon with sources
19
28
  */
20
- export const isCouponWithSources = (x?: unknown | null) => isFixedAmountCouponWithSources(x) || isFixedPercentageCouponWithSources(x)
29
+ export const isCouponWithSources = (x?: unknown | null) =>
30
+ isFixedAmountCouponWithSources(x)
31
+ || isFixedPercentageCouponWithSources(x)
32
+ || isFixedPriceCouponWithSources(x)
21
33
 
22
34
  /**
23
35
  * Identity function for determining if an object is an Coupon with meta
24
36
  */
25
- export const isCouponWithMeta = (x?: unknown | null) => isFixedAmountCouponWithMeta(x) || isFixedPercentageCouponWithMeta(x)
37
+ export const isCouponWithMeta = (x?: unknown | null) =>
38
+ isFixedAmountCouponWithMeta(x)
39
+ || isFixedPercentageCouponWithMeta(x)
@@ -1,9 +1,14 @@
1
+ import type { Hash } from '@xylabs/hex'
1
2
  import type { DurationFields } from '@xyo-network/xns-record-payload-plugins'
2
3
 
3
4
  /**
4
5
  * The fields that are common across all coupons
5
6
  */
6
7
  export interface CouponFields extends DurationFields {
8
+ /**
9
+ * The conditions that must be met in order for this coupon to be applied
10
+ */
11
+ conditions?: Hash[]
7
12
  /**
8
13
  * Whether or not this discount can be stacked with other discounts
9
14
  */