import { GroupType, ExperimentStatusType, VariantType } from "superposition-sdk"; import { SuperpositionOptions, ExperimentationOptions } from "./types"; export interface Variant { id: string; variant_type: VariantType; context_id?: string; override_id?: string; overrides: Record; } export interface Experiment { id: string; context: Record; variants: Variant[]; traffic_percentage: number; status: ExperimentStatusType; } export interface Bucket { variant_id: string; experiment_id: string; } export interface ExperimentGroup { id: string; context: Record; member_experiment_ids: string[]; traffic_percentage: number; group_type: GroupType; buckets: Bucket[]; } export declare class ExperimentationClient { private superpositionOptions; private smithyClient; private options; private cachedExperiments; private cachedExperimentGroups; private lastUpdated; private evaluationCache; private pollingInterval?; private onExperimentsChange?; constructor(superpositionOptions: SuperpositionOptions, experimentOptions: ExperimentationOptions, onExperimentsChange?: () => void); initialize(): Promise; private startPolling; private fetchExperiments; private fetchExperimentGroups; /** * Normalize any value to a Record format * This ensures compatibility with the expected interface */ private normalizeToStringRecord; getExperiments(): Promise; getExperimentGroups(): Promise; getCachedExperiments(): Experiment[] | null; getCachedExperimentGroups(): ExperimentGroup[] | null; generateCacheKey(queryData: Record): string; getFromEvalCache(key: string): any | undefined; setEvalCache(key: string, value: any): void; clearEvalCache(): void; close(): Promise; }