/**
 * Interface for observer objects that want to be notified of changes
 * Powerful for implementing event-driven architectures
 * and decoupling components in your application.
 * @see /docs/observer.md
 */
export interface Observer<T> {
    update(data: T): void;
}
/**
 * Subject that maintains a list of observers and notifies them of changes
 */
export declare class Subject<T> {
    private observers;
    /**
     * Add an observer to be notified of changes
     */
    subscribe(observer: Observer<T>): void;
    /**
     * Remove an observer from the notification list
     */
    unsubscribe(observer: Observer<T>): void;
    /**
     * Notify all observers of a change
     */
    notify(data: T): void;
}
