import { Light } from "@aura3d/scene";
import { type ForwardShadowMapOptions, type RenderItem } from "./ForwardPass";
import { type RenderDeviceDiagnostics, type RenderTarget } from "./RenderDevice";
import { type RenderPassContext } from "./RenderPass";
import { ShadowMap } from "./ShadowMap";
import { type ShaderLibrary } from "./ShaderLibrary";
export interface ShadowPassOptions {
    readonly light: Light | null;
    readonly casters: readonly RenderItem[];
    readonly shadowMap?: ShadowMap;
    readonly shaderLibrary?: ShaderLibrary;
    readonly viewProjectionMatrix?: Float32Array | readonly number[];
}
export interface ShadowPassResult {
    readonly rendered: boolean;
    readonly reason: ShadowPassReason;
    readonly casterCount: number;
    readonly skippedTransparentCasters: number;
    readonly targetBacked: boolean;
    readonly shadowTextureLabel?: string;
    readonly shadowTextureKind?: ShadowTextureKind;
    readonly diagnostics: RenderDeviceDiagnostics;
}
export type ShadowPassReason = "rendered" | "no-light" | "light-disabled" | "not-shadow-casting" | "no-casters" | "no-opaque-casters";
export type ShadowTextureKind = "depth-texture" | "encoded-color-depth";
export declare class ShadowPass {
    private readonly options;
    readonly shadowMap: ShadowMap;
    private lastResult;
    private renderTarget;
    constructor(options: ShadowPassOptions);
    execute(context: RenderPassContext): ShadowPassResult;
    private executeWithinFrame;
    getLastResult(): ShadowPassResult | null;
    getRenderTarget(): RenderTarget | null;
    getForwardShadowMap(options: Omit<ForwardShadowMapOptions, "texture" | "bias" | "filterKernel"> & {
        readonly bias?: number;
        readonly filterKernel?: ForwardShadowMapOptions["filterKernel"];
    }): ForwardShadowMapOptions | null;
    dispose(): void;
    private ensureRenderTarget;
    private getSkipReason;
}
//# sourceMappingURL=ShadowPass.d.ts.map