import { QuadHalfEdge } from './QuadHalfEdge';
import { QuadNode } from './QuadNode';
import { Number4 } from '../../../../../types/GlobalTypes';
import { NeighbourIndex } from './QuadGraphCommon';
import { PrimitiveGraph } from '../../../entities/primitive/PrimitiveGraph';
export interface NeighbourData {
    quadNode?: QuadNode | null;
    neighbourIndex: NeighbourIndex | null;
}
export declare class QuadGraph extends PrimitiveGraph {
    protected _quadsById: Map<number, QuadNode>;
    protected _edgesByIndex: Map<number, Map<number, QuadHalfEdge>>;
    protected _halfEdgeByHalfEdge: Map<QuadHalfEdge, QuadHalfEdge | undefined>;
    protected _halfEdgeByQuadId: Map<number, Map<number, QuadHalfEdge>>;
    protected _quadIdsByPointIndex: Map<number, Set<number>>;
    addQuad(quadId: number, quadIndices: Number4): QuadNode;
    quadNode(quadId: number): QuadNode | undefined;
    quadIdsByPointIndex(pointIndex: number): Set<number> | undefined;
    neighbourData(quadId: number, sideIndex: NeighbourIndex, target: NeighbourData): void;
    neighbourIdsSharingEdge(quadId: number, target: number[]): void;
    neighbourIdsSharingPoint(quadId: number, target: number[]): void;
    neighbourIndex(quadId: number, neighbourIndex: number, withSharedEdge: boolean): number;
    neighboursCount(quadId: number, withSharedEdge: boolean): number;
}
