type ValidationRule = {
    rule: (value: any, data?: any) => boolean | string | Promise<boolean | string>;
    message: string;
    validateIf?: (data: any) => boolean;
};
type FormData = Record<string, any>;
interface Props {
    validateOn?: 'blur' | 'input' | 'submit' | 'manual';
    validateAllOnSubmit?: boolean;
    showAllErrors?: boolean;
    debounce?: number;
    scrollToError?: boolean;
    scrollOffset?: number;
    focusFirstError?: boolean;
    onvalid?: (event: CustomEvent<{
        valid: boolean;
        data: FormData;
    }>) => void;
    oninvalid?: (event: CustomEvent<{
        errors: Record<string, string>;
        data: FormData;
    }>) => void;
    onsubmit?: (event: CustomEvent<{
        data: FormData;
        preventDefault: () => void;
    }>) => void;
    onfieldchange?: (event: CustomEvent<{
        field: string;
        value: any;
        valid: boolean | null;
        error: string | null;
    }>) => void;
    onfieldblur?: (event: CustomEvent<{
        field: string;
        value: any;
        valid: boolean | null;
        error: string | null;
    }>) => void;
    children?: import('svelte').Snippet<[
        {
            formData: FormData;
            formValid: boolean | null;
            isSubmitting: boolean;
            submitAttempted: boolean;
            onsubmit: (event: Event) => Promise<void>;
            onreset: () => void;
        }
    ]>;
}
declare const FormValidation: import("svelte").Component<Props, {
    validateField: (fieldId: string) => Promise<boolean>;
    validateAll: () => Promise<boolean>;
    handleSubmit: (event?: Event) => Promise<void>;
    resetForm: () => void;
    getFieldState: (fieldId: string) => {
        id: string;
        value: any;
        touched: boolean;
        dirty: boolean;
        valid: boolean | null;
        error: string | null;
        pending: boolean;
    } | null;
    getFormState: () => {
        valid: boolean | null;
        isSubmitting: boolean;
        submitAttempted: boolean;
        fields: Record<string, any>;
        values: {
            [x: string]: any;
        };
    };
    setFieldValue: (fieldId: string, value: any, validate?: boolean) => void;
    setFieldError: (fieldId: string, error: string | null) => void;
    setErrors: (errors: Record<string, string>) => void;
    setValues: (values: Record<string, any>) => void;
    registerField: (id: string, initialValue: any, rules: ValidationRule[] | undefined, validate: () => Promise<boolean>) => {
        update: (value: any) => void;
        blur: () => void;
        destroy: () => void;
    } | undefined;
    formData: FormData;
    formValid: boolean | null;
    isSubmitting: false;
    submitAttempted: false;
}, "">;
type FormValidation = ReturnType<typeof FormValidation>;
export default FormValidation;
//# sourceMappingURL=FormValidation.svelte.d.ts.map