export type VertexAttributeSemantic = "position" | "normal" | "uv" | "uv1" | "tangent" | "color" | "joints" | "weights";
export type VertexAttributeType = "float32";
export interface VertexAttributeDescriptor {
    readonly semantic: VertexAttributeSemantic;
    readonly components: 1 | 2 | 3 | 4;
    readonly offset: number;
    readonly type?: VertexAttributeType;
    readonly normalized?: boolean;
    readonly shaderLocation?: number;
    readonly shaderName?: string;
}
export declare class VertexAttribute {
    readonly semantic: VertexAttributeSemantic;
    readonly components: 1 | 2 | 3 | 4;
    readonly offset: number;
    readonly type: VertexAttributeType;
    readonly normalized: boolean;
    readonly shaderLocation: number;
    readonly shaderName: string;
    constructor(descriptor: VertexAttributeDescriptor);
    get byteLength(): number;
}
export declare class VertexFormat {
    readonly attributes: readonly VertexAttribute[];
    readonly stride: number;
    constructor(attributes: readonly VertexAttributeDescriptor[], stride?: number);
    static readonly P3: VertexFormat;
    static readonly P3N3: VertexFormat;
    static readonly P3N3T2: VertexFormat;
    static readonly P3N3T4T2: VertexFormat;
    static readonly P3J4W4: VertexFormat;
    static readonly P3N3J4W4: VertexFormat;
    getAttribute(semantic: VertexAttributeSemantic): VertexAttribute;
    hasAttribute(semantic: VertexAttributeSemantic): boolean;
}
//# sourceMappingURL=VertexFormat.d.ts.map