/**
 * 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 { PluginSettingsPageType } from '../PluginSettingsManager';
export declare const ADMIN_SETTINGS_LAYOUT_MODEL_UID = "admin-settings-layout-model";
export declare const PLUGIN_MANAGER_SETTING_NAME = "plugin-manager";
export declare const SYSTEM_SETTINGS_SETTING_NAME = "system-settings";
/**
 * 判断配置项是否拥有可直接渲染的页面。
 *
 * @param {PluginSettingsPageType | null | undefined} setting 当前配置项
 * @returns {boolean} 是否可直接打开
 */
export declare function hasOwnSettingsPage(setting?: PluginSettingsPageType | null): boolean;
/**
 * 递归移除没有页面也没有子项的占位配置。
 *
 * @param {PluginSettingsPageType[]} settings 原始配置树
 * @returns {PluginSettingsPageType[]} 过滤后的配置树
 */
export declare function filterRenderableSettings(settings?: readonly PluginSettingsPageType[]): PluginSettingsPageType[];
/**
 * 过滤出可用于导航展示的 settings。
 *
 * 该过程会移除 hidden 项，并继续清理没有可见页面的空 menu。
 *
 * @param {PluginSettingsPageType[]} settings 原始配置树
 * @returns {PluginSettingsPageType[]} 可见配置树
 */
export declare function filterVisibleSettings(settings?: readonly PluginSettingsPageType[]): PluginSettingsPageType[];
/**
 * 对顶级 settings 菜单做稳定排序。
 *
 * @param {PluginSettingsPageType[]} settings 顶级配置项
 * @returns {PluginSettingsPageType[]} 排序后的顶级配置项
 */
export declare function sortTopLevelSettings(settings?: PluginSettingsPageType[]): PluginSettingsPageType[];
/**
 * 将 settings 树压平为路径索引，供动态路由匹配使用。
 *
 * @param {PluginSettingsPageType[]} settings 过滤后的配置树
 * @returns {Record<string, PluginSettingsPageType>} 路径索引
 */
export declare function createSettingsPathMap(settings?: readonly PluginSettingsPageType[]): Record<string, PluginSettingsPageType>;
/**
 * 按路径查找当前命中的配置项，支持 `:param` 动态段。
 *
 * @param {Record<string, PluginSettingsPageType>} data 路径索引
 * @param {string} url 当前地址
 * @returns {PluginSettingsPageType | null} 命中的配置项
 */
export declare function matchSettingsRoute(data: Record<string, PluginSettingsPageType>, url: string): PluginSettingsPageType;
/**
 * 用实际路由参数替换 settings path 中的动态段。
 *
 * @param {string} urlTemplate 原始 settings 路由模板
 * @param {Record<string, string>} params 当前路由参数
 * @returns {string} 替换后的目标地址
 */
export declare function replaceRouteParams(urlTemplate: string, params?: Record<string, string>): string;
/**
 * 递归查找某个配置项树中的第一个内部页面。
 *
 * @param {PluginSettingsPageType[]} settings 配置树
 * @returns {PluginSettingsPageType | null} 第一个可内部打开的页面
 */
export declare function findFirstInternalSettingsPage(settings?: readonly PluginSettingsPageType[]): PluginSettingsPageType | null;
/**
 * 查找指定名称的配置项。
 *
 * @param {PluginSettingsPageType[]} settings 配置树
 * @param {string} name 配置项名称
 * @returns {PluginSettingsPageType | null} 命中的配置项
 */
export declare function findSettingsByName(settings: readonly PluginSettingsPageType[], name: string): PluginSettingsPageType | null;
/**
 * 为 settings 首页计算默认落点。
 *
 * @param {PluginSettingsPageType[]} settings 当前可访问配置树
 * @returns {string | undefined} 默认跳转路径
 */
export declare function getDefaultSettingsPath(settings?: readonly PluginSettingsPageType[]): string;
/**
 * 把 settings 结构转换成 antd Menu items。
 *
 * @param {PluginSettingsPageType[]} settings 目标配置项
 * @returns {any[] | undefined} Menu items
 */
export declare function getMenuItems(settings?: readonly PluginSettingsPageType[]): any;
