export type AnyFn = (...args: any) => any; export type DefineVirtualFlags = { [K in F as `~${K}`]?: V; }; export type EnableVirtualFlags = Omit & DefineVirtualFlags; export type Destroy = () => void; export type MaybeDestroy = Destroy | void; export type EffectCallback = (warmup?: true) => MaybeDestroy; export type ObserverCallback = (value: T) => void; export type Compute = (prevValue?: T) => T; export type Accessor = () => T; export type NewValue = T | ((prevValue: T) => T); export interface ReadableNode extends ReactiveNode, DefineVirtualFlags<'writable' | 'mountable'> { subsCount: number; mounted?: WritableSignal; } export interface WritableNode extends EnableVirtualFlags { } export interface ReadableSignal extends Accessor { node: ReadableNode; } export interface Morph { source: WritableSignal; get(): T; set(value: NewValue): void; } export interface WritableSignal extends ReadableSignal { node: SignalNode; (value: NewValue): void; } export type AnyAccessor = Accessor; export type AnyReadableSignal = ReadableSignal; export type AnyWritableSignal = WritableSignal; export type AnySignal = AnyReadableSignal | AnyWritableSignal; export type AnyAccessorOrSignal = AnyAccessor | AnySignal; export type AccessorValue = T extends Accessor ? U : never; export type MaybeAccessorValue = T extends Accessor ? U : T; export type Mountable = S & { node: EnableVirtualFlags; }; export interface ReactiveNode { deps?: Link; depsTail?: Link; subs?: Link; subsTail?: Link; flags: number; modes: number; noMount?: ReactiveNode; } export interface Link { version: number; dep: ReactiveNode; sub: ReactiveNode; prevSub: Link | undefined; nextSub: Link | undefined; prevDep: Link | undefined; nextDep: Link | undefined; } export interface Stack { value: T; prev: Stack | undefined; } export interface EffectNode extends ReactiveNode { fn: EffectCallback; destroy: MaybeDestroy; } export interface ComputedNode extends ReadableNode { value: T | undefined; compute: Compute; } export interface SignalNode extends WritableNode { value: T; pendingValue: T; } //# sourceMappingURL=types.d.ts.map