import React, { PropsWithChildren } from 'react';
import { OptionalObjectSchema } from 'yup/lib/object';
import { Data } from '../../types/data';
import { ActionData } from '../Actions';
import { ObjectSchemaDefinition } from '../FormStation';
import { DynamicListColumn } from './DynamicDataList.model';
import { DynamicListDataEntryProps } from './DynamicListDataEntry/DynamicListDataEntry';
export interface DynamicDataListProps<T extends Data> {
    /**
     * Column definitions
     * The order of this array determines the order of columns
     */
    columns: DynamicListColumn<T>[];
    /** Whether or not the header row is shown (default: true) */
    showHeader?: boolean;
    /** List data */
    value: T[];
    /** Spacing between columns */
    columnGap?: string;
    /** Minimum width of this component */
    minimumWidth?: string;
    /** Header row height */
    headerRowHeight?: string;
    /** List row height (minimum height is 50px) */
    listRowHeight?: string;
    /** List row action button and checkbox size (default: '50px') */
    listRowActionSize?: string;
    /** Spacing between rows */
    rowGap?: string;
    /** Horizontal alignment of text */
    horizontalTextAlign?: 'left' | 'right' | 'center';
    /** Vertical alignment of text */
    verticalTextAlign?: 'start' | 'center' | 'end';
    /** If set to true, column text overflow will be wrapped to a new line. Otherwise, it will be truncated with an ellipsis (default: false) */
    textWrap?: boolean;
    /** Property that contains the value used in reordering the list (default: undefined) */
    positionPropertyName?: keyof T;
    /** If sets, sets the label for the position column (default: 'Position') */
    positionLabel?: string;
    /** Whether or not rows can be repositioned (default: true) */
    allowReordering?: boolean;
    /** @deprecated Determines if the Add and Delete action buttons are rendered (default: true) */
    allowAddAndRemove?: boolean;
    /** Determines if data rows can be dragged for repositioning (default: true) */
    allowRowDragging?: boolean;
    /** Whether or not new data can be added (default: false) */
    allowNewData?: boolean;
    /** Whether or not existing data can be edited (default: false) */
    allowEditing?: boolean;
    /** Custom DynamicListDataEntry component which will be rendered instead of the default component */
    customDataEntry?: React.FC<DynamicListDataEntryProps<T>>;
    /** Optional Yup validation object for validating new data */
    rowValidationSchema?: OptionalObjectSchema<ObjectSchemaDefinition<T>>;
    /** Sets default values to be populated in the new row when new data is allowed. */
    defaultValuesForNewData?: Partial<T>;
    /** The maximum amount of items that can be added to the list.
     * If this prop is set and the amount is reached, data entry will be removed (default: undefined)
     */
    maxItemLimit?: number;
    /** CSS Class name for additional styles */
    className?: string;
    /** Whether the header and input field should stick to the top (default: false) */
    stickyHeader?: boolean;
    /** Whether add new item button should be disabled (default: false) */
    disabled?: boolean;
    /** Performs transformations to the new data object being added */
    onAddTransformData?: (data: Partial<T>) => T;
    /** CSS Class name provider for each row. Allows row style to be determined by data */
    rowClassNameProvider?: (data: T) => string;
    /** Raised when the list has changed */
    onChange?: (list: T[]) => void;
    /** Provide inline actions which are available through '...' context menu */
    inlineMenuActions?: (data: T) => ActionData[];
}
/**
 * Renders a list of data that whose rows can be added, deleted, and repositioned
 * @example
 * <DynamicDataList<DataInterface>
 *  columns={[{propertyName: 'id', size: '1fr', label: 'Id'}]}
 *  data={[{id: '1',desc: 'Description 1',title: 'Item 1'}]}
 *  onChange={list => console.log(list)}
 * />
 */
export declare const DynamicDataList: <T extends Data>({ columns, value, showHeader, minimumWidth, columnGap, rowGap, headerRowHeight, listRowHeight, listRowActionSize, horizontalTextAlign, verticalTextAlign, positionPropertyName, positionLabel, allowReordering, allowRowDragging, allowNewData, allowEditing, customDataEntry: CustomDataEntry, maxItemLimit, rowValidationSchema, defaultValuesForNewData, stickyHeader, disabled, className, textWrap, onChange, onAddTransformData, rowClassNameProvider, inlineMenuActions, }: PropsWithChildren<DynamicDataListProps<T>>) => JSX.Element;
//# sourceMappingURL=DynamicDataList.d.ts.map