import { ValidationRule as SyValidationRule } from '../validation/useValidation';
import { Ref } from 'vue';
import { ValidationRule as VuetifyValidationRule } from 'vuetify';
export type { VuetifyValidationRule };
export type { SyValidationRule as ValidationRule };
export interface FieldValidationProps {
    customRules?: SyValidationRule[];
    customSuccessRules?: SyValidationRule[];
    customWarningRules?: SyValidationRule[];
    disableErrorHandling?: boolean;
    disabled?: boolean;
    errorMessages?: string[] | null;
    hasError?: boolean;
    hasSuccess?: boolean;
    hasWarning?: boolean;
    isValidateOnBlur?: boolean;
    label?: string;
    maxErrors?: number;
    modelValue?: unknown;
    readonly?: boolean;
    required?: boolean;
    rules?: VuetifyValidationRule[];
    showSuccessMessages?: boolean;
    successMessages?: string[] | null;
    useVuetifyValidation?: boolean;
    warningMessages?: string[] | null;
}
/**
 * Point d'entrée de la validation pour les composants de champ.
 * Gère à la fois la validation native Vuetify (si useVuetifyValidation vaut true)
 * et la validation custom Synapse (si customRules/customWarningRules/customSuccessRules sont fournis).
 * customRules correspond aux règles d'erreur bloquantes.
 * errorMessages/warningMessages/successMessages sont des messages externes injectés par le parent
 * et ne déclenchent aucun calcul de validation.
 * Expose aussi une interface unifiée pour les erreurs, avertissements, succès et la validation à la demande.
 */
export declare const validationPropsDefaults: {
    readonly: boolean;
    disabled: boolean;
    required: boolean;
    isValidateOnBlur: boolean;
    showSuccessMessages: boolean;
    disableErrorHandling: boolean;
    customRules: () => never[];
    customWarningRules: () => never[];
    customSuccessRules: () => never[];
    errorMessages: null;
    warningMessages: null;
    successMessages: null;
    useVuetifyValidation: boolean;
    hasError: boolean;
    hasWarning: boolean;
    hasSuccess: boolean;
    maxErrors: number;
};
export declare function useValidation(params: {
    modelValue: Ref<unknown>;
    readonly: Ref<boolean>;
    disabled: Ref<boolean>;
    required: Ref<boolean>;
    isValidateOnBlur: Ref<boolean>;
    showSuccessMessages: Ref<boolean>;
    disableErrorHandling: Ref<boolean>;
    label: Ref<string | undefined>;
    focused: Ref<boolean>;
    errorMessages?: Ref<string[] | null | undefined>;
    warningMessages?: Ref<string[] | null | undefined>;
    successMessages?: Ref<string[] | null | undefined>;
    hasErrorProp?: Ref<boolean>;
    hasWarningProp?: Ref<boolean>;
    hasSuccessProp?: Ref<boolean>;
} & ({
    useVuetifyValidation: true;
    rules: Ref<VuetifyValidationRule[] | undefined>;
    customRules?: never;
    customWarningRules?: never;
    customSuccessRules?: never;
    maxErrors?: Ref<number>;
} | {
    useVuetifyValidation: false;
    customRules: Ref<SyValidationRule[]>;
    customWarningRules?: Ref<SyValidationRule[]>;
    customSuccessRules?: Ref<SyValidationRule[]>;
    rules?: never;
} | {
    useVuetifyValidation: Ref<boolean>;
    customRules: Ref<SyValidationRule[]>;
    customWarningRules?: Ref<SyValidationRule[]>;
    customSuccessRules?: Ref<SyValidationRule[]>;
    rules: Ref<VuetifyValidationRule[] | undefined>;
    maxErrors?: Ref<number>;
})): {
    errors: Ref<string[], string[]>;
    warnings: Ref<string[], string[]>;
    successes: Ref<string[], string[]>;
    hasError: import('vue').ComputedRef<boolean>;
    hasWarning: import('vue').ComputedRef<boolean>;
    hasSuccess: import('vue').ComputedRef<boolean>;
    validate: () => Promise<boolean>;
    clearValidation: () => void;
} | {
    errors: import('vue').ComputedRef<string[]>;
    warnings: import('vue').ComputedRef<string[]>;
    successes: import('vue').ComputedRef<string[]>;
    hasError: import('vue').ComputedRef<boolean | undefined>;
    hasWarning: import('vue').ComputedRef<boolean | undefined>;
    hasSuccess: import('vue').ComputedRef<boolean>;
    validate: () => Promise<boolean>;
    clearValidation: () => void;
};
