type Selector = { (state: TState, props: TProps, ...rest: any[]): TResult; }; type SelectorCreator = { ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, selector12: Selector, selector13: Selector, selector14: Selector, selector15: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12, arg13: T13, arg14: T14, arg15: T15 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12, arg13: T13, arg14: T14, arg15: T15 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, selector12: Selector, selector13: Selector, selector14: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12, arg13: T13, arg14: T14 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12, arg13: T13, arg14: T14 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, selector12: Selector, selector13: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12, arg13: T13 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12, arg13: T13 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, selector12: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11, arg12: T12 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, arg11: T11 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, selector3: Selector, resultFunc: ( arg1: T1, arg2: T2, arg3: T3 ) => TResult ): Selector; ( selectors: [ Selector, Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2, arg3: T3 ) => TResult ): Selector; ( selector1: Selector, selector2: Selector, resultFunc: ( arg1: T1, arg2: T2 ) => TResult ): Selector; ( selectors: [ Selector, Selector ], resultFunc: ( arg1: T1, arg2: T2 ) => TResult ): Selector; ( selector1: Selector, resultFunc: ( arg1: T1 ) => TResult ): Selector; ( selectors: [ Selector ], resultFunc: ( arg1: T1 ) => TResult ): Selector; }; type Reselect = { createSelector: SelectorCreator; defaultMemoize: ( func: TFunc, equalityCheck?: (a: any, b: any) => boolean ) => TFunc; createSelectorCreator: ( memoize: Function, ...memoizeOptions: any[] ) => SelectorCreator; createStructuredSelector: ( inputSelectors: { [k: string | number]: Selector }, selectorCreator?: SelectorCreator ) => Selector; }; declare module 'reselect' { declare var exports: Reselect; }