import { AutocompleteItemProps } from '@heroui/react';
import { AutocompleteProps } from '@heroui/react';
import { ButtonProps } from '@heroui/react';
import { CheckboxGroupProps } from '@heroui/react';
import { CheckboxProps } from '@heroui/react';
import { DatePickerProps } from '@heroui/react';
import { default as default_2 } from 'react';
import { InputOtpProps } from '@heroui/react';
import { InputProps } from '@heroui/react';
import { ModalProps } from '@heroui/react';
import { RadioGroupProps } from '@heroui/react';
import { RadioProps } from '@heroui/react';
import { ReactNode } from 'react';
import { RegisterOptions } from 'react-hook-form';
import { SelectItemProps } from '@heroui/react';
import { SelectProps } from '@heroui/react';
import { TableColumnProps } from '@heroui/react';
import { TableProps } from '@heroui/react';
import { TextAreaProps } from '@heroui/react';
import { TimeInputProps } from '@heroui/react';

declare interface ColumnFormat {
    value: string;
    row: any;
}

export declare interface ColumnsTableProps extends Omit<TableColumnProps<any>, "children"> {
    format?: ({ value, row }: ColumnFormat) => ReactNode;
    onFilter?: (value: string | number) => string;
    onOrder?: (value: string | number) => string | number;
}

export declare const DataTable: ({ hideFilterSearch, loading, isVirtualized, onSelect, selectionMode, inputSearch, hideRowsPerPageOptions, extraTopContent, cellClass, rows, columns, keyRow, localText, rowsPerPageOptions, ...props }: DataTableProps) => default_2.JSX.Element;

export declare interface DataTableProps extends TableProps {
    rows: any[];
    columns: ColumnsTableProps[];
    keyRow?: string;
    rowsPerPageOptions?: RowsPerPageTableProps;
    hideRowsPerPageOptions?: boolean;
    inputSearch?: InputProps;
    hideFilterSearch?: boolean;
    extraTopContent?: ReactNode;
    loading?: boolean;
    onSelect?: (row: any) => void;
    cellClass?: string;
    localText?: Partial<localeText>;
}

declare type Icolor = "danger" | "default" | "primary" | "secondary" | "success" | "warning" | undefined;

declare interface localeText {
    items: string[];
    emptyContent: string;
    paginateButtons: string[];
    rowsPerPage: string;
}

export declare function Modal({ display, onClose, children, title, cancelButton, acceptButton, ...props }: RHFNextUiModalProps): default_2.JSX.Element;

export declare const Panel: ({ title, color, children, collapse }: RHFNextUiPanelProps) => default_2.JSX.Element;

export declare const RHFAutocomplete: ({ onSelectionChange, defaultSelectedKey, name, data, rules, inputProps, ...props }: RHFAutocompleteProps) => default_2.JSX.Element;

declare interface RHFAutocompleteProps extends Omit<AutocompleteProps, "children" | "defaultItems" | "items" | "selectedKey" | "isInvalid" | "errorMessage"> {
    name: string;
    rules?: RegisterOptions;
    data: AutocompleteItemProps[];
}

export declare const RHFCheckbox: ({ rules, name, ...props }: RHFCheckboxProps) => default_2.JSX.Element;

export declare const RHFCheckboxGroup: ({ defaultValue, rules, name, data, ...props }: RHFCheckboxProps_2) => default_2.JSX.Element;

declare interface RHFCheckboxProps extends Omit<CheckboxProps, "isSelected" | "isInvalid" | "onChange"> {
    rules?: RegisterOptions;
    name: string;
}

declare interface RHFCheckboxProps_2 extends Omit<CheckboxGroupProps, "children" | "isInvalid"> {
    rules?: RegisterOptions;
    name: string;
    data: CheckboxProps[];
}

export declare const RHFDate: ({ name, rules, defaultValue, ...props }: RHFDateProps) => default_2.JSX.Element;

declare interface RHFDateProps extends Omit<DatePickerProps, "value" | "errorMessage" | "isInvalid"> {
    name: string;
    rules?: RegisterOptions;
}

export declare const RHFInput: ({ defaultValue, rules, name, classNames, ...props }: RHFInputProps) => default_2.JSX.Element;

export declare const RHFInputOtp: ({ defaultValue, rules, name, classNames, ...props }: RHFInputProps_2) => default_2.JSX.Element;

declare interface RHFInputProps extends Omit<InputProps, "errorMessage" | "isInvalid"> {
    name: string;
    rules?: RegisterOptions;
}

declare interface RHFInputProps_2 extends Omit<InputOtpProps, "errorMessage" | "isInvalid"> {
    name: string;
    rules?: RegisterOptions;
}

declare interface RHFNextUiModalProps extends Omit<ModalProps, "onOpenChange" | "isOpen"> {
    display: boolean;
    children: ReactNode;
    title?: string;
    onClose: () => void;
    cancelButton?: ButtonProps;
    acceptButton?: ButtonProps;
}

declare interface RHFNextUiPanelProps {
    title: string;
    children: ReactNode;
    color?: Icolor;
    collapse?: boolean;
}

export declare const RHFRadioGroup: ({ data, rules, name, defaultValue, ...props }: RHFRadioGroupProps) => default_2.JSX.Element;

declare interface RHFRadioGroupProps extends Omit<RadioGroupProps, "isInvalid" | "errorMessage"> {
    rules?: RegisterOptions;
    data: RadioProps[];
    name: string;
}

export declare const RHFSelect: ({ name, rules, data, defaultSelectedKeys, disabledKeys, ...props }: RHFSelectProps) => default_2.JSX.Element;

declare interface RHFSelectProps extends Omit<SelectProps, "children" | "items" | "selectedKeys" | "errorMessage" | "isInvalid"> {
    name: string;
    rules?: RegisterOptions;
    data: SelectItemProps[];
}

export declare const RHFTextArea: ({ defaultValue, rules, name, classNames, ...props }: RHFTextAreaProps) => default_2.JSX.Element;

declare interface RHFTextAreaProps extends Omit<TextAreaProps, "errorMessage" | "isInvalid"> {
    name: string;
    rules?: RegisterOptions;
}

export declare const RHFTime: ({ name, rules, defaultValue, ...props }: RHFTimeProps) => default_2.JSX.Element;

declare interface RHFTimeProps extends Omit<TimeInputProps, "value" | "errorMessage" | "isInvalid"> {
    name: string;
    rules?: RegisterOptions;
}

declare interface RowsPerPageTableProps {
    default: number;
    options: number[];
}

export declare interface SkeletonTableProps {
    size: number;
    columns: ColumnsTableProps[];
}

export { }
