import { TModelConstructorOrObject } from "../types";
import { Model } from "./Model";
declare class JoinModel {
    protected model: Model;
    protected type: 'INNER_JOIN' | 'LEFT_JOIN' | 'RIGHT_JOIN' | 'CROSS_JOIN';
    private join;
    constructor(model: Model, type?: 'INNER_JOIN' | 'LEFT_JOIN' | 'RIGHT_JOIN' | 'CROSS_JOIN');
    on(m1: TModelConstructorOrObject, m2: TModelConstructorOrObject): this;
    and(m1: TModelConstructorOrObject, m2: TModelConstructorOrObject): this;
    or(m1: TModelConstructorOrObject, m2: TModelConstructorOrObject): this;
    onRaw(localKey: `${string}.${string}`, referenceKey?: `${string}.${string}`): this;
    andRaw(localKey: `${string}.${string}`, referenceKey?: `${string}.${string}`): this;
    orRaw(localKey: `${string}.${string}`, referenceKey?: `${string}.${string}`): this;
    protected toString(): string;
    private _handleJoinModel;
    private _handleCombindJoin;
}
export { JoinModel };
export default JoinModel;
