export declare enum Operator { Empty = "EMPTY", True = "TRUE", StrEqual = "STR_EQUAL", StrEqualSoft = "STR_EQUAL_SOFT", StrStartsWith = "STR_STARTS_WITH", StrEndsWith = "STR_ENDS_WITH", StrContains = "STR_CONTAINS", Percentage = "PERCENTAGE", ArrOverlap = "ARR_OVERLAP", RegExp = "REGEXP", StrBefore = "STR_BEFORE", StrAfter = "STR_AFTER", Eq = "EQ", Lt = "LT", Gt = "GT", DateAfter = "DATE_AFTER", DateBefore = "DATE_BEFORE", SemverEq = "SEMVER_EQ", SemverGte = "SEMVER_GTE", SemverLte = "SEMVER_LTE" } export type Rule = { key: string; operator: Operator.Empty | Operator.True; negate: boolean; } | { key: string; operator: Operator.Percentage; rangeStart: number; rangeEnd: number; seed: number; negate?: boolean; } | { key: string; operator: Operator.StrEqual | Operator.StrEqualSoft | Operator.StrStartsWith | Operator.StrEndsWith | Operator.StrContains | Operator.ArrOverlap; values: string[]; negate: boolean; } | { key: string; operator: Operator.RegExp; value: string; negate: boolean; } | { key: string; operator: Operator.StrBefore | Operator.StrAfter; value: string; negate?: boolean; } | { key: string; operator: Operator.SemverEq | Operator.SemverGte | Operator.SemverLte; version: number[]; negate: boolean; } | { key: string; operator: Operator.Eq | Operator.Lt | Operator.Gt; value: number; negate: boolean; } | { key: string; operator: Operator.DateAfter | Operator.DateBefore; timestamp: number; iso: string; negate?: boolean; }; export type Variation = { active: boolean; value: any; }; export type Condition = { rules: Rule[]; variation: Variation; }; export type Flag = { defaultVariation: Variation; conditions: Condition[]; }; export declare const evalFlag: (context: Record, flag: Flag) => any; export declare const evalRules: (context: Record, rules: Rule[]) => boolean; export declare const evalRule: (rule: Rule, value: unknown) => boolean;