import { MantineSize } from '@mantine/core';
import { IArchbaseDataSourceBase } from '@archbase/data';
import { ArchbaseTreeNode } from '../list';
import { default as React, ReactNode } from 'react';
export interface ArchbaseTreeSelectProps<T, ID> {
    /** Fonte de dados onde será atribuido o valor selecionado (V1 ou V2) */
    dataSource?: IArchbaseDataSourceBase<T>;
    /** Campo onde deverá ser atribuido o valor selecionado na fonte de dados */
    dataField?: string;
    /** Indicador se o select está desabilitado */
    disabled?: boolean;
    /** Indicador se o select é somente leitura. Obs: usado em conjunto com o status da fonte de dados */
    readOnly?: boolean;
    /** Indicador se o select está em estado de carregamento */
    loading?: boolean;
    /** Indicador se o campo é obrigatório */
    required?: boolean;
    /** Valor inicial controlado */
    value?: any;
    /** Valor padrão inicial não controlado */
    defaultValue?: any;
    /** Tamanho do select */
    size?: MantineSize;
    /** Largura do select */
    width: string | number;
    /** Altura do select */
    height?: string | number;
    /** Largura do dropdown da árvore */
    widthTreeView?: string | number;
    /** Altura do dropdown da árvore */
    heightTreeView?: string | number;
    /** Ícone à esquerda do select */
    icon?: ReactNode;
    /** Texto sugestão do select */
    placeholder?: string;
    /** Título do select */
    label?: string;
    /** Descrição do select */
    description?: string;
    /** Último erro ocorrido no select */
    error?: string;
    /** Opções da árvore disponíveis para seleção */
    options: ArchbaseTreeNode[];
    /** Tipos de nós que podem ser selecionados */
    allowNodeSelectType?: string[];
    /** Função customizada para renderizar o componente selecionado */
    renderComponent?: (node: ArchbaseTreeNode) => ReactNode;
    /** Função que retorna o label de um nó */
    getOptionLabel?: (node: ArchbaseTreeNode) => string;
    /** Função que retorna o valor de um nó */
    getOptionValue?: (node: ArchbaseTreeNode) => any;
    /** Evento quando um valor é selecionado */
    onSelectValue?: (node: ArchbaseTreeNode) => void;
    /** Evento quando o select recebe foco */
    onFocusEnter?: (event: React.FocusEvent<HTMLButtonElement>) => void;
    /** Evento quando o foco sai do select */
    onFocusExit?: (event: React.FocusEvent<HTMLButtonElement>) => void;
    /** Evento quando o popover é aberto */
    onDropdownOpen?: () => void;
    /** Evento quando o popover é fechado */
    onDropdownClose?: () => void;
}
export declare const ArchbaseTreeSelect: <T, ID>(props: ArchbaseTreeSelectProps<T, ID> & {
    ref?: React.ForwardedRef<HTMLButtonElement>;
}) => React.ReactElement;
