export interface SuperpositionOptions { endpoint: string; token: string; org_id?: string; workspace_id?: string; httpClient?: any; } export interface CacheOptions { ttl?: number; size?: number; } export interface EvaluationCacheOptions { ttl?: number; size?: number; } export interface PollingStrategy { interval: number; timeout?: number; } export interface OnDemandStrategy { ttl: number; timeout?: number; use_stale_on_error?: boolean; } export type RefreshStrategy = PollingStrategy | OnDemandStrategy; export interface ExperimentationOptions { refreshStrategy: RefreshStrategy; evaluationCache?: EvaluationCacheOptions; defaultIdentifier?: string; } export interface ConfigOptions { fallbackConfig?: Record; evaluationCache?: EvaluationCacheOptions; refreshStrategy?: RefreshStrategy; } export interface ConfigData { default_configs: Record; contexts: any[]; overrides: Record>; dimensions: Record>; } export interface FfiExperiment { id: string; context: Record; variants: Variant[]; traffic_percentage: number; } export interface Variant { id: string; variant_type: "CONTROL" | "EXPERIMENTAL"; context_id?: string; override_id?: string; overrides: Record; } export interface FfiExperimentGroup { id: string; context: Record; traffic_percentage: number; member_experiment_ids: string[]; group_type: "SYSTEM_GENERATED" | "USER_CREATED"; buckets: Bucket[]; } export interface Bucket { variant_id: string; experiment_id: string; } export interface ExperimentationArgs { experiments: FfiExperiment[]; experiment_groups: FfiExperimentGroup[]; targeting_key: string; }