;
}
/**
* ReactiveRef is just accessor function in object wrapper, that allows to use it in JSX
* and use `instanceof` to check if it is ReactiveRef. Main difference with Signal is that you shouldn't care about using hooks for it creation.
* @example
* ```tsx
* const sig = signal(1);
*
* {$(() => sig.value * 10)}
* ```
*
* Using with component wrapped in `withSignalProps`
* ```tsx
* const C = withSignalProps((props: { a: number }) => {
* return {props.a}
;
* });
*
* const sig = signal(1);
*
* sig.value)} />
* ```
*/
export declare const $: (accessor: Accessor) => ReactiveRef;
/**
* @description `WritableReactiveRef` is accessor and setter function in object wrapper, that allows to use it in JSX.
* @example
* ```tsx
* const sig = signal({
* a: [1,2,3]
* });
*
* const ref = $w({
* get: () => sig.value["a"][0],
* set: (value) => sig.value = { ...sig.value, a: [value, ...sig.value["a"].slice(1)] }
* });
*
* ref.value++}>{ref}
* ```
*
* `WritableReactiveRef` is also handy with deep reactivity tracking system
* ```tsx
* const sig = deepSignal({
* a: [1,2,3]
* });
*
* // more efficient because it doesn't recreate object on each change
* const ref = $w({
* get: () => sig.value["a"][0],
* set: (value) => sig.value["a"][0] = value
* });
* ```
*
* `WritableReactiveRef` can be used as prop with component wrapped in `withSignalProps`
* ```tsx
* const C = withSignalProps((props: { a: number }) => {
* return {props.a}
;
* });
*
* const sig = signal(1);
* const ref = $w({
* get: () => sig.value,
* set(value) {
* sig.value = value;
* },
* })
*
*
* ```
*/
export declare const $w: (options: WritableRefOptions) => WritableReactiveRef;
export declare const signalOf$: ($value: ReactiveRef) => ReadonlySignal;
export {
/**
* @deprecated use `ReactiveRef`
*/
ReactiveRef as Uncached,
/**
* @deprecated use `WritableReactiveRef`
*/
WritableReactiveRef as WritableUncached, ReactiveRef, WritableReactiveRef, };