reactronic
Version:
Reactronic - Transactional Reactive State Management
41 lines (40 loc) • 1.63 kB
TypeScript
import { Worker } from "../Worker.js";
import { ObservableObject } from "./Mvcc.js";
export declare abstract class Indicator extends ObservableObject {
abstract readonly isBusy: boolean;
abstract readonly counter: number;
abstract readonly workers: ReadonlySet<Worker>;
abstract readonly busyDuration: number;
abstract whenBusy(): Promise<void>;
abstract whenIdle(): Promise<void>;
static create(hint: string, activationDelay: number, deactivationDelay: number, durationResolution: number): Indicator;
}
export declare class IndicatorImpl extends Indicator {
isBusy: boolean;
counter: number;
workers: Set<Worker>;
busyDuration: number;
readonly internals: {
whenBusy: Promise<void> | undefined;
resolveWhenBusy: ((value?: void) => void) | undefined;
whenIdle: Promise<void> | undefined;
resolveWhenIdle: ((value?: void) => void) | undefined;
started: number;
activationDelay: number;
activationTimeout: undefined;
deactivationDelay: number;
deactivationTimeout: undefined;
durationResolution: number;
};
whenBusy(): Promise<void>;
whenIdle(): Promise<void>;
enter(worker: Worker): void;
leave(worker: Worker): void;
static createImpl(hint: string, activationDelay: number, deactivationDelay: number, durationResolution: number): IndicatorImpl;
static enter(mon: IndicatorImpl, worker: Worker): void;
static leave(mon: IndicatorImpl, worker: Worker): void;
private static doCreate;
private static activate;
private static deactivate;
private static tick;
}