import type { CellComplex } from '../geometry/cell-complex.js'; import { MatN } from '../math/matn.js'; import { type SymmetricEigenOptions, type SymmetricEigensystem } from './symmetric-eigen.js'; export interface GraphLaplacianDiagnostics { readonly inputEdgeCount: number; readonly uniqueEdgeCount: number; readonly duplicateEdgeCount: number; } /** The unweighted combinatorial Laplacian of a CellComplex 1-skeleton. */ export interface GraphLaplacianOperator { readonly vertexCount: number; /** Canonical undirected pairs [minVertex, maxVertex], sorted lexicographically. */ readonly edges: Uint32Array; readonly degrees: Uint32Array; /** Canonical connected-component IDs, ordered by each component's first vertex. */ readonly componentOfVertex: Uint32Array; readonly componentCount: number; readonly diagnostics: GraphLaplacianDiagnostics; /** Applies Lx in O(V + E), supporting out === values. */ apply(values: ArrayLike, out?: Float64Array): Float64Array; /** Materializes the exact-integer Float64 reference matrix D - A. */ toDense(): MatN; } export interface EigenvalueCluster { readonly start: number; readonly multiplicity: number; readonly value: number; readonly minimum: number; readonly maximum: number; } export interface GraphLaplacianModesOptions extends SymmetricEigenOptions { /** Relative gap used to group adjacent numerical eigenvalues. */ clusterTolerance?: number; } export interface GraphLaplacianModes { readonly operator: GraphLaplacianOperator; readonly eigensystem: SymmetricEigensystem; readonly clusters: readonly EigenvalueCluster[]; } /** * Builds L = D - A from all 1-cell groups in a CellComplex. * * The 1-skeleton is interpreted as a simple undirected graph. Repeated and * reversed edges are deduplicated and reported; self-loops and non-edge * 1-cell arities are rejected because their Laplacian semantics are not * implicit in this contract. */ export declare function graphLaplacian(complex: CellComplex): GraphLaplacianOperator; /** Computes the complete dense modal basis of a CellComplex 1-skeleton. */ export declare function graphLaplacianModes(complex: CellComplex, options?: GraphLaplacianModesOptions): GraphLaplacianModes; /** Returns the basis-independent orthogonal projector for one mode cluster. */ export declare function eigenspaceProjector(eigensystem: SymmetricEigensystem, cluster: EigenvalueCluster): MatN; //# sourceMappingURL=graph-laplacian.d.ts.map