import { Object3D, ExtrudeGeometry, Mesh, MeshBasicMaterial, Raycaster, Object3DEventMap, Vector3, BufferGeometry, LineBasicMaterial, LineSegments, ShaderMaterial, LineDashedMaterial } from "three";
import { GraphicOptions } from "src/types";
import { Context } from "../context/context";
export type GraphicOptionsParam = Partial<GraphicOptions>;
export type GraphicEventMap = {
    [K in keyof GraphicOptions as `change-${K}`]: {
        value: GraphicOptions[K];
    };
} & Object3DEventMap;
export declare const defaultGraphicOptions: GraphicOptions;
export declare class Graphic extends Object3D<GraphicEventMap> {
    private context;
    geometry: ExtrudeGeometry;
    material: MeshBasicMaterial | MeshBasicMaterial[] | ShaderMaterial[] | ShaderMaterial;
    mesh: Mesh;
    line: LineSegments | null;
    lineMaterial?: LineBasicMaterial | LineDashedMaterial;
    lineGeometry?: BufferGeometry;
    options: GraphicOptions;
    originOptions: {
        fillOpacity: number;
        strokeOpacity: number;
    };
    constructor(context: Context, options: GraphicOptionsParam);
    getCenter(): Vector3;
    getSize(): Vector3;
    getPosition(): Vector3;
    init(): void;
    initDoor(): void;
    initGeometry(): ExtrudeGeometry;
    initSingleMaterial(): MeshBasicMaterial | MeshBasicMaterial[];
    getMaxAndMin(pos: Vector3, dir: Vector3): {
        max: Vector3;
        min: Vector3;
    };
    initGradualMaterial(): ShaderMaterial | ShaderMaterial[];
    initMaterial(): MeshBasicMaterial | ShaderMaterial | MeshBasicMaterial[] | ShaderMaterial[];
    initLineMaterial(): LineBasicMaterial;
    initMesh(): void;
    getBorderPoints(): Vector3[];
    initLineGeometry(): void;
    createBorder(): LineSegments<BufferGeometry<import("three").NormalBufferAttributes>, LineBasicMaterial | LineDashedMaterial, Object3DEventMap>;
    setOpacity(opacity: number, force?: boolean): void;
    raycast(raycaster: Raycaster): false | {
        position: Vector3;
        distance: number;
    };
    dispose(): void;
}
