declare type Key = string | number; export declare function clone(obj0: T): T; export declare function addLast(array: T[], val: T[] | T): T[]; export declare function addFirst(array: T[], val: T[] | T): T[]; export declare function removeLast(array: T[]): T[]; export declare function removeFirst(array: T[]): T[]; export declare function insert(array: T[], idx: number, val: T[] | T): T[]; export declare function removeAt(array: T[], idx: number): T[]; export declare function replaceAt(array: T[], idx: number, newItem: T): T[]; export declare function getIn(obj: undefined, path: Key[]): undefined; export declare function getIn(obj: null, path: Key[]): null; export declare function getIn(obj: object, path: Key[]): unknown; export declare function set(obj: undefined | null, key: K, val: V): { [P in K]: V; }; export declare function set(obj: undefined | null, key: number, val: V): [V]; export declare function set(obj: T, key: K, val: V): Omit & { [P in K]: V; }; export declare function set(obj: V[], key: number, val: V): V[]; export declare function setIn(obj: object | null | undefined, path: Key[], val: any): unknown; export declare function update(obj: object | null | undefined, key: Key, fnUpdate: (prevValue: any) => any): unknown; export declare function updateIn(obj: object | null | undefined, path: Key[], fnUpdate: (prevValue: any) => any): unknown; export declare function merge(a: T): T; export declare function merge(a: T, b: undefined | null): T; export declare function merge(a: T, b: U): Omit & U; export declare function merge(a: T, b: undefined | null, c: V): Omit & V; export declare function merge(a: T, b: U, c: undefined | null): Omit & U; export declare function merge(a: T, b: undefined | null, c: undefined | null): T; export declare function merge(a: T, b: U, c: V): Omit & U, keyof V> & V; export declare function merge(a: object, ...rest: Array): object; export declare function mergeDeep(a: object, b?: object | null, c?: object | null, d?: object | null, e?: object | null, f?: object | null, ...rest: Array): object; export declare function mergeIn(a: any, path: Key[], b?: object | null, c?: object | null, d?: object | null, e?: object | null, f?: object | null, ...rest: Array): unknown; export declare function omit(obj: T, attrs: K | K[]): Omit; export declare function addDefaults(a: T, b: U): Omit & T; export declare function addDefaults(a: object, b: object, ...rest: Array): object; declare const timm: { clone: typeof clone; addLast: typeof addLast; addFirst: typeof addFirst; removeLast: typeof removeLast; removeFirst: typeof removeFirst; insert: typeof insert; removeAt: typeof removeAt; replaceAt: typeof replaceAt; getIn: typeof getIn; set: typeof set; setIn: typeof setIn; update: typeof update; updateIn: typeof updateIn; merge: typeof merge; mergeDeep: typeof mergeDeep; mergeIn: typeof mergeIn; omit: typeof omit; addDefaults: typeof addDefaults; }; export default timm;