/**
 * 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 type { DataSourceManager } from '../data-source';
import type { CollectionFieldInterface, CollectionFieldInterfaceComponentOption, CollectionFieldInterfaceFactory } from './CollectionFieldInterface';
interface ActionType {
    type: 'addComponentOption';
    data: any;
}
export declare class CollectionFieldInterfaceManager {
    dataSourceManager: DataSourceManager;
    protected collectionFieldInterfaceInstances: Record<string, CollectionFieldInterface>;
    protected collectionFieldGroups: Record<string, {
        label: string;
        order?: number;
    }>;
    protected actionList: Record<string, ActionType[]>;
    constructor(fieldInterfaceClasses: CollectionFieldInterfaceFactory[], fieldInterfaceGroups: Record<string, {
        label: string;
        order?: number;
    }>, dataSourceManager: DataSourceManager);
    addFieldInterfaces(fieldInterfaceClasses?: CollectionFieldInterfaceFactory[]): void;
    addFieldInterfaceComponentOption(interfaceName: string, componentOption: CollectionFieldInterfaceComponentOption): void;
    /**
     * 为指定的字段接口添加操作符选项
     *
     * @param name 字段接口的名称
     * @param operatorOption 要添加的操作符选项
     *
     * @example
     * // 为"单行文本"类型字段添加"等于任意一个"操作符
     * fieldInterfaceManager.addFieldInterfaceOperator('input', {
     *   label: '{{t("equals any of")}}',
     *   value: '$in',
     * });
     */
    addFieldInterfaceOperator(name: string, operatorOption: any): void;
    getFieldInterface<T extends CollectionFieldInterface>(name: string): T;
    getFieldInterfaces(dataSourceType?: string): CollectionFieldInterface[];
    addFieldInterfaceGroups(groups: Record<string, {
        label: string;
        order?: number;
    }>): void;
    getFieldInterfaceGroups(): Record<string, {
        label: string;
        order?: number;
    }>;
    getFieldInterfaceGroup(name: string): {
        label: string;
        order?: number;
    };
}
export {};
