import { FilterType } from "../filter/types";
import { SortItemProps } from "../sort/types";
import React from "react";
export declare type StorageMode = "" | "localStorage";
/**
 * 排序总配置
 */
export declare type SortType = {
    /** 排序是否展示 */
    show: boolean;
    /** 排序存储模式 */
    storageMode: StorageMode;
    list: SortItemProps[];
};
/**
 * 列展示总配置
 */
export declare type ColumnSettingType = {
    /** 列设置是否展示 */
    show: boolean;
    /** 列设置存储模式 */
    storageMode: StorageMode;
};
declare type DataSourceListItemType = {
    isCustom: boolean;
    columnKey?: string;
    label?: string;
    name?: string | string[];
    isHidden?: boolean;
};
/**
 * 数据源分组总配置
 */
export declare type DataSourceGroupType = {
    /** 分组设置是否展示 */
    show: boolean;
    /** 分组设置存储模式 */
    storageMode: StorageMode;
    /**  */
    list: DataSourceListItemType[];
};
/**
 * Gallery封面总配置
 */
declare type GalleryCoverType = {
    /** 封面是否展示 */
    show: boolean;
    /**
     * 封面图片可以使用的字段
     */
    fields: string[];
    /**
     * 封面高度
     */
    height: number;
    /** 图片裁剪方式 */
    objectFit: "fill" | "cover";
};
/**
 * Gallery标题总配置
 */
declare type GalleryTitleType = {
    /** 标题使用的字段 */
    field: string;
    /** 标题行数 */
    line: number;
};
/**
 * Gallery头部区域总配置
 */
declare type GalleryHeaderType = {
    /** 头部区域插槽 */
    slot?: (record: Record<string, any>, index: number) => React.ReactNode;
    /** 头部区域其他字段设置 */
    fields: {
        /** 头部区域其他字段是否展示 */
        show: boolean;
        /** 头部区域其他字段 */
        list: string[];
    };
};
/**
 * Gallery内容区域总配置
 */
declare type GalleryContentType = {
    /** 内容区域字段配置 */
    fields: {
        columnKey: string;
        show: boolean;
    }[];
};
export declare type GallerySettingValueType = {
    coverField: string | "noCover";
    coverObjectFit: "fill" | "cover";
    compactMode: "default" | "compact";
    isShowLabel: boolean;
};
/**
 * Gallery底部区域总配置
 */
declare type GalleryFooterType = {
    /** 底部区域自定义渲染 */
    render: (record: Record<string, any>, index: number) => React.ReactNode;
    /** 底部区域高度 */
    height: number;
};
/**
 * Gallery模式总配置
 */
export declare type GallerySettingType = {
    /** 卡片最小宽度 */
    cardMinWidth: number;
    /** 卡片最大宽度 */
    cardMaxWidth: number;
    /** 水平间隔 */
    horizontalGutter: number;
    /** 垂直间隔 */
    verticalGutter: number;
    /** 封面配置 */
    cover: GalleryCoverType;
    /** 标题配置 */
    title: GalleryTitleType;
    /** 头部区域 */
    header: GalleryHeaderType;
    /** 内容区域 */
    content: GalleryContentType;
    /** 固定高度 */
    fixedHeight: boolean;
    /** 固定的卡片高度 */
    cardHeight: number;
    /** 固定顶部 */
    fixedHeader: boolean;
    /** 固定底部 */
    fixedFooter: boolean;
    /** 底部区域 */
    footer: GalleryFooterType;
    /** 卡片点击时间 */
    onItem: (record: Record<string, any>, index: number) => void;
};
/** 视图模式 */
export declare type ModeType = "grid" | "gallery" | "kanban";
/**
 * 视图模式总配置
 */
export declare type GridViewType = {
    /** 默认视图模式 */
    defaultViewMode: ModeType;
    /** 开启多视图模式可进行页面内转换 */
    multiple: boolean;
    /** 当前可用的视图模式列表 */
    modeList: ModeType[];
};
declare type SortDetail = {
    fromIndex: number;
    toIndex: number;
    dataSource: Record<string, any>[];
    fromId: number | string;
    toId: number | string;
    fromItem: Record<string, any>;
    toItem: Record<string, any>;
};
/** 导入导出模式 */
export declare type ExportImportModeType = "import" | "export" | "export_file" | "import_log";
/**
 * @title: 导出导入api
 * @description:
 * @return {*}
 * @Author: WangHan
 * @Date: 2024-09-11 15:44
 */
export declare type ApiProps = {
    export?: string;
    import?: string;
    export_file: string;
    import_log?: string;
    template?: string;
};
/**
 * 导入导出配置
 */
export declare type ExportImportType = {
    /** 是否展示 */
    show: boolean;
    /** 当前所选项 */
    selectLists: string[];
    /** 导入模版链接 */
    templateFileUrl: string;
    /** 标题 */
    title: string;
    hiddenKeys?: string[];
    apiUrl?: ApiProps;
    otherParams?: any;
};
/**
 * 设置记忆范围
 */
export declare type LocalSettingsScope = "filters" | "sorting" | "columns";
/**
 * 本地记忆设置
 */
export declare type LocalSettingsType = {
    /** 启用设置记忆 */
    enable: boolean;
    /** 记忆范围 */
    scope: LocalSettingsScope[];
    /** 不需要记忆的筛选字段（当 scope 包含 filters 时生效） */
    excludedFilterFields?: string[];
};
export declare type GridViewProps = {
    columns: any;
    dataSource: any[];
    dispatch: any;
    /**
     * 画册模式的配置
     */
    gallery: GallerySettingType;
    /**
     * 视图设置
     */
    view: GridViewType;
    style: React.CSSProperties;
    pagination: any;
    filter: FilterType;
    buttons: React.ReactNode | any[];
    actionButtons: any;
    sort: SortType;
    title?: React.ReactNode | (() => React.ReactNode);
    showTitle?: boolean;
    subTitle?: React.ReactNode | (() => React.ReactNode);
    showSubTitle?: boolean;
    exportImport: ExportImportType;
    onValuesChange: (changedValues: any, values: any) => void;
    summary: any;
    utils: any;
    rowKey: ((record: Record<string, any>) => string) | string;
    columnSetting?: ColumnSettingType;
    dataSourceGroup?: DataSourceGroupType;
    loading: boolean;
    dragSort: boolean;
    onSortChange?: (detail: SortDetail) => boolean;
    __id?: string;
    __designMode?: "design";
    /**
     * 当前本地配置的key 用此hash是否改变用来判断是否清空本地配置 不填默认使用columns数据生成hash
     */
    currentSettingKey?: string;
    /**
    * 当前本地配置的唯一值, 不填默认使用currentSettingKey
    */
    currentComponentId?: string;
    /**
     * 当前表格中数据发生变化事件 包含本地筛选和外部传入数据变化
     * @param currentDataSource
     */
    onDataSourceChange?: (currentDataSource: Record<string, any>[]) => void;
    tabs: {
        show: boolean;
        type: 'default' | 'button' | 'buttonGroup' | 'dropdown';
        items: {
            name: string;
            filterBy?: Record<string, any>;
            sortBy?: string;
        }[];
    };
    /** 本地记忆设置 */
    localSettings?: LocalSettingsType;
};
export {};
