import { Optional } from "../lang-utils/core"; import { Option } from "../lang-utils/rust-lang-utils"; import { Counter } from "./counter"; export interface State { runtimeStatus: LifecycleStage; startTime: number; stopTime: number; } export declare type TimerTickFn = (timer: Timer) => void; declare type LifecycleStage = "created_not_started" | "running" | "stopped"; export interface Timer { readonly name: string; readonly delayMs: number; readonly durationMs: number; readonly isStopped: boolean; readonly isRunning: boolean; readonly isCreatedAndNotStarted: boolean; readonly state: State; counter?: Counter; getOnStopFn: () => Option; setOnStopFn: (fn: Optional) => void; getOnStartFn: () => Option; setOnStartFn: (fn: Optional) => void; getOnTickFn: () => Option; setOnTickFn: (fn: Optional) => void; startTicking: () => this; stopTicking: () => this; toString: () => string; } export declare const TimerErrors: { CantStart_AlreadyRunning: Error; CantStop_NotStarted: Error; CantStart_AlreadyStopped: Error; CantStop_AlreadyStopped: Error; }; export {};