import type { RelationshipDefinitionDTO } from '../model/relationship-legality.js'; /** The SysML production a relationship is written as. */ export type RelationshipNotation = 'succession' | 'flow' | 'satisfy' | 'connection'; export interface RelationshipNotationRequest { /** Connection usage name, when the form carries one. */ id: string; definition: RelationshipDefinitionDTO; sourceId: string; targetId: string; /** Guard expression, for the forms that accept one. */ guard?: string; /** Item or information carried, for the forms that accept one. */ flowItem?: string; /** Indentation of the line the declaration will occupy. */ indent?: string; } /** * Which notation to write this relationship in. * * The ontology names the SysML construct in `sysmlName`; a definition whose * name is a native relationship metaclass is written in that form, and * everything else is a typed connection usage, which is the general case. */ export declare function notationFor(definition: RelationshipDefinitionDTO): RelationshipNotation; /** True when the form gives the relationship a name of its own. */ export declare function notationIsNameable(notation: RelationshipNotation): boolean; /** * Render one relationship as SysML source. * * Anonymous forms are not a defect of this module: SysML's succession and flow * productions do not take a declared name, so a relationship written in one is * addressable by position rather than by ID. `writeRelationship` reports that * back rather than inventing a name the language cannot carry. */ export declare function renderRelationship(request: RelationshipNotationRequest): string; //# sourceMappingURL=sysml-notation.d.ts.map