import { z } from 'zod';
import { ActivitySubtype, SendActivityFormData, StepErrors } from './types';
/**
 * Error messages for validation
 */
export declare const ERROR_MESSAGES: {
    readonly SUBTYPE_REQUIRED: "Campo obrigatório! Por favor, selecione uma opção para continuar.";
    readonly MODE_REQUIRED: "Campo obrigatório! Por favor, selecione o modo de prova para continuar.";
    readonly TITLE_REQUIRED: "Campo obrigatório! Por favor, preencha este campo para continuar.";
    readonly STUDENTS_REQUIRED: "Campo obrigatório! Por favor, selecione pelo menos um aluno para continuar.";
    readonly START_DATE_REQUIRED: "Campo obrigatório! Por favor, preencha este campo para continuar.";
    readonly FINAL_DATE_REQUIRED: "Campo obrigatório! Por favor, preencha este campo para continuar.";
    readonly FINAL_DATE_INVALID: "A data final deve ser maior ou igual à data inicial.";
};
/**
 * Zod schema for activity step (Step 1)
 */
export declare const activityStepSchema: z.ZodObject<{
    subtype: z.ZodEnum<{
        TAREFA: ActivitySubtype.TAREFA;
        TRABALHO: ActivitySubtype.TRABALHO;
        PROVA: ActivitySubtype.PROVA;
    }>;
    title: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
    notification: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Zod schema for recipient step (Step 2)
 */
export declare const recipientStepSchema: z.ZodObject<{
    students: z.ZodArray<z.ZodObject<{
        studentId: z.ZodString;
        userInstitutionId: z.ZodString;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Zod schema for deadline step with date comparison refinement
 */
export declare const deadlineStepSchema: z.ZodObject<{
    startDate: z.ZodString;
    startTime: z.ZodDefault<z.ZodString>;
    finalDate: z.ZodString;
    finalTime: z.ZodDefault<z.ZodString>;
    canRetry: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>;
/**
 * Type inference from Zod schemas
 */
export type ActivityStepData = z.infer<typeof activityStepSchema>;
export type RecipientStepData = z.infer<typeof recipientStepSchema>;
export type DeadlineStepData = z.infer<typeof deadlineStepSchema>;
/**
 * Validates the activity step (Step 1) using Zod
 * @param data - Partial form data
 * @param options - Validation options
 * @param options.enableExamMode - When true, only validates title (exam mode has simplified form)
 * @returns StepErrors object with any validation errors
 */
export declare function validateActivityStep(data: Partial<SendActivityFormData>, options?: {
    enableExamMode?: boolean;
}): StepErrors;
/**
 * Validates the recipient step (Step 2) using Zod
 * @param data - Partial form data
 * @returns StepErrors object with any validation errors
 */
export declare function validateRecipientStep(data: Partial<SendActivityFormData>): StepErrors;
/**
 * Validates the deadline step (Step 3) using Zod
 * @param data - Partial form data
 * @param options - Validation options
 * @param options.enableExamMode - When true, only validates startDate (exam date)
 * @returns StepErrors object with any validation errors
 */
export declare function validateDeadlineStep(data: Partial<SendActivityFormData>, options?: {
    enableExamMode?: boolean;
}): StepErrors;
/**
 * Validates a specific step
 * @param step - Step number (1, 2, or 3)
 * @param data - Partial form data
 * @param options - Validation options passed to step validators
 * @returns StepErrors object with any validation errors
 */
export declare function validateStep(step: number, data: Partial<SendActivityFormData>, options?: {
    enableExamMode?: boolean;
}): StepErrors;
/**
 * Checks if a specific step is valid
 * @param step - Step number (1, 2, or 3)
 * @param data - Partial form data
 * @param options - Validation options
 * @returns true if the step is valid
 */
export declare function isStepValid(step: number, data: Partial<SendActivityFormData>, options?: {
    enableExamMode?: boolean;
}): boolean;
/**
 * Checks if all steps are valid (form can be submitted)
 * @param data - Partial form data
 * @param options - Validation options
 * @returns true if all steps are valid
 */
export declare function isFormValid(data: Partial<SendActivityFormData>, options?: {
    enableExamMode?: boolean;
}): boolean;
//# sourceMappingURL=validation.d.ts.map