@odla-ai/chapter 0.34.0 → 0.36.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
@@ -133,18 +133,21 @@ interface ChapterCopy {
133
133
  */
134
134
  payment: TextFields<"setupFailed" | "preparing" | "pending" | "processing" | "payAndContinue" | "incomplete" | "consent">;
135
135
  done: TextFields<"label" | "calendarInvite" | "memberArea">;
136
+ accepted: TextFields<"label" | "body">;
137
+ gift: TextFields<"chooseSelf" | "optionsLabel" | "label" | "body" | "save" | "rotate" | "rotateFailed">;
136
138
  };
137
139
  members: {
138
140
  loadFailed: string;
139
141
  account: TextFields<"signOut" | "adminConsole">;
140
142
  provisional: TextFields<"cardLabel" | "applicationNeeded" | "applicationNeededBody" | "apply" | "refunded" | "refundedBody" | "active" | "renews" | "introductionCall" | "calendarInvite" | "joinCall" | "bookCall" | "bookCallBody" | "chooseTime">;
141
143
  full: TextFields<"welcome">;
144
+ gifts: TextFields<"title" | "body" | "noneAvailable" | "paid" | "saveCode" | "purchases" | "noPurchases" | "pending" | "redeemed" | "expired" | "revoked" | "rotate" | "rotated" | "rotateFailed" | "redeemTitle" | "code" | "redeem" | "redeemFailed">;
142
145
  reschedule: TextFields<"changeTime" | "unavailable" | "loadFailed" | "slotGone" | "loading" | "noTimes" | "rescheduling" | "keepTime">;
143
146
  };
144
147
  admin: {
145
148
  auth: TextFields<"checking" | "notAuthorized" | "accountNotAuthorized" | "thisAccount" | "signOut" | "loading" | "signInNotConfigured" | "missingPublishableKey" | "noWorkspaces" | "signInTagline">;
146
149
  shell: TextFields<"adminRole" | "adminConsole" | "adminName" | "navigationLabel">;
147
- workspaces: TextFields<"dashboard" | "overview" | "billing" | "people" | "network" | "portfolio" | "settings" | "calendar" | "email" | "chapters" | "formations" | "dealFlow" | "dashboardViewsLabel" | "settingsViewsLabel" | "collectionsLabel" | "portfolioViewsLabel">;
150
+ workspaces: TextFields<"dashboard" | "overview" | "billing" | "people" | "admission" | "network" | "portfolio" | "settings" | "calendar" | "email" | "chapters" | "formations" | "dealFlow" | "dashboardViewsLabel" | "settingsViewsLabel" | "collectionsLabel" | "portfolioViewsLabel">;
148
151
  dashboard: TextFields<"loading" | "loadFailed" | "upcomingCalls" | "callsNeedAttention" | "noUpcomingCalls" | "drift" | "open" | "meet" | "applications" | "newMembers" | "newMembersUnavailable" | "revenueAdded" | "revenue" | "revenueUnavailable" | "pipeline" | "pipelineLabel" | "thisWeek" | "noChange" | "activeMemberships" | "annualRunRate" | "testMode">;
149
152
  billing: TextFields<"loading" | "loadFailed" | "notConfigured" | "active" | "annualized" | "renewingSoon" | "pastDue" | "subscriptions" | "testMode" | "truncated" | "name" | "email" | "application" | "subscription" | "cancelling" | "amount" | "renews">;
150
153
  availability: TextFields<"loading" | "loadFailed" | "saved" | "title" | "days" | "startHour" | "endHour" | "slotMinutes" | "minNoticeHours" | "windowDays" | "timezone" | "summaryTemplate" | "save"> & {
@@ -152,6 +155,7 @@ interface ChapterCopy {
152
155
  };
153
156
  email: TextFields<"loading" | "loadFailed" | "saved" | "sent" | "testFailed" | "delivery" | "notificationAddress" | "replyTo" | "debugInbox" | "debugInboxHint" | "sendTest" | "enabled" | "subject" | "body" | "save" | "sendLog" | "sentColumn" | "templateColumn" | "statusColumn" | "toColumn" | "failed" | "redirected" | "delivered">;
154
157
  meetings: TextFields<"loading" | "loadFailed" | "cancelConfirm" | "newStartPrompt" | "parseFailed" | "agenda" | "empty" | "unknown" | "drift" | "meet" | "reschedule" | "cancel">;
158
+ admission: TextFields<"title" | "description" | "email" | "decision" | "expires" | "note" | "waive" | "require" | "add" | "ledger" | "loading" | "consumed" | "revoked" | "expired" | "active" | "local" | "parent" | "revoke">;
155
159
  network: AdminNetworkCopy;
156
160
  records: TextFields<"workflowMissing" | "comms" | "commsHistory" | "scheduling" | "billing" | "notes" | "access" | "sharing" | "lifecycle" | "role" | "superAdminHint" | "noAccount" | "approve" | "refund" | "approved" | "refunded" | "roleSet" | "messageSent" | "messageNotSent" | "loadingTemplates" | "template" | "chooseTemplate" | "sending" | "send" | "noMessages" | "message" | "newStartPrompt" | "parseFailed" | "cancelConfirm" | "callCancelled" | "callRescheduled" | "noApplication" | "loadingMeetings" | "noMeetings" | "joinMeeting" | "openCalendar" | "reschedule" | "cancel">;
157
161
  };
@@ -341,6 +345,13 @@ interface ChapterDb {
341
345
  value: string | number | boolean;
342
346
  }>[], opts?: {
343
347
  mutationId?: string;
348
+ guards?: Array<{
349
+ ns: string;
350
+ id: string;
351
+ exists: boolean;
352
+ equals?: Record<string, unknown>;
353
+ absent?: string[];
354
+ }>;
344
355
  }): Promise<{
345
356
  txId: number;
346
357
  duplicate: boolean;
@@ -349,7 +360,7 @@ interface ChapterDb {
349
360
  get(name: string): Promise<string>;
350
361
  };
351
362
  }
