import { None } from "./other";
import { Signal } from "./signal";
export type ConfigChange<T> = {
    originalValue: T;
    newValue: T;
};
/**
 * 单个配置。
 */
export declare class SingleConfig<T> {
    private upper;
    private store;
    private cache;
    /**
     *
     */
    changed: Signal<ConfigChange<T>>;
    /**
     * 获取配置值。
     */
    get config(): T | None;
    /**
     * 设置配置值。
     *
     * 注意：设置配置值需要进行多级缓存更新，这是一个较慢的操作，建议不要频繁修改配置。
     */
    set config(value: T | None);
    /**
     * 获取配置的生效值。
     *
     * 当配置值非空时，该值为配置值，否则为上层或上层的生效值。
     */
    get value(): T;
    set value(value: T);
    private getValue;
    constructor(upper: SingleConfig<T> | T, value: T | None);
}
