export interface Node { key: string, start: number, end: number, neighbours: { [key: string]: Node }, cluster: Cluster | null, position: number | null, biggestGroupSize: number, data: T, isLast: boolean | null, } export interface Cluster { nodes: { [key: string]: Node }, width: number, maxGroupSize: number, } export function createCluster(): Cluster { return { nodes: {}, width: 0, maxGroupSize: 1, }; } export function createNode(key: any, start: any, end: any, event: T): Node { return { key, start, end, neighbours: {}, cluster: null, position: null, biggestGroupSize: 1, data: event, isLast: null, }; }