import { default as React, ReactNode } from 'react';
import { MantineColor, MantineSize } from '@mantine/core';
import { ArchbaseDataSource } from '@archbase/data';
export interface ArchbaseTreeListColumn<T> {
    /** ID da coluna */
    id: string;
    /** Header da coluna */
    header: string;
    /** Accessor do campo */
    accessor: keyof T | ((row: T) => any);
    /** Largura da coluna */
    width?: number | string;
    /** Alinhamento */
    align?: 'left' | 'center' | 'right';
    /** Renderizador customizado */
    render?: (value: any, row: T, index: number) => ReactNode;
    /** Se é a coluna de árvore (com indent e expand) */
    isTreeColumn?: boolean;
}
export interface ArchbaseTreeListProps<T extends object, ID> {
    /** Dados da árvore */
    data?: T[];
    /** Fonte de dados */
    dataSource?: ArchbaseDataSource<T, ID>;
    /** Colunas */
    columns: ArchbaseTreeListColumn<T>[];
    /** Função para obter filhos de um item */
    getSubRows?: (row: T) => T[] | undefined;
    /** Campo que contém os filhos */
    childrenField?: string;
    /** Campo de ID único */
    idField?: keyof T;
    /** IDs expandidos (controlado) */
    expandedIds?: Set<any>;
    /** IDs expandidos por padrão */
    defaultExpandedIds?: Set<any>;
    /** Se deve expandir todos por padrão */
    defaultExpandAll?: boolean;
    /** Callback ao expandir/colapsar */
    onExpandChange?: (expandedIds: Set<any>) => void;
    /** Profundidade máxima */
    maxDepth?: number;
    /** Indentação por nível em pixels */
    indentSize?: number;
    /** Se deve mostrar linhas de conexão */
    showLines?: boolean;
    /** Se permite seleção */
    selectable?: boolean;
    /** Modo de seleção */
    selectionMode?: 'single' | 'multiple';
    /** IDs selecionados */
    selectedIds?: Set<any>;
    /** Callback ao selecionar */
    onSelectionChange?: (selectedIds: Set<any>) => void;
    /** Cor de destaque */
    highlightColor?: MantineColor;
    /** Altura da linha */
    rowHeight?: number;
    /** Altura máxima (scroll) */
    maxHeight?: number | string;
    /** Tamanho */
    size?: MantineSize;
    /** Se deve ter bordas */
    withBorder?: boolean;
    /** Se deve ter listras */
    striped?: boolean;
    /** Se deve destacar no hover */
    highlightOnHover?: boolean;
    /** Classe CSS */
    className?: string;
    /** Estilo */
    style?: React.CSSProperties;
}
export declare const ArchbaseTreeList: <T extends object = any, ID = string>(props: ArchbaseTreeListProps<T, ID> & {
    ref?: React.Ref<HTMLDivElement>;
}) => React.ReactElement;
