import { Data } from '../../types/data';
import { ColumnRenderer } from '../List/List.model';
interface DDLUnboundColumn<T extends Data> extends DDLBaseColumn<T> {
    /** The name of the property on the Data object that should be rendered in that column. */
    propertyName?: keyof T;
    /**
     * A custom render function that will be called for every row(except data entry row) that should be rendered.
     * The DynamicDataList will already try to render the data in a meaningful way, but in some advanced use cases more control is required.
     */
    render: ColumnRenderer<T>;
    /**
     * The identifier for the column.
     */
    key: string;
}
interface DDLBoundColumn<T extends Data> extends DDLBaseColumn<T> {
    /** The name of the property on the Data object that should be rendered in that column. */
    propertyName: keyof T;
    /**
     * A custom render function that will be called for every row(except data entry row) that should be rendered.
     * The DynamicDataList will already try to render the data in a meaningful way, but in some advanced use cases more control is required.
     */
    render?: ColumnRenderer<T>;
    /**
     * The identifier for the column. (Default: propertyName)
     */
    key?: string;
}
export interface DDLBaseColumn<T extends Data> {
    /** The width of the column as CSS size (default: 1fr) */
    size?: string;
    /** Column's header label */
    label?: string;
    /**
     * If set to false, will not render a tooltip for the column data (default: undefined)
     * If a custom renderer is used that will not return a value cast-able to a string, you should consider setting this property to false and add a title attribute on the component returned by the custom renderer.
     */
    tooltip?: boolean;
    /**
     * Set if new data entry is allowed
     * Setting fieldType to either 'input' or 'select' will generate an element appropriate to that type.
     */
    dataEntryRender?: DynamicListDataEntryRenderer;
    /**
     * Set if data editing is allowed
     * Setting fieldType to either 'input' or 'select' will generate an element appropriate to that type.
     * If not set, will use the dataEntryRender value.
     */
    dataEditRender?: DynamicListDataEntryRenderer;
    /** Performs a transformation on the value before being added to the list */
    onAddTransformer?: (value: unknown, data: T) => unknown;
    /** If set to true, the column will not be resizable */
    disableResizing?: boolean;
}
export type DynamicListColumn<T extends Data> = DDLUnboundColumn<T> | DDLBoundColumn<T>;
export type DynamicListDataEntryRenderer = (
/** Value to render. */
currentValue: unknown, 
/** If set, indicates the entry value has an error and will display this prop as the error message. */
error: string | undefined, 
/** Callback triggered when the value is changed from within the renderer. */
onValueChange: (value: unknown) => void, 
/** Whether the entry is disabled. */
disabled?: boolean) => React.ReactNode;
export {};
//# sourceMappingURL=DynamicDataList.model.d.ts.map