/**
 * Represents how various materials are mixed across the terrain
 */
export class SplatMapping {
    /**
     * How large is the map
     * @type {Vector2}
     */
    size: Vector2;
    /**
     * number of layers
     * @type {number}
     */
    depth: number;
    /**
     * Weights of materials identified by material texture. Larger weight causes material to appear more prominently
     * @type {DataTexture2DArray}
     */
    weightTexture: DataTexture2DArray;
    toJSON(): {
        size: {
            x: number;
            y: number;
        };
        depth: number;
        data: string;
    };
    fromJSON({ size, depth, data }?: {
        size?: {
            x: number;
            y: number;
        };
        depth?: number;
        data: any;
    }): void;
    /**
     *
     * @param {Sampler2D} source
     * @param {number} index
     * @param {number} channel
     */
    writeLayerFromSampler(source: Sampler2D, index: number, channel?: number): void;
    /**
     *
     * @param {Sampler2D} destination
     * @param {number} index
     * @param {number} channel
     */
    readLayerToSampler(destination: Sampler2D, index: number, channel?: number): void;
    /**
     *
     * @param {Uint8Array} source
     * @param {number} destinationX
     * @param {number} destinationY
     * @param {number} sourceWidth
     * @param {number} sourceHeight
     */
    writeWeightData(source: Uint8Array, destinationX: number, destinationY: number, sourceWidth: number, sourceHeight: number): void;
    /**
     *
     * @param {Uint8Array} destination
     * @param {number} sourceX
     * @param {number} sourceY
     * @param {number} width
     * @param {number} height
     */
    readWeightData(destination: Uint8Array, sourceX: number, sourceY: number, width: number, height: number): void;
    /**
     *
     * @param {number} u
     * @param {number} v
     * @param {number} materialIndex
     * @returns {number} between 0 and 255
     */
    sampleWeight(u: number, v: number, materialIndex: number): number;
    /**
     *
     * @param {number} index
     * @returns {Sampler2D}
     */
    getLayerWeightSampler(index: number): Sampler2D;
    /**
     * @returns {Uint8ClampedArray|Uint8Array}
     */
    get weightData(): Uint8Array | Uint8ClampedArray;
    /**
     * @deprecated
     * @returns {Uint8ClampedArray|Uint8Array}
     */
    get materialData(): Uint8Array | Uint8ClampedArray;
    /**
     * @deprecated
     * @return {Sampler2D}
     */
    get materialSampler(): Sampler2D;
    /**
     * Computes a making map, where each texel of each layer is given a rank based on it's weight relative to other layers
     * @param {Uint8Array} result
     * @returns {Task}
     */
    computeWeightRankingMap(result: Uint8Array): Task;
    dispose(): void;
    /**
     * Cut a specified layer, depth will be reduced by 1
     * @param {number} index
     * @returns {boolean}
     */
    removeWeightLayer(index: number): boolean;
    /**
     *
     * @param {number} layer_index
     * @param {number} value
     */
    fillLayerWeights(layer_index: number, value: number): void;
    addWeightLayer(): void;
    /**
     *
     * @param {number} width
     * @param {number} height
     * @param {number} depth
     * @param {boolean} [keep_data]
     */
    resize(width: number, height: number, depth: number, keep_data?: boolean): void;
}
import Vector2 from "../../../../../core/geom/Vector2.js";
import { DataTexture2DArray } from "three";
import { Sampler2D } from "../../../../graphics/texture/sampler/Sampler2D.js";
//# sourceMappingURL=SplatMapping.d.ts.map