@runbandit/sdk 3.4.0 → 3.5.1

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/README.md CHANGED
@@ -19,7 +19,7 @@ const client = new BanditsClient({
19
19
  })
20
20
 
21
21
  const assignment = await client.getAssignment('experiment-id', 'user-id')
22
- showTreatment(assignment.treatment.config)
22
+ showTreatment(assignment.config)
23
23
 
24
24
  // Track a conversion. Pass { immediate: true } for events right before navigation.
25
25
  client.trackNamedEvent({ name: 'conversion', value: 29.99 })
@@ -62,7 +62,7 @@ declare function serializeTreatmentConfig(content: TreatmentContent): {
62
62
  content: unknown;
63
63
  };
64
64
 
65
- declare const SITE_TARGET_KINDS: readonly ["text", "image"];
65
+ declare const SITE_TARGET_KINDS: readonly ["text", "image", "order"];
66
66
  type SiteTargetKind = (typeof SITE_TARGET_KINDS)[number];
67
67
  interface SiteTarget {
68
68
  page: string;
@@ -89,6 +89,12 @@ declare function goalMatchesPage(goal: Pick<FunnelGoal, 'page'>, pathname: strin
89
89
  declare const MAX_ALTERNATIVES = 5;
90
90
  declare const MAX_TEXT_ALTERNATIVE_LENGTH = 300;
91
91
  declare const MAX_IMAGE_URL_LENGTH = 2048;
92
+ declare const MIN_ORDER_ITEMS = 2;
93
+ declare const MAX_ORDER_ITEMS = 24;
94
+ declare const MAX_ORDER_KEY_LENGTH = 160;
95
+ declare function formatOrder(keys: readonly string[]): string;
96
+ declare function parseOrder(raw: string): string[];
97
+ declare function isReorderOf(original: readonly string[], order: readonly string[]): boolean;
92
98
  interface PickDraft {
93
99
  target?: SiteTarget;
94
100
  alternatives: string[];
@@ -110,9 +116,9 @@ declare function pickStep(state: Pick<PickState, 'draft' | 'funnelGoal' | 'exper
110
116
  declare function parseAlternative(kind: SiteTargetKind, raw: string): string;
111
117
  declare const PICK_CHANNEL = "bandit-pick";
112
118
  declare const PICK_PROTOCOL_VERSION = 1;
113
- declare const PICK_MODES: readonly ["idle", "target", "goal-click"];
119
+ declare const PICK_MODES: readonly ["idle", "target", "order", "goal-click"];
114
120
  type PickMode = (typeof PICK_MODES)[number];
115
- declare const PICK_REJECTIONS: readonly ["not-text-or-image", "has-markup", "not-clickable", "no-selector"];
121
+ declare const PICK_REJECTIONS: readonly ["not-text-or-image", "has-markup", "not-a-list", "not-clickable", "no-selector"];
116
122
  type PickRejection = (typeof PICK_REJECTIONS)[number];
117
123
  type ClickFunnelGoal = Extract<FunnelGoal, {
118
124
  kind: 'click';
@@ -479,6 +485,7 @@ interface SnapshotExperiment {
479
485
  treatments: SnapshotTreatment[];
480
486
  target?: SiteTarget;
481
487
  funnelId?: string;
488
+ trialOn?: 'served' | 'exposure';
482
489
  }
483
490
  interface CompanySnapshot {
484
491
  ttl: number;
@@ -500,4 +507,4 @@ declare function readCookie(header: string | null | undefined, name: string): st
500
507
  declare function parseDecisions(value: string | null | undefined, now: number): CookieDecisions;
501
508
  declare function serializeDecisions(decisions: CookieDecisions): string;
502
509
 
503
- export { type BundleMode as $, type Account as A, type BundleAssignmentResponse as B, type ContextualFeatures as C, DECISIONS_COOKIE as D, type Experiment as E, ForgettingMode as F, type TreatmentStats as G, type APIResponse as H, type CreateExperimentRequest as I, type AssignmentRequest as J, type TrackNamedEventRequest as K, FunnelStatus as L, type Funnel as M, type FunnelRewardRequest as N, type OrderLineItem as O, Posterior as P, type ApiKey as Q, type CreateApiKeyRequest as R, type SnapshotTreatment as S, type Treatment as T, type User as U, VISITOR_COOKIE as V, type CreateApiKeyResponse as W, type IdentifyMergeReason as X, type IdentifyUserRequest as Y, type IdentifyUserResponse as Z, type ResolvedIdentity as _, type CompanySnapshot as a, type Bundle as a0, type BundleAssignmentRequest as a1, type BundleSlotAssignment as a2, STOREFRONT_KINDS as a3, type StorefrontKind as a4, PLACEMENTS_BY_KIND as a5, type Placement as a6, PLACEMENTS as a7, isPlacement as a8, kindOfPlacement as a9, pickStep as aA, parseAlternative as aB, PICK_CHANNEL as aC, PICK_PROTOCOL_VERSION as aD, PICK_MODES as aE, type PickMode as aF, PICK_REJECTIONS as aG, type PickRejection as aH, type ClickFunnelGoal as aI, type PickerToPanel as aJ, type PanelToPicker as aK, PICK_TOKEN_PREFIX as aL, type PickEnvelope as aM, pickEnvelope as aN, parsePickerMessage as aO, parsePanelMessage as aP, type OrderAmounts as aQ, CONTENT_TYPE_BY_KIND as aa, MIN_ORDERING_ITEMS as ab, MAX_ORDERING_ITEMS as ac, type ImageContent as ad, type OfferContent as ae, type TreatmentContent as af, isShopifyCdnUrl as ag, parseTreatmentContent as ah, serializeTreatmentConfig as ai, SITE_TARGET_KINDS as aj, type SiteTargetKind as ak, type SiteTarget as al, type FunnelGoal as am, parseSiteContent as an, normalizeSiteTarget as ao, normalizeFunnelGoal as ap, targetMatchesPage as aq, goalMatchesPage as ar, MAX_ALTERNATIVES as as, MAX_TEXT_ALTERNATIVE_LENGTH as at, MAX_IMAGE_URL_LENGTH as au, type PickDraft as av, type PickState as aw, SUGGESTED_SITE_EXPERIMENTS as ax, moreExperimentsSentence as ay, type PickStep as az, type SnapshotExperiment as b, type CookieDecision as c, type CookieDecisions as d, type Company as e, type Session as f, type AlgorithmResult as g, type BanditResult as h, ExperimentStatus as i, type TreatmentMetadata as j, type VariantConfig as k, BanditAlgorithm as l, type ForgettingConfig as m, normalizePosterior as n, DEFAULT_HALF_LIFE_MS as o, parseDecisions as p, DEFAULT_WINDOW_MS as q, readCookie as r, serializeDecisions as s, STATIONARY as t, resolveForgetting as u, normalizeAlgorithm as v, ContentType as w, getContentTypeCategory as x, type BanditConfig as y, type ExperimentStats as z };
510
+ export { type BundleMode as $, type Account as A, type BundleAssignmentResponse as B, type ContextualFeatures as C, DECISIONS_COOKIE as D, type Experiment as E, ForgettingMode as F, type TreatmentStats as G, type APIResponse as H, type CreateExperimentRequest as I, type AssignmentRequest as J, type TrackNamedEventRequest as K, FunnelStatus as L, type Funnel as M, type FunnelRewardRequest as N, type OrderLineItem as O, Posterior as P, type ApiKey as Q, type CreateApiKeyRequest as R, type SnapshotTreatment as S, type Treatment as T, type User as U, VISITOR_COOKIE as V, type CreateApiKeyResponse as W, type IdentifyMergeReason as X, type IdentifyUserRequest as Y, type IdentifyUserResponse as Z, type ResolvedIdentity as _, type CompanySnapshot as a, type Bundle as a0, type BundleAssignmentRequest as a1, type BundleSlotAssignment as a2, STOREFRONT_KINDS as a3, type StorefrontKind as a4, PLACEMENTS_BY_KIND as a5, type Placement as a6, PLACEMENTS as a7, isPlacement as a8, kindOfPlacement as a9, isReorderOf as aA, type PickDraft as aB, type PickState as aC, SUGGESTED_SITE_EXPERIMENTS as aD, moreExperimentsSentence as aE, type PickStep as aF, pickStep as aG, parseAlternative as aH, PICK_CHANNEL as aI, PICK_PROTOCOL_VERSION as aJ, PICK_MODES as aK, type PickMode as aL, PICK_REJECTIONS as aM, type PickRejection as aN, type ClickFunnelGoal as aO, type PickerToPanel as aP, type PanelToPicker as aQ, PICK_TOKEN_PREFIX as aR, type PickEnvelope as aS, pickEnvelope as aT, parsePickerMessage as aU, parsePanelMessage as aV, type OrderAmounts as aW, CONTENT_TYPE_BY_KIND as aa, MIN_ORDERING_ITEMS as ab, MAX_ORDERING_ITEMS as ac, type ImageContent as ad, type OfferContent as ae, type TreatmentContent as af, isShopifyCdnUrl as ag, parseTreatmentContent as ah, serializeTreatmentConfig as ai, SITE_TARGET_KINDS as aj, type SiteTargetKind as ak, type SiteTarget as al, type FunnelGoal as am, parseSiteContent as an, normalizeSiteTarget as ao, normalizeFunnelGoal as ap, targetMatchesPage as aq, goalMatchesPage as ar, MAX_ALTERNATIVES as as, MAX_TEXT_ALTERNATIVE_LENGTH as at, MAX_IMAGE_URL_LENGTH as au, MIN_ORDER_ITEMS as av, MAX_ORDER_ITEMS as aw, MAX_ORDER_KEY_LENGTH as ax, formatOrder as ay, parseOrder as az, type SnapshotExperiment as b, type CookieDecision as c, type CookieDecisions as d, type Company as e, type Session as f, type AlgorithmResult as g, type BanditResult as h, ExperimentStatus as i, type TreatmentMetadata as j, type VariantConfig as k, BanditAlgorithm as l, type ForgettingConfig as m, normalizePosterior as n, DEFAULT_HALF_LIFE_MS as o, parseDecisions as p, DEFAULT_WINDOW_MS as q, readCookie as r, serializeDecisions as s, STATIONARY as t, resolveForgetting as u, normalizeAlgorithm as v, ContentType as w, getContentTypeCategory as x, type BanditConfig as y, type ExperimentStats as z };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as Treatment, C as ContextualFeatures, O as OrderLineItem, B as BundleAssignmentResponse, a as CompanySnapshot, S as SnapshotTreatment } from './decision-cookie-CNIp56yQ.js';
2
- export { H as APIResponse, A as Account, g as AlgorithmResult, Q as ApiKey, J as AssignmentRequest, l as BanditAlgorithm, y as BanditConfig, h as BanditResult, a0 as Bundle, a1 as BundleAssignmentRequest, $ as BundleMode, a2 as BundleSlotAssignment, aa as CONTENT_TYPE_BY_KIND, aI as ClickFunnelGoal, e as Company, w as ContentType, c as CookieDecision, d as CookieDecisions, R as CreateApiKeyRequest, W as CreateApiKeyResponse, I as CreateExperimentRequest, D as DECISIONS_COOKIE, o as DEFAULT_HALF_LIFE_MS, q as DEFAULT_WINDOW_MS, E as Experiment, z as ExperimentStats, i as ExperimentStatus, m as ForgettingConfig, F as ForgettingMode, M as Funnel, am as FunnelGoal, N as FunnelRewardRequest, L as FunnelStatus, X as IdentifyMergeReason, Y as IdentifyUserRequest, Z as IdentifyUserResponse, ad as ImageContent, as as MAX_ALTERNATIVES, au as MAX_IMAGE_URL_LENGTH, ac as MAX_ORDERING_ITEMS, at as MAX_TEXT_ALTERNATIVE_LENGTH, ab as MIN_ORDERING_ITEMS, ae as OfferContent, aQ as OrderAmounts, aC as PICK_CHANNEL, aE as PICK_MODES, aD as PICK_PROTOCOL_VERSION, aG as PICK_REJECTIONS, aL as PICK_TOKEN_PREFIX, a7 as PLACEMENTS, a5 as PLACEMENTS_BY_KIND, aK as PanelToPicker, av as PickDraft, aM as PickEnvelope, aF as PickMode, aH as PickRejection, aw as PickState, az as PickStep, aJ as PickerToPanel, a6 as Placement, P as Posterior, _ as ResolvedIdentity, aj as SITE_TARGET_KINDS, t as STATIONARY, a3 as STOREFRONT_KINDS, ax as SUGGESTED_SITE_EXPERIMENTS, f as Session, al as SiteTarget, ak as SiteTargetKind, b as SnapshotExperiment, a4 as StorefrontKind, K as TrackNamedEventRequest, af as TreatmentContent, j as TreatmentMetadata, G as TreatmentStats, U as User, V as VISITOR_COOKIE, k as VariantConfig, x as getContentTypeCategory, ar as goalMatchesPage, a8 as isPlacement, ag as isShopifyCdnUrl, a9 as kindOfPlacement, ay as moreExperimentsSentence, v as normalizeAlgorithm, ap as normalizeFunnelGoal, n as normalizePosterior, ao as normalizeSiteTarget, aB as parseAlternative, p as parseDecisions, aP as parsePanelMessage, aO as parsePickerMessage, an as parseSiteContent, ah as parseTreatmentContent, aN as pickEnvelope, aA as pickStep, r as readCookie, u as resolveForgetting, s as serializeDecisions, ai as serializeTreatmentConfig, aq as targetMatchesPage } from './decision-cookie-CNIp56yQ.js';
1
+ import { T as Treatment, C as ContextualFeatures, O as OrderLineItem, B as BundleAssignmentResponse, a as CompanySnapshot, S as SnapshotTreatment } from './decision-cookie-g9aDdSx9.js';
2
+ export { H as APIResponse, A as Account, g as AlgorithmResult, Q as ApiKey, J as AssignmentRequest, l as BanditAlgorithm, y as BanditConfig, h as BanditResult, a0 as Bundle, a1 as BundleAssignmentRequest, $ as BundleMode, a2 as BundleSlotAssignment, aa as CONTENT_TYPE_BY_KIND, aO as ClickFunnelGoal, e as Company, w as ContentType, c as CookieDecision, d as CookieDecisions, R as CreateApiKeyRequest, W as CreateApiKeyResponse, I as CreateExperimentRequest, D as DECISIONS_COOKIE, o as DEFAULT_HALF_LIFE_MS, q as DEFAULT_WINDOW_MS, E as Experiment, z as ExperimentStats, i as ExperimentStatus, m as ForgettingConfig, F as ForgettingMode, M as Funnel, am as FunnelGoal, N as FunnelRewardRequest, L as FunnelStatus, X as IdentifyMergeReason, Y as IdentifyUserRequest, Z as IdentifyUserResponse, ad as ImageContent, as as MAX_ALTERNATIVES, au as MAX_IMAGE_URL_LENGTH, ac as MAX_ORDERING_ITEMS, aw as MAX_ORDER_ITEMS, ax as MAX_ORDER_KEY_LENGTH, at as MAX_TEXT_ALTERNATIVE_LENGTH, ab as MIN_ORDERING_ITEMS, av as MIN_ORDER_ITEMS, ae as OfferContent, aW as OrderAmounts, aI as PICK_CHANNEL, aK as PICK_MODES, aJ as PICK_PROTOCOL_VERSION, aM as PICK_REJECTIONS, aR as PICK_TOKEN_PREFIX, a7 as PLACEMENTS, a5 as PLACEMENTS_BY_KIND, aQ as PanelToPicker, aB as PickDraft, aS as PickEnvelope, aL as PickMode, aN as PickRejection, aC as PickState, aF as PickStep, aP as PickerToPanel, a6 as Placement, P as Posterior, _ as ResolvedIdentity, aj as SITE_TARGET_KINDS, t as STATIONARY, a3 as STOREFRONT_KINDS, aD as SUGGESTED_SITE_EXPERIMENTS, f as Session, al as SiteTarget, ak as SiteTargetKind, b as SnapshotExperiment, a4 as StorefrontKind, K as TrackNamedEventRequest, af as TreatmentContent, j as TreatmentMetadata, G as TreatmentStats, U as User, V as VISITOR_COOKIE, k as VariantConfig, ay as formatOrder, x as getContentTypeCategory, ar as goalMatchesPage, a8 as isPlacement, aA as isReorderOf, ag as isShopifyCdnUrl, a9 as kindOfPlacement, aE as moreExperimentsSentence, v as normalizeAlgorithm, ap as normalizeFunnelGoal, n as normalizePosterior, ao as normalizeSiteTarget, aH as parseAlternative, p as parseDecisions, az as parseOrder, aV as parsePanelMessage, aU as parsePickerMessage, an as parseSiteContent, ah as parseTreatmentContent, aT as pickEnvelope, aG as pickStep, r as readCookie, u as resolveForgetting, s as serializeDecisions, ai as serializeTreatmentConfig, aq as targetMatchesPage } from './decision-cookie-g9aDdSx9.js';
3
3
 
4
4
  declare function validateTreatmentWeights(treatments: Treatment[]): boolean;
5
5
  declare function normalizeTreatmentWeights(treatments: Treatment[]): Treatment[];
@@ -145,6 +145,12 @@ declare const SITE_PLATFORMS: readonly [{
145
145
  readonly path: "shopify";
146
146
  readonly codeBox: "";
147
147
  readonly steps: readonly [];
148
+ }, {
149
+ readonly id: "shopify_theme";
150
+ readonly label: "Shopify";
151
+ readonly path: "script";
152
+ readonly codeBox: "Online Store, Themes, Edit code, layout/theme.liquid, just before </head>.";
153
+ readonly steps: readonly ["In your Shopify admin open Online Store, then Themes.", "On your live theme click the three dots, then Edit code.", "Open layout/theme.liquid.", "Paste the script on the line just before </head>.", "Click Save.", "Then add the purchase pixel below, so Bandit learns from orders."];
148
154
  }, {
149
155
  readonly id: "webflow";
150
156
  readonly label: "Webflow";
@@ -229,6 +235,7 @@ type ArrivalTouch = {
229
235
  utmCampaign?: string;
230
236
  utmContent?: string;
231
237
  trackingParam?: string;
238
+ klaviyoExchangeId?: string;
232
239
  referrerHost?: string;
233
240
  };
234
241
  type Arrival = {
@@ -278,6 +285,26 @@ type ArrivalSource = {
278
285
  };
279
286
  declare function sourceOf(arrival: Arrival | undefined): ArrivalSource;
280
287
 
288
+ declare const CDP_SOURCES: readonly ["segment", "rudderstack", "posthog"];
289
+ type CdpSource = (typeof CDP_SOURCES)[number];
290
+ interface CdpAlias {
291
+ source: CdpSource;
292
+ externalId: string;
293
+ }
294
+ declare const MAX_CDP_EXTERNAL_ID_LENGTH = 256;
295
+ interface CdpStorage {
296
+ readonly length: number;
297
+ key(index: number): string | null;
298
+ getItem(key: string): string | null;
299
+ }
300
+ interface CdpSourceEntry {
301
+ source: CdpSource;
302
+ key: RegExp;
303
+ parse: (raw: string) => string | null;
304
+ }
305
+ declare const CDP_SOURCE_REGISTRY: readonly CdpSourceEntry[];
306
+ declare function readCdpAliases(cookieHeader: string, storage: CdpStorage | null): CdpAlias[];
307
+
281
308
  type PayoutUnit = 'count' | 'revenue' | 'margin';
282
309
  declare const PAYOUT_UNITS: readonly PayoutUnit[];
283
310
  declare const NEW_PAYOUT_UNIT: PayoutUnit;
@@ -294,6 +321,18 @@ declare const PAYOUT_UNIT_COPY: Record<PayoutUnit, {
294
321
  }>;
295
322
  declare function formatPayout(unit: PayoutUnit, value: number): string;
296
323
 
324
+ type TrialRule = 'served' | 'exposure';
325
+ declare const TRIAL_RULES: readonly TrialRule[];
326
+ declare function isTrialRule(value: unknown): value is TrialRule;
327
+ declare function trialRuleFor({ target, requested, }: {
328
+ target?: unknown;
329
+ requested?: TrialRule;
330
+ }): TrialRule;
331
+ declare function trialRuleOf(experiment: {
332
+ trialOn?: TrialRule;
333
+ }): TrialRule;
334
+ declare const TRIAL_RULE_COPY: Record<TrialRule, string>;
335
+
297
336
  interface BanditsClientConfig {
298
337
  apiUrl: string;
299
338
  apiKey: string;
@@ -303,6 +342,7 @@ interface BanditsClientConfig {
303
342
  sessionTtl?: number;
304
343
  visitorId?: string;
305
344
  captureArrival?: boolean;
345
+ captureCdpAliases?: boolean;
306
346
  }
307
347
  declare class BanditsRequestError extends Error {
308
348
  readonly status: number | undefined;
@@ -315,14 +355,19 @@ interface Assignment {
315
355
  userId: string;
316
356
  config: any;
317
357
  funnelId?: string;
358
+ trialOn?: 'served' | 'exposure';
318
359
  }
319
360
  declare class BanditsClient {
320
361
  private config;
321
362
  private namedEventQueue;
322
363
  readonly sessionId: string;
323
364
  readonly visitorId: string;
365
+ private exposureQueue;
366
+ private exposedIds;
324
367
  private flushTimer?;
325
368
  constructor(config: BanditsClientConfig);
369
+ reportCdpAliases(): Promise<boolean>;
370
+ aliasVisitor(aliases: CdpAlias[]): Promise<void>;
326
371
  reportArrival(): Promise<boolean>;
327
372
  getAssignment(experimentId: string, userId?: string, context?: ContextualFeatures): Promise<Assignment>;
328
373
  trackNamedEvent(event: {
@@ -338,7 +383,18 @@ declare class BanditsClient {
338
383
  assignmentId?: string;
339
384
  }): void;
340
385
  flush(): Promise<void>;
341
- identify(anonymousId: string, identifiedUserId: string, mergeReason?: 'user_signup' | 'email_verification' | 'social_login' | 'account_recovery' | 'manual'): Promise<void>;
386
+ private flushNamedEvents;
387
+ private flushExposures;
388
+ exposed(assignmentId: string, opts?: {
389
+ immediate?: boolean;
390
+ }): void;
391
+ observeExposure(assignmentId: string, element: Element, opts?: {
392
+ threshold?: number;
393
+ dwellMs?: number;
394
+ }): () => void;
395
+ identify(anonymousId: string, identifiedUserId: string, mergeReason?: 'user_signup' | 'email_verification' | 'social_login' | 'account_recovery' | 'manual', options?: {
396
+ email?: string;
397
+ }): Promise<void>;
342
398
  label(userId: string, labels: Record<string, string | boolean>): Promise<void>;
343
399
  trackFunnelReward(funnelId: string, userId: string, value: number): Promise<void>;
344
400
  convert(funnelId: string, value?: number): Promise<void>;
@@ -448,4 +504,4 @@ declare function reportPlanImpressions(plan: EmailPlan, recipientIds: string[],
448
504
  alreadyRecorded: boolean;
449
505
  }>;
450
506
 
451
- export { ARRIVAL_CHANNELS, ARRIVAL_TTL_MS, type Arrival, type ArrivalChannel, type ArrivalSource, type ArrivalTouch, type Assignment, BanditsClient as BanditClient, BanditsClient, type BanditsClientConfig, BanditsRequestError, type Bound, BundleAssignmentResponse, type ButtonBlock, CHANNEL_LABELS, CHANNEL_RULES, CompanySnapshot, ContextualFeatures, DEFAULT_SESSION_TTL_MS, type DividerBlock, EMAIL_TOKEN_PARAM, type EmailBlock, type EmailDocument, type EmailPlan, type EmailTokenPayload, type HeadingBlock, type ImageBlock, MAX_ARRIVAL_VALUE_LENGTH, MAX_RAW_TOUCH_VALUE_LENGTH, MAX_REFERRER_HOST_LENGTH, NEW_PAYOUT_UNIT, OrderLineItem, PASS_THROUGH_HOSTS, PAYOUT_UNITS, PAYOUT_UNIT_COPY, type PayoutUnit, type PlanArm, type PlanRenderResult, type PlanSlot, type RenderEmailOptions, type RenderedDocument, type RenderedEmail, type RewriteOptions, type RewriteResult, SCRIPT_PLATFORMS, SESSION_CREATED_AT_KEY, SESSION_ID_KEY, SITE_PLATFORMS, SITE_PLATFORM_IDS, type ScriptPlatform, type SessionOptions, type SigningKey, type SitePlatform, type SitePlatformId, type SitePlatformPath, type SlotBinding, SnapshotClient, type SnapshotClientConfig, SnapshotTreatment, type SpacerBlock, type StoredArrival, type SyncAssignment, TRACKING_PARAM_SOURCES, type TextBlock, Treatment, UNKNOWN_SOURCE_KEY, UTM_PARAMS, VISITOR_ID_KEY, type VerifiedToken, appendEmailToken, arrivalFromTouch, buildSubdomainUrl, calculateConfidenceInterval, channelOf, extractDocumentSlots, extractEmailLinks, extractSlotNames, extractSubdomain, formatPayout, generateId, generateSubdomain, getOrCreateSessionId, getOrCreateVisitorId, hashRecipient, impressionManifest, isArrivalActive, isCurrencyUnit, isDirectTouch, isPassThroughHost, isPayoutUnit, isSlotBinding, isValidEmail, isValidSubdomain, matchesConversionPath, mintEmailToken, normalizeArrivalValue, normalizeConversionPath, normalizeHost, normalizeTreatmentWeights, payoutUnitOfRewardBasis, pickArm, pickTreatment, platformById, renderEmail, renderEmailDocument, renderFromPlan, reportPlanImpressions, rewardValue, rewriteEmailLinks, sampleCombination, sanitizeMetadata, shouldRefreshPlan, shouldReportTouch, sourceOf, touchFromPage, touchSignature, uniformFor, validateTreatmentWeights, verifyEmailToken };
507
+ export { ARRIVAL_CHANNELS, ARRIVAL_TTL_MS, type Arrival, type ArrivalChannel, type ArrivalSource, type ArrivalTouch, type Assignment, BanditsClient as BanditClient, BanditsClient, type BanditsClientConfig, BanditsRequestError, type Bound, BundleAssignmentResponse, type ButtonBlock, CDP_SOURCES, CDP_SOURCE_REGISTRY, CHANNEL_LABELS, CHANNEL_RULES, type CdpAlias, type CdpSource, type CdpStorage, CompanySnapshot, ContextualFeatures, DEFAULT_SESSION_TTL_MS, type DividerBlock, EMAIL_TOKEN_PARAM, type EmailBlock, type EmailDocument, type EmailPlan, type EmailTokenPayload, type HeadingBlock, type ImageBlock, MAX_ARRIVAL_VALUE_LENGTH, MAX_CDP_EXTERNAL_ID_LENGTH, MAX_RAW_TOUCH_VALUE_LENGTH, MAX_REFERRER_HOST_LENGTH, NEW_PAYOUT_UNIT, OrderLineItem, PASS_THROUGH_HOSTS, PAYOUT_UNITS, PAYOUT_UNIT_COPY, type PayoutUnit, type PlanArm, type PlanRenderResult, type PlanSlot, type RenderEmailOptions, type RenderedDocument, type RenderedEmail, type RewriteOptions, type RewriteResult, SCRIPT_PLATFORMS, SESSION_CREATED_AT_KEY, SESSION_ID_KEY, SITE_PLATFORMS, SITE_PLATFORM_IDS, type ScriptPlatform, type SessionOptions, type SigningKey, type SitePlatform, type SitePlatformId, type SitePlatformPath, type SlotBinding, SnapshotClient, type SnapshotClientConfig, SnapshotTreatment, type SpacerBlock, type StoredArrival, type SyncAssignment, TRACKING_PARAM_SOURCES, TRIAL_RULES, TRIAL_RULE_COPY, type TextBlock, Treatment, type TrialRule, UNKNOWN_SOURCE_KEY, UTM_PARAMS, VISITOR_ID_KEY, type VerifiedToken, appendEmailToken, arrivalFromTouch, buildSubdomainUrl, calculateConfidenceInterval, channelOf, extractDocumentSlots, extractEmailLinks, extractSlotNames, extractSubdomain, formatPayout, generateId, generateSubdomain, getOrCreateSessionId, getOrCreateVisitorId, hashRecipient, impressionManifest, isArrivalActive, isCurrencyUnit, isDirectTouch, isPassThroughHost, isPayoutUnit, isSlotBinding, isTrialRule, isValidEmail, isValidSubdomain, matchesConversionPath, mintEmailToken, normalizeArrivalValue, normalizeConversionPath, normalizeHost, normalizeTreatmentWeights, payoutUnitOfRewardBasis, pickArm, pickTreatment, platformById, readCdpAliases, renderEmail, renderEmailDocument, renderFromPlan, reportPlanImpressions, rewardValue, rewriteEmailLinks, sampleCombination, sanitizeMetadata, shouldRefreshPlan, shouldReportTouch, sourceOf, touchFromPage, touchSignature, trialRuleFor, trialRuleOf, uniformFor, validateTreatmentWeights, verifyEmailToken };