/**
 * VelociousDatabaseQueryJoinObject class.
 * @typedef {{[key: string]: boolean | string | string[] | JoinObjectInput}} JoinObjectInput
 * @typedef {{[key: string]: boolean | JoinObject}} JoinObject
 */
export default class VelociousDatabaseQueryJoinObject extends JoinBase {
    /**
     * Runs constructor.
     * @param {JoinObject} object - Object.
     * @param {string[]} [basePath] - Join base path relative to the root query.
     */
    constructor(object: JoinObject, basePath?: string[]);
    object: JoinObject;
    basePath: string[];
    toSql(): string;
    /**
     * Runs join object.
     * @param {JoinObject} join - Join.
     * @param {typeof import("../record/index.js").default} modelClass - Model class.
     * @param {string} sql - SQL string.
     * @param {number} joinsCount - Joins count.
     * @param {string[]} path - Join path.
     * @returns {string} - The join object.
     */
    joinObject(join: JoinObject, modelClass: typeof import("../record/index.js").default, sql: string, joinsCount: number, path: string[]): string;
    /**
     * Runs scope sql.
     * @param {object} args - Options object.
     * @param {import("../record/relationships/base.js").default} args.relationship - Relationship definition.
     * @param {import("./model-class-query.js").default} args.query - Model class query.
     * @param {typeof import("../record/index.js").default} args.targetModelClass - Target model class.
     * @param {string[]} args.joinPath - Join path.
     * @param {string} args.targetTableRef - Target table reference.
     * @returns {string} - Scope SQL.
     */
    _scopeSql({ relationship, query, targetModelClass, joinPath, targetTableRef }: {
        relationship: import("../record/relationships/base.js").default;
        query: import("./model-class-query.js").default;
        targetModelClass: typeof import("../record/index.js").default;
        joinPath: string[];
        targetTableRef: string;
    }): string;
    /**
     * Runs scope sql for where.
     * @param {import("./where-base.js").default} where - Where.
     * @param {string} targetTableRef - Target table reference.
     * @returns {string} - Scope where SQL.
     */
    _scopeSqlForWhere(where: import("./where-base.js").default, targetTableRef: string): string;
}
/**
 * VelociousDatabaseQueryJoinObject class.
 */
export type JoinObjectInput = {
    [key: string]: boolean | string | string[] | JoinObjectInput;
};
/**
 * VelociousDatabaseQueryJoinObject class.
 */
export type JoinObject = {
    [key: string]: boolean | JoinObject;
};
import JoinBase from "./join-base.js";
//# sourceMappingURL=join-object.d.ts.map