/**
 * 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 APIClientOptions } from '@nocobase/sdk';
import { type i18n as i18next } from 'i18next';
import { APIClient } from './APIClient';
import { BaseApplication, type BaseApplicationOptions } from './BaseApplication';
import type { PluginType } from './PluginManager';
import { PluginManager } from './PluginManager';
import { PluginSettingsManager } from './PluginSettingsManager';
import type { RouterOptions } from './RouterManager';
import { RouterManager } from './RouterManager';
import type { WebSocketClientOptions } from './WebSocketClient';
export type { DevDynamicImport, ComponentAndProps } from './BaseApplication';
export { ApplicationModel } from './BaseApplication';
export interface ApplicationOptions extends BaseApplicationOptions<PluginType> {
    apiClient?: APIClientOptions;
    ws?: WebSocketClientOptions | boolean;
    i18n?: i18next;
    plugins?: PluginType[];
    components?: BaseApplicationOptions<PluginType>['components'];
    router?: RouterOptions;
}
export declare class Application extends BaseApplication<ApplicationOptions, PluginManager, RouterManager, APIClient, PluginSettingsManager> {
    dataSourceManager: any;
    hasLoadError: boolean;
    protected createApiClient(options: ApplicationOptions): APIClient;
    protected configureRuntimeAdapters(): void;
    protected createI18n(options: ApplicationOptions): i18next;
    protected createRouterManager(options: ApplicationOptions): RouterManager<this>;
    protected createPluginManager(options: ApplicationOptions): PluginManager;
    protected createPluginSettingsManager(_options: ApplicationOptions): PluginSettingsManager;
    load(): Promise<void>;
    loadWebSocket(): Promise<void>;
    protected addCustomProviders(): void;
    addFieldInterfaces(fieldInterfaceClasses?: any[]): any;
    addFieldInterfaceGroups(groups: Record<string, {
        label: string;
        order?: number;
    }>): any;
    addFieldInterfaceComponentOption(fieldName: string, componentOption: any): any;
    addFieldInterfaceOperator(name: string, operatorOption: any): any;
    registerFieldFilterOperator(operator: any): any;
    registerFieldFilterOperatorGroup(name: string, operators?: any[]): any;
    addFieldFilterOperatorsToGroup(name: string, operators?: any[]): any;
    registerFieldValidationConfigure(item: any): any;
    registerFieldValidationConfigureGroup(name: string, items?: any[]): any;
    addFieldValidationConfiguresToGroup(name: string, items?: any[]): any;
}
