import { Table } from '../../table' import { KeyVal, TableInfo, ValueOf } from '../../types' import { JoinStmt } from './types' export declare type JoinObject = { [key in string]: JoinCondition } & { sqls: JoinStmt[] } interface Result { sql: string tables: KeyVal } export declare class JoinCondition { static buildSql>( tableInfo: TableInfo, selector: (tbl: TDb) => Q, clause: ( self: JoinCondition & T, other: { [key in keyof Q]: JoinCondition> & ValueOf } ) => void ): Result static buildConditionObject( tableInfo: TableInfo, tables: KeyVal ): JoinObject private __alias private __push constructor( root: { [x: string]: Table }, name: string, push: (sql: JoinStmt) => void ) equal(p: { [key in keyof Partial]: any }): this } export {}