/**
 * PHP 8 compatibility check (M3) — pre-merge gating tool.
 *
 * Scans a PHP codebase for breaking changes between PHP 7.x and 8.0/8.1/8.2.
 * Designed to be run as the last gate before a team merges a PHP 8 upgrade
 * branch into main. The output groups findings into:
 *
 *   - blockers (BREAKING_8_0): code that won't run at all on PHP 8.0
 *   - deprecations (DEPRECATED_8_1, DEPRECATED_8_2): code that runs but
 *     emits warnings; noisy in prod logs
 *   - yii_version_warning: Yii < 2.0.49 has known PHP 8 bugs; refuse to
 *     ship PHP 8 without bumping the framework version
 *
 * The tool intentionally does NOT auto-fix anything — it's a gating
 * report, the team decides whether each finding is in scope for the
 * current merge or shipped as a follow-up.
 */
export type Php8Severity = "breaking_8_0" | "deprecated_8_1" | "deprecated_8_2";
export type Php8RuleId = "each-removed" | "create-function-removed" | "real-cast-removed" | "array-key-exists-on-object" | "spread-operator-on-string-keys" | "concatenation-precedence" | "ambiguous-ternary" | "core-fn-null-string-arg" | "dynamic-property-creation" | "utf8-encode-decode" | "set-current-locale-deprecated" | "money-format-removed" | "is-resource-on-closed";
export interface Php8RuleDef {
    id: Php8RuleId;
    severity: Php8Severity;
    description: string;
    fix: string;
    /** /g pattern; one finding per match. */
    pattern: RegExp;
}
export interface Php8Finding {
    rule_id: Php8RuleId;
    severity: Php8Severity;
    file: string;
    line: number;
    snippet: string;
    description: string;
    fix: string;
}
export interface Php8CompatReport {
    repo: string;
    scanned_files: number;
    total_findings: number;
    blocker_count: number;
    by_severity: Record<Php8Severity, number>;
    by_rule: Array<{
        rule_id: Php8RuleId;
        severity: Php8Severity;
        count: number;
        description: string;
        fix: string;
        sample_findings: Php8Finding[];
    }>;
    yii_version_warning: string | null;
    php_version_required: string | null;
    /** True iff at least one breaking_8_0 finding is present. */
    blocker_for_merge: boolean;
}
export declare function php8CompatCheck(repo: string, options?: {
    file_pattern?: string;
    max_samples_per_rule?: number;
    include_vendor?: boolean;
    rules?: Php8RuleId[];
}): Promise<Php8CompatReport>;
//# sourceMappingURL=php8-compat-tools.d.ts.map