import { LineMaterial } from "three/examples/jsm/lines/LineMaterial.js";
import { LineBasicMaterial, MeshStandardMaterial, MeshBasicMaterial, ShaderMaterial, Vector3, Vector2, LineDashedMaterial } from "three";
interface LineMaterialOptions {
    color: string;
    opacity: number;
    vertexColors?: boolean;
}
interface MeshStandardMaterialOptions {
    color: string;
    opacity: number;
}
interface MeshBasicMaterialOptions {
    color: string;
    opacity: number;
    vertexColors?: boolean;
}
interface ShaderMaterialOptions {
    gradualColor: string[];
    center: Vector3;
    maxValue: number;
    opacity: number;
    direction: Vector3;
    max: Vector3;
    min: Vector3;
}
interface Line2MaterialMapOptions {
    color: string;
    width: number;
    dashed: boolean;
    resolution: Vector2;
    vertexColors?: boolean;
}
export declare class MaterialFactory {
    private static lineMaterialMap;
    private static meshStandardMaterialMap;
    private static meshBasicMaterialMap;
    private static shaderMaterialMap;
    private static line2MaterialMap;
    private static mergeAttributeGraphicMaterial;
    private static mergeAttributeWallMaterial;
    private static mergeAttributeGraphicLineMaterial;
    private static instancedParkingSpaceMaterial;
    static generateLineMaterialKey({ color, opacity }: LineMaterialOptions): string;
    static createLineMaterial({ color, opacity, vertexColors }: LineMaterialOptions): LineBasicMaterial;
    static createMeshStandardMaterial({ color, opacity }: MeshStandardMaterialOptions): MeshStandardMaterial;
    static createMeshBasicMaterial({ color, opacity, vertexColors }: MeshBasicMaterialOptions): MeshBasicMaterial;
    static createShaderMaterial({ gradualColor, center, maxValue, opacity, direction, max, min, }: ShaderMaterialOptions): ShaderMaterial;
    static createLine2MaterialMap({ color, width, dashed, resolution, vertexColors }: Line2MaterialMapOptions): LineMaterial;
    private static lineDashedMaterialMap;
    static createLineDashedMaterial(options: {
        color: string;
        opacity: number;
        dashSize?: number;
        gapSize?: number;
        scale?: number;
    }): LineDashedMaterial;
    static GetMergeAttributeGraphicMaterial(): ShaderMaterial;
    static GetMergeAttributeWallMaterial(): ShaderMaterial;
    static GetMergeAttributeGraphicLineMaterial(): ShaderMaterial;
    static GetInstancedParkingSpaceMaterial(): ShaderMaterial;
    static dispose(): void;
}
export {};
