import { ParamMap } from "@angular/router";
import { MatDialog, MatSnackBar, MatSnackBarRef, MatDialogRef } from "@angular/material";
import { XmatConfirmDialogComponent, XmatAlertDialogComponent } from "../components/xmat-dialog/index";
import { XmatAlertDialogData, XmatAlertDialogActions, XmatConfirmDialogData, XmatSnackBarData, XmatFileReaderEvent, XmatGenericObject, XmatSelect } from "../models/index";
import { XmatConstantsService } from "./xmat-constants.service";
import { XmatSnackBarComponent } from "../components/xmat-snack-bar/index";
import { Observable } from "rxjs";
declare type XmatObservablesMap = XmatGenericObject<Observable<any>>;
/**
 * THIS SERVICE REQUIRES 3 DEPENDENCIES:
 * XmatConstantsService, XmatSnackBarModule and XmatDialogModule
 */
export declare class XmatFunctionsService {
    protected _dialog: MatDialog;
    protected _snackBar: MatSnackBar;
    protected _xmatConstants: XmatConstantsService;
    protected _confirmDialogDefaults: XmatConfirmDialogData;
    private _colorDb;
    private _defaultAlertData;
    constructor(_dialog: MatDialog, _snackBar: MatSnackBar, _xmatConstants: XmatConstantsService);
    /**
     * PUBLIC FUNCTIONS
     */
    addLeadingZeroes(n: number | string): string;
    createReflectionModel(source: any, level?: number): any;
    dateAddMonths(date?: Date, months?: number): Date;
    eachEnum(srcEnum: any, iteratee: any): any[];
    eachFrom<T = any>(array: T[], index: number, iteratee: (item: T, index: number, source: T[]) => any): T[];
    extractQueryParams(queryString?: string): ParamMap;
    filterProps(original: XmatGenericObject, exclude?: string[]): XmatGenericObject;
    /**
     * This function generates vibrant, "evenly spaced" colours (i.e. no clustering).
     * This is ideal for creating easily distinguishable vibrant markers in Google Maps and other apps.
     * */
    getRainbow(steps?: number, step?: number): string;
    getRandomNonConsecutiveHex(phase?: number): string;
    isNumeric(value: any): boolean;
    isValidLength(value: any): boolean;
    logWithStyle(title: string, msg: string, color: string, content: any): void;
    /**
     *
     * @param source the source object
     * @param keys allows to order the result and/or include only certain props
     */
    objectToArray<T = any>(source: XmatGenericObject<any>, keys?: string[], keepVoid?: boolean): XmatSelect<T>[];
    openAlertDialog(data: XmatAlertDialogData, returnRef?: false): Observable<XmatAlertDialogActions>;
    openAlertDialog(data: XmatAlertDialogData, returnRef: true): MatDialogRef<XmatAlertDialogComponent, XmatAlertDialogActions>;
    openConfirmDialog(data: XmatConfirmDialogData, disableClose?: boolean, width?: string, returnRef?: false): Observable<boolean>;
    openConfirmDialog(data: XmatConfirmDialogData, disableClose: boolean, width: string, returnRef: true): MatDialogRef<XmatConfirmDialogComponent, boolean>;
    parseDate(value: string | number): Date;
    readAsUrl(source: Blob | File): Observable<XmatFileReaderEvent>;
    replaceAll(haystack: string, mapObj: XmatGenericObject<string>): string;
    showSnackBar(data?: XmatSnackBarData): MatSnackBarRef<XmatSnackBarComponent>;
    /**
     * Shortcut to open an XmatAlertDialog passing only an error message
     * @param msg
     */
    showErrorSnackBar(msg?: string, duration?: number): MatSnackBarRef<XmatSnackBarComponent>;
    /**
     * Shortcut to open an XmatAlertDialog passing only an error message
     * @param msg
     */
    showErrorAlert(msg?: string | HTMLElement): Observable<XmatAlertDialogActions>;
    /**
     * Returns a formatted string using the first argument as a printf-like format.
     *
     * The first argument is a string that contains zero or more placeholders.
     * Each placeholder is replaced with the converted value from its corresponding argument.
     *
     * Supported placeholders are:
     *
     * %s - String.
     * %d - Number (both integer and float).
     * %% - single percent sign ('%'). This does not consume an argument.
     */
    sprintf(...args: any[]): string;
    stripEmojis(str: string): string;
    stripSpecialChars(str: string): string;
    $qMap<T extends XmatGenericObject<any> = XmatGenericObject<any>>(source: XmatObservablesMap): Observable<T>;
    $qArray<T = any>(source: Observable<T>[]): Observable<T[]>;
    private _parseDateFallback;
}
export {};
