import { AllowlistEntry } from './allowlist';
/**
 * The list of supported patterns useable in ConformancePatternRule. The
 * patterns whose name match JSConformance patterns should behave similarly (see
 * https://github.com/google/closure-compiler/wiki/JS-Conformance-Framework)
 */
export declare enum PatternKind {
    /** Ban use of fully distinguished names. */
    BANNED_NAME = "banned-name",
    /** Ban use of instance properties */
    BANNED_PROPERTY = "banned-property",
    /**
     * Ban instance property, like BANNED_PROPERTY but where reads of the
     * property are allowed.
     */
    BANNED_PROPERTY_WRITE = "banned-property-write",
    /**
     * Ban instance property write unless the property is assigned a constant
     * literal.
     */
    BANNED_PROPERTY_NON_CONSTANT_WRITE = "banned-property-non-constant-write"
}
/**
 * A config for `PatternEngine`.
 */
export interface PatternEngineConfig {
    /**
     * Values have a pattern-specific syntax.
     *
     * TODO(rjamet): We'll document them, but for now see each patternKind's
     * tests for examples.
     */
    values: string[];
    /** The error code assigned to this pattern. */
    errorCode: number;
    /** The error message this pattern will create. */
    errorMessage: string;
    /** A list of allowlist blocks. */
    allowlistEntries?: AllowlistEntry[];
}
/**
 * A config for `ConformancePatternRule`.
 */
export interface PatternRuleConfig extends PatternEngineConfig {
    kind: PatternKind;
    /**
     * An optional name for that rule, which will be the rule's `ruleName`.
     * Should be lower-dashed-case.
     */
    name?: string;
}
