declare global {
    interface Array<T> {
        removeElementAtIndex(index: number): void;
        removeElement(element: T): void;
        insertElementAtIndex(index: number, element: T): void;
        replaceElementAtIndex(index: number, element: T): void;
        contains(element: T): boolean;
        findAsyncSequential(functionToCall: (value: any) => Promise<boolean>): Promise<any>;
        groupedBy<T>(keyFunction: (item: T) => any): {
            [key: string]: Array<T>;
        } & Object;
        uniqueMap<T, R>(keyFunction: (item: T) => R): R[];
        copy(): Array<T>;
        arrayByRepeating(numberOfRepetitions: number): Array<T>;
        arrayByTrimmingToLengthIfLonger(maxLength: number): Array<T>;
        anyMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean;
        noneMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean;
        allMatch(predicate: (value: T, index: number, obj: T[]) => boolean): boolean;
        firstElement: T;
        lastElement: T;
        readonly summedValue: T;
        everyElement: UIEveryElementItem<T>;
        max(): number;
        min(): number;
        average(): number;
        isEqualToArray(array: Array<T>, keyPath?: string): boolean;
    }
    interface String {
        contains(string: string): boolean;
        readonly numericalValue: number;
        readonly integerValue: number;
        isAString: boolean;
    }
    interface Number {
        isANumber: boolean;
        readonly integerValue: number;
        constrainedValue(min: number, max: number): number;
    }
    interface Date {
        readonly dateString: string;
    }
    interface Object {
        forEach(callbackFunction: (value: any, key: string, stopLooping: () => void) => void): void;
        objectByCopyingValuesRecursivelyFromObject<T extends object>(object: T): T & this;
        readonly allValues: Array<any>;
        readonly allKeys: (keyof this)[];
    }
}
export {};
export type UIEveryElementItem<T> = {
    [P in keyof T]: UIEveryElementItem<T[P]>;
} & {
    UI_elementValues?: T[];
} & T;
