/// <reference types="lodash" />
import { InteractionMode, PaneRouteData, Pane, CollectionViewState } from './route-data';
import { UrlManagerService } from './url-manager.service';
import { RepLoaderService } from './rep-loader.service';
import * as Models from './models';
import { IDraggableViewModel } from './view-models/idraggable-view-model';
import { ConfigService } from './config.service';
import { LoggerService } from './logger.service';
import { Dictionary } from 'lodash';
import { Observable } from 'rxjs/Observable';
export declare class ContextService {
    private readonly urlManager;
    private readonly repLoader;
    private readonly configService;
    private readonly loggerService;
    clearingDataFlag: boolean;
    constructor(urlManager: UrlManagerService, repLoader: RepLoaderService, configService: ConfigService, loggerService: LoggerService);
    private readonly keySeparator;
    private currentObjects;
    private transientCache;
    private currentMenuList;
    private currentServices;
    private currentMenus;
    private currentVersion;
    private currentUser;
    private readonly recentcache;
    private readonly dirtyList;
    private currentLists;
    private readonly parameterCache;
    private readonly objectEditCache;
    getFile: (object: Models.DomainObjectRepresentation, url: string, mt: string) => Promise<Blob>;
    setFile: (object: Models.DomainObjectRepresentation, url: string, mt: string, file: Blob) => Promise<boolean>;
    clearCachedFile: (url: string) => void;
    clearCachedCollections(obj: Models.DomainObjectRepresentation): void;
    getDomainObject: (paneId: Pane, oid: Models.ObjectIdWrapper, interactionMode: InteractionMode) => Promise<Models.DomainObjectRepresentation>;
    private editOrReloadObject(paneId, object, inlineDetails);
    getIsDirty: (oid: Models.ObjectIdWrapper) => boolean;
    mustReload: (oid: Models.ObjectIdWrapper) => boolean;
    getObjectForEdit: (paneId: Pane, object: Models.DomainObjectRepresentation) => Promise<Models.DomainObjectRepresentation>;
    reloadObject: (paneId: Pane, object: Models.DomainObjectRepresentation) => Promise<Models.DomainObjectRepresentation>;
    getService: (paneId: Pane, serviceType: string) => Promise<Models.DomainObjectRepresentation>;
    getActionDetails: (actionMember: Models.ActionMember) => Promise<Models.ActionRepresentation>;
    getCollectionDetails: (collectionMember: Models.CollectionMember, state: CollectionViewState, ignoreCache: boolean) => Promise<Models.CollectionRepresentation>;
    getInvokableAction: (action: Models.ActionRepresentation | Models.ActionMember) => Promise<Models.ActionRepresentation | Models.InvokableActionMember>;
    getMenu: (menuId: string) => Promise<Models.MenuRepresentation>;
    private pendingClearMessages;
    private pendingClearWarnings;
    clearMessages: () => void;
    clearWarnings: () => void;
    broadcastMessage: (m: string) => void;
    broadcastWarning: (w: string) => void;
    getHome: () => Promise<Models.HomePageRepresentation>;
    getServices: () => Promise<Models.DomainServicesRepresentation>;
    getMenus: () => Promise<Models.MenusRepresentation>;
    getVersion: () => Promise<Models.VersionRepresentation>;
    getUser: () => Promise<Models.UserRepresentation>;
    getObject: (paneId: Pane, oid: Models.ObjectIdWrapper, interactionMode: InteractionMode) => Promise<Models.DomainObjectRepresentation>;
    getCachedList: (paneId: Pane, page: number, pageSize: number) => Models.ListRepresentation | null;
    clearCachedList: (paneId: Pane, page: number, pageSize: number) => void;
    private cacheList(list, index);
    private handleResult;
    private getList;
    getActionExtensionsFromMenu: (menuId: string, actionId: string) => Promise<Models.Extensions>;
    getActionExtensionsFromObject: (paneId: Pane, oid: Models.ObjectIdWrapper, actionId: string) => Promise<Models.Extensions>;
    private getPagingParms(page, pageSize);
    getListFromMenu: (routeData: PaneRouteData, page?: number | undefined, pageSize?: number | undefined) => Promise<Models.ListRepresentation>;
    getListFromObject: (routeData: PaneRouteData, page?: number | undefined, pageSize?: number | undefined) => Promise<Models.ListRepresentation>;
    setObject: (paneId: Pane, co: Models.DomainObjectRepresentation) => Models.DomainObjectRepresentation;
    swapCurrentObjects: () => void;
    private currentError;
    getError: () => Models.ErrorWrapper | null;
    setError: (e: Models.ErrorWrapper) => Models.ErrorWrapper;
    private previousUrl;
    getPreviousUrl: () => string | null;
    setPreviousUrl: (url: string) => string;
    private doPrompt;
    autoComplete: (field: Models.IField, id: string, objectValues: () => Dictionary<Models.Value>, searchTerm: string, digest?: string | null | undefined) => Promise<Dictionary<Models.Value> | null>;
    conditionalChoices: (field: Models.IField, id: string, objectValues: () => Dictionary<Models.Value>, args: Dictionary<Models.Value>, digest?: string | null | undefined) => Promise<Dictionary<Models.Value> | null>;
    private nextTransientId;
    setResult: (action: Models.ActionRepresentation | Models.InvokableActionMember, result: Models.ActionResultRepresentation, fromPaneId: number, toPaneId: number, page: number, pageSize: number) => void;
    private pendingPotentActionCount;
    incPendingPotentActionOrReload(paneId: Pane): void;
    decPendingPotentActionOrReload(paneId: Pane): void;
    isPendingPotentActionOrReload(paneId: Pane): boolean;
    private warningsSource;
    private messagesSource;
    warning$: Observable<string[]>;
    messages$: Observable<string[]>;
    private setMessages(result);
    private copiedViewModelSource;
    copiedViewModel$: Observable<IDraggableViewModel>;
    private copiedViewModel;
    setCopyViewModel(dvm: IDraggableViewModel | null): void;
    getCopyViewModel(): IDraggableViewModel | null;
    private concurrencyErrorSource;
    concurrencyError$: Observable<Models.ObjectIdWrapper>;
    setConcurrencyError(oid: Models.ObjectIdWrapper): void;
    private invokeActionInternal(invokeMap, action, fromPaneId, toPaneId, setDirty, gotoResult?);
    private getSetDirtyFunction(action, parms);
    invokeAction: (action: Models.ActionRepresentation | Models.InvokableActionMember, parms: Dictionary<Models.Value>, fromPaneId?: number, toPaneId?: number, gotoResult?: boolean) => Promise<Models.ActionResultRepresentation>;
    private setNewObject(updatedObject, paneId, viewSavedObject);
    updateObject: (object: Models.DomainObjectRepresentation, props: Dictionary<Models.Value>, paneId: Pane, viewSavedObject: boolean) => Promise<Models.DomainObjectRepresentation>;
    saveObject: (object: Models.DomainObjectRepresentation, props: Dictionary<Models.Value>, paneId: Pane, viewSavedObject: boolean) => Promise<Models.DomainObjectRepresentation>;
    validateUpdateObject: (object: Models.DomainObjectRepresentation, props: Dictionary<Models.Value>) => Promise<boolean>;
    validateSaveObject: (object: Models.DomainObjectRepresentation, props: Dictionary<Models.Value>) => Promise<boolean>;
    private subTypeCache;
    isSubTypeOf: (toCheckType: string, againstType: string) => Promise<boolean>;
    private cacheRecentlyViewed(obj);
    getRecentlyViewed: () => Models.DomainObjectRepresentation[];
    clearRecentlyViewed: () => void;
    private logoff();
    cacheFieldValue: (dialogId: string, pid: string, pv: Models.Value, paneId?: Pane) => void;
    getDialogCachedValues: (dialogId?: string | null, paneId?: Pane) => Dictionary<Models.Value>;
    getObjectCachedValues: (objectId?: string | null, paneId?: Pane) => Dictionary<Models.Value>;
    clearDialogCachedValues: (paneId?: Pane) => void;
    clearObjectCachedValues: (paneId?: Pane) => void;
    cachePropertyValue: (obj: Models.DomainObjectRepresentation, p: Models.PropertyMember, pv: Models.Value, paneId?: Pane) => void;
}
