import { ValueType, IObjectType, Pivot } from "../Common/Type"; import { IOrderQueryDefinition } from "./Interface/IOrderQueryDefinition"; import { GroupedEnumerable } from "../Enumerable/GroupedEnumerable"; import { IQueryOption } from "../Query/IQueryOption"; declare module "./Queryable" { interface Queryable { parameter(params: { [key: string]: any; }): Queryable; option(option: IQueryOption): Queryable; select(type: IObjectType, selector: ((item: T) => { [key in keyof TReturn]?: TReturn[key]; })): Queryable; select(selector: ((item: T) => TReturn)): Queryable; select(typeOrSelector: IObjectType | ((item: T) => TReturn), selector?: ((item: T) => TReturn)): Queryable; selectMany(selector: (item: T) => Iterable): Queryable; where(predicate: (item: T) => boolean): Queryable; orderBy(...selectors: IOrderQueryDefinition[]): Queryable; skip(skip: number): Queryable; take(take: number): Queryable; groupBy(keySelector: (item: T) => K): Queryable>; distinct(): Queryable; project(...includes: Array<(item: T) => ValueType>): Queryable; include(...includes: Array<(item: T) => any>): Queryable; union(array2: Queryable, isUnionAll?: boolean): Queryable; intersect(array2: Queryable): Queryable; except(array2: Queryable): Queryable; groupJoin(array2: Queryable, relation: (item: T, item2: T2) => boolean, resultSelector?: (item1: T, item2: T2[]) => TResult): Queryable; innerJoin(array2: Queryable, relation: (item: T, item2: T2) => boolean, resultSelector?: (item1: T, item2: T2) => TResult): Queryable; leftJoin(array2: Queryable, relation: (item: T, item2: T2) => boolean, resultSelector?: (item1: T, item2: T2 | null) => TResult): Queryable; rightJoin(array2: Queryable, relation: (item: T, item2: T2) => boolean, resultSelector?: (item1: T | null, item2: T2) => TResult): Queryable; fullJoin(array2: Queryable, relation: (item: T, item2: T2) => boolean, resultSelector?: (item1: T | null, item2: T2 | null) => TResult): Queryable; crossJoin(array2: Queryable, resultSelector?: (item1: T | null, item2: T2 | null) => TResult): Queryable; pivot ValueType; }, TM extends { [key: string]: (item: T[]) => ValueType; }>(dimensions: TD, metrics: TM): Queryable>; } }