@runbandit/sdk 3.3.0 → 3.5.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/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 })
@@ -159,6 +159,24 @@ declare function pickEnvelope<M extends PickerToPanel | PanelToPicker>(msg: M):
159
159
  declare function parsePickerMessage(data: unknown): PickerToPanel | null;
160
160
  declare function parsePanelMessage(data: unknown): PanelToPicker | null;
161
161
 
162
+ interface OrderLineItem {
163
+ id?: string;
164
+ quantity?: number;
165
+ price: number;
166
+ discount?: number;
167
+ unitCost?: number;
168
+ }
169
+ type OrderAmounts = {
170
+ lines: OrderLineItem[];
171
+ shipping?: number;
172
+ shippingCost?: number;
173
+ } | {
174
+ revenue: number;
175
+ cost?: number;
176
+ shipping?: number;
177
+ shippingCost?: number;
178
+ };
179
+
162
180
  interface Company {
163
181
  id: string;
164
182
  name: string;
@@ -351,6 +369,8 @@ interface TrackNamedEventRequest {
351
369
  name: string;
352
370
  category?: string;
353
371
  value?: number;
372
+ cost?: number;
373
+ lineItems?: OrderLineItem[];
354
374
  metadata?: Record<string, any>;
355
375
  sessionId: string;
356
376
  userId?: string;
@@ -459,6 +479,7 @@ interface SnapshotExperiment {
459
479
  treatments: SnapshotTreatment[];
460
480
  target?: SiteTarget;
461
481
  funnelId?: string;
482
+ trialOn?: 'served' | 'exposure';
462
483
  }
463
484
  interface CompanySnapshot {
464
485
  ttl: number;
@@ -480,4 +501,4 @@ declare function readCookie(header: string | null | undefined, name: string): st
480
501
  declare function parseDecisions(value: string | null | undefined, now: number): CookieDecisions;
481
502
  declare function serializeDecisions(decisions: CookieDecisions): string;
482
503
 
483
- export { type Bundle 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 ApiKey as O, Posterior as P, type CreateApiKeyRequest as Q, type CreateApiKeyResponse as R, type SnapshotTreatment as S, type Treatment as T, type User as U, VISITOR_COOKIE as V, type IdentifyMergeReason as W, type IdentifyUserRequest as X, type IdentifyUserResponse as Y, type ResolvedIdentity as Z, type BundleMode as _, type CompanySnapshot as a, type BundleAssignmentRequest as a0, type BundleSlotAssignment as a1, STOREFRONT_KINDS as a2, type StorefrontKind as a3, PLACEMENTS_BY_KIND as a4, type Placement as a5, PLACEMENTS as a6, isPlacement as a7, kindOfPlacement as a8, CONTENT_TYPE_BY_KIND as a9, parseAlternative as aA, PICK_CHANNEL as aB, PICK_PROTOCOL_VERSION as aC, PICK_MODES as aD, type PickMode as aE, PICK_REJECTIONS as aF, type PickRejection as aG, type ClickFunnelGoal as aH, type PickerToPanel as aI, type PanelToPicker as aJ, PICK_TOKEN_PREFIX as aK, type PickEnvelope as aL, pickEnvelope as aM, parsePickerMessage as aN, parsePanelMessage as aO, MIN_ORDERING_ITEMS as aa, MAX_ORDERING_ITEMS as ab, type ImageContent as ac, type OfferContent as ad, type TreatmentContent as ae, isShopifyCdnUrl as af, parseTreatmentContent as ag, serializeTreatmentConfig as ah, SITE_TARGET_KINDS as ai, type SiteTargetKind as aj, type SiteTarget as ak, type FunnelGoal as al, parseSiteContent as am, normalizeSiteTarget as an, normalizeFunnelGoal as ao, targetMatchesPage as ap, goalMatchesPage as aq, MAX_ALTERNATIVES as ar, MAX_TEXT_ALTERNATIVE_LENGTH as as, MAX_IMAGE_URL_LENGTH as at, type PickDraft as au, type PickState as av, SUGGESTED_SITE_EXPERIMENTS as aw, moreExperimentsSentence as ax, type PickStep as ay, 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 };
504
+ 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 };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { T as Treatment, C as ContextualFeatures, B as BundleAssignmentResponse, a as CompanySnapshot, S as SnapshotTreatment } from './decision-cookie-Mb4G_lTe.js';
2
- export { H as APIResponse, A as Account, g as AlgorithmResult, O as ApiKey, J as AssignmentRequest, l as BanditAlgorithm, y as BanditConfig, h as BanditResult, $ as Bundle, a0 as BundleAssignmentRequest, _ as BundleMode, a1 as BundleSlotAssignment, a9 as CONTENT_TYPE_BY_KIND, aH as ClickFunnelGoal, e as Company, w as ContentType, c as CookieDecision, d as CookieDecisions, Q as CreateApiKeyRequest, R 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, al as FunnelGoal, N as FunnelRewardRequest, L as FunnelStatus, W as IdentifyMergeReason, X as IdentifyUserRequest, Y as IdentifyUserResponse, ac as ImageContent, ar as MAX_ALTERNATIVES, at as MAX_IMAGE_URL_LENGTH, ab as MAX_ORDERING_ITEMS, as as MAX_TEXT_ALTERNATIVE_LENGTH, aa as MIN_ORDERING_ITEMS, ad as OfferContent, aB as PICK_CHANNEL, aD as PICK_MODES, aC as PICK_PROTOCOL_VERSION, aF as PICK_REJECTIONS, aK as PICK_TOKEN_PREFIX, a6 as PLACEMENTS, a4 as PLACEMENTS_BY_KIND, aJ as PanelToPicker, au as PickDraft, aL as PickEnvelope, aE as PickMode, aG as PickRejection, av as PickState, ay as PickStep, aI as PickerToPanel, a5 as Placement, P as Posterior, Z as ResolvedIdentity, ai as SITE_TARGET_KINDS, t as STATIONARY, a2 as STOREFRONT_KINDS, aw as SUGGESTED_SITE_EXPERIMENTS, f as Session, ak as SiteTarget, aj as SiteTargetKind, b as SnapshotExperiment, a3 as StorefrontKind, K as TrackNamedEventRequest, ae as TreatmentContent, j as TreatmentMetadata, G as TreatmentStats, U as User, V as VISITOR_COOKIE, k as VariantConfig, x as getContentTypeCategory, aq as goalMatchesPage, a7 as isPlacement, af as isShopifyCdnUrl, a8 as kindOfPlacement, ax as moreExperimentsSentence, v as normalizeAlgorithm, ao as normalizeFunnelGoal, n as normalizePosterior, an as normalizeSiteTarget, aA as parseAlternative, p as parseDecisions, aO as parsePanelMessage, aN as parsePickerMessage, am as parseSiteContent, ag as parseTreatmentContent, aM as pickEnvelope, az as pickStep, r as readCookie, u as resolveForgetting, s as serializeDecisions, ah as serializeTreatmentConfig, ap as targetMatchesPage } from './decision-cookie-Mb4G_lTe.js';
1
+ import { T as Treatment, C as ContextualFeatures, O as OrderLineItem, B as BundleAssignmentResponse, a as CompanySnapshot, S as SnapshotTreatment } from './decision-cookie-DgVvhn7c.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-DgVvhn7c.js';
3
3
 
4
4
  declare function validateTreatmentWeights(treatments: Treatment[]): boolean;
5
5
  declare function normalizeTreatmentWeights(treatments: Treatment[]): Treatment[];
@@ -217,6 +217,96 @@ type ScriptPlatform = SitePlatform & {
217
217
  declare const SCRIPT_PLATFORMS: readonly ScriptPlatform[];
218
218
  declare function platformById(id: string | undefined): SitePlatform | undefined;
219
219
 
220
+ declare const ARRIVAL_CHANNELS: readonly ["ad", "email", "social", "search", "referral", "direct"];
221
+ type ArrivalChannel = (typeof ARRIVAL_CHANNELS)[number];
222
+ declare const ARRIVAL_TTL_MS: number;
223
+ declare const MAX_ARRIVAL_VALUE_LENGTH = 40;
224
+ declare const MAX_REFERRER_HOST_LENGTH = 100;
225
+ declare const MAX_RAW_TOUCH_VALUE_LENGTH = 200;
226
+ type ArrivalTouch = {
227
+ utmSource?: string;
228
+ utmMedium?: string;
229
+ utmCampaign?: string;
230
+ utmContent?: string;
231
+ trackingParam?: string;
232
+ klaviyoExchangeId?: string;
233
+ referrerHost?: string;
234
+ };
235
+ type Arrival = {
236
+ source?: string;
237
+ medium?: string;
238
+ campaign?: string;
239
+ content?: string;
240
+ referrerHost?: string;
241
+ channel?: ArrivalChannel;
242
+ };
243
+ declare const UTM_PARAMS: readonly [readonly ["utmSource", "utm_source"], readonly ["utmMedium", "utm_medium"], readonly ["utmCampaign", "utm_campaign"], readonly ["utmContent", "utm_content"]];
244
+ declare const TRACKING_PARAM_SOURCES: Readonly<Record<string, string>>;
245
+ type ArrivalSignals = Omit<Arrival, 'channel'> & {
246
+ trackingParam?: string;
247
+ };
248
+ type ChannelRule = {
249
+ channel: ArrivalChannel;
250
+ field: 'medium' | 'trackingParam' | 'source' | 'referrerHost';
251
+ values: readonly string[];
252
+ };
253
+ declare const CHANNEL_RULES: readonly ChannelRule[];
254
+ declare function normalizeArrivalValue(raw: string | undefined): string | undefined;
255
+ declare function normalizeHost(raw: string | undefined): string | undefined;
256
+ declare const PASS_THROUGH_HOSTS: readonly string[];
257
+ declare function isPassThroughHost(host: string): boolean;
258
+ declare function channelOf(signals: ArrivalSignals): ArrivalChannel | undefined;
259
+ declare function arrivalFromTouch(touch: ArrivalTouch): Arrival;
260
+ declare function isDirectTouch(touch: ArrivalTouch): boolean;
261
+ declare function touchFromPage(page: {
262
+ href: string;
263
+ referrer: string;
264
+ }): ArrivalTouch;
265
+ type StoredArrival = {
266
+ signature: string;
267
+ sessionId: string;
268
+ at: number;
269
+ };
270
+ declare function touchSignature(touch: ArrivalTouch): string;
271
+ declare function shouldReportTouch(touch: ArrivalTouch, stored: StoredArrival | null, sessionId: string, now: number): boolean;
272
+ declare function isArrivalActive(startedAt: number, at: number): boolean;
273
+ declare const CHANNEL_LABELS: Readonly<Record<ArrivalChannel, string>>;
274
+ declare const UNKNOWN_SOURCE_KEY = "unknown";
275
+ type ArrivalSource = {
276
+ key: string;
277
+ label: string;
278
+ channel?: ArrivalChannel;
279
+ };
280
+ declare function sourceOf(arrival: Arrival | undefined): ArrivalSource;
281
+
282
+ type PayoutUnit = 'count' | 'revenue' | 'margin';
283
+ declare const PAYOUT_UNITS: readonly PayoutUnit[];
284
+ declare const NEW_PAYOUT_UNIT: PayoutUnit;
285
+ declare function isPayoutUnit(value: unknown): value is PayoutUnit;
286
+ declare function isCurrencyUnit(unit: PayoutUnit): boolean;
287
+ declare function rewardValue(unit: PayoutUnit, supplied: number | undefined): number;
288
+ declare function payoutUnitOfRewardBasis(rewardBasis: string | undefined): PayoutUnit;
289
+ declare const PAYOUT_UNIT_COPY: Record<PayoutUnit, {
290
+ label: string;
291
+ hint: string;
292
+ total: string;
293
+ perVisitor: string;
294
+ influence: string;
295
+ }>;
296
+ declare function formatPayout(unit: PayoutUnit, value: number): string;
297
+
298
+ type TrialRule = 'served' | 'exposure';
299
+ declare const TRIAL_RULES: readonly TrialRule[];
300
+ declare function isTrialRule(value: unknown): value is TrialRule;
301
+ declare function trialRuleFor({ target, requested, }: {
302
+ target?: unknown;
303
+ requested?: TrialRule;
304
+ }): TrialRule;
305
+ declare function trialRuleOf(experiment: {
306
+ trialOn?: TrialRule;
307
+ }): TrialRule;
308
+ declare const TRIAL_RULE_COPY: Record<TrialRule, string>;
309
+
220
310
  interface BanditsClientConfig {
221
311
  apiUrl: string;
222
312
  apiKey: string;
@@ -225,6 +315,7 @@ interface BanditsClientConfig {
225
315
  flushInterval?: number;
226
316
  sessionTtl?: number;
227
317
  visitorId?: string;
318
+ captureArrival?: boolean;
228
319
  }
229
320
  declare class BanditsRequestError extends Error {
230
321
  readonly status: number | undefined;
@@ -237,19 +328,25 @@ interface Assignment {
237
328
  userId: string;
238
329
  config: any;
239
330
  funnelId?: string;
331
+ trialOn?: 'served' | 'exposure';
240
332
  }
241
333
  declare class BanditsClient {
242
334
  private config;
243
335
  private namedEventQueue;
244
336
  readonly sessionId: string;
245
337
  readonly visitorId: string;
338
+ private exposureQueue;
339
+ private exposedIds;
246
340
  private flushTimer?;
247
341
  constructor(config: BanditsClientConfig);
342
+ reportArrival(): Promise<boolean>;
248
343
  getAssignment(experimentId: string, userId?: string, context?: ContextualFeatures): Promise<Assignment>;
249
344
  trackNamedEvent(event: {
250
345
  name: string;
251
346
  category?: string;
252
347
  value?: number;
348
+ cost?: number;
349
+ lineItems?: OrderLineItem[];
253
350
  metadata?: Record<string, any>;
254
351
  }, opts?: {
255
352
  immediate?: boolean;
@@ -257,7 +354,18 @@ declare class BanditsClient {
257
354
  assignmentId?: string;
258
355
  }): void;
259
356
  flush(): Promise<void>;
260
- identify(anonymousId: string, identifiedUserId: string, mergeReason?: 'user_signup' | 'email_verification' | 'social_login' | 'account_recovery' | 'manual'): Promise<void>;
357
+ private flushNamedEvents;
358
+ private flushExposures;
359
+ exposed(assignmentId: string, opts?: {
360
+ immediate?: boolean;
361
+ }): void;
362
+ observeExposure(assignmentId: string, element: Element, opts?: {
363
+ threshold?: number;
364
+ dwellMs?: number;
365
+ }): () => void;
366
+ identify(anonymousId: string, identifiedUserId: string, mergeReason?: 'user_signup' | 'email_verification' | 'social_login' | 'account_recovery' | 'manual', options?: {
367
+ email?: string;
368
+ }): Promise<void>;
261
369
  label(userId: string, labels: Record<string, string | boolean>): Promise<void>;
262
370
  trackFunnelReward(funnelId: string, userId: string, value: number): Promise<void>;
263
371
  convert(funnelId: string, value?: number): Promise<void>;
@@ -367,4 +475,4 @@ declare function reportPlanImpressions(plan: EmailPlan, recipientIds: string[],
367
475
  alreadyRecorded: boolean;
368
476
  }>;
369
477
 
370
- export { type Assignment, BanditsClient as BanditClient, BanditsClient, type BanditsClientConfig, BanditsRequestError, type Bound, BundleAssignmentResponse, type ButtonBlock, CompanySnapshot, ContextualFeatures, DEFAULT_SESSION_TTL_MS, type DividerBlock, EMAIL_TOKEN_PARAM, type EmailBlock, type EmailDocument, type EmailPlan, type EmailTokenPayload, type HeadingBlock, type ImageBlock, 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 SyncAssignment, type TextBlock, Treatment, VISITOR_ID_KEY, type VerifiedToken, appendEmailToken, buildSubdomainUrl, calculateConfidenceInterval, extractDocumentSlots, extractEmailLinks, extractSlotNames, extractSubdomain, generateId, generateSubdomain, getOrCreateSessionId, getOrCreateVisitorId, hashRecipient, impressionManifest, isSlotBinding, isValidEmail, isValidSubdomain, matchesConversionPath, mintEmailToken, normalizeConversionPath, normalizeTreatmentWeights, pickArm, pickTreatment, platformById, renderEmail, renderEmailDocument, renderFromPlan, reportPlanImpressions, rewriteEmailLinks, sampleCombination, sanitizeMetadata, shouldRefreshPlan, uniformFor, validateTreatmentWeights, verifyEmailToken };
478
+ 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, 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, renderEmail, renderEmailDocument, renderFromPlan, reportPlanImpressions, rewardValue, rewriteEmailLinks, sampleCombination, sanitizeMetadata, shouldRefreshPlan, shouldReportTouch, sourceOf, touchFromPage, touchSignature, trialRuleFor, trialRuleOf, uniformFor, validateTreatmentWeights, verifyEmailToken };