import { Params } from '@angular/router';
import { UserStatistics } from './UserInterfaces';
import { ManagedDataReply, NameValue, WidgetConfiguration, DataPolicy } from './WidgetInterfaces';
import { Dictionary } from '../classes/UtilityFunctions';
import { Observable } from 'rxjs';
import { QueueingSubject } from 'queueing-subject';
export declare class DataRequestError {
    widgetName: string;
    dataPolicy: string;
    RequestKey: string;
    ErrorMessage: string;
    constructor(widgetName: string, dataPolicy: string, RequestKey: string, ErrorMessage: string);
}
export declare class DataRequestReply {
    RequestKey: string;
    Available: boolean;
    ImmediateManagedDataReply: ManagedDataReply;
    rawReply: any;
    constructor(requestKey: string, available: boolean, managedDataReply?: ManagedDataReply, rawReply?: any);
}
export declare class WebSocketData {
    WebSocketKey: string;
    InputStream: QueueingSubject<string>;
    ConnectionStatus: Observable<any>;
    Messages: Observable<any>;
    constructor(WebSocketKey: string);
}
/**
 * AppState is used by  DisplayStateService and most of the components in the WidgetDisplayModule for tracking:
 * - data retrieved from backend web service for side nav config and associated data sets
 * - display state - side nav toggle, current side nav config, side nav display hierarchy and data, current context or filters
 */
export declare class AppDisplayState {
    sideNavWidgetConfig: SideNavWidgetConfig;
    widgetConfigList: WidgetConfiguration[];
    cachedDataReplies: Dictionary<string, ManagedDataReply>;
    pendingDataReplies: string[];
    current: CurrentAppState;
    apiVersion: string;
    apiEnvironmentVariables: NameValue[];
}
export declare class CurrentAppState {
    context: Params;
    filters: Params;
    sorts: Params;
    sideNav: SideNavState;
    breadcrumb: string;
    widthClass: string;
    canvasHeight: string;
    perRow: string;
    cachePolicy: string;
    user: adal.User;
    xMtAdfsOpenid: string;
    preferredSettings: UserStatistics;
    userIsAdmin: boolean;
    isPrintMode: boolean;
    token: string;
    userStatistics: UserStatistics;
    appTitle: string;
    webSockets: WebSocketData[];
    contextHist?: {
        key: string;
        prevValues: string[];
    }[];
    userDetails: NameValue[];
    userEventualGroups: string[];
}
export interface SideNavState {
    widgetName: string;
    displayName: string;
    filter: string;
    displayState: string;
}
export interface SideNavWidgetConfig {
    widgetNameList: SideNavList[];
}
export interface SideNavList {
    name: string;
    value: string;
    modified?: boolean;
    dateModified?: string;
    unSavedData?: boolean;
    WidgetInternalSideNav?: boolean;
}
export interface ConflictViewer {
    category: string;
    widgetName: string;
    modifiedDbDate?: string;
    data: ConflictData;
}
export interface ConflictData {
    dbCopy: SideNavList | WidgetConfiguration | DataPolicy;
    userCopy: SideNavList | WidgetConfiguration | DataPolicy;
}
export interface DataSet {
    columns: string[];
    data: string[][];
}
export interface DataArrayOfObjects extends Array<object> {
}
export declare class ManagedCacheHitLog {
    dateTime: string;
    type: string;
    client: string;
    dataPolicy: string;
    key: string;
    Status: string;
    Message: string;
    cacheRefresh: boolean;
    elapsedMs: number;
}
export interface CustomMenu {
    name: string;
    menuItems: CustomMenuItem[];
}
export interface CustomMenuItem {
    name: string;
    handler: () => void;
}
export declare class GroupedKey {
    granularity: string;
    name: string;
    context: Params;
    children: GroupedKey[];
    badge: string;
    key: string;
    visible: boolean;
    constructor(granularity: string, name: string, parentGC?: GroupedKey);
}
