/**
 * Copyright (c) Adaptavist, Inc.
 */
import { GenericProps } from '@/src/utilities';
import { BaseSyntheticEvent, ReactNode } from 'react';
export interface IInputNumberOnChangeArgs {
    type: 'number' | 'search' | 'button';
    name: string | null;
    value: number | string;
}
export declare type EventType = BaseSyntheticEvent | React.ChangeEvent<HTMLInputElement> | IInputNumberOnChangeArgs;
export interface IInput extends React.InputHTMLAttributes<HTMLInputElement>, GenericProps {
    /**
     * Prop controlling the text in the prefix tab
     */
    prefixTabTitle?: React.ReactNode;
    /**
     * Prop controlling the prefix of the input
     */
    inputPrefix?: React.ReactNode;
    /**
     * Prop controlling the suffix of the input
     */
    inputSuffix?: React.ReactNode;
    /**
     * Prop controlling the icon to display at the end of the input
     */
    inputIcon?: React.ReactNode;
    /**
     * Prop controlling if the error state should be displayed
     */
    error?: boolean;
    /**
     * The function to run on change of the input
     */
    onChange?(this: void, event: EventType): void;
}
export interface ITextArea extends React.TextareaHTMLAttributes<HTMLTextAreaElement>, GenericProps {
    /**
     * Prop controlling if the error state should be displayed
     */
    error?: boolean;
    /**
     * Prop controlling the max number of characters allowed
     */
    maxLength?: number;
}
export declare type IInputLabel = React.HtmlHTMLAttributes<HTMLLabelElement>;
export interface IAddons extends IInput, GenericProps {
    /**
     * Prop controlling if the inuput is disabled
     */
    disabled?: boolean;
    /**
     * Prop controlling if the error state should be displayed
     */
    error?: boolean;
    /**
     * Prop controlling if the prefix tab is present in the input
     */
    prefixTabPresent?: boolean;
    /**
     * Prop controlling if the input icon is present in the input
     */
    iconPresent?: boolean;
    /**
     * Prop controlling the type of input
     */
    type?: 'number' | 'search' | 'button';
}
export interface IErrorMessageBox extends GenericProps {
    /**
     * Prop controlling the children displayed inside the error message
     */
    children?: ReactNode;
}
