import type { MemoModelDTO } from '../model/semantic.js'; /** A single cell in the DSM matrix */ export interface DSMCell { /** Number of relationships from row element to column element */ count: number; /** Relationship types present in this cell */ types: string[]; /** Flow items carried (for flow relationships) */ flowItems: string[]; } /** DSM computation result */ export interface DSMResult { /** Ordered element IDs (both row and column axis) */ elementIds: string[]; /** Element metadata indexed by ID */ elements: Record; /** The N×N matrix: matrix[rowIdx][colIdx] */ matrix: (DSMCell | null)[][]; /** Cluster assignments: clusterId → element IDs */ clusters: Map; /** Total number of dependencies */ totalDependencies: number; } /** Options for DSM computation */ export interface DSMOptions { /** Element kinds to include (default: functional kinds) */ kinds?: string[]; /** Relationship types to count as dependencies (default: flow, decomposedBy, allocatedTo) */ relationshipTypes?: string[]; /** Whether to run clustering (default: true) */ cluster?: boolean; } /** * Compute a Design Structure Matrix from model elements and relationships. */ export declare function computeDSM(model: MemoModelDTO, options?: DSMOptions): DSMResult; /** * Reorder DSM elements to minimize off-diagonal dependencies (band optimization). * Groups clustered elements together and returns the reordered result. */ export declare function reorderDSM(dsm: DSMResult): DSMResult; //# sourceMappingURL=dsm.d.ts.map