import * as Models from '../../models';
import { Enums } from './Enums';
export declare module Utils {
    /**
    * Util for getting querystring values
    */
    function getQs(name: string): string;
    /**
   * Util for getting current page title
   */
    function getPageTitle(): string;
    /**
     * check is it stay edit mode
     */
    function isPageEditMode(): boolean;
    /**
    * Util for camelizing string
    */
    function camelize(str: string): string;
    /**
    * Util for getting current url for taxonomy navigation
    */
    function getCurrentNavUrl(): string;
    /**
    * Util for getting AbsoluteUrl Site Url
    **/
    function getPageAbsoluteUrl(): string;
    /**
     * Get SharePoint Icon file name for an input extension
     */
    function getFileIconNameByExtension(extension: string): string;
    /**
     * Get SharePoint Icon file name for folder
     */
    function getFolderIconName(): string;
    /**
    * Get fontawesome file types icons
    */
    function getFontAwesomeFileIcon(extension: string): string;
    /**
    * Get file extension by URL
    */
    function getFileExtension(url: string): string;
    /**
   * Get file name without extension
   */
    function getFileNameWithoutExtension(fileName: string): string;
    /**
     * Get SharePoint images url
     */
    function getSharePointImagesRootUrl(): string;
    function timewatch(id: string, callback: () => any, ms: number): void;
    /**
    * Execute function by namespace.name and pass arguments
    */
    function executeFunctionByName(functionName: any, context: any, ...args: any[]): any;
    /**
     * Check if object is null or undefined
     */
    function isNull(obj: any): boolean;
    /**
     * Check if object is null or undefined or empty
     */
    function isNullOrEmpty(obj: any): boolean;
    /**
     * Check if array is null or undefined or empty
     */
    function isArrayNullOrEmpty(obj: any): boolean;
    /**
        * Creates a cookie
        */
    function addCookie(name: string, value: string, days: number, seconds?: number): void;
    /**
     * Gets content of cookie by name
     */
    function getCookie(name: string): string;
    /**
    * Highlight search result
    */
    function hightlightText(text: string, searchString: string): string;
    /**
     * escape special string
     */
    function escapeSpecialString(str: any, delimiter: any): string;
    /**
     * parse JSON with type checking
     */
    function safeJSONParse(obj: any): any;
    /**
     * Find first element in array [items] with property [prop] with value equal to [value]
     */
    function getElementWith<T>(items: Array<T>, prop: string, value: any): T;
    /**
     * Check if array [items] has element with property [prop] with value equal to [value]
     */
    function hasElementWith<T>(items: Array<T>, prop: string, value: any): boolean;
    /**
     * Remove element from array
     */
    function removeElement<T>(items: Array<T>, item: T): void;
    /**
    * split a array into N smaller arrays
    */
    function split(a: Array<any>, n: number): Array<any>;
    /**
    * build paramaters in querystring url
    */
    function appendOptionalQueryParam(queryString: string, paramName: string, paramValue: string): string;
    /**
    * encode and build paramaters in querystring url
    */
    function appendEncodeOptionalQueryParam(queryString: string, paramName: string, paramValue: string): string;
    /**
   * Cast boolean string to boolean
   */
    function castToBoolean(obj: any): boolean;
    /**
   * Wrap object inside array
   */
    function arrayWrapper(obj: any): Array<any>;
    /**
    * ensure absolute url
    */
    function ensureAbsoluteUrl(url: string): string;
    /**
    * Get server relative url from absolute url
    */
    function getServerRelativeUrl(absoluteUrl: string): string;
    function combineConstantValue(values: Array<string>): string;
    /**
    * Generate relatively-safe guid
    */
    function generateGuid(): string;
    function GetCurrentLanguage(): {
        name: string;
        lcid: number;
    };
    function groupBy<T>(collection: Array<T>, propName: string): Array<{
        key: any;
        items: Array<T>;
    }>;
    /**
    * truncate a string with specific number of characters and make sure truncate correct word
    */
    function truncate(str: string, n: number, useWordBoundary: boolean): string;
    /**
    * get local storage value
    */
    function getLocalStorageValue(key: string): any;
    /**
    * set local storage value
    */
    function setLocalStorageValue(key: string, value: any): void;
    function useFallbackStorage(keyparts: string[]): boolean;
    function clearFallbackStorage(keyparts: string[]): void;
    /**
    * remove local storage value
    */
    function removeLocalStorage(key: string): void;
    /**
    * clone object
    */
    function cloneObj<T>(obj: T): T;
    function isLocalStorageSupport(): boolean;
    /**
     * check guid valid
     */
    function isValidGuid(value: string): boolean;
    /**
     * convert a string to slug
     */
    function toSlug(str: any): any;
    /**
     * convert a string to alias
     */
    function toAlias(str: any): any;
    /**
     * convert taxonomy array to string
     */
    function convertToTaxonomyString(terms: Array<Models.SharePoint.ITaxonomyFieldValue>): Array<string>;
    /**
     * convert taxonomy string to array
     */
    function convertToTaxonomyArray(terms: Array<string>): Array<Models.SharePoint.ITaxonomyFieldValue>;
    /**
    * convert keyword taxonomy array to string
    */
    function convertToKeywordTaxonomyString(terms: Array<Models.TermStore.IKeywordTaxonomyPicker>): Array<string>;
    /**
   * convert keyword taxonomy string to array
   */
    function convertToKeywordTaxonomyArray(terms: Array<string>): Array<Models.TermStore.IKeywordTaxonomyPicker>;
    /**
     * ensure trailing slash
     */
    function ensureTrailingSlash(url: string): string;
    /**
     * Get the url before the third slash
     */
    function getServerUrl(url: string): string;
    /**
     * Get the url for tenant resource
     */
    function getTenantResourceUrl(resourceId: string): string;
    /**
     * Check if the document url is supported to open in Office Web App
     */
    function isSupportedByOfficeWebApp(documentUrl: string): boolean;
    /**
     * Check if the url is the physical url
     */
    function isPhysicalUrl(url: string): boolean;
    function getDateStringWithoutTime(dateObj: Date): string;
    /**
     * Check if is type of a function
     */
    function isFunction(obj: any): boolean;
    function getListPrefix(localizePrefix: string): Array<string>;
    /**
    * Check is control in edit mode
    */
    function isControlEditMode(): boolean;
    /**
    * Get unique property in list
    */
    function uniqueBy(arr: any, fn: any): any;
    /**
    * Check type is a string
    */
    function isString(target: any): boolean;
    function isNumber(target: any): boolean;
    function createDynamicFunction(funcName: any): Function;
    /**
     * Determine whether the argument is an array.
     *
     * @param obj Object to test whether or not it is an array.
     */
    function isArray(obj: any): boolean;
    /**
     * Get metadata from angular2 ngmodule, component, ect..
     *
     * @param target function.
     */
    function getMetadata(target: any): any;
    /**
     * Get metadata from angular2 ngmodule, component, ect..
     *
     * @param target function.
     */
    function setMetadata(target: any, metadata: any): any;
    /**
     * Get exports from modular
     *
     * @param modulePath string.
     */
    function getModularExports(modulePath: string): any;
    /**
     * convert to camel case
     *
     * @param str string.
     */
    function toCamelCase(str: any): any;
    function getSocialDate(utcDate: Date): string;
    function getFormattedDate(input: any, format?: string): any;
    function removeClaimPrefixFromLoginName(loginName: string): string;
    function createHash(text: string): string;
    function castToInt(obj: any): number;
    function convertHexToRgba(hex: any, alpha: any): string;
    function getOmniaInstanceMode(): Enums.OmniaInstanceModes;
    function ensureOnlyTriggerCallbackFromCurrentRequest(requestName: string, request: (callback: (...args) => void) => Models.Shared.IAjaxInstance, callback: (...args) => void, timeout?: number): void;
}
