import * as tf from '@tensorflow/tfjs';
type TilerOptions = {
    tileSize?: number;
    overlap?: number;
    batchSize?: number;
    debugging?: boolean;
    srgb?: boolean;
};
export declare class GPUTensorTiler {
    private model;
    private tileSize;
    private overlap;
    private batchSize;
    private blendingMasks;
    private debugging;
    private aborting;
    srgb: boolean;
    timers: {
        [key: string]: number;
    };
    stats: {
        [key: string]: number;
    };
    constructor(model: tf.LayersModel, options?: TilerOptions);
    private calculateBatchSize;
    private getTileDims;
    private logMemoryUsage;
    processLargeTensor(rawInput: tf.Tensor4D, statusCallback?: (progress: number) => void): Promise<tf.Tensor4D>;
    private reassembleTilesWithBlending;
    private getBlendingMask;
    private createImprovedBlendingMask;
    private sigmoidBlend;
    startTimer(name: string): void;
    stopTimer(name: string): void;
    logResults(): void;
    dispose(): void;
    abort(): void;
    sRGBToLinear(inputTensor: tf.Tensor): tf.Tensor4D;
    linearToSRGB(inputTensor: tf.Tensor): tf.Tensor4D;
    addColoredBorder(tile: tf.Tensor4D, borderWidth: number, color: [number, number, number]): tf.Tensor4D;
    visualizeBlendRegions(output: tf.Tensor4D): Promise<tf.Tensor4D>;
    visualizeTiles(tiles: tf.Tensor4D[], stage: 'before' | 'after'): Promise<void>;
    static generateSampleInput(height: number, width: number): tf.Tensor4D;
}
export {};
