/** * Remote SDK config (Auto Identity Bridge). * * The `/container-scripts` response carries a `config` object — the workspace * `sdk_config` with server-computed defaults already applied (e.g. auto-identify * OFF for sensitive/health verticals). This module folds that remote config * UNDER the caller's explicit init() options, so the dashboard controls behavior * with zero snippet edits while explicit code always wins. * * Precedence per key: explicit init() value > remote config > built-in default */ import type { DatalyrConfig } from './types'; /** Subset of DatalyrConfig the worker may deliver via the config envelope. */ export interface SdkRemoteConfig { autoIdentify?: boolean; autoIdentifyForms?: boolean; autoIdentifyAPI?: boolean; autoIdentifyShopify?: boolean; shopifyCartAttributes?: boolean; stripeCheckoutSessions?: boolean; inAppHandoff?: boolean; checkoutChampDomains?: string[]; respectGlobalPrivacyControl?: boolean; respectDoNotTrack?: boolean; privacyMode?: 'standard' | 'strict'; } /** * Fold `remote` into `config` IN PLACE. Precedence per key: * explicit init() value > remote (dashboard) > built-in default * * `explicitKeys` = the keys the CALLER passed to init() (before built-in * defaults were merged in). For any remote key NOT in that set, remote * OVERRIDES the built-in default. This is essential because some keys * (respectDoNotTrack, respectGlobalPrivacyControl, privacyMode) get a built-in * default at init() and are therefore never `undefined` — a naive * "fill-if-undefined" would silently ignore the dashboard for them. * * No-op when there's no remote config (older worker / container disabled / * failed fetch) — built-in defaults then stand. */ export declare function applyRemoteConfig(config: DatalyrConfig, remote?: SdkRemoteConfig | null, explicitKeys?: ReadonlySet): void; //# sourceMappingURL=config.d.ts.map