import { Subject } from 'rxjs';
export declare const enum EVENT_LIFE {
    ONCE = 0,
    WINDOW = 1
}
export declare const isDefined: (v: any) => boolean;
export declare const isObject: (v: any) => boolean;
export declare const toBoolean: (val: any, identity?: any) => boolean;
export declare const isIE: () => boolean;
export declare const isAndroid: () => boolean;
export declare const isAndroidTablet: () => boolean;
export declare const isIphone: () => boolean;
export declare const isIpod: () => boolean;
export declare const isIpad: () => boolean;
export declare const isIos: () => boolean;
export declare const isSafari: () => boolean;
export declare const isLargeTabletLandscape: (landScapeWidth: any, landScapeHeight: any) => boolean;
export declare const isLargeTabletPortrait: (landScapeWidth: any, landScapeHeight: any) => boolean;
export declare const isMobile: () => boolean;
export declare const isTablet: () => any;
export declare const isMobileApp: () => boolean;
export declare const getAndroidVersion: () => string;
export declare const isKitkatDevice: () => boolean;
/**
 * this method encodes the url and returns the encoded string
 */
export declare const encodeUrl: (url: string) => string;
/**
 * this method encodes the url params and is private to the class only
 */
export declare const encodeUrlParams: (url: string) => string;
export declare const initCaps: (name: any) => any;
export declare const spaceSeparate: (name: any) => any;
export declare const replaceAt: (string: any, index: any, character: any) => any;
export declare const periodSeparate: (name: any) => any;
export declare const prettifyLabel: (label: any) => any;
export declare const deHyphenate: (name: any) => any;
export declare const prettifyLabels: (names: any, separator?: string) => any;
/**
 * this method checks if a insecure content request is being made
 */
export declare const isInsecureContentRequest: (url: string) => boolean;
/**
 * this method checks if a given string starts with the given string
 */
export declare const stringStartsWith: (str: string, startsWith: string, ignoreCase?: any) => boolean;
export declare const getEvaluatedExprValue: (object: any, expression: any) => any;
export declare const isImageFile: (fileName: any) => boolean;
export declare const isAudioFile: (fileName: any) => boolean;
export declare const isVideoFile: (fileName: any) => boolean;
export declare const isValidWebURL: (url: string) => boolean;
export declare const getResourceURL: (urlString: any) => any;
export declare function triggerFn(fn: any, ...argmnts: any[]): any;
/**
 * This method is used to get the formatted date
 */
export declare const getFormattedDate: (datePipe: any, dateObj: any, format: any, timeZone?: any, isTimeStampType?: any, isIntervalDateTime?: any, compInstance?: any) => any;
/**
 * This method is used to check if the date has timezone information or not
 */
export declare const hasOffsetStr: (dateStr: any) => boolean;
/**
 * method to get the date object from the input received
 */
export declare const getDateObj: (value: any, options?: any, timezone?: any) => Date;
export declare const addEventListenerOnElement: (_element: Element, excludeElement: Element, nativeElement: Element, eventType: any, isDropDownDisplayEnabledOnInput: any, successCB: any, life: EVENT_LIFE, isCapture?: boolean) => () => void;
/**
 * Returns a deep cloned replica of the passed object/array
 * @param object object/array to clone
 * @returns a clone of the passed object
 */
export declare const getClonedObject: (object: any) => any;
export declare const getFiles: (formName: any, fieldName: any, isList: any) => any;
export declare const generateGUId: () => string;
/**
 * Validate if given access role is in current loggedin user access roles
 */
export declare const validateAccessRoles: (roleExp: any, loggedInUser: any) => number | true;
export declare const getValidJSON: (content: any) => any;
export declare const xmlToJson: (xmlString: any) => any;
export declare const findValueOf: (obj: any, key: any, create?: any) => any;
export declare const extractType: (typeRef: string) => string;
export declare const isNumberType: (type: any) => boolean;
export declare const isEmptyObject: (obj: any) => boolean;
export declare const scrollToElement: (element: any) => void;
export declare const isElementInViewport: (element: any) => boolean;
export declare const isPageable: (obj: any) => boolean;
export declare const replace: (template: any, map: any, parseError?: boolean) => any;
export declare const isDateTimeType: (type: any) => boolean;
export declare const getValidDateObject: (val: any, options?: any) => any;
export declare const getNativeDateObject: (val: any, options?: any) => Date;
/**
 * prepare a blob object based on the content and content type provided
 * if content is blob itself, simply returns it back
 * @param val
 * @param valContentType
 * @returns {*}
 */
