import { SdGridMaterialFilterRequest } from '../services/grid-filter/grid-filter.model';
import { SdGridMaterialColumn } from './grid-column.model';
import { Observable } from 'rxjs';
export interface SdGridMaterialExportOption<T = any> {
    key?: string;
    visible?: boolean;
    visibleExcel?: boolean;
    visibleCSV?: boolean;
    enableUpload?: boolean;
    fileName?: string;
    max?: number;
    maxItemsPerRequest?: number;
    batch?: number;
    validators?: (fileName: string, columns?: SdGridMaterialColumn[]) => string;
    items?: (filterRequest: SdGridMaterialFilterRequest) => T[] | Promise<T[]> | Promise<{
        items: any[];
        total: number;
    }> | Observable<T[]> | Observable<{
        items: any[];
        total: number;
    }>;
    mapping?: (items: T[], fileName?: string) => T[] | Promise<T[]>;
    columns?: SdGridMaterialExportColumn<T>[];
    sheets?: {
        name: string;
        items: any[] | ((items?: any[]) => any[] | Promise<any[]>);
        fields: string[];
    }[];
    hideMyTemplates?: boolean;
    groups?: SdGroupExport<T>[];
}
export interface SdGroupExport<T = any> {
    code: string;
    title: string;
    folder: string;
    permission: SdGroupExportPermission | (() => SdGroupExportPermission);
    columns?: SdGridMaterialExportColumn[];
    items?: (filterRequest: SdGridMaterialFilterRequest) => T[] | Promise<T[]> | Promise<{
        items: any[];
        total: number;
    }> | Observable<T[]> | Observable<{
        items: any[];
        total: number;
    }>;
    mapping?: (items: T[], fileName?: string) => T[] | Promise<T[]>;
}
export interface SdGridMaterialExportColumn<T = any> {
    field: string;
    title: string;
    description?: string;
    width?: string;
    transform?: (value: any, rowData: T) => string;
    export?: {
        disabled: boolean;
    };
}
export declare type SdGroupExportPermission = 'view' | 'add' | 'delete';
