import { ElementRef } from '@angular/core';
import { CompositeKey } from '@memberjunction/core';
import { ResourceTypeEntity, UserNotificationEntity, ViewColumnInfo } from '@memberjunction/core-entities';
import { Observable } from 'rxjs';
import { NotificationService } from "@progress/kendo-angular-notification";
import { MJNotificationService } from '@memberjunction/ng-notifications';
import { Router } from '@angular/router';
import * as i0 from "@angular/core";
export declare class SharedService {
    private notificationService;
    private mjNotificationsService;
    private router;
    private static _instance;
    private static _loaded;
    private static _resourceTypes;
    private static isLoading$;
    private tabChange;
    tabChange$: Observable<unknown>;
    constructor(notificationService: NotificationService, mjNotificationsService: MJNotificationService, router: Router);
    static get Instance(): SharedService;
    /**
     * Returns the current session ID, which is automatically created when the service is instantiated.
     */
    get SessionId(): string;
    get ResourceTypes(): ResourceTypeEntity[];
    get ViewResourceType(): ResourceTypeEntity;
    get RecordResourceType(): ResourceTypeEntity;
    get DashboardResourceType(): ResourceTypeEntity;
    get ReportResourceType(): ResourceTypeEntity;
    get SearchResultsResourceType(): ResourceTypeEntity;
    get ListResourceType(): ResourceTypeEntity;
    ResourceTypeByID(id: string): ResourceTypeEntity | undefined;
    ResourceTypeByName(name: string): ResourceTypeEntity | undefined;
    /**
     * Refreshes the data for the service. If OnlyIfNeeded is true, then the data is only refreshed if it hasn't been loaded yet.
     */
    static RefreshData(OnlyIfNeeded?: boolean): Promise<void>;
    private static handleDataLoading;
    FormatColumnValue(col: ViewColumnInfo, value: any, maxLength?: number, trailingChars?: string): any;
    ConvertMarkdownStringToHtmlList(listType: HtmlListType, text: string): string;
    InvokeManualResize(delay?: number): void;
    PushStatusUpdates(): Observable<string>;
    private _currentUserImage;
    get CurrentUserImage(): string | Blob;
    set CurrentUserImage(value: string | Blob);
    /**
     * @deprecated Use MJNotificationService.UserNotifications instead
     */
    static get UserNotifications(): UserNotificationEntity[];
    /**
     * @deprecated Use MJNotificationService.UnreadUserNotifications instead
     */
    static get UnreadUserNotifications(): UserNotificationEntity[];
    /**
     * @deprecated Use MJNotificationService.UnreadUserNotificationCount instead
     */
    static get UnreadUserNotificationCount(): number;
    /**
     * Utility method that returns true if child is a descendant of parent, false otherwise.
     */
    static IsDescendant(parent: ElementRef, child: ElementRef): boolean;
    /**
     * Creates a notification in the database and refreshes the UI. Returns the notification object.
     * @param title
     * @param message
     * @param resourceTypeId
     * @param resourceRecordId
     * @param resourceConfiguration Any object, it is converted to a string by JSON.stringify and stored in the database
     * @returns
     * @deprecated Use MJNotificationService.CreateNotification instead
     */
    CreateNotification(title: string, message: string, resourceTypeId: string | null, resourceRecordId: string | null, resourceConfiguration: any | null, displayToUser?: boolean): Promise<UserNotificationEntity>;
    /**
     * @deprecated Use MJNotificationService.RefreshUserNotifications instead
     */
    static RefreshUserNotifications(): Promise<void>;
    /**
     * Creates a message that is not saved to the User Notifications table, but is displayed to the user.
     * @param message - text to display
     * @param style - display styling
     * @param hideAfter - option to auto hide after the specified delay in milliseconds
     * @deprecated Use MJNotificationService.CreateSimpleNotification instead
     */
    CreateSimpleNotification(message: string, style?: "none" | "success" | "error" | "warning" | "info", hideAfter?: number): void;
    private _resourceTypeMap;
    /**
     * Maps a Resource Type record Name column to the corresponding route segment
     * @param resourceTypeName
     * @returns
     */
    mapResourceTypeNameToRouteSegment(resourceTypeName: string): string | null;
    /**
     * Maps a route segment to the corresponding Resource Type record Name column
     * @param resourceRouteSegment
     * @returns
     */
    mapResourceTypeRouteSegmentToName(resourceRouteSegment: string): string | null;
    OpenEntityRecord(entityName: string, recordPkey: CompositeKey): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SharedService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SharedService>;
}
export declare const HtmlListType: {
    readonly Unordered: "Unordered";
    readonly Ordered: "Ordered";
};
export type HtmlListType = typeof HtmlListType[keyof typeof HtmlListType];
export declare const EventCodes: {
    readonly ViewClicked: "ViewClicked";
    readonly EntityRecordClicked: "EntityRecordClicked";
    readonly AddDashboard: "AddDashboard";
    readonly AddReport: "AddReport";
    readonly AddQuery: "AddQuery";
    readonly ViewCreated: "ViewCreated";
    readonly ViewUpdated: "ViewUpdated";
    readonly RunSearch: "RunSearch";
    readonly ViewNotifications: "ViewNotifications";
    readonly PushStatusUpdates: "PushStatusUpdates";
    readonly UserNotificationsUpdated: "UserNotificationsUpdated";
    readonly CloseCurrentTab: "CloseCurrentTab";
    readonly ListCreated: "ListCreated";
    readonly ListClicked: "ListClicked";
};
export type EventCodes = typeof EventCodes[keyof typeof EventCodes];
//# sourceMappingURL=shared.service.d.ts.map