import { WFCTileSide } from './WFCCommon';
import { Object3D } from 'three';
type TraverseRulesCallback = (id0: string, id1: string, side0: WFCTileSide, side1: WFCTileSide) => void;
type TraverseUnconnectedSidesCallback = (side: WFCTileSide[]) => void;
interface WFCTilesCollectionOptions {
    tileAndRuleObjects: Object3D[];
}
export declare class WFCTilesCollection {
    private _tiles;
    private _tilesById;
    private _rulesByTileId;
    private _errorTileObject;
    private _unresolvedTileObject;
    constructor(options: WFCTilesCollectionOptions);
    tiles(): Object3D<import("three").Object3DEventMap>[];
    tile(tileId: string): Object3D<import("three").Object3DEventMap> | undefined;
    errorTile(): Object3D<import("three").Object3DEventMap> | null;
    unresolvedTile(): Object3D<import("three").Object3DEventMap> | null;
    traverseRules(id0: string, id1: string, callback: TraverseRulesCallback): void;
    traverseUnconnectedSides(id: string, callback: TraverseUnconnectedSidesCallback): void;
    allowedTileConfig(id0: string, side0: WFCTileSide, id1: string, side1: WFCTileSide): boolean;
}
export {};
