import { Environment } from '@contember/binding';
import type { ComponentType, ReactElement, ReactNode } from 'react';
import type { DataGridCellPublicProps } from './DataGridCellPublicProps';
import type { DataGridColumnKey } from './DataGridColumnKey';
import type { DataGridFilterArtifact } from './DataGridFilterArtifact';
import type { DataGridHeaderCellPublicProps } from './DataGridHeaderCell';
import type { DataGridOrderDirection } from './DataGridOrderDirection';
import type { DataGridSetFilter } from './DataGridSetFilter';
import type { GetNewFilter } from './GetNewFilter';
import type { GetNewOrderBy } from './GetNewOrderBy';
export interface FilterRendererProps<FA extends DataGridFilterArtifact> {
    filter: FA;
    setFilter: DataGridSetFilter<FA>;
    environment: Environment;
}
export declare type DataGridColumnFiltering<FA extends DataGridFilterArtifact = DataGridFilterArtifact> = {
    enableFiltering: false;
} | {
    enableFiltering?: true;
    initialFilter?: FA;
    getNewFilter: GetNewFilter<FA>;
    emptyFilter: FA;
    filterRenderer: ComponentType<FilterRendererProps<FA>>;
};
export declare type DataGridColumnOrdering = {
    enableOrdering: false;
} | {
    enableOrdering?: true;
    initialOrder?: DataGridOrderDirection;
    getNewOrderBy: GetNewOrderBy;
};
export declare type DataGridColumnPublicProps = DataGridHeaderCellPublicProps & DataGridCellPublicProps & {
    columnKey?: string;
};
export declare type DataGridColumnProps<FA extends DataGridFilterArtifact = DataGridFilterArtifact> = DataGridColumnPublicProps & DataGridColumnFiltering<FA> & DataGridColumnOrdering & {
    children: ReactNode;
};
export declare type DataGridColumns = Map<DataGridColumnKey, DataGridColumnProps>;
export declare const DataGridColumn: <FA extends DataGridFilterArtifact = DataGridFilterArtifact>(props: DataGridColumnProps<FA>) => ReactElement;
//# sourceMappingURL=DataGridColumn.d.ts.map