import { InputProps } from '../../components/input/input.interface';
import { FieldType, FormFieldOptions, FormFieldType } from './Field.interface';
/**
 * A model to represent a field in a form.
 */
export declare class Field {
    /**
     * The id of the field. It must be unique for the form.
     */
    id: string;
    /**
     * The value of the field.
     */
    value: string | undefined;
    /**
     * The type of the field.
     * @default 'text'
     */
    type: FormFieldType;
    /**
     * Options for the field if the field is of type `option`.
     */
    options?: FormFieldOptions;
    /**
     * The prop options for the input component.
     */
    input?: Partial<InputProps>;
    /**
     * A function to validate the value of the field.
     * @optional Defaults will be used if not provided.
     */
    validation?: (value?: string) => boolean;
    constructor(props: FieldType);
    /**
     * Whether the field is valid or not.
     */
    get valid(): boolean;
    /**
     * Sets the value of the field.
     * @param value the value to set the field to
     */
    set: (value?: string) => void;
    /**
     * Sets the input to be disabled
     * @param disabled
     */
    setDisabled: (disabled: boolean) => void;
    /**
     * Sets the input to be required
     * @param required
     */
    setRequired: (required: boolean) => void;
    /**
     * Sets the min value of input
     * *Only applies to number, date, input types*
     * @param min
     */
    setMin: (min: string) => void;
    /**
     * Sets the max value of input
     * *Only applies to number, date, input types*
     * @param min
     */
    setMax: (max: string) => void;
    /**
     * Clears the value of the field.
     */
    clear: () => void;
    /**
     * Get the field as a plain object.
     * @returns the field as a plain object
     */
    obj: () => FieldType;
}
