export type RefListener<X> = (x: X) => void;
type Options = {
    dedupe: boolean;
};
export declare function ref<X>(x: X, options?: Options): Ref<X>;
/**
 * a wrapper for a value.
 * subscribe to changes with the `on` method.
 */
export declare class Ref<X> {
    #private;
    private options;
    constructor(x: X, options?: Options);
    on(fn: RefListener<X>, initiate?: boolean): () => boolean;
    publish(): void;
    get value(): X;
    set value(x: X);
    dispose(): void;
}
export {};
