UNPKG

re-reselect

Version:

Enhance Reselect selectors with deeper memoization and cache management

2,403 lines (2,360 loc) 87 kB
import {createSelector, CreateSelectorOptions} from 'reselect'; type $Values<T> = T[keyof T]; export type Selector<S, R> = (state: S) => R; export type ParametricSelector<S, P, R> = ( state: S, props: P, ...args: any[] ) => R; export type KeySelector<S> = (state: S, ...args: any[]) => any; export type ParametricKeySelector<S, P> = ( state: S, props: P, ...args: any[] ) => any; export type OutputSelector<S, R, C, D> = Selector<S, R> & { resultFunc: C; dependencies: D; recomputations: () => number; resetRecomputations: () => number; }; export type OutputParametricSelector<S, P, R, C, D> = ParametricSelector< S, P, R > & { resultFunc: C; dependencies: D; recomputations: () => number; resetRecomputations: () => number; }; export type CreateSelectorInstance = Omit<typeof createSelector, 'clearCache'>; type Options<S, C, D> = { selectorCreator?: CreateSelectorInstance; cacheObject?: ICacheObject; keySelector?: KeySelector<S>; keySelectorCreator?: KeySelectorCreator<S, C, D>; }; type ParametricOptions<S, P, C, D> = { selectorCreator?: CreateSelectorInstance; cacheObject?: ICacheObject; keySelector?: ParametricKeySelector<S, P>; keySelectorCreator?: ParametricKeySelectorCreator<S, P, C, D>; }; export type OutputCachedSelector<S, R, C, D> = ( options: KeySelector<S> | Options<S, C, D> ) => OutputSelector<S, R, C, D> & { getMatchingSelector: (state: S, ...args: any[]) => OutputSelector<S, R, C, D>; removeMatchingSelector: (state: S, ...args: any[]) => void; clearCache: () => void; cache: ICacheObject; keySelector: KeySelector<S>; }; export type OutputParametricCachedSelector<S, P, R, C, D> = ( options: ParametricKeySelector<S, P> | ParametricOptions<S, P, C, D> ) => OutputParametricSelector<S, P, R, C, D> & { getMatchingSelector: ( state: S, props: P, ...args: any[] ) => OutputParametricSelector<S, P, R, C, D>; removeMatchingSelector: (state: S, props: P, ...args: any[]) => void; clearCache: () => void; cache: ICacheObject; keySelector: ParametricKeySelector<S, P>; }; /* * Homogeneous selectors, parameter types */ /* one selector */ declare function createCachedSelector<S, R1, T>( selector: Selector<S, R1>, combiner: (res: R1) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector<S, T, (res: R1) => T, [Selector<S, R1>]>; declare function createCachedSelector<S, P, R1, T>( selector: ParametricSelector<S, P, R1>, combiner: (res: R1) => T, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res: R1) => T, [ParametricSelector<S, P, R1>] >; /* two selectors */ declare function createCachedSelector<S, R1, R2, T>( selector1: Selector<S, R1>, selector2: Selector<S, R2>, combiner: (res1: R1, res2: R2) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2) => T, [Selector<S, R1>, Selector<S, R2>] >; declare function createCachedSelector<S, P, R1, R2, T>( selector1: ParametricSelector<S, P, R1>, selector2: ParametricSelector<S, P, R2>, combiner: (res1: R1, res2: R2) => T, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2) => T, [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>] >; /* three selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3) => T, [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3> ] >; /* four selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T, [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4> ] >; /* five selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5> ] >; /* six selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6> ] >; /* seven selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, [ 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> ] >; /* eight selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T, [ 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> ] >; /* nine selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T, [ 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> ] >; /* ten selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T, [ 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> ] >; /* eleven selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< 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, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< 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, [ 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> ] >; /* twelve selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< 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, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< 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, [ 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> ] >; /* * Homogeneous selectors, array argument */ /* one selector */ declare function createCachedSelector<S, R1, T>( selectors: [Selector<S, R1>], combiner: (res: R1) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector<S, T, (res: R1) => T, [Selector<S, R1>]>; declare function createCachedSelector<S, P, R1, T>( selectors: [ParametricSelector<S, P, R1>], combiner: (res: R1) => T, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res: R1) => T, [ParametricSelector<S, P, R1>] >; /* two selectors */ declare function createCachedSelector<S, R1, R2, T>( selectors: [Selector<S, R1>, Selector<S, R2>], combiner: (res1: R1, res2: R2) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2) => T, [Selector<S, R1>, Selector<S, R2>] >; declare function createCachedSelector<S, P, R1, R2, T>( selectors: [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>], combiner: (res1: R1, res2: R2) => T, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2) => T, [ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>] >; /* three selectors */ declare function createCachedSelector<S, R1, R2, R3, T>( selectors: [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>], combiner: (res1: R1, res2: R2, res3: R3) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3) => T, [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3> ] >; /* four selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T, [Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4> ] >; /* five selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5> ] >; /* six selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, [ ParametricSelector<S, P, R1>, ParametricSelector<S, P, R2>, ParametricSelector<S, P, R3>, ParametricSelector<S, P, R4>, ParametricSelector<S, P, R5>, ParametricSelector<S, P, R6> ] >; /* seven selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, [ 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> ] >; /* eight selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T, [ Selector<S, R1>, Selector<S, R2>, Selector<S, R3>, Selector<S, R4>, Selector<S, R5>, Selector<S, R6>, Selector<S, R7>, Selector<S, R8> ] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8 ) => T, [ 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> ] >; /* nine selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9 ) => T, [ 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> ] >; /* ten selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S, P, T, ( res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7, res8: R8, res9: R9, res10: R10 ) => T, [ 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> ] >; /* eleven selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< 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, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< 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, [ 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> ] >; /* twelve selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< 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, [ 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> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< 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, [ 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> ] >; /* * Heterogeneous selectors, parameter types */ /* one selector */ declare function createCachedSelector<S1, R1, T>( selector: Selector<S1, R1>, combiner: (res: R1) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector<S1, T, (res: R1) => T, [Selector<S1, R1>]>; declare function createCachedSelector<S1, P1, R1, T>( selector: ParametricSelector<S1, P1, R1>, combiner: (res: R1) => T, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S1, P1, T, (res: R1) => T, [ParametricSelector<S1, P1, R1>] >; /* two selectors */ declare function createCachedSelector<S1, S2, R1, R2, T>( selector1: Selector<S1, R1>, selector2: Selector<S2, R2>, combiner: (res1: R1, res2: R2) => T, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S1 & S2, T, (res1: R1, res2: R2) => T, [Selector<S1, R1>, Selector<S2, R2>] >; declare function createCachedSelector<S1, S2, P1, P2, R1, R2, T>( selector1: ParametricSelector<S1, P1, R1>, selector2: ParametricSelector<S2, P2, R2>, combiner: (res1: R1, res2: R2) => T, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S1 & S2, P1 & P2, T, (res1: R1, res2: R2) => T, [ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>] >; /* three selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S1 & S2 & S3, T, (res1: R1, res2: R2, res3: R3) => T, [Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>] >; declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S1 & S2 & S3, P1 & P2 & P3, T, (res1: R1, res2: R2, res3: R3) => T, [ ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3> ] >; /* four selectors */ declare function createCachedSelector<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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S1 & S2 & S3 & S4, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T, [Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S1 & S2 & S3 & S4, P1 & P2 & P3 & P4, T, (res1: R1, res2: R2, res3: R3, res4: R4) => T, [ ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4> ] >; /* five selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S1 & S2 & S3 & S4 & S5, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, [ Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< S1 & S2 & S3 & S4 & S5, P1 & P2 & P3 & P4 & P5, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5) => T, [ ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5> ] >; /* six selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S1 & S2 & S3 & S4 & S5 & S6, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6) => T, [ Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< 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, [ ParametricSelector<S1, P1, R1>, ParametricSelector<S2, P2, R2>, ParametricSelector<S3, P3, R3>, ParametricSelector<S4, P4, R4>, ParametricSelector<S5, P5, R5>, ParametricSelector<S6, P6, R6> ] >; /* seven selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< S1 & S2 & S3 & S4 & S5 & S6 & S7, T, (res1: R1, res2: R2, res3: R3, res4: R4, res5: R5, res6: R6, res7: R7) => T, [ Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7> ] >; declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputParametricCachedSelector< 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, [ 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> ] >; /* eight selectors */ declare function createCachedSelector< 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, createSelectorOptions?: CreateSelectorOptions ): OutputCachedSelector< 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, [ Selector<S1, R1>, Selector<S2, R2>, Selector<S3, R3>, Selector<S4, R4>, Selector<S5, R5>, Selector<S6, R6>, Selector<S7, R7>, Selector<S8, R8> ] >; declare function createCachedSelector< 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: