import { RelationshipSide, JDLRelationshipType } from '../basic-types/relationships.js';
export type JDLRelationshipOptions = Record<'global' | 'source' | 'destination', Record<string, any>>;
export type JDLSourceEntitySide = {
    sourceEntity: string;
    injectedFieldInSourceEntity?: string;
    injectedFieldInSourceIsRequired: boolean;
    commentForSourceEntity?: string;
};
export type JDLRelationshipModel = {
    side?: RelationshipSide;
    from: string;
    to: string;
    type: JDLRelationshipType;
    options: JDLRelationshipOptions;
    injectedFieldInFrom?: string | null;
    injectedFieldInTo?: string | null;
    isInjectedFieldInFromRequired: boolean;
    isInjectedFieldInToRequired: boolean;
    commentInFrom?: string | null;
    commentInTo?: string | null;
};
export default class JDLRelationship implements JDLRelationshipModel {
    side?: RelationshipSide;
    from: string;
    to: string;
    type: JDLRelationshipType;
    options: {
        global: Record<string, any>;
        source: Record<string, any>;
        destination: Record<string, any>;
    };
    injectedFieldInFrom?: string | null;
    injectedFieldInTo?: string | null;
    isInjectedFieldInFromRequired: boolean;
    isInjectedFieldInToRequired: boolean;
    commentInFrom?: string | null;
    commentInTo?: string | null;
    constructor(args: Partial<JDLRelationshipModel> & Pick<JDLRelationshipModel, 'from' | 'to' | 'type'>);
    getId(): string;
    hasGlobalOption(option: string): boolean;
    forEachGlobalOption(passedFunction: (optionName: string, value: any) => void): void;
    forEachSourceOption(passedFunction: (optionName: string, value: any) => void): void;
    forEachDestinationOption(passedFunction: (optionName: string, value: any) => void): void;
    toString(): string;
}
