import type { Bindings, BindingsByGroup } from "../adapter/types/shader-layout.js";
import type { Device } from "../adapter/device.js";
import type { ComputePipeline } from "../adapter/resources/compute-pipeline.js";
import type { RenderPipeline } from "../adapter/resources/render-pipeline.js";
type AnyPipeline = RenderPipeline | ComputePipeline;
type BindGroupCacheKeys = Partial<Record<number, object>>;
type BindGroupMap = Partial<Record<number, unknown>>;
export declare class BindGroupFactory {
    readonly device: Device;
    private readonly _layoutCacheByPipeline;
    private readonly _bindGroupCacheByLayout;
    constructor(device: Device);
    getBindGroups(pipeline: AnyPipeline, bindings?: Bindings | BindingsByGroup, bindGroupCacheKeys?: BindGroupCacheKeys): BindGroupMap;
    private _getBindGroupLayout;
    private _getEmptyBindGroup;
    private _getLayoutBindGroupCache;
}
export declare function _getDefaultBindGroupFactory(device: Device): BindGroupFactory;
export {};
//# sourceMappingURL=bind-group-factory.d.ts.map