@classytic/promo 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/README.md +226 -22
  3. package/dist/{index-J5BC20DN.d.mts → constants-CrbSSQG5.d.mts} +1 -3
  4. package/dist/{constants-BVajdyL3.mjs → constants-D0Rntp2f.mjs} +1 -3
  5. package/dist/index.d.mts +763 -10
  6. package/dist/index.mjs +1721 -34
  7. package/dist/schemas/index.d.mts +253 -0
  8. package/dist/schemas/index.mjs +135 -0
  9. package/package.json +20 -35
  10. package/dist/config-iZjn_8pp.d.mts +0 -71
  11. package/dist/domain/enums/index.d.mts +0 -2
  12. package/dist/domain/enums/index.mjs +0 -2
  13. package/dist/domain/index.d.mts +0 -61
  14. package/dist/domain/index.mjs +0 -4
  15. package/dist/domain-errors-BEkXvy5O.mjs +0 -80
  16. package/dist/event-emitter.port-DaodlJSG.d.mts +0 -8
  17. package/dist/event-types-CsTV1FKX.mjs +0 -25
  18. package/dist/events/index.d.mts +0 -2
  19. package/dist/events/index.mjs +0 -3
  20. package/dist/events-CprEWlN7.mjs +0 -25
  21. package/dist/index-B7lLH19a.d.mts +0 -13
  22. package/dist/index-C52zSBkI.d.mts +0 -96
  23. package/dist/index-Cu9iwy4v.d.mts +0 -99
  24. package/dist/index-l09KqnlE.d.mts +0 -81
  25. package/dist/models/index.d.mts +0 -2
  26. package/dist/models/index.mjs +0 -2
  27. package/dist/models-DdBNae7h.mjs +0 -277
  28. package/dist/repositories/index.d.mts +0 -2
  29. package/dist/repositories/index.mjs +0 -2
  30. package/dist/repositories-DgZIY9wD.mjs +0 -295
  31. package/dist/results-Ca5ZCNbN.d.mts +0 -218
  32. package/dist/services/index.d.mts +0 -2
  33. package/dist/services/index.mjs +0 -2
  34. package/dist/services-Cz0gHrmX.mjs +0 -815
  35. package/dist/types/index.d.mts +0 -3
  36. package/dist/types/index.mjs +0 -1
  37. package/dist/unit-of-work.port-DaMW8WZK.d.mts +0 -7
  38. package/dist/voucher.port-yxfb3MHJ.d.mts +0 -146
