import { EvaluationContextWithMetadata, EvaluationResultSegments, EvaluationResultWithMetadata, FeatureContextWithMetadata, SDKFeatureMetadata } from './evaluation/models.js'; import { EvaluationResultFlags } from './evaluation/models.js'; export { EnvironmentModel } from './environments/models.js'; export { IdentityModel } from './identities/models.js'; export { TraitModel } from './identities/traits/models.js'; export { SegmentModel } from './segments/models.js'; export { FeatureModel, FeatureStateModel } from './features/models.js'; export { OrganisationModel } from './organisations/models.js'; type SegmentOverride = { feature: FeatureContextWithMetadata; segmentName: string; }; export type SegmentOverrides = Record; /** * Evaluates flags and segments for the given context. * * This is the main entry point for the evaluation engine. It processes segments, * applies feature overrides based on segment priority, and returns the final flag states with * evaluation reasons. * * @param context - EvaluationContext containing environment, identity, and segment data * @returns EvaluationResult with flags, segments, and original context */ export declare function getEvaluationResult(context: EvaluationContextWithMetadata): EvaluationResultWithMetadata; /** * Evaluates which segments the identity belongs to and collects feature overrides. * * @param context - EvaluationContext containing identity and segment definitions * @returns Object containing segments the identity belongs to and any feature overrides */ export declare function evaluateSegments(context: EvaluationContextWithMetadata): { segments: EvaluationResultSegments; segmentOverrides: Record; }; /** * Processes feature overrides from segments, applying priority rules. * * When multiple segments override the same feature, the segment with * higher priority (lower numeric value) takes precedence. * * @param identitySegments - Segments that the identity belongs to * @returns Map of feature keys to their highest-priority segment overrides */ export declare function processSegmentOverrides(identitySegments: any[]): Record; /** * Evaluates all features in the context, applying segment overrides where applicable. * For each feature: * - Checks if a segment override exists * - Uses override values if present, otherwise evaluates the base feature * - Determines appropriate evaluation reason * - Handles multivariate evaluation for features without overrides * * @param context - EvaluationContext containing features and identity * @param segmentOverrides - Map of feature keys to their segment overrides * @returns EvaluationResultFlags containing evaluated flag results */ export declare function evaluateFeatures(context: EvaluationContextWithMetadata, segmentOverrides: Record): EvaluationResultFlags; export declare function shouldApplyOverride(override: any, existingOverrides: Record): boolean; export declare function isHigherPriority(priorityA: number | undefined, priorityB: number | undefined): boolean; export type TargetingMatchReason = { type: 'SEGMENT'; override: SegmentOverride; } | { type: 'SPLIT'; weight: number; };