import { ArxColor, ArxPolygon, ArxPolygonFlags, ArxTextureContainer } from 'arx-convert/types';
import { Object3D, Box3 } from 'three';
import { Polygon, TransparencyType } from './Polygon.js';
import { Settings } from './Settings.js';
import { Vector3 } from './Vector3.js';
export declare const QUADIFY = "quadify";
export declare const DONT_QUADIFY = "don't quadify";
export declare const SHADING_FLAT = "flat";
export declare const SHADING_SMOOTH = "smooth";
export type MeshImportProps = {
    tryToQuadify?: typeof QUADIFY | typeof DONT_QUADIFY;
    shading?: typeof SHADING_FLAT | typeof SHADING_SMOOTH;
    flags?: ArxPolygonFlags;
    /**
     * room id - used when a map has portals, default value is undefined (the Polygon constructor will handle it)
     */
    room?: number;
};
type TextureContainer = ArxTextureContainer & {
    remaining: number;
    maxRemaining: number;
};
export declare class Polygons extends Array<Polygon> {
    cashedBBox: {
        numberOfPolygons: number;
        value: Box3;
    };
    exportTextures(settings: Settings): Promise<Record<string, string>>;
    toArxData(): Promise<{
        polygons: ArxPolygon[];
        textureContainers: ArxTextureContainer[];
    }>;
    countNindices(): Record<string, Record<TransparencyType | "opaque", number>>;
    getTextureContainers(): TextureContainer[];
    empty(): void;
    calculateNormals(): void;
    addThreeJsMesh(threeJsObj: Object3D): void;
    addThreeJsMesh(threeJsObj: Object3D, meshImportProps: MeshImportProps): void;
    addThreeJsMesh(threeJsObj: Object3D, meshImportProps: MeshImportProps, isRoot: false): Polygons;
    getVertexColors(): ArxColor[];
    getBoundingBox(): Box3;
    getCenter(): Vector3;
    getHeight(): number;
    getWidth(): number;
    getDepth(): number;
}
export {};
