import { LinkedList } from "./utils"; declare const RefSymbol: unique symbol; export declare class Ref { readonly [RefSymbol] = true; value: T; constructor(value?: T, shallow?: boolean); } declare type ReadonlyRef = Readonly>>; export declare function shallowRef(): Ref; export declare function shallowRef>(value: T): Ref>; export declare function shallowRef(value: T): Ref; export declare function ref(): Ref; export declare function ref>(value: T): Ref>; export declare function ref(value: T): Ref; export declare function isRef(value: any): value is Ref; export declare function unref(ref: Ref | T): T; export declare function toRef(obj: T, key: U): Ref; export declare type RefMap = { [key in keyof T]: Ref; }; export declare function toRefs(obj: T): RefMap; export declare function track(target: any, op: any, key: unknown): void; export declare function getDeps(): LinkedList void>; export declare function trigger(target: any, op: any, key: unknown, value?: any, prevValue?: any): void; export declare function computed(options: { get: () => T; set: (val: T) => void; }): Ref; export declare function computed(getter: () => T): ReadonlyRef; declare type CustomRefFactory = (track: () => void, trigger: () => void) => { get: () => T; set: (value: T) => void; }; export declare function customRef(factory: CustomRefFactory): Ref; export declare type UnwrapRef = T extends Ref ? R : UnwrapRefs; export declare type UnwrapRefs = T extends Function ? T : { [key in keyof T]: UnwrapRef; }; export {};