import { GetDataType, QueryExecutorFn } from './types'; import { Expression } from './expression'; import { Query } from './query'; import { ResultSet } from './result-set'; export declare type FromItem = Q extends Query ? FromItemQuery : Q extends (args: any) => infer R ? R extends Query ? FromItemQuery : never : never; declare type FromItemQuery ? ResultSet : never> = { [K in keyof Result]: Result[K] extends GetDataType ? Expression : never; }; declare type QueryFn = Query | ((args: T) => Query); export interface WithFn { , Q extends Query>(name1: N1, with1: W1, callback: (args: { [K in N1]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, N5 extends string, W5 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, name5: N5, with5: W5, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, N5 extends string, W5 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }>, N6 extends string, W6 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, name5: N5, with5: W5, name6: N6, with6: W6, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, N5 extends string, W5 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }>, N6 extends string, W6 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; }>, N7 extends string, W7 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, name5: N5, with5: W5, name6: N6, with6: W6, name7: N7, with7: W7, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, N5 extends string, W5 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }>, N6 extends string, W6 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; }>, N7 extends string, W7 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; }>, N8 extends string, W8 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, name5: N5, with5: W5, name6: N6, with6: W6, name7: N7, with7: W7, name8: N8, with8: W8, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; } & { [K in N8]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, N5 extends string, W5 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }>, N6 extends string, W6 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; }>, N7 extends string, W7 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; }>, N8 extends string, W8 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; }>, N9 extends string, W9 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; } & { [K in N8]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, name5: N5, with5: W5, name6: N6, with6: W6, name7: N7, with7: W7, name8: N8, with8: W8, name9: N9, with9: W9, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; } & { [K in N8]: FromItem; } & { [K in N9]: FromItem; }) => Q): Q; , N2 extends string, W2 extends QueryFn<{ [K in N1]: FromItem; }>, N3 extends string, W3 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; }>, N4 extends string, W4 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; }>, N5 extends string, W5 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; }>, N6 extends string, W6 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; }>, N7 extends string, W7 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; }>, N8 extends string, W8 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; }>, N9 extends string, W9 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; } & { [K in N8]: FromItem; }>, N10 extends string, W10 extends QueryFn<{ [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; } & { [K in N8]: FromItem; } & { [K in N9]: FromItem; }>, Q extends Query>(name1: N1, with1: W1, name2: N2, with2: W2, name3: N3, with3: W3, name4: N4, with4: W4, name5: N5, with5: W5, name6: N6, with6: W6, name7: N7, with7: W7, name8: N8, with8: W8, name9: N9, with9: W9, name10: N10, with10: W10, callback: (args: { [K in N1]: FromItem; } & { [K in N2]: FromItem; } & { [K in N3]: FromItem; } & { [K in N4]: FromItem; } & { [K in N5]: FromItem; } & { [K in N6]: FromItem; } & { [K in N7]: FromItem; } & { [K in N8]: FromItem; } & { [K in N9]: FromItem; } & { [K in N10]: FromItem; }) => Q): Q; } export declare const makeWith: (queryExecutor: QueryExecutorFn) => WithFn; export {};