ts-quantum
Version:
TypeScript library for quantum mechanics calculations and utilities
75 lines (74 loc) • 2.16 kB
TypeScript
/**
* Type definitions for quantum graph module
*/
import { QuantumObject, IStateVector } from '../core/types';
import { IGraph } from '../../../graph-core/src/core/types';
/**
* Interface for quantum-labeled graphs
* Extends IGraph with quantum object labeling capabilities
*/
export interface IQuantumGraph extends IGraph {
setVertexQuantumObject(nodeId: string, obj: QuantumObject): void;
getVertexQuantumObject(nodeId: string): QuantumObject | undefined;
setEdgeQuantumObject(edgeId: string, obj: QuantumObject): void;
getEdgeQuantumObject(edgeId: string): QuantumObject | undefined;
hasVertexQuantumObject(nodeId: string): boolean;
hasEdgeQuantumObject(edgeId: string): boolean;
clearVertexQuantumObject(nodeId: string): void;
clearEdgeQuantumObject(edgeId: string): void;
}
/**
* Result type for quantum graph analysis
*/
export interface QuantumGraphAnalysis {
totalNodes: number;
totalEdges: number;
labeledNodes: number;
labeledEdges: number;
nodeTypes: {
states: number;
operators: number;
};
edgeTypes: {
states: number;
operators: number;
};
}
/**
* Options for quantum graph traversal
*/
export interface QuantumTraversalOptions {
startVertex: string;
applyOperators?: boolean;
maxDepth?: number;
direction?: 'forward' | 'backward' | 'both';
}
/**
* Result of quantum traversal operation
*/
export interface QuantumTraversalResult {
path: string[];
finalState?: QuantumObject;
operations: Array<{
edge: string;
operator?: QuantumObject;
result?: QuantumObject;
}>;
}
/**
* Interface for composite quantum manager
*/
export interface ICompositeQuantumManager {
setComposite(elementIds: string[], obj: QuantumObject): void;
getComposite(elementIds: string[]): QuantumObject | undefined;
getCompositeForElement(elementId: string): QuantumObject | undefined;
}
/**
* Result of quantum measurement operation
*/
export interface MeasurementResult {
outcome: number;
probability: number;
postMeasurementState: IStateVector;
measuredSubsystem: string[];
}