import React from "react";
import { Props as IconProps } from "../asorted/Icon";
import Text, { TextProps } from "../asorted/Text";
export interface Column<T> {
    /**
     * A function called to render each cell of the column.
     */
    render: (props: CellProps<T>) => React.ReactNode;
    /**
     * A valid grid template [value](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns#values).
     * This layout is applied to every cell of the column.
     * Default to "min-content" - the largest minimal content contribution of the grid item.
     */
    layout?: string;
    /**
     * A function called to render the header cell.
     * If omitted the rendered header element will be an empty div.
     */
    header?: () => React.ReactNode;
}
export interface CellProps<T> {
    /**
     * The cell element.
     */
    elt: T;
    /**
     * The row index.
     */
    rowIndex: number;
    /**
     * The column index.
     */
    columnIndex: number;
}
/**
 * A column which contains a single icon and that has a fixed width.
 */
declare function iconColumn<T>({ props, header, layout, }: {
    /**
     * An object containing the unerlying <Text /> wrapper props as well as
     * the "name" and "weight" props of the unerlying <Icon />.
     */
    props: (elt: T) => Pick<IconProps, "name" | "weight"> & TextProps;
    /**
     * An optional render function to display the column header.
     */
    header?: () => React.ReactNode;
    /**
     * The grid column layout, by default "min-content".
     */
    layout?: string;
}): Column<T>;
export { iconColumn as icon };
/**
 * A column that contains a title and a subtitle.
 */
declare function textColumn<T>({ title, subtitle, header, layout, titleProps, subtitleProps, }: {
    /**
     * An optional title.
     */
    title?: (elt: T) => React.ReactNode;
    /**
     * An optional subtitle.
     */
    subtitle?: (elt: T) => React.ReactNode;
    /**
     * An optional render function to display the column header.
     */
    header?: () => React.ReactNode;
    /**
     * The grid column layout, by default "auto".
     */
    layout?: string;
    /**
     * Optional extra props passed to the title <Text /> wrapper.
     */
    titleProps?: (elt: T) => Partial<React.ComponentProps<typeof Text>>;
    /**
     * Optional extra props passed to the subtitle <Text /> wrapper.
     */
    subtitleProps?: (elt: T) => Partial<React.ComponentProps<typeof Text>>;
}): Column<T>;
export { textColumn as text };
