import { RelationshipSide, JDLRelationshipType } from '../basic-types/relationships.js';
export type JDLRelationshipOptions = Record<'global' | 'source' | 'destination', Record<string, any>>;
export type JDLRelationshipModel = {
    side: RelationshipSide | undefined;
    from: string;
    to: string;
    type: JDLRelationshipType;
    options: JDLRelationshipOptions;
    injectedFieldInFrom: null | string;
    injectedFieldInTo: null | string;
    isInjectedFieldInFromRequired: boolean;
    isInjectedFieldInToRequired: boolean;
    commentInFrom: null | string;
    commentInTo: null | string;
};
export default class JDLRelationship implements JDLRelationshipModel {
    side: RelationshipSide | undefined;
    from: string;
    to: string;
    type: JDLRelationshipType;
    options: {
        global: Record<string, any>;
        source: Record<string, any>;
        destination: Record<string, any>;
    };
    injectedFieldInFrom: null | string;
    injectedFieldInTo: null | string;
    isInjectedFieldInFromRequired: boolean;
    isInjectedFieldInToRequired: boolean;
    commentInFrom: null | string;
    commentInTo: null | string;
    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;
}
