/**
 * 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 { TFuncKey, TOptions } from 'i18next';
import type { BaseApplication } from './BaseApplication';
import { Application } from './Application';
/**
 * 插件配置选项。
 *
 * 作为 Plugin 类的泛型参数，描述插件注册时可接收的配置项。
 *
 * @template T 插件自定义配置类型
 */
export interface PluginOptions<T = any> {
    name?: string;
    packageName?: string;
    options?: any;
    config?: T;
    [key: string]: any;
}
export declare class Plugin<T extends PluginOptions<any> = PluginOptions, TApp extends BaseApplication<any> = Application> {
    options: T;
    protected app: TApp;
    constructor(options: T, app: TApp);
    get pluginManager(): import("./PluginManager").PluginManager<any>;
    get context(): import("@nocobase/flow-engine").FlowEngineContext & {
        routeRepository: import("./RouteRepository").RouteRepository;
        appInfo: Promise<Record<string, any>>;
        pageInfo: {
            version?: "v1" | "v2";
        };
        systemSettings: import("./flow").SystemSettingsSource;
        acl?: {
            data: Record<string, any>;
            meta: Record<string, any>;
            setData: (data: Record<string, any>) => void;
            setMeta: (meta: Record<string, any>) => void;
        };
        pluginManager: import("./PluginManager").PluginManager<any>;
    };
    get flowEngine(): import("@nocobase/flow-engine").FlowEngine;
    get engine(): import("@nocobase/flow-engine").FlowEngine;
    get pm(): import("./PluginManager").PluginManager<any>;
    get router(): import("./RouterManager").RouterManager<any>;
    get pluginSettingsManager(): any;
    get schemaInitializerManager(): any;
    get schemaSettingsManager(): any;
    get dataSourceManager(): any;
    get ai(): import("./ai").AIManager;
    afterAdd(): Promise<void>;
    beforeLoad(): Promise<void>;
    load(): Promise<void>;
    t(text: TFuncKey | TFuncKey[], options?: TOptions): import("i18next").TFunctionDetailedResult<object>;
}
