import type { CubeValidator } from './CubeValidator'; import type { CubeEvaluator } from './CubeEvaluator'; import type { CubeDefinition, JoinDefinition } from './CubeSymbols'; import type { ErrorReporter } from './ErrorReporter'; import { CompilerInterface } from './PrepareCompiler'; export type JoinEdge = { join: JoinDefinition; from: string; to: string; originalFrom: string; originalTo: string; }; type JoinTreeJoins = JoinEdge[]; type JoinTree = { root: string; joins: JoinTreeJoins; }; export type FinishedJoinTree = JoinTree & { multiplicationFactor: Record; }; export type JoinHint = string | string[]; export type JoinHints = JoinHint[]; export declare class JoinGraph implements CompilerInterface { private readonly cubeValidator; private readonly cubeEvaluator; private nodes; private undirectedNodes; private edges; private builtJoins; private graph; private cachedConnectedComponents; constructor(cubeValidator: CubeValidator, cubeEvaluator: CubeEvaluator); compile(cubes: unknown, errorReporter: ErrorReporter): void; protected buildJoinEdges(cube: CubeDefinition, errorReporter: ErrorReporter): Array<[string, JoinEdge]>; protected buildJoinNode(cube: CubeDefinition): Record; buildJoin(cubesToJoin: JoinHints): FinishedJoinTree | null; protected cubeFromPath(cubePath: any): any; protected buildJoinTreeForRoot(root: JoinHint, cubesToJoin: JoinHints): JoinTree | null; protected findMultiplicationFactorFor(cube: string, joins: JoinTreeJoins): boolean; protected checkIfCubeMultiplied(cube: string, join: JoinEdge): boolean; protected joinsByPath(path: string[]): JoinEdge[]; connectedComponents(): Record; protected findConnectedComponent(componentId: number, node: string, components: Record): void; } export {}; //# sourceMappingURL=JoinGraph.d.ts.map