import { EditableChanges } from '../../modules/smz-tables/models/editable-model';
import { SmzEditableType } from '../../modules/smz-tables/models/editable-types';
import { SmzTableEditableColumn } from '../../modules/smz-tables/models/table-column';
import { SmzBaseColumnBuilder } from './column-builder';
import { SmzTableBuilder } from './state-builder';
export declare class SmzEditableTableBuilder<TData> {
    private _tableBuilder;
    constructor(_tableBuilder: SmzTableBuilder<TData>);
    useFlattenResults<T>(): SmzEditableTableBuilder<TData>;
    addMappingResults<T>(mapFunction: (data: T, changes: EditableChanges<T>) => any): SmzEditableTableBuilder<TData>;
    setCreationAction(action: any, claim?: string, overrideActionPayload?: (row: any) => any): SmzEditableTableBuilder<TData>;
    onCreationInit(onInit: () => void): SmzEditableTableBuilder<TData>;
    setUpdateAction(action: any, claim?: string, overrideActionPayload?: (row: any) => any): SmzEditableTableBuilder<TData>;
    setUpdateActionCondition(callback: (row: TData) => boolean): SmzEditableTableBuilder<TData>;
    setRemoveActionCondition(callback: (row: TData) => boolean): SmzEditableTableBuilder<TData>;
    onUpdateInit(onInit: (row: any) => void): SmzEditableTableBuilder<TData>;
    setRemoveAction(action: any, claim?: string, overrideActionPayload?: (row: any) => any): SmzEditableTableBuilder<TData>;
    onRemoveInit(onInit: (row: any) => void): SmzEditableTableBuilder<TData>;
    get table(): SmzTableBuilder<TData>;
}
export declare abstract class SmzBaseEditableBuilder<T extends SmzBaseEditableBuilder<T, TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzBaseColumnBuilder<any, TData>;
    protected _editable: SmzTableEditableColumn;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzBaseColumnBuilder<any, TData>, type: SmzEditableType, property: string, data: any);
    disableUpdate(): SmzBaseEditableBuilder<T, TData>;
    disableCreation(): SmzBaseEditableBuilder<T, TData>;
    removeRequirement(): SmzBaseEditableBuilder<T, TData>;
    setMinValidator(min: number): SmzBaseEditableBuilder<T, TData>;
    setMinLengthValidator(minLength: number): SmzBaseEditableBuilder<T, TData>;
    setMaxValidator(max: number): SmzBaseEditableBuilder<T, TData>;
    setMaxLengthValidator(maxLength: number): SmzBaseEditableBuilder<T, TData>;
    get column(): SmzBaseColumnBuilder<any, TData>;
}
export declare class SmzEditableCollectionBuilder<TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzBaseColumnBuilder<any, TData>;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzBaseColumnBuilder<any, TData>);
    text(property?: string): SmzTextEditableBuilder<TData>;
    switch(property?: string): SmzSwitchEditableBuilder<TData>;
    dropdown(property?: string): SmzDropdownEditableBuilder<TData>;
    number(property?: string): SmzNumberEditableBuilder<TData>;
    get column(): SmzBaseColumnBuilder<any, TData>;
}
export declare class SmzTextEditableBuilder<TData> extends SmzBaseEditableBuilder<SmzTextEditableBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzBaseColumnBuilder<any, TData>;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzBaseColumnBuilder<any, TData>, property: string);
}
export declare class SmzSwitchEditableBuilder<TData> extends SmzBaseEditableBuilder<SmzSwitchEditableBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzBaseColumnBuilder<any, TData>;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzBaseColumnBuilder<any, TData>, property: string);
}
export declare class SmzDropdownEditableBuilder<TData> extends SmzBaseEditableBuilder<SmzDropdownEditableBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzBaseColumnBuilder<any, TData>;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzBaseColumnBuilder<any, TData>, property: string, placeholder?: string);
    setOptions(options: any[]): SmzDropdownEditableBuilder<TData>;
    setSelector(selector: any): SmzDropdownEditableBuilder<TData>;
}
export declare class SmzNumberEditableBuilder<TData> extends SmzBaseEditableBuilder<SmzNumberEditableBuilder<TData>, TData> {
    protected _table: SmzTableBuilder<TData>;
    protected _parent: SmzBaseColumnBuilder<any, TData>;
    constructor(_table: SmzTableBuilder<TData>, _parent: SmzBaseColumnBuilder<any, TData>, property: string);
    setDecimal(digits: number): SmzNumberEditableBuilder<TData>;
    setFraction(minFractionDigits: number, maxFractionDigits: number): SmzNumberEditableBuilder<TData>;
    addPrefix(prefix: string): SmzNumberEditableBuilder<TData>;
    addSufix(suffix: string): SmzNumberEditableBuilder<TData>;
    showSpinners(): SmzNumberEditableBuilder<TData>;
    showClear(): SmzNumberEditableBuilder<TData>;
    forbidEmpty(): SmzNumberEditableBuilder<TData>;
    useGrouping(): SmzNumberEditableBuilder<TData>;
}
