import { ReactiveNode } from "./alien.cjs"; //#region src/types.d.ts type Selection = Readable; interface InteropSubscribable { subscribe: (observer: Observer) => Subscription; } type Observer = { next?: (value: T) => void; error?: (err: unknown) => void; complete?: () => void; }; interface Subscription { unsubscribe: () => void; } interface Subscribable extends InteropSubscribable { subscribe: ((observer: Observer) => Subscription) & ((next: (value: T) => void, error?: (error: any) => void, complete?: () => void) => Subscription); } interface Readable extends Subscribable { get: () => T; } interface BaseAtom extends Subscribable, Readable {} interface InternalBaseAtom extends Subscribable, Readable { /** @internal */ _snapshot: T; /** @internal */ _update: (getValue?: T | ((snapshot: T) => T)) => boolean; } interface Atom extends BaseAtom { /** Sets the value of the atom using a function. */ set: ((fn: (prevVal: T) => T) => void) & ((value: T) => void); } interface AtomOptions { compare?: (prev: T, next: T) => boolean; } type AnyAtom = BaseAtom; interface InternalReadonlyAtom extends InternalBaseAtom, ReactiveNode {} /** * An atom that is read-only and cannot be set. * * @example * * ```ts * const atom = createAtom(() => 42); * // @ts-expect-error - Cannot set a readonly atom * atom.set(43); * ``` */ interface ReadonlyAtom extends BaseAtom {} //#endregion export { AnyAtom, Atom, AtomOptions, BaseAtom, InternalBaseAtom, InternalReadonlyAtom, InteropSubscribable, Observer, Readable, ReadonlyAtom, Selection, Subscribable, Subscription }; //# sourceMappingURL=types.d.cts.map