import { Device, RenderPass, Texture } from '@luma.gl/core';
import type { ShaderPass } from '@luma.gl/shadertools';
import { ShaderInputs } from "../shader-inputs.js";
import { DynamicTexture } from "../dynamic-texture/dynamic-texture.js";
import { ClipSpace } from "../models/clip-space.js";
import { SwapFramebuffers } from "../compute/swap.js";
import { BackgroundTextureModel } from "../models/billboard-texture-model.js";
type ShaderSubPass = NonNullable<ShaderPass['passes']>[0];
/** Props for ShaderPassRenderer */
export type ShaderPassRendererProps = {
    /** List of ShaderPasses to apply to the sourceTexture */
    shaderPasses: ShaderPass[];
    /** Optional typed ShaderInputs object for setting uniforms */
    shaderInputs?: ShaderInputs;
};
/** A pass that renders a given texture into screen space */
export declare class ShaderPassRenderer {
    device: Device;
    shaderInputs: ShaderInputs;
    passRenderers: PassRenderer[];
    swapFramebuffers: SwapFramebuffers;
    textureModel: BackgroundTextureModel;
    constructor(device: Device, props: ShaderPassRendererProps);
    /** Destroys resources created by this ShaderPassRenderer */
    destroy(): void;
    resize(size?: [width: number, height: number]): void;
    renderToScreen(options: {
        sourceTexture: DynamicTexture;
        uniforms?: any;
        bindings?: any;
    }): boolean;
    /** Runs the shaderPasses in sequence on the sourceTexture and returns a texture with the results.
     * @returns null if the the sourceTexture has not yet been loaded
     */
    renderToTexture(options: {
        sourceTexture: DynamicTexture;
        uniforms?: any;
        bindings?: any;
    }): Texture | null;
}
/** renders one ShaderPass */
declare class PassRenderer {
    shaderPass: ShaderPass;
    subPassRenderers: SubPassRenderer[];
    constructor(device: Device, shaderPass: ShaderPass, props?: {});
    destroy(): void;
}
/** Renders one subpass of a ShaderPass */
declare class SubPassRenderer {
    model: ClipSpace;
    shaderPass: ShaderPass;
    subPass: ShaderSubPass;
    constructor(device: Device, shaderPass: ShaderPass, subPass: ShaderSubPass);
    destroy(): void;
    render(options: {
        renderPass: RenderPass;
        bindings: any;
    }): void;
}
export {};
//# sourceMappingURL=shader-pass-renderer.d.ts.map