export * from "./common";
import * as commonUtils from './common';
declare const utilities: {
    combineArrays: (arg: string[][], separator?: string) => string[];
    chunkArray: <T>(arr: T[], chunkSize: number) => T[][];
    applyOnChunkedArray: <T, R>(arr: T[] | undefined, chunkSize: number, callback: (chArr: T[], chunkIndex: number) => Promise<R>) => Promise<void>;
    transformTimeRangeToDates(timeRange: string, currentDate?: Date, rangeIn?: "past" | "future"): false | {
        start: Date;
        end: Date;
    };
    isDateWithinLastNSeconds: (date: Date, seconds: number) => boolean;
    isDateWithinLastNMinutes: (date: Date, minutes: number) => boolean;
    isDateWithinLastNHours: (date: Date, hours: number) => boolean;
    isDateWithinLastNDays: (date: Date, days: number) => boolean;
    isDateWithinLastNWeeks: (date: Date, weeks: number) => boolean;
    isDateWithinLastNMonths: (date: Date, months: number) => boolean;
    isDateWithinLastNYears: (date: Date, years: number) => boolean;
    isDateWithinLastNTimeRange: (date: Date, timeRange: string) => boolean;
    isDateRangObject: (obj: any) => obj is {
        start: Date;
        end: Date;
    };
    getSecondsDifference(endDate: Date, startDate: Date): number;
    millisecondsToTimeString: (milli: number) => string;
    isEntityObject: (obj: any) => obj is {
        _id: string;
    };
    generateErrorFromHttpException: (error: Jsm.Core.Utils.Api.Response.Error, status: number, statusText: string) => Error;
    errorToObject: (error: typeof import("jsm-exceptions").JsmException | import("joi").ValidationError | Error | commonUtils.AxiosError | Jsm.Core.Utils.Api.Response.Error) => Jsm.Core.Utils.Api.Response.ErrorObject | undefined;
    fetchRemoteFileAsBlob(url: string): Promise<Blob>;
    createFileObjectFromRemote(url: string, filename: string): Promise<File>;
    getMimeType(filePath: string, fromExtension?: boolean): Promise<string | false>;
    getFileTypeGroup<M extends keyof typeof commonUtils.mimetypeToFileTypeGroup>(mimetype: M): (typeof commonUtils.mimetypeToFileTypeGroup)[M] | null;
    mimetypeToFileTypeGroup: {
        readonly 'image/jpeg': "image";
        readonly 'image/png': "image";
        readonly 'image/gif': "image";
        readonly 'image/bmp': "image";
        readonly 'image/webp': "image";
        readonly 'image/svg+xml': "image";
        readonly 'image/tiff': "image";
        readonly 'image/vnd.microsoft.icon': "image";
        readonly 'application/pdf': "document";
        readonly 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': "document";
        readonly 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': "document";
        readonly 'application/vnd.openxmlformats-officedocument.presentationml.presentation': "document";
        readonly 'application/vnd.ms-excel': "document";
        readonly 'text/csv': "document";
        readonly 'application/msword': "document";
        readonly 'application/json': "data";
        readonly 'application/xml': "data";
        readonly 'text/plain': "text";
        readonly 'video/mp4': "video";
        readonly 'video/mpeg': "video";
        readonly 'video/quicktime': "video";
        readonly 'video/webm': "video";
        readonly 'video/x-msvideo': "video";
        readonly 'audio/mpeg': "audio";
        readonly 'audio/ogg': "audio";
        readonly 'audio/wav': "audio";
        readonly 'audio/aac': "audio";
        readonly 'audio/midi': "audio";
        readonly 'application/zip': "archive";
        readonly 'application/x-rar-compressed': "archive";
        readonly 'application/x-7z-compressed': "archive";
        readonly 'application/x-tar': "archive";
        readonly 'text/html': "web";
        readonly 'text/css': "web";
        readonly 'application/javascript': "web";
    };
    sanitizeObject(obj: any, cache?: WeakMap<WeakKey, any>): any;
    removeUndefinedAttributes(object: any): any;
    defaults: <T extends object, Y extends object = Partial<T>>(x: T, y: Y, options?: import("deepmerge").Options) => import("utility-types").Assign<import("utility-types").Diff<T, Y>, import("utility-types").DeepRequired<Y>>;
    getItemIdsFromOldAndNewData: <T extends string | string[] | null>(new_value?: T, old_value?: T) => T;
    isDevelopmentDev: () => boolean;
    isProductionDev: () => boolean;
    isNumberRange(variable: any): variable is {
        min?: number;
        max?: number;
    };
    roundNumberDecimals: (num: number, decimals?: number) => number;
    deepSanitizeObjectValues(value: any): any;
    unflattenObject(flatObj: Record<string, any>): Record<string, any>;
    deletePropertyRecursively<T extends object, P extends keyof T>(obj: T, property: P): void;
    deepMergeUnlessNull<X extends object, Y extends object>(x: X, y: Y): X & Y;
    replaceNullAndUndefined<T>(x: T, y: Partial<T>): T;
    mergeAddresses(address1?: Partial<Jsm.Core.Utils.Entity.Snapshots.Locations.Address> | null, address2?: Partial<Jsm.Core.Utils.Entity.Snapshots.Locations.Address> | null): Jsm.Core.Utils.Entity.Snapshots.Locations.Address | undefined;
    transformObjectToString: (obj: any) => any;
    flattenObjectKeys: (obj: Record<string, any>, prefix?: string) => string[];
    flattenObject: (obj: Record<string, any>, prefix?: string) => Record<string, any>;
    extractPartialObject: <D extends object, P extends keyof D>(obj: D, properties: P[]) => Pick<D, P>;
    unflattenObjectArray: <T extends {
        _id: string;
        parent: string | null;
        children: string[];
    }>(items: T[]) => (T & {
        children: T[];
    })[];
    ObjectUpdatedPropertyObject: typeof commonUtils.ObjectUpdatedPropertyObject;
    ObjectUpdatedProperties: typeof commonUtils.ObjectUpdatedProperties;
    getFileExtensionFromUrl(url: string): string | undefined;
    respond<T>(res: Response, data: T, status?: number): void;
    fixFiltersObject(filters?: any): any;
    requestHasParam<P extends object>(payload: P, param: keyof P): boolean;
    extractRequestSignificantData: (req: Request) => commonUtils.RequestData;
    getAuthData: (req: Request) => Promise<Jsm.Core.Security.AuthData>;
    fragmentObjectId(str: string): string;
    ressembleObjectId(str: string): string;
    sanitizeKeys: (obj: any) => any;
    sanitizeObjectBooleans: (obj: any) => any;
    hashString: (str: string) => number;
    extractRawTextFromHtml: (html: string) => string;
    isValidPhoneNumber(phoneNumber: string): boolean;
    isValidAlgerianPhoneNumber(phoneNumber: string): boolean;
    transformAlgerianPhoneNumberToStandardFormat(phoneNumber: string): string | null;
    transformPhoneNumberToStandardFormat(phoneNumber: string): string | null;
    capitalizeFirstLetter(str: string): string;
    kebabToCamel(kebabString: string): string;
    camelToKebab(camelCaseString: string): string;
    camelToWords(camelCaseString: string): string;
    pluralize(word: string): string;
    singularize(word: string): string;
    replaceAll(input: string, search: string, replace: string): string;
    buildUserFullName(names: {
        first_name?: string | null;
        family_name?: string | null;
    }): string;
    generatePinCode(): string;
    getSubstringUntilFirstWhitespaceAfterNChars(str: string, threshold?: number, dots?: string): string;
    generateItemAlphabetCode(usedCodes: string[]): string;
    countCharacterOccurrenceInString(str: string, character: string): number;
    splitString: (str: string, use_plus_character?: boolean) => string[];
    stringToBoolean: (str: string) => boolean;
    addLeadingZeros: (num: number, totalLength: number) => string;
    toPriceAmount: (str: string) => number;
    isNumeric: (val: string) => boolean;
    abbreviateNumber: (n: number) => string;
    createBigram: (word: string) => string[];
    checkSimilarity: (a: string, b: string) => number;
    generateStringNgrams: (str: string) => string[];
    formatBytes: (bytes: number, decimals?: number) => string;
    generateSlug: (title: string) => Promise<string>;
    toSnakeCase: (str: string) => string;
    toKebabCase: (input: string) => string;
    formatAmount: (x: number | {
        amount: number;
        separator?: string;
        decimals?: number;
        currency?: string;
    }, separator?: string | {
        separator?: string;
        decimals?: number;
        currency?: string;
    }, decimals?: number, currency?: string) => string;
    formatNotificationSpace: (space: string, infos: {
        user?: string;
        company?: string | null;
        office?: string;
        store?: string;
        role?: string;
    }) => string | null;
    slugify(title: string): string;
    Timer: typeof commonUtils.Timer;
    initTimer: () => commonUtils.Timer;
    delay: (ms: number) => Promise<null>;
    sleep: (ms: number) => Promise<null>;
    isTrackingId: (str: string | null) => false | string;
    createTrackingId: (entity: string, shortcuts: {
        [key: string]: string;
    }, model?: import("mongoose").Model<{
        [StringKey: string]: any;
        [NumberKey: number]: any;
    }> | null, custom_prefix?: string | null, parent_tracking_id?: string | null) => Promise<string>;
    getEnvBrowser<T extends string | number | boolean | null>(key: string, defaultValue?: T): T extends string ? string & T : T extends number ? number : T extends boolean ? boolean : T | null;
    generatePathWithParams<T extends Record<string, string | number | undefined | null>>(template: string, params: T): string;
    getJsmRouteTree<Space extends string>(MENU_ITEMS: Jsm.Core.UI.RouteItems<Space>, childNode: Jsm.Core.UI.RouteItem<Space>): Jsm.Core.UI.RouteItem<Space>[];
};
export default utilities;
