/// <reference types="dist" />
import { Pipeline } from "../pipelines/Pipeline";
import { IndexBuffer } from "../pipelines/resources/IndexBuffer";
import { Bindgroups } from "./Bindgroups";
import { ImageTexture } from "./resources/ImageTexture";
import { ImageTextureIO } from "./resources/ImageTextureIO";
import { IShaderResource } from "./resources/IShaderResource";
import { VertexBuffer } from "./resources/VertexBuffer";
import { VertexBufferIO } from "./resources/VertexBufferIO";
export declare class Bindgroup {
    bindgroupId: number;
    parent: Bindgroups;
    entries: any[];
    elements: {
        name: string;
        resource: IShaderResource;
    }[];
    mustRefreshBindgroup: boolean;
    applyDraw: boolean;
    protected _layout: GPUBindGroupLayout;
    protected _group: GPUBindGroup;
    name: string;
    protected _pingPongBindgroup: Bindgroup;
    vertexBufferIO: VertexBufferIO;
    textureIO: ImageTextureIO;
    resourcesIOs: (VertexBufferIO | ImageTextureIO)[];
    constructor(descriptor?: any | any[]);
    add(name: string, resource: IShaderResource): IShaderResource;
    set(name: string, resource: IShaderResource): void;
    remove(name: string): void;
    getResourceName(resource: IShaderResource): string;
    get(name: string): IShaderResource;
    initFromObject(descriptor: any | any[]): IShaderResource[];
    clearAfterDeviceLost(): void;
    protected deviceId: number;
    protected buildLayout(): void;
    private setupApplyCompleted;
    build(): GPUBindGroup;
    protected indexBuffer: IndexBuffer;
    protected vertexBuffers: VertexBuffer[];
    protected vertexBufferReferenceByName: any;
    protected elementByName: any;
    private setupApply;
    setupDrawCompleted: boolean;
    setupDraw(force?: boolean): void;
    apply(renderPass: GPURenderPassEncoder | GPUComputePassEncoder): void;
    protected instances: any[];
    protected instanceResourcesArray: any[];
    get useInstances(): boolean;
    createInstance(instanceResources: any): void;
    protected _createInstance(resourcePerInstance: any): void;
    handleComputePipelineResourceIOs(): void;
    private swapElements;
    createPingPongBindgroup(resource1: IShaderResource[], resource2: IShaderResource[]): Bindgroup;
    protected renderPipelineimageIO: ImageTexture;
    protected renderPipelineBufferIO: VertexBuffer;
    handleRenderPipelineResourceIOs(): void;
    protected ioGroups: Bindgroup[];
    protected io_index: number;
    debug: any;
    get pingPongBindgroup(): Bindgroup;
    get layout(): GPUBindGroupLayout;
    get group(): GPUBindGroup;
    update(pipeline: Pipeline): void;
    destroy(): void;
}
