import React from 'react';
import type { Application } from './Application';
import type { RouteType } from './RouterManager';
export declare const ADMIN_SETTINGS_KEY = "admin-settings.";
export declare const ADMIN_SETTINGS_PATH = "/_admin/";
export declare const SNIPPET_PREFIX = "pm.";
export interface PluginSettingOptions {
    title: any;
    /**
     * @default Outlet
     */
    Component?: RouteType['Component'];
    icon?: string;
    /**
     * sort, the smaller the number, the higher the priority
     * @default 0
     */
    sort?: number;
    aclSnippet?: string;
    [index: string]: any;
}
export interface PluginSettingsPageType {
    label?: string | React.ReactElement;
    title: string | React.ReactElement;
    key: string;
    icon: any;
    path: string;
    sort?: number;
    name?: string;
    isAllow?: boolean;
    topLevelName?: string;
    aclSnippet: string;
    children?: PluginSettingsPageType[];
    [index: string]: any;
}
export declare class SystemSettingsManager {
    protected settings: Record<string, PluginSettingOptions>;
    protected aclSnippets: string[];
    app: Application;
    private cachedList;
    constructor(_pluginSettings: Record<string, PluginSettingOptions>, app: Application);
    setAclSnippets(aclSnippets: string[]): void;
    getAclSnippet(name: string): string;
    getRouteName(name: string): string;
    getRoutePath(name: string): string;
    add(name: string, options: PluginSettingOptions): void;
    remove(name: string): void;
    hasAuth(name: string): boolean;
    getSetting(name: string): PluginSettingOptions;
    has(name: string): boolean;
    get(name: string, filterAuth?: boolean): PluginSettingsPageType;
    getList(filterAuth?: boolean): PluginSettingsPageType[];
    getAclSnippets(): string[];
}
