import type { RenderPipelineProps, ComputePipelineProps } from '@luma.gl/core';
import { Device, RenderPipeline, ComputePipeline } from '@luma.gl/core';
export type PipelineFactoryProps = RenderPipelineProps;
/**
 * Efficiently creates / caches pipelines
 */
export declare class PipelineFactory {
    static defaultProps: Required<PipelineFactoryProps>;
    /** Get the singleton default pipeline factory for the specified device */
    static getDefaultPipelineFactory(device: Device): PipelineFactory;
    readonly device: Device;
    readonly destroyPolicy: 'unused' | 'never';
    private _hashCounter;
    private readonly _hashes;
    private readonly _renderPipelineCache;
    private readonly _computePipelineCache;
    constructor(device: Device);
    /** Return a RenderPipeline matching props. Reuses a similar pipeline if already created. */
    createRenderPipeline(props: RenderPipelineProps): RenderPipeline;
    createComputePipeline(props: ComputePipelineProps): ComputePipeline;
    release(pipeline: RenderPipeline | ComputePipeline): void;
    private _hashComputePipeline;
    /** Calculate a hash based on all the inputs for a render pipeline */
    private _hashRenderPipeline;
    private _getHash;
}
//# sourceMappingURL=pipeline-factory.d.ts.map