import type { Engine, GeometryProps, SkinProps, spec } from '@galacean/effects-core';
import { Geometry } from '@galacean/effects-core';
import * as THREE from 'three';
/**
 * THREE 中 attribute info 接口
 */
interface ThreeAttributeWithType {
    /**
     * THREE 中 attribute 对象
     */
    attribute: THREE.InterleavedBufferAttribute;
    /**
     * attribute 类型
     */
    type: number;
    /**
     * 共享或单独的 buffer
     */
    buffer: THREE.InterleavedBuffer;
    /**
     * 数据长度
     */
    dataLength: number;
}
/**
 * THREE 中的 geometry 的抽象实现类
 */
export declare class ThreeGeometry extends Geometry {
    /**
     * geometry 对象
     */
    geometry: THREE.BufferGeometry;
    /**
     * 记录顶点属性信息用于缓存
     */
    attributes: Record<string, ThreeAttributeWithType>;
    /**
     * geometry 绘制模式
     */
    readonly mode: GLenum;
    private destroyed;
    private attributesName;
    /**
     * 构造函数
     * @param props - geometry 创建参数
     */
    constructor(engine: Engine, props?: GeometryProps);
    /**
     * 获取绘制数量
     */
    get drawCount(): number;
    /**
     * 设置绘制数量
     */
    set drawCount(val: number);
    /**
     * 获取绘制起点
     */
    get drawStart(): number;
    /**
     * 设置绘制起点
     */
    set drawStart(val: number);
    /**
     * 获取 attribute 数据
     *
     * @param name - attribute 名称
     * @returns 返回 attribute 数据，如果为空返回 undefined
     */
    getAttributeData(name: string): spec.TypedArray | undefined;
    /**
     * 设置 attribute 数据
     *
     * @param name - attribute 名称
     * @param data - attribute 数据
     * @returns
     */
    setAttributeData(name: string, data: spec.TypedArray): void;
    /**
     * 设置可变的 attribute 数据
     *
     * @param name - attribute 名称
     * @param dataOffset - 数据偏移
     * @param data - 数据内容
     * @returns
     */
    setAttributeSubData(name: string, dataOffset: number, data: spec.TypedArray): void;
    /**
     * 获取 attribute 数据步长
     *
     * @param name - attribute名称
     * @returns 返回步长值
     */
    getAttributeStride(name: string): number;
    /**
     * 获取用到的所有 attribute 名称
     * @returns 返回名称数组
     */
    getAttributeNames(): string[];
    /**
     * 获取 index attribute 数据
     * @returns 返回数据，如果为空返回 undefined
     */
    getIndexData(): spec.TypedArray | undefined;
    /**
     * 设置 index attribute 数据
     *
     * @param data - index 数据
     */
    setIndexData(data?: spec.TypedArray): void;
    /**
     * 设置偏移 index 数据
     *
     * @param offset - 数据偏移量
     * @param data - 数据内容
     */
    setIndexSubData(offset: number, data: spec.TypedArray): void;
    /**
     * 设置绘制偏移
     *
     * @param start - 绘制偏移
     */
    setDrawStart(start: number): void;
    /**
     * 获取绘制偏移
     *
     * @returns 返回绘制移
     */
    getDrawStart(): number;
    /**
     * 设置绘制数量
     *
     * @param count - 绘制数量
     */
    setDrawCount(count: number): void;
    /**
     * 获取绘制数量
     *
     * @returns 返回绘制数量
     */
    getDrawCount(): number;
    /**
     * 获取蒙皮数据
     *
     * @returns 返回蒙皮数据
     */
    getSkinProps(): SkinProps;
    /**
     * 销毁方法
     *
     * @returns
     */
    dispose(): void;
    private setAttributeType;
}
export {};
