import { z } from 'zod';
declare const ExemptionPatternSchema: z.ZodObject<{
    count: z.ZodNumber;
    sources: z.ZodArray<z.ZodEnum<["shield", "bot"]>, "many">;
    lastSeenAt: z.ZodString;
    sampleMessages: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    count: number;
    sources: ("shield" | "bot")[];
    lastSeenAt: string;
    sampleMessages: string[];
}, {
    count: number;
    sources: ("shield" | "bot")[];
    lastSeenAt: string;
    sampleMessages: string[];
}>;
export declare const ExemptionLocalSchema: z.ZodObject<{
    patterns: z.ZodRecord<z.ZodString, z.ZodObject<{
        count: z.ZodNumber;
        sources: z.ZodArray<z.ZodEnum<["shield", "bot"]>, "many">;
        lastSeenAt: z.ZodString;
        sampleMessages: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        count: number;
        sources: ("shield" | "bot")[];
        lastSeenAt: string;
        sampleMessages: string[];
    }, {
        count: number;
        sources: ("shield" | "bot")[];
        lastSeenAt: string;
        sampleMessages: string[];
    }>>;
}, "strip", z.ZodTypeAny, {
    patterns: Record<string, {
        count: number;
        sources: ("shield" | "bot")[];
        lastSeenAt: string;
        sampleMessages: string[];
    }>;
}, {
    patterns: Record<string, {
        count: number;
        sources: ("shield" | "bot")[];
        lastSeenAt: string;
        sampleMessages: string[];
    }>;
}>;
export type ExemptionLocal = z.infer<typeof ExemptionLocalSchema>;
export type ExemptionPattern = z.infer<typeof ExemptionPatternSchema>;
declare const SharedExemptionEntrySchema: z.ZodObject<{
    patternId: z.ZodString;
    label: z.ZodString;
    reason: z.ZodString;
    promotedAt: z.ZodString;
    promotedBy: z.ZodEnum<["auto", "manual"]>;
    sampleMessages: z.ZodArray<z.ZodString, "many">;
}, "strip", z.ZodTypeAny, {
    label: string;
    reason: string;
    sampleMessages: string[];
    patternId: string;
    promotedAt: string;
    promotedBy: "manual" | "auto";
}, {
    label: string;
    reason: string;
    sampleMessages: string[];
    patternId: string;
    promotedAt: string;
    promotedBy: "manual" | "auto";
}>;
export declare const ExemptionSharedSchema: z.ZodObject<{
    version: z.ZodLiteral<1>;
    exemptions: z.ZodArray<z.ZodObject<{
        patternId: z.ZodString;
        label: z.ZodString;
        reason: z.ZodString;
        promotedAt: z.ZodString;
        promotedBy: z.ZodEnum<["auto", "manual"]>;
        sampleMessages: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        label: string;
        reason: string;
        sampleMessages: string[];
        patternId: string;
        promotedAt: string;
        promotedBy: "manual" | "auto";
    }, {
        label: string;
        reason: string;
        sampleMessages: string[];
        patternId: string;
        promotedAt: string;
        promotedBy: "manual" | "auto";
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    version: 1;
    exemptions: {
        label: string;
        reason: string;
        sampleMessages: string[];
        patternId: string;
        promotedAt: string;
        promotedBy: "manual" | "auto";
    }[];
}, {
    version: 1;
    exemptions: {
        label: string;
        reason: string;
        sampleMessages: string[];
        patternId: string;
        promotedAt: string;
        promotedBy: "manual" | "auto";
    }[];
}>;
export type ExemptionShared = z.infer<typeof ExemptionSharedSchema>;
export type SharedExemptionEntry = z.infer<typeof SharedExemptionEntrySchema>;
export declare const EMPTY_LOCAL: ExemptionLocal;
export declare const EMPTY_SHARED: ExemptionShared;
export declare const PROMOTION_THRESHOLD = 3;
export declare const LOCAL_FILE = "exemption-local.json";
export declare const SHARED_FILE = "exemptions.json";
export {};
//# sourceMappingURL=exemption-schema.d.ts.map