import { ChannelSize, UniformMap, UniformType, UniformValue, UniformValueObj } from "../utils/SquareDataTexture";
type UniformSchema = {
    [x: string]: UniformType;
};
type UniformSchemaShader = {
    vertex?: UniformSchema;
    fragment?: UniformSchema;
};
type UniformSchemaResult = {
    channels: ChannelSize;
    pixelsPerInstance: number;
    uniformMap: UniformMap;
    fetchInFragmentShader: boolean;
};
declare module "../InstancedMesh2" {
    interface InstancedMesh2 {
        /**
         * Retrieves a uniform value for a specific instance.
         * @param id The index of the instance.
         * @param name The name of the uniform.
         * @param target Optional target object to store the uniform value.
         * @returns The uniform value for the specified instance.
         */
        getUniformAt(id: number, name: string, target?: UniformValueObj): UniformValue;
        /**
         * Sets a uniform value for a specific instance.
         * @param id The index of the instance.
         * @param name The name of the uniform.
         * @param value The value to set for the uniform.
         */
        setUniformAt(id: number, name: string, value: UniformValue): void;
        /**
         * Initializes per-instance uniforms using a schema.
         * @param schema The schema defining the uniforms.
         */
        initUniformsPerInstance(schema: UniformSchemaShader): void;
        /** @internal */ getUniformSchemaResult(schema: UniformSchemaShader): UniformSchemaResult;
        /** @internal */ getUniformOffset(size: number, tempOffset: number[]): number;
        /** @internal */ getUniformSize(type: UniformType): number;
    }
}
export {};
