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