/// <reference types="dist" />
import UUID from './objid';
import { Camera } from './../renderer/camera';
import { PRIMITIVE_TYPE, TYPE_SIZE } from './../renderer/constants';
import { vec3 } from 'gl-matrix';
export declare abstract class AbstractShape extends UUID {
    abstract draw(passEncoder: GPURenderPassEncoder, camera: Camera): void;
}
export declare class BaseShape extends AbstractShape {
    device: GPUDevice;
    protected vertModule: GPUShaderModule;
    protected fragModule: GPUShaderModule;
    protected pipeline: GPURenderPipeline;
    protected primitiveType: GPUPrimitiveTopology;
    protected isPrimtiveTypeStrip: boolean;
    protected vertexSize: number;
    protected elementCount: number;
    protected rotX: number;
    protected rotY: number;
    protected rotZ: number;
    protected rotation: vec3;
    protected translate: vec3;
    protected modelViewProjectionMatrix: Float32Array;
    protected matrixSize: number;
    protected offset: number;
    protected uniformBufferSize: number;
    protected uniformBuffer: GPUBuffer;
    private posOffset;
    private colOffset;
    constructor(primitiveType: PRIMITIVE_TYPE, typeInfo: TYPE_SIZE[]);
    initialize(): void;
    createDefaultPipeline(vertShaderCode: any, fragShaderCode: any): void;
    draw(passEncoder: GPURenderPassEncoder, camera: Camera): void;
}
