import { ClothMaterialController } from './modules/ClothMaterialsController';
import { ClothGeometryInitController } from './modules/ClothGeometryInitController';
import { ClothFBOController, ClothMaterialUniformConfigRef } from './modules/ClothFBOController';
import { WebGLRenderer, Mesh, Vector3, ShaderMaterial, Texture } from 'three';
import { PolyScene } from '../../engine/scene/PolyScene';
import type { ClothSolverSopNode } from '../../engine/nodes/sop/ClothSolver';
import { TextureAllocationsController } from '../../engine/nodes/gl/code/utils/TextureAllocationsController';
export declare class ClothController {
    scene: PolyScene;
    private _node;
    clothObject: Mesh;
    readonly materials: ClothMaterialController;
    readonly geometryInit: ClothGeometryInitController;
    private _persistedTextureAllocationsController;
    readonly fbo: ClothFBOController;
    stepsCount: number;
    constraintInfluence: number;
    viscosity: number;
    spring: number;
    constructor(scene: PolyScene, _node: ClothSolverSopNode, clothObject: Mesh);
    dispose(): void;
    setPersistedTextureAllocationController(controller: TextureAllocationsController): void;
    integrationFragmentShader(): string | undefined;
    textureAllocationsController(): TextureAllocationsController | undefined;
    assignReadonlyTextures(material: ShaderMaterial, texturesByName: Record<string, Texture>): void;
    addMaterialUniforms(material: ShaderMaterial): void;
    init(renderer: WebGLRenderer): void;
    update(config: ClothMaterialUniformConfigRef): void;
    private _selectedVertexIndex;
    private _selectedVertexPosition;
    private _setSelectedVertexIndex;
    createConstraint(index: number): void;
    deleteConstraint(): void;
    selectedVertexIndex(): number;
    setConstraintPosition(position: Vector3): void;
    constraintPosition(target: Vector3): void;
}
