import { Model } from "./Model";
import type { TRelationOptions, TRelationQueryOptions } from "../types";
declare class RelationManager {
    private $model;
    constructor(model: Model);
    load(parents: Record<string, any>[], relation: TRelationOptions): Promise<any[]>;
    loadExists(): string;
    getSqlExists(name: string, cb: Function): string | null;
    apply(nameRelations: any[], type: 'all' | 'exists' | 'notExists' | 'trashed' | 'count' | 'default'): TRelationOptions[];
    callback(nameRelation: string, cb: Function): void;
    callbackPivot(nameRelation: string, cb: Function): void;
    returnCallback(nameRelation: string): any;
    hasOne({ name, as, model, localKey, foreignKey, freezeTable }: TRelationOptions): void;
    hasMany({ name, as, model, localKey, foreignKey, freezeTable }: TRelationOptions): void;
    belongsTo({ name, as, model, localKey, foreignKey, freezeTable }: TRelationOptions): void;
    belongsToMany({ name, as, model, localKey, foreignKey, freezeTable, pivot, oldVersion, modelPivot }: TRelationOptions): void;
    belongsToManySingle({ name, as, model, localKey, foreignKey, freezeTable, pivot, oldVersion, modelPivot }: TRelationOptions): void;
    hasOneBuilder({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationQueryOptions, callback?: Function): this | undefined;
    hasManyBuilder({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationQueryOptions, callback?: Function): this | undefined;
    belongsToBuilder({ name, as, model, localKey, foreignKey, freezeTable, }: TRelationQueryOptions, callback?: Function): this | undefined;
    belongsToManyBuilder({ name, as, model, localKey, foreignKey, freezeTable, pivot }: TRelationQueryOptions, callback?: Function): this | undefined;
    protected _handleRelationExists(relation: TRelationOptions): string;
    private _relationBuilder;
    private _relationMapData;
    private _belongsToMany;
    private _valueInRelation;
    protected _valuePattern(value: string): string;
    private _assertError;
}
export { RelationManager };
export default RelationManager;
