import { RawShaderMaterial, IUniform } from 'three';
import { ClothController } from '../ClothController';
import { IUniformN, IUniformV2, IUniformTexture, IUniformV3 } from '../../../engine/nodes/utils/code/gl/Uniforms';
type RawMaterialUniforms = {
    [uniform: string]: IUniform;
};
interface CopyUniforms extends RawMaterialUniforms {
    order: IUniformN;
    tSize: IUniformV2;
    texture: IUniformTexture;
}
interface IntegrationUniforms extends RawMaterialUniforms {
    timeDelta: IUniformN;
    time: IUniformN;
    viscosity: IUniformN;
    spring: IUniformN;
    tSize: IUniformV2;
    order: IUniformN;
    tOriginal: IUniformTexture;
    tPrevious0: IUniformTexture;
    tPrevious1: IUniformTexture;
    tPosition0: IUniformTexture;
    tPosition1: IUniformTexture;
    tViscositySpring: IUniformTexture;
}
interface MouseUniforms extends RawMaterialUniforms {
    time: IUniformN;
    vertex: IUniformN;
    coordinates: IUniformV3;
    order: IUniformN;
    tSize: IUniformV2;
    tOriginal: IUniformTexture;
    tPosition0: IUniformTexture;
    tPosition1: IUniformTexture;
}
interface ConstraintsUniforms extends RawMaterialUniforms {
    time: IUniformN;
    tSize: IUniformV2;
    order: IUniformN;
    constraintInfluence: IUniformN;
    tPosition0: IUniformTexture;
    tPosition1: IUniformTexture;
    tAdjacentsA: IUniformTexture;
    tAdjacentsB: IUniformTexture;
    tDistancesA: IUniformTexture;
    tDistancesB: IUniformTexture;
    secondaryMotionMult: IUniformN;
}
interface NormalsUniforms extends RawMaterialUniforms {
    tSize: IUniformV2;
    tPosition0: IUniformTexture;
    tPosition1: IUniformTexture;
    tAdjacentsA: IUniformTexture;
    tAdjacentsB: IUniformTexture;
}
interface CopyMaterial extends RawShaderMaterial {
    uniforms: CopyUniforms;
}
interface IntegrationMaterial extends RawShaderMaterial {
    uniforms: IntegrationUniforms;
}
interface MouseMaterial extends RawShaderMaterial {
    uniforms: MouseUniforms;
}
interface ConstraintsMaterial extends RawShaderMaterial {
    uniforms: ConstraintsUniforms;
}
interface NormalsMaterial extends RawShaderMaterial {
    uniforms: NormalsUniforms;
}
export declare class ClothMaterialController {
    readonly mainController: ClothController;
    readonly copyShader: CopyMaterial;
    readonly integrateShader: IntegrationMaterial;
    readonly mouseShader: MouseMaterial;
    readonly constraintsShader: ConstraintsMaterial;
    readonly normalsShader: NormalsMaterial;
    constructor(mainController: ClothController);
}
export {};
