/// <reference types="react" />
import type { FormInstance } from '../form';
/** 字段类型 */
export declare type FieldType = 'string' | 'integer' | 'double' | 'date' | 'datetime' | 'boolean' | 'guid' | 'json';
/** 组件类型: 目前所用到的组件 */
export declare type ComponentType = 'input' | 'select' | 'checkbox' | 'cascader' | 'date' | 'range' | 'number' | 'code' | 'numberRange' | 'dateRange';
/** 关系符 */
declare type OperatorType = 'equal' | 'not_equal' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'starts_with' | 'ends_with' | 'greater_than' | 'greater_than_or_equal' | 'between' | 'less_than' | 'less_than_or_equal' | 'empty' | 'not_empty';
/** 字段来源类型 */
export declare enum FieldValueSourceType {
    None = 0,
    Dictionary = 1,
    Department = 2,
    Role = 3,
    Enum = 4,
    User = 5,
    Supplier = 6,
    Customer = 7,
    UserGroup = 8,
    Tag = 9,
    WarehouseArchives = 10
}
/** 查询的类型, 用于回填数据到指定位置 */
export declare enum QUERY_TYPE {
    /** 回填到高级筛选 */
    COMPLEX = 1,
    /** 回填到基础筛选 */
    BASIC = 2
}
/** 弹窗类型枚举 */
export declare enum MODAL_TYPE_ENUM {
    RENAME = "rename",
    COVER = "cover",
    APPEND = "append"
}
declare type Literal<T> = T | (string & {});
declare type LiteralUnion<T, U = string> = T extends U ? Literal<T> : U;
export declare type Condition = {
    relation: LiteralUnion<'and' | 'or'>;
    operator: LiteralUnion<OperatorType>;
    value: any;
    seq: number;
    fieldName: string;
    fieldDisplayName: string;
    fieldType: LiteralUnion<FieldType>;
    fieldValueSource: FieldValueSourceType | (number & {});
};
export declare type ConditionGroup = {
    queryType: QUERY_TYPE;
    relation: string;
    conditions: Condition[];
};
/** 自定义筛选选项 */
export declare type CustomOptionsProps = {
    label: string;
    value: string | number;
    relation?: string;
    data: ConditionGroup[];
    default?: boolean;
};
export interface SearchConfigProps {
    relation: string;
    fieldType: string;
    operator: string;
}
export declare enum SOURCE_ENUM {
    TITLE = "title",
    FIELD_NAME = "field",
    FIELD_TYPE = "valueType",
    OPERATOR = "operator",
    RELATION = "relation",
    TYPE = "type",
    VALUE = "value",
    OPTIONS = "data"
}
export declare type TData = {
    type: string;
    title?: string;
    colon?: string | boolean;
    show?: boolean;
    value?: any;
    placeholder?: string;
    fieldNames?: Record<string, any>;
    multiple?: boolean;
    field: string;
    valueType: string;
    operator: string;
    relation: string;
    data?: any[];
    showSearch?: boolean;
    showAllChecked?: boolean;
    picker?: string;
    onOpenChange: (open: boolean) => void;
    /** @description 设置依赖字段 */
    dependencies?: string[];
};
/** 处理后的DataSource结构数据 */
export declare type DataSourceProps = {
    type: string;
    title?: string;
    colon?: string | boolean;
    show?: boolean;
    value?: any;
    placeholder?: string;
    fieldNames?: Record<string, any>;
    multiple?: boolean;
    fieldName?: string;
    fieldType?: string;
    operator?: string;
    relation?: string;
    options?: any[];
    picker?: string;
    onOpenChange?: (open: boolean) => void;
};
export interface AdvancedFilterProps {
    /** 配置 Item 的 colon 的默认值 表示是否显示 title 后面的冒号 */
    colon?: boolean | string;
    /** 数据源 */
    dataSource?: Array<Partial<TData>>;
    /** 是否启用模糊查询 @default true */
    enableSearch?: boolean;
    /** 是否启用基础筛选 @default true */
    enableBasic?: boolean;
    /** 是否启用高级筛选 @default false */
    enableComplex?: boolean;
    /** 是否启用自定义筛选 @default false */
    enableCustom?: boolean;
    /** 自定义筛选选项 */
    customOptions?: Array<Partial<CustomOptionsProps>>;
    /** 是否展示一件清空 @default true */
    enableClear?: boolean;
    /**
     * 是否自动将筛选结构值转换为字符串
     * @default true
     * @deprecated 此字段作废
     */
    enableAutoString?: boolean;
    /** 尺寸 @default middle */
    size?: LiteralUnion<'small' | 'middle' | 'large'>;
    /** 搜索的key值 @default search */
    searchKey?: string | string[];
    /** 搜索占位符 */
    placeholder?: string;
    /** 模糊搜索配置 */
    searchConfig?: Partial<Pick<Condition, 'relation' | 'operator' | 'fieldType'>>;
    searchClassName?: string;
    /** 自定义一级筛选Dom */
    customRender?: (param?: any) => React.ReactNode;
    ref?: React.Ref<FormInstance>;
    /** 筛选改变事件 */
    onChange?: (x?: Record<string, any>) => any;
    /** 保存事件 */
    onSave?: (resultList: Record<string, any>[], changedValue: Record<string, any>, type: MODAL_TYPE_ENUM) => any;
    /** 保存前置事件, 用于处理返回值 */
    beforeSave?: (changedValue: Record<string, any>, type: MODAL_TYPE_ENUM) => any;
    /** 筛选值变化时触发 */
    onValuesChange?: (changedValues: any, values: any) => any;
    /** 一键清空时触发 */
    onClearChange?: () => void;
    locale?: any;
    [x: string]: any;
}
export {};