@@ -1,80 +0,0 @@
1
- //#region src/domain/errors/base.ts
2
- var PromoError = class extends Error {
3
- constructor(message) {
4
- super(message);
5
- this.name = this.constructor.name;
6
- }
7
- };
8
- //#endregion
9
- //#region src/domain/errors/domain-errors.ts
10
- var ValidationError = class extends PromoError {
11
- code = "VALIDATION_ERROR";
12
- };
13
- var ProgramNotFoundError = class extends PromoError {
14
- code = "PROGRAM_NOT_FOUND";
15
- constructor(id) {
16
- super(id ? `Program '${id}' not found` : "Program not found");
17
- }
18
- };
19
- var RuleNotFoundError = class extends PromoError {
20
- code = "RULE_NOT_FOUND";
21
- constructor(id) {
22
- super(id ? `Rule '${id}' not found` : "Rule not found");
23
- }
24
- };
25
- var RewardNotFoundError = class extends PromoError {
26
- code = "REWARD_NOT_FOUND";
27
- constructor(id) {
28
- super(id ? `Reward '${id}' not found` : "Reward not found");
29
- }
30
- };
31
- var VoucherNotFoundError = class extends PromoError {
32
- code = "VOUCHER_NOT_FOUND";
33
- constructor(codeOrId) {
34
- super(codeOrId ? `Voucher '${codeOrId}' not found` : "Voucher not found");
35
- }
36
- };
37
- var InvalidTransitionError = class extends PromoError {
38
- code = "INVALID_TRANSITION";
39
- constructor(from, to) {
40
- super(`Cannot transition from '${from}' to '${to}'`);
41
- }
42
- };
43
- var VoucherExpiredError = class extends PromoError {
44
- code = "VOUCHER_EXPIRED";
45
- constructor(code) {
46
- super(`Voucher '${code}' has expired`);
47
- }
48
- };
49
- var VoucherExhaustedError = class extends PromoError {
50
- code = "VOUCHER_EXHAUSTED";
51
- constructor(code) {
52
- super(`Voucher '${code}' has reached its usage limit`);
53
- }
54
- };
55
- var InsufficientBalanceError = class extends PromoError {
56
- code = "INSUFFICIENT_BALANCE";
57
- constructor(code, available, requested) {
58
- super(`Voucher '${code}' has insufficient balance: ${available} available, ${requested} requested`);
59
- }
60
- };
61
- var TenantIsolationError = class extends PromoError {
62
- code = "TENANT_ISOLATION";
63
- constructor() {
64
- super("Tenant context is required but was not provided");
65
- }
66
- };
67
- var DuplicateRedemptionError = class extends PromoError {
68
- code = "DUPLICATE_REDEMPTION";
69
- constructor(key) {
70
- super(`Duplicate redemption detected for idempotency key '${key}'`);
71
- }
72
- };
73
- var EvaluationNotFoundError = class extends PromoError {
74
- code = "EVALUATION_NOT_FOUND";
75
- constructor(id) {
76
- super(`Evaluation '${id}' not found or already committed`);
77
- }
78
- };
79
- //#endregion
80
- export { ProgramNotFoundError as a, TenantIsolationError as c, VoucherExpiredError as d, VoucherNotFoundError as f, InvalidTransitionError as i, ValidationError as l, EvaluationNotFoundError as n, RewardNotFoundError as o, PromoError as p, InsufficientBalanceError as r, RuleNotFoundError as s, DuplicateRedemptionError as t, VoucherExhaustedError as u };
@@ -1,8 +0,0 @@
1
- //#region src/domain/ports/event-emitter.port.d.ts
2
- interface EventEmitterPort {
3
- emit(event: string, payload: unknown): void;
4
- on(event: string, handler: (payload: unknown) => void | Promise<void>): void;
5
- off(event: string, handler: (payload: unknown) => void | Promise<void>): void;
6
- }
7
- //#endregion
8
- export { EventEmitterPort as t };
@@ -1,25 +0,0 @@
1
- //#region src/events/event-types.ts
2
- const PromoEvents = {
3
- PROGRAM_CREATED: "promo.program.created",
4
- PROGRAM_ACTIVATED: "promo.program.activated",
5
- PROGRAM_PAUSED: "promo.program.paused",
6
- PROGRAM_ARCHIVED: "promo.program.archived",
7
- RULE_ADDED: "promo.rule.added",
8
- RULE_UPDATED: "promo.rule.updated",
9
- RULE_REMOVED: "promo.rule.removed",
10
- REWARD_ADDED: "promo.reward.added",
11
- REWARD_UPDATED: "promo.reward.updated",
12
- REWARD_REMOVED: "promo.reward.removed",
13
- VOUCHER_GENERATED: "promo.voucher.generated",
14
- VOUCHER_REDEEMED: "promo.voucher.redeemed",
15
- VOUCHER_CANCELLED: "promo.voucher.cancelled",
16
- VOUCHER_EXPIRED: "promo.voucher.expired",
17
- GIFT_CARD_SPENT: "promo.gift_card.spent",
18
- GIFT_CARD_TOPPED_UP: "promo.gift_card.topped_up",
19
- GIFT_CARD_EXHAUSTED: "promo.gift_card.exhausted",
20
- EVALUATION_COMPLETED: "promo.evaluation.completed",
21
- EVALUATION_COMMITTED: "promo.evaluation.committed",
22
- EVALUATION_ROLLED_BACK: "promo.evaluation.rolled_back"
23
- };
24
- //#endregion
25
- export { PromoEvents as t };
@@ -1,2 +0,0 @@
1
- import { a as ProgramLifecyclePayload, c as RulePayload, d as VoucherRedeemedPayload, f as InProcessEventBus, i as GiftCardToppedUpPayload, l as VoucherGeneratedPayload, n as EvaluationCompletedPayload, o as PromoEvents, r as GiftCardSpentPayload, s as RewardPayload, t as EvaluationCommittedPayload, u as VoucherLifecyclePayload } from "../index-C52zSBkI.mjs";
2
- export { EvaluationCommittedPayload, EvaluationCompletedPayload, GiftCardSpentPayload, GiftCardToppedUpPayload, InProcessEventBus, ProgramLifecyclePayload, PromoEvents, RewardPayload, RulePayload, VoucherGeneratedPayload, VoucherLifecyclePayload, VoucherRedeemedPayload };
@@ -1,3 +0,0 @@
1
- import { t as InProcessEventBus } from "../events-CprEWlN7.mjs";
2
- import { t as PromoEvents } from "../event-types-CsTV1FKX.mjs";
3
- export { InProcessEventBus, PromoEvents };
@@ -1,25 +0,0 @@
1
- //#region src/events/event-bus.ts
2
- var InProcessEventBus = class {
3
- handlers = /* @__PURE__ */ new Map();
4
- emit(event, payload) {
5
- const set = this.handlers.get(event);
6
- if (!set) return;
7
- for (const handler of set) try {
8
- const result = handler(payload);
9
- if (result && typeof result.catch === "function") result.catch(() => {});
10
- } catch {}
11
- }
12
- on(event, handler) {
13
- let set = this.handlers.get(event);
14
- if (!set) {
15
- set = /* @__PURE__ */ new Set();
16
- this.handlers.set(event, set);
17
- }
18
- set.add(handler);
19
- }
20
- off(event, handler) {
21
- this.handlers.get(event)?.delete(handler);
22
- }
23
- };
24
- //#endregion
25
- export { InProcessEventBus as t };
@@ -1,13 +0,0 @@
1
- import { n as ModelName, s as ResolvedTenant, t as IndexDefinition } from "./config-iZjn_8pp.mjs";
2
- import { Connection, Model } from "mongoose";
3
-
4
- //#region src/models/index.d.ts
5
- interface PromoModels {
6
- Program: Model<unknown>;
7
- Rule: Model<unknown>;
8
- Reward: Model<unknown>;
9
- Voucher: Model<unknown>;
10
- }
11
- declare function createModels(connection: Connection, tenant: ResolvedTenant, indexes?: Partial<Record<ModelName, IndexDefinition[]>>): PromoModels;
12
- //#endregion
13
- export { createModels as n, PromoModels as t };
@@ -1,96 +0,0 @@
1
- import { t as EventEmitterPort } from "./event-emitter.port-DaodlJSG.mjs";
2
-
3
- //#region src/events/event-bus.d.ts
4
- type Handler = (payload: unknown) => void | Promise<void>;
5
- declare class InProcessEventBus implements EventEmitterPort {
6
- private handlers;
7
- emit(event: string, payload: unknown): void;
8
- on(event: string, handler: Handler): void;
9
- off(event: string, handler: Handler): void;
10
- }
11
- //#endregion
12
- //#region src/events/event-types.d.ts
13
- declare const PromoEvents: {
14
- readonly PROGRAM_CREATED: "promo.program.created";
15
- readonly PROGRAM_ACTIVATED: "promo.program.activated";
16
- readonly PROGRAM_PAUSED: "promo.program.paused";
17
- readonly PROGRAM_ARCHIVED: "promo.program.archived";
18
- readonly RULE_ADDED: "promo.rule.added";
19
- readonly RULE_UPDATED: "promo.rule.updated";
20
- readonly RULE_REMOVED: "promo.rule.removed";
21
- readonly REWARD_ADDED: "promo.reward.added";
22
- readonly REWARD_UPDATED: "promo.reward.updated";
23
- readonly REWARD_REMOVED: "promo.reward.removed";
24
- readonly VOUCHER_GENERATED: "promo.voucher.generated";
25
- readonly VOUCHER_REDEEMED: "promo.voucher.redeemed";
26
- readonly VOUCHER_CANCELLED: "promo.voucher.cancelled";
27
- readonly VOUCHER_EXPIRED: "promo.voucher.expired";
28
- readonly GIFT_CARD_SPENT: "promo.gift_card.spent";
29
- readonly GIFT_CARD_TOPPED_UP: "promo.gift_card.topped_up";
30
- readonly GIFT_CARD_EXHAUSTED: "promo.gift_card.exhausted";
31
- readonly EVALUATION_COMPLETED: "promo.evaluation.completed";
32
- readonly EVALUATION_COMMITTED: "promo.evaluation.committed";
33
- readonly EVALUATION_ROLLED_BACK: "promo.evaluation.rolled_back";
34
- };
35
- interface ProgramLifecyclePayload {
36
- programId: string;
37
- programType: string;
38
- status: string;
39
- actorId?: string;
40
- }
41
- interface RulePayload {
42
- programId: string;
43
- ruleId: string;
44
- actorId?: string;
45
- }
46
- interface RewardPayload {
47
- programId: string;
48
- rewardId: string;
49
- actorId?: string;
50
- }
51
- interface VoucherGeneratedPayload {
52
- programId: string;
53
- voucherIds: string[];
54
- codes: string[];
55
- count: number;
56
- actorId?: string;
57
- }
58
- interface VoucherRedeemedPayload {
59
- voucherId: string;
60
- code: string;
61
- orderId: string;
62
- discountAmount: number;
63
- customerId?: string;
64
- }
65
- interface VoucherLifecyclePayload {
66
- voucherId: string;
67
- code: string;
68
- status: string;
69
- }
70
- interface GiftCardSpentPayload {
71
- voucherId: string;
72
- code: string;
73
- amount: number;
74
- remainingBalance: number;
75
- orderId: string;
76
- }
77
- interface GiftCardToppedUpPayload {
78
- voucherId: string;
79
- code: string;
80
- amount: number;
81
- newBalance: number;
82
- }
83
- interface EvaluationCompletedPayload {
84
- evaluationId: string;
85
- totalDiscount: number;
86
- programsApplied: number;
87
- codesUsed: string[];
88
- isPreview: boolean;
89
- }
90
- interface EvaluationCommittedPayload {
91
- evaluationId: string;
92
- orderId: string;
93
- totalDiscount: number;
94
- }
95
- //#endregion
96
- export { ProgramLifecyclePayload as a, RulePayload as c, VoucherRedeemedPayload as d, InProcessEventBus as f, GiftCardToppedUpPayload as i, VoucherGeneratedPayload as l, EvaluationCompletedPayload as n, PromoEvents as o, GiftCardSpentPayload as r, RewardPayload as s, EvaluationCommittedPayload as t, VoucherLifecyclePayload as u };
@@ -1,99 +0,0 @@
1
- import { c as Rule, i as ProgramPort, l as Reward, n as RulePort, o as Voucher, r as RewardPort, t as VoucherPort, u as Program } from "./voucher.port-yxfb3MHJ.mjs";
2
- import { t as EventEmitterPort } from "./event-emitter.port-DaodlJSG.mjs";
3
- import { n as UnitOfWork } from "./unit-of-work.port-DaMW8WZK.mjs";
4
- import { o as ResolvedConfig } from "./config-iZjn_8pp.mjs";
5
- import { t as PromoRepositories } from "./index-l09KqnlE.mjs";
6
- import { C as UpdateRuleInput, S as UpdateRewardInput, _ as GiftCardTopUpInput, a as GiftCardBalance, b as RedeemVoucherInput, c as VoucherValidation, d as CreateRewardInput, f as CreateRuleInput, g as GiftCardSpendInput, h as GenerateSingleCodeInput, m as GenerateCodesInput, o as PaginatedResult, p as EvaluateInput, r as EvaluationResult, t as CommitResult, u as CreateProgramInput, v as ListQuery, x as UpdateProgramInput, y as PromoContext } from "./results-Ca5ZCNbN.mjs";
7
-
8
- //#region src/services/evaluation.service.d.ts
9
- declare class EvaluationService {
10
- private programPort;
11
- private rulePort;
12
- private rewardPort;
13
- private voucherPort;
14
- private unitOfWork;
15
- private events;
16
- private config;
17
- private pendingEvaluations;
18
- constructor(programPort: ProgramPort, rulePort: RulePort, rewardPort: RewardPort, voucherPort: VoucherPort, unitOfWork: UnitOfWork, events: EventEmitterPort, config: ResolvedConfig);
19
- evaluate(input: EvaluateInput, ctx: PromoContext): Promise<EvaluationResult>;
20
- preview(input: EvaluateInput, ctx: PromoContext): Promise<EvaluationResult>;
21
- commit(evaluationId: string, orderId: string, ctx: PromoContext): Promise<CommitResult>;
22
- rollback(evaluationId: string, ctx: PromoContext): Promise<void>;
23
- private doEvaluate;
24
- private isCustomerEligible;
25
- private matchBestRule;
26
- private matchSingleRule;
27
- private filterRewardsByRule;
28
- private computeDiscount;
29
- private getEligibleItems;
30
- private describeDiscount;
31
- }
32
- //#endregion
33
- //#region src/services/program.service.d.ts
34
- interface FullProgram extends Program {
35
- rules: Rule[];
36
- rewards: Reward[];
37
- }
38
- declare class ProgramService {
39
- private programPort;
40
- private rulePort;
41
- private rewardPort;
42
- private events;
43
- private config;
44
- constructor(programPort: ProgramPort, rulePort: RulePort, rewardPort: RewardPort, events: EventEmitterPort, config: ResolvedConfig);
45
- create(input: CreateProgramInput, ctx: PromoContext): Promise<Program>;
46
- getById(id: string, ctx: PromoContext): Promise<Program>;
47
- list(query: ListQuery, ctx: PromoContext): Promise<PaginatedResult<Program>>;
48
- update(id: string, input: UpdateProgramInput, ctx: PromoContext): Promise<Program>;
49
- activate(id: string, ctx: PromoContext): Promise<Program>;
50
- pause(id: string, ctx: PromoContext): Promise<Program>;
51
- archive(id: string, ctx: PromoContext): Promise<Program>;
52
- private transition;
53
- addRule(programId: string, input: CreateRuleInput, ctx: PromoContext): Promise<Rule>;
54
- updateRule(programId: string, ruleId: string, input: UpdateRuleInput, ctx: PromoContext): Promise<Rule>;
55
- removeRule(programId: string, ruleId: string, ctx: PromoContext): Promise<void>;
56
- listRules(programId: string, ctx: PromoContext): Promise<Rule[]>;
57
- addReward(programId: string, input: CreateRewardInput, ctx: PromoContext): Promise<Reward>;
58
- updateReward(programId: string, rewardId: string, input: UpdateRewardInput, ctx: PromoContext): Promise<Reward>;
59
- removeReward(programId: string, rewardId: string, ctx: PromoContext): Promise<void>;
60
- listRewards(programId: string, ctx: PromoContext): Promise<Reward[]>;
61
- getFullProgram(id: string, ctx: PromoContext): Promise<FullProgram>;
62
- }
63
- //#endregion
64
- //#region src/services/voucher.service.d.ts
65
- declare class VoucherService {
66
- private voucherPort;
67
- private programPort;
68
- private unitOfWork;
69
- private events;
70
- private config;
71
- constructor(voucherPort: VoucherPort, programPort: ProgramPort, unitOfWork: UnitOfWork, events: EventEmitterPort, config: ResolvedConfig);
72
- generateCodes(input: GenerateCodesInput, ctx: PromoContext): Promise<Voucher[]>;
73
- generateSingleCode(input: GenerateSingleCodeInput, ctx: PromoContext): Promise<Voucher>;
74
- validateCode(code: string, ctx: PromoContext): Promise<VoucherValidation>;
75
- getByCode(code: string, ctx: PromoContext): Promise<Voucher | null>;
76
- getById(id: string, ctx: PromoContext): Promise<Voucher | null>;
77
- cancel(id: string, ctx: PromoContext): Promise<Voucher>;
78
- redeem(input: RedeemVoucherInput, ctx: PromoContext): Promise<Voucher>;
79
- getBalance(code: string, ctx: PromoContext): Promise<GiftCardBalance>;
80
- spend(input: GiftCardSpendInput, ctx: PromoContext): Promise<GiftCardBalance>;
81
- topUp(input: GiftCardTopUpInput, ctx: PromoContext): Promise<GiftCardBalance>;
82
- expireExpired(ctx: PromoContext): Promise<number>;
83
- private assertVoucherUsable;
84
- }
85
- //#endregion
86
- //#region src/services/index.d.ts
87
- interface PromoServices {
88
- program: ProgramService;
89
- voucher: VoucherService;
90
- evaluation: EvaluationService;
91
- }
92
- declare function createServices(deps: {
93
- repositories: PromoRepositories;
94
- unitOfWork: UnitOfWork;
95
- events: EventEmitterPort;
96
- config: ResolvedConfig;
97
- }): PromoServices;
98
- //#endregion
99
- export { ProgramService as a, FullProgram as i, createServices as n, EvaluationService as o, VoucherService as r, PromoServices as t };
@@ -1,81 +0,0 @@
1
- import { c as Rule, i as ProgramPort, l as Reward, n as RulePort, o as Voucher, r as RewardPort, t as VoucherPort, u as Program } from "./voucher.port-yxfb3MHJ.mjs";
2
- import { t as PromoModels } from "./index-B7lLH19a.mjs";
3
- import { Model } from "mongoose";
4
- import { PluginType } from "@classytic/mongokit";
5
-
6
- //#region src/repositories/program.repository.d.ts
7
- declare class ProgramRepository implements ProgramPort {
8
- private repo;
9
- private tenantField;
10
- constructor(model: Model<any>, plugins?: PluginType[], tenantField?: string);
11
- create(data: Record<string, unknown>, session?: unknown): Promise<Program>;
12
- getById(id: string, tenantId?: string): Promise<Program | null>;
13
- update(id: string, data: Record<string, unknown>, tenantId?: string, session?: unknown): Promise<Program>;
14
- findMany(query: Record<string, unknown>, options?: Record<string, unknown>): Promise<Program[]>;
15
- findActive(tenantId?: string, now?: Date): Promise<Program[]>;
16
- incrementUsage(id: string, tenantId?: string, session?: unknown): Promise<Program>;
17
- decrementUsage(id: string, tenantId?: string, session?: unknown): Promise<Program>;
18
- getCustomerUsage(id: string, customerId: string, tenantId?: string): Promise<number>;
19
- incrementCustomerUsage(id: string, customerId: string, tenantId?: string, session?: unknown): Promise<Program>;
20
- }
21
- //#endregion
22
- //#region src/repositories/reward.repository.d.ts
23
- declare class RewardRepository implements RewardPort {
24
- private repo;
25
- private tenantField;
26
- constructor(model: Model<any>, plugins?: PluginType[], tenantField?: string);
27
- create(data: Record<string, unknown>, session?: unknown): Promise<Reward>;
28
- getById(id: string, tenantId?: string): Promise<Reward | null>;
29
- update(id: string, data: Record<string, unknown>, tenantId?: string, session?: unknown): Promise<Reward>;
30
- delete(id: string, tenantId?: string, session?: unknown): Promise<void>;
31
- findByProgramId(programId: string, tenantId?: string): Promise<Reward[]>;
32
- findByProgramIds(programIds: string[], tenantId?: string): Promise<Reward[]>;
33
- }
34
- //#endregion
35
- //#region src/repositories/rule.repository.d.ts
36
- declare class RuleRepository implements RulePort {
37
- private repo;
38
- private tenantField;
39
- constructor(model: Model<any>, plugins?: PluginType[], tenantField?: string);
40
- create(data: Record<string, unknown>, session?: unknown): Promise<Rule>;
41
- getById(id: string, tenantId?: string): Promise<Rule | null>;
42
- update(id: string, data: Record<string, unknown>, tenantId?: string, session?: unknown): Promise<Rule>;
43
- delete(id: string, tenantId?: string, session?: unknown): Promise<void>;
44
- findByProgramId(programId: string, tenantId?: string): Promise<Rule[]>;
45
- findByCode(code: string, tenantId?: string): Promise<Rule | null>;
46
- findByProgramIds(programIds: string[], tenantId?: string): Promise<Rule[]>;
47
- }
48
- //#endregion
49
- //#region src/repositories/voucher.repository.d.ts
50
- declare class VoucherRepository implements VoucherPort {
51
- private repo;
52
- private tenantField;
53
- constructor(model: Model<any>, plugins?: PluginType[], tenantField?: string);
54
- create(data: Record<string, unknown>, session?: unknown): Promise<Voucher>;
55
- createMany(data: Record<string, unknown>[], session?: unknown): Promise<Voucher[]>;
56
- getById(id: string, tenantId?: string): Promise<Voucher | null>;
57
- getByCode(code: string, tenantId?: string): Promise<Voucher | null>;
58
- update(id: string, data: Record<string, unknown>, tenantId?: string, session?: unknown): Promise<Voucher>;
59
- findMany(query: Record<string, unknown>, options?: Record<string, unknown>): Promise<Voucher[]>;
60
- incrementUsage(id: string, redemption: Record<string, unknown>, tenantId?: string, session?: unknown): Promise<Voucher>;
61
- addLedgerEntry(id: string, entry: Record<string, unknown>, balanceDelta: number, tenantId?: string, session?: unknown): Promise<Voucher>;
62
- expireByDate(before: Date, tenantId?: string): Promise<number>;
63
- hasIdempotencyKey(id: string, key: string): Promise<boolean>;
64
- }
65
- //#endregion
66
- //#region src/repositories/index.d.ts
67
- interface PromoRepositories {
68
- program: ProgramRepository;
69
- rule: RuleRepository;
70
- reward: RewardRepository;
71
- voucher: VoucherRepository;
72
- }
73
- interface RepositoryPluginsMap {
74
- program?: PluginType[];
75
- rule?: PluginType[];
76
- reward?: PluginType[];
77
- voucher?: PluginType[];
78
- }
79
- declare function createRepositories(models: PromoModels, plugins?: RepositoryPluginsMap, tenantField?: string): PromoRepositories;
80
- //#endregion
81
- export { RuleRepository as a, VoucherRepository as i, RepositoryPluginsMap as n, RewardRepository as o, createRepositories as r, ProgramRepository as s, PromoRepositories as t };
@@ -1,2 +0,0 @@
1
- import { n as createModels, t as PromoModels } from "../index-B7lLH19a.mjs";
2
- export { PromoModels, createModels };
@@ -1,2 +0,0 @@
1
- import { t as createModels } from "../models-DdBNae7h.mjs";
2
- export { createModels };