import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * RenderProgram that provides splitting based on depth, into a RenderStack
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { RenderableFace, RenderEvaluationContext, RenderPlanar, RenderProgram, SerializedRenderProgram } from '../imports.js';
import Matrix4 from '../../../dot/js/Matrix4.js';
import Vector4 from '../../../dot/js/Vector4.js';
import Matrix3 from '../../../dot/js/Matrix3.js';
export default class RenderDepthSort extends RenderProgram {
    readonly items: RenderPlanar[];
    constructor(items: RenderPlanar[]);
    getName(): string;
    withChildren(children: RenderProgram[]): RenderDepthSort;
    transformed(transform: Matrix3): RenderProgram;
    protected getSimplified(children: RenderProgram[]): RenderProgram | null;
    evaluate(context: RenderEvaluationContext): Vector4;
    isSplittable(): boolean;
    /**
     * The heavy lifting of figuring out what combinations of "orders" of items are possible (front-to-back), and
     * splitting into each possible non-zero-area combination.
     */
    split(face: RenderableFace): RenderableFace[];
    serialize(): SerializedRenderDepthSort;
    static deserialize(obj: SerializedRenderDepthSort): RenderDepthSort;
    static getProjectionMatrix(near: number, far: number, minX: number, minY: number, maxX: number, maxY: number): Matrix4;
}
export type SerializedRenderDepthSort = {
    type: 'RenderDepthSort';
    items: {
        program: SerializedRenderProgram;
        pointA: number[];
        pointB: number[];
        pointC: number[];
    }[];
};
//# sourceMappingURL=RenderDepthSort.d.ts.map