import { ReactNode } from 'react';
import { HTMLChakraProps, SlotRecipeProps, UnstyledProp } from '@chakra-ui/react';
import { OmitInternalProps } from '../../type-utils/omit-props';
type FieldErrorsRecipeProps = SlotRecipeProps<"fieldErrors"> & UnstyledProp;
export type FieldErrorsRootSlotProps = OmitInternalProps<HTMLChakraProps<"div", FieldErrorsRecipeProps>>;
export type FieldErrorsMessageSlotProps = HTMLChakraProps<"div">;
export type FieldErrorsData = Record<string, boolean>;
export type TErrorRenderer = (key: string, error?: boolean) => ReactNode;
export declare const FieldErrorTypes: {
    readonly MISSING: "missing";
    readonly INVALID: "invalid";
    readonly EMPTY: "empty";
    readonly MIN_LENGTH: "min";
    readonly MAX_LENGTH: "max";
    readonly FORMAT: "format";
    readonly DUPLICATE: "duplicate";
    readonly NEGATIVE: "negative";
    readonly FRACTIONS: "fractions";
    readonly BELOW_MIN: "belowMin";
    readonly ABOVE_MAX: "aboveMax";
    readonly OUT_OF_RANGE: "outOfRange";
    readonly INVALID_FROM_SERVER: "invalidFromServer";
    readonly NOT_FOUND: "notFound";
    readonly BLOCKED: "blocked";
};
export type TFieldErrorTypes = (typeof FieldErrorTypes)[keyof typeof FieldErrorTypes];
export type FieldErrorsProps = FieldErrorsRootSlotProps & {
    /**
     * Object mapping error types to boolean values indicating presence
     */
    errors?: FieldErrorsData;
    /**
     * Whether the error messages are visible
     * @default true
     */
    isVisible?: boolean;
    /**
     * Custom render function for error messages
     */
    renderError?: TErrorRenderer;
    /**
     * Default render function for error messages when no custom renderer is provided
     */
    renderDefaultError?: TErrorRenderer;
    /**
     * Custom message overrides for specific error types
     */
    customMessages?: {
        /** Message for missing field error */
        missing?: ReactNode;
        /** Message for invalid field error */
        invalid?: ReactNode;
        /** Message for empty field error */
        empty?: ReactNode;
        /** Message for minimum length error */
        min?: ReactNode;
        /** Message for maximum length error */
        max?: ReactNode;
        /** Message for format error */
        format?: ReactNode;
        /** Message for duplicate value error */
        duplicate?: ReactNode;
        /** Message for negative value error */
        negative?: ReactNode;
        /** Message for fractional value error */
        fractions?: ReactNode;
        /** Message for below minimum value error */
        belowMin?: ReactNode;
        /** Message for above maximum value error */
        aboveMax?: ReactNode;
        /** Message for out of range error */
        outOfRange?: ReactNode;
        /** Message for invalid from server error */
        invalidFromServer?: ReactNode;
        /** Message for not found error */
        notFound?: ReactNode;
        /** Message for blocked error */
        blocked?: ReactNode;
    };
};
export {};
