import { SdGridMaterialColumn } from './grid-column.model';
import { SdGridMaterialCommand } from './grid-command.model';
import { SdGridMaterialFilterRequest, SdGridMaterialFilterOption } from '../services/grid-filter/grid-filter.model';
import { SdGridMaterialExportOption } from './grid-export.model';
import { SdGridMaterialReloadOption } from './grid-reload.model';
import { SdGridMaterialConfigOption } from './grid-config.model';
import { SdGridMaterialSubInformation } from './grid-sub-information.model';
import { SdGridMaterialSelection } from './grid-selection.model';
import { Observable } from 'rxjs';
import { SdEditor } from './grid-editor.model';
import { SdGridMaterialStyle } from './grid-style.model';
import { SdGridMaterialGroup } from './grid-group.model';
export declare type SdGridMaterialOption<T = any> = SdGridMaterialLocalOption<T> | SdGridMaterialServerOption<T>;
interface SdGridMaterialBaseOption<T = any> {
    shadow?: boolean;
    maxHeight?: string;
    minHeight?: string;
    key?: string;
    selection?: SdGridMaterialSelection<T>;
    sortable?: boolean;
    dropDragColumnEnable?: boolean;
    paginate?: {
        pageSize?: number;
        pages?: number[];
        showFirstLastButtons?: boolean;
        hidden?: boolean;
    };
    editor?: SdEditor<T>;
    reload?: SdGridMaterialReloadOption<T>;
    export?: SdGridMaterialExportOption<T>;
    config?: SdGridMaterialConfigOption<T>;
    filter?: SdGridMaterialFilterOption;
    commands?: SdGridMaterialCommand<T>[];
    columns: SdGridMaterialColumn<T>[];
    subInformation?: SdGridMaterialSubInformation<T>;
    group?: SdGridMaterialGroup<T>;
    style?: SdGridMaterialStyle<T>;
    displayOnEmpty?: boolean | ((rowData: T, column?: SdGridMaterialColumn<T>) => string) | {
        display?: boolean | ((rowData: T, column?: SdGridMaterialColumn<T>) => string);
        emptyValues?: any[];
    };
}
interface SdGridMaterialLocalOption<T = any> extends SdGridMaterialBaseOption<T> {
    type: 'local';
    items: (() => T[] | Promise<T[]>);
}
interface SdGridMaterialServerOption<T = any> extends SdGridMaterialBaseOption<T> {
    type: 'server';
    items: (filterRequest: SdGridMaterialFilterRequest) => Promise<{
        items: T[];
        total: number;
    }> | Observable<{
        items: T[];
        total: number;
    }>;
}
export {};
