import { IObjectType, JoinType } from "../Common/Type"; import { Queryable } from "./Queryable"; import { FunctionExpression } from "../ExpressionBuilder/Expression/FunctionExpression"; import { IQueryExpression } from "./QueryExpression/IQueryExpression"; import { IQueryVisitor } from "../Query/IQueryVisitor"; export declare abstract class JoinQueryable extends Queryable { protected joinType: JoinType; readonly parent: Queryable; protected readonly parent2: Queryable; type: IObjectType; protected readonly relationFn: (item: T, item2: T2) => boolean; protected readonly resultSelectorFn: (item1: T | null, item2: T2 | null) => R; private _relation; protected relation: FunctionExpression; private _resultSelector; protected resultSelector: FunctionExpression; constructor(joinType: JoinType, parent: Queryable, parent2: Queryable, relation: FunctionExpression | ((item: T, item2: T2) => boolean), resultSelector?: FunctionExpression | ((item1: T | null, item2: T2 | null) => R), type?: IObjectType); buildQuery(queryVisitor: IQueryVisitor): IQueryExpression; }