/**
 * Centralized Zod schemas for auth forms (signup, login, OTP).
 * Single source of truth for all validation rules per PRODUCT_PROTOCOLS.
 * Schemas are consumed by hooks (not components) to enforce clean layer separation.
 * Future SSO API validation (e.g. server-side field constraints) can extend these schemas.
 */
import { z } from 'zod';
/** Capitalize first letter of each word (PRODUCT_PROTOCOLS #25 – Naming conventions). */
export declare function capitalizeWords(value: string): string;
/**
 * Full name: required, min 3 chars, trim, capitalize each word (Protocol #1, #25; Edge case 9).
 */
export declare const fullNameSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
/**
 * Phone: required; accepts both legacy "countryCode-number" and direct numeric input.
 * Valid when the normalized phone digits length is between 7 and 15.
 */
export declare const phoneSchema: z.ZodString;
/** Optional country calling code, normalized to digits (e.g. `91`). */
export declare const countryCodeSchema: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
/**
 * Email: required, valid format, trim and lowercase before save (Edge case 10).
 */
export declare const emailSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
export declare const signupPhoneFormSchema: z.ZodObject<{
    fullName: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    phone: z.ZodString;
    countryCode: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
}, z.core.$strip>;
export declare const signupEmailFormSchema: z.ZodObject<{
    fullName: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
}, z.core.$strip>;
export declare const signupForeignFormSchema: z.ZodObject<{
    fullName: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    phone: z.ZodString;
    countryCode: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
}, z.core.$strip>;
export declare const signupSchemas: {
    readonly phone: z.ZodObject<{
        fullName: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
        phone: z.ZodString;
        countryCode: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
    }, z.core.$strip>;
    readonly email: z.ZodObject<{
        fullName: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
        email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    }, z.core.$strip>;
    readonly foreign: z.ZodObject<{
        fullName: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
        email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
        phone: z.ZodString;
        countryCode: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
    }, z.core.$strip>;
};
/**
 * Phone validation per PRODUCT_PROTOCOLS #2, #5 and edge cases 3–5.
 */
export declare const loginPhoneFormSchema: z.ZodObject<{
    phone: z.ZodString;
    countryCode: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
}, z.core.$strip>;
/**
 * Email validation: trim and lowercase per edge case 10.
 */
export declare const loginEmailFormSchema: z.ZodObject<{
    email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
}, z.core.$strip>;
export declare const loginSchemas: {
    readonly phone: z.ZodObject<{
        phone: z.ZodString;
        countryCode: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
    }, z.core.$strip>;
    readonly email: z.ZodObject<{
        email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    }, z.core.$strip>;
};
export declare const OTP_LENGTH = 6;
/** Resend cooldown: 60s for phone OTP, 2 min for email OTP (per design). */
export declare const RESEND_COOLDOWN_PHONE_SECONDS = 60;
export declare const RESEND_COOLDOWN_EMAIL_SECONDS = 120;
export type OtpVerificationMode = 'phone' | 'email';
export declare function getResendCooldownSeconds(mode: OtpVerificationMode): number;
export declare const otpFormSchema: z.ZodObject<{
    otp: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
