import { F } from "./util/Utils.js";
import { Reaction, ReactivityOptions, LoggingOptions, ProfilingOptions, SnapshotOptions } from "./Options.js";
export declare class ReactiveSystem {
    static why(brief?: boolean): string;
    static getRevisionOf(obj: any): number;
    static takeSnapshot<T>(obj: T): T;
    static get reactivityAutoStartDisabled(): boolean;
    static set reactivityAutoStartDisabled(value: boolean);
    static get isLogging(): boolean;
    static get loggingOptions(): LoggingOptions;
    static setLoggingMode(isOn: boolean, options?: LoggingOptions): void;
    static setLoggingHint<T extends object>(obj: T, name: string | undefined): void;
    static getLoggingHint<T extends object>(obj: T, full?: boolean): string | undefined;
    static setProfilingMode(isOn: boolean, options?: Partial<ProfilingOptions>): void;
}
export declare function runTransactional<T>(func: F<T>, ...args: any[]): T;
export declare function runTransactional<T>(options: SnapshotOptions, func: F<T>, ...args: any[]): T;
export declare function runNonReactive<T>(func: F<T>, ...args: any[]): T;
export declare function runSensitive<T>(sensitivity: boolean, func: F<T>, ...args: any[]): T;
export declare function runContextual<T>(p: Promise<T>): Promise<T>;
export declare function manageReaction<T>(method: F<T>): Reaction<T>;
export declare function configureCurrentReaction(options: Partial<ReactivityOptions>): ReactivityOptions;
export declare function disposeRxObject(obj: any): void;
export declare function signal(enabled: boolean): (proto: object, prop: PropertyKey) => any;
export declare function signal<T>(proto: object, prop: PropertyKey): any;
export declare function transaction(proto: object, prop: PropertyKey, pd: PropertyDescriptor): any;
export declare function reaction(proto: object, prop: PropertyKey, pd: PropertyDescriptor): any;
export declare function cache(proto: object, prop: PropertyKey, pd: PropertyDescriptor): any;
export declare function options(value: Partial<ReactivityOptions>): F<any>;
