Notifications manager singleton

interface INotificationsManager {
    init(): void;
    addNotification(notification: Notification): void;
    removeNotification(notification: Notification): void;
    getNotifications(): Notification[];

}

interface INotificationsManagerSettings {
    callback?: {
        notificationAdded?(): any;
        notificationRemoved?(): any;
        notificationClosed?(): any;
    };
    $componentSelector: JQuery;
    $closeComponentSelector?: JQuery;
    deleteOnClose?: boolean;
}

new NotificationsManager(settings: INotificationsManagerSettings);

Single notification class

interface INotification {
    getMessage(): string;
    getType(): string;
    remove(): string;
    setType(type: INotificationType): void;
    hide(hiddenClassName?: string): void;
    show(): void;
    getTemplate(): HTMLElement;
}

interface INotificationSettings {
    notificationHTML: string|JQuery;
    textSelector: string|JQuery;
    iconSelector: string|JQuery;
    onClose?(): any;
    onAdd?(): any;
}

interface INotificationType {
    name: string;
    iconHTML?: string;
    textClass?: string;
}

new Notification(message: string, settings: INotificationSettings);