interface VariationData { [customKey: string]: any; } interface VariationSettingsObject { traffic: number; data?: VariationData; } declare type VariationSettings = number | VariationSettingsObject; interface ExperimentSettings { inactive?: boolean; variations: { [variationName: string]: VariationSettings; }; } export interface ExperimentConfig { [experimentName: string]: ExperimentSettings; } declare type VariationAssignment = null | { variationName: string; variationData: VariationData; }; interface VariationAssignmentMap { [variationName: string]: VariationAssignment; } interface Experimenter { getVariationForExperiment: (experimentName: string, uniqueId: string) => VariationAssignment; getVariationsForUniqueId: (uniqueId: string) => VariationAssignmentMap; } interface InvalidExperimentReasons { invalidReasons: string[]; variations?: { [variationName: string]: string[]; }; } interface InvalidExperimentReasonsMap { [experimentName: string]: InvalidExperimentReasons; } export declare function validateExperimentConfig(experimentConfig: ExperimentConfig): InvalidExperimentReasonsMap; export declare function createExperimenter(experimentConfig: ExperimentConfig): Experimenter | null; export {};