import { DataAdapterResult } from './StatsigDataAdapter'; import { StatsigEvent } from './StatsigEvent'; import { DynamicConfig, Experiment, FeatureGate, Layer } from './StatsigTypes'; import { Flatten } from './TypingUtils'; export type StatsigLoadingStatus = 'Uninitialized' | 'Loading' | 'Ready'; export declare const ErrorTag: { readonly NetworkError: "NetworkError"; }; export type ErrorTag = (typeof ErrorTag)[keyof typeof ErrorTag]; type ErrorEventData = { error: unknown; tag: ErrorTag | string; } | { error: unknown; tag: 'NetworkError'; requestArgs: Record; }; type EventNameToEventDataMap = { values_updated: { status: StatsigLoadingStatus; values: DataAdapterResult | null; }; session_expired: object; error: ErrorEventData; pre_logs_flushed: { events: Record[]; }; logs_flushed: { events: Record[]; }; pre_shutdown: object; initialization_failure: object; gate_evaluation: { gate: FeatureGate; }; dynamic_config_evaluation: { dynamicConfig: DynamicConfig; }; experiment_evaluation: { experiment: Experiment; }; layer_evaluation: { layer: Layer; }; log_event_called: { event: StatsigEvent; }; }; /** * Type representing various events emitted by a Statsig client. * * `values_updated` - When the Statsig clients internal values change as the result of an initialize/update operation. * * `session_expired` - When the current session has expired. * * `error` - When an unexpected error occurs within the Statsig client. * * `pre_logs_flushed` - Fired just before queued StatsigEvents are flushed to Statsig servers. * * `logs_flushed` - When queued StatsigEvents are flushed to Statsig servers. * * `pre_shutdown` - Fired just before the SDK is shutdown * * `initialization_failure` - Fired when the client fails to initialize. * * `gate_evaluation` - Fired when any gate is checked from the Statsig client. * * `dynamic_config_evaluation` - Fired when any dyanamic config is checked from the Statsig client. * * `experiment_evaluation` - Fired when any experiment is checked from the Statsig client. * * `layer_evaluation` - Fired when any layer is checked from the Statsig client. * * `log_event_called` - Fired when log event is called. */ export type AnyStatsigClientEvent = Flatten<{ [K in keyof EventNameToEventDataMap]: { name: K; } & EventNameToEventDataMap[K]; }[keyof EventNameToEventDataMap]>; export type StatsigClientEvent = Extract; export type AnyStatsigClientEventListener = StatsigClientEventCallback; export type StatsigClientEventName = AnyStatsigClientEvent['name'] | '*'; export type StatsigClientEventCallback = (event: T extends '*' ? AnyStatsigClientEvent : StatsigClientEvent) => void; export interface StatsigClientEventEmitterInterface { readonly loadingStatus: StatsigLoadingStatus; on(event: T, listener: StatsigClientEventCallback): void; off(event: T, listener: StatsigClientEventCallback): void; /** * (Statsig Use Only) - Same as .on() but logs errors to sdk_exception */ $on(event: T, listener: StatsigClientEventCallback): void; /** * (Statsig Use Only) - Emit StatsigClientEvents */ $emt(event: AnyStatsigClientEvent): void; } export {};