export as namespace Reselect export type Selector = (state: S) => R export type OutputSelector = Selector & { resultFunc: C recomputations: () => number resetRecomputations: () => number } export type ParametricSelector = ( state: S, props: P, ...args: any[] ) => R export type OutputParametricSelector = ParametricSelector< S, P, R > & { resultFunc: C recomputations: () => number resetRecomputations: () => number } /* homogeneous selector parameter types */ /* one selector */ export function createSelector( selector: Selector, combiner: (res: R1) => T ): OutputSelector T> export function createSelector( selector: ParametricSelector, combiner: (res: R1) => T ): OutputParametricSelector T> /* two selectors */ export function createSelector( selector1: Selector, selector2: Selector, combiner: (res1: R1, res2: R2) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, combiner: (res1: R1, res2: R2) => T ): OutputParametricSelector T> /* three selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputParametricSelector T> /* four selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T > /* five selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T > /* six selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > /* seven selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > /* eight selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > /* nine selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > /* ten selectors */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > export function createSelector< S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, selector10: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > /* eleven selectors */ export function createSelector< S, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > export function createSelector< S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, selector10: ParametricSelector, selector11: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > /* twelve selectors */ export function createSelector< S, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, selector12: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > export function createSelector< S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, selector10: ParametricSelector, selector11: ParametricSelector, selector12: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > /* array argument */ /* one selector */ export function createSelector( selectors: [Selector], combiner: (res: R1) => T ): OutputSelector T> export function createSelector( selectors: [ParametricSelector], combiner: (res: R1) => T ): OutputParametricSelector T> /* two selectors */ export function createSelector( selectors: [Selector, Selector], combiner: (res1: R1, res2: R2) => T ): OutputSelector T> export function createSelector( selectors: [ParametricSelector, ParametricSelector], combiner: (res1: R1, res2: R2) => T ): OutputParametricSelector T> /* three selectors */ export function createSelector( selectors: [Selector, Selector, Selector], combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputSelector T> export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputParametricSelector T> /* four selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputSelector T> export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T > /* five selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputSelector T> export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T > /* six selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > /* seven selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputParametricSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > /* eight selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > /* nine selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > /* ten selectors */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > export function createSelector< S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > /* eleven selectors */ export function createSelector< S, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > export function createSelector< S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > /* twelve selectors */ export function createSelector< S, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > export function createSelector< S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputParametricSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > /* heterogeneous selector parameter types */ /* one selector */ export function createSelector( selector1: Selector, combiner: (res1: R1) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, combiner: (res1: R1) => T ): OutputParametricSelector T> /* two selector */ export function createSelector( selector1: Selector, selector2: Selector, combiner: (res1: R1, res2: R2) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, combiner: (res1: R1, res2: R2) => T ): OutputParametricSelector T> /* three selector */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputSelector T> export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputParametricSelector< S1 & S2 & S3, P1 & P2 & P3, T, (res1: R1, res2: R2, res3: R3) => T > /* four selector */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputSelector< S1 & S2 & S3 & S4, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T > export function createSelector< S1, S2, S3, S4, P1, P2, P3, P4, R1, R2, R3, R4, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputParametricSelector< S1 & S2 & S3 & S4, P1 & P2 & P3 & P4, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T > /* five selector */ export function createSelector( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T > export function createSelector< S1, S2, S3, S4, S5, P1, P2, P3, P4, P5, R1, R2, R3, R4, R5, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5, P1 & P2 & P3 & P4 & P5, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T > /* six selector */ export function createSelector< S1, S2, S3, S4, S5, S6, R1, R2, R3, R4, R5, R6, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > export function createSelector< S1, S2, S3, S4, S5, S6, P1, P2, P3, P4, P5, P6, R1, R2, R3, R4, R5, R6, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6, P1 & P2 & P3 & P4 & P5 & P6, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > /* seven selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, R1, R2, R3, R4, R5, R6, R7, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, P1, P2, P3, P4, P5, P6, P7, R1, R2, R3, R4, R5, R6, R7, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7, P1 & P2 & P3 & P4 & P5 & P6 & P7, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > /* eight selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, R1, R2, R3, R4, R5, R6, R7, R8, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, P1, P2, P3, P4, P5, P6, P7, P8, R1, R2, R3, R4, R5, R6, R7, R8, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > /* nine selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, R1, R2, R3, R4, R5, R6, R7, R8, R9, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, P1, P2, P3, P4, P5, P6, P7, P8, P9, R1, R2, R3, R4, R5, R6, R7, R8, R9, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > /* ten selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, selector10: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9 & P10, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > /* eleven selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, selector10: ParametricSelector, selector11: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9 & P10 & P11, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > /* twelve selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selector1: Selector, selector2: Selector, selector3: Selector, selector4: Selector, selector5: Selector, selector6: Selector, selector7: Selector, selector8: Selector, selector9: Selector, selector10: Selector, selector11: Selector, selector12: Selector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11 & S12, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, selector5: ParametricSelector, selector6: ParametricSelector, selector7: ParametricSelector, selector8: ParametricSelector, selector9: ParametricSelector, selector10: ParametricSelector, selector11: ParametricSelector, selector12: ParametricSelector, combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11 & S12, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9 & P10 & P11 & P12, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > /* array argument */ /* one selector */ export function createSelector( selectors: [Selector], combiner: (res1: R1) => T ): OutputSelector T> export function createSelector( selectors: [ParametricSelector], combiner: (res1: R1) => T ): OutputParametricSelector T> /* two selector */ export function createSelector( selectors: [Selector, Selector], combiner: (res1: R1, res2: R2) => T ): OutputSelector T> export function createSelector( selectors: [ParametricSelector, ParametricSelector], combiner: (res1: R1, res2: R2) => T ): OutputParametricSelector T> /* three selector */ export function createSelector( selectors: [Selector, Selector, Selector], combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputSelector T> export function createSelector( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3) => T ): OutputParametricSelector< S1 & S2 & S3, P1 & P2 & P3, T, (res1: R1, res2: R2, res3: R3) => T > /* four selector */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputSelector< S1 & S2 & S3 & S4, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T > export function createSelector< S1, S2, S3, S4, P1, P2, P3, P4, R1, R2, R3, R4, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T ): OutputParametricSelector< S1 & S2 & S3 & S4, P1 & P2 & P3 & P4, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T > /* five selector */ export function createSelector( selectors: [ Selector, Selector, Selector, Selector, Selector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T > export function createSelector< S1, S2, S3, S4, S5, P1, P2, P3, P4, P5, R1, R2, R3, R4, R5, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5, P1 & P2 & P3 & P4 & P5, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T > /* six selector */ export function createSelector< S1, S2, S3, S4, S5, S6, R1, R2, R3, R4, R5, R6, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > export function createSelector< S1, S2, S3, S4, S5, S6, P1, P2, P3, P4, P5, P6, R1, R2, R3, R4, R5, R6, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6, P1 & P2 & P3 & P4 & P5 & P6, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T > /* seven selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, R1, R2, R3, R4, R5, R6, R7, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, P1, P2, P3, P4, P5, P6, P7, R1, R2, R3, R4, R5, R6, R7, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7, P1 & P2 & P3 & P4 & P5 & P6 & P7, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T > /* eight selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, R1, R2, R3, R4, R5, R6, R7, R8, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, P1, P2, P3, P4, P5, P6, P7, P8, R1, R2, R3, R4, R5, R6, R7, R8, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T > /* nine selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, R1, R2, R3, R4, R5, R6, R7, R8, R9, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, P1, P2, P3, P4, P5, P6, P7, P8, P9, R1, R2, R3, R4, R5, R6, R7, R8, R9, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T > /* ten selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9 & P10, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T > /* eleven selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9 & P10 & P11, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11 ) => T > /* twelve selector */ export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selectors: [ Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector, Selector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11 & S12, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > export function createSelector< S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, T >( selectors: [ ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector ], combiner: ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T ): OutputParametricSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9 & S10 & S11 & S12, P1 & P2 & P3 & P4 & P5 & P6 & P7 & P8 & P9 & P10 & P11 & P12, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10, res11: R11, res12: R12 ) => T > /* any number of uniform selectors */ export function createSelector( selectors: Selector[], combiner: (...res: R[]) => T ): OutputSelector T> export function createSelector( selectors: ParametricSelector[], combiner: (...res: R[]) => T ): OutputParametricSelector T> export function defaultMemoize any>( func: F, equalityCheck?: (a: T, b: T, index: number) => boolean ): F export function createSelectorCreator( memoize: any>(func: F) => F ): typeof createSelector export function createSelectorCreator( memoize: any>(func: F, option1: O1) => F, option1: O1 ): typeof createSelector export function createSelectorCreator( memoize: any>( func: F, option1: O1, option2: O2 ) => F, option1: O1, option2: O2 ): typeof createSelector export function createSelectorCreator( memoize: any>( func: F, option1: O1, option2: O2, option3: O3, ...rest: any[] ) => F, option1: O1, option2: O2, option3: O3, ...rest: any[] ): typeof createSelector export function createStructuredSelector( selectors: { [K in keyof T]: Selector }, selectorCreator?: typeof createSelector ): Selector export function createStructuredSelector( selectors: { [K in keyof T]: ParametricSelector }, selectorCreator?: typeof createSelector ): ParametricSelector