import type { Alpine as AlpineType } from 'alpinejs'; import type { toRaw as _toRaw, stop as _stop } from 'vue'; declare const _refBrand: unique symbol; declare global { var _alpineReactivity: { Alpine: AlpineType | null; }; } export declare const setAlpine: (instance: AlpineType) => void; export declare const getAlpine: () => AlpineType; export interface Ref { readonly [_refBrand]: true; value: T; } export type MaybeRef = T | Ref; export interface ComputedRef extends Ref { /** `effect` is added to be able to differentiate refs from computed properties. */ effect: true; readonly value: T; } export type ToRefs = { [K in keyof T]: Ref>; }; export declare const computed: (cb: () => T) => ComputedRef; export declare const reactive: (val: T) => T; export declare const ref: (value?: T | undefined) => T extends Ref ? T : Ref; export declare const writableComputed: (options: { get: () => T; set: (newVal: T) => void; }) => Ref; export declare function isRef(value: any): value is Ref; export declare const isComputed: (value: any) => value is ComputedRef; export declare function unref(ref: T | Ref): T; export declare const shallowRef: (initialValue?: T | undefined) => Ref; export declare const toRef: (object: T, key: K) => Ref; export declare const toRefs: (object: T) => ToRefs; export declare const toRaw: typeof _toRaw; export declare const stop: typeof _stop; export type UnwrapRef = T extends Ref ? UnwrapRefSimple : T extends ComputedRef ? UnwrapRefSimple : UnwrapRefSimple; export type UnwrapRefSimple = T extends Ref ? T : T extends Map ? Map> & UnwrapRef>> : T extends WeakMap ? WeakMap> & UnwrapRef>> : T extends Set ? Set> & UnwrapRef>> : T extends WeakSet ? WeakSet> & UnwrapRef>> : T extends ReadonlyArray ? { [K in keyof T]: UnwrapRefSimple; } : T; /** * @example * * const state = readonly({ * count: 1, * nested: { * value: 10, * }, * }); * * console.log(state.count); // Output: 1 * state.count = 2; // Warning: Cannot set property count on a readonly object * console.log(state.count); // Output: 1 * delete state.count; // Warning: Cannot delete property count on a readonly object * * console.log(state.nested.value); // Output: 10 * state.nested.value = 20; // Warning: Cannot set property value on a readonly object * console.log(state.nested.value); // Output: 10 */ export declare const readonly: (target: T) => any; type Primitive = string | number | boolean | bigint | symbol | undefined | null; type Builtin = Primitive | Function | Date | Error | RegExp; export type DeepReadonly = T extends Builtin ? T : T extends Map ? ReadonlyMap, DeepReadonly> : T extends ReadonlyMap ? ReadonlyMap, DeepReadonly> : T extends WeakMap ? WeakMap, DeepReadonly> : T extends Set ? ReadonlySet> : T extends ReadonlySet ? ReadonlySet> : T extends WeakSet ? WeakSet> : T extends Promise ? Promise> : T extends Ref ? Readonly>> : T extends {} ? { readonly [K in keyof T]: DeepReadonly; } : Readonly; export type WatchEffect = () => void; export type WatchSource = Ref | ComputedRef | (() => T); export type WatchCallback = (value: V, oldValue: OV) => any; export type WatchStopHandle = () => void; type MapSources = { [K in keyof T]: T[K] extends WatchSource ? V : T[K] extends object ? T[K] : never; }; type MapOldSources = { [K in keyof T]: T[K] extends WatchSource ? Immediate extends true ? V | undefined : V : T[K] extends object ? Immediate extends true ? T[K] | undefined : T[K] : never; }; export interface WatchOptions { immediate?: Immediate; deep?: boolean; flush?: 'pre' | 'sync' | 'post'; } export declare function watchEffect(effect: () => unknown): WatchStopHandle; export declare function watch[]>, Immediate extends Readonly = false>(sources: T, cb: WatchCallback, MapOldSources>, options?: WatchOptions): WatchStopHandle; export declare function watch = false>(source: WatchSource, cb: WatchCallback, options?: WatchOptions): WatchStopHandle; export {};