import { Graph } from '../../common/extraction';
import { Checkable, CheckOptions } from '../../common/fluentapi';
import { Rule } from '../assertion';
import { Violation } from '../../common/assertion';
import { MapFunction } from '../../common/projection';
export declare const projectSlices: (filename?: string) => SliceConditionBuilder;
export declare class SliceConditionBuilder {
    readonly graphProvider: GraphProvider;
    mapFunction: MapFunction;
    constructor(graphProvider: GraphProvider);
    definedBy: (pattern: string) => SliceConditionBuilder;
    should: () => PositiveConditionBuilder;
    shouldNot: () => NegativeSliceCondition;
}
export declare class NegativeSliceCondition implements Checkable {
    readonly sliceConditionBuilder: SliceConditionBuilder;
    private readonly forbiddenEdges;
    constructor(sliceConditionBuilder: SliceConditionBuilder, forbiddenEdges: Rule[]);
    containDependency: (from: string, to: string) => NegativeSliceCondition;
    check: () => Promise<Violation[]>;
}
export declare class PositiveConditionBuilder {
    readonly sliceConditionBuilder: SliceConditionBuilder;
    ignoreUnknownNodes: boolean;
    ignoreExternals: boolean;
    constructor(sliceConditionBuilder: SliceConditionBuilder);
    adhereToDiagram(diagram: string): PositiveSliceCondition;
    adhereToDiagramInFile(filename: string): PositiveSliceCondition;
    ignoringUnknownNodes(): PositiveConditionBuilder;
    ignoringExternalDependencies(): this;
}
export declare class PositiveSliceCondition implements Checkable {
    readonly positiveConditionBuilder: PositiveConditionBuilder;
    readonly diagram: {
        filename?: string;
        diagram?: string;
    };
    constructor(positiveConditionBuilder: PositiveConditionBuilder, diagram: {
        filename?: string;
        diagram?: string;
    });
    check(options?: CheckOptions): Promise<Violation[]>;
}
type GraphProvider = () => Promise<Graph>;
export declare const nxProjectSlices: (rootFolder?: string) => SliceConditionBuilder;
export {};
