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 }