import { Model, RelationType } from '../dataModel';
import { Relation, WithForeignKey } from './interface';
export default class OneToMany implements Relation, WithForeignKey {
    private oneSideModel;
    private manySideModel;
    private oneSideField;
    private manySideField?;
    private foreignKey;
    constructor({ oneSideModel, manySideModel, oneSideField, manySideField, foreignKey, }: {
        oneSideModel: Model;
        manySideModel: Model;
        oneSideField: string;
        manySideField?: string;
        foreignKey?: string;
    });
    getType(): RelationType;
    getForeignKey(): string;
    getForeignKeyConfig(): any;
    getOneSideField(): string;
    getManySideField(): string;
    setForeignKeyOnManySide(targetId: string): {
        [x: string]: string;
    };
    createAndSetForeignKeyOnManySide(targetData: Record<string, any>, context: any): Promise<{
        [x: string]: string;
    }>;
    unsetForeignKeyOnManySide(): {
        [x: string]: string;
    };
    destroyAndUnsetForeignKeyOnManySide(data: Record<string, any>, context: any): Promise<{
        [x: string]: string;
    }>;
    addIdFromOneSide(oneSideId: string, manySideId: string, context: any): Promise<void>;
    createAndAddFromOneSide(oneSideId: string, manySideData: any, context: any): Promise<void>;
    removeIdFromOneSide(oneSideId: string, manySideId: string, context: any): Promise<void>;
    deleteRecordFromOneSide(manySideId: string, context: any): Promise<void>;
    joinManyOnOneSide(data: Record<string, any>, argument: Record<string, any>, context: any): Promise<any[]>;
    joinOneOnManySide(data: Record<string, any>, context: any): Promise<any>;
}
