import { default as React } from 'react';
import { TableRpcInputSelect, TableRpc, TableRpcResultSelectRecord } from '@kottster/common';
import { TableColumn } from './table-row';
import { RecordModalProps } from './record-modal/RecordModal';
export type TableColumnTransformer = (column: TableColumn) => TableColumn;
export interface TableProps {
    pageSettingsKeyPrefix?: string;
    tableRpc: TableRpc;
    columns?: TableColumn[];
    /**
     * Function to transform all columns.
     * Executes after columns are auto-generated or provided via the columns prop.
     * @param columns - The current array of column definitions
     * @returns A new array of transformed column definitions
     */
    columnTransformer?: (columns: TableColumn[]) => TableColumn[];
    /**
     * Object with column keys as properties and column overrides as values.
     * Use this to override specific properties of individual columns.
     */
    columnOverrides?: Record<string, TableColumn | TableColumnTransformer>;
    bordered?: boolean;
    form?: {
        width?: RecordModalProps['width'];
        fields?: RecordModalProps['fields'];
        fieldTransformer?: RecordModalProps['fieldTransformer'];
        fieldOverrides?: RecordModalProps['fieldOverrides'];
    };
    withSelection?: boolean;
    selectedPrimeryKeyValues?: string[];
    onRecordSelect?: (record: TableRpcResultSelectRecord) => void;
    getByForeignRecord?: TableRpcInputSelect['getByForeignRecord'];
}
declare function Table({ pageSettingsKeyPrefix, tableRpc, columns: columnsProp, columnOverrides, columnTransformer, bordered, form, withSelection, selectedPrimeryKeyValues, onRecordSelect, getByForeignRecord, }: TableProps): React.JSX.Element;
declare namespace Table {
    var RecordModal: typeof import("./record-modal").default;
}
export default Table;
