import type { PolicyCondition, PolicyContext, ConditionEvaluationResult, LogicalOperator } from './types.js';
/**
 * Custom expression evaluator function type
 */
export type CustomExpressionEvaluator = (expression: string, language: string, context: PolicyContext, params?: Record<string, unknown>) => boolean;
/**
 * Condition evaluator options
 */
export interface ConditionEvaluatorOptions {
    /** Custom expression evaluators */
    customEvaluators?: Map<string, CustomExpressionEvaluator>;
    /** Default timezone for time-based conditions */
    defaultTimezone?: string;
    /** Holiday calendar provider */
    holidayCalendarProvider?: (calendarId: string, date: Date) => boolean;
}
/**
 * ConditionEvaluator class
 */
export declare class ConditionEvaluator {
    private customEvaluators;
    private defaultTimezone;
    private holidayCalendarProvider?;
    constructor(options?: ConditionEvaluatorOptions);
    /**
     * Evaluate a condition against the context
     */
    evaluate(condition: PolicyCondition, context: PolicyContext): ConditionEvaluationResult;
    /**
     * Evaluate all conditions and return combined result
     */
    evaluateAll(conditions: PolicyCondition[], context: PolicyContext, logic?: LogicalOperator): {
        matched: boolean;
        results: ConditionEvaluationResult[];
    };
    /**
     * Evaluate user attribute condition
     */
    private evaluateUserAttribute;
    /**
     * Evaluate request attribute condition
     */
    private evaluateRequestAttribute;
    /**
     * Evaluate time-based condition
     */
    private evaluateTimeBased;
    /**
     * Evaluate risk-based condition
     */
    private evaluateRiskBased;
    /**
     * Evaluate resource attribute condition
     */
    private evaluateResourceAttribute;
    /**
     * Evaluate composite condition
     */
    private evaluateComposite;
    /**
     * Evaluate custom condition
     */
    private evaluateCustom;
    /**
     * Compare values using the specified operator
     */
    private compareValues;
    /**
     * Check equality (deep for objects)
     */
    private equals;
    /**
     * Check if value is in array
     */
    private isIn;
    /**
     * Check if value contains another value
     */
    private contains;
    /**
     * Check if value matches pattern
     */
    private matchesPattern;
    /**
     * Check if value is between range
     */
    private isBetween;
    /**
     * Type guard for numbers
     */
    private isNumber;
    /**
     * Get nested value from object using dot notation
     */
    private getNestedValue;
    /**
     * Get hour in specified timezone
     */
    private getHourInTimezone;
    /**
     * Get day of week in specified timezone (0 = Sunday)
     */
    private getDayOfWeekInTimezone;
    /**
     * Get date string in specified timezone
     */
    private getDateStringInTimezone;
    /**
     * Register a custom expression evaluator
     */
    registerCustomEvaluator(language: string, evaluator: CustomExpressionEvaluator): void;
    /**
     * Unregister a custom expression evaluator
     */
    unregisterCustomEvaluator(language: string): boolean;
}
/**
 * Create a condition evaluator instance
 */
export declare function createConditionEvaluator(options?: ConditionEvaluatorOptions): ConditionEvaluator;
//# sourceMappingURL=condition-evaluator.d.ts.map