/**
 * Nice3DTexturePainter.tsx — Paint textures directly on 3D models.
 *
 * Features:
 * - WebGL-based 3D model viewer
 * - UV unwrap visualization
 * - Brush painting on UV texture
 * - Texture baking and export (PNG, JPEG, WebP)
 * - Layer support for non-destructive painting
 * - Color picker and brush settings
 */
import React from "react";
export interface TexturePainterProps {
    /** Initial texture image URL. */
    textureUrl?: string;
    /** Texture width. Default: 1024. */
    textureWidth?: number;
    /** Texture height. Default: 1024. */
    textureHeight?: number;
    /** Called when texture is saved. */
    onSave?: (blob: Blob) => void;
    /** CSS class. */
    className?: string;
}
export interface TexturePainterApi {
    brush: BrushSettings;
    setBrush: React.Dispatch<React.SetStateAction<BrushSettings>>;
    layers: TextureLayer[];
    addLayer: (name: string) => void;
    removeLayer: (id: string) => void;
    activeLayerId: string | null;
    setActiveLayerId: React.Dispatch<React.SetStateAction<string | null>>;
    tool: "brush" | "eraser" | "eyedropper" | "fill";
    setTool: React.Dispatch<React.SetStateAction<"brush" | "eraser" | "eyedropper" | "fill">>;
    paintStroke: (x: number, y: number) => void;
    flattenToBlob: () => Promise<Blob | null>;
}
export interface BrushSettings {
    size: number;
    opacity: number;
    hardness: number;
    color: string;
    blendMode: "normal" | "multiply" | "screen" | "overlay";
}
export interface TextureLayer {
    id: string;
    name: string;
    visible: boolean;
    opacity: number;
    canvas: HTMLCanvasElement;
}
export declare function useTexturePainter(width: number, height: number): TexturePainterApi;
/** 3D texture painting tool with UV-space brush painting. */
export declare const Nice3DTexturePainter: React.FC<TexturePainterProps>;
export default Nice3DTexturePainter;
