/**
 * 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.
 */
type SystemSettingsAPIClient = {
    request: (options: {
        url: string;
    }) => Promise<{
        data: any;
    }>;
};
/**
 * 系统设置共享数据源。
 *
 * 该对象是系统设置在运行时的唯一状态源，负责请求去重、
 * 结果缓存以及订阅通知。
 */
export declare class SystemSettingsSource {
    private readonly apiClient;
    loading: boolean;
    data: any;
    error: any;
    private pending?;
    private listeners;
    constructor(apiClient: SystemSettingsAPIClient);
    /**
     * 订阅系统设置变化。
     *
     * @param listener 变化监听器
     * @returns 取消订阅函数
     * @example
     * ```typescript
     * const unsubscribe = source.subscribe(() => {
     *   console.log(source.data);
     * });
     * unsubscribe();
     * ```
     */
    subscribe(listener: () => void): () => void;
    /**
     * 加载系统设置。
     *
     * 已有缓存数据时直接返回缓存；并发请求时复用同一个 Promise。
     *
     * @returns 最新的系统设置数据
     * @throws 当接口请求失败时抛出原始异常
     * @example
     * ```typescript
     * const data = await source.load();
     * ```
     */
    load(): Promise<any>;
    /**
     * 强制刷新系统设置。
     *
     * @returns 最新的系统设置数据
     * @throws 当接口请求失败时抛出原始异常
     * @example
     * ```typescript
     * await source.refresh();
     * ```
     */
    refresh(): Promise<any>;
    /**
     * 直接覆盖本地系统设置数据。
     *
     * @param data 新的数据对象
     * @returns void
     * @example
     * ```typescript
     * source.setData({ data: { title: 'Demo' } });
     * ```
     */
    setData(data: any): void;
    /**
     * 直接覆盖本地错误状态。
     *
     * @param error 新的错误对象
     * @returns void
     * @example
     * ```typescript
     * source.setError(new Error('request failed'));
     * ```
     */
    setError(error: any): void;
    /**
     * 广播状态变化。
     *
     * @returns void
     */
    private notify;
}
export {};
