import { PropsWithChildren, ReactElement } from 'react';
import { OptionalObjectSchema } from 'yup/lib/object';
import { Data } from '../../../types/data';
import { ButtonContext } from '../../Buttons';
import { ObjectSchemaDefinition } from '../../FormStation';
import { DynamicListColumn } from '../DynamicDataList.model';
export declare enum DynamicListDataEntryMode {
    Add = 0,
    Edit = 1
}
export interface DynamicListDataEntryProps<T extends Data> {
    /** The column definition */
    columns: DynamicListColumn<T>[];
    /** Spacing between columns */
    columnSizes: string;
    /** Header row height */
    columnGap?: string;
    /** List row height */
    rowHeight?: string;
    /** Size of action button and checkbox */
    actionSize?: string;
    /** Horizontal alignment of text */
    horizontalTextAlign?: 'left' | 'right' | 'center';
    /** Vertical alignment of text */
    verticalTextAlign?: 'start' | 'center' | 'end';
    /** Property name that is used to determine data position (default: undefined) */
    positionKey?: keyof T;
    /** Whether add new item button should be disabled */
    disabled?: boolean;
    /** If set to true, rows can be be repositioned using the input field (default: undefined) */
    allowReordering?: boolean;
    /** If set to true, this component can be dragged (default: undefined) */
    allowDragging?: boolean;
    /** Position the new data will receive */
    newDataPosition?: number;
    /** 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>;
    /** Overrides the default action button context behavior */
    actionButtonContext?: ButtonContext;
    /** CSS Class name for additional styles */
    className?: string;
    /** Whether Data Entry row should stick to the top below Header (default: true) */
    sticky?: boolean;
    /** If header is shown */
    showHeader?: boolean;
    /** If set to true, the position column will be shown (default: false) */
    showPositionColumn?: boolean;
    /** Determines if the component is in Add or Edit mode (default: Add) */
    mode?: DynamicListDataEntryMode;
    /** Emits when the action button is clicked. Data is supplied as a parameter */
    onActionClicked?: (data: T) => void;
    /** override default add button (+) */
    customAddButton?: (onAddItem: () => Promise<void>) => ReactElement;
}
export declare const DynamicListDataEntry: <T extends Data>({ columns, columnSizes, columnGap, rowHeight, actionSize, horizontalTextAlign, verticalTextAlign, positionKey, disabled, allowReordering, allowDragging, newDataPosition, rowValidationSchema, defaultValuesForNewData, actionButtonContext, className, sticky, showHeader, showPositionColumn, mode, onActionClicked, customAddButton, }: PropsWithChildren<DynamicListDataEntryProps<T>>) => JSX.Element;
//# sourceMappingURL=DynamicListDataEntry.d.ts.map