/**
 * Dispatch context provided to dynamic dispatch callbacks.
 */
export interface ComputeDispatchContext {
    width: number;
    height: number;
    time: number;
    delta: number;
    workgroupSize: [number, number, number];
}
/**
 * Options for constructing a `ComputePass`.
 */
export interface ComputePassOptions {
    /**
     * Compute shader WGSL source code.
     * Must declare `@compute @workgroup_size(...) fn compute(@builtin(global_invocation_id) ...)`.
     */
    compute: string;
    /**
     * Dispatch workgroup counts.
     * - Static tuple: `[x]`, `[x, y]`, or `[x, y, z]`
     * - `'auto'`: derived from canvas size / workgroup size
     * - Function: dynamic dispatch based on frame context
     */
    dispatch?: [number, number?, number?] | 'auto' | ((ctx: ComputeDispatchContext) => [number, number, number]);
    /**
     * Enables/disables this compute pass.
     */
    enabled?: boolean;
}
/**
 * Compute pass class used within the render graph.
 *
 * Validates compute shader contract, parses workgroup size,
 * and resolves dispatch dimensions. Does **not** manage GPU resources
 * (that responsibility belongs to the renderer).
 */
export declare class ComputePass {
    /**
     * Enables/disables this pass without removing it from graph.
     */
    enabled: boolean;
    /**
     * Discriminant flag for render graph to identify compute passes.
     */
    readonly isCompute: true;
    private compute;
    private workgroupSize;
    private dispatch;
    constructor(options: ComputePassOptions);
    /**
     * Replaces current compute shader and updates workgroup size.
     *
     * @param compute - New compute shader WGSL source.
     * @throws {Error} When shader does not match the compute contract.
     */
    setCompute(compute: string): void;
    /**
     * Updates dispatch strategy.
     */
    setDispatch(dispatch: ComputePassOptions['dispatch']): void;
    /**
     * Returns current compute shader source.
     */
    getCompute(): string;
    /**
     * Returns parsed workgroup size from current compute shader.
     */
    getWorkgroupSize(): [number, number, number];
    /**
     * Resolves dispatch workgroup counts for current frame.
     *
     * @param ctx - Dispatch context with canvas dimensions and timing.
     * @returns Tuple [x, y, z] workgroup counts.
     */
    resolveDispatch(ctx: ComputeDispatchContext): [number, number, number];
    /**
     * Releases resources (no-op since GPU resource lifecycle is renderer-managed).
     */
    dispose(): void;
}
//# sourceMappingURL=ComputePass.d.ts.map