import { ObjectRenderer, Renderer } from "@pixi/core";
import { MaterialRenderPass } from "./material-render-pass";
import { Mesh3D } from "../mesh/mesh";
import { ShadowRenderPass } from "../shadow/shadow-render-pass";
import { Model } from "../model";
import { ShadowCastingLight } from "../shadow/shadow-casting-light";
import { RenderPass } from "./render-pass";
import { SpriteBatchRenderer } from "../sprite/sprite-batch-renderer";
import { ProjectionSprite } from "../sprite/projection-sprite";
/**
 * The standard pipeline renders meshes using the set render passes. It's
 * created and used by default.
 */
export declare class StandardPipeline extends ObjectRenderer {
    renderer: Renderer;
    protected _spriteRenderer: SpriteBatchRenderer;
    protected _meshes: Mesh3D[];
    protected _sprites: ProjectionSprite[];
    /** The pass used for rendering materials. */
    materialPass: MaterialRenderPass;
    /** The pass used for rendering shadows. */
    shadowPass: ShadowRenderPass;
    /** The array of render passes. Each mesh will be rendered with these passes (if it has been enabled on that mesh). */
    renderPasses: RenderPass[];
    /**
     * Creates a new standard pipeline using the specified renderer.
     * @param renderer The renderer to use.
     */
    constructor(renderer: Renderer);
    /**
     * Adds an object to be rendered.
     * @param object The object to render.
     */
    render(object: Mesh3D | ProjectionSprite): void;
    /**
     * Renders the added meshes using the specified render passes.
     */
    flush(): void;
    /**
     * Sorts the meshes by rendering order.
     */
    sort(): void;
    /**
     * Enables shadows for the specified object. Adds the shadow render pass to
     * the specified object and enables the standard material to use the casting
     * light.
     * @param object The mesh or model to enable shadows for.
     * @param light The shadow casting light to associate with the
     * object when using the standard material.
     */
    enableShadows(object: Mesh3D | Model, light?: ShadowCastingLight): void;
    /**
     * Disables shadows for the specified object.
     * @param object The mesh or model to disable shadows for.
     */
    disableShadows(object: Mesh3D | Model): void;
}
