import { Key } from 'react';
import { NanoscopicProgressProps } from '../../atoms/NanoscopicProgress';
import type { ColumnsOf, KeyOf, SortDescriptor, TableLoadingStatus } from './types';
import type * as types from './types';
export type { TableLoadingStatus };
export interface TableProps<TRow extends object, TColumnKey extends string | number = KeyOf<TRow>, TRowKey = Key> {
    'aria-label'?: string;
    'aria-labelledby'?: string;
    rows: TRow[];
    columns: ColumnsOf<TRow, TColumnKey>;
    getKey: (row: TRow) => TRowKey;
    /** keys of disabled rows */
    disabledKeys?: TRowKey[];
    /**
     * Keys of initial pinned columns.
     * Pinning is enabled if this is an array (can be empty).
     * Pinning is disabled if this is undefined or null.
     */
    initialPinnedColumns?: null | undefined | TColumnKey[];
    sortDescriptor?: SortDescriptor<TColumnKey>;
    onSortChange?: (sortDescriptor: SortDescriptor<TColumnKey>) => void;
    /** @default idle */
    status?: TableLoadingStatus;
    /**
     * number of rows to render in skeleton loading state
     * @default 10
     */
    skeletonCount?: number;
    progressProps?: NanoscopicProgressProps;
    className?: string;
    width?: '100%' | 'min-content';
    /**
     * @default { left: true, right: true }
     */
    scrollviewFade?: types.TableScrollviewFade;
}
export declare function Table<TRow extends object, TColumnKey extends string | number = KeyOf<TRow>, TRowKey = Key>(props: TableProps<TRow, TColumnKey, TRowKey>): import("theme-ui/jsx-runtime").JSX.Element;
export declare namespace Table {
    export { types as t };
}
