import { Specification } from "../specification/specification";
import { ProjectedResult } from "../storage";
import { SpecificationListener } from "../observable/observable";
export type AddListenerFn = (specification: Specification, onResult: (results: ProjectedResult[]) => Promise<void>) => SpecificationListener;
export type RemoveListenerFn = (listener: SpecificationListener) => void;
export declare class InverseSpecificationEngine {
    private readonly addListener;
    private readonly removeListener;
    constructor(addListener: AddListenerFn, removeListener: RemoveListenerFn);
    addSpecificationListener(specification: Specification, onResult: (results: ProjectedResult[]) => Promise<void>): SpecificationListener;
    removeSpecificationListener(listener: SpecificationListener): void;
}
//# sourceMappingURL=inverse-specification-engine.d.ts.map