import { Observer } from "./Observer";
import { ReactiveMethods } from "./types";
import { Ref } from "../core";
import { ReactiveSubscribe } from "./decorators/ReactiveSubscribe";
/**
 * @hidden
 */
export declare function withReactiveMethods<Instance, Names extends keyof Partial<Instance>, Return extends ReactiveMethods<Instance, Names>>(ref: Ref<Instance>, methods?: readonly Names[]): Return;
/**
 * @hidden
 */
export declare function defineObservers(instance: any): Record<string, Observer<any>>;
/**
 * @hidden
 */
export declare function getObservers(instance: any, isComputed?: boolean): Record<string, Observer<any>>;
/**
 * @hidden
 */
export declare function getObserver(instance: any, name: string, defaultValue?: any): Observer<any>;
/**
 * @hidden
 */
export declare function setObserver(instance: any, name: string, observer: Observer<any>): void;
/**
 * @description Whether that object is an observer instance
 * @category Reactive
 */
export declare function isObserver(val: any): val is Observer;
/**
 * @description Whether the object is reactive
 * @category Reactive
 */
export declare function isReactive(val: any): val is ReactiveSubscribe<any>;
