export interface Observer {
    update(sender: any, data: any): void;
}
export interface IObservable {
    /**
     * ajoute un observateur à la liste
     */
    addObserver(o: Observer): void;
    /**
     * supprime un observateur de la liste
     */
    removeObserver(o: Observer): void;
    /**
     * notifie un événement aux observateurs
     */
    notifyObservers(data: any, sender?: any): void;
}
export declare class Observable implements IObservable {
    private _observers;
    constructor();
    /**
     * ajoute un observateur à la liste
     */
    addObserver(o: Observer): void;
    /**
     * supprime un observateur de la liste
     */
    removeObserver(o: Observer): void;
    /**
     * notifie un événement aux observateurs
     */
    notifyObservers(data: any, sender?: any): void;
    getObservers(): Observer[];
}
/**
 * @return true si l'objet passé implémente IObservable
 * @param o objet à tester
 */
export declare function isObservable(o: any): boolean;
/**
 * cast d'un objet implémentant IObservable
 * @param o objet à convertir
 */
export declare function asObservable(o: any): IObservable;
//# sourceMappingURL=observer.d.ts.map