import ConditionMatcher from "./ConditionMatcher"; import Evaluator, { EvaluatorContext, EvaluatorRequest } from "../evalautor/Evaluator"; import { Experiment, TargetCondition } from "../../model/model"; import ValueOperatorMatcher from "./ValueOperatorMatcher"; import ExperimentEvaluation from "../evalautor/experiment/ExperimentEvaluation"; import ExperimentContextualEvaluator from "../evalautor/experiment/ExperimentContextualEvaluator"; export default class ExperimentConditionMatcher implements ConditionMatcher { private readonly abTestMatcher; private readonly featureFlagMatcher; constructor(abTestMatcher: AbTestConditionMatcher, featureFlagMatcher: FeatureFlagConditionMatcher); /** * @override */ matches(request: EvaluatorRequest, context: EvaluatorContext, condition: TargetCondition): boolean; } declare abstract class ExperimentMatcher extends ExperimentContextualEvaluator { protected readonly valueOperatorMatcher: ValueOperatorMatcher; protected constructor(evaluator: Evaluator, valueOperatorMatcher: ValueOperatorMatcher); matches(request: EvaluatorRequest, context: EvaluatorContext, condition: TargetCondition): boolean; abstract experiment(request: EvaluatorRequest, key: number): Experiment | undefined; abstract evaluationMatches(evaluation: ExperimentEvaluation, condition: TargetCondition): boolean; } export declare class AbTestConditionMatcher extends ExperimentMatcher { constructor(evaluator: Evaluator, valueOperatorMatcher: ValueOperatorMatcher); private static AB_TEST_MATCHED_REASONS; /** * @override */ experiment(request: EvaluatorRequest, key: number): Experiment | undefined; /** * @override */ resolve(request: EvaluatorRequest, context: EvaluatorContext, evaluation: ExperimentEvaluation): ExperimentEvaluation; /** * @override */ evaluationMatches(evaluation: ExperimentEvaluation, condition: TargetCondition): boolean; } export declare class FeatureFlagConditionMatcher extends ExperimentMatcher { constructor(evaluator: Evaluator, valueOperatorMatcher: ValueOperatorMatcher); /** * @override */ experiment(request: EvaluatorRequest, key: number): Experiment | undefined; /** * @override */ resolve(request: EvaluatorRequest, context: EvaluatorContext, evaluation: ExperimentEvaluation): ExperimentEvaluation; /** * @override */ evaluationMatches(evaluation: ExperimentEvaluation, condition: TargetCondition): boolean; } export {};