declare function flatten (array: flatten.NestedArray): T[]; declare namespace flatten { export interface NestedArray extends ReadonlyArray> {} export interface NestedList { [index: number]: T | NestedList; length: number; } export function from (array: NestedList): T[]; export function depth (array: NestedArray, depth: number): NestedArray; export function depthFrom (array: NestedList, depth: number): NestedArray; } export = flatten;