export type LintSeverity = "error" | "warning" | "info";
export type LintRuleId = "schema-invalid" | "track-overlap" | "missing-asset" | "dangling-segment-id" | "orphan-clip" | "unsupported-type-version";
export interface LintFinding {
    severity: LintSeverity;
    ruleId: LintRuleId;
    message: string;
    /** Free-form pointer into the composition tree (e.g. "tracks[0].clips[2]"). */
    locator?: string;
}
export interface LintOptions {
    /** Absolute workspace path — used for missing-asset existence checks. */
    workDir?: string;
}
export interface LintReport {
    findings: LintFinding[];
    /** Convenience counters. */
    counts: Record<LintSeverity, number>;
}
export declare function lintComposition(input: unknown, opts?: LintOptions): LintReport;
/** Exit code per `contracts/error-codes.md` H1 additions:
 *    0 clean · 5 warnings only · 6 errors */
export declare function exitCodeFor(report: LintReport): 0 | 5 | 6;
//# sourceMappingURL=lint.d.ts.map