UNPKG

ipfs-observed-remove

Version:

[![CircleCI](https://circleci.com/gh/wehriam/ipfs-observed-remove.svg?style=svg)](https://circleci.com/gh/wehriam/ipfs-observed-remove) [![npm version](https://badge.fury.io/js/ipfs-observed-remove.svg)](http://badge.fury.io/js/ipfs-observed-remove) [![co

1,478 lines (1,433 loc) 195 kB
// flow-typed signature: e7b8edb494eb72c1ed74d7c62416ef20 // flow-typed version: 179ae71d58/lodash_v4.x.x/flow_>=v0.104.x <=v0.152.x declare module "lodash" { declare type Path = $ReadOnlyArray<string | number> | string | number; declare type __CurriedFunction1<A, R, AA: A> = (...r: [AA]) => R; declare type CurriedFunction1<A, R> = __CurriedFunction1<A, R, *>; declare type __CurriedFunction2<A, B, R, AA: A, BB: B> = (( ...r: [AA] ) => CurriedFunction1<BB, R>) & ((...r: [AA, BB]) => R); declare type CurriedFunction2<A, B, R> = __CurriedFunction2<A, B, R, *, *>; declare type __CurriedFunction3<A, B, C, R, AA: A, BB: B, CC: C> = (( ...r: [AA] ) => CurriedFunction2<BB, CC, R>) & ((...r: [AA, BB]) => CurriedFunction1<CC, R>) & ((...r: [AA, BB, CC]) => R); declare type CurriedFunction3<A, B, C, R> = __CurriedFunction3< A, B, C, R, *, *, * >; declare type __CurriedFunction4< A, B, C, D, R, AA: A, BB: B, CC: C, DD: D > = ((...r: [AA]) => CurriedFunction3<BB, CC, DD, R>) & ((...r: [AA, BB]) => CurriedFunction2<CC, DD, R>) & ((...r: [AA, BB, CC]) => CurriedFunction1<DD, R>) & ((...r: [AA, BB, CC, DD]) => R); declare type CurriedFunction4<A, B, C, D, R> = __CurriedFunction4< A, B, C, D, R, *, *, *, * >; declare type __CurriedFunction5< A, B, C, D, E, R, AA: A, BB: B, CC: C, DD: D, EE: E > = ((...r: [AA]) => CurriedFunction4<BB, CC, DD, EE, R>) & ((...r: [AA, BB]) => CurriedFunction3<CC, DD, EE, R>) & ((...r: [AA, BB, CC]) => CurriedFunction2<DD, EE, R>) & ((...r: [AA, BB, CC, DD]) => CurriedFunction1<EE, R>) & ((...r: [AA, BB, CC, DD, EE]) => R); declare type CurriedFunction5<A, B, C, D, E, R> = __CurriedFunction5< A, B, C, D, E, R, *, *, *, *, * >; declare type __CurriedFunction6< A, B, C, D, E, F, R, AA: A, BB: B, CC: C, DD: D, EE: E, FF: F > = ((...r: [AA]) => CurriedFunction5<BB, CC, DD, EE, FF, R>) & ((...r: [AA, BB]) => CurriedFunction4<CC, DD, EE, FF, R>) & ((...r: [AA, BB, CC]) => CurriedFunction3<DD, EE, FF, R>) & ((...r: [AA, BB, CC, DD]) => CurriedFunction2<EE, FF, R>) & ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1<FF, R>) & ((...r: [AA, BB, CC, DD, EE, FF]) => R); declare type CurriedFunction6<A, B, C, D, E, F, R> = __CurriedFunction6< A, B, C, D, E, F, R, *, *, *, *, *, * >; declare type Curry = (<A, R>((...r: [A]) => R) => CurriedFunction1<A, R>) & (<A, B, R>((...r: [A, B]) => R) => CurriedFunction2<A, B, R>) & (<A, B, C, R>((...r: [A, B, C]) => R) => CurriedFunction3<A, B, C, R>) & (<A, B, C, D, R>( (...r: [A, B, C, D]) => R ) => CurriedFunction4<A, B, C, D, R>) & (<A, B, C, D, E, R>( (...r: [A, B, C, D, E]) => R ) => CurriedFunction5<A, B, C, D, E, R>) & (<A, B, C, D, E, F, R>( (...r: [A, B, C, D, E, F]) => R ) => CurriedFunction6<A, B, C, D, E, F, R>); declare type UnaryFn<A, R> = (a: A) => R; declare type TemplateSettings = { escape?: RegExp, evaluate?: RegExp, imports?: Object, interpolate?: RegExp, variable?: string, ... }; declare type TruncateOptions = { length?: number, omission?: string, separator?: RegExp | string, ... }; declare type Cancelable = { cancel: () => void, flush: () => mixed, ... }; declare type DebounceOptions = { leading?: boolean, maxWait?: number, trailing?: boolean, ... }; declare type ThrottleOptions = { leading?: boolean, trailing?: boolean, ... }; // using opaque type for object key is not supported by Flow atm: https://github.com/facebook/flow/issues/5407 declare type Key = string | number; declare type IndexerObject<V, K = Key> = { [key: K]: V, ... }; declare type ReadOnlyIndexerObject<V, K = Key> = $ReadOnly<IndexerObject<V, K>>; declare type NestedArray<V> = Array<Array<V>>; declare type Collection<V, K = Key> = $ReadOnlyArray<V> | ReadOnlyIndexerObject<V, K>; declare type matchesIterateeShorthand = { [Key]: any, ... }; declare type matchesPropertyIterateeShorthand = [string, any]; declare type propertyIterateeShorthand = string; declare type OPredicate<A, O> = | ((value: A, key: string, object: O) => any) | matchesIterateeShorthand | matchesPropertyIterateeShorthand | propertyIterateeShorthand; declare type IterateeWithResult<V, K, O, R> = | ((value: V, key: K, object: O) => R) | string; declare type OIterateeWithResult<V, K, O, R> = | ReadOnlyIndexerObject<V, K> | IterateeWithResult<V, K, O, R>; declare type OIteratee<O> = OIterateeWithResult<any, any, O, any>; declare type AFlatMapIteratee<V, O, R> = | ((item: V, index: number, array: O) => $ReadOnlyArray<R> | R) | string declare type OFlatMapIteratee<V, K, O, R> = IterateeWithResult<V, K, O, $ReadOnlyArray<R> | R>; declare type Predicate<T> = | ((value: T, index: number, array: Array<T>) => any) | matchesIterateeShorthand | matchesPropertyIterateeShorthand | propertyIterateeShorthand; declare type _ValueOnlyIteratee<T> = (value: T) => mixed; declare type ValueOnlyIteratee<T> = _ValueOnlyIteratee<T> | string; declare type _Iteratee<T> = ( item: T, index: number, array: ?Array<T> ) => mixed; declare type Iteratee<T> = _Iteratee<T> | Object | string; declare type Comparator<T> = (item: T, item2: T) => boolean; declare type ReadOnlyMapIterator<T, U> = | ((item: T, index: number, array: $ReadOnlyArray<T>) => U) | propertyIterateeShorthand; declare type OMapIterator<T, O, U> = | ((item: T, key: string, object: O) => U) | propertyIterateeShorthand; declare class Lodash { // Array chunk<T>(array?: ?$ReadOnlyArray<T>, size?: ?number): Array<Array<T>>; compact<T, N = ?T | boolean>(array?: ?$ReadOnlyArray<N>): Array<T>; concat<T>( base?: ?$ReadOnlyArray<T>, ...elements: $ReadOnlyArray<any> ): Array<T | any>; difference<T>( array?: ?$ReadOnlyArray<T>, ...values: $ReadOnlyArray<?$ReadOnlyArray<T>> ): Array<T>; differenceBy<T, U>( array?: ?$ReadOnlyArray<T>, values?: ?$ReadOnlyArray<U>, iteratee?: ?ValueOnlyIteratee<T | U> ): Array<T>; differenceWith<T, U>( array?: ?$ReadOnlyArray<T>, values?: ?$ReadOnlyArray<U>, comparator?: ?(item: T, item2: U) => boolean ): Array<T>; drop<T>(array?: ?$ReadOnlyArray<T>, n?: ?number): Array<T>; dropRight<T>(array?: ?$ReadOnlyArray<T>, n?: ?number): Array<T>; dropRightWhile<T>(array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T>): Array<T>; dropWhile<T>(array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T>): Array<T>; fill<T, U>( array?: ?Array<T>, value?: ?U, start?: ?number, end?: ?number ): Array<T | U>; findIndex<T>( array: $ReadOnlyArray<T>, predicate?: ?Predicate<T>, fromIndex?: ?number ): number; findIndex<T>( array: void | null, predicate?: ?Predicate<T>, fromIndex?: ?number ): -1; findLastIndex<T>( array: $ReadOnlyArray<T>, predicate?: ?Predicate<T>, fromIndex?: ?number ): number; findLastIndex<T>( array: void | null, predicate?: ?Predicate<T>, fromIndex?: ?number ): -1; // alias of _.head first<T>(array: ?$ReadOnlyArray<T>): T; flatten<T, X>(array?: ?$ReadOnlyArray<$ReadOnlyArray<T> | X>): Array<T | X>; flattenDeep<T>(array?: ?$ReadOnlyArray<any>): Array<T>; flattenDepth(array?: ?$ReadOnlyArray<any>, depth?: ?number): Array<any>; fromPairs<A, B>(pairs?: ?$ReadOnlyArray<[A, B]>): {| [key: A]: B |}; head<T>(array: ?$ReadOnlyArray<T>): T; indexOf<T>(array: $ReadOnlyArray<T>, value: T, fromIndex?: number): number; indexOf<T>(array: void | null, value?: ?T, fromIndex?: ?number): -1; initial<T>(array: ?$ReadOnlyArray<T>): Array<T>; intersection<T>(...arrays?: Array<$ReadOnlyArray<T>>): Array<T>; //Workaround until (...parameter: T, parameter2: U) works intersectionBy<T>( a1?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; intersectionBy<T>( a1?: ?$ReadOnlyArray<T>, a2?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; intersectionBy<T>( a1?: ?$ReadOnlyArray<T>, a2?: ?$ReadOnlyArray<T>, a3?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; intersectionBy<T>( a1?: ?$ReadOnlyArray<T>, a2?: ?$ReadOnlyArray<T>, a3?: ?$ReadOnlyArray<T>, a4?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; //Workaround until (...parameter: T, parameter2: U) works intersectionWith<T>( a1?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T> ): Array<T>; intersectionWith<T>( a1?: ?$ReadOnlyArray<T>, a2?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T> ): Array<T>; intersectionWith<T>( a1?: ?$ReadOnlyArray<T>, a2?: ?$ReadOnlyArray<T>, a3?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T> ): Array<T>; intersectionWith<T>( a1?: ?$ReadOnlyArray<T>, a2?: ?$ReadOnlyArray<T>, a3?: ?$ReadOnlyArray<T>, a4?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T> ): Array<T>; join<T>(array: $ReadOnlyArray<T>, separator?: ?string): string; join<T>(array: void | null, separator?: ?string): ""; last<T>(array: ?$ReadOnlyArray<T>): T; lastIndexOf<T>(array: $ReadOnlyArray<T>, value?: ?T, fromIndex?: ?number): number; lastIndexOf<T>(array: void | null, value?: ?T, fromIndex?: ?number): -1; nth<T>(array: $ReadOnlyArray<T>, n?: ?number): T; nth(array: void | null, n?: ?number): void; pull<T>(array: Array<T>, ...values?: $ReadOnlyArray<?T>): Array<T>; pull<T: void | null>(array: T, ...values?: $ReadOnlyArray<?any>): T; pullAll<T>(array: Array<T>, values?: ?$ReadOnlyArray<T>): Array<T>; pullAll<T: void | null>(array: T, values?: ?$ReadOnlyArray<any>): T; pullAllBy<T>( array: Array<T>, values?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; pullAllBy<T: void | null>( array: T, values?: ?$ReadOnlyArray<any>, iteratee?: ?ValueOnlyIteratee<any> ): T; pullAllWith<T: void | null>( array: T, values?: ?$ReadOnlyArray<any>, comparator?: ?Function ): T; pullAllWith<T>(array: Array<T>, values?: ?($ReadOnlyArray<T>), comparator?: ?Function): Array<T>; pullAt<T>(array?: ?Array<T>, ...indexed?: $ReadOnlyArray<?number>): Array<T>; pullAt<T>(array?: ?Array<T>, indexed?: ?$ReadOnlyArray<number>): Array<T>; remove<T>(array?: ?Array<T>, predicate?: ?Predicate<T>): Array<T>; reverse<T>(array: Array<T>): Array<T>; reverse<T: void | null>(array: T): T; slice<T>( array?: ?$ReadOnlyArray<T>, start?: ?number, end?: ?number ): Array<T>; sortedIndex<T>(array: $ReadOnlyArray<T>, value: T): number; sortedIndex<T>(array: void | null, value: ?T): 0; sortedIndexBy<T>( array: $ReadOnlyArray<T>, value?: ?T, iteratee?: ?ValueOnlyIteratee<T> ): number; sortedIndexBy<T>( array: void | null, value?: ?T, iteratee?: ?ValueOnlyIteratee<T> ): 0; sortedIndexOf<T>(array: $ReadOnlyArray<T>, value: T): number; sortedIndexOf<T>(array: void | null, value?: ?T): -1; sortedLastIndex<T>(array: $ReadOnlyArray<T>, value: T): number; sortedLastIndex<T>(array: void | null, value?: ?T): 0; sortedLastIndexBy<T>( array: $ReadOnlyArray<T>, value: T, iteratee?: ValueOnlyIteratee<T> ): number; sortedLastIndexBy<T>( array: void | null, value?: ?T, iteratee?: ?ValueOnlyIteratee<T> ): 0; sortedLastIndexOf<T>(array: $ReadOnlyArray<T>, value: T): number; sortedLastIndexOf<T>(array: void | null, value?: ?T): -1; sortedUniq<T>(array?: ?$ReadOnlyArray<T>): Array<T>; sortedUniqBy<T>( array?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; tail<T>(array?: ?$ReadOnlyArray<T>): Array<T>; take<T>(array?: ?$ReadOnlyArray<T>, n?: ?number): Array<T>; takeRight<T>(array?: ?$ReadOnlyArray<T>, n?: ?number): Array<T>; takeRightWhile<T>(array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T>): Array<T>; takeWhile<T>(array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T>): Array<T>; union<T>(...arrays?: Array<$ReadOnlyArray<T>>): Array<T>; //Workaround until (...parameter: T, parameter2: U) works unionBy<T>( a1?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): Array<T>; unionBy<T>( a1?: ?$ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, iteratee?: ValueOnlyIteratee<T> ): Array<T>; unionBy<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, iteratee?: ValueOnlyIteratee<T> ): Array<T>; unionBy<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, a4: $ReadOnlyArray<T>, iteratee?: ValueOnlyIteratee<T> ): Array<T>; //Workaround until (...parameter: T, parameter2: U) works unionWith<T>(a1?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T>): Array<T>; unionWith<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, comparator?: Comparator<T> ): Array<T>; unionWith<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, comparator?: Comparator<T> ): Array<T>; unionWith<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, a4: $ReadOnlyArray<T>, comparator?: Comparator<T> ): Array<T>; uniq<T>(array?: ?$ReadOnlyArray<T>): Array<T>; uniqBy<T>(array?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T>): Array<T>; uniqWith<T>(array?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T>): Array<T>; unzip<T>(array?: ?$ReadOnlyArray<T>): Array<T>; unzipWith<T>(array: ?$ReadOnlyArray<T>, iteratee?: ?Iteratee<T>): Array<T>; without<T>(array?: ?$ReadOnlyArray<T>, ...values?: Array<?T>): Array<T>; xor<T>(...array: $ReadOnlyArray<$ReadOnlyArray<T>>): Array<T>; //Workaround until (...parameter: T, parameter2: U) works xorBy<T>(a1?: ?$ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T>): Array<T>; xorBy<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, iteratee?: ValueOnlyIteratee<T> ): Array<T>; xorBy<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, iteratee?: ValueOnlyIteratee<T> ): Array<T>; xorBy<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, a4: $ReadOnlyArray<T>, iteratee?: ValueOnlyIteratee<T> ): Array<T>; //Workaround until (...parameter: T, parameter2: U) works xorWith<T>(a1?: ?$ReadOnlyArray<T>, comparator?: ?Comparator<T>): Array<T>; xorWith<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, comparator?: Comparator<T> ): Array<T>; xorWith<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, comparator?: Comparator<T> ): Array<T>; xorWith<T>( a1: $ReadOnlyArray<T>, a2: $ReadOnlyArray<T>, a3: $ReadOnlyArray<T>, a4: $ReadOnlyArray<T>, comparator?: Comparator<T> ): Array<T>; zip<A, B>(a1?: ?($ReadOnlyArray<A>), a2?: ?($ReadOnlyArray<B>)): Array<[A, B]>; zip<A, B, C>(a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C>): Array<[A, B, C]>; zip<A, B, C, D>(a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C>, a4: $ReadOnlyArray<D>): Array<[A, B, C, D]>; zip<A, B, C, D, E>( a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C>, a4: $ReadOnlyArray<D>, a5: $ReadOnlyArray<E> ): Array<[A, B, C, D, E]>; zipObject<K, V>(props: $ReadOnlyArray<K>, values?: ?$ReadOnlyArray<V>): { [key: K]: V, ... }; zipObject<K, V>(props: void | null, values?: ?$ReadOnlyArray<V>): {...}; zipObjectDeep(props: $ReadOnlyArray<any>, values?: ?any): Object; zipObjectDeep(props: void | null, values?: ?any): {...}; zipWith<A>(a1?: ?$ReadOnlyArray<A>): Array<[A]>; zipWith<T, A>(a1: $ReadOnlyArray<A>, iteratee: (A) => T): Array<T>; zipWith<A, B>(a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>): Array<[A, B]>; zipWith<T, A, B>( a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, iteratee: (A, B) => T ): Array<T>; zipWith<A, B, C>( a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C> ): Array<[A, B, C]>; zipWith<T, A, B, C>( a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C>, iteratee: (A, B, C) => T ): Array<T>; zipWith<A, B, C, D>( a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C>, a4: $ReadOnlyArray<D> ): Array<[A, B, C, D]>; zipWith<T, A, B, C, D>( a1: $ReadOnlyArray<A>, a2: $ReadOnlyArray<B>, a3: $ReadOnlyArray<C>, a4: $ReadOnlyArray<D>, iteratee: (A, B, C, D) => T ): Array<T>; // Collection countBy<T>(array: $ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T>): { [string]: number, ... }; countBy<T>(array: void | null, iteratee?: ?ValueOnlyIteratee<T>): {...}; countBy(string: string, iteratee?: ?ValueOnlyIteratee<string>): { [string]: number, ... }; countBy<T>(object: ReadOnlyIndexerObject<T>, iteratee?: ?ValueOnlyIteratee<T>): { [string]: number, ... }; // alias of _.forEach each<A, K, T: ReadOnlyIndexerObject<A, K> | $ReadOnlyArray<A> | string | void | null>(collection: T, iteratee?: ?IterateeWithResult<A, K, T, boolean | void>): T; // alias of _.forEachRight eachRight<A, K, T: ReadOnlyIndexerObject<A, K> | $ReadOnlyArray<A> | string | void | null>(collection: T, iteratee?: ?IterateeWithResult<A, K, T, boolean | void>): T; every<T>(array?: ?$ReadOnlyArray<T>, iteratee?: ?Iteratee<T>): boolean; every(str: string, iteratee?: ?Iteratee<string>): boolean; every<A, T: ReadOnlyIndexerObject<A>>(object: T, iteratee?: OIterateeWithResult<A, string, T, any>): boolean; filter<T>(array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T>): Array<T>; filter<A, T: ReadOnlyIndexerObject<A>>( object: T, predicate?: OPredicate<A, T> ): Array<A>; find<T>( array: $ReadOnlyArray<T>, predicate?: ?Predicate<T>, fromIndex?: ?number ): T | void; find<T>( array: void | null, predicate?: ?Predicate<T>, fromIndex?: ?number ): void; find<R, A, T: ReadOnlyIndexerObject<A>>( object: T, predicate?: ?OPredicate<A, T>, fromIndex?: ?number ): R; findLast<T>( array: $ReadOnlyArray<T>, predicate?: ?Predicate<T>, fromIndex?: ?number ): T | void; findLast<T>( array: void | null, predicate?: ?Predicate<T>, fromIndex?: ?number ): void; findLast<R, A, T: ReadOnlyIndexerObject<A>>( object: T, predicate?: ?OPredicate<A, T>, fromIndex?: ?number ): R; flatMap<A, U, T: $ReadOnlyArray<A> = Array<A>>( array: T, iteratee?: ?AFlatMapIteratee<A, T, U> ): Array<U>; flatMap<A, K, U, T: ?ReadOnlyIndexerObject<A, K> | string = IndexerObject<A, K>>( object: T, iteratee?: ?OFlatMapIteratee<A, K, T, U> ): Array<U>; flatMapDeep<A, U, T: $ReadOnlyArray<A> = Array<A>>( array: T, iteratee?: ?AFlatMapIteratee<A, T, any> ): Array<U>; flatMapDeep<A, K, U, T: ?ReadOnlyIndexerObject<A, K> | string = IndexerObject<A, K>>( object: T, iteratee?: ?OFlatMapIteratee<A, K, T, any> ): Array<U>; flatMapDepth<A, U, T: $ReadOnlyArray<A> = Array<A>>( array: T, iteratee?: ?AFlatMapIteratee<A, T, any>, depth?: ?number ): Array<U>; flatMapDepth<A, K, U, T: ?ReadOnlyIndexerObject<A, K> | string = IndexerObject<A, K>>( object: T, iteratee?: ?OFlatMapIteratee<A, K, T, any>, depth?: ?number ): Array<U>; forEach<A, K, T: ReadOnlyIndexerObject<A, K> | $ReadOnlyArray<A> | string | void | null>(collection: T, iteratee?: ?IterateeWithResult<A, K, T, boolean | void>): T; forEachRight<A, K, T: ReadOnlyIndexerObject<A, K> | $ReadOnlyArray<A> | string | void | null>(collection: T, iteratee?: ?IterateeWithResult<A, K, T, boolean | void>): T; groupBy<V, T>( array: $ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): { [key: V]: Array<T>, ... }; groupBy(array: void | null, iteratee?: ?ValueOnlyIteratee<any>): {...}; groupBy<V, A, T: ReadOnlyIndexerObject<A>>( object: T, iteratee?: ValueOnlyIteratee<A> ): { [key: V]: Array<A>, ... }; includes<T>( array: $ReadOnlyArray<T>, value: T, fromIndex?: ?number ): boolean; includes<T>(array: void | null, value?: ?T, fromIndex?: ?number): false; includes<A>(object: ReadOnlyIndexerObject<A>, value: A, fromIndex?: number): boolean; includes(str: string, value: string, fromIndex?: number): boolean; invokeMap<T>( array?: ?$ReadOnlyArray<T>, path?: ?((value: T) => Path) | Path, ...args?: $ReadOnlyArray<any> ): Array<any>; invokeMap<A>( object: ReadOnlyIndexerObject<A>, path: ((value: any) => Path) | Path, ...args?: $ReadOnlyArray<any> ): Array<any>; keyBy<T, V>( array: $ReadOnlyArray<T>, iteratee?: ?ValueOnlyIteratee<T> ): { [key: V]: T, ... }; keyBy(array: void | null, iteratee?: ?ValueOnlyIteratee<*>): {...}; keyBy<V, A, K, T: ReadOnlyIndexerObject<A, K>>( object: T, iteratee?: ?ValueOnlyIteratee<A> ): { [key: V]: A, ... }; map<T, U>( array?: ?$ReadOnlyArray<T>, iteratee?: ?ReadOnlyMapIterator<T, U> ): Array<U>; map<V, T: ReadOnlyIndexerObject<V>, U>( object: ?T, iteratee?: OMapIterator<V, T, U> ): Array<U>; map( str: ?string, iteratee?: (char: string, index: number, str: string) => any ): string; orderBy<T>( array: $ReadOnlyArray<T>, iteratees?: ?$ReadOnlyArray<Iteratee<T>> | ?string, orders?: ?$ReadOnlyArray<"asc" | "desc"> | ?string ): Array<T>; orderBy<T>( array: null | void, iteratees?: ?$ReadOnlyArray<Iteratee<T>> | ?string, orders?: ?$ReadOnlyArray<"asc" | "desc"> | ?string ): Array<T>; orderBy<V, T: ReadOnlyIndexerObject<V>>( object: T, iteratees?: $ReadOnlyArray<OIteratee<*>> | string, orders?: $ReadOnlyArray<"asc" | "desc"> | string ): Array<V>; partition<T>( array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T> ): [Array<T>, Array<T>]; partition<V, A, T: ReadOnlyIndexerObject<A>>( object: T, predicate?: OPredicate<A, T> ): [Array<V>, Array<V>]; reduce<T, U>( array: $ReadOnlyArray<T>, iteratee?: ( accumulator: U, value: T, index: number, array: ?Array<T> ) => U, accumulator?: U ): U; reduce<T, U>( array: void | null, iteratee?: ?( accumulator: U, value: T, index: any, array: ?Array<T> ) => U, accumulator?: U ): U; reduce<A, T: ReadOnlyIndexerObject<A>, U>( object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U ): U; reduceRight<T, U>( array: void | null, iteratee?: ?( accumulator: U, value: T, index: any, array: ?Array<T> ) => U, accumulator?: U ): U; reduceRight<T, U>( array: $ReadOnlyArray<T>, iteratee?: ?( accumulator: U, value: T, index: number, array: ?Array<T> ) => U, accumulator?: ?U ): U; reduceRight<A, T: ReadOnlyIndexerObject<A>, U>( object: T, iteratee?: ?(accumulator: U, value: any, key: string, object: T) => U, accumulator?: ?U ): U; reject<T>(array?: ?$ReadOnlyArray<T>, predicate?: ?Predicate<T>): Array<T>; reject<A, T: ReadOnlyIndexerObject<A>>( object?: ?T, predicate?: ?OPredicate<A, T> ): Array<A>; sample<T>(collection: ?Collection<T>): T; sampleSize<T>(collection?: ?Collection<T>, n?: ?number): Array<T>; shuffle<T>(array?: ?Collection<T>): Array<T>; size(collection?: ?Collection<any> | string): number; some<T>(array: void | null, predicate?: ?Predicate<T>): false; some<T>(array: ?$ReadOnlyArray<T>, predicate?: Predicate<T>): boolean; some<A, T: ReadOnlyIndexerObject<A>>( object?: ?T, predicate?: OPredicate<A, T> ): boolean; sortBy<T>( array: ?$ReadOnlyArray<T>, ...iteratees?: $ReadOnlyArray<Iteratee<T>> ): Array<T>; sortBy<T>( array: ?$ReadOnlyArray<T>, iteratees?: $ReadOnlyArray<Iteratee<T>> ): Array<T>; sortBy<V, T: ReadOnlyIndexerObject<V>>( object: T, ...iteratees?: $ReadOnlyArray<OIteratee<T>> ): Array<V>; sortBy<V, T: ReadOnlyIndexerObject<V>>( object: T, iteratees?: $ReadOnlyArray<OIteratee<T>> ): Array<V>; // Date now(): number; // Function after(n: number, fn: Function): Function; ary(func: Function, n?: number): Function; before(n: number, fn: Function): Function; bind<F:(...$ReadOnlyArray<any>) => any>(func: F, thisArg: any, ...partials: $ReadOnlyArray<any>): F; bindKey(obj?: ?Object, key?: ?string, ...partials?: $ReadOnlyArray<?any>): Function; curry: Curry; curry(func: Function, arity?: number): Function; curryRight(func: Function, arity?: number): Function; debounce<F: (...$ReadOnlyArray<any>) => any>( func: F, wait?: number, options?: DebounceOptions ): F & Cancelable; defer(func: (...$ReadOnlyArray<any>) => any, ...args?: $ReadOnlyArray<any>): TimeoutID; delay(func: Function, wait: number, ...args?: $ReadOnlyArray<any>): TimeoutID; flip<R>(func: (...$ReadOnlyArray<any>) => R): (...Array<any>) => R; memoize<A, R>(func: (...A) => R, resolver?: (...A) => any): (...A) => R; negate<A, R>(predicate: (...A) => R): (...A) => boolean; once<F: (...$ReadOnlyArray<any>) => any>(func: F): F; overArgs(func?: ?Function, ...transforms?: $ReadOnlyArray<Function>): Function; overArgs(func?: ?Function, transforms?: ?$ReadOnlyArray<Function>): Function; partial<R>(func: (...$ReadOnlyArray<any>) => R, ...partials: $ReadOnlyArray<any>): (...Array<any>) => R; partialRight<R>(func: (...$ReadOnlyArray<any>) => R, ...partials: $ReadOnlyArray<any>): (...Array<any>) => R; partialRight<R>(func: (...$ReadOnlyArray<any>) => R, partials: $ReadOnlyArray<any>): (...Array<any>) => R; rearg(func: Function, ...indexes: $ReadOnlyArray<number>): Function; rearg(func: Function, indexes: $ReadOnlyArray<number>): Function; rest(func: Function, start?: number): Function; spread(func: Function): Function; throttle<F: (...$ReadOnlyArray<any>) => any>( func: F, wait?: number, options?: ThrottleOptions ): F & Cancelable; unary<F: (...$ReadOnlyArray<any>) => any>(func: F): F; wrap(value?: any, wrapper?: ?Function): Function; // Lang castArray(): Array<any>; castArray<T: void | null | number | string | {...}>(value: T): Array<T>; castArray<T: Array<any>>(value: T): T; clone<T>(value: T): T; cloneDeep<T>(value: T): T; cloneDeepWith<T, U>( value: T, customizer?: ?(value: T, key: number | string, object: T, stack: any) => U ): U; cloneWith<T, U>( value: T, customizer?: ?(value: T, key: number | string, object: T, stack: any) => U ): U; conformsTo<T: ReadOnlyIndexerObject<mixed>>( source: T, predicates: T & $ReadOnly<{ [key: string]: (x: any) => boolean, ... }> ): boolean; eq(value: any, other: any): boolean; gt(value: any, other: any): boolean; gte(value: any, other: any): boolean; isArguments(value: void | null): false; isArguments(value: any): boolean; isArray(value: $ReadOnlyArray<any>): true; isArray(value: any): false; isArrayBuffer(value: ArrayBuffer): true; isArrayBuffer(value: any): false; isArrayLike(value: $ReadOnlyArray<any> | string | { length: number, ... }): true; isArrayLike(value: any): false; isArrayLikeObject(value: { length: number, ... } | $ReadOnlyArray<any>): true; isArrayLikeObject(value: any): false; isBoolean(value: boolean): true; isBoolean(value: any): false; isBuffer(value: void | null): false; isBuffer(value: any): boolean; isDate(value: Date): true; isDate(value: any): false; isElement(value: Element): true; isElement(value: any): false; isEmpty(value: void | null | "" | {...} | [] | number | boolean): true; isEmpty(value: any): boolean; isEqual(value: any, other: any): boolean; isEqualWith<T, U>( value?: ?T, other?: ?U, customizer?: ?( objValue: any, otherValue: any, key: number | string, object: T, other: U, stack: any ) => boolean | void ): boolean; isError(value: Error): true; isError(value: any): false; isFinite(value: number): boolean; isFinite(value: any): false; isFunction(value: Function): true; isFunction(value: any): false; isInteger(value: number): boolean; isInteger(value: any): false; isLength(value: void | null): false; isLength(value: any): boolean; isMap(value: Map<any, any>): true; isMap(value: any): false; isMatch(object?: ?Object, source?: ?Object): boolean; isMatchWith<T: Object, U: Object>( object?: ?T, source?: ?U, customizer?: ?( objValue: any, srcValue: any, key: number | string, object: T, source: U ) => boolean | void ): boolean; isNaN(value: number): boolean; isNaN(value: any): false; isNative(value: number | string | void | null | Object): false; isNative(value: any): boolean; isNil(value: void | null): true; isNil(value: any): false; isNull(value: null): true; isNull(value: any): false; isNumber(value: number): true; isNumber(value: any): false; isObject(value: any): boolean; isObjectLike(value: void | null): false; isObjectLike(value: any): boolean; isPlainObject(value: any): boolean; isRegExp(value: RegExp): true; isRegExp(value: any): false; isSafeInteger(value: number): boolean; isSafeInteger(value: any): false; isSet(value: Set<any>): true; isSet(value: any): false; isString(value: string): true; isString(value: any): false; isSymbol(value: Symbol): true; isSymbol(value: any): false; isTypedArray(value: $TypedArray): true; isTypedArray(value: any): false; isUndefined(value: void): true; isUndefined(value: any): false; isWeakMap(value: WeakMap<any, any>): true; isWeakMap(value: any): false; isWeakSet(value: WeakSet<any>): true; isWeakSet(value: any): false; lt(value: any, other: any): boolean; lte(value: any, other: any): boolean; toArray(value: any): Array<any>; toFinite(value: void | null): 0; toFinite(value: any): number; toInteger(value: void | null): 0; toInteger(value: any): number; toLength(value: void | null): 0; toLength(value: any): number; toNumber(value: void | null): 0; toNumber(value: any): number; toPlainObject(value: any): Object; toSafeInteger(value: void | null): 0; toSafeInteger(value: any): number; toString(value: void | null): ""; toString(value: any): string; // Math add(augend: number, addend: number): number; ceil(number: number, precision?: number): number; divide(dividend: number, divisor: number): number; floor(number: number, precision?: number): number; max<T>(array: ?$ReadOnlyArray<T>): T; maxBy<T>(array: ?$ReadOnlyArray<T>, iteratee?: Iteratee<T>): T; mean(array: $ReadOnlyArray<*>): number; meanBy<T>(array: $ReadOnlyArray<T>, iteratee?: Iteratee<T>): number; min<T>(array: ?$ReadOnlyArray<T>): T; minBy<T>(array: ?$ReadOnlyArray<T>, iteratee?: Iteratee<T>): T; multiply(multiplier: number, multiplicand: number): number; round(number: number, precision?: number): number; subtract(minuend: number, subtrahend: number): number; sum(array: $ReadOnlyArray<*>): number; sumBy<T>(array: $ReadOnlyArray<T>, iteratee?: Iteratee<T>): number; // number clamp(number?: number, lower?: ?number, upper?: ?number): number; clamp(number: ?number, lower?: ?number, upper?: ?number): 0; inRange(number: number, start?: number, end: number): boolean; random(lower?: number, upper?: number, floating?: boolean): number; // Object assign(object?: ?Object, ...sources?: $ReadOnlyArray<?Object>): Object; assignIn(): {...}; assignIn<A, B>(a: A, b: B): A & B; assignIn<A, B, C>(a: A, b: B, c: C): A & B & C; assignIn<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D; assignIn<A, B, C, D, E>(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; assignInWith(): {...}; assignInWith<T: Object, A: Object>( object: T, s1: A, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A ) => any | void ): Object; assignInWith<T: Object, A: Object, B: Object>( object: T, s1: A, s2: B, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B ) => any | void ): Object; assignInWith<T: Object, A: Object, B: Object, C: Object>( object: T, s1: A, s2: B, s3: C, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C ) => any | void ): Object; assignInWith<T: Object, A: Object, B: Object, C: Object, D: Object>( object: T, s1: A, s2: B, s3: C, s4: D, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C | D ) => any | void ): Object; assignWith(): {...}; assignWith<T: Object, A: Object>( object: T, s1: A, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A ) => any | void ): Object; assignWith<T: Object, A: Object, B: Object>( object: T, s1: A, s2: B, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B ) => any | void ): Object; assignWith<T: Object, A: Object, B: Object, C: Object>( object: T, s1: A, s2: B, s3: C, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C ) => any | void ): Object; assignWith<T: Object, A: Object, B: Object, C: Object, D: Object>( object: T, s1: A, s2: B, s3: C, s4: D, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C | D ) => any | void ): Object; at(object?: ?Object, ...paths: $ReadOnlyArray<string>): Array<any>; at(object?: ?Object, paths: $ReadOnlyArray<string>): Array<any>; create(prototype: void | null, properties: void | null): {...}; create<T>(prototype: T, properties: Object): T; create(prototype: any, properties: void | null): {...}; defaults(object?: ?Object, ...sources?: $ReadOnlyArray<?Object>): Object; defaultsDeep(object?: ?Object, ...sources?: $ReadOnlyArray<?Object>): Object; // alias for _.toPairs entries(object?: ?Object): Array<[string, any]>; // alias for _.toPairsIn entriesIn(object?: ?Object): Array<[string, any]>; // alias for _.assignIn extend<A, B>(a?: ?A, b?: ?B): A & B; extend<A, B, C>(a: A, b: B, c: C): A & B & C; extend<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D; extend<A, B, C, D, E>(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; // alias for _.assignInWith extendWith<T: Object, A: Object>( object?: ?T, s1?: ?A, customizer?: ?( objValue: any, srcValue: any, key: string, object: T, source: A ) => any | void ): Object; extendWith<T: Object, A: Object, B: Object>( object: T, s1: A, s2: B, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B ) => any | void ): Object; extendWith<T: Object, A: Object, B: Object, C: Object>( object: T, s1: A, s2: B, s3: C, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C ) => any | void ): Object; extendWith<T: Object, A: Object, B: Object, C: Object, D: Object>( object: T, s1: A, s2: B, s3: C, s4: D, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C | D ) => any | void ): Object; findKey<A, T: ReadOnlyIndexerObject<A>>( object: T, predicate?: ?OPredicate<A, T> ): string | void; findKey<A, T: ReadOnlyIndexerObject<A>>( object: void | null, predicate?: ?OPredicate<A, T> ): void; findLastKey<A, T: ReadOnlyIndexerObject<A>>( object: T, predicate?: ?OPredicate<A, T> ): string | void; findLastKey<A, T: ReadOnlyIndexerObject<A>>( object: void | null, predicate?: ?OPredicate<A, T> ): void; forIn(object: Object, iteratee?: ?OIteratee<*>): Object; forIn(object: void | null, iteratee?: ?OIteratee<*>): null; forInRight(object: Object, iteratee?: ?OIteratee<*>): Object; forInRight(object: void | null, iteratee?: ?OIteratee<*>): null; forOwn(object: Object, iteratee?: ?OIteratee<*>): Object; forOwn(object: void | null, iteratee?: ?OIteratee<*>): null; forOwnRight(object: Object, iteratee?: ?OIteratee<*>): Object; forOwnRight(object: void | null, iteratee?: ?OIteratee<*>): null; functions(object?: ?Object): Array<string>; functionsIn(object?: ?Object): Array<string>; get( object?: ?Object | ?$ReadOnlyArray<any> | void | null, path?: ?Path, defaultValue?: any ): any; has(object: Object, path: Path): boolean; has(object: Object, path: void | null): false; has(object: void | null, path?: ?Path): false; hasIn(object: Object, path: Path): boolean; hasIn(object: Object, path: void | null): false; hasIn(object: void | null, path?: ?Path): false; invert(object: Object, multiVal?: ?boolean): Object; invert(object: void | null, multiVal?: ?boolean): {...}; invertBy(object: Object, iteratee?: ?Function): Object; invertBy(object: void | null, iteratee?: ?Function): {...}; invoke( object?: ?Object, path?: ?Path, ...args?: $ReadOnlyArray<any> ): any; keys<K>(object?: ?ReadOnlyIndexerObject<any, K>): Array<K>; keys(object?: ?Object): Array<string>; keysIn(object?: ?Object): Array<string>; mapKeys(object: Object, iteratee?: ?OIteratee<*>): Object; mapKeys(object: void | null, iteratee?: ?OIteratee<*>): {...}; mapValues(object: Object, iteratee?: ?OIteratee<*>): Object; mapValues(object: void | null, iteratee?: ?OIteratee<*>): {...}; merge(object?: ?Object, ...sources?: $ReadOnlyArray<?Object>): Object; mergeWith(): {...}; mergeWith<T: Object, A: Object>( object: T, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A ) => any | void ): Object; mergeWith<T: Object, A: Object, B: Object>( object: T, s1: A, s2: B, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B ) => any | void ): Object; mergeWith<T: Object, A: Object, B: Object, C: Object>( object: T, s1: A, s2: B, s3: C, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C ) => any | void ): Object; mergeWith<T: Object, A: Object, B: Object, C: Object, D: Object>( object: T, s1: A, s2: B, s3: C, s4: D, customizer?: ( objValue: any, srcValue: any, key: string, object: T, source: A | B | C | D ) => any | void ): Object; omit(object?: ?Object, ...props: $ReadOnlyArray<string>): Object; omit(object?: ?Object, props: $ReadOnlyArray<string>): Object; omitBy<A, T: ReadOnlyIndexerObject<A>>( object: $ReadOnly<T>, predicate?: ?OPredicate<A, T> ): Object; omitBy<A, T>(object: void | null, predicate?: ?OPredicate<A, T>): {...}; pick(object?: ?Object, ...props: $ReadOnlyArray<string>): Object; pick(object?: ?Object, props: $ReadOnlyArray<string>): Object; pickBy<A, T: ReadOnlyIndexerObject<A>>( object: $ReadOnly<T>, predicate?: ?OPredicate<A, T> ): Object; pickBy<A, T>(object: void | null, predicate?: ?OPredicate<A, T>): {...}; result( object?: ?Object, path?: ?Path, defaultValue?: any ): any; set(object: Object, path?: ?Path, value: any): Object; set<T: void | null>( object: T, path?: ?Path, value?: ?any ): T; setWith<T>( object: T, path?: ?Path, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any ): Object; setWith<T: void | null>( object: T, path?: ?Path, value?: ?any, customizer?: ?(nsValue: any, key: string, nsObject: T) => any ): T; toPairs(object?: ?Object | $ReadOnlyArray<*>): Array<[string, any]>; toPairsIn(object?: ?Object): Array<[string, any]>; transform( collection: Object | $ReadOnlyArray<any>, iteratee?: ?OIteratee<*>, accumulator?: any ): any; transform( collection: void | null, iteratee?: ?OIteratee<*>, accumulator?: ?any ): {...}; unset(object: void | null, path?: ?Path): true; unset(object: Object, path?: ?Path): boolean; update(object: Object, path: Path, updater: Function): Object; update<T: void | null>( object: T, path?: ?Path, updater?: ?Function ): T; updateWith( object: Object, path?: ?Path, updater?: ?Function, customizer?: ?Function ): Object; updateWith<T: void | null>( object: T, path?: ?Path, updater?: ?Function, customizer?: ?Function ): T; values(object?: ?Object): Array<any>; valuesIn(object?: ?Object): Array<any>; // Seq // harder to read, but this is _() (value: any): any; chain<T>(value: T): any; tap<T>(value: T, interceptor: (value: T) => any): T; thru<T1, T2>(value: T1, interceptor: (value: T1) => T2): T2; // TODO: _.prototype.* // String camelCase(string: string): string; camelCase(string: void | null): ""; capitalize(string: string): string; capitalize(string: void | null): ""; deburr(string: string): string; deburr(string: void | null): ""; endsWith(string: string, target?: string, position?: ?number): boolean; endsWith(string: void | null, target?: ?string, position?: ?number): false; escape(string: string): string; escape(string: void | null): ""; escapeRegExp(string: string): string; escapeRegExp(string: void | null): ""; kebabCase(string: string): string; kebabCase(string: void | null): ""; lowerCase(string: string): string; lowerCase(string: void | null): ""; lowerFirst(string: string): string; lowerFirst(string: void | null): ""; pad(string?: ?string, length?: ?number, chars?: ?string): string; padEnd(string?: ?string, length?: ?number, chars?: ?string): string; padStart(string?: ?string, length?: ?number, chars?: ?string): string; parseInt(string: string, radix?: ?number): number; repeat(string: string, n?: ?number): string; repeat(string: void | null, n?: ?number): ""; replace( string: string, pattern: RegExp | string, replacement: ((string: string) => string) | string ): string; replace( string: void | null, pattern?: ?RegExp | ?string, replacement: ?((string: string) => string) | ?string ): ""; snakeCase(string: string): string; snakeCase(string: void | null): ""; split( string?: ?string, separator?: ?RegExp | ?string, limit?: ?number ): Array<string>; startCase(string: string): string; startCase(string: void | null): ""; startsWith(string: string, target?: string, position?: number): boolean; startsWith( string: void | null, target?: ?string, position?: ?number ): false; template(string?: ?string, options?: ?TemplateSettings): Function; toLower(string: string): string; toLower(string: void | null): ""; toUpper(string: string): string; toUpper(string: void | null): ""; trim(string: string, chars?: string): string; trim(string: void | null, chars?: ?string): ""; trimEnd(string: string, chars?: ?string): string; trimEnd(string: void | null, chars?: ?string): ""; trimStart(string: string, chars?: ?string): string; trimStart(string: void | null, chars?: ?string): ""; truncate(string: string, options?: TruncateOptions): string; truncate(string: void | null, options?: ?TruncateOptions): ""; unescape(string: string): string; unescape(string: void | null): ""; upperCase(string: string): string; upperCase(string: void | null): ""; upperFirst(string: string): string; upperFirst(string: void | null): ""; words(string?: ?string, pattern?: ?RegExp | ?string): Array<string>; // Util attempt(func: Function, ...args: $ReadOnlyArray<any>): any; bindAll(object: Object, methodNames?: ?$ReadOnlyArray<string>): Object; bindAll<T: void | null>(object: T, methodNames?: ?$ReadOnlyArray<string>): T; bindAll(object: Object, ...methodNames: $ReadOnlyArray<string>): Object; cond(pairs?: ?NestedArray<Function>): Function; conforms(source?: ?Object): Function; constant<T>(value: T): () => T; defaultTo<T1: void | null, T2>(value: T1, defaultValue: T2): T2; defaultTo<T1: string | boolean, T2>( value: T1, defaultValue: T2 ): T1; // NaN is a number instead of its own type, otherwise it would behave like null/void defaultTo<T1: number, T2>(value: T1, defaultValue: T2): T1 | T2; flow: $ComposeReverse & ((funcs: $ReadOnlyArray<Function>) => Function); flowRight: $Compose & ((funcs: $ReadOnlyArray<Function>) => Function); identity<T>(value: T): T; iteratee(func?: any): Function; matches(source?: ?Object): Function; matchesProperty(path?: ?Path, srcValue: any): Function; method(path?: ?Path, ...args?: $ReadOnlyArray<any>): Function; methodOf(object?: ?Object, ...args?: $ReadOnlyArray<any>): Function; mixin<T: Function | Object>( object?: T, source: Object, options?: { chain: boolean, ... } ): T; noConflict(): Lodash; noop(...args: $ReadOnlyArray<mixed>): void; nthArg(n?: ?number): Function; over(...iteratees: $ReadOnlyArray<Function>): Function; over(iteratees: $ReadOnlyArray<Function>): Function; overEvery(...predicates: $ReadOnlyArray<Function>): Function; overEvery(predicates: $ReadOnlyArray<Function>): Function; overSome(...predicates: $ReadOnlyArray<Function>): Function; overSome(predicates: $ReadOnlyArray<Function>): Function; property(path?: ?Path): Function; propertyOf(object?: ?Object): Function; range(start: number, end: number, step?: number): Array<number>; range(end: number, step?: number): Array<number>; rangeRight(start?: ?number, end?: ?number, step?: ?number): Array<number>; rangeRight(end?: ?number, step?: ?number): Array<number>; runInContext(context?: ?Object): Function; stubArray(): Array<*>; stubFalse(): false; stubObject(): {...}; stubString(): ""; stubTrue(): true; times(n?: ?number, ...rest?: $ReadOnlyArray<void | null>): Array<number>; times<T>(n: number, iteratee: (i: number) => T): Array<T>; toPath(value: any): Array<string>; uniqueId(prefix?: ?string): string; // Properties VERSION: string; templateSettings: TemplateSettings; } declare module.exports: Lodash; } declare module "lodash/fp" { declare type Path = $ReadOnlyArray<string | number> | string | number; declare type __CurriedFunction1<A, R, AA: A> = (...r: [AA]) => R; declare type CurriedFunction1<A, R> = __CurriedFunction1<A, R, *>; declare type __CurriedFunction2<A, B, R, AA: A, BB: B> = (( ...r: [AA] ) => CurriedFunction1<BB, R>) & ((...r: [AA, BB]) => R); declare type CurriedFunction2<A, B, R> = __CurriedFunction2<A, B, R, *, *>; d