import { FileMatcher } from "./FileMatcher";
import { Match } from "./match";
export type Needles = {
    regex: RegExp;
    otherRegexes: RegExp[];
    positive: string[];
    negative: string[];
};
export interface PolicyJson {
    description: string;
    filePattern: string | string[];
    ignoreFilePatterns?: string[];
    search: string | string[];
    baseline: number;
    hiddenFromOutput?: boolean;
}
export declare class Policy {
    name: string;
    description: string;
    baseline: number;
    hiddenFromOutput: boolean;
    ran: boolean;
    needles: Needles;
    ignoreFilePatterns: undefined | string[];
    filePattern: string[];
    search: string[];
    constructor(name: string, description: string, filePattern: string | string[], search: string | string[], baseline: number, ignoreFilePatterns?: string | string[], hiddenFromOutput?: boolean);
    toJson(): PolicyJson;
    isFileUnderPolicy(filePath: string): boolean;
    processFile(file: FileMatcher, onMatch: (match: Match, policy: this) => void): void;
    isCountAcceptable(matches: Match[]): boolean;
    isCountCinchable(matches: Match[]): boolean;
    static searchConfigToNeedles(search: string[]): Needles;
    static fromJson(name: string, obj: any): Policy;
}
