declare enum BehaviorType { DELAY = "delay", EVERY = "every", FOREVER = "forever" } export type ForeverCallback = (updates: number, deltaTime: number) => void; export type EveryCallback = (updates: number, deltaTime: number) => void | (() => void); type SharedBehaviorProperties = { id?: string; labels: string[]; counter: number; }; export type Delay = SharedBehaviorProperties & { type: BehaviorType.DELAY; delay: number; resolve: () => void; }; export type Forever = SharedBehaviorProperties & { callback: ForeverCallback; type: BehaviorType.FOREVER; interval: number; }; export type Every = SharedBehaviorProperties & { callback: EveryCallback; type: BehaviorType.EVERY; duration: number; resolve: () => void; }; export type BehaviorOptions = { id?: string; labels?: string[]; }; export type Behavior = Delay | Forever | Every; export type Instance = { update: (deltaTime: number) => void; delay: (delay: number, options?: BehaviorOptions) => Promise; forever: (callback: ForeverCallback, interval: number, options?: BehaviorOptions) => Forever; every: (callback: EveryCallback, duration: number, options?: BehaviorOptions) => Promise; cancel: (behaviorId: string | Behavior) => void; get: (id: string) => Behavior | undefined; getAll: () => Behavior[]; getByLabel: (label: string) => Behavior[]; }; export default function createInstance(): Instance; export {};