/// <reference types="jquery" />
/// <reference types="jquery" />
import { GUID } from "./globals";
import { UCPermit, QueryFilters, SessionClient, Suggestion, UCPermitSet, UIDisplayConfig, UIDisplayPart } from "./SwaggerClients";
import * as _SwaggerClientExports from "./SwaggerClients";
export declare enum LoggingLevels {
    None = 0,
    Normal = 1,
    Verbose = 2,
    Debug = 9,
    VerboseDebug = 92
}
export declare enum ValidationMode {
    none = "0",
    /** 1,T*,Y* are true, empty, 0,F*,N* are false */
    boolean = "1",
    numeric = "2",
    positive = "5",
    integer = "6",
    positiveinteger = "7",
    date = "3",
    futuredate = "4",
    /** sort of like past date */
    untildate = "8",
    /** non empty, can be combined with other validations */
    required = "16",
    filename = "32",
    url = "64"
}
type PartStorageList = Map<PartContextKey, PartStorageData>;
export type CoordinateWithSize = {
    top: number;
    left: number;
    width: number;
    height: number;
};
export type UploadMode = "catalog" | "ContactData" | "ContactPhoto" | "doc" | "SitePhoto" | "template";
export type SFRESTClientOptions = {
    /** @default  33000 (about 33 seconds) */
    BasicPingServerInterval: number;
    /** @default "about:blank" */
    BlankPageURI: string;
    CatalogFolderRoot: GUID;
    /**
    * How long (in milliseconds) should a DV result be cached for reuse
    * @default 16 minutes
   */
    DVCacheLife: number;
    /** Adjusts logging; 2 is verbose, 9 is lots
     * @default None (0)
     */
    LogLevel: LoggingLevels.None;
    NonPostbackEventID: string;
    /**
     * When true PopDoc() will always use new UI
     */
    PopDocForceXBUI: boolean;
    /** @default '{0}/DocDetail.aspx?id={1}', */
    PopDocLegacyURL: string;
    /**
     * @abstract  PopDocXBURL can use {0} place holder for site path and {1} placeholder for document ID
     * @default "{0}/wx/#!/document?id={1}" */
    PopDocXBURL: string;
    /** @default  '{0}/DocDetail.aspx?add={1}&project={2}{3}' */
    PopNewDocLegacyURL: string;
    /** @default "{0}/wx/#!/document?add={1}&project={2}{3}"  */
    PopNewDocXBURL: string;
    PopupWindowLargeCWS: CoordinateWithSize;
    PopupWindowHelpMenuCWS: CoordinateWithSize;
    PopupWindowUserSettingsCWS: CoordinateWithSize;
    PopupWindowViewUserCWS: CoordinateWithSize;
    PopupWindowTop: number;
    /** @default '{0}/ProjectDetail.aspx?id={1}' */
    ProjectLegacyURL: string;
    /** @default '{0}/wx/#!/main/projectDashboard?project={1}' */
    ProjectXBURL: string;
    UseClassicCatalog: boolean;
    SuggestionLimit: number;
    SuggestionCacheLifespanMs: number;
    /** @default 999, // about 1 second */
    TaskStatePollInterval: number;
    /** @default 1048000, // about 1 minute */
    UploadChunkSize: number;
    /** in Bytes.  Default is about 8MB (Box.com uses 20)  Files smaller than this are uploaded in a single request */
    UploadDirectLimit: number;
    /** Use -1 to disable, 1 to enable and 0 (default) to defer to DevMode */
    WxEventTraceMode: -1 | 1 | 0;
    /** matches are ignored, default is to ignore onMouseM*
     * @default /on(?!MouseM|Destruct)([\w]+)$/gmi,
    */
    WxEventFilter: RegExp;
    /** When TRUE, Grids on Home (Action Items, Alerts), and Project Dashboard render using original XB logic
     * @default false ....  set with top.sfClient.SetOptions().WxUseXBGrid = true
    */
    WxUseXBGrid: boolean;
    [key: string]: string | number | RegExp | boolean | CoordinateWithSize | LoggingLevels | NVPair;
};
declare class _SessionClientGetWCCShare {
    APIResult: Promise<WCCData | null> | null;
    ForNavHash: number | undefined;
    AsOf: number;
    IsResolved: boolean;
    constructor(apiPromise: Promise<WCCData | null>, forPageHash: number);
    AppliesFor(testHash: number): boolean;
    Expired(): boolean;
}
export declare class SFFileUploadContext {
    /** upload mode */
    mode: UploadMode;
    /** key for a document  */
    DMK: GUID | undefined;
    /** key, for an item on the document (requires DMK) */
    itemKey: GUID | undefined;
    /** key for a folder */
    cfk: GUID | undefined;
    /** key for a template (required for mode=template) */
    fk: GUID | undefined;
    /** key, such as for  a user/contact (required for mode=ContactPhoto) */
    pk: GUID | undefined;
    /** project */
    project: string | undefined;
    /** data cache key */
    fromDS: string | undefined;
    constructor(mode: UploadMode);
}
declare class PartStorageData {
    CFG: UIDisplayPart | null;
    DataModels: Map<string, DataModelCollection>;
    RestClient: sfRestClient;
    _PromiseList: Promise<any>[] | null;
    protected _InitializationResultPromise: Promise<UIDisplayPart | null> | null;
    protected _ReferenceKey: PartContextKey;
    protected _ForPartName: string;
    /** Use sfApplicationRootPath instead of _SiteURL */
    protected static _SiteURL: string;
    protected static _DMCount: number;
    CFGLoader(): Promise<UIDisplayPart | null>;
    static _LoadedParts: PartStorageList;
    static ClearCache(): void;
    /**
     *
     * @param client sfRestClient
     * @param partName something like ActionItems or ProjectCA
     * @param forDocType GUID
     * @param forProject project ID; if empty client.GetPageProjectKey() is used
     * @param context
     * @returns true if the CFG had been in the cache
     * @see RegisterRestoredCFG
     */
    static ClearCachedCFG(client: sfRestClient, partName: string, forDocType: GUID | undefined, forProject: GUID | undefined, context: string | undefined): boolean;
    /**
     *
     * @param client sfRestClient
     * @param partName something like ActionItems or ProjectCA
     * @param forDocType GUID
     * @param forProject project ID; if empty client.GetPageProjectKey() is used
     * @param context
     * @param usingCfg if supplied, stored, otherwise resolved
     * @returns
     * @see RegisterRestoredCFG
     */
    static PartStorageDataFactory(client: sfRestClient, partName: string, forDocType: GUID | undefined, forProject: GUID | undefined, context: string | undefined, usingCfg?: UIDisplayPart): PartStorageData;
    /**
     *
     * @param client
     * @param lookupName
     * @param usingCfg
     * @returns
     * @see RegisterRestoredLookupCFG
     */
    static PartStorageDataLookupFactory(client: sfRestClient, lookupName: string, usingCfg?: UIDisplayPart): PartStorageData;
    static GetPartContextKey(partName: string, forDocType: GUID | undefined, forProject: GUID | undefined, context: string | undefined): PartContextKey;
    GetDataModelBuildContextKey(): string;
    protected constructor(client: sfRestClient, partName: string, forDocType: GUID | undefined, forProject: GUID | undefined, context: string | undefined);
}
/**
 * Options for Query Alias Popup ( QAPopInfo )
 */
