export interface DiagramViewport {
    scale: number;
    translateX: number;
    translateY: number;
}
export interface DiagramPoint {
    x: number;
    y: number;
}
export interface DiagramSize {
    width: number;
    height: number;
}
export interface DiagramObjOccurrencePort {
    x?: number;
    y?: number;
    side?: string;
}
export interface DiagramObjOccurrence {
    id: string;
    entityId: string;
    position: DiagramPoint;
    size?: DiagramSize;
    angle?: number;
    z?: number;
    shape?: string;
    style?: Record<string, unknown>;
    ports?: Record<string, DiagramObjOccurrencePort>;
    label?: string;
}
export interface DiagramCnxOccurrenceLabel {
    id: string;
    text: string;
    position?: number;
}
export interface DiagramCnxOccurrence {
    id: string;
    entityId?: string;
    sourceOccurrenceId: string;
    targetOccurrenceId: string;
    sourcePortId?: string;
    targetPortId?: string;
    vertices?: DiagramPoint[];
    labels?: DiagramCnxOccurrenceLabel[];
    style?: Record<string, unknown>;
    z?: number;
}
export interface DiagramTextOccurrence {
    id: string;
    text: string;
    position: DiagramPoint;
    size?: DiagramSize;
    style?: Record<string, unknown>;
    z?: number;
}
export interface DiagramOccurrences {
    objs: Record<string, DiagramObjOccurrence>;
    cnxs: Record<string, DiagramCnxOccurrence>;
    texts?: Record<string, DiagramTextOccurrence>;
}
export interface DiagramDocumentV1 extends Record<string, unknown> {
    version: 1;
    viewport: DiagramViewport;
    occurrences: DiagramOccurrences;
    order?: string[];
}
export type DiagramDocument = DiagramDocumentV1;
export type DiagramOccurrenceType = 'obj' | 'cnx' | 'text';
export interface DiagramPatchOperation {
    op: 'set_viewport' | 'put_obj_occurrence' | 'patch_obj_occurrence' | 'delete_obj_occurrence' | 'put_cnx_occurrence' | 'patch_cnx_occurrence' | 'delete_cnx_occurrence' | 'put_text_occurrence' | 'patch_text_occurrence' | 'delete_text_occurrence' | 'reorder';
    occurrenceType?: DiagramOccurrenceType;
    occurrenceId?: string;
    value?: unknown;
}
export declare function createEmptyDiagramDocument(): DiagramDocumentV1;
export declare function isDiagramDocument(value: unknown): value is DiagramDocument;
export declare function applyDiagramPatch(document: DiagramDocument, patch: DiagramPatchOperation[]): DiagramDocument;
export declare function applyDiagramPatchOperation(document: DiagramDocument, operation: DiagramPatchOperation): DiagramDocument;
