UNPKG

react-native-flip

Version:
947 lines (887 loc) 53.2 kB
export as namespace Reselect; export type Selector<S, R> = (state: S) => R; export type OutputSelector<S, R, C> = Selector<S, R> & { resultFunc: C; recomputations: () => number; resetRecomputations: () => number; } export type ParametricSelector<S, P, R> = (state: S, props: P, ...args: any[]) => R; export type OutputParametricSelector<S, P, R, C> = ParametricSelector<S, P, R> & { resultFunc: C; recomputations: () => number; resetRecomputations: () => number; } /* homogeneous selector parameter types */ /* one selector */ export function createSelector<S, R1, T>( selector: Selector<S, R1>, combiner: (res: R1) => T, ): OutputSelector<S, T, (res: R1) => T>; export function createSelector<S, P, R1, T>( selector: ParametricSelector<S, P, R1>, combiner: (res: R1) => T, ): OutputParametricSelector<S, P, T, (res: R1) => T>; /* two selectors */ export function createSelector<S, R1, R2, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, combiner: (res1: R1, res2: R2) => T, ): OutputSelector<S, T, (res1: R1, res2: R2) => T>; export function createSelector<S, P, R1, R2, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, combiner: (res1: R1, res2: R2) => T, ): OutputParametricSelector<S, P, T, (res1: R1, res2: R2) => T>; /* three selectors */ export function createSelector<S, R1, R2, R3, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, combiner: (res1: R1, res2: R2, res3: R3) => T, ): OutputSelector<S, T, (res1: R1, res2: R2, res3: R3) => T>; export function createSelector<S, P, R1, R2, R3, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, combiner: (res1: R1, res2: R2, res3: R3) => T, ): OutputParametricSelector<S, P, T, (res1: R1, res2: R2, res3: R3) => T>; /* four selectors */ export function createSelector<S, R1, R2, R3, R4, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T, ): OutputSelector<S, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T>; export function createSelector<S, P, R1, R2, R3, R4, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, 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<S, R1, R2, R3, R4, R5, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, ): OutputSelector<S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T>; export function createSelector<S, P, R1, R2, R3, R4, R5, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, 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<S, R1, R2, R3, R4, R5, R6, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, 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<S, P, R1, R2, R3, R4, R5, R6, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, 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<S, R1, R2, R3, R4, R5, R6, R7, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, selector7: Selector<S, R7>, 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<S, P, R1, R2, R3, R4, R5, R6, R7, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, selector7: ParametricSelector<S, P, R7>, 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<S, R1, R2, R3, R4, R5, R6, R7, R8, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, selector7: Selector<S, R7>, selector8: Selector<S, R8>, 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<S, P, R1, R2, R3, R4, R5, R6, R7, R8, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, selector7: ParametricSelector<S, P, R7>, selector8: ParametricSelector<S, P, R8>, 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<S, R1, R2, R3, R4, R5, R6, R7, R8, R9, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, selector7: Selector<S, R7>, selector8: Selector<S, R8>, selector9: Selector<S, R9>, 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<S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, selector7: ParametricSelector<S, P, R7>, selector8: ParametricSelector<S, P, R8>, selector9: ParametricSelector<S, P, R9>, 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<S, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, selector7: Selector<S, R7>, selector8: Selector<S, R8>, selector9: Selector<S, R9>, selector10: Selector<S, R10>, 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<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, selector7: ParametricSelector<S, P, R7>, selector8: ParametricSelector<S, P, R8>, selector9: ParametricSelector<S, P, R9>, selector10: ParametricSelector<S, P, R10>, 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<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, selector7: Selector<S, R7>, selector8: Selector<S, R8>, selector9: Selector<S, R9>, selector10: Selector<S, R10>, selector11: Selector<S, R11>, 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<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, selector7: ParametricSelector<S, P, R7>, selector8: ParametricSelector<S, P, R8>, selector9: ParametricSelector<S, P, R9>, selector10: ParametricSelector<S, P, R10>, selector11: ParametricSelector<S, P, R11>, 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<S, R1>, selector2: Selector<S, R2>, selector3: Selector<S, R3>, selector4: Selector<S, R4>, selector5: Selector<S, R5>, selector6: Selector<S, R6>, selector7: Selector<S, R7>, selector8: Selector<S, R8>, selector9: Selector<S, R9>, selector10: Selector<S, R10>, selector11: Selector<S, R11>, selector12: Selector<S, R12>, 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<S, P, R1>, selector2: ParametricSelector<S, P, R2>, selector3: ParametricSelector<S, P, R3>, selector4: ParametricSelector<S, P, R4>, selector5: ParametricSelector<S, P, R5>, selector6: ParametricSelector<S, P, R6>, selector7: ParametricSelector<S, P, R7>, selector8: ParametricSelector<S, P, R8>, selector9: ParametricSelector<S, P, R9>, selector10: ParametricSelector<S, P, R10>, selector11: ParametricSelector<S, P, R11>, selector12: ParametricSelector<S, P, R12>, 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<S, R1, T>( selectors: [Selector<S, R1>], combiner: (res: R1) => T, ): OutputSelector<S, T, (res: R1) => T>; export function createSelector<S, P, R1, T>( selectors: [ParametricSelector<S, P, R1>], combiner: (res: R1) => T, ): OutputParametricSelector<S, P, T, (res: R1) => T>; /* two selectors */ export function createSelector<S, R1, R2, T>( selectors: [Selector<S, R1>, Selector<S, R2>], combiner: (res1: R1, res2: R2) => T, ): OutputSelector<S, T, (res1: R1, res2: R2) => T>; export function createSelector<S, P, R1, R2, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>], combiner: (res1: R1, res2: R2) => T, ): OutputParametricSelector<S, P, T, (res1: R1, res2: R2) => T>; /* three selectors */ export function createSelector<S, R1, R2, R3, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>], combiner: (res1: R1, res2: R2, res3: R3) => T, ): OutputSelector<S, T, (res1: R1, res2: R2, res3: R3) => T>; export function createSelector<S, P, R1, R2, R3, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>], combiner: (res1: R1, res2: R2, res3: R3) => T, ): OutputParametricSelector<S, P, T, (res1: R1, res2: R2, res3: R3) => T>; /* four selectors */ export function createSelector<S, R1, R2, R3, R4, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>], combiner: (res1: R1, res2: R2, res3: R3, res4: R4) => T, ): OutputSelector<S, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T>; export function createSelector<S, P, R1, R2, R3, R4, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>], 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<S, R1, R2, R3, R4, R5, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>], combiner: (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, ): OutputSelector<S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T>; export function createSelector<S, P, R1, R2, R3, R4, R5, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>], 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<S, R1, R2, R3, R4, R5, R6, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>], 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<S, P, R1, R2, R3, R4, R5, R6, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>], 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<S, R1, R2, R3, R4, R5, R6, R7, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>], 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<S, P, R1, R2, R3, R4, R5, R6, R7, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>, ParametricSelector<S, P, R7>], 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<S, R1, R2, R3, R4, R5, R6, R7, R8, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8>], 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<S, P, R1, R2, R3, R4, R5, R6, R7, R8, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>, ParametricSelector<S, P, R7>, ParametricSelector<S, P, R8>], 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<S, R1, R2, R3, R4, R5, R6, R7, R8, R9, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8>, Selector<S, R9>], 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<S, P, R1, R2, R3, R4, R5, R6, R7, R8, R9, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>, ParametricSelector<S, P, R7>, ParametricSelector<S, P, R8>, ParametricSelector<S, P, R9>], 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<S, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8>, Selector<S, R9>, Selector<S, R10>], 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<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>, ParametricSelector<S, P, R7>, ParametricSelector<S, P, R8>, ParametricSelector<S, P, R9>, ParametricSelector<S, P, R10>], 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<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8>, Selector<S, R9>, Selector<S, R10>, Selector<S, R11>], 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<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>, ParametricSelector<S, P, R7>, ParametricSelector<S, P, R8>, ParametricSelector<S, P, R9>, ParametricSelector<S, P, R10>, ParametricSelector<S, P, R11>], 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<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8>, Selector<S, R9>, Selector<S, R10>, Selector<S, R11>, Selector<S, R12>], 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<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6>, ParametricSelector<S, P, R7>, ParametricSelector<S, P, R8>, ParametricSelector<S, P, R9>, ParametricSelector<S, P, R10>, ParametricSelector<S, P, R11>, ParametricSelector<S, P, R12>], 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<S1, R1, T>( selector1: Selector<S1, R1>, combiner: (res1: R1) => T, ): OutputSelector<S1, T, (res1: R1) => T>; export function createSelector<S1, P1, R1, T>( selector1: ParametricSelector<S1, P1, R1>, combiner: (res1: R1) => T, ): OutputParametricSelector<S1, P1, T, (res1: R1) => T>; /* two selector */ export function createSelector<S1, S2, R1, R2, T>( selector1: Selector<S1, R1>, selector2: Selector<S2, R2>, combiner: (res1: R1, res2: R2) => T, ): OutputSelector<S1 & S2, T, (res1: R1, res2: R2) => T>; export function createSelector<S1, S2, P1, P2, R1, R2, T>( selector1: ParametricSelector<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, combiner: (res1: R1, res2: R2) => T, ): OutputParametricSelector<S1 & S2, P1 & P2, T, (res1: R1, res2: R2) => T>; /* three selector */ export function createSelector<S1, S2, S3, R1, R2, R3, T>( selector1: Selector<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, combiner: (res1: R1, res2: R2, res3: R3) => T, ): OutputSelector<S1 & S2 & S3, T, (res1: R1, res2: R2, res3: R3) => T>; export function createSelector<S1, S2, S3, P1, P2, P3, R1, R2, R3, T>( selector1: ParametricSelector<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, 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<S1, S2, S3, S4, R1, R2, R3, R4, T>( selector1: Selector<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, 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<S1, S2, S3, S4, S5, R1, R2, R3, R4, R5, T>( selector1: Selector<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, selector7: Selector<S7, R7>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, selector7: ParametricSelector<S7, P7, R7>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, selector7: Selector<S7, R7>, selector8: Selector<S8, R8>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, selector7: ParametricSelector<S7, P7, R7>, selector8: ParametricSelector<S8, P8, R8>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, selector7: Selector<S7, R7>, selector8: Selector<S8, R8>, selector9: Selector<S9, R9>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, selector7: ParametricSelector<S7, P7, R7>, selector8: ParametricSelector<S8, P8, R8>, selector9: ParametricSelector<S9, P9, R9>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, selector7: Selector<S7, R7>, selector8: Selector<S8, R8>, selector9: Selector<S9, R9>, selector10: Selector<S10, R10>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, selector7: ParametricSelector<S7, P7, R7>, selector8: ParametricSelector<S8, P8, R8>, selector9: ParametricSelector<S9, P9, R9>, selector10: ParametricSelector<S10, P10, R10>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, selector7: Selector<S7, R7>, selector8: Selector<S8, R8>, selector9: Selector<S9, R9>, selector10: Selector<S10, R10>, selector11: Selector<S11, R11>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, selector7: ParametricSelector<S7, P7, R7>, selector8: ParametricSelector<S8, P8, R8>, selector9: ParametricSelector<S9, P9, R9>, selector10: ParametricSelector<S10, P10, R10>, selector11: ParametricSelector<S11, P11, R11>, 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<S1, R1>, selector2: Selector<S2, R2>, selector3: Selector<S3, R3>, selector4: Selector<S4, R4>, selector5: Selector<S5, R5>, selector6: Selector<S6, R6>, selector7: Selector<S7, R7>, selector8: Selector<S8, R8>, selector9: Selector<S9, R9>, selector10: Selector<S10, R10>, selector11: Selector<S11, R11>, selector12: Selector<S12, R12>, 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<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, selector3: ParametricSelector<S3, P3, R3>, selector4: ParametricSelector<S4, P4, R4>, selector5: ParametricSelector<S5, P5, R5>, selector6: ParametricSelector<S6, P6, R6>, selector7: ParametricSelector<S7, P7, R7>, selector8: ParametricSelector<S8, P8, R8>, selector9: ParametricSelector<S9, P9, R9>, selector10: ParametricSelector<S10, P10, R10>, selector11: ParametricSelector<S11, P11, R11>, selector12: ParametricSelector<S12, P12, R12>, 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<S1, R1, T>( selectors: [Selector<S1, R1>], combiner: (res1: R1) => T, ): OutputSelector<S1, T, (res1: R1) => T>; export function createSelector<S1, P1, R1, T>( selectors: [ParametricSelector<S1, P1, R1>], combiner: (res1: R1) => T, ): OutputParametricSelector<S1, P1, T, (res1: R1) => T>; /* two selector */ export function createSelector<S1, S2, R1, R2, T>( selectors: [Selector<S1, R1>, Selector<S2, R2>], combiner: (res1: R1, res2: R2) => T, ): OutputSelector<S1 & S2, T, (res1: R1, res2: R2) => T>; export function createSelector<S1, S2, P1, P2, R1, R2, T>( selectors: [ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>], combiner: (res1: R1, res2: R2) => T, ): OutputParametricSelector<S1 & S2, P1 & P2, T, (res1: R1, res2: R2) => T>; /* three selector */ export function createSelector<S1, S2, S3, R1, R2, R3, T>( selectors: [Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>], combiner: (res1: R1, res2: R2, res3: R3) => T, ): OutputSelector<S1 & S2 & S3, T, (res1: R1, res2: R2, res3: R3) => T>; export function createSelector<S1, S2, S3, P1, P2, P3, R1, R2, R3, T>( selectors: [ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>], 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<S1, S2, S3, S4, R1, R2, R3, R4, T>( selectors: [Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>], 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<S1, S2, S3, S4, S5, R1, R2, R3, R4, R5, T>( selectors: [Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6>, ParametricSelector<S7, P7, R7>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7>, Selector<S8, R8>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6>, ParametricSelector<S7, P7, R7>, ParametricSelector<S8, P8, R8>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7>, Selector<S8, R8>, Selector<S9, R9>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6>, ParametricSelector<S7, P7, R7>, ParametricSelector<S8, P8, R8>, ParametricSelector<S9, P9, R9>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7>, Selector<S8, R8>, Selector<S9, R9>, Selector<S10, R10>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6>, ParametricSelector<S7, P7, R7>, ParametricSelector<S8, P8, R8>, ParametricSelector<S9, P9, R9>, ParametricSelector<S10, P10, R10>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7>, Selector<S8, R8>, Selector<S9, R9>, Selector<S10, R10>, Selector<S11, R11>], 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<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6>, ParametricSelector<S7, P7, R7>, ParametricSelector<S8, P8, R8>, ParametricSelector<S9, P9, R9>, ParametricSelector<S10, P10, R10>, ParametricSelector<S11, P11, R11>], 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<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector