import { ASTNode } from './types/ast';
export interface Self {
    [key: string]: any;
}
export interface DateFunctions {
    addDays: (date: Date | number, amount: number) => Date;
    subDays: (date: Date | number, amount: number) => Date;
    parseISO: (argument: string) => Date;
    differenceInDays: (dateLeft: Date | number, dateRight: Date | number) => number;
    differenceInSeconds: (dateLeft: Date | number, dateRight: Date | number) => number;
}
export interface EvalContext {
    self: Self;
    dateFunctions: DateFunctions;
}
export type EvalExpr = <T = unknown>(expr: string, ctx?: Pick<EvalContext, 'self'>) => T | undefined;
/**
 * Creates a customized evaluation function with specific helper implementations.
 * This allows for dependency injection of helper functions, making the expression
 * evaluation more flexible and testable.
 *
 * @param other An object with full implementation of helper functions.
 * @returns A new evalExpr-like function that uses the provided helper functions.
 */
export declare function createEvalExpr(other: Omit<EvalContext, 'self'>): EvalExpr;
export declare function evaluate(node: ASTNode, ctx: EvalContext): unknown;
export declare function compare(left: any, right: any): number;
export declare function toBoolean(value: unknown): boolean;