declare class QAInfoOptions {
    /**
     * Title for JQueryUI dialog, eg "Routes that Reference Role: $V"; $V is replace by value text (see ValueCSS)
     */
    DialogTitle: string;
    /**
     * Applied to DIV around table.  Default is sfUIShowInfo
     */
    DialogCSS: string;
    /**
     * Shown if no results.  Example: "No route references were found."  Default: Nothing to see here...
     */
    EmptyDialogText: string;
    /**
     * HTTP GET query that returns JSON; $K is replaced by key from callback
     */
    QueryURL: string;
    /**
     * When not empty, used to find value for $V
     */
    ValueCSS: string | undefined;
    /**
     *  Finds closest element with .sfUIPopQA and its matching .uiQA-xxx and creates options class from CSS -- attributes
     *
     *
     *  .sfQA-RoleRouteInfo {
     *
     *      --dialog-title:"Routes that Reference Role" ;
     *      --dialog-class:sfUIShowInfo;
     *      --dialog-value-class: false
     *      --dialog-empty-text:"No route references were found." ;
     *      --dialogQueryL:"util/jstNodes.ashx/qa/RoleMemberInfo/$K";
     *  }
     */
    static QAInfoOptionsFromCSSFactory(forElement: JQuery<HTMLElement>): QAInfoOptions | null;
    /**
     *
     * @param fromElement
     * @param cssName
     * @param defaultValue Specify if default is not empty string
     * @returns
     */
    protected static CSSPropertyValueOrEmpty(fromElement: JQuery<HTMLElement>, cssName: string, defaultValue?: string): string;
    LoadFromDataAttributes(fromElement: JQuery<HTMLElement>): void;
    constructor(title: string, cssClass: string, emptyText: string, queryURL: string);
}
export declare class NVPair {
    [key: string]: any;
}
export declare class WCCData {
    [key: string]: any;
}
export type DataModelRow = Record<string, any>;
export type DataModelCollection = DataModelRow[];
export declare class InvokeOptions {
    ByTask?: boolean | undefined;
    ByAcct?: boolean | undefined;
    targetWindow?: string;
    wxpPopup?: '1' | '0' | 'doc';
}
export type TableAndFieldInfo = {
    table: string;
    field: string;
    dbf: string;
    isRO: boolean;
    isValid: boolean;
};
export type PartContextKey = string;
export type Permits = number;
/** See sfRestClient.PageTypeNames */
export type PageTypeName = number;
export type PagePartList = {
    [key: string]: Permits;
};
export interface iRaiseDocSaveFinished {
    (eventData: SaveEventData, whatChanged: _SwaggerClientExports.DocFieldChange, newChangeStamps?: {
        [key: string]: number;
    }): void;
}
export interface iDocumentModel extends iDocumentModelBase {
    DocHeaderData: _SwaggerClientExports.DocMasterDetail;
    CurrentRouteRow: _SwaggerClientExports.DocRoute;
    CurrentAttachments: _SwaggerClientExports.DocAttachment[];
    SaveDocumentPatch: {
        (deltas: _SwaggerClientExports.DocFieldChange[], isDone: true | iRaiseDocSaveFinished): Promise<NVPair>;
    };
    getExclusivityMode: {
        (): number;
    };
    [key: string]: any;
}
export type SaveEventState = 'queue' | 'saving' | 'done' | 'trouble';
export interface changeStampSet {
    [key: string]: number;
}
export type SaveEventData = {
    state: SaveEventState;
    pending: number;
    message: string;
    createdAt: number;
    promiseAt?: number;
    backendPromise?: Promise<NVPair>;
    priorChangeStamps?: changeStampSet;
    newChangeStamps?: changeStampSet;
};
/** Spitfire PM Client
 * @example top.sfClient.GetDV(...)
 * @example Access static methods or shared properties from console: top.staticBase._IconMap */
