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 & { 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 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 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 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 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 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 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 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 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 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 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 T>; export function createSelector( 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 T>; /* eleven selectors */ export function createSelector( 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 T>; export function createSelector( 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 T>; /* twelve selectors */ export function createSelector( 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 T>; export function createSelector( 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 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 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 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 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 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 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 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 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 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 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 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 T>; export function createSelector( 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 T>; /* eleven selectors */ export function createSelector( 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 T>; export function createSelector( 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 T>; /* twelve selectors */ export function createSelector( 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 T>; export function createSelector( 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 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 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 T>; export function createSelector( selector1: ParametricSelector, selector2: ParametricSelector, selector3: ParametricSelector, selector4: ParametricSelector, combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T, ): OutputParametricSelector 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 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 T>; /* six selector */ 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 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 T>; /* seven selector */ 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 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 T>; /* eight selector */ 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 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 T>; /* nine selector */ 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 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 T>; /* ten selector */ 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 T>; export function createSelector( 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 T>; /* eleven selector */ export function createSelector( 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 T>; export function createSelector( 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 T>; /* twelve selector */ export function createSelector( 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 T>; export function createSelector( 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 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 T>; /* four selector */ 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 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 T>; export function createSelector( selectors: [ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector, ParametricSelector], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, ): OutputParametricSelector T>; /* six selector */ 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 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 T>; /* seven selector */ 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 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 T>; /* eight selector */ 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 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 T>; /* nine selector */ 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 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 T>; /* ten selector */ 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 T>; export function createSelector( 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 T>; /* eleven selector */ export function createSelector( 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 T>; export function createSelector( 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 T>; /* twelve selector */ export function createSelector( 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 T>; export function createSelector( 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 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( func: F, equalityCheck?: (a: T, b: T, index: number) => boolean, ): F; export function createSelectorCreator( memoize: (func: F) => F, ): typeof createSelector; export function createSelectorCreator( memoize: (func: F, option1: O1) => F, option1: O1, ): typeof createSelector; export function createSelectorCreator( memoize: (func: F, option1: O1, option2: O2) => F, option1: O1, option2: O2, ): typeof createSelector; export function createSelectorCreator( memoize: (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;