import type { LoggerWrapper } from "./ConfigCatLogger"; import { EvaluateLogBuilder } from "./EvaluateLogBuilder"; import type { IPercentageOption, ITargetingRule, PercentageOption, ProjectConfig, Setting, SettingValue, SettingValueContainer, TargetingRule, VariationIdValue } from "./ProjectConfig"; import type { User } from "./User"; export declare class EvaluateContext { readonly key: string; readonly setting: Setting; readonly user: User | undefined; readonly settings: Readonly<{ [name: string]: Setting; }>; private $visitedFlags?; get visitedFlags(): string[]; isMissingUserObjectLogged?: boolean; isMissingUserObjectAttributeLogged?: boolean; logBuilder?: EvaluateLogBuilder; constructor(key: string, setting: Setting, user: User | undefined, settings: Readonly<{ [name: string]: Setting; }>); static forPrerequisiteFlag(key: string, setting: Setting, dependentFlagContext: EvaluateContext): EvaluateContext; } export interface IEvaluateResult { selectedValue: SettingValueContainer; matchedTargetingRule?: TargetingRule; matchedPercentageOption?: PercentageOption; } export interface IRolloutEvaluator { evaluate(defaultValue: SettingValue, context: EvaluateContext): IEvaluateResult; } export declare class RolloutEvaluator implements IRolloutEvaluator { private readonly logger; constructor(logger: LoggerWrapper); evaluate(defaultValue: SettingValue, context: EvaluateContext): IEvaluateResult; private evaluateSetting; private evaluateTargetingRules; private evaluatePercentageOptions; private evaluateConditions; private evaluateUserCondition; private evaluateTextEquals; private evaluateSensitiveTextEquals; private evaluateTextIsOneOf; private evaluateSensitiveTextIsOneOf; private evaluateTextSliceEqualsAnyOf; private evaluateSensitiveTextSliceEqualsAnyOf; private evaluateTextContainsAnyOf; private evaluateSemVerIsOneOf; private evaluateSemVerRelation; private evaluateNumberRelation; private evaluateDateTimeRelation; private evaluateArrayContainsAnyOf; private evaluateSensitiveArrayContainsAnyOf; private evaluatePrerequisiteFlagCondition; private evaluateSegmentCondition; } export declare type SettingTypeOf = T extends boolean ? boolean : T extends number ? number : T extends string ? string : T extends null ? boolean | number | string | null : T extends undefined ? boolean | number | string | undefined : any; /** The evaluated value and additional information about the evaluation of a feature flag or setting. */ export interface IEvaluationDetails { /** Key of the feature flag or setting. */ key: string; /** Evaluated value of the feature or setting flag. */ value: TValue; /** Variation ID of the feature or setting flag (if available). */ variationId?: VariationIdValue; /** Time of last successful config download (if there has been a successful download already). */ fetchTime?: Date; /** The User object used for the evaluation (if available). */ user?: User; /** * Indicates whether the default value passed to the setting evaluation methods like `IConfigCatClient.getValueAsync`, `IConfigCatClient.getValueDetailsAsync`, etc. * is used as the result of the evaluation. */ isDefaultValue: boolean; /** Error message in case evaluation failed. */ errorMessage?: string; /** The exception object related to the error in case evaluation failed (if any). */ errorException?: any; /** The targeting rule (if any) that matched during the evaluation and was used to return the evaluated value. */ matchedTargetingRule?: ITargetingRule; /** The percentage option (if any) that was used to select the evaluated value. */ matchedPercentageOption?: IPercentageOption; } export declare function evaluationDetailsFromDefaultValue(key: string, defaultValue: T, fetchTime?: Date, user?: User, errorMessage?: string, errorException?: any): IEvaluationDetails>; export declare function evaluate(evaluator: IRolloutEvaluator, settings: Readonly<{ [name: string]: Setting; }> | null, key: string, defaultValue: T, user: User | undefined, remoteConfig: ProjectConfig | null, logger: LoggerWrapper): IEvaluationDetails>; export declare function evaluateAll(evaluator: IRolloutEvaluator, settings: Readonly<{ [name: string]: Setting; }> | null, user: User | undefined, remoteConfig: ProjectConfig | null, logger: LoggerWrapper, defaultReturnValue: string): [IEvaluationDetails[], any[] | undefined]; export declare function checkSettingsAvailable(settings: Readonly<{ [name: string]: Setting; }> | null, logger: LoggerWrapper, defaultReturnValue: string): settings is Readonly<{ [name: string]: Setting; }>; export declare function isAllowedValue(value: unknown): value is NonNullable; export declare function handleInvalidReturnValue(value: unknown): never; export declare function getTimestampAsDate(projectConfig: ProjectConfig | null): Date | undefined; //# sourceMappingURL=RolloutEvaluator.d.ts.map