import { RuleOptions } from '../rules/useFieldValidation';
type builtInDateRuleType = 'noWeekend' | 'noBeforeToday' | 'notAfterToday' | 'notBeforeDate' | 'notAfterDate' | 'dateExact' | 'isHolidayDay';
type BuiltInNumberRuleType = 'min' | 'max';
type BuiltInStringRuleType = 'minLength' | 'maxLength' | 'exactLength' | 'email' | 'matchPattern';
type BuiltInRuleGeneralType = 'required' | 'custom';
export type BuiltInRuleType = BuiltInRuleGeneralType | BuiltInNumberRuleType | BuiltInStringRuleType | builtInDateRuleType;
interface CustomValidationRule {
    type: 'custom';
    options: RuleOptions & {
        validate: NonNullable<RuleOptions['validate']>;
    };
}
interface StandardValidationRule {
    type: BuiltInRuleType | ({} & string);
    options: RuleOptions;
}
export type ValidationRule = CustomValidationRule | StandardValidationRule;
export interface ValidationOptions {
    showSuccessMessages?: boolean;
    disableErrorHandling?: boolean;
    fieldIdentifier?: string;
}
export interface ValidationState {
    errors: string[];
    warnings: string[];
    successes: string[];
}
export interface ValidationResult {
    hasError: boolean;
    hasWarning: boolean;
    hasSuccess: boolean;
    state: ValidationState;
}
/**
 * Composable pour gérer la validation des champs de formulaire
 * @param options Options de configuration de la validation
 * @returns Un objet contenant les états et méthodes de validation
 */
export declare function useValidation(options?: ValidationOptions): {
    errors: import('vue').Ref<string[], string[]>;
    warnings: import('vue').Ref<string[], string[]>;
    successes: import('vue').Ref<string[], string[]>;
    displaySuccesses: import('vue').ComputedRef<string[]>;
    hasError: import('vue').ComputedRef<boolean>;
    hasWarning: import('vue').ComputedRef<boolean>;
    hasSuccess: import('vue').ComputedRef<boolean>;
    validateField: (value: unknown, rules?: ValidationRule[], warningRules?: ValidationRule[], successRules?: ValidationRule[]) => ValidationResult | Promise<ValidationResult>;
    validateOnSubmit: () => boolean;
    clearValidation: () => void;
};
export {};
