import { Observable } from 'rxjs';
/**
 * @hidden
 */
export declare function cloneArray(array: any[], deep?: boolean): any[];
/**
 * Doesn't clone leaf items
 * @hidden
 */
export declare function cloneHierarchicalArray(array: any[], childDataKey: any): any[];
/**
 * Deep clones all first level keys of Obj2 and merges them to Obj1
 * @param obj1 Object to merge into
 * @param obj2 Object to merge from
 * @returns Obj1 with merged cloned keys from Obj2
 * @hidden
 */
export declare function mergeObjects(obj1: {}, obj2: {}): any;
/**
 * Creates deep clone of provided value.
 * Supports primitive values, dates and objects.
 * If passed value is array returns shallow copy of the array.
 * @param value value to clone
 * @returns Deep copy of provided value
 * @hidden
 */
export declare function cloneValue(value: any): any;
/**
 * Checks if provided variable is Object
 * @param value Value to check
 * @returns true if provided variable is Object
 * @hidden
 */
export declare function isObject(value: any): boolean;
/**
 * Checks if provided variable is Date
 * @param value Value to check
 * @returns true if provided variable is Date
 * @hidden
 */
export declare function isDate(value: any): boolean;
/**
 * Checks if the two passed arguments are equal
 * Currently supports date objects
 * @param obj1
 * @param obj2
 * @returns: `boolean`
 * @hidden
 */
export declare function isEqual(obj1: any, obj2: any): boolean;
/**
 * @hidden
 */
export declare const enum KEYCODES {
    ENTER = 13,
    SPACE = 32,
    ESCAPE = 27,
    LEFT_ARROW = 37,
    UP_ARROW = 38,
    RIGHT_ARROW = 39,
    DOWN_ARROW = 40,
    F2 = 113,
    TAB = 9,
    CTRL = 17,
    Z = 90,
    Y = 89,
    X = 88,
    BACKSPACE = 8,
    DELETE = 46,
    INPUT_METHOD = 229
}
/**
 * @hidden
 */
export declare const enum KEYS {
    ENTER = "Enter",
    SPACE = " ",
    SPACE_IE = "Spacebar",
    ESCAPE = "Escape",
    ESCAPE_IE = "Esc",
    LEFT_ARROW = "ArrowLeft",
    LEFT_ARROW_IE = "Left",
    UP_ARROW = "ArrowUp",
    UP_ARROW_IE = "Up",
    RIGHT_ARROW = "ArrowRight",
    RIGHT_ARROW_IE = "Right",
    DOWN_ARROW = "ArrowDown",
    DOWN_ARROW_IE = "Down",
    F2 = "F2",
    TAB = "Tab",
    SEMICOLON = ";",
    HOME = "Home",
    END = "End"
}
/**
 * @hidden
 * Returns the actual size of the node content, using Range
 * ```typescript
 * let range = document.createRange();
 * let column = this.grid.columnList.filter(c => c.field === 'ID')[0];
 *
 * let size = getNodeSizeViaRange(range, column.cells[0].nativeElement);
 * ```
 */
export declare function getNodeSizeViaRange(range: Range, node: any): number;
/**
 * @hidden
 * Returns the actual size of the node content, using Canvas
 * ```typescript
 * let ctx = document.createElement('canvas').getContext('2d');
 * let column = this.grid.columnList.filter(c => c.field === 'ID')[0];
 *
 * let size = valToPxlsUsingCanvas(ctx, column.cells[0].nativeElement);
 * ```
 */
export declare function getNodeSizeViaCanvas(canvas2dCtx: any, node: any): number;
/**
 * @hidden
 */
export declare function isIE(): boolean;
/**
 * @hidden
 */
export declare function isEdge(): boolean;
/**
 * @hidden
 */
export declare function isFirefox(): boolean;
/**
 * @hidden
 */
export declare class PlatformUtil {
    private platformId;
    isBrowser: boolean;
    isIOS: boolean;
    constructor(platformId: Object);
}
/**
 * @hidden
 */
export declare function isLeftClick(event: PointerEvent): boolean;
/** @hidden */
export declare function isNavigationKey(key: string): boolean;
/**
 * @hidden
 */
export declare function flatten(arr: any[]): any[];
export interface CancelableEventArgs {
    /**
     * Provides the ability to cancel the event.
     */
    cancel: boolean;
}
export interface IBaseEventArgs {
    /**
     * Provides reference to the owner component.
     */
    owner?: any;
}
export interface CancelableBrowserEventArgs extends CancelableEventArgs {
    /** Browser event */
    event?: Event;
}
export declare const HORIZONTAL_NAV_KEYS: Set<string>;
export declare const NAVIGATION_KEYS: Set<string>;
export declare const ROW_EXPAND_KEYS: Set<string>;
export declare const ROW_COLLAPSE_KEYS: Set<string>;
export declare const SUPPORTED_KEYS: Set<string>;
export declare const HEADER_KEYS: Set<string>;
/**
 * @hidden
 * @internal
 *
 * Creates a new ResizeObserver on `target` and returns it as an Observable.
 * Run the resizeObservable outside angular zone, because it patches the MutationObserver which causes an infinite loop.
 * Related issue: https://github.com/angular/angular/issues/31712
 */
export declare function resizeObservable(target: HTMLElement): Observable<ResizeObserverEntry[]>;
/**
 * @hidden
 * @internal
 *
 * Compares two maps.
 */
export declare function compareMaps(map1: Map<any, any>, map2: Map<any, any>): boolean;
/**
 *
 * Given a property access path in the format `x.y.z` resolves and returns
 * the value of the `z` property in the passed object.
 *
 * @hidden
 * @internal
 */
export declare function resolveNestedPath(obj: any, path: string): any;
/**
 *
 * Given a property access path in the format `x.y.z` and a value
 * this functions builds and returns an object following the access path.
 *
 * @example
 * ```typescript
 * console.log('x.y.z.', 42);
 * >> { x: { y: { z: 42 } } }
 * ```
 *
 * @hidden
 * @internal
 */
export declare function reverseMapper(path: string, value: any): {};
export declare function yieldingLoop(count: number, chunkSize: number, callback: (index: number) => void, done: () => void): void;
export declare function mkenum<T extends {
    [index: string]: U;
}, U extends string>(x: T): T;
