/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
import * as standardFieldFilterOperatorGroups from './operators';
import type { FieldFilterOperator } from './operators';
export * from './operators';
export type FieldFilterOperatorPreset = keyof typeof standardFieldFilterOperatorGroups;
export type FieldFilterOperatorGroupName = FieldFilterOperatorPreset | (string & {});
export type FieldFilterOperatorReference<TMeta = unknown> = FieldFilterOperator<TMeta> | string;
export type FieldFilterOperatorList<TMeta = unknown> = FieldFilterOperator<TMeta>[] | FieldFilterOperatorGroupName;
export type FieldFilterable<TMeta = unknown> = {
    operators?: FieldFilterOperatorList<TMeta>;
    operatorGroup?: string;
    operatorOverrides?: FieldFilterOperator<TMeta>[];
    children?: unknown[];
    nested?: boolean;
    [key: string]: unknown;
};
export declare class FieldFilterOperatorRegistry {
    protected operators: Record<string, FieldFilterOperator>;
    protected groups: Record<string, FieldFilterOperator[]>;
    constructor(groups?: Record<string, FieldFilterOperator[]>);
    register(operator: FieldFilterOperator): this;
    registerMany(operators?: FieldFilterOperator[]): this;
    registerGroup(name: string, operators?: FieldFilterOperatorReference[]): this;
    addToGroup(name: string, operators?: FieldFilterOperatorReference[]): this;
    get(name: string): standardFieldFilterOperatorGroups.FieldFilterOperator;
    getGroup(name: string): standardFieldFilterOperatorGroups.FieldFilterOperator[];
    getGroups(): Record<string, standardFieldFilterOperatorGroups.FieldFilterOperator[]>;
    resolveOperators<TMeta = unknown>(operators?: FieldFilterOperatorList<TMeta>): FieldFilterOperator<TMeta>[];
    protected resolveOperatorReferences(operators?: FieldFilterOperatorReference[]): standardFieldFilterOperatorGroups.FieldFilterOperator[];
}
export declare const filterOperatorRegistry: FieldFilterOperatorRegistry;
export declare const fieldFilterOperators: Record<string, standardFieldFilterOperatorGroups.FieldFilterOperator[]> & typeof standardFieldFilterOperatorGroups;
export declare const fieldFilterOperatorPresets: Record<string, standardFieldFilterOperatorGroups.FieldFilterOperator[]> & typeof standardFieldFilterOperatorGroups;
export declare function resolveFilterOperators<TMeta = unknown>(operators?: FieldFilterOperatorList<TMeta>): FieldFilterOperator<TMeta>[];
export declare function normalizeFilterableOperators<TMeta = unknown>(filterable?: FieldFilterable<TMeta>): FieldFilterable<TMeta>;
export declare function createFilterable<TPreset extends FieldFilterOperatorGroupName>(preset: TPreset, options?: Omit<FieldFilterable, 'operators'>): FieldFilterable;
export declare function createTypedFilterable<TMeta = unknown>(groups: Array<{
    types: string[];
    operators: FieldFilterOperatorList<TMeta>;
}>, resolveType: (meta: TMeta) => string): FieldFilterable<TMeta>;