352
- /** The scalar kinds an odla-db attribute can hold. */
363
+ /** Scalar kinds accepted by the Chapter schema adapter. */
353
364
  type AttrType = "string" | "number" | "boolean" | "json";
354
365
  /** One odla-db attribute: its type and index/uniqueness/optionality flags. */
355
366
  interface Attr {
@@ -1064,6 +1075,14 @@ interface StripeEvent {
1064
1075
  /** A normalized, provider-agnostic webhook event. `kind` drives the db write;
1065
1076
  * the application is resolved from `applicationId` (metadata) or `customerId`. */
1066
1077
  type WebhookEvent = {
1078
+ kind: "gift_paid";
1079
+ giftIntentId: string;
1080
+ providerObjectId: string;
1081
+ } | {
1082
+ kind: "gift_revoked";
1083
+ giftIntentId: string;
1084
+ reason: "refunded" | "canceled";
1085
+ } | {
1067
1086
  kind: "first_payment";
1068
1087
  applicationId?: string;
1069
1088
  customerId?: string;
@@ -1117,6 +1136,105 @@ declare function canceledPatch(): {
1117
1136
  canceled: true;
1118
1137
  };
1119
1138
 
1139
+ /** Current wire version for parent-authored admission decisions. */
1140
+ declare const ADMISSION_GRANTS_SCHEMA_VERSION: 1;
1141
+ /** Dedicated signed Parent → Chapter delivery endpoint. */
1142
+ declare const ADMISSION_GRANTS_PATH: "/api/admission-grants";
1143
+ /** Whether an exact email can skip or must retain the Chapter interview. */
1144
+ type AdmissionDecision = "waive_interview" | "require_interview";
1145
+ /** One bounded admission decision. Email is PII and never enters public config. */
1146
+ interface AdmissionGrantInput {
1147
+ id: string;
1148
+ email: string;
1149
+ decision: AdmissionDecision;
1150
+ note?: string;
1151
+ expiresAt?: number;
1152
+ }
1153
+ /** Complete desired Parent state for one Chapter and environment. */
1154
+ interface AdmissionGrantDocument {
1155
+ schemaVersion: typeof ADMISSION_GRANTS_SCHEMA_VERSION;
1156
+ revision: number;
1157
+ generatedAt: number;
1158
+ source: {
1159
+ appId: string;
1160
+ actor: string;
1161
+ };
1162
+ target: {
1163
+ chapterId: string;
1164
+ environment: string;
1165
+ };
1166
+ grants: readonly AdmissionGrantInput[];
1167
+ }
1168
+ /** Canonical desired-state document paired with its integrity digest. */
1169
+ interface AdmissionGrantEnvelope {
1170
+ digest: string;
1171
+ document: AdmissionGrantDocument;
1172
+ }
1173
+ /** Chapter acknowledgement for an accepted or idempotently replayed revision. */
1174
+ interface AdmissionGrantReceipt {
1175
+ ok: true;
1176
+ target: {
1177
+ chapterId: string;
1178
+ environment: string;
1179
+ };
1180
+ revision: number;
1181
+ digest: string;
1182
+ status: "accepted" | "replayed";
1183
+ acknowledgedAt: number;
1184
+ }
1185
+ /** Stable machine-readable rejection reasons returned by a Chapter receiver. */
1186
+ type AdmissionGrantRejection = "invalid_document" | "invalid_digest" | "wrong_source" | "wrong_target" | "wrong_environment" | "stale_revision" | "conflicting_revision" | "materialization_failed";
1187
+
1188
+ /** Exact email natural key: trim and lowercase, with no provider alias rules. */
1189
+ declare function normalizeAdmissionEmail(email: string): string;
1190
+ /** Validated normalized admission document or all contract errors. */
1191
+ type AdmissionGrantValidation = {
1192
+ ok: true;
1193
+ value: AdmissionGrantDocument;
1194
+ } | {
1195
+ ok: false;
1196
+ errors: readonly string[];
1197
+ };
1198
+ /** Validate and normalize a complete Parent admission document. */
1199
+ declare function validateAdmissionGrantDocument(input: unknown): AdmissionGrantValidation;
1200
+ /** Pair a validated desired-state document with its canonical digest. */
1201
+ declare function createAdmissionGrantEnvelope(document: AdmissionGrantDocument): Promise<AdmissionGrantEnvelope>;
1202
+ /** Materialized local or Parent admission decision stored by a Chapter. */
1203
+ interface AdmissionGrantRow {
1204
+ id: string;
1205
+ sourceGrantId: string;
1206
+ sourceScope: "local" | "parent";
1207
+ sourceId: string;
1208
+ targetId: string;
1209
+ email: string;
1210
+ emailNormalized: string;
1211
+ decision: AdmissionDecision;
1212
+ active: boolean;
1213
+ createdAt: number;
1214
+ note?: string;
1215
+ expiresAt?: number;
1216
+ revokedAt?: number;
1217
+ consumedAt?: number;
1218
+ consumedApplicationId?: string;
1219
+ }
1220
+ /** Resolve the effective current decision. Local rows always outrank Parent rows. */
1221
+ declare function findAdmissionGrant(db: ChapterDb, targetId: string, email: string, now: number): Promise<AdmissionGrantRow | null>;
1222
+ /** Stored receipt for one signed Parent admission revision. */
1223
+ interface AdmissionGrantRevisionRow {
1224
+ id: string;
1225
+ sourceId: string;
1226
+ targetId: string;
1227
+ environment: string;
1228
+ revision: number;
1229
+ digest: string;
1230
+ active: boolean;
1231
+ receivedAt: number;
1232
+ }
1233
+ /** Read the newest received revision without issuing an ordered query over empty history. */
1234
+ declare function loadLatestAdmissionRevision(db: ChapterDb, sourceId: string, targetId: string, environment: string): Promise<AdmissionGrantRevisionRow | null>;
1235
+ /** Replace only Parent-authored rows; local Chapter decisions remain untouched. */
1236
+ declare function materializeAdmissionGrants(db: ChapterDb, envelope: AdmissionGrantEnvelope, previous: AdmissionGrantRevisionRow | null, receivedAt: number): Promise<void>;
1237
+
1120
1238
  /** Apply defaults + validate the application config. Throws at import on bad shape. */
1121
1239
  declare function resolveApplication(a: ChapterApplication | undefined): ResolvedApplication;
1122
1240
  /** Whether a string looks like an email address (see {@link EMAIL_RE}). Exported
@@ -1169,6 +1287,10 @@ declare function submitApplication(db: ChapterDb, chapter: Chapter, fields: Reco
1169
1287
  /** Tier ids this chapter offers. A posted `tierId` outside it is refused;
1170
1288
  * omit to accept any (pre-tier callers). */
1171
1289
  tierIds?: readonly string[];
1290
+ /** Effective one-use waiver selected by the server, never by the client. */
1291
+ admissionGrant?: AdmissionGrantRow;
1292
+ /** Server-validated gift offer selected from active signed control. */
1293
+ giftOfferId?: string;
1172
1294
  }): Promise<SubmitResult>;
1173
1295
  /** The `groups`-row fields the join config exposes. */
1174
1296
  interface JoinConfigGroup {
@@ -1196,6 +1318,80 @@ interface JoinConfigGroup {
1196
1318
  */
1197
1319
  declare function joinConfig(group: JoinConfigGroup, paymentsReady: boolean, tiers?: readonly JoinConfigTier[], conditions?: Readonly<Record<string, FieldConditions>>): Record<string, unknown>;
1198
1320
 
1321
+ /** Canonical next action or browser-visible step after application submission. */
1322
+ type JoinContinuation = "payment" | "paymentPending" | "booking" | "approve" | "accepted";
1323
+ /** One server-side decision for submit, resume, and payment completion. */
1324
+ declare function resolveJoinContinuation(input: {
1325
+ status: string;
1326
+ initialStatus: string;
1327
+ pipeline: ResolvedPipeline;
1328
+ payable: boolean;
1329
+ subscriptionStarted: boolean;
1330
+ interviewWaived: boolean;
1331
+ }): JoinContinuation | null;
1332
+
1333
+ /** Current nested gift-catalog version inside signup-control. */
1334
+ declare const GIFT_OFFER_CATALOG_VERSION: 1;
1335
+ /** Maximum signed gift SKUs accepted in one catalog revision. */
1336
+ declare const MAX_GIFT_OFFERS = 20;
1337
+ /** Membership tier or standalone entitlement fulfilled by redemption. */
1338
+ type GiftOfferTarget = {
1339
+ type: "tier";
1340
+ tierId: string;
1341
+ } | {
1342
+ type: "entitlement";
1343
+ entitlementKey: string;
1344
+ };
1345
+ /** Server-authored gift SKU; provider identifiers never reach public config. */
1346
+ interface GiftOffer {
1347
+ id: string;
1348
+ target: GiftOfferTarget;
1349
+ billingMode: "one_time" | "subscription";
1350
+ stripePriceId: string;
1351
+ priceCents: number;
1352
+ currency: string;
1353
+ redemptionLifetimeHours: number;
1354
+ activeFrom?: number;
1355
+ activeUntil?: number;
1356
+ title: string;
1357
+ description: string;
1358
+ ctaLabel: string;
1359
+ }
1360
+ /** Versioned bounded collection delegated through signed signup control. */
1361
+ interface GiftOfferCatalog {
1362
+ schemaVersion: typeof GIFT_OFFER_CATALOG_VERSION;
1363
+ offers: readonly GiftOffer[];
1364
+ }
1365
+ /** Provider-free gift offer shape rendered by Chapter and exact CMS previews. */
1366
+ type PublicGiftOffer = Omit<GiftOffer, "stripePriceId" | "target">;
1367
+ /** Result of validating and normalizing an untrusted gift catalog. */
1368
+ type GiftOfferValidation = {
1369
+ ok: true;
1370
+ value: GiftOfferCatalog;
1371
+ } | {
1372
+ ok: false;
1373
+ errors: readonly string[];
1374
+ };
1375
+ /** Validate and normalize gift offers against the same document's tier ids. */
1376
+ declare function validateGiftOfferCatalog(input: unknown, tierIds: ReadonlySet<string>): GiftOfferValidation;
1377
+ /** Whether an offer is active at an exact server time. */
1378
+ declare const giftOfferActive: (offer: GiftOffer, now: number) => boolean;
1379
+ /** Public provider-free active catalog projection. */
1380
+ declare function publicGiftOffers(catalog: GiftOfferCatalog | undefined, now: number): PublicGiftOffer[];
1381
+ /** Resolve one currently active server-authoritative offer. */
1382
+ declare function findGiftOffer(catalog: GiftOfferCatalog | undefined, offerId: string, now: number): GiftOffer | null;
1383
+
1384
+ /** Safe buyer-facing claim state; hashes and beneficiary identity are deliberately absent. */
1385
+ interface BuyerGiftClaim {
1386
+ id: string;
1387
+ offerId: string;
1388
+ status: "pending" | "redeemed" | "expired" | "revoked";
1389
+ createdAt: number;
1390
+ codeExpiresAt: number;
1391
+ redeemedAt?: number;
1392
+ revokedAt?: number;
1393
+ }
1394
+
1199
1395
  /** The contact data the hub shares for a prospect. `hubRecordId` is the stable
1200
1396
  * idempotency key (the hub's crm_record id). */
1201
1397
  interface SharedPerson {
@@ -2026,6 +2222,7 @@ interface SignupControlDocument {
2026
2222
  policy?: SignupControlPolicy;
2027
2223
  scheduling?: ChapterScheduling;
2028
2224
  theme?: SignupControlTheme;
2225
+ giftOffers?: GiftOfferCatalog;
2029
2226
  }
2030
2227
  /** Digest travels beside the document so the exact desired state is attestable. */
2031
2228
  interface SignupControlEnvelope {
@@ -2068,6 +2265,59 @@ declare function createSignupControlEnvelope(document: SignupControlDocument): P
2068
2265
  /** Validate and normalize one complete desired signup state. */
2069
2266
  declare function validateSignupControlDocument(input: unknown): SignupControlValidation;
2070
2267
 
2268
+ /** Stable marker a static document can place where managed signup tokens belong. */
2269
+ declare const SIGNUP_CONTROL_THEME_MARKER: "<!--odla:signup-control-theme-->";
2270
+ /** Stable id shared by the server renderer and browser hydration helper. */
2271
+ declare const SIGNUP_CONTROL_THEME_STYLE_ID: "odla-signup-control-theme";
2272
+ /** The active revision shape exposed by `GET /api/join-config`. */
2273
+ interface SignupControlThemeRevision {
2274
+ revision: number;
2275
+ digest: string;
2276
+ theme?: SignupControlTheme;
2277
+ }
2278
+ /** Identity shared by initial HTML, response caching, and client hydration. */
2279
+ interface SignupControlThemeMetadata {
2280
+ source: "active" | "bootstrap";
2281
+ revision: number | null;
2282
+ digest: string | null;
2283
+ /** Include this value in any host-owned cache key for transformed HTML. */
2284
+ cacheKey: string;
2285
+ }
2286
+ /** A validated style block ready to place in an HTML head. */
2287
+ interface SignupControlThemeHead {
2288
+ css: string;
2289
+ head: string;
2290
+ metadata: SignupControlThemeMetadata;
2291
+ }
2292
+ /** Minimal DOM surface required by {@link hydrateSignupControlTheme}. */
2293
+ interface SignupControlThemeStyleTarget {
2294
+ textContent: string | null;
2295
+ getAttribute(name: string): string | null;
2296
+ setAttribute(name: string, value: string): void;
2297
+ removeAttribute(name: string): void;
2298
+ }
2299
+ /** Host-owned fallback inputs shared by server rendering and hydration. */
2300
+ interface SignupControlThemeOptions {
2301
+ /** Local site-owned tokens used only when no active managed revision exists. */
2302
+ bootstrapTokens?: Readonly<Record<string, string | number>>;
2303
+ }
2304
+ /**
2305
+ * Render validated signup-control tokens for the initial HTML head. Passing
2306
+ * `null` emits the deterministic local bootstrap state; it never performs I/O.
2307
+ */
2308
+ declare function renderSignupControlThemeHead(revision: SignupControlThemeRevision | null, options?: SignupControlThemeOptions): SignupControlThemeHead;
2309
+ /**
2310
+ * Replace the stable marker (preferred), an earlier Chapter style block, or the
2311
+ * closing head tag. The returned HTML always contains exactly one managed block.
2312
+ */
2313
+ declare function injectSignupControlThemeHead(html: string, rendered: SignupControlThemeHead, marker?: string): string;
2314
+ /**
2315
+ * Apply a newly fetched revision to the server-rendered style element. When the
2316
+ * revision and digest already match, this performs no writes and returns false,
2317
+ * so hydration cannot cause a visual token change.
2318
+ */
2319
+ declare function hydrateSignupControlTheme(target: SignupControlThemeStyleTarget, revision: SignupControlThemeRevision | null, options?: SignupControlThemeOptions): boolean;
2320
+
2071
2321
  /** A presentation overlay parsed from the constrained membership Markdown convention. */
2072
2322
  type MembershipTierMarkdownResult = {
2073
2323
  ok: true;
@@ -2101,4 +2351,4 @@ interface ChapterPromotionInput {
2101
2351
  /** Export the provider-independent pieces of one exact active signup revision. */
2102
2352
  declare function exportChapterPromotion(input: ChapterPromotionInput): Promise<PromotionAdapterResult>;
2103
2353
 
2104
- export { type AccountModel, type AdminNotificationTrigger, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmails, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MEMBERSHIP_PAGE_RENDERER, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkRecord, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedLeaderFormation, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlTheme, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildGroupSeed, buildTierSeeds, canApprove, canBook, canChangeRole, canTransition, canceledPatch, canonicalSignupControl, chapterBrandFromTokens, chapterDb, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, createChapterIntegration, createClerkInvitation, createClerkUser, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findApplicationRef, findTier, firstPaymentPatch, formatChapterCopy, formationFields, getVaultSecret, hasDisclaimerAck, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadOfferableTiers, loadTiers, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectSharedRecord, reconcileMeetings, refundedPatch, render, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveChapterCopy, resolveLeaderFormation, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
2354
+ export { ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, type BuyerGiftClaim, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmails, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_PAGE_RENDERER, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkRecord, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type PublicGiftOffer, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedLeaderFormation, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildGroupSeed, buildTierSeeds, canApprove, canBook, canChangeRole, canTransition, canceledPatch, canonicalSignupControl, chapterBrandFromTokens, chapterDb, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, createAdmissionGrantEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeAdmissionEmail, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectSharedRecord, publicGiftOffers, reconcileMeetings, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateGiftOfferCatalog, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };