import React$1, { PropsWithChildren, FC, MutableRefObject, ReactNode, ChangeEventHandler } from 'react';
import { PerfarmToast } from '~/commons/types/toast';
import { DrawerProps } from 'antd';
import { CommonSize, CommonDescription, Colors } from '~/commons/types';
import { Props as Props$g } from '~/components/Tooltip/type';
import { Props as Props$i, GroupBase, MultiValue } from 'react-select';
import { Props as Props$h } from '~/components/Select/type';
import { Props as Props$j } from '~/components/TextField/type';
import { OwnProps as OwnProps$6 } from '~/components/InputRoot/type';
import { SwitchProps } from '@radix-ui/react-switch';
import { Align, Side } from '@radix-ui/react-popper/dist';
import { HtmlTextTags, FontSizes, FontWeight } from '~/commons/types/typography';

declare type ButtonColor = 'primary' | 'secondary' | 'error' | 'white' | 'black' | 'gray';
declare type ButtonSize = 'xsm' | 'xxsm' | 'sm' | 'md' | 'lg' | 'xl';
declare type ButtonVariant = 'contained' | 'outlined' | 'text';
interface Props$f extends PropsWithChildren {
    className?: string;
    color: ButtonColor;
    disabled?: boolean;
    fullWidth?: boolean;
    id?: string;
    onClick?: React.MouseEventHandler<HTMLButtonElement>;
    size?: ButtonSize;
    variant?: ButtonVariant;
}

declare const Button: FC<Props$f>;

interface OwnProps$5 {
    cellsMaxToShow?: number;
    id?: number;
    tableHeight?: string;
}
declare type Props$e = OwnProps$5 & PerfarmToast;

declare const CropChronogramsTable: FC<Props$e>;

declare type setOpen = (e: boolean) => void;
interface OwnProps$4 {
    className?: string;
    id?: string;
    isBodyChild?: boolean;
    open?: boolean;
    setOpen?: setOpen;
}
declare type Props$d = PropsWithChildren<OwnProps$4>;

declare const Dialog: FC<Props$d>;

declare type Props$c = DrawerProps;

declare const Drawer: FC<Props$c>;

interface OwnProps$3 {
    className?: string;
    elementId?: string;
    optionalDescription?: string;
    required?: boolean;
    size?: CommonSize;
    tooltipDescription?: Props$g['description'];
    tooltipIcon?: JSX.Element;
}
declare type Props$b = PropsWithChildren<OwnProps$3>;

declare const LabelField: FC<Props$b>;

interface Props$a<Data = any> extends Omit<Props$h<Data>, 'isMulti' | 'value' | 'onChange'> {
    onChange: Props$i<Data, true, GroupBase<Data>>['onChange'];
    value: MultiValue<Props$h<Data>['value']>;
}

declare const MultiSelect: FC<Props$a>;

interface Props$9 extends Omit<Props$j, 'type'> {
}

declare const NumberField: FC<Props$9>;

interface Option<Value = string | number> {
    isDisabled?: boolean;
    label: string;
    value: Value;
}
interface Props$8<Data = any> extends OwnProps$6 {
    autoFocus?: boolean;
    clearOnSelect?: boolean;
    disabled?: boolean;
    isLoading?: boolean;
    isMulti?: boolean;
    isSearchable?: boolean;
    menuIsOpen?: boolean;
    name: string;
    noOptionsMessage?: string;
    onChange: Props$i<Data, false, GroupBase<Data>>['onChange'];
    onMenuClose?: Props$i<Data, false, GroupBase<Data>>['onMenuClose'];
    onMenuOpen?: Props$i<Data, false, GroupBase<Data>>['onMenuOpen'];
    options: Option[];
    placeholder?: string;
    selectInputRef?: MutableRefObject<undefined>;
    value?: Option<Data>;
}

declare const Select: FC<Props$8>;

interface Props$7 extends PropsWithChildren {
}

declare const Spinner: FC<Props$7>;

interface Props$6 {
    checked: SwitchProps['checked'];
    className?: string;
    disabled?: boolean;
    id: string;
    label: string;
    onChange: SwitchProps['onCheckedChange'];
}

declare const Switch: FC<Props$6>;

interface OwnProps$2 {
    businessUnitId: string;
    isAggregated?: boolean;
    tableHeight?: string;
    tableId?: string;
    tableOuterHeight?: string;
}
declare type Props$5 = OwnProps$2 & PerfarmToast;

declare const Table: FC<Props$5>;

interface Props$4 extends PropsWithChildren {
    actions?: ReactNode;
    className?: string;
    subtitle?: CommonDescription;
    title: CommonDescription;
    tooltipDescription?: Props$g['description'];
}

declare const TableFilter: FC<Props$4>;

interface OwnProps$1 {
    maxLength?: number;
    name: string;
    onChange: ChangeEventHandler<HTMLTextAreaElement>;
    placeholder?: string;
    rows?: number;
    value?: string;
}
declare type Props$3 = OwnProps$6 & OwnProps$1;

declare const TextAreaField: FC<Props$3>;

declare type InputType = 'email' | 'password' | 'search' | 'tel' | 'text' | 'number' | 'url';
declare type Value = string | number;
interface OwnProps {
    maxLength?: number;
    name: string;
    onChange: ChangeEventHandler<HTMLInputElement>;
    placeholder?: string;
    type?: InputType;
    value?: Value;
}
declare type Props$2 = OwnProps$6 & OwnProps;

declare const TextField: FC<Props$2>;

declare type TooltipColor = 'primary' | 'secondary' | 'white' | 'black';
declare type TooltipMaxHeight = 'small' | 'medium' | 'large';
declare type TooltipAlign = Align;
declare type TooltipSide = Side;
interface TooltipProps {
    align?: TooltipAlign;
    color?: TooltipColor;
    delay?: number;
    description: string | JSX.Element;
    isBodyChild?: boolean;
    isOpen?: boolean;
    maxHeight?: TooltipMaxHeight;
    side?: TooltipSide;
}
declare type Props$1 = PropsWithChildren<TooltipProps>;

declare const Tooltip: FC<Props$1>;

interface Props extends PropsWithChildren {
    className?: string;
    color?: Colors;
    tag?: HtmlTextTags;
    variant?: FontSizes;
    weight?: FontWeight;
}

declare const Typography: React$1.NamedExoticComponent<Props>;

export { Button, CropChronogramsTable, Dialog, Drawer, LabelField, MultiSelect, NumberField, Select, Spinner, Switch, Table, TableFilter, TextAreaField, TextField, Tooltip, Typography };