export declare class sfRestClient {
    readonly ClientVersion: string;
    ServerVersion(): string;
    /**
     * Helps decode Permit flags
     */
    readonly PermissionFlags: {
        Read: number;
        Insert: number;
        Update: number;
        Delete: number;
        Special: number;
    };
    /** For identifying the type of page/dashboard */
    readonly PageTypeNames: {
        HomeDashboard: number;
        ProjectDashboard: number;
        Catalog: number;
        ExecutiveDashboard: number;
        AdminDashboard: number;
        ManageDashboard: number;
        Contacts: number;
        Report: number;
        PivotTool: number;
        Document: number;
        Unknown: number;
        Unauthenticated: number;
        UnauthenticatedLogin: number;
        UnauthenticatedWizard: number;
        UnauthenticatedLink: number;
        /** app root still not redirected to a specific page */
        UnauthenticatedDefault: number;
        UserAccountRecovery: number;
        DiagUtilities: number;
        PopupAdminTool: number;
        PopupUserTool: number;
        RichTextEdit: number;
    };
    /**
     * Applies removals, then changes, then additions
     * @param rawData array of Data Model or View Model
     * @param keyName name of key field in this data model
     * @param changes (Add,Change,Remote)
     * @returns merged rawData
     * @see BuildDataSummary
     */
    ApplyDataChanges(rawData: DataModelCollection, keyName: string, changes: _SwaggerClientExports.DataDifferential): DataModelCollection;
    /**
     * Extracts key, etag pairs from a set of data
     * @param rawData array of Data Models or View Models, must have etag
     * @param keyName
     * @returns array of key, etag pairs, suitable for passing to getChange* API endpoints
     * @see ApplyDataChanges
     */
    BuildDataSummary(rawData: DataModelCollection, keyName: string): _SwaggerClientExports.CurrentDataSummary[];
    /**
      *  Async builds a View Model for the rawData, given part context.  - use .then()
      */
    BuildViewModelForContext(partName: string, context: string, forDocType: GUID | undefined, rawData: DataModelCollection | DataModelRow): Promise<DataModelCollection>;
    /**
     * Updates row visibility on the server and updates the in-memory flags for display of this row
     * @param partName ProjTeam or ProjectPublicInfo
     * @param rawData ViewModel containing raw row data
     */
    ToggleRowVisibility(partName: "ProjTeam" | "ProjectPublicInfo" | string, rawData: DataModelRow): Promise<boolean>;
    /** Writes to console log
     * @argument msg text to write
     * @argument level msg is suppressed if logging level is less than specified, default is verbose
     */
    Log(msg: string, level?: LoggingLevels): void;
    /**
     *  Applies CFG data to raw Data Model, returns promise that resolves when View Model is ready
     */
    protected _ConstructViewModel(thisPart: PartStorageData, rawData: any): Promise<DataModelCollection>;
    WaitForSessionLoaded(): Promise<void>;
    /**
    * async: returns an numeric bit-flag indicating the user's permission level (R=1,I=2,U=4,D=8,S=16)
    * When the user has admin permissions, these are blended (unless ucModule = WORK)
    * @param ucModule WORK,SYS, PAGE, PART,LIST
    * @param ucFunction see xsfUCFunction
    * @param optionalDTK guid or undefined
    * @param optionalProject
    */
    CheckPermit(ucModule: string, ucFunction: string, optionalDTK?: string, optionalProject?: string, optionalReference?: string): Promise<Permits>;
    /**
     * Resolves list of part names with permissions
     * @returns object with part names and permission flags
     */
    GetPagePartPermits(forPageName?: PageTypeName, pageKey?: string): Promise<PagePartList>;
    /**
     * Returns set of choices for an auto-complete based on the seed value
     * @param lookupName
     * @param seedValue 0 or more characters which will limit the suggestions
     * @param dependsOn 0 to 4 values required by the lookup for context;  @see sfRestClient.GatherDependsOnValues to process string
     * @param limit a reasonable number of suggestions to be returned; zero or negative replaced with option.SuggestionLimit
     * @returns promise of suggestions.  reuses a matching promise from withing about 4 minutes
     * @description context is provided from GetPageContextValue("dsCacheKey")
     */
    GetLookupSuggestions(lookupName: string, seedValue: string, dependsOn: string | string[] | undefined, limit?: number): Promise<Suggestion[] | null>;
    /** returns GetPageContextValue("dsCacheKey") */
    GetPageDataContext(): string;
    static readonly suggestionCacheLifespan = 246800;
    /** maps Suggestion Group key to when expires */
    private static RecentSuggestionAsOf;
    /** maps Suggestion Group key to promise result */
    private static RecentSuggestionResultMap;
    private static RecentDocumentList;
    /** Returns list of recent documents from server as updated by PopDoc() calls */
    GetRecentDocuments(): _SwaggerClientExports.MenuAction[];
    /**
     * Returns a View Model constructured for the result rows matching specified lookup context and filters
     * @param lookupName
     * @param filterValues  default to {} can include NVPs and zero to 4 dependsOn strings
     * @returns
     */
    GetLookupResults(lookupName: string, 
    /**
   * either a string or string array (up to 4 elements);
  */
    filterValues: QueryFilters): Promise<DataModelCollection>;
    /** removes an exact match from the session DV cache */
    ClearDV(displayName: string, keyValue: string, 
    /**
     * either a string or string array (up to 4 elements)
    */
    dependsOn: string | string[] | undefined): boolean;
    /**
     * Get Display Value using DV-Name and key value, with 0 to 4 dependencies.
     * @param displayName the name of a display value rule (eg sfUser, RoleName, etc)
     * @param keyValue the primary or most significant key
     * @param dependsOn optional array of context values (multi-part key); 0 to 4 elements allowed; hint: use 'empty' for an empty value
     * @param autoVary force bypass of cache
     * @returns Promise for String
     */
    GetDV(displayName: string, keyValue: string, 
    /**
     * either a string or string array (up to 4 elements)
    */
    dependsOn?: string | string[] | undefined, 
    /**
     * when true, a unique value is added to defeat cache
    */
    autoVary?: boolean | undefined): Promise<string | null>;
    /**
         * Throttles and batches requests for display values (DVs) to improve performance.
         * If there are pending DV requests, it adds the new request to a queue and sets up a timer to batch the requests.
         * Otherwise, it directly calls the `getDisplayableValue` method on the `LookupClient` API.
         *
         * @param api - The `LookupClient` API instance to use for making DV requests.
         * @param dvRequest - The DV request object containing the necessary parameters.
         * @returns A Promise that resolves to the requested display value, or `null` if the request fails.
         */
    private _ThrottleDVRequests;
    private _DVRequestQueue;
    private _DVThrottledResolvers;
    private _DVRequestTimerHandle;
    /**
     * Async Get Part Configuration Data given part name, doc type and context
     * @param partName DocRoute or ActionItems etc
     * @param forDocType guid
     * @param forProject
     * @param partContext
     * @returns CFG object
     */
    GetPartCFG(partName: string, forDocType?: GUID, forProject?: string, partContext?: string): Promise<UIDisplayPart | null>;
    /**
        * Tell the cfg manager about a CFG that should be discarded
        * @param partName
        * @param forDocType
        * @param forProject
        * @param partContext
        * @returns  true if removed
        * @see GetPartCFG
        */
    DiscardPartCFGCache(partName: string, forDocType?: GUID, forProject?: string, partContext?: string): boolean;
    /**
     * Tell the cfg manager about a CFG that was recovered from local storage
     * @param partName
     * @param forDocType
     * @param forProject
     * @param partContext
     * @param recoveredCFG  NOT optional, you are responsible for it being current
     * @returns  the cfg object
     * @see GetPartCFG
     */
    RegisterRestoredCFG(partName: string, forDocType?: GUID, forProject?: string, partContext?: string, recoveredCFG?: UIDisplayPart): UIDisplayPart;
    /**
        * Tell the cfg manager about a lookup that was recovered from local storage
        * @param lookupName
        * @param recoveredCFG  NOT optional, you are responsible for it being current
        * @returns  the cfg object
        * @see GetPartCFG
        */
    RegisterRestoredLookupCFG(lookupName: string, recoveredCFG: UIDisplayPart): UIDisplayPart;
    /**
     * Async Get of Lookup column configuration data
     * @param lookupName name of required Lookup
     * @returns UIDisplayPart with relevant UIItems and UIFilters
     */
    GetLookupCFG(lookupName: string): Promise<UIDisplayPart | null>;
    static isXferFilesStatus(obj: any): obj is _SwaggerClientExports.XferFilesStatus;
    static isFileInformation(obj: any): obj is _SwaggerClientExports.FileInformation;
    static isMenuAction(obj: any): obj is _SwaggerClientExports.MenuAction;
    static isDateRange(obj: any): obj is _SwaggerClientExports.DateRange;
    /** Returns URL for a file */
    GetFileURL(fileKey: GUID | _SwaggerClientExports.FileInformation, fn?: string, fileRev?: number, forDownload?: boolean): string;
    /** Returns URL for a file preview (given size) */
    GetFilePreviewURL(fileKey: GUID | _SwaggerClientExports.FileInformation, width: number, height: number, fn?: string, fileRev?: number): string;
    /** Returns URL for the appropriate icon given a file type
     * @param fileType jpg, xml, docx, etc.  Do not include the leading period
     * @returns site root relative URL, something like /sfPMS/images/iconname.png
    */
    GetIconURL(fileType: string, iconSizeIgnored?: number): string;
    /** Returns information about a document process */
    GetDocProcessTypeInfo(forDocType: GUID): Promise<_SwaggerClientExports.ProcessDocumentType | undefined>;
    private static LocalProcessTypeInfo;
    private static LocalProcessTypeInfoPromise;
    /**
     * Displayable size
     * @param size integer size in bytes
     * @returns size scaled to KB, MB or GB
     */
    BytesToSizeString(size: number): string;
    /** Async get of a non-user specific setting (always the same for all users) */
    RuleResult(ruleName: string, testValue: string, filterValue: string | undefined, defaultValue: string | number | boolean): Promise<string | number | boolean | null>;
    /**
     * Pops up a dialog showing result of a qAlias query
     *
     * @param forElement either an JQuery element or QAInfoOptions object
     * @param queryOptions? if specified, passes Query URL, title and other options
     * @param resolveKey callback function that resolves $K for the URL
     * @param onPostback not currently used, typically (t,a)=> __doPostback(t,a);
     * @returns forElement (which may now have a .dialog)
     *
    */
    PopQAInfo(forElement: JQuery<HTMLElement>, queryOptions?: QAInfoOptions, resolveKey?: (forElement: JQuery<HTMLElement>) => string, resolveValue?: (forElement: JQuery<HTMLElement>, queryOptions: QAInfoOptions) => string, onPostback?: (eventTarget: string, eventArgs: string) => void): JQuery<HTMLElement>;
    private AdjustFluidDialog;
    UpdateFluidDialogs(): void;
    AutoSizeDialog($D: JQuery<HTMLElement>): JQuery<HTMLElement>;
    GetFileUploadURL(uploadContext: SFFileUploadContext): string;
    GetFileChunkUploadURL(uploadContext: SFFileUploadContext): string;
    private _BuildFileUploadURL;
    /** Uploads a file of up to Options.UploadDirectLimit Bytes (around 8MB) in a single request, then falls back to 1MB chunks
     *
     *  @returns promise that resolves on upload complete
      */
    UploadFile(blobFile: File, uploadContext: SFFileUploadContext, progressCallback?: (state: _SwaggerClientExports.XferFilesStatus) => boolean): Promise<_SwaggerClientExports.XferFilesStatus | _SwaggerClientExports.HttpResponseJsonContent>;
    /** checks with server up to 3 times a second.  promise resolves when task has ended or callback returns true;
     * @param taskKey guid key for task
     * @param sessionClient optional existing SessionClient
     * @param progressCallback optional callback for when task status is not 200;  if this callback returns true, promise is resolved
     */
    WaitForTask(taskKey: GUID, sessionClient?: SessionClient, progressCallback?: (state: _SwaggerClientExports.HttpResponseJsonContent) => boolean): Promise<_SwaggerClientExports.HttpResponseJsonContent>;
    ExportCompetitiveBidData(): void;
    static $CurrentPleaseWaitDialog: JQuery<HTMLDivElement> | null;
    HeyPleaseWait(): JQuery<HTMLDivElement>;
    ClearPleaseWaitDialog(): void;
    /**
     * Maps .NET placeholders (dn) to webix placeholders (dx)
     * Important: order matters (eg: dd must be remapped before d, or the d map would be used)
     */
    protected readonly _DateFormatMap: {
        dn: string;
        dx: string;
    }[];
    /**
     * Converts traditional .NET date formats to Webix formats
     * @param dotNetFormat something like d or m/d/yyyy
     * See https://support.spitfirepm.com/kba-01132/ and https://docs.webix.com/helpers__date_formatting_methods.html
     *
     * test: ["d","t","d t","MMM d, yyyy","MM d, yy","M dd, yyyy","MMM d, yyyy HH:mm:ss","d/m/yyyy","H:mm:ss","h:mm:ss tt"].forEach(test=> console.log(test.padEnd(25),"\t",sfClient.ConvertDotNetDateTimeFormatToWebix(test)))
     */
    ConvertDotNetDateTimeFormatToWebix(dotNetFormat: string): string;
    /** returns true if the passed value is effectively empty
     *  @see  basically the same as Route.helpers.isEmptyValue() */
    IsEmptyValue(value: any): boolean;
    /**
     * Converts a JSON set into rows of an HTML Table.
     * @param mydata an array of JSON objects
     * @returns JQuery<HTMLTableElement> TABLE that has not been inserted into DOM
     */
    MakeTable: (mydata: JSON[]) => JQuery<HTMLTableElement>;
    /**
        * Make sure the URL starts with application root path
       */
    MakeSiteRelativeURL(url: string): string;
    /** scans for IMG tags with class sfUIMakeSrcSiteRelative  */
    makeResourceURIsSiteRelative($DOM: JQuery<HTMLElement>): void;
    /** resolves full path (for current theme) and sets sfImg flag */
    protected setImgSrc($T: JQuery<HTMLImageElement>): JQuery.jqXHR<any> | JQuery.Promise<string>;
    protected requestImgPath(imgName: string): JQuery.jqXHR<any> | JQuery.Promise<string>;
    protected SessionStorageKeyForImageName(imgName: string): string;
    protected SessionStoragePathForImageName(imgStorageKey: string): string | false;
    private _LoadUCFunctionMapHasBeenForced;
    /**
     * Loads UC Function Keys and corresponding Module/System Names
     * NOTE: returns a JQueryPromise
    */
    protected LoadUCFunctionMap(force?: boolean): JQueryPromise<any>;
    protected _LoadIconMap(): void;
    /** Simple test for an authenticated session
     *  - Use await or .then()
     */
    IsLoggedIn(): Promise<boolean>;
    /**
     * Loads or Updates WCC session attributes (api/session/who)
     * @param bypassCache
     * @param locationHash when omitted, location.toString is used
    */
    LoadUserSessionInfo(bypassCache?: boolean, newHref?: string): Promise<WCCData>;
    IsLoginRelatedPage(): boolean;
    protected static _SessionClientGetWCC: _SessionClientGetWCCShare | null;
    protected static _SessionClientGetUCFKMap: JQueryXHR | null;
    private static _MakeFakeWCC;
    /** applies changes to connection properties
     * @see SharePageContext
    */
    UpdateWCCData(newWCC: WCCData): WCCData;
    /**
     * For each passed URI, If page does not already have a matching SCRIPT element, adds one
     * @param jsResourceList array of source uri
     */
    LoadDynamicJS(jsResourceList: string[]): void;
    AssureJQUITools($element: JQuery<HTMLElement>): Promise<boolean>;
    /**
     * @param url
     * @param headScript true to place the script in the head section
     * @param [useAsync=false] true to load async
     * @param [context=self]
     * @returns promise - use .then for code after the script has loaded
     *
     */
    AddCachedScript(url: string, headScript?: boolean, context?: Window | undefined, useAsync?: boolean): Promise<boolean>;
    /**
     * Adds a link to a stylesheet for the page
     * @param cssRef if includes a slash(/), must be full URL, otherwise  site-url/wv.aspx/js/ is prepended
     * @returns nothing
     */
    AddCSSResource(cssRef: string): void;
    /** Returns a guid/uuid
     * @param [fetchCount=3] number of keys to request
     *  @returns something in the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
     * */
    NewGuid(fetchCount?: number): Promise<GUID>;
    /**
        * Opens a new tab with URL specified based on Document Type Key and UI version
        * @param dtk the guid document type
        * @param project the project ID to be assigned to the new document
        * @param options might include &UseID= to specify a key for the new document or &mode=np
        */
    PopNewDoc(dtk: GUID, project: string, options?: string): Promise<Window | null>;
    /** search supplied object for a key reference */
    sfRowKey($For: JQuery<HTMLElement>): GUID;
    /**
       * Opens a new tab with location specified based on Document Key and UI version
       * @param id the guid DocMasterKey for the document to be opened
       * @comment Adds document to the Recent Document List
       */
    PopDoc(id: GUID | JQuery<HTMLElement>): Promise<Window | null>;
    /** Adds (or relocates) the specified document to the top of the recent document list
     * @param dmk guid of the document
     * @param title text to show in menu, typically result of DocTitleLong
     */
    UpdateRecentDocumentList(dmk: GUID, title: string | null): void;
    /**
       * Opens a new dashboard tab with project specified
       * @param id the project ID without mask
       */
    OpenProject(id: string): Promise<Window | null>;
    /** switches to the peer tab with Name=Dashboard
     *   @returns  self if window.name === Dashboard */
    SwitchToDashboardTab(): Promise<Window | null>;
    /** returns true if url starts with _SiteURL  */
    IsSiteURL(url: string): boolean;
    IsRESTErrorResponse(testObject: _SwaggerClientExports.HttpResponseJsonContent | any): boolean;
    /**
     * Sets sfRestClient Options
     *
     * @returns copy of current options
     * @example SetOptions( { LogLevel: LoggingLevel.Verbose, DVCacheLife: 22*60000, PopDocForceXBUI: true, PopDocXBURL: "{0}#!/doc/home?id={1}"});
     * @example SetOptions().LogLevel =  LoggingLevel.Verbose;
     *
     * @see GetStringOption @see GetBooleanOption @see  GetNumericOption
     *
     *
    */
    SetOptions(options?: NVPair): SFRESTClientOptions;
    GetBooleanOption(optionName: string): boolean;
    GetNumericOption(optionName: string): number;
    GetStringOption(optionName: string): string;
    /** Predefined Default Options
     * This object is static and shared by all instances of sfRESTClient
     *
     */
    protected static _Options: SFRESTClientOptions;
    /**
     * Builds a query friendly string, also great for hashing or cache keys
    */
    protected _addQueryValue(
    /**
* When true, query string is in form a/b/c, when false Aand priorList contains a ?, then &d1=a&d2=b&d3=c
*/
    asPath: boolean, priorList: string | string[], idx: number, dv: any): string;
    /**
     * Builds a query friendly string 1 to 4 inputs by using _addQueryValue
    */
    protected _formatDependsList(asPath: boolean, depends1: string | string[], dep2?: string, dep3?: string, dep4?: string): string;
    /**
     *  consolidate request components into a single string - dv/displayName/pv/d1/d2/d3
     */
    protected _getDVRequestString(displayName: string, pv: string | number | boolean, dependsOn: string | string[] | undefined): string;
    /**
     *  Returns query-suitable string to make HTTP GET defeat cache
     */
    _getVaryByQValue(): string;
    protected _GetAPIXHR(url: string): JQueryXHR;
    protected _APIURL(suffix: any): string;
    /**
     * For example: http://server.domain.com/sfPMS  (does not include ending slash)
     * @description consumers of this class should use sfApplicationRootPath
     */
    protected readonly _SiteURL: string;
    /** for example: /sfPMS */
    protected readonly _SiteRootURL: string;
    /** copied to instance vars above */
    private static __SiteURL;
    private static __SiteRootURL;
    /** returns something like /sfPMS */
    protected static ResolveSiteRootURLs(): string;
    /**
     *  Returns value from object that matches the field/property name
     */
    FieldValueFromRow(rawRow: any, fieldName: string): any;
    /**
     * Finds a row using a string key match
     * @param rawData array of rows
     * @param keyName required key field name
     * @param keyValue value of key in desired row
     * @returns index of row (0-based); undefined if not found
     */
    FindRowIndexByKey(rawData: DataModelCollection, keyName: string, keyValue: string): number | undefined;
    /**
     * Builds a string array of values that help define the context of a lookup or evaluation
     * @param dependsOnList semicolon separated list of related field and constants. eg #DocMasterDetail.Project;=Subtype (# is optional)
     * @param rawRow primary source of data
     */
    GatherDependsOnValues(dependsOnList: string, rawRow: any): string[] | undefined;
    /**
     * Allows a page to update the _WCC context data
     * @param contextData object of Name-Value pairs, such as {DataPK: keyvalue, DocRevKey: keyvalue, etc: etc}
     * @returns true if successful usually sychronously
     */
    SharePageContext(contextData: NVPair): Promise<boolean>;
    /** returns INPUT element(s) inside the data-dbf marked element
     *  @param tableDotField something like DocMasterDetail.ContractType (case sensetive)
     *
    */
    GetDBFInputElement(tableDotField: string): JQuery<HTMLInputElement> | undefined;
    /** returns the  element  with the data-dbf attribute
     *  @param tableDotField something like DocMasterDetail.ContractType (case sensetive)
     *
    */
    GetDBFElement(tableDotField: string): JQuery<HTMLInputElement> | undefined;
    /** returns an INPUT element
     *  @param tableDotField something like DocMasterDetail.ContractType (case sensetive)
     *
    */
    GetInputValue(inputView: any): string | number | undefined;
    SetInputValue(inputView: any, newValue: string | number | DataModelRow | undefined): void;
    /**
     *
     * @param withClass "fa-fighter-jet czUIMyBtn" (automatically includes clsEnabledImgBtn and fas)
     * @param withTip tool tip
     * @param $AppendTo default to status cell; use $(0) or false to prevent DOM insertion
     * @param withSRC when specified, use just the image name (delete.gif); when string is passed an <IMG> tag is used instead of <i> and the image them/path is resolved
     * @returns
     */
    CreateButtonElement(withClass: undefined | string, withTip: string | undefined, $AppendTo?: JQuery<HTMLElement>, withSRC?: string): JQuery<HTMLElement>;
    /**
     * Returns named value from Web Context (WCC)
     *
     * Example: GetPageContext("UserKey");
     *
     * @param key name of a context property
     * @param defaultValue returned if the requested value is not available
     * @param silentDefault when true, suppresses console warning about use of default value
     */
    GetPageContextValue(key: string, defaultValue?: any, silentDefault?: boolean): any;
    /**
   * Returns named value from Web Context (WCC)
   *
   * Example: SetPageContext("UserKey");
   *
   * @param key name of a context property
   */
    SetPageContextValue(key: string, newValue?: any): void;
    /** returns a references to the WX page document model, including the data and state */
    GetPageDocumentModel(): iDocumentModel | undefined;
    /** returns a references to the page document UI, including header */
    GetPowerUXDocumentUI(): iPowerUXDocumentUI | undefined;
    isWebix(): boolean;
    /** requires isWebix() to be true */
    GetPowerUXRouteHelper(): iRouteHelperService;
    IsDocExclusiveToMe(): boolean;
    static IsPowerUXPage(): boolean;
    IsPowerUXPage(): boolean;
    IsHomeDashboardPage(): boolean;
    IsCatalogPage(): boolean;
    IsDocumentPage(): boolean;
    IsProjectPage(): boolean;
    /** @deprecated use IsPageOfType() */
    IsPageOfTypeByName(pageWanted: string): boolean;
    IsPageOfType(pageWanted: string | PageTypeName): boolean;
    protected IsGlobalInstance(): boolean;
    ResolvePageTypeName(): PageTypeName;
    protected ResolveStringPageNametoPageTypeName(pageNameString: string): PageTypeName;
    /** uses browser location object to resolve page name */
    protected ResolvePageName(): string;
    /** uses URL to find path and query hash
     * @argument fromHref must be fully qualified
    */
    protected ResolvePageNameFromURL(fromHref: string): string;
    private static NextHrefIsPending;
    private static NextHrefIsUnauthenticated;
    /** asserts a new url to resolve the new page type.  Stays in effect until the location hash next changes */
    urlChange(newURL: string, newHref: string): void;
    protected XBVariantOfPageName(classicPageName: PageTypeName): string;
    /**
     * applies a mask like xxx-xx-xxxx to a string, each x consumes an input character, all others are copied
     * @param inputString
     * @param inputMask
     * @returns
     */
    CEFormatStringValue(inputString: string, inputMask: string): string;
    /** finds value of name= in location.search (or location.hash) */
    GetPageQueryParameterByName(name: string): string;
    /** finds value of name= in the supplied string
     * @argument source the string to be searched for name; delimited by ampersand or #
     * @argument name the id of the value wanted
     * @see GetPageQueryParameterByName() calls this method with location.search (or location.hash)
    */
    GetQueryParameterValueByName(source: string, name: string): string;
    /** Returns the search or hash portion of the page location */
    GetPageQueryContent(fromHref?: string): string;
    /** returns the primary key for this page  */
    GetPagePK(): string;
    GetPageProjectKey(pageTypeName?: PageTypeName): string;
    /** display support panel */
    InvokeSupportPanel(): void;
    /** sets the OS clipboard
     * @description navigator.clipboard only works for https and localhost
    */
    SetClipboard(text: string): Promise<boolean>;
    /**
     * Parses and performs an action
     * @param actionString often in the form javascript:something(args)
     * @param rowData optional collection of data
     * @param options InvokeOptions including targetWindow. targetWindow of H is replaced with hash of action
     *
     * Actions Supported
     * - vPgPopup(...)
     * - PopDoc(...) and PopNewDoc
     * - PopTXHistory(...) and PopBFAHistory()
     * - Nav To (dcmodules and admin tools)
     */
    InvokeAction(actionString: string | _SwaggerClientExports.MenuAction, rowData?: DataModelRow, options?: InvokeOptions): void;
    private rxIsVPgPop;
    private rxPopWhat;
    private rxPopWhatURL;
    private rxPopWindowName;
    private rxOfficeLink;
    private rxPopWhatVPG;
    /** @returns true if this is a Microsoft Windows OS device */
    IsWindowsOS(): boolean;
    /** @returns true if this is browser can open .Application links  */
    HasDotNetApplicationExtension(): boolean;
    /** Creates an exchange token and calls OpenWindowsLinkHelper() */
    FollowLinkViaSFLink(targetURL: string, afterOpenArg?: boolean | string | [string, string] | Function, autoCloseDoc?: boolean): void;
    getAffinityInfo(): {
        at: string | undefined;
        ak: string | undefined;
    };
    /**
     *
     * @param et token passed to sfLink
     * @param afterOpenArg  boolean/true: closes document page; false/0: posts back default refresh; ['e','a']: posts back e with a; callback function is passed et
     * @param autoCloseDoc
     */
    OpenWindowsLinkHelper(et: string, afterOpenArg?: boolean | string | [string, string] | Function, autoCloseDoc?: boolean): void;
    /** Finds $$ markers and other replacable values.
     * Markers are case sensative
     */
    protected ExpandActionMarkers(rawAction: string, rowData?: DataModelRow): string;
    /** given a mark name, returns the replacement value
     * @see ExpandActionMarkers()
     * @argument markerName such as $$Project or $$PDSKEY
     * @argument rowData object containing row data - first source for value to replace the marker
     */
    protected GetActionMarkerReplacement(markerName: string, rowData?: DataModelRow): string;
    /** returns the value of a browser cookie */
    getCookie(cookieName: string): string | undefined;
    /**
     * Figures out the type of page and the amount of viewable height (without scrolling)
     * @returns height of top frame
     */
    UsablePageHeight(): number;
    notificationMsgTimeoutHandle: number | undefined;
    WasNotificationShown(notificationMsg: string): boolean;
    MarkNotificationAsShown(notificationMsg: string): void;
    /**
     * See DisplayUserNotification() and DisplaySysNotification()
     * @param templateURL div content source - See DisplayUserNotification() and DisplaySysNotification()
     * @param notificationText message to display
     * @param timeOutMS if specified, message auto-clears in this many milliseconds.  Which does not count as dismissed.
     * @returns the DIV containing the message, .data("alreadyshown") = true if already shown.
     */
    DisplayThisNotification(templateURL: string, notificationText?: string, timeOutMS?: number): Promise<JQuery<HTMLElement>>;
    ClearNotificationMsgTimeoutHandle(): void;
    /** Use DisplayUserNotification()  This method displays a message from the server!!!
     * @param hashCode help with getting freshest
    */
    DisplaySysNotification(hashCode: string | number, timeOutMS?: number): Promise<JQuery<HTMLElement>>;
    private lastNotificationCheckPromise;
    private notificationCheckIntervalMS;
    private notificationForcedCheckIntervalMS;
    private lastNotificationHashCode;
    SimpleNotification(showMsg: string, type: iWebixMessageType): void;
    /** Checks backend for a new system notification and displays it */
    CheckForSystemNotification(force?: boolean): void;
    private static lastNotificationCheck;
    /** Displays a simple user notification, with "dismiss" session memory
     * @param notificationText The message.  Message is skipped if the same exact message has already been dismissed.
     * @param timeOutMS if specified, message auto-clears in this many milliseconds.  Which does not count as dismissed.
     */
    DisplayUserNotification(notificationText?: string, timeOutMS?: number): Promise<JQuery<HTMLElement>>;
    /**
     * Opens a Modal dialog with an iFrame and loads pvp.aspx?vpg=your-vpg-id /
     * @param vpg ReportBrowser,;
     * @param opts Should begin with an ampersand(&)
     * @param w
     * @param h
     * @param defaultResponse
     */
    VModalPage(vpg: string, opts: string, w: number, h: number, defaultResponse: string | undefined): void;
    private static GlobalPermitAPIPromise;
    private static GALastPageHitSent;
    private GAMonitorPageHit;
    /** Monitors an event
     * @argument clientID site id
     * @argument category Event Name, such as login, search, or view_search_results
     * @argument action
     */
    GAMonitorEvent(clientID: string, category: string, action: string, label: string, value: number): JQuery.Promise<any, any, any> | undefined;
    /** Google Analytics Event */
    GAEvent(category: string, action: string, label: string, value: number): void;
    /** Shortcut that calls GAEvent("dialog",action, dialogName,1) */
    GADialogEvent(action: string, dialogName: string): void;
    /** Shortcut that calls GAEvent("dialog",action, viewName,rows) */
    GAViewModelEvent(viewName: string, rows: number): void;
    private ValueHasWildcard;
    private sfClearACHeighLimit;
    /**
     * / Note: this only returns Async Frames, not frames for lookups and other dialog scenarios
     * @returns
     */
    private sfGetParentIFrame;
    private sfLimitACHeightInFrame;
    /**
     * Enhance an INPUT element with Autocomplete (classic UI)
     * @param $AC NAME attribute of INPUT or the Input Element
     * @param lookupName source of autocomplete choices
     * @param depends1
     * @param dep2
     * @param dep3
     * @param dep4
     */
    sfAC($AC: string | JQuery<HTMLInputElement>, lookupName: string, depends1: string | string[], dep2?: string, dep3?: string, dep4?: string): void;
    /** Displays a modal dialog and returns a reference to the dialog for further manipulation
     * @argument msg the text for the dialog message.  Can include html
     * @argument title optional title
     * @argument uiAlertIcon if specified, and not false, ui-icon class name (see https://api.jqueryui.com/theming/icons/)
     */
    jqAlert(msg: string, title?: string, uiAlertIcon?: string): JQuery<HTMLDivElement>;
    /** Opens a jquery ui dialog with an iframe to display the requested url
     * @param url a same-site url
     * @param eventId optional - used when dialog is closed
     * @param eventArg optional - used when dialog is closed
     * @param eventContext optional - used when dialog is closed
     *
    */
    ModalDialog(url: string, eventId?: string | undefined, eventArg?: string | undefined, eventContext?: Window | undefined | null): Promise<boolean | undefined> | undefined;
    protected $LookupDialog: JQuery<HTMLDivElement> | undefined;
    static $LookupDialogStack: JQuery<HTMLDivElement>[];
    protected $LookupFrame: JQuery<HTMLIFrameElement> | undefined;
    protected ResolveLookupFrame(forDialog?: JQuery<HTMLDivElement> | undefined): JQuery<HTMLIFrameElement> | undefined;
    SetModalDialogTitle(theDialog: JQuery<HTMLElement> | undefined, titleText: string, ptSize?: string | number | undefined): JQuery<HTMLElement> | undefined;
    /** Adds a small button
     * @param btnIcon see
     */
    AddDialogTitleButton($Dialog: JQuery<HTMLElement>, btnID: string, btnText: string, btnIcon?: string): JQuery<HTMLElement>;
    AddDialogHelpButton($Dialog: JQuery<HTMLElement>, helpURL: string): JQuery<HTMLElement>;
    RefreshiFrameSrc(): false | undefined;
    ResizeDialogInFrame(FrameElement: HTMLIFrameElement | undefined, RESTClient: sfRestClient): void;
    /** Sends the specified message to the server log file using REST API */
    LogMessageOnServer(msgText: string): void;
    GetSFTabCount(tabName?: string): number;
    /** For Chrome Debug watch */
    LiveWatch(): string;
    protected sfModalDialogClosed(_unusedEl?: any | undefined): void;
    /** Internal to the class
     * this is the lookup DIV
     */
    protected sfModelDialogResizedHandler(): void;
    /**
     * (OBSOLETE) Resize parent sfDash window
     * @deprecated sfDash relic:  we cannot change the size of the parent window
     * @param canShrink
     * @param DesiredWidth
     * @param DesiredHeight
     */
    protected sfSetParentWindowSize(canShrink: boolean, DesiredWidth: number, DesiredHeight: number): void;
    private sfLookupHeightChangeTo;
    private _LookupViewPortAdjustments;
    private sfLookupWidthChangeTo;
    /**
     * Updates internal sizes after the dialog frame size is changed
     * @param forDialog reference to DIV with jQueryUI dialog widget
     * @returns
     */
    protected sfModelDialogResized(forDialog: JQuery<HTMLDivElement>): void;
    protected DialogViewPortAdjustments: {
        outsidExtraW: number;
        outsidExtraH: number;
        vpExtraW: number;
        vpExtraH: number;
        frameExtraH: number;
    };
    /**
     * Applies UI CFG to all rows in a dataset
     * @param item a single UI Configuration item
     * @param thisPart Part, including reference to raw data being upscaled to match UI CFG
     * @param dataModelBuildKey allows thread-safe usage
     */
    _ApplyUICFGtoRawData(item: UIDisplayConfig, thisPart: PartStorageData, dataModelBuildKey: string): void;
    /**
     *
     * @param thisPart instance of PartStorageData
     * @param dataModelBuildKey unique per vm build
     * @param index row index into data
     * @param dataField base field name
     * @param suffix added to base name (_dv, _ov, _IsInactive, etc)
     * @param newValue value for the target
     */
    protected _AddDVValueToDataModel(thisPart: PartStorageData, dataModelBuildKey: string, index: number, dataField: string, suffix: string, newValue: string | boolean | null): void;
    /** typically returns a period for North America */
    private static ResolvedIntlFormat;
    private static InitializeIntlFormats;
    /** Typically returns a period for North America */
    GetDecimalSeparator(): string;
    /** Typically returns a comma for North America */
    GetNumericGroupSeparator(): string;
    /** returns true if the passed value is a specific number */
    IsNumber(n: string | number): boolean;
    /** Gets val or text from supplied jQuery element and returns its numeric value
     *
     * Removes formatting to convert string to value
    */
    GetNumericValueFrom(el: JQuery): number;
    /** Formats a value and places it into VAL() or TEXT() then cascades change events to self.sfPutEditStoreValue()
     * returns TRUE if value has changed
     * This method is critical in cascading QTY*RATE=TOT and allowing any of the three to be changed
     * @see self.sfPutEditStoreValue()
    */
    SetJQElementValue(el: JQuery, newValue: number, dp?: number): boolean;
    RoundValue(originalNumber: number, decimals?: number): number;
    /** Returns a number formatted as a string, support C0-C4, F0-F9, N0-N9, 000  */
    FormatNumericValue(newValue: number | string, intoFormat: string): string;
    /**
     * @argument sSource string in form name=value;otherKey=othervalue;...
     * @argument sKey name of value to be replaced or added
     * @argument sValue string or number or DateRange.  String should not contain a semicolon!
     * @returns sSource updated with sKey=sValue;
     */
    SetNameValuePairInString(sSource: string, sKey: string, sValue: string | _SwaggerClientExports.DateRange | {
        start: Date;
        end: Date;
    } | number): string;
    /**
   * @argument sSource string in form name=value;otherKey=othervalue;...
   * @argument sKey name of value to be returned
   */
    GetNamedValueFromStringAsBoolean(sSource: string, sKey: string, defaultValue?: boolean): boolean;
    /**
    * @argument sSource string in form name=value;otherKey=othervalue;...
    * @argument sKey name of value to be returned
    */
    GetNamedValueFromString(sSource: string, sKey: string, defaultValue?: string): string;
    /**
     * Returns a refernce that can be used to create instances of specific API clients
     * @returns object with exported resources constructorts
     */
    readonly exports: NVPair;
    /**
         * Returns a refernce that can be used to invoke static methods on this class
         * @returns sfRestClient static class
         */
    readonly staticBase: sfRestClient;
    /**
     * Creates an instance of the requested API controller with baseURL set appropriately
     * @param ofTypeName eg ActionItemsClient, DocumentToolsClient, LookupClient
     * @returns instance
     */
    NewAPIClient(ofTypeName: 'ActionItemsClient' | 'CatalogClient' | 'DocumentToolsClient' | 'ExcelToolsClient' | 'LookupClient' | 'ProjectsClient' | 'ProjectToolsClient' | 'ProjectKPIClient' | 'SessionClient' | 'UICFGClient'): any;
    /**
     * Call to reset the client state (important when changing users)
     * This method also clears static resources shared by all instances of sfRestClient
     *
     * @param alsoClearSessionStorage set true to also clear session storage (appropriate for logoffs)
     */
    ClearCache(alsoClearSessionStorage?: boolean): Promise<void>;
    /**
     * detects Global function call and performs the action that is now handled by this client
     * @param request can start with javascript:
     * @returns updated request string
     */
    HandleEvalRequest(request: string): string;
    /**
     * Called by the global instance to connect to SignalR
     */
    protected static StartSignalRClientHub(): void;
    NavigateToServerUnavailable(reason: string, delayMs?: number): void;
    NavigateToLogout(reason: string, delayMs?: number): void;
    private _navigateToLogoutTimerEvent;
    protected static LogoutPageURL(mValue: string): string;
    protected static LoginPageURL(mValue: string): string;
    /** updates the time of last user activity */
    heartbeat(): void;
    ResetUnsavedChangesAndCloseThisWindow(): void;
    protected static _NextPingTimerID: number | undefined;
    protected static _RepeatedPingRetryDelay: number;
    protected static _connectionCheckDialogShown: boolean;
    pingServer(): Promise<void>;
    static PageServerPingAttempts: number;
    static PageServerPingOK: number;
    static PageServerPingFailRunCount: number;
    static PageServerPingFailThreshold: number;
    static PageServerPingUserNotificationShown: boolean;
    static PageNotificationCount: number;
    static LastActivityAt: number;
    protected PageServerPingBackAlert(msgText: string | boolean, actionAfterAlert: string): void;
    protected PageServerPingBackOk(marker: string, id: string, responseText: string, nextMS: number): void;
    protected PageServerPingBackFailed(marker: string, id: string, jqXHR: string | JQueryXHR, nextMS: number, methodName: string): boolean;
    /** Returns current time in minutes */
    TODInMinutes(): number;
    /**
     * Indicates if the app is in dev mode (often used to control logging)
     * @param minVerbosity one of the logging levels, the lower the value specified, the more likely this method will return true.
     * @returns true if DevMode is enabled and the current logging level exceeds verbosityOver
     *
     * @comment Turn DevMode on or off from console: top.sfClient.exports.sfRestClient._WCC.DevMode = false; (or true)
     */
    DevMode(minVerbosity?: LoggingLevels): boolean;
    /** Returns a UI object for working with a database field */
    DBF2TableandTblField(source: string | JQuery<HTMLElement>): TableAndFieldInfo;
    /** returns true if Event Tracing is on (1) or if Dev Mode (0) AND the event name is not filtered out by Options.WxEventFilter
     *
     * @argument eventName the event name, for example onBeforeRender
     * @returns true if event tracing is on
     * @comment When sfRestClient._Options.WxEventTraceMode === 0, always returns false
     */
    EventTrace(eventName: string): boolean;
    /**
     * Not intended for production use: Clears localStorage, sessionStorage and indexedDB
     * This method preserves SetOptions, including log level
     * @see SaveOptions()
     */
    QAClearEnvironment(): void;
    /** Stashes options in sessionStorage (perhaps for a page reload)
     * @param currentOptions if specified, stored, otherwise current options
    */
    SaveOptions(currentOptions?: SFRESTClientOptions): void;
    protected activateDynamicJS(RESTClient: sfRestClient, keyName: string, value: string): void;
    readonly EmptyKey: GUID;
    readonly EmptyDate: string;
    readonly EmptyTime: number;
    protected _CachedDVRequests: Map<string, Promise<string | null>>;
    protected static _DialogCoordinateCache: Map<number, CoordinateWithSize>;
    protected static _UserPermitResultCache: Map<string, number>;
    protected static PermitMapLoaded(): boolean;
    protected static _IconMap: {
        [key: string]: string | Date;
    } | null;
    protected static _UCPermitMap: any;
    protected _PermitMatches(permit: UCPermit, optionalDTK?: GUID, optionalReference?: GUID): boolean;
    protected static _WCC: WCCData;
    protected static _z: any;
    protected static _GlobalClientConstructFlag: boolean;
    protected static ExternalToolsLoadedPromise: Promise<boolean | undefined>;
    protected static _NewGuidList: GUID[];
    /**
     * Collections of permits by project.  Internally, global permits are stored under project (0)
     */
    protected static _LoadedPermits: Map<string, UCPermitSet>;
    private static _LoadingPermitRequests;
    private static InstanceSerialNumberSource;
    private static ResolvedPageInfo;
    private ThisInstanceID;
    constructor();
}
export {};
