@classytic/crm 1.1.1 → 1.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.
package/dist/index.d.ts CHANGED
@@ -13,7 +13,7 @@ import { HttpError } from "@classytic/repo-core/errors";
13
13
  * Context key for the post-commit event queue. `Symbol.for` so the host
14
14
  * and the package agree on the key even across duplicated installs.
15
15
  */
16
- declare const PENDING_EVENTS: unique symbol;
16
+ export declare const PENDING_EVENTS: unique symbol;
17
17
  /** CrmContext as seen inside a unit of work — carries the deferred queue. */
18
18
  type InternalCrmContext = CrmContext & {
19
19
  [PENDING_EVENTS]?: DomainEvent[];
@@ -35,7 +35,7 @@ interface CrmEventDispatcherOptions {
35
35
  * (host-facing surface unchanged); domain verbs call `dispatch(ctx, event)`
36
36
  * so session/outbox/queue routing happens in ONE place.
37
37
  */
38
- declare class CrmEventDispatcher implements EventTransport {
38
+ export declare class CrmEventDispatcher implements EventTransport {
39
39
  readonly transport: EventTransport;
40
40
  private readonly outbox;
41
41
  private readonly logger;
@@ -57,11 +57,11 @@ declare class CrmEventDispatcher implements EventTransport {
57
57
  * Hosts composing their own outer transaction call this after commit;
58
58
  * most should use `engine.withTransaction(ctx, fn)` instead.
59
59
  */
60
- declare function flushPending(transport: Pick<EventTransport, 'publish'> | undefined, events: DomainEvent[], logger?: CrmLogger): Promise<void>;
60
+ export declare function flushPending(transport: Pick<EventTransport, 'publish'> | undefined, events: DomainEvent[], logger?: CrmLogger): Promise<void>;
61
61
  //#endregion
62
62
  //#region src/engine/modules.d.ts
63
63
  /** Coarse CRM feature bundles. Keep entity-level switches out of the API. */
64
- interface CrmModulesConfig {
64
+ export interface CrmModulesConfig {
65
65
  /** Operational sales CRM: leads, accounts, contacts, opportunities and follow-up. */
66
66
  sales?: boolean | undefined;
67
67
  /** Customer communication: conversations, messages, consent and email events. */
@@ -69,37 +69,37 @@ interface CrmModulesConfig {
69
69
  /** Campaign and sequence automation. Implies engagement and sales. */
70
70
  automation?: boolean | undefined;
71
71
  }
72
- interface ResolvedCrmModules {
72
+ export interface ResolvedCrmModules {
73
73
  readonly sales: boolean;
74
74
  readonly engagement: boolean;
75
75
  readonly automation: boolean;
76
76
  }
77
- declare const ALL_CRM_MODULES: ResolvedCrmModules;
77
+ export declare const ALL_CRM_MODULES: ResolvedCrmModules;
78
78
  /**
79
79
  * Resolve module dependencies once at boot.
80
80
  *
81
81
  * Omitting `modules` preserves the pre-module package behaviour (everything
82
82
  * enabled). Supplying it is opt-in: unspecified modules are disabled.
83
83
  */
84
- declare function resolveCrmModules(modules: CrmModulesConfig | undefined): ResolvedCrmModules;
84
+ export declare function resolveCrmModules(modules: CrmModulesConfig | undefined): ResolvedCrmModules;
85
85
  //#endregion
86
86
  //#region src/models/tenant-field.d.ts
87
- interface SchemaBuildConfig {
87
+ export interface SchemaBuildConfig {
88
88
  /** Canonical resolved tenant config. Engine plumbs this everywhere. */
89
89
  tenant: ResolvedTenantConfig;
90
90
  /** Optional Mongoose model namespace for hosts with generic model names. */
91
91
  modelPrefix?: string | undefined;
92
92
  }
93
- declare function crmModelName(config: SchemaBuildConfig, base: string): string;
93
+ export declare function crmModelName(config: SchemaBuildConfig, base: string): string;
94
94
  /**
95
95
  * Tenant-column schema definition. Use this anywhere a model has
96
96
  * `organizationId` — never write the raw type in a schema file.
97
97
  */
98
- declare function tenantFieldDef(config: SchemaBuildConfig): SchemaDefinitionProperty;
98
+ export declare function tenantFieldDef(config: SchemaBuildConfig): SchemaDefinitionProperty;
99
99
  //#endregion
100
100
  //#region src/models/pipeline.schema.d.ts
101
101
  /** Mongoose document shape for a single embedded stage. */
102
- interface IStageDocument {
102
+ export interface IStageDocument {
103
103
  _id: import('mongoose').Types.ObjectId;
104
104
  name: string;
105
105
  /** Ascending order in the pipeline. Treated as identifier on `moveToStage`. */
@@ -110,7 +110,7 @@ interface IStageDocument {
110
110
  description?: string;
111
111
  }
112
112
  /** Mongoose document shape for a Pipeline. */
113
- interface IPipelineDocument {
113
+ export interface IPipelineDocument {
114
114
  _id: import('mongoose').Types.ObjectId;
115
115
  organizationId: import('mongoose').Types.ObjectId | string;
116
116
  name: string;
@@ -124,8 +124,8 @@ interface IPipelineDocument {
124
124
  createdAt: Date;
125
125
  updatedAt: Date;
126
126
  }
127
- declare function buildPipelineSchema(config: SchemaBuildConfig): Schema<IPipelineDocument>;
128
- declare function createPipelineModel(connection: Connection, config: SchemaBuildConfig): Model<IPipelineDocument>;
127
+ export declare function buildPipelineSchema(config: SchemaBuildConfig): Schema<IPipelineDocument>;
128
+ export declare function createPipelineModel(connection: Connection, config: SchemaBuildConfig): Model<IPipelineDocument>;
129
129
  //#endregion
130
130
  //#region src/enums/lead-status.d.ts
131
131
  /**
@@ -138,13 +138,13 @@ declare function createPipelineModel(connection: Connection, config: SchemaBuild
138
138
  * disqualified — rejected (bad fit, spam, duplicate)
139
139
  * nurturing — not ready now; parked for later outreach
140
140
  */
141
- declare const LEAD_STATUSES: readonly ["new", "contacted", "qualified", "converted", "disqualified", "nurturing"];
141
+ export declare const LEAD_STATUSES: readonly ['new', 'contacted', 'qualified', 'converted', 'disqualified', 'nurturing'];
142
142
  type LeadStatus = (typeof LEAD_STATUSES)[number];
143
- declare const LEAD_TRANSITIONS: Record<LeadStatus, readonly LeadStatus[]>;
144
- declare function canTransitionLead(from: LeadStatus, to: LeadStatus): boolean;
143
+ export declare const LEAD_TRANSITIONS: Record<LeadStatus, readonly LeadStatus[]>;
144
+ export declare function canTransitionLead(from: LeadStatus, to: LeadStatus): boolean;
145
145
  //#endregion
146
146
  //#region src/models/lead.schema.d.ts
147
- interface ILeadStatusEntry {
147
+ export interface ILeadStatusEntry {
148
148
  status: LeadStatus;
149
149
  occurredAt: Date;
150
150
  by?: string;
@@ -156,14 +156,14 @@ interface ILeadStatusEntry {
156
156
  * `LeadRepository.recordEngagement`. Read by the lead scorer alongside
157
157
  * the firmographic fields. Zero-valued on old rows (nested default).
158
158
  */
159
- interface ILeadEngagement {
159
+ export interface ILeadEngagement {
160
160
  opens: number;
161
161
  clicks: number;
162
162
  replies: number;
163
163
  activities: number;
164
164
  lastEngagedAt?: Date;
165
165
  }
166
- interface ILeadDocument {
166
+ export interface ILeadDocument {
167
167
  _id: import('mongoose').Types.ObjectId;
168
168
  organizationId: import('mongoose').Types.ObjectId | string;
169
169
  fullName: string;
@@ -192,8 +192,8 @@ interface ILeadDocument {
192
192
  createdAt: Date;
193
193
  updatedAt: Date;
194
194
  }
195
- declare function buildLeadSchema(config: SchemaBuildConfig): Schema<ILeadDocument>;
196
- declare function createLeadModel(connection: Connection, config: SchemaBuildConfig): Model<ILeadDocument>;
195
+ export declare function buildLeadSchema(config: SchemaBuildConfig): Schema<ILeadDocument>;
196
+ export declare function createLeadModel(connection: Connection, config: SchemaBuildConfig): Model<ILeadDocument>;
197
197
  //#endregion
198
198
  //#region src/enums/opportunity-status.d.ts
199
199
  /**
@@ -203,20 +203,20 @@ declare function createLeadModel(connection: Connection, config: SchemaBuildConf
203
203
  * convention is to clone the opportunity rather than revive the
204
204
  * terminal record.
205
205
  */
206
- declare const OPPORTUNITY_STATUSES: readonly ["open", "won", "lost", "abandoned"];
206
+ export declare const OPPORTUNITY_STATUSES: readonly ['open', 'won', 'lost', 'abandoned'];
207
207
  type OpportunityStatus = (typeof OPPORTUNITY_STATUSES)[number];
208
- declare const OPPORTUNITY_TRANSITIONS: Record<OpportunityStatus, readonly OpportunityStatus[]>;
209
- declare function canTransitionOpportunity(from: OpportunityStatus, to: OpportunityStatus): boolean;
208
+ export declare const OPPORTUNITY_TRANSITIONS: Record<OpportunityStatus, readonly OpportunityStatus[]>;
209
+ export declare function canTransitionOpportunity(from: OpportunityStatus, to: OpportunityStatus): boolean;
210
210
  //#endregion
211
211
  //#region src/models/opportunity.schema.d.ts
212
- interface IOpportunityStatusEntry {
212
+ export interface IOpportunityStatusEntry {
213
213
  status: OpportunityStatus;
214
214
  stageId?: string;
215
215
  occurredAt: Date;
216
216
  by?: string;
217
217
  note?: string;
218
218
  }
219
- interface IOpportunityDocument {
219
+ export interface IOpportunityDocument {
220
220
  _id: import('mongoose').Types.ObjectId;
221
221
  organizationId: import('mongoose').Types.ObjectId | string;
222
222
  name: string;
@@ -239,11 +239,11 @@ interface IOpportunityDocument {
239
239
  createdAt: Date;
240
240
  updatedAt: Date;
241
241
  }
242
- declare function buildOpportunitySchema(config: SchemaBuildConfig): Schema<IOpportunityDocument>;
243
- declare function createOpportunityModel(connection: Connection, config: SchemaBuildConfig): Model<IOpportunityDocument>;
242
+ export declare function buildOpportunitySchema(config: SchemaBuildConfig): Schema<IOpportunityDocument>;
243
+ export declare function createOpportunityModel(connection: Connection, config: SchemaBuildConfig): Model<IOpportunityDocument>;
244
244
  //#endregion
245
245
  //#region src/models/contact.schema.d.ts
246
- interface IContactName {
246
+ export interface IContactName {
247
247
  given: string;
248
248
  family: string;
249
249
  middle?: string;
@@ -251,7 +251,7 @@ interface IContactName {
251
251
  suffix?: string;
252
252
  preferred?: string;
253
253
  }
254
- interface IContactInfoEmbedded {
254
+ export interface IContactInfoEmbedded {
255
255
  email?: string;
256
256
  personalEmail?: string;
257
257
  phone?: string;
@@ -261,7 +261,7 @@ interface IContactInfoEmbedded {
261
261
  linkedin?: string;
262
262
  instagram?: string;
263
263
  }
264
- interface IContactDocument {
264
+ export interface IContactDocument {
265
265
  _id: import('mongoose').Types.ObjectId;
266
266
  organizationId: import('mongoose').Types.ObjectId | string;
267
267
  name: IContactName;
@@ -276,11 +276,11 @@ interface IContactDocument {
276
276
  createdAt: Date;
277
277
  updatedAt: Date;
278
278
  }
279
- declare function buildContactSchema(config: SchemaBuildConfig): Schema<IContactDocument>;
280
- declare function createContactModel(connection: Connection, config: SchemaBuildConfig): Model<IContactDocument>;
279
+ export declare function buildContactSchema(config: SchemaBuildConfig): Schema<IContactDocument>;
280
+ export declare function createContactModel(connection: Connection, config: SchemaBuildConfig): Model<IContactDocument>;
281
281
  //#endregion
282
282
  //#region src/models/account.schema.d.ts
283
- interface IAccountDocument {
283
+ export interface IAccountDocument {
284
284
  _id: import('mongoose').Types.ObjectId;
285
285
  organizationId: import('mongoose').Types.ObjectId | string;
286
286
  name: string;
@@ -295,8 +295,8 @@ interface IAccountDocument {
295
295
  createdAt: Date;
296
296
  updatedAt: Date;
297
297
  }
298
- declare function buildAccountSchema(config: SchemaBuildConfig): Schema<IAccountDocument>;
299
- declare function createAccountModel(connection: Connection, config: SchemaBuildConfig): Model<IAccountDocument>;
298
+ export declare function buildAccountSchema(config: SchemaBuildConfig): Schema<IAccountDocument>;
299
+ export declare function createAccountModel(connection: Connection, config: SchemaBuildConfig): Model<IAccountDocument>;
300
300
  //#endregion
301
301
  //#region src/enums/campaign-status.d.ts
302
302
  /**
@@ -308,19 +308,19 @@ declare function createAccountModel(connection: Connection, config: SchemaBuildC
308
308
  * completed — finished its run; preserved for historical attribution
309
309
  * archived — soft-hidden from the default UI; still queryable
310
310
  */
311
- declare const CAMPAIGN_STATUSES: readonly ["draft", "active", "paused", "completed", "archived"];
311
+ export declare const CAMPAIGN_STATUSES: readonly ['draft', 'active', 'paused', 'completed', 'archived'];
312
312
  type CampaignStatus = (typeof CAMPAIGN_STATUSES)[number];
313
- declare const CAMPAIGN_TRANSITIONS: Record<CampaignStatus, readonly CampaignStatus[]>;
314
- declare function canTransitionCampaign(from: CampaignStatus, to: CampaignStatus): boolean;
313
+ export declare const CAMPAIGN_TRANSITIONS: Record<CampaignStatus, readonly CampaignStatus[]>;
314
+ export declare function canTransitionCampaign(from: CampaignStatus, to: CampaignStatus): boolean;
315
315
  //#endregion
316
316
  //#region src/models/campaign.schema.d.ts
317
- interface ICampaignStatusEntry {
317
+ export interface ICampaignStatusEntry {
318
318
  status: CampaignStatus;
319
319
  occurredAt: Date;
320
320
  by?: string;
321
321
  note?: string;
322
322
  }
323
- interface ICampaignDocument {
323
+ export interface ICampaignDocument {
324
324
  _id: import('mongoose').Types.ObjectId;
325
325
  organizationId: import('mongoose').Types.ObjectId | string;
326
326
  name: string;
@@ -342,8 +342,8 @@ interface ICampaignDocument {
342
342
  createdAt: Date;
343
343
  updatedAt: Date;
344
344
  }
345
- declare function buildCampaignSchema(config: SchemaBuildConfig): Schema<ICampaignDocument>;
346
- declare function createCampaignModel(connection: Connection, config: SchemaBuildConfig): Model<ICampaignDocument>;
345
+ export declare function buildCampaignSchema(config: SchemaBuildConfig): Schema<ICampaignDocument>;
346
+ export declare function createCampaignModel(connection: Connection, config: SchemaBuildConfig): Model<ICampaignDocument>;
347
347
  //#endregion
348
348
  //#region src/enums/subscription-status.d.ts
349
349
  /**
@@ -359,19 +359,19 @@ declare function createCampaignModel(connection: Connection, config: SchemaBuild
359
359
  * All terminal states are non-reopenable. Re-subscribing creates a new
360
360
  * Subscription row — the audit trail of unsubscribes/bounces is preserved.
361
361
  */
362
- declare const SUBSCRIPTION_STATUSES: readonly ["pending", "confirmed", "unsubscribed", "bounced", "complained"];
362
+ export declare const SUBSCRIPTION_STATUSES: readonly ['pending', 'confirmed', 'unsubscribed', 'bounced', 'complained'];
363
363
  type SubscriptionStatus = (typeof SUBSCRIPTION_STATUSES)[number];
364
- declare const SUBSCRIPTION_TRANSITIONS: Record<SubscriptionStatus, readonly SubscriptionStatus[]>;
365
- declare function canTransitionSubscription(from: SubscriptionStatus, to: SubscriptionStatus): boolean;
364
+ export declare const SUBSCRIPTION_TRANSITIONS: Record<SubscriptionStatus, readonly SubscriptionStatus[]>;
365
+ export declare function canTransitionSubscription(from: SubscriptionStatus, to: SubscriptionStatus): boolean;
366
366
  //#endregion
367
367
  //#region src/models/subscription.schema.d.ts
368
- interface ISubscriptionStatusEntry {
368
+ export interface ISubscriptionStatusEntry {
369
369
  status: SubscriptionStatus;
370
370
  occurredAt: Date;
371
371
  by?: string;
372
372
  note?: string;
373
373
  }
374
- interface ISubscriptionDocument {
374
+ export interface ISubscriptionDocument {
375
375
  _id: import('mongoose').Types.ObjectId;
376
376
  organizationId: import('mongoose').Types.ObjectId | string;
377
377
  contactId: import('mongoose').Types.ObjectId | string;
@@ -395,17 +395,17 @@ interface ISubscriptionDocument {
395
395
  createdAt: Date;
396
396
  updatedAt: Date;
397
397
  }
398
- declare function buildSubscriptionSchema(config: SchemaBuildConfig): Schema<ISubscriptionDocument>;
399
- declare function createSubscriptionModel(connection: Connection, config: SchemaBuildConfig): Model<ISubscriptionDocument>;
398
+ export declare function buildSubscriptionSchema(config: SchemaBuildConfig): Schema<ISubscriptionDocument>;
399
+ export declare function createSubscriptionModel(connection: Connection, config: SchemaBuildConfig): Model<ISubscriptionDocument>;
400
400
  //#endregion
401
401
  //#region src/enums/suppression-reason.d.ts
402
402
  /** Reasons derived 1:1 from an email engagement event kind. */
403
- declare const EVENT_DERIVED_SUPPRESSION_REASONS: readonly ["bounce", "complaint", "unsubscribe"];
404
- declare const SUPPRESSION_REASONS: readonly ["bounce", "complaint", "unsubscribe", "manual"];
403
+ export declare const EVENT_DERIVED_SUPPRESSION_REASONS: readonly ["bounce", "complaint", "unsubscribe"];
404
+ export declare const SUPPRESSION_REASONS: readonly ["bounce", "complaint", "unsubscribe", "manual"];
405
405
  type SuppressionReason = (typeof SUPPRESSION_REASONS)[number];
406
406
  //#endregion
407
407
  //#region src/models/suppression.schema.d.ts
408
- interface ISuppressionDocument {
408
+ export interface ISuppressionDocument {
409
409
  _id: import('mongoose').Types.ObjectId;
410
410
  organizationId: import('mongoose').Types.ObjectId | string;
411
411
  /**
@@ -429,7 +429,7 @@ interface ISuppressionDocument {
429
429
  createdAt: Date;
430
430
  updatedAt: Date;
431
431
  }
432
- declare function buildSuppressionSchema(config: SchemaBuildConfig): Schema<ISuppressionDocument>;
432
+ export declare function buildSuppressionSchema(config: SchemaBuildConfig): Schema<ISuppressionDocument>;
433
433
  //#endregion
434
434
  //#region src/enums/activity.d.ts
435
435
  /**
@@ -437,22 +437,22 @@ declare function buildSuppressionSchema(config: SchemaBuildConfig): Schema<ISupp
437
437
  * string so hosts can extend; these constants cover the common
438
438
  * channels that automation tooling typically keys off.
439
439
  */
440
- declare const ACTIVITY_TYPES: readonly ["call", "email", "meeting", "task", "note", "sms", "social", "demo", "other"];
440
+ export declare const ACTIVITY_TYPES: readonly ['call', 'email', 'meeting', 'task', 'note', 'sms', 'social', 'demo', 'other'];
441
441
  type ActivityType = (typeof ACTIVITY_TYPES)[number];
442
- declare const ACTIVITY_STATUSES: readonly ["planned", "in_progress", "completed", "cancelled"];
442
+ export declare const ACTIVITY_STATUSES: readonly ['planned', 'in_progress', 'completed', 'cancelled'];
443
443
  type ActivityStatus = (typeof ACTIVITY_STATUSES)[number];
444
- declare const ACTIVITY_TRANSITIONS: Record<ActivityStatus, readonly ActivityStatus[]>;
445
- declare function canTransitionActivity(from: ActivityStatus, to: ActivityStatus): boolean;
444
+ export declare const ACTIVITY_TRANSITIONS: Record<ActivityStatus, readonly ActivityStatus[]>;
445
+ export declare function canTransitionActivity(from: ActivityStatus, to: ActivityStatus): boolean;
446
446
  /**
447
447
  * Kinds of entity an Activity can reference. Polymorphic linking lets
448
448
  * hosts log a call against a Lead, an Opportunity, a Contact, or a
449
449
  * stand-alone Account.
450
450
  */
451
- declare const SUBJECT_KINDS: readonly ["lead", "opportunity", "contact", "account"];
451
+ export declare const SUBJECT_KINDS: readonly ['lead', 'opportunity', 'contact', 'account'];
452
452
  type SubjectKind = (typeof SUBJECT_KINDS)[number];
453
453
  //#endregion
454
454
  //#region src/models/activity.schema.d.ts
455
- interface IActivityDocument {
455
+ export interface IActivityDocument {
456
456
  _id: import('mongoose').Types.ObjectId;
457
457
  organizationId: import('mongoose').Types.ObjectId | string;
458
458
  type: ActivityType;
@@ -470,11 +470,11 @@ interface IActivityDocument {
470
470
  createdAt: Date;
471
471
  updatedAt: Date;
472
472
  }
473
- declare function buildActivitySchema(config: SchemaBuildConfig): Schema<IActivityDocument>;
474
- declare function createActivityModel(connection: Connection, config: SchemaBuildConfig): Model<IActivityDocument>;
473
+ export declare function buildActivitySchema(config: SchemaBuildConfig): Schema<IActivityDocument>;
474
+ export declare function createActivityModel(connection: Connection, config: SchemaBuildConfig): Model<IActivityDocument>;
475
475
  //#endregion
476
476
  //#region src/models/note.schema.d.ts
477
- interface INoteDocument {
477
+ export interface INoteDocument {
478
478
  _id: import('mongoose').Types.ObjectId;
479
479
  organizationId: import('mongoose').Types.ObjectId | string;
480
480
  subjectKind: SubjectKind;
@@ -486,11 +486,11 @@ interface INoteDocument {
486
486
  createdAt: Date;
487
487
  updatedAt: Date;
488
488
  }
489
- declare function buildNoteSchema(config: SchemaBuildConfig): Schema<INoteDocument>;
490
- declare function createNoteModel(connection: Connection, config: SchemaBuildConfig): Model<INoteDocument>;
489
+ export declare function buildNoteSchema(config: SchemaBuildConfig): Schema<INoteDocument>;
490
+ export declare function createNoteModel(connection: Connection, config: SchemaBuildConfig): Model<INoteDocument>;
491
491
  //#endregion
492
492
  //#region src/models/loss-reason.schema.d.ts
493
- interface ILossReasonDocument {
493
+ export interface ILossReasonDocument {
494
494
  _id: import('mongoose').Types.ObjectId;
495
495
  organizationId: import('mongoose').Types.ObjectId | string;
496
496
  name: string;
@@ -502,8 +502,8 @@ interface ILossReasonDocument {
502
502
  createdAt: Date;
503
503
  updatedAt: Date;
504
504
  }
505
- declare function buildLossReasonSchema(config: SchemaBuildConfig): Schema<ILossReasonDocument>;
506
- declare function createLossReasonModel(connection: Connection, config: SchemaBuildConfig): Model<ILossReasonDocument>;
505
+ export declare function buildLossReasonSchema(config: SchemaBuildConfig): Schema<ILossReasonDocument>;
506
+ export declare function createLossReasonModel(connection: Connection, config: SchemaBuildConfig): Model<ILossReasonDocument>;
507
507
  //#endregion
508
508
  //#region src/enums/email-event-kind.d.ts
509
509
  /**
@@ -532,13 +532,13 @@ declare function createLossReasonModel(connection: Connection, config: SchemaBui
532
532
  * categories so consumers can compute open rate, click rate, bounce rate
533
533
  * without filtering kind themselves.
534
534
  */
535
- declare const EMAIL_EVENT_KINDS: readonly ["open", "click", "bounce", "complaint", "unsubscribe"];
535
+ export declare const EMAIL_EVENT_KINDS: readonly ['open', 'click', 'bounce', 'complaint', 'unsubscribe'];
536
536
  type EmailEventKind = (typeof EMAIL_EVENT_KINDS)[number];
537
537
  //#endregion
538
538
  //#region src/models/email-event.schema.d.ts
539
- declare const EMAIL_EVENT_SUBJECT_KINDS: readonly ["contact", "subscription"];
540
- type EmailEventSubjectKind = (typeof EMAIL_EVENT_SUBJECT_KINDS)[number];
541
- interface IEmailEventDocument {
539
+ export declare const EMAIL_EVENT_SUBJECT_KINDS: readonly ['contact', 'subscription'];
540
+ export type EmailEventSubjectKind = (typeof EMAIL_EVENT_SUBJECT_KINDS)[number];
541
+ export interface IEmailEventDocument {
542
542
  _id: import('mongoose').Types.ObjectId;
543
543
  organizationId: import('mongoose').Types.ObjectId | string;
544
544
  kind: EmailEventKind;
@@ -552,8 +552,8 @@ interface IEmailEventDocument {
552
552
  metadata?: Record<string, unknown>;
553
553
  createdAt: Date;
554
554
  }
555
- declare function buildEmailEventSchema(config: SchemaBuildConfig): Schema<IEmailEventDocument>;
556
- declare function createEmailEventModel(connection: Connection, config: SchemaBuildConfig): Model<IEmailEventDocument>;
555
+ export declare function buildEmailEventSchema(config: SchemaBuildConfig): Schema<IEmailEventDocument>;
556
+ export declare function createEmailEventModel(connection: Connection, config: SchemaBuildConfig): Model<IEmailEventDocument>;
557
557
  //#endregion
558
558
  //#region src/enums/conversation.d.ts
559
559
  /**
@@ -564,20 +564,20 @@ declare function createEmailEventModel(connection: Connection, config: SchemaBui
564
564
  * The host's webhook adapters write to this surface — the CRM does not
565
565
  * dial outward.
566
566
  */
567
- declare const CONVERSATION_CHANNELS: readonly ["whatsapp", "telegram", "email", "instagram_dm", "sms", "web_chat"];
567
+ export declare const CONVERSATION_CHANNELS: readonly ['whatsapp', 'telegram', 'email', 'instagram_dm', 'sms', 'web_chat'];
568
568
  type ConversationChannel = (typeof CONVERSATION_CHANNELS)[number];
569
- declare const CONVERSATION_STATUSES: readonly ["open", "snoozed", "resolved"];
569
+ export declare const CONVERSATION_STATUSES: readonly ['open', 'snoozed', 'resolved'];
570
570
  type ConversationStatus = (typeof CONVERSATION_STATUSES)[number];
571
571
  /** Conversations attach to either a Contact or a (yet-unconverted) Lead. */
572
- declare const CONVERSATION_PARTICIPANT_KINDS: readonly ["contact", "lead"];
572
+ export declare const CONVERSATION_PARTICIPANT_KINDS: readonly ['contact', 'lead'];
573
573
  type ConversationParticipantKind = (typeof CONVERSATION_PARTICIPANT_KINDS)[number];
574
- declare const MESSAGE_DIRECTIONS: readonly ["inbound", "outbound"];
574
+ export declare const MESSAGE_DIRECTIONS: readonly ['inbound', 'outbound'];
575
575
  type MessageDirection = (typeof MESSAGE_DIRECTIONS)[number];
576
- declare const MESSAGE_DELIVERY_STATUSES: readonly ["queued", "sent", "delivered", "read", "failed"];
576
+ export declare const MESSAGE_DELIVERY_STATUSES: readonly ['queued', 'sent', 'delivered', 'read', 'failed'];
577
577
  type MessageDeliveryStatus = (typeof MESSAGE_DELIVERY_STATUSES)[number];
578
578
  //#endregion
579
579
  //#region src/models/conversation.schema.d.ts
580
- interface IConversationDocument {
580
+ export interface IConversationDocument {
581
581
  _id: import('mongoose').Types.ObjectId;
582
582
  organizationId: import('mongoose').Types.ObjectId | string;
583
583
  channel: ConversationChannel;
@@ -597,18 +597,18 @@ interface IConversationDocument {
597
597
  createdAt: Date;
598
598
  updatedAt: Date;
599
599
  }
600
- declare function buildConversationSchema(config: SchemaBuildConfig): Schema<IConversationDocument>;
601
- declare function createConversationModel(connection: Connection, config: SchemaBuildConfig): Model<IConversationDocument>;
600
+ export declare function buildConversationSchema(config: SchemaBuildConfig): Schema<IConversationDocument>;
601
+ export declare function createConversationModel(connection: Connection, config: SchemaBuildConfig): Model<IConversationDocument>;
602
602
  //#endregion
603
603
  //#region src/models/message.schema.d.ts
604
- interface IMessageAttachment {
604
+ export interface IMessageAttachment {
605
605
  type: string;
606
606
  url: string;
607
607
  name?: string;
608
608
  size?: number;
609
609
  mimeType?: string;
610
610
  }
611
- interface IMessageDocument {
611
+ export interface IMessageDocument {
612
612
  _id: import('mongoose').Types.ObjectId;
613
613
  organizationId: import('mongoose').Types.ObjectId | string;
614
614
  conversationId: import('mongoose').Types.ObjectId | string;
@@ -628,8 +628,8 @@ interface IMessageDocument {
628
628
  createdAt: Date;
629
629
  updatedAt: Date;
630
630
  }
631
- declare function buildMessageSchema(config: SchemaBuildConfig): Schema<IMessageDocument>;
632
- declare function createMessageModel(connection: Connection, config: SchemaBuildConfig): Model<IMessageDocument>;
631
+ export declare function buildMessageSchema(config: SchemaBuildConfig): Schema<IMessageDocument>;
632
+ export declare function createMessageModel(connection: Connection, config: SchemaBuildConfig): Model<IMessageDocument>;
633
633
  //#endregion
634
634
  //#region src/enums/sequence-status.d.ts
635
635
  /**
@@ -640,13 +640,13 @@ declare function createMessageModel(connection: Connection, config: SchemaBuildC
640
640
  * paused — no new enrollments; running enrollments pause at next step
641
641
  * archived — soft-hidden; historical data preserved
642
642
  */
643
- declare const SEQUENCE_STATUSES: readonly ["draft", "active", "paused", "archived"];
643
+ export declare const SEQUENCE_STATUSES: readonly ['draft', 'active', 'paused', 'archived'];
644
644
  type SequenceStatus = (typeof SEQUENCE_STATUSES)[number];
645
- declare const SEQUENCE_TRANSITIONS: Record<SequenceStatus, readonly SequenceStatus[]>;
646
- declare function canTransitionSequence(from: SequenceStatus, to: SequenceStatus): boolean;
645
+ export declare const SEQUENCE_TRANSITIONS: Record<SequenceStatus, readonly SequenceStatus[]>;
646
+ export declare function canTransitionSequence(from: SequenceStatus, to: SequenceStatus): boolean;
647
647
  //#endregion
648
648
  //#region src/models/sequence.schema.d.ts
649
- interface ISendEmailStep {
649
+ export interface ISendEmailStep {
650
650
  id: string;
651
651
  type: 'SEND_EMAIL';
652
652
  name?: string;
@@ -655,7 +655,7 @@ interface ISendEmailStep {
655
655
  fromName?: string;
656
656
  fromEmail?: string;
657
657
  }
658
- interface IDelayStep {
658
+ export interface IDelayStep {
659
659
  id: string;
660
660
  type: 'DELAY';
661
661
  name?: string;
@@ -665,14 +665,14 @@ interface IDelayStep {
665
665
  minutes?: number;
666
666
  };
667
667
  }
668
- type SequenceStep = ISendEmailStep | IDelayStep;
669
- interface ISequenceStatusEntry {
668
+ export type SequenceStep = ISendEmailStep | IDelayStep;
669
+ export interface ISequenceStatusEntry {
670
670
  status: SequenceStatus;
671
671
  occurredAt: Date;
672
672
  by?: string;
673
673
  note?: string;
674
674
  }
675
- interface ISequenceDocument {
675
+ export interface ISequenceDocument {
676
676
  _id: import('mongoose').Types.ObjectId;
677
677
  organizationId: import('mongoose').Types.ObjectId | string;
678
678
  name: string;
@@ -691,7 +691,7 @@ interface ISequenceDocument {
691
691
  createdAt: Date;
692
692
  updatedAt: Date;
693
693
  }
694
- declare function buildSequenceSchema(config: SchemaBuildConfig): Schema<ISequenceDocument>;
694
+ export declare function buildSequenceSchema(config: SchemaBuildConfig): Schema<ISequenceDocument>;
695
695
  //#endregion
696
696
  //#region src/enums/enrollment-status.d.ts
697
697
  /**
@@ -702,29 +702,29 @@ declare function buildSequenceSchema(config: SchemaBuildConfig): Schema<ISequenc
702
702
  * completed — all steps ran to completion
703
703
  * exited — removed early (reply, unsubscribe, bounce, manual)
704
704
  */
705
- declare const ENROLLMENT_STATUSES: readonly ["active", "paused", "completed", "exited"];
705
+ export declare const ENROLLMENT_STATUSES: readonly ['active', 'paused', 'completed', 'exited'];
706
706
  type EnrollmentStatus = (typeof ENROLLMENT_STATUSES)[number];
707
- declare const ENROLLMENT_TRANSITIONS: Record<EnrollmentStatus, readonly EnrollmentStatus[]>;
708
- declare function canTransitionEnrollment(from: EnrollmentStatus, to: EnrollmentStatus): boolean;
707
+ export declare const ENROLLMENT_TRANSITIONS: Record<EnrollmentStatus, readonly EnrollmentStatus[]>;
708
+ export declare function canTransitionEnrollment(from: EnrollmentStatus, to: EnrollmentStatus): boolean;
709
709
  //#endregion
710
710
  //#region src/models/enrollment.schema.d.ts
711
- type EnrollmentExitReason = 'completed' | 'reply' | 'unsubscribe' | 'bounce' | 'manual';
712
- type StepResultStatus = 'pending' | 'sent' | 'failed' | 'skipped';
713
- declare const ENROLLMENT_SUBJECT_KINDS: readonly ["lead", "contact"];
714
- type EnrollmentSubjectKind = (typeof ENROLLMENT_SUBJECT_KINDS)[number];
715
- interface IStepResult {
711
+ export type EnrollmentExitReason = 'completed' | 'reply' | 'unsubscribe' | 'bounce' | 'manual';
712
+ export type StepResultStatus = 'pending' | 'sent' | 'failed' | 'skipped';
713
+ export declare const ENROLLMENT_SUBJECT_KINDS: readonly ['lead', 'contact'];
714
+ export type EnrollmentSubjectKind = (typeof ENROLLMENT_SUBJECT_KINDS)[number];
715
+ export interface IStepResult {
716
716
  stepId: string;
717
717
  stepType: string;
718
718
  status: StepResultStatus;
719
719
  sentAt?: Date;
720
720
  error?: string;
721
721
  }
722
- interface IEnrollmentStatusEntry {
722
+ export interface IEnrollmentStatusEntry {
723
723
  status: EnrollmentStatus;
724
724
  occurredAt: Date;
725
725
  by?: string;
726
726
  }
727
- interface IEnrollmentDocument {
727
+ export interface IEnrollmentDocument {
728
728
  _id: import('mongoose').Types.ObjectId;
729
729
  organizationId: import('mongoose').Types.ObjectId | string;
730
730
  sequenceId: import('mongoose').Types.ObjectId | string;
@@ -747,10 +747,10 @@ interface IEnrollmentDocument {
747
747
  createdAt: Date;
748
748
  updatedAt: Date;
749
749
  }
750
- declare function buildEnrollmentSchema(config: SchemaBuildConfig): Schema<IEnrollmentDocument>;
750
+ export declare function buildEnrollmentSchema(config: SchemaBuildConfig): Schema<IEnrollmentDocument>;
751
751
  //#endregion
752
752
  //#region src/models/create-models.d.ts
753
- interface CrmModels {
753
+ export interface CrmModels {
754
754
  Pipeline: Model<IPipelineDocument>;
755
755
  Lead: Model<ILeadDocument>;
756
756
  Opportunity: Model<IOpportunityDocument>;
@@ -768,10 +768,10 @@ interface CrmModels {
768
768
  Sequence: Model<ISequenceDocument>;
769
769
  Enrollment: Model<IEnrollmentDocument>;
770
770
  }
771
- type ModularCrmModels = Partial<CrmModels>;
771
+ export type ModularCrmModels = Partial<CrmModels>;
772
772
  /** Mongoose model names this package can register (before `modelPrefix`). Reference/documentation. */
773
- declare const CRM_MODEL_NAMES: readonly ["Pipeline", "Lead", "Opportunity", "Contact", "Account", "Campaign", "EmailSubscription", "Suppression", "Activity", "Note", "LossReason", "EmailEvent", "Conversation", "Message", "Sequence", "Enrollment"];
774
- interface DefineCrmModelsConfig extends SchemaBuildConfig {
773
+ export declare const CRM_MODEL_NAMES: readonly ['Pipeline', 'Lead', 'Opportunity', 'Contact', 'Account', 'Campaign', 'EmailSubscription', 'Suppression', 'Activity', 'Note', 'LossReason', 'EmailEvent', 'Conversation', 'Message', 'Sequence', 'Enrollment'];
774
+ export interface DefineCrmModelsConfig extends SchemaBuildConfig {
775
775
  /** Which model families to describe. A disabled family contributes no spec. */
776
776
  modules: ResolvedCrmModules;
777
777
  /**
@@ -788,13 +788,13 @@ interface DefineCrmModelsConfig extends SchemaBuildConfig {
788
788
  * schema and registers nothing until `.bind(connection)`. Only the enabled
789
789
  * module families contribute `ModelSpec` entries.
790
790
  */
791
- declare function defineCrmModels(config: DefineCrmModelsConfig): ModelBlueprint<ModularCrmModels>;
791
+ export declare function defineCrmModels(config: DefineCrmModelsConfig): ModelBlueprint<ModularCrmModels>;
792
792
  //#endregion
793
793
  //#region src/repositories/pipeline.repository.d.ts
794
- interface PipelineRepositoryDeps {
794
+ export interface PipelineRepositoryDeps {
795
795
  events: CrmEventDispatcher;
796
796
  }
797
- declare class PipelineRepository extends Repository<IPipelineDocument> {
797
+ export declare class PipelineRepository extends Repository<IPipelineDocument> {
798
798
  private readonly events;
799
799
  constructor(model: Model<IPipelineDocument>, plugins: PluginType[], deps: PipelineRepositoryDeps, pagination?: PaginationConfig);
800
800
  /**
@@ -812,8 +812,8 @@ declare class PipelineRepository extends Repository<IPipelineDocument> {
812
812
  //#endregion
813
813
  //#region src/shared/calculators/scoring.d.ts
814
814
  /** Minimal Lead shape the scorer reads — firmographic + engagement counters. */
815
- type LeadInput = Pick<ILeadDocument, 'email' | 'phone' | 'companyName' | 'tags' | 'jobTitle' | 'engagement'>;
816
- type LeadScorer = (lead: LeadInput) => number;
815
+ export type LeadInput = Pick<ILeadDocument, 'email' | 'phone' | 'companyName' | 'tags' | 'jobTitle' | 'engagement'>;
816
+ export type LeadScorer = (lead: LeadInput) => number;
817
817
  /**
818
818
  * Reference implementation. Intentionally simple — hosts read it and
819
819
  * replace it. Deterministic + pure (no I/O, no wall-clock).
@@ -827,14 +827,14 @@ type LeadScorer = (lead: LeadInput) => number;
827
827
  * genuine reply: reply ×25 · click ×8 · open ×2 · activity ×5. Counters are
828
828
  * fed by the host via `LeadRepository.recordEngagement`; absent on old rows.
829
829
  */
830
- declare function defaultLeadScorer(lead: LeadInput): number;
830
+ export declare function defaultLeadScorer(lead: LeadInput): number;
831
831
  /** Compose multiple small rules into one scorer. */
832
- declare function composeScorers(...rules: readonly LeadScorer[]): LeadScorer;
832
+ export declare function composeScorers(...rules: readonly LeadScorer[]): LeadScorer;
833
833
  //#endregion
834
834
  //#region src/repositories/lead.repository.d.ts
835
835
  /** Behavioural engagement signals fed via `recordEngagement`. */
836
- type LeadEngagementSignal = 'open' | 'click' | 'reply' | 'activity';
837
- interface LeadRepositoryDeps {
836
+ export type LeadEngagementSignal = 'open' | 'click' | 'reply' | 'activity';
837
+ export interface LeadRepositoryDeps {
838
838
  events: CrmEventDispatcher;
839
839
  /** Override the default lead scorer. */
840
840
  scorer?: LeadScorer;
@@ -846,7 +846,7 @@ type TransitionExtras = {
846
846
  note?: string;
847
847
  patch?: Partial<ILeadDocument>;
848
848
  };
849
- declare class LeadRepository extends Repository<ILeadDocument> {
849
+ export declare class LeadRepository extends Repository<ILeadDocument> {
850
850
  private readonly events;
851
851
  private readonly scorer;
852
852
  private readonly rejectDuplicates;
@@ -932,12 +932,12 @@ declare class LeadRepository extends Repository<ILeadDocument> {
932
932
  }
933
933
  //#endregion
934
934
  //#region src/repositories/opportunity.repository.d.ts
935
- interface OpportunityRepositoryDeps {
935
+ export interface OpportunityRepositoryDeps {
936
936
  events: CrmEventDispatcher;
937
937
  /** Cross-repo reference: read embedded stages from Pipeline. */
938
938
  pipelines: PipelineRepository;
939
939
  }
940
- interface OpenOpportunityInput {
940
+ export interface OpenOpportunityInput {
941
941
  name: string;
942
942
  pipelineId: string;
943
943
  /** When omitted, opp enters the pipeline's first stage. */
@@ -954,21 +954,21 @@ interface OpenOpportunityInput {
954
954
  tags?: readonly string[];
955
955
  metadata?: Record<string, unknown>;
956
956
  }
957
- interface MoveStageInput {
957
+ export interface MoveStageInput {
958
958
  stageId: string;
959
959
  by?: string;
960
960
  note?: string;
961
961
  /** Override the target stage's `defaultProbability`. */
962
962
  probability?: number;
963
963
  }
964
- interface CloseInput {
964
+ export interface CloseInput {
965
965
  by?: string;
966
966
  note?: string;
967
967
  closedAt?: Date;
968
968
  amount?: number;
969
969
  lostReasonId?: string;
970
970
  }
971
- declare class OpportunityRepository extends Repository<IOpportunityDocument> {
971
+ export declare class OpportunityRepository extends Repository<IOpportunityDocument> {
972
972
  private readonly events;
973
973
  private readonly pipelines;
974
974
  constructor(model: Model<IOpportunityDocument>, plugins: PluginType[], deps: OpportunityRepositoryDeps, pagination?: PaginationConfig);
@@ -1031,7 +1031,7 @@ declare class OpportunityRepository extends Repository<IOpportunityDocument> {
1031
1031
  }
1032
1032
  //#endregion
1033
1033
  //#region src/repositories/contact.repository.d.ts
1034
- interface ContactRepositoryDeps {
1034
+ export interface ContactRepositoryDeps {
1035
1035
  events: CrmEventDispatcher;
1036
1036
  /** Reject `createContact()` when an email already exists in-tenant (default true). */
1037
1037
  rejectDuplicates?: boolean;
@@ -1045,12 +1045,12 @@ interface ContactRepositoryDeps {
1045
1045
  * Activity/Note `.subjectId`) so the delete never orphans a required
1046
1046
  * reference. Throwing here aborts the merge — nothing is deleted.
1047
1047
  */
1048
- type ContactMergeRepoint = (args: {
1048
+ export type ContactMergeRepoint = (args: {
1049
1049
  primaryId: string;
1050
1050
  secondaryId: string;
1051
1051
  ctx?: CrmContext;
1052
1052
  }) => Promise<void> | void;
1053
- interface MergeContactInput {
1053
+ export interface MergeContactInput {
1054
1054
  /** Surviving contact id. Receives merged fields. */
1055
1055
  primaryId: string;
1056
1056
  /** Secondary contact id. Deleted after merge. */
@@ -1069,7 +1069,7 @@ interface MergeContactInput {
1069
1069
  */
1070
1070
  repoint?: ContactMergeRepoint;
1071
1071
  }
1072
- declare class ContactRepository extends Repository<IContactDocument> {
1072
+ export declare class ContactRepository extends Repository<IContactDocument> {
1073
1073
  private readonly events;
1074
1074
  private readonly rejectDuplicates;
1075
1075
  constructor(model: Model<IContactDocument>, plugins: PluginType[], deps: ContactRepositoryDeps, pagination?: PaginationConfig);
@@ -1129,15 +1129,15 @@ declare class ContactRepository extends Repository<IContactDocument> {
1129
1129
  }
1130
1130
  //#endregion
1131
1131
  //#region src/repositories/account.repository.d.ts
1132
- interface AccountRepositoryDeps {
1132
+ export interface AccountRepositoryDeps {
1133
1133
  events: CrmEventDispatcher;
1134
1134
  }
1135
- interface MergeAccountInput {
1135
+ export interface MergeAccountInput {
1136
1136
  primaryId: string;
1137
1137
  secondaryId: string;
1138
1138
  strategy?: 'preferPrimary' | 'preferSecondary';
1139
1139
  }
1140
- declare class AccountRepository extends Repository<IAccountDocument> {
1140
+ export declare class AccountRepository extends Repository<IAccountDocument> {
1141
1141
  private readonly events;
1142
1142
  constructor(model: Model<IAccountDocument>, plugins: PluginType[], deps: AccountRepositoryDeps, pagination?: PaginationConfig);
1143
1143
  createAccount(input: Partial<IAccountDocument>, ctx?: CrmContext): Promise<IAccountDocument>;
@@ -1149,7 +1149,7 @@ declare class AccountRepository extends Repository<IAccountDocument> {
1149
1149
  }
1150
1150
  //#endregion
1151
1151
  //#region src/repositories/campaign.repository.d.ts
1152
- interface CampaignRepositoryDeps {
1152
+ export interface CampaignRepositoryDeps {
1153
1153
  events: CrmEventDispatcher;
1154
1154
  /** Reject `createCampaign` on duplicate names per-tenant (default true). */
1155
1155
  rejectDuplicates?: boolean;
@@ -1159,7 +1159,7 @@ type ExtrasWithRevenue = {
1159
1159
  note?: string;
1160
1160
  actualRevenueAmount?: number;
1161
1161
  };
1162
- declare class CampaignRepository extends Repository<ICampaignDocument> {
1162
+ export declare class CampaignRepository extends Repository<ICampaignDocument> {
1163
1163
  private readonly events;
1164
1164
  private readonly rejectDuplicates;
1165
1165
  constructor(model: Model<ICampaignDocument>, plugins: PluginType[], deps: CampaignRepositoryDeps, pagination?: PaginationConfig);
@@ -1173,12 +1173,12 @@ declare class CampaignRepository extends Repository<ICampaignDocument> {
1173
1173
  }
1174
1174
  //#endregion
1175
1175
  //#region src/repositories/subscription.repository.d.ts
1176
- interface SubscriptionRepositoryDeps {
1176
+ export interface SubscriptionRepositoryDeps {
1177
1177
  events: CrmEventDispatcher;
1178
1178
  /** Default DOI policy when `subscribe` doesn't pass `requireDoubleOptIn`. */
1179
1179
  defaultRequireDoubleOptIn?: boolean;
1180
1180
  }
1181
- interface SubscribeInput {
1181
+ export interface SubscribeInput {
1182
1182
  contactId: string;
1183
1183
  campaignId: string;
1184
1184
  source?: string;
@@ -1188,7 +1188,7 @@ interface SubscribeInput {
1188
1188
  /** Override the engine-level default. */
1189
1189
  requireDoubleOptIn?: boolean;
1190
1190
  }
1191
- declare class SubscriptionRepository extends Repository<ISubscriptionDocument> {
1191
+ export declare class SubscriptionRepository extends Repository<ISubscriptionDocument> {
1192
1192
  private readonly events;
1193
1193
  private readonly defaultRequireDoubleOptIn;
1194
1194
  constructor(model: Model<ISubscriptionDocument>, plugins: PluginType[], deps: SubscriptionRepositoryDeps, pagination?: PaginationConfig);
@@ -1201,10 +1201,10 @@ declare class SubscriptionRepository extends Repository<ISubscriptionDocument> {
1201
1201
  }
1202
1202
  //#endregion
1203
1203
  //#region src/repositories/suppression.repository.d.ts
1204
- interface SuppressionRepositoryDeps {
1204
+ export interface SuppressionRepositoryDeps {
1205
1205
  events: CrmEventDispatcher;
1206
1206
  }
1207
- interface SuppressInput {
1207
+ export interface SuppressInput {
1208
1208
  reason: SuppressionReason;
1209
1209
  /** Free-form origin: 'campaign:<id>', 'sequence:<id>', 'api', 'import', … */
1210
1210
  source?: string;
@@ -1221,8 +1221,8 @@ interface SuppressInput {
1221
1221
  * to `true` on purpose (see the fail-closed rule in the module docblock), and a
1222
1222
  * caller that needs the distinction should not re-derive the rule to get it.
1223
1223
  */
1224
- declare function suppressionEmailKey(email: string): string | null;
1225
- declare class SuppressionRepository extends Repository<ISuppressionDocument> {
1224
+ export declare function suppressionEmailKey(email: string): string | null;
1225
+ export declare class SuppressionRepository extends Repository<ISuppressionDocument> {
1226
1226
  private readonly events;
1227
1227
  constructor(model: Model<ISuppressionDocument>, plugins: PluginType[], deps: SuppressionRepositoryDeps, pagination?: PaginationConfig);
1228
1228
  /**
@@ -1277,10 +1277,10 @@ declare class SuppressionRepository extends Repository<ISuppressionDocument> {
1277
1277
  }
1278
1278
  //#endregion
1279
1279
  //#region src/repositories/activity.repository.d.ts
1280
- interface ActivityRepositoryDeps {
1280
+ export interface ActivityRepositoryDeps {
1281
1281
  events: CrmEventDispatcher;
1282
1282
  }
1283
- declare class ActivityRepository extends Repository<IActivityDocument> {
1283
+ export declare class ActivityRepository extends Repository<IActivityDocument> {
1284
1284
  private readonly events;
1285
1285
  constructor(model: Model<IActivityDocument>, plugins: PluginType[], deps: ActivityRepositoryDeps, pagination?: PaginationConfig);
1286
1286
  plan(input: Partial<IActivityDocument>, ctx?: CrmContext): Promise<IActivityDocument>;
@@ -1314,20 +1314,20 @@ declare class ActivityRepository extends Repository<IActivityDocument> {
1314
1314
  }
1315
1315
  //#endregion
1316
1316
  //#region src/repositories/note.repository.d.ts
1317
- interface NoteRepositoryDeps {
1317
+ export interface NoteRepositoryDeps {
1318
1318
  events: CrmEventDispatcher;
1319
1319
  }
1320
- declare class NoteRepository extends Repository<INoteDocument> {
1320
+ export declare class NoteRepository extends Repository<INoteDocument> {
1321
1321
  private readonly events;
1322
1322
  constructor(model: Model<INoteDocument>, plugins: PluginType[], deps: NoteRepositoryDeps, pagination?: PaginationConfig);
1323
1323
  addNote(input: Partial<INoteDocument>, ctx?: CrmContext): Promise<INoteDocument>;
1324
1324
  }
1325
1325
  //#endregion
1326
1326
  //#region src/repositories/loss-reason.repository.d.ts
1327
- interface LossReasonRepositoryDeps {
1327
+ export interface LossReasonRepositoryDeps {
1328
1328
  events: CrmEventDispatcher;
1329
1329
  }
1330
- declare class LossReasonRepository extends Repository<ILossReasonDocument> {
1330
+ export declare class LossReasonRepository extends Repository<ILossReasonDocument> {
1331
1331
  private readonly events;
1332
1332
  constructor(model: Model<ILossReasonDocument>, plugins: PluginType[], deps: LossReasonRepositoryDeps, pagination?: PaginationConfig);
1333
1333
  /** Hide from pickers without breaking historical FKs. */
@@ -1335,10 +1335,10 @@ declare class LossReasonRepository extends Repository<ILossReasonDocument> {
1335
1335
  }
1336
1336
  //#endregion
1337
1337
  //#region src/repositories/email-event.repository.d.ts
1338
- interface EmailEventRepositoryDeps {
1338
+ export interface EmailEventRepositoryDeps {
1339
1339
  events: CrmEventDispatcher;
1340
1340
  }
1341
- interface RecordEmailEventInput {
1341
+ export interface RecordEmailEventInput {
1342
1342
  subjectKind: EmailEventSubjectKind;
1343
1343
  subjectId: string;
1344
1344
  campaignId?: string;
@@ -1348,7 +1348,7 @@ interface RecordEmailEventInput {
1348
1348
  ip?: string;
1349
1349
  metadata?: Record<string, unknown>;
1350
1350
  }
1351
- declare class EmailEventRepository extends Repository<IEmailEventDocument> {
1351
+ export declare class EmailEventRepository extends Repository<IEmailEventDocument> {
1352
1352
  private readonly events;
1353
1353
  constructor(model: Model<IEmailEventDocument>, plugins: PluginType[], deps: EmailEventRepositoryDeps, pagination?: PaginationConfig);
1354
1354
  recordOpen(input: RecordEmailEventInput, ctx?: CrmContext): Promise<IEmailEventDocument>;
@@ -1360,10 +1360,10 @@ declare class EmailEventRepository extends Repository<IEmailEventDocument> {
1360
1360
  }
1361
1361
  //#endregion
1362
1362
  //#region src/repositories/conversation.repository.d.ts
1363
- interface ConversationRepositoryDeps {
1363
+ export interface ConversationRepositoryDeps {
1364
1364
  events: CrmEventDispatcher;
1365
1365
  }
1366
- interface OpenConversationInput {
1366
+ export interface OpenConversationInput {
1367
1367
  channel: ConversationChannel;
1368
1368
  participantKind: ConversationParticipantKind;
1369
1369
  participantId: string;
@@ -1371,7 +1371,7 @@ interface OpenConversationInput {
1371
1371
  assigneeId?: string;
1372
1372
  metadata?: Record<string, unknown>;
1373
1373
  }
1374
- declare class ConversationRepository extends Repository<IConversationDocument> {
1374
+ export declare class ConversationRepository extends Repository<IConversationDocument> {
1375
1375
  private readonly events;
1376
1376
  constructor(model: Model<IConversationDocument>, plugins: PluginType[], deps: ConversationRepositoryDeps, pagination?: PaginationConfig);
1377
1377
  openConversation(input: OpenConversationInput, ctx?: CrmContext): Promise<IConversationDocument>;
@@ -1394,11 +1394,11 @@ declare class ConversationRepository extends Repository<IConversationDocument> {
1394
1394
  }
1395
1395
  //#endregion
1396
1396
  //#region src/repositories/message.repository.d.ts
1397
- interface MessageRepositoryDeps {
1397
+ export interface MessageRepositoryDeps {
1398
1398
  events: CrmEventDispatcher;
1399
1399
  conversations: ConversationRepository;
1400
1400
  }
1401
- interface RecordMessageInput {
1401
+ export interface RecordMessageInput {
1402
1402
  conversationId: string;
1403
1403
  body: string;
1404
1404
  attachments?: IMessageAttachment[];
@@ -1408,7 +1408,7 @@ interface RecordMessageInput {
1408
1408
  sentAt?: Date;
1409
1409
  metadata?: Record<string, unknown>;
1410
1410
  }
1411
- declare class MessageRepository extends Repository<IMessageDocument> {
1411
+ export declare class MessageRepository extends Repository<IMessageDocument> {
1412
1412
  private readonly events;
1413
1413
  private readonly conversations;
1414
1414
  constructor(model: Model<IMessageDocument>, plugins: PluginType[], deps: MessageRepositoryDeps, pagination?: PaginationConfig);
@@ -1422,10 +1422,10 @@ declare class MessageRepository extends Repository<IMessageDocument> {
1422
1422
  }
1423
1423
  //#endregion
1424
1424
  //#region src/repositories/sequence.repository.d.ts
1425
- interface SequenceRepositoryDeps {
1425
+ export interface SequenceRepositoryDeps {
1426
1426
  events: CrmEventDispatcher;
1427
1427
  }
1428
- declare class SequenceRepository extends Repository<ISequenceDocument> {
1428
+ export declare class SequenceRepository extends Repository<ISequenceDocument> {
1429
1429
  private readonly events;
1430
1430
  constructor(model: Model<ISequenceDocument>, plugins: PluginType[], deps: SequenceRepositoryDeps, pagination?: PaginationConfig);
1431
1431
  activate(id: string, ctx?: CrmContext): Promise<ISequenceDocument>;
@@ -1436,17 +1436,17 @@ declare class SequenceRepository extends Repository<ISequenceDocument> {
1436
1436
  }
1437
1437
  //#endregion
1438
1438
  //#region src/repositories/enrollment.repository.d.ts
1439
- interface EnrollmentRepositoryDeps {
1439
+ export interface EnrollmentRepositoryDeps {
1440
1440
  events: CrmEventDispatcher;
1441
1441
  /** Cross-repo reference: read `replyDetectionEnabled` from Sequence. */
1442
1442
  sequences: SequenceRepository;
1443
1443
  }
1444
1444
  /** A subject that just replied — input to `exitActiveOnReply()`. */
1445
- interface ReplySubject {
1445
+ export interface ReplySubject {
1446
1446
  subjectKind: EnrollmentSubjectKind;
1447
1447
  subjectId: string;
1448
1448
  }
1449
- interface EnrollInput {
1449
+ export interface EnrollInput {
1450
1450
  sequenceId: string;
1451
1451
  subjectKind: EnrollmentSubjectKind;
1452
1452
  subjectId: string;
@@ -1454,7 +1454,7 @@ interface EnrollInput {
1454
1454
  ownerId?: string;
1455
1455
  metadata?: Record<string, unknown>;
1456
1456
  }
1457
- declare class EnrollmentRepository extends Repository<IEnrollmentDocument> {
1457
+ export declare class EnrollmentRepository extends Repository<IEnrollmentDocument> {
1458
1458
  private readonly events;
1459
1459
  private readonly sequences;
1460
1460
  constructor(model: Model<IEnrollmentDocument>, plugins: PluginType[], deps: EnrollmentRepositoryDeps, pagination?: PaginationConfig);
@@ -1497,7 +1497,7 @@ declare class EnrollmentRepository extends Repository<IEnrollmentDocument> {
1497
1497
  }
1498
1498
  //#endregion
1499
1499
  //#region src/engine/engine-types.d.ts
1500
- interface CrmLogger {
1500
+ export interface CrmLogger {
1501
1501
  info?(msg: string, meta?: Record<string, unknown>): void;
1502
1502
  warn?(msg: string, meta?: Record<string, unknown>): void;
1503
1503
  error?(msg: string, meta?: Record<string, unknown>): void;
@@ -1508,7 +1508,7 @@ interface CrmLogger {
1508
1508
  * determines the persistence SHAPE and needs no connection or I/O to inspect.
1509
1509
  * Passed to `defineCrm(shape)`; nothing here opens a socket or reads a secret.
1510
1510
  */
1511
- interface CrmShape {
1511
+ export interface CrmShape {
1512
1512
  /**
1513
1513
  * Tenant column shape. `'objectId'` (default) matches Better Auth orgs
1514
1514
  * and unlocks `$lookup` / `.populate()`; `'string'` matches UUID hosts.
@@ -1546,7 +1546,7 @@ interface CrmShape {
1546
1546
  * connection is the first `bind` arg; these are the rest. A transport, outbox,
1547
1547
  * logger or plugin set belongs here, not in the shape.
1548
1548
  */
1549
- interface CrmRuntime {
1549
+ export interface CrmRuntime {
1550
1550
  /** Arc-compatible event transport. Default: in-process bus (owned + closed by the engine). */
1551
1551
  eventTransport?: EventTransport | undefined;
1552
1552
  /**
@@ -1570,7 +1570,7 @@ interface CrmRuntime {
1570
1570
  */
1571
1571
  allowNonTransactional?: boolean | undefined;
1572
1572
  }
1573
- interface ResolvedCrmConfig extends SchemaBuildConfig {
1573
+ export interface ResolvedCrmConfig extends SchemaBuildConfig {
1574
1574
  connection: Connection;
1575
1575
  tenant: ResolvedTenantConfig;
1576
1576
  forceRecreate: boolean;
@@ -1580,7 +1580,7 @@ interface ResolvedCrmConfig extends SchemaBuildConfig {
1580
1580
  pagination?: PaginationConfig | undefined;
1581
1581
  plugins: PluginType[];
1582
1582
  }
1583
- interface CrmRepositories {
1583
+ export interface CrmRepositories {
1584
1584
  pipeline: PipelineRepository;
1585
1585
  lead: LeadRepository;
1586
1586
  opportunity: OpportunityRepository;
@@ -1598,28 +1598,28 @@ interface CrmRepositories {
1598
1598
  sequence: SequenceRepository;
1599
1599
  enrollment: EnrollmentRepository;
1600
1600
  }
1601
- type ModularCrmRepositories = Partial<CrmRepositories>;
1602
- type SalesCrmModels = Pick<CrmModels, 'Pipeline' | 'Lead' | 'Opportunity' | 'Contact' | 'Account' | 'Activity' | 'Note' | 'LossReason'>;
1603
- type SalesCrmRepositories = Pick<CrmRepositories, 'pipeline' | 'lead' | 'opportunity' | 'contact' | 'account' | 'activity' | 'note' | 'lossReason'>;
1604
- type EngagementCrmModels = Pick<CrmModels, 'Subscription' | 'Suppression' | 'EmailEvent' | 'Conversation' | 'Message'>;
1605
- type EngagementCrmRepositories = Pick<CrmRepositories, 'subscription' | 'suppression' | 'emailEvent' | 'conversation' | 'message'>;
1606
- type AutomationCrmModels = Pick<CrmModels, 'Campaign' | 'Sequence' | 'Enrollment'>;
1607
- type AutomationCrmRepositories = Pick<CrmRepositories, 'campaign' | 'sequence' | 'enrollment'>;
1608
- interface CrmModuleView<TModels, TRepositories> {
1601
+ export type ModularCrmRepositories = Partial<CrmRepositories>;
1602
+ export type SalesCrmModels = Pick<CrmModels, 'Pipeline' | 'Lead' | 'Opportunity' | 'Contact' | 'Account' | 'Activity' | 'Note' | 'LossReason'>;
1603
+ export type SalesCrmRepositories = Pick<CrmRepositories, 'pipeline' | 'lead' | 'opportunity' | 'contact' | 'account' | 'activity' | 'note' | 'lossReason'>;
1604
+ export type EngagementCrmModels = Pick<CrmModels, 'Subscription' | 'Suppression' | 'EmailEvent' | 'Conversation' | 'Message'>;
1605
+ export type EngagementCrmRepositories = Pick<CrmRepositories, 'subscription' | 'suppression' | 'emailEvent' | 'conversation' | 'message'>;
1606
+ export type AutomationCrmModels = Pick<CrmModels, 'Campaign' | 'Sequence' | 'Enrollment'>;
1607
+ export type AutomationCrmRepositories = Pick<CrmRepositories, 'campaign' | 'sequence' | 'enrollment'>;
1608
+ export interface CrmModuleView<TModels, TRepositories> {
1609
1609
  readonly models: Readonly<TModels>;
1610
1610
  readonly repositories: Readonly<TRepositories>;
1611
1611
  }
1612
- interface ModularCrmModuleViews {
1612
+ export interface ModularCrmModuleViews {
1613
1613
  readonly sales?: CrmModuleView<SalesCrmModels, SalesCrmRepositories> | undefined;
1614
1614
  readonly engagement?: CrmModuleView<EngagementCrmModels, EngagementCrmRepositories> | undefined;
1615
1615
  readonly automation?: CrmModuleView<AutomationCrmModels, AutomationCrmRepositories> | undefined;
1616
1616
  }
1617
- interface FullCrmModuleViews {
1617
+ export interface FullCrmModuleViews {
1618
1618
  readonly sales: CrmModuleView<SalesCrmModels, SalesCrmRepositories>;
1619
1619
  readonly engagement: CrmModuleView<EngagementCrmModels, EngagementCrmRepositories>;
1620
1620
  readonly automation: CrmModuleView<AutomationCrmModels, AutomationCrmRepositories>;
1621
1621
  }
1622
- interface CrmEngineBase<TModels, TRepositories, TModules> {
1622
+ export interface CrmEngineBase<TModels, TRepositories, TModules> {
1623
1623
  /** Repositories ARE the API surface (PACKAGE_RULES §1). */
1624
1624
  readonly repositories: Readonly<TRepositories>;
1625
1625
  /**
@@ -1663,16 +1663,16 @@ interface CrmEngineBase<TModels, TRepositories, TModules> {
1663
1663
  close(): Promise<void>;
1664
1664
  }
1665
1665
  /** All-enabled engine returned when `shape.modules` is omitted. */
1666
- type CrmEngine = CrmEngineBase<CrmModels, CrmRepositories, FullCrmModuleViews>;
1666
+ export type CrmEngine = CrmEngineBase<CrmModels, CrmRepositories, FullCrmModuleViews>;
1667
1667
  /** Progressive engine returned when a `modules` selection is supplied. */
1668
- type ModularCrmEngine = CrmEngineBase<ModularCrmModels, ModularCrmRepositories, ModularCrmModuleViews>;
1668
+ export type ModularCrmEngine = CrmEngineBase<ModularCrmModels, ModularCrmRepositories, ModularCrmModuleViews>;
1669
1669
  /**
1670
1670
  * The connection-free description produced by `defineCrm(shape)` (Kernel
1671
1671
  * Construction Standard §6.1). `defineCrm` is the SOLE construction API — there
1672
1672
  * is no `createCrm` wrapper. `bind` compiles the schemas on the supplied
1673
1673
  * connection, wires the engine, verifies capabilities, and returns the engine.
1674
1674
  */
1675
- interface CrmBlueprint<TEngine extends CrmEngine | ModularCrmEngine = ModularCrmEngine> {
1675
+ export interface CrmBlueprint<TEngine extends CrmEngine | ModularCrmEngine = ModularCrmEngine> {
1676
1676
  readonly id: 'crm';
1677
1677
  /** The model names this blueprint registers — known without a connection. */
1678
1678
  readonly modelNames: readonly string[];
@@ -1688,32 +1688,32 @@ interface CrmBlueprint<TEngine extends CrmEngine | ModularCrmEngine = ModularCrm
1688
1688
  * stores cleanly. Host-specific extras go through the inherited
1689
1689
  * `metadata?` field — keep the typed surface tight.
1690
1690
  */
1691
- interface CrmContext extends OperationContext {
1691
+ export interface CrmContext extends OperationContext {
1692
1692
  organizationId?: string | import('mongoose').Types.ObjectId;
1693
1693
  actorId?: string | import('mongoose').Types.ObjectId;
1694
1694
  /** Mongo transaction session (passed through to mongokit). */
1695
1695
  session?: unknown;
1696
1696
  }
1697
- type _ModelTypes = Model<unknown>;
1697
+ export type _ModelTypes = Model<unknown>;
1698
1698
  //#endregion
1699
1699
  //#region src/engine/define-crm.d.ts
1700
- declare function defineCrm(shape: CrmShape & {
1700
+ export declare function defineCrm(shape: CrmShape & {
1701
1701
  modules: CrmModulesConfig;
1702
1702
  }): CrmBlueprint<ModularCrmEngine>;
1703
- declare function defineCrm(shape?: CrmShape & {
1703
+ export declare function defineCrm(shape?: CrmShape & {
1704
1704
  modules?: undefined;
1705
1705
  }): CrmBlueprint<CrmEngine>;
1706
- declare function defineCrm(shape?: CrmShape): CrmBlueprint<ModularCrmEngine>;
1706
+ export declare function defineCrm(shape?: CrmShape): CrmBlueprint<ModularCrmEngine>;
1707
1707
  //#endregion
1708
1708
  //#region src/repositories/create-repositories.d.ts
1709
- interface CreateCrmRepositoriesDeps {
1709
+ export interface CreateCrmRepositoriesDeps {
1710
1710
  events: CrmEventDispatcher;
1711
1711
  config: ResolvedCrmConfig;
1712
1712
  }
1713
- declare function createCrmRepositories(models: ModularCrmModels, deps: CreateCrmRepositoriesDeps): ModularCrmRepositories;
1713
+ export declare function createCrmRepositories(models: ModularCrmModels, deps: CreateCrmRepositoriesDeps): ModularCrmRepositories;
1714
1714
  //#endregion
1715
1715
  //#region src/services/lead.service.d.ts
1716
- interface ConvertLeadInput {
1716
+ export interface ConvertLeadInput {
1717
1717
  pipelineId: string;
1718
1718
  /** Defaults to `<companyName> — <source>` / `<fullName> — New`. */
1719
1719
  opportunityName?: string;
@@ -1723,7 +1723,7 @@ interface ConvertLeadInput {
1723
1723
  expectedCloseAt?: Date;
1724
1724
  by?: string;
1725
1725
  }
1726
- interface ConvertResult {
1726
+ export interface ConvertResult {
1727
1727
  lead: ILeadDocument;
1728
1728
  contact: IContactDocument;
1729
1729
  account?: IAccountDocument;
@@ -1735,14 +1735,14 @@ interface ConvertResult {
1735
1735
  /** Convenience string id — same as `String(opportunity._id)`. */
1736
1736
  opportunityId: string;
1737
1737
  }
1738
- interface LeadServiceDeps {
1738
+ export interface LeadServiceDeps {
1739
1739
  lead: LeadRepository;
1740
1740
  contact: ContactRepository;
1741
1741
  account: AccountRepository;
1742
1742
  opportunity: OpportunityRepository;
1743
1743
  events: CrmEventDispatcher;
1744
1744
  }
1745
- declare class LeadService {
1745
+ export declare class LeadService {
1746
1746
  private readonly leads;
1747
1747
  private readonly contacts;
1748
1748
  private readonly accounts;
@@ -1780,79 +1780,79 @@ declare class LeadService {
1780
1780
  //#endregion
1781
1781
  //#region src/events/event-constants.d.ts
1782
1782
  /** PACKAGE_RULES rule 12: `package:resource.verb`. */
1783
- declare const CRM_EVENTS: {
1784
- readonly LEAD_CREATED: "crm:lead.created";
1785
- readonly LEAD_STATUS_CHANGED: "crm:lead.status_changed";
1786
- readonly LEAD_SCORED: "crm:lead.scored";
1787
- readonly LEAD_CONVERTED: "crm:lead.converted";
1788
- readonly LEAD_DISQUALIFIED: "crm:lead.disqualified";
1789
- readonly ACCOUNT_CREATED: "crm:account.created";
1790
- readonly ACCOUNT_UPDATED: "crm:account.updated";
1791
- readonly CONTACT_CREATED: "crm:contact.created";
1792
- readonly CONTACT_UPDATED: "crm:contact.updated";
1793
- readonly OPPORTUNITY_CREATED: "crm:opportunity.created";
1794
- readonly OPPORTUNITY_STAGE_ADVANCED: "crm:opportunity.stage_advanced";
1795
- readonly OPPORTUNITY_STAGE_REGRESSED: "crm:opportunity.stage_regressed";
1796
- readonly OPPORTUNITY_WON: "crm:opportunity.won";
1797
- readonly OPPORTUNITY_LOST: "crm:opportunity.lost";
1798
- readonly OPPORTUNITY_ABANDONED: "crm:opportunity.abandoned";
1799
- readonly PIPELINE_CREATED: "crm:pipeline.created";
1800
- readonly PIPELINE_ARCHIVED: "crm:pipeline.archived";
1801
- readonly ACTIVITY_PLANNED: "crm:activity.planned";
1802
- readonly ACTIVITY_COMPLETED: "crm:activity.completed";
1803
- readonly ACTIVITY_CANCELLED: "crm:activity.cancelled";
1804
- readonly NOTE_ADDED: "crm:note.added";
1805
- readonly CAMPAIGN_CREATED: "crm:campaign.created";
1806
- readonly CAMPAIGN_ACTIVATED: "crm:campaign.activated";
1807
- readonly CAMPAIGN_PAUSED: "crm:campaign.paused";
1808
- readonly CAMPAIGN_RESUMED: "crm:campaign.resumed";
1809
- readonly CAMPAIGN_COMPLETED: "crm:campaign.completed";
1810
- readonly CAMPAIGN_ARCHIVED: "crm:campaign.archived";
1811
- readonly SUBSCRIPTION_CREATED: "crm:subscription.created";
1812
- readonly SUBSCRIPTION_CONFIRMED: "crm:subscription.confirmed";
1813
- readonly SUBSCRIPTION_UNSUBSCRIBED: "crm:subscription.unsubscribed";
1814
- readonly SUBSCRIPTION_BOUNCED: "crm:subscription.bounced";
1815
- readonly SUBSCRIPTION_COMPLAINED: "crm:subscription.complained";
1816
- readonly SEQUENCE_CREATED: "crm:sequence.created";
1817
- readonly SEQUENCE_ACTIVATED: "crm:sequence.active";
1818
- readonly SEQUENCE_PAUSED: "crm:sequence.paused";
1819
- readonly SEQUENCE_ARCHIVED: "crm:sequence.archived";
1820
- readonly ENROLLMENT_CREATED: "crm:enrollment.created";
1821
- readonly ENROLLMENT_STEP_SENT: "crm:enrollment.step_sent";
1822
- readonly ENROLLMENT_PAUSED: "crm:enrollment.paused";
1823
- readonly ENROLLMENT_RESUMED: "crm:enrollment.resumed";
1824
- readonly ENROLLMENT_COMPLETED: "crm:enrollment.completed";
1825
- readonly ENROLLMENT_EXITED: "crm:enrollment.exited";
1826
- readonly EMAIL_EVENT_OPENED: "crm:email_event.opened";
1827
- readonly EMAIL_EVENT_CLICKED: "crm:email_event.clicked";
1828
- readonly EMAIL_EVENT_BOUNCED: "crm:email_event.bounced";
1829
- readonly EMAIL_EVENT_COMPLAINED: "crm:email_event.complained";
1830
- readonly EMAIL_EVENT_UNSUBSCRIBED: "crm:email_event.unsubscribed";
1831
- readonly LEAD_ENRICHED: "crm:lead.enriched";
1832
- readonly LEAD_ASSIGNED: "crm:lead.assigned";
1833
- readonly LEAD_ANONYMIZED: "crm:lead.anonymized";
1834
- readonly CONTACT_ENRICHED: "crm:contact.enriched";
1835
- readonly CONTACT_ASSIGNED: "crm:contact.assigned";
1836
- readonly CONTACT_MERGED: "crm:contact.merged";
1837
- readonly CONTACT_ANONYMIZED: "crm:contact.anonymized";
1838
- readonly ACCOUNT_ENRICHED: "crm:account.enriched";
1839
- readonly ACCOUNT_ASSIGNED: "crm:account.assigned";
1840
- readonly ACCOUNT_MERGED: "crm:account.merged";
1841
- readonly OPPORTUNITY_ASSIGNED: "crm:opportunity.assigned";
1842
- readonly OPPORTUNITY_AMOUNT_CHANGED: "crm:opportunity.amount_changed";
1843
- readonly OPPORTUNITY_EXTENDED: "crm:opportunity.extended";
1844
- readonly ACTIVITY_RESCHEDULED: "crm:activity.rescheduled";
1845
- readonly ACTIVITY_OUTCOME_RECORDED: "crm:activity.outcome_recorded";
1846
- readonly SUPPRESSION_ADDED: "crm:suppression.added";
1847
- readonly SUPPRESSION_REMOVED: "crm:suppression.removed";
1848
- readonly CONVERSATION_CREATED: "crm:conversation.created";
1849
- readonly CONVERSATION_ASSIGNED: "crm:conversation.assigned";
1850
- readonly CONVERSATION_RESOLVED: "crm:conversation.resolved";
1851
- readonly CONVERSATION_REOPENED: "crm:conversation.reopened";
1852
- readonly MESSAGE_RECEIVED: "crm:message.received";
1853
- readonly MESSAGE_SENT: "crm:message.sent";
1783
+ export declare const CRM_EVENTS: {
1784
+ readonly LEAD_CREATED: 'crm:lead.created';
1785
+ readonly LEAD_STATUS_CHANGED: 'crm:lead.status_changed';
1786
+ readonly LEAD_SCORED: 'crm:lead.scored';
1787
+ readonly LEAD_CONVERTED: 'crm:lead.converted';
1788
+ readonly LEAD_DISQUALIFIED: 'crm:lead.disqualified';
1789
+ readonly ACCOUNT_CREATED: 'crm:account.created';
1790
+ readonly ACCOUNT_UPDATED: 'crm:account.updated';
1791
+ readonly CONTACT_CREATED: 'crm:contact.created';
1792
+ readonly CONTACT_UPDATED: 'crm:contact.updated';
1793
+ readonly OPPORTUNITY_CREATED: 'crm:opportunity.created';
1794
+ readonly OPPORTUNITY_STAGE_ADVANCED: 'crm:opportunity.stage_advanced';
1795
+ readonly OPPORTUNITY_STAGE_REGRESSED: 'crm:opportunity.stage_regressed';
1796
+ readonly OPPORTUNITY_WON: 'crm:opportunity.won';
1797
+ readonly OPPORTUNITY_LOST: 'crm:opportunity.lost';
1798
+ readonly OPPORTUNITY_ABANDONED: 'crm:opportunity.abandoned';
1799
+ readonly PIPELINE_CREATED: 'crm:pipeline.created';
1800
+ readonly PIPELINE_ARCHIVED: 'crm:pipeline.archived';
1801
+ readonly ACTIVITY_PLANNED: 'crm:activity.planned';
1802
+ readonly ACTIVITY_COMPLETED: 'crm:activity.completed';
1803
+ readonly ACTIVITY_CANCELLED: 'crm:activity.cancelled';
1804
+ readonly NOTE_ADDED: 'crm:note.added';
1805
+ readonly CAMPAIGN_CREATED: 'crm:campaign.created';
1806
+ readonly CAMPAIGN_ACTIVATED: 'crm:campaign.activated';
1807
+ readonly CAMPAIGN_PAUSED: 'crm:campaign.paused';
1808
+ readonly CAMPAIGN_RESUMED: 'crm:campaign.resumed';
1809
+ readonly CAMPAIGN_COMPLETED: 'crm:campaign.completed';
1810
+ readonly CAMPAIGN_ARCHIVED: 'crm:campaign.archived';
1811
+ readonly SUBSCRIPTION_CREATED: 'crm:subscription.created';
1812
+ readonly SUBSCRIPTION_CONFIRMED: 'crm:subscription.confirmed';
1813
+ readonly SUBSCRIPTION_UNSUBSCRIBED: 'crm:subscription.unsubscribed';
1814
+ readonly SUBSCRIPTION_BOUNCED: 'crm:subscription.bounced';
1815
+ readonly SUBSCRIPTION_COMPLAINED: 'crm:subscription.complained';
1816
+ readonly SEQUENCE_CREATED: 'crm:sequence.created';
1817
+ readonly SEQUENCE_ACTIVATED: 'crm:sequence.active';
1818
+ readonly SEQUENCE_PAUSED: 'crm:sequence.paused';
1819
+ readonly SEQUENCE_ARCHIVED: 'crm:sequence.archived';
1820
+ readonly ENROLLMENT_CREATED: 'crm:enrollment.created';
1821
+ readonly ENROLLMENT_STEP_SENT: 'crm:enrollment.step_sent';
1822
+ readonly ENROLLMENT_PAUSED: 'crm:enrollment.paused';
1823
+ readonly ENROLLMENT_RESUMED: 'crm:enrollment.resumed';
1824
+ readonly ENROLLMENT_COMPLETED: 'crm:enrollment.completed';
1825
+ readonly ENROLLMENT_EXITED: 'crm:enrollment.exited';
1826
+ readonly EMAIL_EVENT_OPENED: 'crm:email_event.opened';
1827
+ readonly EMAIL_EVENT_CLICKED: 'crm:email_event.clicked';
1828
+ readonly EMAIL_EVENT_BOUNCED: 'crm:email_event.bounced';
1829
+ readonly EMAIL_EVENT_COMPLAINED: 'crm:email_event.complained';
1830
+ readonly EMAIL_EVENT_UNSUBSCRIBED: 'crm:email_event.unsubscribed';
1831
+ readonly LEAD_ENRICHED: 'crm:lead.enriched';
1832
+ readonly LEAD_ASSIGNED: 'crm:lead.assigned';
1833
+ readonly LEAD_ANONYMIZED: 'crm:lead.anonymized';
1834
+ readonly CONTACT_ENRICHED: 'crm:contact.enriched';
1835
+ readonly CONTACT_ASSIGNED: 'crm:contact.assigned';
1836
+ readonly CONTACT_MERGED: 'crm:contact.merged';
1837
+ readonly CONTACT_ANONYMIZED: 'crm:contact.anonymized';
1838
+ readonly ACCOUNT_ENRICHED: 'crm:account.enriched';
1839
+ readonly ACCOUNT_ASSIGNED: 'crm:account.assigned';
1840
+ readonly ACCOUNT_MERGED: 'crm:account.merged';
1841
+ readonly OPPORTUNITY_ASSIGNED: 'crm:opportunity.assigned';
1842
+ readonly OPPORTUNITY_AMOUNT_CHANGED: 'crm:opportunity.amount_changed';
1843
+ readonly OPPORTUNITY_EXTENDED: 'crm:opportunity.extended';
1844
+ readonly ACTIVITY_RESCHEDULED: 'crm:activity.rescheduled';
1845
+ readonly ACTIVITY_OUTCOME_RECORDED: 'crm:activity.outcome_recorded';
1846
+ readonly SUPPRESSION_ADDED: 'crm:suppression.added';
1847
+ readonly SUPPRESSION_REMOVED: 'crm:suppression.removed';
1848
+ readonly CONVERSATION_CREATED: 'crm:conversation.created';
1849
+ readonly CONVERSATION_ASSIGNED: 'crm:conversation.assigned';
1850
+ readonly CONVERSATION_RESOLVED: 'crm:conversation.resolved';
1851
+ readonly CONVERSATION_REOPENED: 'crm:conversation.reopened';
1852
+ readonly MESSAGE_RECEIVED: 'crm:message.received';
1853
+ readonly MESSAGE_SENT: 'crm:message.sent';
1854
1854
  };
1855
- type CrmEventName = (typeof CRM_EVENTS)[keyof typeof CRM_EVENTS];
1855
+ export type CrmEventName = (typeof CRM_EVENTS)[keyof typeof CRM_EVENTS];
1856
1856
  //#endregion
1857
1857
  //#region src/events/event-catalog.d.ts
1858
1858
  /**
@@ -1872,7 +1872,7 @@ type CrmEventName = (typeof CRM_EVENTS)[keyof typeof CRM_EVENTS];
1872
1872
  * build. A kernel must not import arc, which is why the claim can only be
1873
1873
  * checked where both are visible.
1874
1874
  */
1875
- interface CrmEventSchema {
1875
+ export interface CrmEventSchema {
1876
1876
  type: 'object';
1877
1877
  properties?: Record<string, {
1878
1878
  type?: string;
@@ -1882,7 +1882,7 @@ interface CrmEventSchema {
1882
1882
  [key: string]: unknown;
1883
1883
  }
1884
1884
  /** Structurally assignable to arc's `EventDefinitionOutput` — do NOT import arc. */
1885
- interface CrmEventDefinition<TSchema extends z.ZodType = z.ZodType> {
1885
+ export interface CrmEventDefinition<TSchema extends z.ZodType = z.ZodType> {
1886
1886
  name: CrmEventName;
1887
1887
  version: number;
1888
1888
  description: string;
@@ -1890,62 +1890,62 @@ interface CrmEventDefinition<TSchema extends z.ZodType = z.ZodType> {
1890
1890
  schema: CrmEventSchema;
1891
1891
  create(payload: z.infer<TSchema>, meta?: Partial<EventMeta>): DomainEvent<z.infer<TSchema>>;
1892
1892
  }
1893
- declare const LeadCreated: CrmEventDefinition<z.ZodObject<{
1893
+ export declare const LeadCreated: CrmEventDefinition<z.ZodObject<{
1894
1894
  leadId: z.ZodString;
1895
1895
  email: z.ZodOptional<z.ZodString>;
1896
1896
  score: z.ZodNumber;
1897
1897
  }, z.core.$strip>>;
1898
- declare const LeadStatusChanged: CrmEventDefinition<z.ZodObject<{
1898
+ export declare const LeadStatusChanged: CrmEventDefinition<z.ZodObject<{
1899
1899
  leadId: z.ZodString;
1900
1900
  from: z.ZodString;
1901
1901
  to: z.ZodString;
1902
1902
  }, z.core.$strip>>;
1903
- declare const LeadScored: CrmEventDefinition<z.ZodObject<{
1903
+ export declare const LeadScored: CrmEventDefinition<z.ZodObject<{
1904
1904
  leadId: z.ZodString;
1905
1905
  score: z.ZodNumber;
1906
1906
  }, z.core.$strip>>;
1907
- declare const LeadConverted: CrmEventDefinition<z.ZodObject<{
1907
+ export declare const LeadConverted: CrmEventDefinition<z.ZodObject<{
1908
1908
  leadId: z.ZodString;
1909
1909
  contactId: z.ZodString;
1910
1910
  accountId: z.ZodOptional<z.ZodString>;
1911
1911
  opportunityId: z.ZodString;
1912
1912
  }, z.core.$strip>>;
1913
- declare const LeadDisqualified: CrmEventDefinition<z.ZodObject<{
1913
+ export declare const LeadDisqualified: CrmEventDefinition<z.ZodObject<{
1914
1914
  leadId: z.ZodString;
1915
1915
  reason: z.ZodString;
1916
1916
  }, z.core.$strip>>;
1917
- declare const LeadEnriched: CrmEventDefinition<z.ZodObject<{
1918
- leadId: z.ZodString;
1917
+ export declare const LeadEnriched: CrmEventDefinition<z.ZodObject<{
1919
1918
  fields: z.ZodArray<z.ZodString>;
1920
1919
  provider: z.ZodOptional<z.ZodString>;
1921
- }, z.core.$strip>>;
1922
- declare const LeadAssigned: CrmEventDefinition<z.ZodObject<{
1923
1920
  leadId: z.ZodString;
1921
+ }, z.core.$strip>>;
1922
+ export declare const LeadAssigned: CrmEventDefinition<z.ZodObject<{
1924
1923
  ownerId: z.ZodString;
1925
1924
  previousOwnerId: z.ZodOptional<z.ZodString>;
1925
+ leadId: z.ZodString;
1926
1926
  }, z.core.$strip>>;
1927
- declare const LeadAnonymized: CrmEventDefinition<z.ZodObject<{
1927
+ export declare const LeadAnonymized: CrmEventDefinition<z.ZodObject<{
1928
1928
  leadId: z.ZodString;
1929
1929
  fields: z.ZodArray<z.ZodString>;
1930
1930
  }, z.core.$strip>>;
1931
- declare const AccountCreated: CrmEventDefinition<z.ZodObject<{
1931
+ export declare const AccountCreated: CrmEventDefinition<z.ZodObject<{
1932
1932
  accountId: z.ZodString;
1933
1933
  name: z.ZodString;
1934
1934
  }, z.core.$strip>>;
1935
- declare const AccountUpdated: CrmEventDefinition<z.ZodObject<{
1935
+ export declare const AccountUpdated: CrmEventDefinition<z.ZodObject<{
1936
1936
  accountId: z.ZodString;
1937
1937
  }, z.core.$strip>>;
1938
- declare const AccountEnriched: CrmEventDefinition<z.ZodObject<{
1939
- accountId: z.ZodString;
1938
+ export declare const AccountEnriched: CrmEventDefinition<z.ZodObject<{
1940
1939
  fields: z.ZodArray<z.ZodString>;
1941
1940
  provider: z.ZodOptional<z.ZodString>;
1942
- }, z.core.$strip>>;
1943
- declare const AccountAssigned: CrmEventDefinition<z.ZodObject<{
1944
1941
  accountId: z.ZodString;
1942
+ }, z.core.$strip>>;
1943
+ export declare const AccountAssigned: CrmEventDefinition<z.ZodObject<{
1945
1944
  ownerId: z.ZodString;
1946
1945
  previousOwnerId: z.ZodOptional<z.ZodString>;
1946
+ accountId: z.ZodString;
1947
1947
  }, z.core.$strip>>;
1948
- declare const AccountMerged: CrmEventDefinition<z.ZodObject<{
1948
+ export declare const AccountMerged: CrmEventDefinition<z.ZodObject<{
1949
1949
  primaryId: z.ZodString;
1950
1950
  secondaryId: z.ZodString;
1951
1951
  strategy: z.ZodEnum<{
@@ -1953,24 +1953,24 @@ declare const AccountMerged: CrmEventDefinition<z.ZodObject<{
1953
1953
  preferSecondary: "preferSecondary";
1954
1954
  }>;
1955
1955
  }, z.core.$strip>>;
1956
- declare const ContactCreated: CrmEventDefinition<z.ZodObject<{
1956
+ export declare const ContactCreated: CrmEventDefinition<z.ZodObject<{
1957
1957
  contactId: z.ZodString;
1958
1958
  email: z.ZodOptional<z.ZodString>;
1959
1959
  }, z.core.$strip>>;
1960
- declare const ContactUpdated: CrmEventDefinition<z.ZodObject<{
1960
+ export declare const ContactUpdated: CrmEventDefinition<z.ZodObject<{
1961
1961
  contactId: z.ZodString;
1962
1962
  }, z.core.$strip>>;
1963
- declare const ContactEnriched: CrmEventDefinition<z.ZodObject<{
1964
- contactId: z.ZodString;
1963
+ export declare const ContactEnriched: CrmEventDefinition<z.ZodObject<{
1965
1964
  fields: z.ZodArray<z.ZodString>;
1966
1965
  provider: z.ZodOptional<z.ZodString>;
1967
- }, z.core.$strip>>;
1968
- declare const ContactAssigned: CrmEventDefinition<z.ZodObject<{
1969
1966
  contactId: z.ZodString;
1967
+ }, z.core.$strip>>;
1968
+ export declare const ContactAssigned: CrmEventDefinition<z.ZodObject<{
1970
1969
  ownerId: z.ZodString;
1971
1970
  previousOwnerId: z.ZodOptional<z.ZodString>;
1971
+ contactId: z.ZodString;
1972
1972
  }, z.core.$strip>>;
1973
- declare const ContactMerged: CrmEventDefinition<z.ZodObject<{
1973
+ export declare const ContactMerged: CrmEventDefinition<z.ZodObject<{
1974
1974
  primaryId: z.ZodString;
1975
1975
  secondaryId: z.ZodString;
1976
1976
  strategy: z.ZodEnum<{
@@ -1978,16 +1978,16 @@ declare const ContactMerged: CrmEventDefinition<z.ZodObject<{
1978
1978
  preferSecondary: "preferSecondary";
1979
1979
  }>;
1980
1980
  }, z.core.$strip>>;
1981
- declare const ContactAnonymized: CrmEventDefinition<z.ZodObject<{
1981
+ export declare const ContactAnonymized: CrmEventDefinition<z.ZodObject<{
1982
1982
  contactId: z.ZodString;
1983
1983
  fields: z.ZodArray<z.ZodString>;
1984
1984
  }, z.core.$strip>>;
1985
- declare const OpportunityCreated: CrmEventDefinition<z.ZodObject<{
1985
+ export declare const OpportunityCreated: CrmEventDefinition<z.ZodObject<{
1986
1986
  opportunityId: z.ZodString;
1987
1987
  pipelineId: z.ZodString;
1988
1988
  stageId: z.ZodString;
1989
1989
  }, z.core.$strip>>;
1990
- declare const OpportunityStageAdvanced: CrmEventDefinition<z.ZodObject<{
1990
+ export declare const OpportunityStageAdvanced: CrmEventDefinition<z.ZodObject<{
1991
1991
  opportunityId: z.ZodString;
1992
1992
  from: z.ZodObject<{
1993
1993
  stageId: z.ZodString;
@@ -1998,7 +1998,7 @@ declare const OpportunityStageAdvanced: CrmEventDefinition<z.ZodObject<{
1998
1998
  sequence: z.ZodNumber;
1999
1999
  }, z.core.$strip>;
2000
2000
  }, z.core.$strip>>;
2001
- declare const OpportunityStageRegressed: CrmEventDefinition<z.ZodObject<{
2001
+ export declare const OpportunityStageRegressed: CrmEventDefinition<z.ZodObject<{
2002
2002
  opportunityId: z.ZodString;
2003
2003
  from: z.ZodObject<{
2004
2004
  stageId: z.ZodString;
@@ -2009,248 +2009,248 @@ declare const OpportunityStageRegressed: CrmEventDefinition<z.ZodObject<{
2009
2009
  sequence: z.ZodNumber;
2010
2010
  }, z.core.$strip>;
2011
2011
  }, z.core.$strip>>;
2012
- declare const OpportunityWon: CrmEventDefinition<z.ZodObject<{
2012
+ export declare const OpportunityWon: CrmEventDefinition<z.ZodObject<{
2013
2013
  opportunityId: z.ZodString;
2014
2014
  amount: z.ZodOptional<z.ZodNumber>;
2015
2015
  }, z.core.$strip>>;
2016
- declare const OpportunityLost: CrmEventDefinition<z.ZodObject<{
2016
+ export declare const OpportunityLost: CrmEventDefinition<z.ZodObject<{
2017
2017
  opportunityId: z.ZodString;
2018
2018
  lostReasonId: z.ZodOptional<z.ZodString>;
2019
2019
  }, z.core.$strip>>;
2020
- declare const OpportunityAbandoned: CrmEventDefinition<z.ZodObject<{
2020
+ export declare const OpportunityAbandoned: CrmEventDefinition<z.ZodObject<{
2021
2021
  opportunityId: z.ZodString;
2022
2022
  }, z.core.$strip>>;
2023
- declare const OpportunityAssigned: CrmEventDefinition<z.ZodObject<{
2024
- opportunityId: z.ZodString;
2023
+ export declare const OpportunityAssigned: CrmEventDefinition<z.ZodObject<{
2025
2024
  ownerId: z.ZodString;
2026
2025
  previousOwnerId: z.ZodOptional<z.ZodString>;
2026
+ opportunityId: z.ZodString;
2027
2027
  }, z.core.$strip>>;
2028
- declare const OpportunityAmountChanged: CrmEventDefinition<z.ZodObject<{
2028
+ export declare const OpportunityAmountChanged: CrmEventDefinition<z.ZodObject<{
2029
2029
  opportunityId: z.ZodString;
2030
2030
  amount: z.ZodNumber;
2031
2031
  previousAmount: z.ZodOptional<z.ZodNumber>;
2032
2032
  reason: z.ZodOptional<z.ZodString>;
2033
2033
  by: z.ZodOptional<z.ZodString>;
2034
2034
  }, z.core.$strip>>;
2035
- declare const OpportunityExtended: CrmEventDefinition<z.ZodObject<{
2035
+ export declare const OpportunityExtended: CrmEventDefinition<z.ZodObject<{
2036
2036
  opportunityId: z.ZodString;
2037
2037
  expectedCloseAt: z.ZodISODateTime;
2038
2038
  previousExpectedCloseAt: z.ZodOptional<z.ZodISODateTime>;
2039
2039
  reason: z.ZodOptional<z.ZodString>;
2040
2040
  by: z.ZodOptional<z.ZodString>;
2041
2041
  }, z.core.$strip>>;
2042
- declare const PipelineCreated: CrmEventDefinition<z.ZodObject<{
2042
+ export declare const PipelineCreated: CrmEventDefinition<z.ZodObject<{
2043
2043
  pipelineId: z.ZodString;
2044
2044
  }, z.core.$strip>>;
2045
- declare const PipelineArchived: CrmEventDefinition<z.ZodObject<{
2045
+ export declare const PipelineArchived: CrmEventDefinition<z.ZodObject<{
2046
2046
  pipelineId: z.ZodString;
2047
2047
  }, z.core.$strip>>;
2048
- declare const ActivityPlanned: CrmEventDefinition<z.ZodObject<{
2048
+ export declare const ActivityPlanned: CrmEventDefinition<z.ZodObject<{
2049
2049
  activityId: z.ZodString;
2050
2050
  type: z.ZodString;
2051
2051
  subjectKind: z.ZodString;
2052
2052
  subjectId: z.ZodString;
2053
2053
  }, z.core.$strip>>;
2054
- declare const ActivityCompleted: CrmEventDefinition<z.ZodObject<{
2054
+ export declare const ActivityCompleted: CrmEventDefinition<z.ZodObject<{
2055
2055
  activityId: z.ZodString;
2056
2056
  completedAt: z.ZodISODateTime;
2057
2057
  }, z.core.$strip>>;
2058
- declare const ActivityCancelled: CrmEventDefinition<z.ZodObject<{
2058
+ export declare const ActivityCancelled: CrmEventDefinition<z.ZodObject<{
2059
2059
  activityId: z.ZodString;
2060
2060
  reason: z.ZodOptional<z.ZodString>;
2061
2061
  }, z.core.$strip>>;
2062
- declare const ActivityRescheduled: CrmEventDefinition<z.ZodObject<{
2062
+ export declare const ActivityRescheduled: CrmEventDefinition<z.ZodObject<{
2063
2063
  activityId: z.ZodString;
2064
2064
  dueDate: z.ZodISODateTime;
2065
2065
  previousDueDate: z.ZodOptional<z.ZodISODateTime>;
2066
2066
  reason: z.ZodOptional<z.ZodString>;
2067
2067
  by: z.ZodOptional<z.ZodString>;
2068
2068
  }, z.core.$strip>>;
2069
- declare const ActivityOutcomeRecorded: CrmEventDefinition<z.ZodObject<{
2069
+ export declare const ActivityOutcomeRecorded: CrmEventDefinition<z.ZodObject<{
2070
2070
  activityId: z.ZodString;
2071
2071
  outcome: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2072
2072
  }, z.core.$strip>>;
2073
- declare const NoteAdded: CrmEventDefinition<z.ZodObject<{
2073
+ export declare const NoteAdded: CrmEventDefinition<z.ZodObject<{
2074
2074
  noteId: z.ZodString;
2075
2075
  subjectKind: z.ZodString;
2076
2076
  subjectId: z.ZodString;
2077
2077
  }, z.core.$strip>>;
2078
- declare const CampaignCreated: CrmEventDefinition<z.ZodObject<{
2078
+ export declare const CampaignCreated: CrmEventDefinition<z.ZodObject<{
2079
2079
  campaignId: z.ZodString;
2080
2080
  name: z.ZodString;
2081
2081
  }, z.core.$strip>>;
2082
- declare const CampaignActivated: CrmEventDefinition<z.ZodObject<{
2082
+ export declare const CampaignActivated: CrmEventDefinition<z.ZodObject<{
2083
2083
  campaignId: z.ZodString;
2084
2084
  }, z.core.$strip>>;
2085
- declare const CampaignPaused: CrmEventDefinition<z.ZodObject<{
2085
+ export declare const CampaignPaused: CrmEventDefinition<z.ZodObject<{
2086
2086
  campaignId: z.ZodString;
2087
2087
  reason: z.ZodOptional<z.ZodString>;
2088
2088
  }, z.core.$strip>>;
2089
- declare const CampaignResumed: CrmEventDefinition<z.ZodObject<{
2089
+ export declare const CampaignResumed: CrmEventDefinition<z.ZodObject<{
2090
2090
  campaignId: z.ZodString;
2091
2091
  }, z.core.$strip>>;
2092
- declare const CampaignCompleted: CrmEventDefinition<z.ZodObject<{
2092
+ export declare const CampaignCompleted: CrmEventDefinition<z.ZodObject<{
2093
2093
  campaignId: z.ZodString;
2094
2094
  actualRevenueAmount: z.ZodOptional<z.ZodNumber>;
2095
2095
  }, z.core.$strip>>;
2096
- declare const CampaignArchived: CrmEventDefinition<z.ZodObject<{
2096
+ export declare const CampaignArchived: CrmEventDefinition<z.ZodObject<{
2097
2097
  campaignId: z.ZodString;
2098
2098
  }, z.core.$strip>>;
2099
- declare const SubscriptionCreated: CrmEventDefinition<z.ZodObject<{
2099
+ export declare const SubscriptionCreated: CrmEventDefinition<z.ZodObject<{
2100
2100
  subscriptionId: z.ZodString;
2101
2101
  contactId: z.ZodString;
2102
2102
  campaignId: z.ZodString;
2103
2103
  requiresConfirmation: z.ZodBoolean;
2104
2104
  }, z.core.$strip>>;
2105
- declare const SubscriptionConfirmed: CrmEventDefinition<z.ZodObject<{
2105
+ export declare const SubscriptionConfirmed: CrmEventDefinition<z.ZodObject<{
2106
2106
  subscriptionId: z.ZodString;
2107
2107
  contactId: z.ZodString;
2108
2108
  campaignId: z.ZodString;
2109
2109
  confirmedAt: z.ZodISODateTime;
2110
2110
  }, z.core.$strip>>;
2111
- declare const SubscriptionUnsubscribed: CrmEventDefinition<z.ZodObject<{
2111
+ export declare const SubscriptionUnsubscribed: CrmEventDefinition<z.ZodObject<{
2112
2112
  subscriptionId: z.ZodString;
2113
2113
  contactId: z.ZodString;
2114
2114
  campaignId: z.ZodString;
2115
2115
  reason: z.ZodOptional<z.ZodString>;
2116
2116
  }, z.core.$strip>>;
2117
- declare const SubscriptionBounced: CrmEventDefinition<z.ZodObject<{
2117
+ export declare const SubscriptionBounced: CrmEventDefinition<z.ZodObject<{
2118
2118
  subscriptionId: z.ZodString;
2119
2119
  contactId: z.ZodString;
2120
2120
  campaignId: z.ZodString;
2121
2121
  reason: z.ZodOptional<z.ZodString>;
2122
2122
  }, z.core.$strip>>;
2123
- declare const SubscriptionComplained: CrmEventDefinition<z.ZodObject<{
2123
+ export declare const SubscriptionComplained: CrmEventDefinition<z.ZodObject<{
2124
2124
  subscriptionId: z.ZodString;
2125
2125
  contactId: z.ZodString;
2126
2126
  campaignId: z.ZodString;
2127
2127
  }, z.core.$strip>>;
2128
- declare const SuppressionAdded: CrmEventDefinition<z.ZodObject<{
2128
+ export declare const SuppressionAdded: CrmEventDefinition<z.ZodObject<{
2129
2129
  email: z.ZodString;
2130
2130
  reason: z.ZodEnum<{
2131
2131
  bounce: "bounce";
2132
2132
  complaint: "complaint";
2133
- unsubscribe: "unsubscribe";
2134
2133
  manual: "manual";
2134
+ unsubscribe: "unsubscribe";
2135
2135
  }>;
2136
2136
  source: z.ZodOptional<z.ZodString>;
2137
2137
  }, z.core.$strip>>;
2138
- declare const SuppressionRemoved: CrmEventDefinition<z.ZodObject<{
2138
+ export declare const SuppressionRemoved: CrmEventDefinition<z.ZodObject<{
2139
2139
  email: z.ZodString;
2140
2140
  }, z.core.$strip>>;
2141
- declare const EmailEventOpened: CrmEventDefinition<z.ZodObject<{
2141
+ export declare const EmailEventOpened: CrmEventDefinition<z.ZodObject<{
2142
2142
  eventId: z.ZodString;
2143
2143
  kind: z.ZodString;
2144
2144
  subjectKind: z.ZodString;
2145
2145
  subjectId: z.ZodString;
2146
2146
  campaignId: z.ZodOptional<z.ZodString>;
2147
2147
  }, z.core.$strip>>;
2148
- declare const EmailEventClicked: CrmEventDefinition<z.ZodObject<{
2148
+ export declare const EmailEventClicked: CrmEventDefinition<z.ZodObject<{
2149
2149
  eventId: z.ZodString;
2150
2150
  kind: z.ZodString;
2151
2151
  subjectKind: z.ZodString;
2152
2152
  subjectId: z.ZodString;
2153
2153
  campaignId: z.ZodOptional<z.ZodString>;
2154
2154
  }, z.core.$strip>>;
2155
- declare const EmailEventBounced: CrmEventDefinition<z.ZodObject<{
2155
+ export declare const EmailEventBounced: CrmEventDefinition<z.ZodObject<{
2156
2156
  eventId: z.ZodString;
2157
2157
  kind: z.ZodString;
2158
2158
  subjectKind: z.ZodString;
2159
2159
  subjectId: z.ZodString;
2160
2160
  campaignId: z.ZodOptional<z.ZodString>;
2161
2161
  }, z.core.$strip>>;
2162
- declare const EmailEventComplained: CrmEventDefinition<z.ZodObject<{
2162
+ export declare const EmailEventComplained: CrmEventDefinition<z.ZodObject<{
2163
2163
  eventId: z.ZodString;
2164
2164
  kind: z.ZodString;
2165
2165
  subjectKind: z.ZodString;
2166
2166
  subjectId: z.ZodString;
2167
2167
  campaignId: z.ZodOptional<z.ZodString>;
2168
2168
  }, z.core.$strip>>;
2169
- declare const EmailEventUnsubscribed: CrmEventDefinition<z.ZodObject<{
2169
+ export declare const EmailEventUnsubscribed: CrmEventDefinition<z.ZodObject<{
2170
2170
  eventId: z.ZodString;
2171
2171
  kind: z.ZodString;
2172
2172
  subjectKind: z.ZodString;
2173
2173
  subjectId: z.ZodString;
2174
2174
  campaignId: z.ZodOptional<z.ZodString>;
2175
2175
  }, z.core.$strip>>;
2176
- declare const ConversationCreated: CrmEventDefinition<z.ZodObject<{
2176
+ export declare const ConversationCreated: CrmEventDefinition<z.ZodObject<{
2177
2177
  conversationId: z.ZodString;
2178
2178
  channel: z.ZodString;
2179
2179
  participantKind: z.ZodString;
2180
2180
  participantId: z.ZodString;
2181
2181
  }, z.core.$strip>>;
2182
- declare const ConversationAssigned: CrmEventDefinition<z.ZodObject<{
2182
+ export declare const ConversationAssigned: CrmEventDefinition<z.ZodObject<{
2183
2183
  conversationId: z.ZodString;
2184
2184
  assigneeId: z.ZodString;
2185
2185
  previousAssigneeId: z.ZodOptional<z.ZodString>;
2186
2186
  }, z.core.$strip>>;
2187
- declare const ConversationResolved: CrmEventDefinition<z.ZodObject<{
2187
+ export declare const ConversationResolved: CrmEventDefinition<z.ZodObject<{
2188
2188
  conversationId: z.ZodString;
2189
2189
  status: z.ZodString;
2190
2190
  previousStatus: z.ZodString;
2191
2191
  }, z.core.$strip>>;
2192
- declare const ConversationReopened: CrmEventDefinition<z.ZodObject<{
2192
+ export declare const ConversationReopened: CrmEventDefinition<z.ZodObject<{
2193
2193
  conversationId: z.ZodString;
2194
2194
  status: z.ZodString;
2195
2195
  previousStatus: z.ZodString;
2196
2196
  }, z.core.$strip>>;
2197
- declare const MessageReceived: CrmEventDefinition<z.ZodObject<{
2197
+ export declare const MessageReceived: CrmEventDefinition<z.ZodObject<{
2198
2198
  messageId: z.ZodString;
2199
2199
  conversationId: z.ZodString;
2200
2200
  direction: z.ZodString;
2201
2201
  externalMessageId: z.ZodOptional<z.ZodString>;
2202
2202
  }, z.core.$strip>>;
2203
- declare const MessageSent: CrmEventDefinition<z.ZodObject<{
2203
+ export declare const MessageSent: CrmEventDefinition<z.ZodObject<{
2204
2204
  messageId: z.ZodString;
2205
2205
  conversationId: z.ZodString;
2206
2206
  direction: z.ZodString;
2207
2207
  externalMessageId: z.ZodOptional<z.ZodString>;
2208
2208
  }, z.core.$strip>>;
2209
- declare const SequenceCreated: CrmEventDefinition<z.ZodObject<{
2209
+ export declare const SequenceCreated: CrmEventDefinition<z.ZodObject<{
2210
2210
  sequenceId: z.ZodString;
2211
2211
  name: z.ZodOptional<z.ZodString>;
2212
2212
  }, z.core.$strip>>;
2213
- declare const SequenceActivated: CrmEventDefinition<z.ZodObject<{
2213
+ export declare const SequenceActivated: CrmEventDefinition<z.ZodObject<{
2214
2214
  sequenceId: z.ZodString;
2215
2215
  }, z.core.$strip>>;
2216
- declare const SequencePaused: CrmEventDefinition<z.ZodObject<{
2216
+ export declare const SequencePaused: CrmEventDefinition<z.ZodObject<{
2217
2217
  sequenceId: z.ZodString;
2218
2218
  }, z.core.$strip>>;
2219
- declare const SequenceArchived: CrmEventDefinition<z.ZodObject<{
2219
+ export declare const SequenceArchived: CrmEventDefinition<z.ZodObject<{
2220
2220
  sequenceId: z.ZodString;
2221
2221
  }, z.core.$strip>>;
2222
- declare const EnrollmentCreated: CrmEventDefinition<z.ZodObject<{
2222
+ export declare const EnrollmentCreated: CrmEventDefinition<z.ZodObject<{
2223
2223
  enrollmentId: z.ZodString;
2224
2224
  sequenceId: z.ZodString;
2225
2225
  subjectId: z.ZodString;
2226
2226
  subjectKind: z.ZodString;
2227
2227
  }, z.core.$strip>>;
2228
- declare const EnrollmentStepSent: CrmEventDefinition<z.ZodObject<{
2228
+ export declare const EnrollmentStepSent: CrmEventDefinition<z.ZodObject<{
2229
2229
  enrollmentId: z.ZodString;
2230
2230
  sequenceId: z.ZodOptional<z.ZodString>;
2231
2231
  stepIndex: z.ZodNumber;
2232
2232
  channel: z.ZodOptional<z.ZodString>;
2233
2233
  }, z.core.$strip>>;
2234
- declare const EnrollmentPaused: CrmEventDefinition<z.ZodObject<{
2234
+ export declare const EnrollmentPaused: CrmEventDefinition<z.ZodObject<{
2235
2235
  enrollmentId: z.ZodString;
2236
2236
  }, z.core.$strip>>;
2237
- declare const EnrollmentResumed: CrmEventDefinition<z.ZodObject<{
2237
+ export declare const EnrollmentResumed: CrmEventDefinition<z.ZodObject<{
2238
2238
  enrollmentId: z.ZodString;
2239
2239
  }, z.core.$strip>>;
2240
- declare const EnrollmentCompleted: CrmEventDefinition<z.ZodObject<{
2240
+ export declare const EnrollmentCompleted: CrmEventDefinition<z.ZodObject<{
2241
2241
  enrollmentId: z.ZodString;
2242
2242
  }, z.core.$strip>>;
2243
- declare const EnrollmentExited: CrmEventDefinition<z.ZodObject<{
2243
+ export declare const EnrollmentExited: CrmEventDefinition<z.ZodObject<{
2244
2244
  enrollmentId: z.ZodString;
2245
2245
  exitReason: z.ZodOptional<z.ZodString>;
2246
2246
  }, z.core.$strip>>;
2247
- declare const crmEventDefinitions: ReadonlyArray<CrmEventDefinition>;
2247
+ export declare const crmEventDefinitions: ReadonlyArray<CrmEventDefinition>;
2248
2248
  //#endregion
2249
2249
  //#region src/events/helpers.d.ts
2250
- declare function createEvent<T>(type: string, payload: T, ctx?: CrmContext, meta?: Partial<EventMeta>): DomainEvent<T>;
2250
+ export declare function createEvent<T>(type: string, payload: T, ctx?: CrmContext, meta?: Partial<EventMeta>): DomainEvent<T>;
2251
2251
  //#endregion
2252
2252
  //#region src/events/in-process-bus.d.ts
2253
- declare class InProcessCrmBus extends InProcessEventBus {
2253
+ export declare class InProcessCrmBus extends InProcessEventBus {
2254
2254
  constructor(options?: {
2255
2255
  logger?: CrmLogger;
2256
2256
  });
@@ -2265,7 +2265,7 @@ interface RunUnitConfig {
2265
2265
  /** Standalone-Mongo fallback (local dev) — partial-write risk, explicit opt-in. */
2266
2266
  allowNonTransactional: boolean;
2267
2267
  }
2268
- declare function runUnit<T>(config: RunUnitConfig, ctx: CrmContext, body: (innerCtx: CrmContext) => Promise<T>): Promise<T>;
2268
+ export declare function runUnit<T>(config: RunUnitConfig, ctx: CrmContext, body: (innerCtx: CrmContext) => Promise<T>): Promise<T>;
2269
2269
  //#endregion
2270
2270
  //#region src/core/state-machines.d.ts
2271
2271
  /**
@@ -2283,13 +2283,13 @@ declare function runUnit<T>(config: RunUnitConfig, ctx: CrmContext, body: (inner
2283
2283
  * Built on `@classytic/primitives/state-machine` so the same shape lights
2284
2284
  * up across kits (mongokit's `claim()` pairing, sqlitekit follow-ups).
2285
2285
  */
2286
- declare const LEAD_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"new" | "contacted" | "qualified" | "converted" | "disqualified" | "nurturing">;
2287
- declare const OPPORTUNITY_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"open" | "won" | "lost" | "abandoned">;
2288
- declare const CAMPAIGN_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"draft" | "active" | "paused" | "completed" | "archived">;
2289
- declare const SUBSCRIPTION_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"pending" | "confirmed" | "unsubscribed" | "bounced" | "complained">;
2290
- declare const ACTIVITY_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"completed" | "planned" | "in_progress" | "cancelled">;
2291
- declare const SEQUENCE_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"draft" | "active" | "paused" | "archived">;
2292
- declare const ENROLLMENT_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"active" | "paused" | "completed" | "exited">;
2286
+ export declare const LEAD_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"contacted" | "converted" | "disqualified" | "new" | "nurturing" | "qualified">;
2287
+ export declare const OPPORTUNITY_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"abandoned" | "lost" | "open" | "won">;
2288
+ export declare const CAMPAIGN_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"active" | "archived" | "completed" | "draft" | "paused">;
2289
+ export declare const SUBSCRIPTION_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"bounced" | "complained" | "confirmed" | "pending" | "unsubscribed">;
2290
+ export declare const ACTIVITY_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"cancelled" | "completed" | "in_progress" | "planned">;
2291
+ export declare const SEQUENCE_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"active" | "archived" | "draft" | "paused">;
2292
+ export declare const ENROLLMENT_MACHINE: import("@classytic/primitives/state-machine").StateMachine<"active" | "completed" | "exited" | "paused">;
2293
2293
  //#endregion
2294
2294
  //#region src/core/errors.d.ts
2295
2295
  /**
@@ -2305,17 +2305,17 @@ declare const ENROLLMENT_MACHINE: import("@classytic/primitives/state-machine").
2305
2305
  * the common case here. Subclasses override with `readonly status = N`;
2306
2306
  * the subclass field initializer runs after this constructor, so it wins.
2307
2307
  */
2308
- declare class CrmError extends Error implements HttpError {
2308
+ export declare class CrmError extends Error implements HttpError {
2309
2309
  readonly code: string;
2310
2310
  readonly status: number;
2311
2311
  readonly details?: Record<string, unknown>;
2312
2312
  constructor(code: string, message: string, details?: Record<string, unknown>);
2313
2313
  }
2314
- declare class NotFoundError extends CrmError {
2314
+ export declare class NotFoundError extends CrmError {
2315
2315
  readonly status = 404;
2316
2316
  constructor(kind: string, id: string);
2317
2317
  }
2318
- declare class InvalidLeadTransitionError extends CrmError {
2318
+ export declare class InvalidLeadTransitionError extends CrmError {
2319
2319
  readonly status = 422;
2320
2320
  constructor(details: {
2321
2321
  from: string;
@@ -2323,7 +2323,7 @@ declare class InvalidLeadTransitionError extends CrmError {
2323
2323
  leadId: string;
2324
2324
  });
2325
2325
  }
2326
- declare class InvalidOpportunityTransitionError extends CrmError {
2326
+ export declare class InvalidOpportunityTransitionError extends CrmError {
2327
2327
  readonly status = 422;
2328
2328
  constructor(details: {
2329
2329
  from: string;
@@ -2331,7 +2331,7 @@ declare class InvalidOpportunityTransitionError extends CrmError {
2331
2331
  opportunityId: string;
2332
2332
  });
2333
2333
  }
2334
- declare class InvalidActivityTransitionError extends CrmError {
2334
+ export declare class InvalidActivityTransitionError extends CrmError {
2335
2335
  readonly status = 422;
2336
2336
  constructor(details: {
2337
2337
  from: string;
@@ -2339,39 +2339,39 @@ declare class InvalidActivityTransitionError extends CrmError {
2339
2339
  activityId: string;
2340
2340
  });
2341
2341
  }
2342
- declare class StageNotInPipelineError extends CrmError {
2342
+ export declare class StageNotInPipelineError extends CrmError {
2343
2343
  readonly status = 422;
2344
2344
  constructor(details: {
2345
2345
  pipelineId: string;
2346
2346
  stageId: string;
2347
2347
  });
2348
2348
  }
2349
- declare class LeadAlreadyConvertedError extends CrmError {
2349
+ export declare class LeadAlreadyConvertedError extends CrmError {
2350
2350
  readonly status = 409;
2351
2351
  constructor(leadId: string);
2352
2352
  }
2353
- declare class DuplicateLeadError extends CrmError {
2353
+ export declare class DuplicateLeadError extends CrmError {
2354
2354
  readonly status = 409;
2355
2355
  constructor(details: {
2356
2356
  email?: string;
2357
2357
  phone?: string;
2358
2358
  });
2359
2359
  }
2360
- declare class DuplicateContactError extends CrmError {
2360
+ export declare class DuplicateContactError extends CrmError {
2361
2361
  readonly status = 409;
2362
2362
  constructor(details: {
2363
2363
  email: string;
2364
2364
  });
2365
2365
  }
2366
- declare class UnmanagedSessionError extends CrmError {
2366
+ export declare class UnmanagedSessionError extends CrmError {
2367
2367
  readonly status = 500;
2368
2368
  constructor(eventType?: string);
2369
2369
  }
2370
- declare class EmptyPipelineError extends CrmError {
2370
+ export declare class EmptyPipelineError extends CrmError {
2371
2371
  readonly status = 422;
2372
2372
  constructor(pipelineId: string);
2373
2373
  }
2374
- declare class InvalidCampaignTransitionError extends CrmError {
2374
+ export declare class InvalidCampaignTransitionError extends CrmError {
2375
2375
  readonly status = 422;
2376
2376
  constructor(details: {
2377
2377
  from: string;
@@ -2379,11 +2379,11 @@ declare class InvalidCampaignTransitionError extends CrmError {
2379
2379
  campaignId: string;
2380
2380
  });
2381
2381
  }
2382
- declare class DuplicateCampaignError extends CrmError {
2382
+ export declare class DuplicateCampaignError extends CrmError {
2383
2383
  readonly status = 409;
2384
2384
  constructor(name: string);
2385
2385
  }
2386
- declare class InvalidSubscriptionTransitionError extends CrmError {
2386
+ export declare class InvalidSubscriptionTransitionError extends CrmError {
2387
2387
  readonly status = 422;
2388
2388
  constructor(details: {
2389
2389
  from: string;
@@ -2391,22 +2391,22 @@ declare class InvalidSubscriptionTransitionError extends CrmError {
2391
2391
  subscriptionId: string;
2392
2392
  });
2393
2393
  }
2394
- declare class DuplicateSubscriptionError extends CrmError {
2394
+ export declare class DuplicateSubscriptionError extends CrmError {
2395
2395
  readonly status = 409;
2396
2396
  constructor(details: {
2397
2397
  contactId: string;
2398
2398
  campaignId: string;
2399
2399
  });
2400
2400
  }
2401
- declare class InvalidConfirmationTokenError extends CrmError {
2401
+ export declare class InvalidConfirmationTokenError extends CrmError {
2402
2402
  readonly status = 422;
2403
2403
  constructor();
2404
2404
  }
2405
- declare class InvalidUnsubscribeTokenError extends CrmError {
2405
+ export declare class InvalidUnsubscribeTokenError extends CrmError {
2406
2406
  readonly status = 422;
2407
2407
  constructor();
2408
2408
  }
2409
- declare class InvalidSequenceTransitionError extends CrmError {
2409
+ export declare class InvalidSequenceTransitionError extends CrmError {
2410
2410
  readonly status = 422;
2411
2411
  constructor(details: {
2412
2412
  from: string;
@@ -2414,7 +2414,7 @@ declare class InvalidSequenceTransitionError extends CrmError {
2414
2414
  sequenceId: string;
2415
2415
  });
2416
2416
  }
2417
- declare class InvalidEnrollmentTransitionError extends CrmError {
2417
+ export declare class InvalidEnrollmentTransitionError extends CrmError {
2418
2418
  readonly status = 422;
2419
2419
  constructor(details: {
2420
2420
  from: string;
@@ -2422,7 +2422,7 @@ declare class InvalidEnrollmentTransitionError extends CrmError {
2422
2422
  enrollmentId: string;
2423
2423
  });
2424
2424
  }
2425
- declare class AlreadyEnrolledError extends CrmError {
2425
+ export declare class AlreadyEnrolledError extends CrmError {
2426
2426
  readonly status = 409;
2427
2427
  constructor(details: {
2428
2428
  sequenceId: string;
@@ -2441,7 +2441,7 @@ declare class AlreadyEnrolledError extends CrmError {
2441
2441
  * Only WRITES throw. Reads fail closed instead — see
2442
2442
  * `suppression.repository.ts`, which writes the asymmetry down.
2443
2443
  */
2444
- declare class SuppressionEmailFormatError extends CrmError {
2444
+ export declare class SuppressionEmailFormatError extends CrmError {
2445
2445
  readonly status = 400;
2446
2446
  constructor(details: {
2447
2447
  email: string;
@@ -2456,7 +2456,7 @@ declare class SuppressionEmailFormatError extends CrmError {
2456
2456
  * `core/email-identity.ts`, which owns the write-throws / setter-degrades
2457
2457
  * asymmetry and writes down why each side goes the way it does.
2458
2458
  */
2459
- declare class LeadEmailFormatError extends CrmError {
2459
+ export declare class LeadEmailFormatError extends CrmError {
2460
2460
  readonly status = 400;
2461
2461
  constructor(details: {
2462
2462
  email: string;
@@ -2464,7 +2464,7 @@ declare class LeadEmailFormatError extends CrmError {
2464
2464
  });
2465
2465
  }
2466
2466
  /** As {@link LeadEmailFormatError}, for `ContactRepository.createContact`. */
2467
- declare class ContactEmailFormatError extends CrmError {
2467
+ export declare class ContactEmailFormatError extends CrmError {
2468
2468
  readonly status = 400;
2469
2469
  constructor(details: {
2470
2470
  email: string;
@@ -2527,11 +2527,11 @@ declare class ContactEmailFormatError extends CrmError {
2527
2527
  * Exported so a host can tell "not on file" apart from "not an address" without
2528
2528
  * re-deriving the rule — the same reason `suppressionEmailKey` is exported.
2529
2529
  */
2530
- declare function crmEmailKey(email: string): string | null;
2530
+ export declare function crmEmailKey(email: string): string | null;
2531
2531
  //#endregion
2532
2532
  //#region src/shared/calculators/forecast.d.ts
2533
- type OpportunityForecast = Pick<IOpportunityDocument, 'amount' | 'currency' | 'probability' | 'status' | 'expectedCloseAt' | 'stageId' | 'statusHistory'>;
2534
- interface ForecastRow {
2533
+ export type OpportunityForecast = Pick<IOpportunityDocument, 'amount' | 'currency' | 'probability' | 'status' | 'expectedCloseAt' | 'stageId' | 'statusHistory'>;
2534
+ export interface ForecastRow {
2535
2535
  /** Bucket key — ISO month `YYYY-MM` by default. */
2536
2536
  bucket: string;
2537
2537
  /** Σ amount. */
@@ -2542,7 +2542,7 @@ interface ForecastRow {
2542
2542
  count: number;
2543
2543
  currency: string;
2544
2544
  }
2545
- interface ForecastOptions {
2545
+ export interface ForecastOptions {
2546
2546
  /** Bucket function. Default: ISO month from `expectedCloseAt`. */
2547
2547
  bucket?: (o: OpportunityForecast) => string;
2548
2548
  /** Filter before bucketing. Default: open + has amount + has expectedCloseAt. */
@@ -2561,8 +2561,8 @@ interface ForecastOptions {
2561
2561
  * Currency mismatch within a bucket throws — partition by currency
2562
2562
  * upstream when multi-currency.
2563
2563
  */
2564
- declare function forecast(opportunities: readonly OpportunityForecast[], options?: ForecastOptions): ForecastRow[];
2565
- interface ConversionRow {
2564
+ export declare function forecast(opportunities: readonly OpportunityForecast[], options?: ForecastOptions): ForecastRow[];
2565
+ export interface ConversionRow {
2566
2566
  stageId: string;
2567
2567
  currentCount: number;
2568
2568
  wonFromHere: number;
@@ -2573,7 +2573,7 @@ interface ConversionRow {
2573
2573
  * "Where do deals die?" summary — opportunities partitioned across
2574
2574
  * stages with current count + won/lost-from-here.
2575
2575
  */
2576
- declare function pipelineConversion(opportunities: readonly OpportunityForecast[], stageIds: readonly string[]): ConversionRow[];
2576
+ export declare function pipelineConversion(opportunities: readonly OpportunityForecast[], stageIds: readonly string[]): ConversionRow[];
2577
2577
  //#endregion
2578
2578
  //#region src/validators/common.d.ts
2579
2579
  declare const objectIdLike: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
@@ -2660,12 +2660,12 @@ declare const updateLeadSchema: z.ZodObject<{
2660
2660
  }, z.core.$strip>;
2661
2661
  declare const leadFilterSchema: z.ZodObject<{
2662
2662
  status: z.ZodOptional<z.ZodEnum<{
2663
- new: "new";
2664
2663
  contacted: "contacted";
2665
- qualified: "qualified";
2666
2664
  converted: "converted";
2667
2665
  disqualified: "disqualified";
2666
+ new: "new";
2668
2667
  nurturing: "nurturing";
2668
+ qualified: "qualified";
2669
2669
  }>>;
2670
2670
  ownerId: z.ZodOptional<z.ZodString>;
2671
2671
  email: z.ZodOptional<z.ZodString>;
@@ -2724,10 +2724,10 @@ declare const closeLossSchema: z.ZodObject<{
2724
2724
  }, z.core.$strip>;
2725
2725
  declare const opportunityFilterSchema: z.ZodObject<{
2726
2726
  status: z.ZodOptional<z.ZodEnum<{
2727
+ abandoned: "abandoned";
2728
+ lost: "lost";
2727
2729
  open: "open";
2728
2730
  won: "won";
2729
- lost: "lost";
2730
- abandoned: "abandoned";
2731
2731
  }>>;
2732
2732
  pipelineId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
2733
2733
  stageId: z.ZodOptional<z.ZodString>;
@@ -2872,11 +2872,11 @@ declare const completeCampaignSchema: z.ZodObject<{
2872
2872
  }, z.core.$strip>;
2873
2873
  declare const campaignFilterSchema: z.ZodObject<{
2874
2874
  status: z.ZodOptional<z.ZodEnum<{
2875
- draft: "draft";
2876
2875
  active: "active";
2877
- paused: "paused";
2878
- completed: "completed";
2879
2876
  archived: "archived";
2877
+ completed: "completed";
2878
+ draft: "draft";
2879
+ paused: "paused";
2880
2880
  }>>;
2881
2881
  ownerId: z.ZodOptional<z.ZodString>;
2882
2882
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -2906,11 +2906,11 @@ declare const unsubscribeSchema: z.ZodObject<{
2906
2906
  }, z.core.$strip>;
2907
2907
  declare const subscriptionFilterSchema: z.ZodObject<{
2908
2908
  status: z.ZodOptional<z.ZodEnum<{
2909
- pending: "pending";
2910
- confirmed: "confirmed";
2911
- unsubscribed: "unsubscribed";
2912
2909
  bounced: "bounced";
2913
2910
  complained: "complained";
2911
+ confirmed: "confirmed";
2912
+ pending: "pending";
2913
+ unsubscribed: "unsubscribed";
2914
2914
  }>>;
2915
2915
  contactId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
2916
2916
  campaignId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
@@ -2925,8 +2925,8 @@ declare const suppressSchema: z.ZodObject<{
2925
2925
  reason: z.ZodEnum<{
2926
2926
  bounce: "bounce";
2927
2927
  complaint: "complaint";
2928
- unsubscribe: "unsubscribe";
2929
2928
  manual: "manual";
2929
+ unsubscribe: "unsubscribe";
2930
2930
  }>;
2931
2931
  source: z.ZodOptional<z.ZodString>;
2932
2932
  subjectKind: z.ZodOptional<z.ZodString>;
@@ -2941,8 +2941,8 @@ declare const suppressionFilterSchema: z.ZodObject<{
2941
2941
  reason: z.ZodOptional<z.ZodEnum<{
2942
2942
  bounce: "bounce";
2943
2943
  complaint: "complaint";
2944
- unsubscribe: "unsubscribe";
2945
2944
  manual: "manual";
2945
+ unsubscribe: "unsubscribe";
2946
2946
  }>>;
2947
2947
  }, z.core.$strip>;
2948
2948
  type SuppressDto = z.infer<typeof suppressSchema>;
@@ -2952,20 +2952,20 @@ type UnsuppressDto = z.infer<typeof unsuppressSchema>;
2952
2952
  declare const planActivitySchema: z.ZodObject<{
2953
2953
  type: z.ZodEnum<{
2954
2954
  call: "call";
2955
+ demo: "demo";
2955
2956
  email: "email";
2956
2957
  meeting: "meeting";
2957
- task: "task";
2958
2958
  note: "note";
2959
+ other: "other";
2959
2960
  sms: "sms";
2960
2961
  social: "social";
2961
- demo: "demo";
2962
- other: "other";
2962
+ task: "task";
2963
2963
  }>;
2964
2964
  subjectKind: z.ZodEnum<{
2965
+ account: "account";
2966
+ contact: "contact";
2965
2967
  lead: "lead";
2966
2968
  opportunity: "opportunity";
2967
- contact: "contact";
2968
- account: "account";
2969
2969
  }>;
2970
2970
  subjectId: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
2971
2971
  title: z.ZodString;
@@ -2979,20 +2979,20 @@ declare const planActivitySchema: z.ZodObject<{
2979
2979
  declare const updateActivitySchema: z.ZodObject<{
2980
2980
  type: z.ZodOptional<z.ZodEnum<{
2981
2981
  call: "call";
2982
+ demo: "demo";
2982
2983
  email: "email";
2983
2984
  meeting: "meeting";
2984
- task: "task";
2985
2985
  note: "note";
2986
+ other: "other";
2986
2987
  sms: "sms";
2987
2988
  social: "social";
2988
- demo: "demo";
2989
- other: "other";
2989
+ task: "task";
2990
2990
  }>>;
2991
2991
  subjectKind: z.ZodOptional<z.ZodEnum<{
2992
+ account: "account";
2993
+ contact: "contact";
2992
2994
  lead: "lead";
2993
2995
  opportunity: "opportunity";
2994
- contact: "contact";
2995
- account: "account";
2996
2996
  }>>;
2997
2997
  subjectId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
2998
2998
  title: z.ZodOptional<z.ZodString>;
@@ -3009,26 +3009,26 @@ declare const cancelActivitySchema: z.ZodObject<{
3009
3009
  declare const activityFilterSchema: z.ZodObject<{
3010
3010
  type: z.ZodOptional<z.ZodEnum<{
3011
3011
  call: "call";
3012
+ demo: "demo";
3012
3013
  email: "email";
3013
3014
  meeting: "meeting";
3014
- task: "task";
3015
3015
  note: "note";
3016
+ other: "other";
3016
3017
  sms: "sms";
3017
3018
  social: "social";
3018
- demo: "demo";
3019
- other: "other";
3019
+ task: "task";
3020
3020
  }>>;
3021
3021
  status: z.ZodOptional<z.ZodEnum<{
3022
+ cancelled: "cancelled";
3022
3023
  completed: "completed";
3023
- planned: "planned";
3024
3024
  in_progress: "in_progress";
3025
- cancelled: "cancelled";
3025
+ planned: "planned";
3026
3026
  }>>;
3027
3027
  subjectKind: z.ZodOptional<z.ZodEnum<{
3028
+ account: "account";
3029
+ contact: "contact";
3028
3030
  lead: "lead";
3029
3031
  opportunity: "opportunity";
3030
- contact: "contact";
3031
- account: "account";
3032
3032
  }>>;
3033
3033
  subjectId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
3034
3034
  ownerId: z.ZodOptional<z.ZodString>;
@@ -3041,10 +3041,10 @@ type CancelActivityDto = z.infer<typeof cancelActivitySchema>;
3041
3041
  //#region src/validators/note.schema.d.ts
3042
3042
  declare const addNoteSchema: z.ZodObject<{
3043
3043
  subjectKind: z.ZodEnum<{
3044
+ account: "account";
3045
+ contact: "contact";
3044
3046
  lead: "lead";
3045
3047
  opportunity: "opportunity";
3046
- contact: "contact";
3047
- account: "account";
3048
3048
  }>;
3049
3049
  subjectId: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
3050
3050
  body: z.ZodString;
@@ -3059,10 +3059,10 @@ declare const updateNoteSchema: z.ZodObject<{
3059
3059
  }, z.core.$strip>;
3060
3060
  declare const noteFilterSchema: z.ZodObject<{
3061
3061
  subjectKind: z.ZodOptional<z.ZodEnum<{
3062
+ account: "account";
3063
+ contact: "contact";
3062
3064
  lead: "lead";
3063
3065
  opportunity: "opportunity";
3064
- contact: "contact";
3065
- account: "account";
3066
3066
  }>>;
3067
3067
  subjectId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodString]>>;
3068
3068
  authorId: z.ZodOptional<z.ZodString>;
@@ -3108,10 +3108,10 @@ declare const recordEmailEventSchema: z.ZodObject<{
3108
3108
  }, z.core.$strip>;
3109
3109
  declare const emailEventFilterSchema: z.ZodObject<{
3110
3110
  kind: z.ZodOptional<z.ZodEnum<{
3111
- open: "open";
3112
- click: "click";
3113
3111
  bounce: "bounce";
3112
+ click: "click";
3114
3113
  complaint: "complaint";
3114
+ open: "open";
3115
3115
  unsubscribe: "unsubscribe";
3116
3116
  }>>;
3117
3117
  subjectKind: z.ZodOptional<z.ZodEnum<{
@@ -3201,10 +3201,10 @@ declare const updateSequenceSchema: z.ZodObject<{
3201
3201
  }, z.core.$strip>;
3202
3202
  declare const sequenceFilterSchema: z.ZodObject<{
3203
3203
  status: z.ZodOptional<z.ZodEnum<{
3204
- draft: "draft";
3205
3204
  active: "active";
3206
- paused: "paused";
3207
3205
  archived: "archived";
3206
+ draft: "draft";
3207
+ paused: "paused";
3208
3208
  }>>;
3209
3209
  ownerId: z.ZodOptional<z.ZodString>;
3210
3210
  tags: z.ZodOptional<z.ZodString>;
@@ -3220,4 +3220,4 @@ declare namespace index_d_exports {
3220
3220
  export { AddNoteDto, CancelActivityDto, CloseLossDto, CloseWinDto, CompleteCampaignDto, ConfirmSubscriptionDto, ConvertLeadDto, CreateAccountDto, CreateCampaignDto, CreateContactDto, CreateLeadDto, CreateLossReasonDto, CreatePipelineDto, CreateSequenceInput, LeadFilterDto, MoveStageDto, OpenOpportunityDto, OpportunityFilterDto, PlanActivityDto, RecordEmailEventDto, SequenceFilterInput, StageInputDto, SubscribeDto, SuppressDto, UnsubscribeDto, UnsuppressDto, UpdateAccountDto, UpdateCampaignDto, UpdateContactDto, UpdateLeadDto, UpdateLossReasonDto, UpdateNoteDto, UpdatePipelineDto, UpdateSequenceInput, accountFilterSchema, activityFilterSchema, addNoteSchema, campaignFilterSchema, cancelActivitySchema, closeLossSchema, closeWinSchema, completeCampaignSchema, confirmSubscriptionSchema, contactFilterSchema, convertLeadSchema, createAccountSchema, createCampaignSchema, createContactSchema, createLeadSchema, createLossReasonSchema, createPipelineSchema, createSequenceSchema, currencyCodeSchema, emailEventFilterSchema, leadFilterSchema, lossReasonFilterSchema, metadataSchema, moneyAmountSchema, moveStageSchema, noteFilterSchema, objectIdLike, openOpportunitySchema, opportunityFilterSchema, pipelineFilterSchema, planActivitySchema, recordEmailEventSchema, sequenceFilterSchema, sequenceStepSchema, stageInputSchemaExport, subscribeSchema, subscriptionFilterSchema, suppressSchema, suppressionFilterSchema, tagsSchema, unsubscribeSchema, unsuppressSchema, updateAccountSchema, updateActivitySchema, updateCampaignSchema, updateContactSchema, updateLeadSchema, updateLossReasonSchema, updateNoteSchema, updatePipelineSchema, updateSequenceSchema };
3221
3221
  }
3222
3222
  //#endregion
3223
- export { ACTIVITY_MACHINE, ACTIVITY_STATUSES, ACTIVITY_TRANSITIONS, ACTIVITY_TYPES, ALL_CRM_MODULES, AccountAssigned, AccountCreated, AccountEnriched, AccountMerged, AccountRepository, AccountRepositoryDeps, AccountUpdated, ActivityCancelled, ActivityCompleted, ActivityOutcomeRecorded, ActivityPlanned, ActivityRepository, ActivityRepositoryDeps, ActivityRescheduled, type ActivityStatus, type ActivityType, AlreadyEnrolledError, AutomationCrmModels, AutomationCrmRepositories, CAMPAIGN_MACHINE, CAMPAIGN_STATUSES, CAMPAIGN_TRANSITIONS, CONVERSATION_CHANNELS, CONVERSATION_PARTICIPANT_KINDS, CONVERSATION_STATUSES, CRM_EVENTS, CRM_MODEL_NAMES, CampaignActivated, CampaignArchived, CampaignCompleted, CampaignCreated, CampaignPaused, CampaignRepository, CampaignRepositoryDeps, CampaignResumed, type CampaignStatus, CloseInput, ContactAnonymized, ContactAssigned, ContactCreated, ContactEmailFormatError, ContactEnriched, ContactMergeRepoint, ContactMerged, ContactRepository, ContactRepositoryDeps, ContactUpdated, ConversationAssigned, type ConversationChannel, ConversationCreated, type ConversationParticipantKind, ConversationReopened, ConversationRepository, ConversationRepositoryDeps, ConversationResolved, type ConversationStatus, ConversionRow, ConvertLeadInput, ConvertResult, CreateCrmRepositoriesDeps, CrmBlueprint, CrmContext, CrmEngine, CrmEngineBase, CrmError, CrmEventDefinition, CrmEventDispatcher, type CrmEventDispatcherOptions, CrmEventName, CrmEventSchema, CrmLogger, CrmModels, CrmModuleView, CrmModulesConfig, CrmRepositories, CrmRuntime, CrmShape, DefineCrmModelsConfig, DuplicateCampaignError, DuplicateContactError, DuplicateLeadError, DuplicateSubscriptionError, EMAIL_EVENT_KINDS, EMAIL_EVENT_SUBJECT_KINDS, ENROLLMENT_MACHINE, ENROLLMENT_STATUSES, ENROLLMENT_SUBJECT_KINDS, ENROLLMENT_TRANSITIONS, EVENT_DERIVED_SUPPRESSION_REASONS, EmailEventBounced, EmailEventClicked, EmailEventComplained, type EmailEventKind, EmailEventOpened, EmailEventRepository, EmailEventRepositoryDeps, EmailEventSubjectKind, EmailEventUnsubscribed, EmptyPipelineError, EngagementCrmModels, EngagementCrmRepositories, EnrollInput, EnrollmentCompleted, EnrollmentCreated, EnrollmentExitReason, EnrollmentExited, EnrollmentPaused, EnrollmentRepository, EnrollmentRepositoryDeps, EnrollmentResumed, type EnrollmentStatus, EnrollmentStepSent, EnrollmentSubjectKind, ForecastOptions, ForecastRow, FullCrmModuleViews, IAccountDocument, IActivityDocument, ICampaignDocument, ICampaignStatusEntry, IContactDocument, IContactInfoEmbedded, IContactName, IConversationDocument, IDelayStep, IEmailEventDocument, IEnrollmentDocument, IEnrollmentStatusEntry, ILeadDocument, ILeadEngagement, ILeadStatusEntry, ILossReasonDocument, IMessageAttachment, IMessageDocument, INoteDocument, IOpportunityDocument, IOpportunityStatusEntry, IPipelineDocument, ISendEmailStep, ISequenceDocument, ISequenceStatusEntry, IStageDocument, IStepResult, ISubscriptionDocument, ISubscriptionStatusEntry, ISuppressionDocument, InProcessCrmBus, type InternalCrmContext, InvalidActivityTransitionError, InvalidCampaignTransitionError, InvalidConfirmationTokenError, InvalidEnrollmentTransitionError, InvalidLeadTransitionError, InvalidOpportunityTransitionError, InvalidSequenceTransitionError, InvalidSubscriptionTransitionError, InvalidUnsubscribeTokenError, LEAD_MACHINE, LEAD_STATUSES, LEAD_TRANSITIONS, LeadAlreadyConvertedError, LeadAnonymized, LeadAssigned, LeadConverted, LeadCreated, LeadDisqualified, LeadEmailFormatError, LeadEngagementSignal, LeadEnriched, LeadInput, LeadRepository, LeadRepositoryDeps, LeadScored, LeadScorer, LeadService, LeadServiceDeps, type LeadStatus, LeadStatusChanged, LossReasonRepository, LossReasonRepositoryDeps, MESSAGE_DELIVERY_STATUSES, MESSAGE_DIRECTIONS, MergeAccountInput, MergeContactInput, type MessageDeliveryStatus, type MessageDirection, MessageReceived, MessageRepository, MessageRepositoryDeps, MessageSent, ModularCrmEngine, ModularCrmModels, ModularCrmModuleViews, ModularCrmRepositories, MoveStageInput, NotFoundError, NoteAdded, NoteRepository, NoteRepositoryDeps, OPPORTUNITY_MACHINE, OPPORTUNITY_STATUSES, OPPORTUNITY_TRANSITIONS, OpenConversationInput, OpenOpportunityInput, OpportunityAbandoned, OpportunityAmountChanged, OpportunityAssigned, OpportunityCreated, OpportunityExtended, OpportunityForecast, OpportunityLost, OpportunityRepository, OpportunityRepositoryDeps, OpportunityStageAdvanced, OpportunityStageRegressed, type OpportunityStatus, OpportunityWon, PENDING_EVENTS, PipelineArchived, PipelineCreated, PipelineRepository, PipelineRepositoryDeps, RecordEmailEventInput, RecordMessageInput, ReplySubject, ResolvedCrmConfig, ResolvedCrmModules, type RunUnitConfig, SEQUENCE_MACHINE, SEQUENCE_STATUSES, SEQUENCE_TRANSITIONS, SUBJECT_KINDS, SUBSCRIPTION_MACHINE, SUBSCRIPTION_STATUSES, SUBSCRIPTION_TRANSITIONS, SUPPRESSION_REASONS, SalesCrmModels, SalesCrmRepositories, SchemaBuildConfig, SequenceActivated, SequenceArchived, SequenceCreated, SequencePaused, SequenceRepository, SequenceRepositoryDeps, type SequenceStatus, SequenceStep, StageNotInPipelineError, type StatusChangeEntry, type StatusHistory, StepResultStatus, type SubjectKind, SubscribeInput, SubscriptionBounced, SubscriptionComplained, SubscriptionConfirmed, SubscriptionCreated, SubscriptionRepository, SubscriptionRepositoryDeps, type SubscriptionStatus, SubscriptionUnsubscribed, SuppressInput, SuppressionAdded, SuppressionEmailFormatError, type SuppressionReason, SuppressionRemoved, SuppressionRepository, SuppressionRepositoryDeps, UnmanagedSessionError, _ModelTypes, appendStatus, buildAccountSchema, buildActivitySchema, buildCampaignSchema, buildContactSchema, buildConversationSchema, buildEmailEventSchema, buildEnrollmentSchema, buildLeadSchema, buildLossReasonSchema, buildMessageSchema, buildNoteSchema, buildOpportunitySchema, buildPipelineSchema, buildSequenceSchema, buildSubscriptionSchema, buildSuppressionSchema, canTransitionActivity, canTransitionCampaign, canTransitionEnrollment, canTransitionLead, canTransitionOpportunity, canTransitionSequence, canTransitionSubscription, composeScorers, createAccountModel, createActivityModel, createCampaignModel, createContactModel, createConversationModel, createCrmRepositories, createEmailEventModel, createEvent, createLeadModel, createLossReasonModel, createMessageModel, createNoteModel, createOpportunityModel, createPipelineModel, createSubscriptionModel, crmEmailKey, crmEventDefinitions, crmModelName, defaultLeadScorer, defineCrm, defineCrmModels, flushPending, forecast, lastTransitionTo, latestEntry, pipelineConversion, resolveCrmModules, runUnit, suppressionEmailKey, tenantFieldDef, timeInStatus, index_d_exports as validators };
3223
+ export { type ActivityStatus, type ActivityType, type CampaignStatus, type ConversationChannel, type ConversationParticipantKind, type ConversationStatus, type CrmEventDispatcherOptions, type EmailEventKind, type EnrollmentStatus, type InternalCrmContext, type LeadStatus, type MessageDeliveryStatus, type MessageDirection, type OpportunityStatus, type RunUnitConfig, type SequenceStatus, type StatusChangeEntry, type StatusHistory, type SubjectKind, type SubscriptionStatus, type SuppressionReason, appendStatus, lastTransitionTo, latestEntry, timeInStatus, index_d_exports as validators };