import { SignalNode } from './signal.js'; import { ReactiveNode } from './graph.js'; import { ComputedNode } from './computed.js'; declare const NODE: unique symbol; export declare namespace Signal { export let isState: (s: any) => boolean, isComputed: (s: any) => boolean, isWatcher: (s: any) => boolean; export class State { #private; readonly [NODE]: SignalNode; constructor(initialValue: T, options?: Signal.Options); get(): T; set(newValue: T): void; } export class Computed { #private; readonly [NODE]: ComputedNode; constructor(computation: () => T, options?: Signal.Options); get(): T; } type AnySignal = State | Computed; type AnySink = Computed | subtle.Watcher; export namespace subtle { function untrack(cb: () => T): T; function introspectSources(sink: AnySink): AnySignal[]; function introspectSinks(signal: AnySignal): AnySink[]; function hasSinks(signal: AnySignal): boolean; function hasSources(signal: AnySink): boolean; class Watcher { #private; readonly [NODE]: ReactiveNode; constructor(notify: (this: Watcher) => void); watch(...signals: AnySignal[]): void; unwatch(...signals: AnySignal[]): void; getPending(): Computed[]; } function currentComputed(): Computed | undefined; const watched: unique symbol; const unwatched: unique symbol; } export interface Options { equals?: (this: AnySignal, t: T, t2: T) => boolean; [Signal.subtle.watched]?: (this: AnySignal) => void; [Signal.subtle.unwatched]?: (this: AnySignal) => void; } export {}; } export {}; //# sourceMappingURL=wrapper.d.ts.map