export declare const getBlob: (val: any, valContentType?: any) => any;
/**
 * This function returns true by comparing two objects based on the fields
 * @param obj1 object
 * @param obj2 object
 * @param compareBy string field values to compare
 * @returns {boolean} true if object equality returns true based on fields
 */
export declare const isEqualWithFields: (obj1: any, obj2: any, compareBy: any) => boolean;
export declare const loadStyleSheet: (url: any, attr: any) => any;
export declare const loadStyleSheets: (urls?: any[]) => void;
export declare const getMomentLocaleObject: (timeZone: any, dateObj?: any) => Date;
export declare const loadScript: (url: any, loadViaScriptTag: any, cacheable?: boolean) => Promise<any>;
export declare const loadScripts: (urls?: any[], loadViaScriptTag?: boolean) => Promise<void>;
export declare let _WM_APP_PROJECT: any;
/**
 * This function sets session storage item based on the project ID
 * @param key string
 * @param value string
 */
export declare const setSessionStorageItem: (key: any, value: any) => void;
/**
 * This function gets session storage item based on the project ID
 * @param key string
 */
export declare const getSessionStorageItem: (key: any) => string;
export declare const noop: (...args: any[]) => void;
/**
 * This function returns a blob object from the given file path
 * @param filepath
 * @returns promise having blob object
 */
export declare const convertToBlob: (filepath: any) => Promise<any>;
export declare const hasCordova: () => boolean;
export declare const AppConstants: {
    INT_MAX_VALUE: number;
};
export declare const openLink: (link: string, target?: string) => void;
export declare const fetchContent: (dataType: any, url: string, inSync?: boolean, success?: any, error?: any) => Promise<any>;
/**
 * If the given object is a promise, then object is returned. Otherwise, a promise is resolved with the given object.
 * @param {Promise<T> | T} a
 * @returns {Promise<T>}
 */
export declare const toPromise: <T>(a: T | Promise<T>) => Promise<T>;
/**
 * This function invokes the given the function (fn) until the function successfully executes or the maximum number
 * of retries is reached or onBeforeRetry returns false.
 *
 * @param fn - a function that is needs to be invoked. The function can also return a promise as well.
 * @param interval - minimum time gap between successive retries. This argument should be greater or equal to 0.
 * @param maxRetries - maximum number of retries. This argument should be greater than 0. For all other values,
 * maxRetries is infinity.
 * @param onBeforeRetry - a callback function that will be invoked before re-invoking again. This function can
 * return false or a promise that is resolved to false to stop further retry attempts.
 * @returns {*} a promise that is resolved when fn is success (or) maximum retry attempts reached
 * (or) onBeforeRetry returned false.
 */
export declare const retryIfFails: (fn: () => any, interval: number, maxRetries: number, onBeforeRetry?: () => Promise<boolean>) => Promise<unknown>;
/**
 * Promise of a defer created using this function, has abort function that will reject the defer when called.
 * @returns {*} angular defer object
 */
export declare const getAbortableDefer: () => any;
export declare const createCSSRule: (ruleSelector: string, rules: string) => void;
export declare const getUrlParams: (link: any) => {};
export declare const getRouteNameFromLink: (link: any) => any;
export declare const isAppleProduct: boolean;
export declare const defer: () => {
    promise: any;
    resolve: (...args: any[]) => void;
    reject: (...args: any[]) => void;
};
export declare const executePromiseChain: (fns: any, args: any, d?: any, i?: any) => any;
/**
 * This function accepts two data sources and will check if both are same by comparing the unique id and
 * context in which datasources are present
 * @returns {*} boolean true/ false
 */
export declare const isDataSourceEqual: (d1: any, d2: any) => boolean;
/**
 * checks if the passed datasource context matches with passed context
 * @param ds, datasource having a context
 * @param ctx, context to compare with
 * @returns {boolean}
 */
export declare const validateDataSourceCtx: (ds: any, ctx: any) => boolean;
/**
 * This traverses the filterexpressions object recursively and process the bind string if any in the object
 * @param variable variable object
 * @param name name of the variable
 * @param context scope of the variable
 */
