declare module 'timm' { type ArrayOrObject = Array | Object; type Key = number | string; export function clone(obj: T): T; export function addLast(array: Array, val: Array | T): Array; export function addFirst(array: Array, val: Array | T): Array; export function removeLast(array: Array): Array; export function removeFirst(array: Array): Array; export function insert( array: Array, idx: number, val: Array | T ): Array; export function removeAt(array: Array, idx: number): Array; export function replaceAt( array: Array, idx: number, newItem: T ): Array; export function getIn(obj: ArrayOrObject | undefined, path: Array): any; export function set(obj: T | undefined, key: Key, val: any): T; export function setIn( obj: T, path: Array, val: any ): T; export function update( obj: T, key: Key, fnUpdate: (prevValue: any) => any ): T; export function updateIn( obj: T, path: Array, fnUpdate: (prevValue: any) => any ): T; export function merge( a: Object, b?: Object, c?: Object, d?: Object, e?: Object, f?: Object, ...rest: Array ): Object; export function mergeDeep( a: Object, b?: Object, c?: Object, d?: Object, e?: Object, f?: Object, ...rest: Array ): Object; export function mergeIn( a: T, path: Array, b?: Object, c?: Object, d?: Object, e?: Object, f?: Object, ...rest: Array ): T; export function omit(obj: Object, attrs: Array | string): Object; export function addDefaults( a: Object, b?: Object, c?: Object, d?: Object, e?: Object, f?: Object, ...rest: Array ): Object; }