import { Behavior } from "./behavior.js"; import { Extent } from "./extent.js"; import { Graph } from "./graph.js"; import { GraphEvent, Subscription, Transient } from "./common"; export declare enum LinkType { reactive = 0, order = 1 } export interface Demandable { resource: Resource; type: LinkType; } export declare class Resource implements Demandable { debugName: string | null; isResource: boolean; extent: Extent; graph: Graph; subsequents: Set; suppliedBy: Behavior | null; skipChecks: boolean; didUpdateSubscribers?: Set; constructor(extent: Extent, name?: string); get order(): Demandable; get resource(): Resource; get type(): LinkType; toString(): string; assertValidUpdater(): void; assertValidAccessor(): void; get justUpdated(): boolean; subscribeToJustUpdated(callback: () => void): (() => void); _subscribeToJustUpdated(subscription: Subscription): (() => void); protected notifyJustUpdatedSubscribers(): void; } export declare class Moment extends Resource implements Transient { private _happened; private _happenedValue; private _happenedWhen; get justUpdated(): boolean; get value(): T | undefined; get event(): GraphEvent | null; toString(): string; justUpdatedTo(value: T): boolean; updateWithAction(value?: T | undefined, debugName?: string): void; update(value?: T | undefined): void; clear(): void; } export declare type StateHistory = { value: T; event: GraphEvent; }; export declare class State extends Resource implements Transient { private currentState; private previousState; constructor(extent: Extent, initialState: T, name?: string); toString(): string; updateWithAction(newValue: T, debugName?: string): void; update(newValue: T): void; updateForce(newValue: T): void; private _updateForce; clear(): void; get value(): T; get event(): GraphEvent; private get trace(); get traceValue(): T; get traceEvent(): GraphEvent; get justUpdated(): boolean; justUpdatedTo(toState: T): boolean; justUpdatedFrom(fromState: T): boolean; justUpdatedToFrom(toState: T, fromState: T): boolean; }