import { Hash, IPatternOptions, ICondition } from './interfaces'; export declare enum constraintType { comparison = 0, equality = 1, from = 2, hash = 3, inequality = 4, object = 5, reference = 6, reference_equality = 7, reference_gt = 8, reference_gte = 9, reference_inequality = 10, reference_lt = 11, reference_lte = 12, true = 13 } export interface IConstraint { tp: constraintType; a: string; assert?(fact: any, fh?: any): any; equal?(constraint: IConstraint): boolean; } export interface ITrueConstraint extends IConstraint { } export declare function create_true_constraint(alias: string): ITrueConstraint; export interface IEqualityConstraint extends IConstraint { options: IPatternOptions; constraint: ICondition; } export declare function create_equality_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IEqualityConstraint; export interface IInequalityConstraint extends IEqualityConstraint { } export declare function create_inequality_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IInequalityConstraint; export interface IComparisonConstraint extends IEqualityConstraint { } export declare function create_comparison_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IComparisonConstraint; export interface IObjectConstraint extends IConstraint { cls?: string; constraint?: any; } export declare function create_object_constraint(alias: string, cls: string, constraint: any): IObjectConstraint; export interface IHashConstraint extends IConstraint { constraint: Hash; } export declare function create_hash_constraint(alias: string, constraint: Hash): IHashConstraint; export interface IFromConstraint extends IConstraint { options: IPatternOptions; constraint: Function; condition: ICondition; } export declare function create_from_constraint(alias: string, condition: ICondition, options?: IPatternOptions): IFromConstraint; export interface IReferenceConstraint extends IConstraint { op: string; constraint: ICondition; merge(that: IReferenceConstraint): IReferenceConstraint; getIndexableProperties(): string[]; vars: string[]; options: IPatternOptions; } export declare function is_instance_of_equality(constraint: IConstraint): boolean; export declare function is_instance_of_hash(constraint: IConstraint): boolean; export declare function is_instance_of_reference_constraint(constraint: IConstraint): boolean; export declare function is_instance_of_reference_eq_constraint(constraint: IConstraint): boolean; export declare function create_reference_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceConstraint; export interface IReferenceEqualityConstraint extends IReferenceConstraint { getIndexableProperties(): string[]; } export declare function create_reference_equality_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceEqualityConstraint; export interface IReferenceInequalityConstraint extends IReferenceConstraint { } export declare function create_reference_inequality_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceInequalityConstraint; export interface IReferenceGTConstraint extends IReferenceConstraint { } export declare function create_reference_gt_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceGTConstraint; export interface IReferenceGTEConstraint extends IReferenceConstraint { } export declare function create_reference_gte_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceGTEConstraint; export interface IReferenceLTConstraint extends IReferenceConstraint { } export declare function create_reference_lt_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceLTConstraint; export interface IReferenceLTEConstraint extends IReferenceConstraint { } export declare function create_reference_lte_constraint(alias: string, constraint: ICondition, options?: IPatternOptions): IReferenceLTEConstraint;