export declare type SdEditor<T = any> = SdEditorFocus<T> | SdEditorInline<T> | SdEditorPopup<T>;
export interface SdEditorBase<T = any> {
    hidden?: boolean;
    addable?: boolean;
    disabled?: boolean | ((rowData: T) => boolean);
    onAdd?: (rowData?: T, rowDatas?: T[]) => void;
    onCancel?: (rowData?: T, rowDatas?: T[]) => void;
    onRemove?: (rowData?: T, rowDatas?: T[]) => void;
    beforeRemove?: (rowData?: T) => boolean | Promise<boolean>;
    onEdit?: (rowData: T) => void;
    onSave?: (rowData: T) => void | Promise<void>;
    validate?: (rowData: T, idx?: number) => string | Promise<string>;
    limit?: number;
    addToLast?: boolean;
}
export interface SdEditorFocus<T = any> extends SdEditorBase<T> {
    type: 'focus';
}
export interface SdEditorInline<T = any> extends SdEditorBase<T> {
    type: 'inline';
    removable?: boolean | ((rowData: T) => boolean);
}
export interface SdEditorPopup<T = any> extends SdEditorBase<T> {
    type: 'popup';
}