export declare const processFilterExpBindNode: (context: any, filterExpressions: any, variable?: any) => Subject<unknown>;
export declare const extendProto: (target: any, proto: any) => void;
export declare const removeExtraSlashes: (url: any) => string;
export declare const getDisplayDateTimeFormat: (type: any) => any;
export declare const addForIdAttributes: (element: HTMLElement) => void;
/**
 * This method is used to adjust the container position
 * For example: 1. When datepicker control placed closed to the screen left edges, it is going to negative values which is  cutting the container.
 * To Fix the container overlapping issue changing the contrainer left translation to 0
 * @param containerElem - picker/dropdown container element(jquery)
 * @param parentElem - widget native element
 * @param ref - scope of particular library directive
 * @param ele - Child element(jquery). For some of the widgets(time, search) containerElem doesn't have height. The inner element(dropdown-menu) has height so passing it as optional.
 */
export declare const adjustContainerPosition: (containerElem: any, parentElem: any, ref: any, ele?: any) => void;
/**
 * This method is used to adjust the container position
 * For example: 1. When datepicker control placed closed to the screen right edges, it is going to out of the viewport values which is  cutting the container.
 * @param containerElem  picker/dropdown container element(jquery)
 * @param parentElem widget native element
 * @param ref  scope of particular library directive
 * @param ele Child element(jquery). For some of the widgets(time, search) containerElem doesn't have height. The inner element(dropdown-menu) has height so passing it as optional.
 */
export declare const adjustContainerRightEdges: (containerElem: any, parentElem: any, ref: any, ele?: any) => void;
/**
 * For given element set the traslation
 * @param containerElem tanslated element
 *
 * @param containerEleTransformations translate matrix positions
 */
export declare const setTranslation3dPosition: (containerElem: any, containerEleTransformations: any) => void;
/**
 *
 * @param containerElem elemet for the WebKitCSSMatrix
 */
export declare const getWebkitTraslationMatrix: (containerElem: any) => any;
export declare const closePopover: (element: any) => void;
/**
 * This method is to trigger change detection in the app
 * This is exposed for the end user developer of WM app
 * This is the alternative for $rs.$safeApply() in AngularJS
 * See $appDigest in utils for more info
 */
export declare const detectChanges: (force?: boolean) => void;
/**
 * This method is to trigger the action/link of menu/nav item
 * @param scope - scope of the widget
 * @param item - item object
 */
export declare const triggerItemAction: (scope: any, item: any) => void;
/**
 * This method is to get datsource from the expression
 * @param expr - expression of the dataset
 * @param scope - scope of the widget
 * Example1: expr - "Variables.staticVar1.dataSet.details[$i].addresses" then the method will return datasource as Variables.staticVar1
 * Example2: expr - "Widgets.list1.currentItem.addresses" and list1 is bound to "Variables.staticVar1.dataSet.details" then the method will return datasource as Variables.staticVar1
 */
export declare const getDatasourceFromExpr: (expr: any, scope: any) => any;
/**
 * This method is to get dataset bound expression from list currentitem expression
 * @param expr - bound dataset expression
 * @param scope - scope of the widget
 * Example1: expr - "Widgets.list1.currentItem.details" and list1 is bound to "Variables.staticVar1.dataSet" then it returns expression as "Variables.staticVar1.dataSet[$i].details"
 */
export declare const extractCurrentItemExpr: (expr: any, scope: any) => any;
export declare const findRootContainer: ($el: any) => any;
export declare const VALIDATOR: {
    REQUIRED: string;
    MAXCHARS: string;
    MINVALUE: string;
    MAXVALUE: string;
    REGEXP: string;
    MINDATE: string;
    MAXDATE: string;
    MINTIME: string;
    MAXTIME: string;
    EXCLUDEDATES: string;
    EXCLUDEDAYS: string;
};
export declare const transformFileURI: (url: any) => any;
export declare const appendScriptToHead: (callback: any) => void;
export declare const getAppSetting: (key: any, defaultValue: any) => any;
export declare const setListClass: (scope: any) => void;
export declare const findParent: (lView: any, viewParentApp?: any) => any;
export declare const findViewParent: (lView: any) => any;
