import { ClassDict, IEvaluatable, IJson, IJsonDump, Operator, Parent, ThingOrThingGetter, IReport } from './contracts';
export declare abstract class Logical implements IEvaluatable, IJson {
    private _parent;
    private _operators;
    private _reporter;
    static alias: string;
    constructor(_parent: Parent);
    static fromJson(json: IJsonDump, classDict: ClassDict, parent: Parent): Logical;
    getParent(): Parent;
    getOperators(): Operator[];
    getOperatorsTree(): Operator[];
    add(operator: Operator): Operator;
    clear(): void;
    getAlias(): string;
    getReport(): IReport;
    resetReport(): void;
    asJson(): IJsonDump;
    evaluate<T>(obj: ThingOrThingGetter<T>): boolean;
}
export declare class LogicalAnd extends Logical {
    static alias: string;
}
export declare class LogicalOr extends Logical {
    static alias: string;
}
export declare class LogicalNot extends Logical {
    static alias: string;
}
