import { PublishedEventsEnum } from "../types/PublishedEvents"; /** * Abstract class representing an observable in code assessment context. * @abstract */ declare abstract class Observable { observers: Observer[]; constructor(); /** * Subscribe to this observable. */ subscribe(id: string, typeOfEvent: PublishedEventsEnum, cb: () => void): void; /** * Unsubscribe from this observable. */ unsubscribe(observerId: string): void; /** * Unsubscribe all observers from this observable. */ unsubscribeAll(): void; /** * Publish updates to all subscribers. */ publish(typeOfEvent: PublishedEventsEnum, data?: any): void; } /** * Class representing an observer in code assessment context. */ declare class Observer { id: string; typeOfEventToListenFor: PublishedEventsEnum; cb: (data: any) => void; constructor(id: string, typeOfEventToListenFor: PublishedEventsEnum, cb: () => void); /** * Notify this observer of updates. * @param {PublishedEventsEnum} typeOfEvent */ notify(typeOfEvent: PublishedEventsEnum, data?: any): void; } export { Observable, Observer };