import * as z from "zod";
/**
 * Schema for ZIP code validation
 *
 * Requirements:
 * - Must be a string containing exactly 5 digits
 * - No letters, special characters, or spaces allowed
 * - Error message provided for invalid input
 */
export declare const zipCodeSchema: z.ZodObject<{
    zipCode: z.ZodString;
}, "strip", z.ZodTypeAny, {
    zipCode: string;
}, {
    zipCode: string;
}>;
/**
 * Schema for project selection validation
 *
 * Each project must have:
 * - scope_id: A non-empty string identifying the type of project
 * - quantity: A number (0 or greater) representing how many units
 */
export declare const projectsSchema: z.ZodObject<{
    projects: z.ZodArray<z.ZodObject<{
        scope_id: z.ZodString;
        quantity: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        scope_id: string;
        quantity: number;
    }, {
        scope_id: string;
        quantity: number;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    projects: {
        scope_id: string;
        quantity: number;
    }[];
}, {
    projects: {
        scope_id: string;
        quantity: number;
    }[];
}>;
/**
 * Combined schema for the complete estimate form
 *
 * Combines the ZIP code and projects schemas into a single schema
 * for validating the complete form data before submission.
 */
export declare const estimateSchema: z.ZodObject<z.objectUtil.extendShape<{
    zipCode: z.ZodString;
}, {
    projects: z.ZodArray<z.ZodObject<{
        scope_id: z.ZodString;
        quantity: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        scope_id: string;
        quantity: number;
    }, {
        scope_id: string;
        quantity: number;
    }>, "many">;
}>, "strip", z.ZodTypeAny, {
    zipCode: string;
    projects: {
        scope_id: string;
        quantity: number;
    }[];
}, {
    zipCode: string;
    projects: {
        scope_id: string;
        quantity: number;
    }[];
}>;
export type ZipCodeFormData = z.infer<typeof zipCodeSchema>;
export type ProjectsFormData = z.infer<typeof projectsSchema>;
export type EstimateFormData = z.infer<typeof estimateSchema>;
