import { type IEvent } from './event.js'; import type { DisposeFunction, IDisposable } from '../functions/disposer.js'; import { Getter } from '../types/getter.js'; import type { Nullable } from '../types/misc.js'; import { Loggable } from '../logger/loggable.js'; export type TransitionReaction = (getter: Getter, handler: (v: T) => any) => DisposeFunction; export declare class TransitionObserver extends Loggable implements IDisposable { protected readonly reaction: TransitionReaction; private _event; private _getter; private _filter; private _disposer; private _prev; private _from; private _to; private _cb; private _fireOnce; private _promise; private _promiseReject; constructor(reaction: TransitionReaction, getter?: () => T); get event(): IEvent; get currentValue(): Nullable; get isObserving(): boolean; private get isPromising(); observe(getter: () => T): this; from(from: Getter): this; to(to: Getter): this; filter(filter: (next: T, prev: Nullable) => boolean): this; cb(cb: (v: Nullable) => any): this; forceCall(): this; fireOnce(enable?: boolean): this; forceCheck(): boolean; andForceCheck(): this; getPromise(timeout?: number | null): Promise>; reverse(): TransitionObserver; dispose: () => void; private _checkValue; private _finishPromise; } export declare function waitFor(reaction: TransitionReaction, current: () => T, toBe: T): Promise>;