/// <reference types="lua-types/5.3" />
/**
 * And identity function to do type checking on object literals.
 */
export declare function typed<T>(x: T): T;
export declare function isInteger(s: string): boolean;
export declare function withDefault<T>(value: T | undefined, defaultValue: T): T;
export declare function ifDef<T>(x: T | undefined, fn: (x: T) => any): any;
export declare function applyObjProps<T>(obj: T, props: Partial<T>): T;
export declare function applyObjPropsWithDefaults<T extends {}>(obj: T, defaults: Partial<T>, props: Partial<T>): T;
export declare function objectValues<T>(t: {
    [K in any]?: T;
}): T[];
export declare function objectKeys<K extends string | symbol | number>(t: {
    [J in K]?: any;
}): K[];
export declare const objectEntries: typeof pairs;
export declare function isEmptyObject(obj: object): boolean;
export declare function objectNumOfItems<T>(t: object): number;
export declare function toString(arr: any[]): string;
export declare function isUndefined(x: any): boolean;
export declare function isDefined(x: any): boolean;
/**
 * Creates an array with ascending integer numbers (interval 1)
 * @param start start number (including)
 * @param end end number (including)
 * @returns
 */
export declare function series(start: number, end: number): number[];
/**
 * Run given function n times
 * @param fn function receives 1-based index
 */
export declare function nTimes(n: number, fn: (i: number) => void): void;
/**
 * Find the first (lowest) integer number,starting from 1, that is not in the given array.
 */
export declare function findFirstAvailableNumber(sortedNumbers: number[]): number;
export declare function arrayMove(arr: any[], oldIndex: number, newIndex: number, count?: number): void;
export declare function compareWithUndefined<T>(a: T, b: T, getCondition: (x: T) => number | undefined): number;
