import { z, type ZodType } from 'zod';
interface FilterResult<T> {
    valid: T[];
    rejected: {
        rawData: unknown;
        issues: z.core.$ZodIssue[];
    }[];
}
export interface Guard<T> {
    isValid: (data: unknown) => data is T;
    parse: (data: unknown) => T;
    safeParse: (data: unknown) => z.ZodSafeParseResult<T>;
    isValidCollection: (data: unknown) => data is T[];
    parseCollection: (data: unknown) => T[];
    safeParseCollection: (data: unknown) => z.ZodSafeParseResult<T[]>;
    filterCollection: (items: unknown[]) => FilterResult<T>;
}
/**
 * Creates a Guard around a Zod schema.
 *
 * @param schema      Zod schema to validate against.
 * @param instigator  Label included in thrown error messages — gives callers
 *                    a clear hint about which guard rejected their input.
 *                    Use the entity / schema name (e.g. 'reviewAction').
 */
export declare function createGuard<T>(schema: ZodType<T>, instigator: string): Guard<T>;
export {};
//# sourceMappingURL=guard.base.d.ts.map