/// <reference types="gl-matrix" />
/// <reference types="@webgpu/types" />
/// <reference types="gl-matrix/index.js" />
/*!
 * @maptalks/gl v0.115.1
 * LICENSE : UNLICENSED
 * (c) 2016-2025 maptalks.com
 */
import * as REGL from '@maptalks/regl';
import REGL__default, { Texture, Texture2DOptions, TextureImageData, Regl, Texture2D as Texture2D$1, Uniforms } from '@maptalks/regl';
export { default as createREGL } from '@maptalks/regl';
import * as gl_matrix from 'gl-matrix';
import { vec3, mat4, glMatrix, mat2, mat2d, mat3, quat, quat2, vec2, vec4 } from 'gl-matrix';
export { mat2, mat2d, mat3, mat4, quat, quat2, vec2, vec3, vec4 } from 'gl-matrix';
import * as maptalks from 'maptalks';
import { Polygon, LayerJSONType, renderer, Layer, MixinConstructor, Extent } from 'maptalks';
export { GLContext } from '@maptalks/fusiongl';
export { default as earcut } from 'earcut';
export { default as color } from 'color';

declare const TerrainLayer_base: {
    new (...args: any[]): {
        _maskProjViewMatrix: gl_matrix.mat4;
        _maskExtentInWorld: [number, number, number, number];
        removeMask(masks: any): any;
        setMask(masks: any): any;
        onAdd(): void;
        getMasks(): any;
        onGeometryEvent(param: any): void;
        identifyMask(point: any, options: any): any[];
        remove(): void;
        updateMask(extent: any): {
            projViewMatrix: gl_matrix.mat4;
            extentInWorld: [number, number, number, number];
        };
        getProjViewMatrixInOrtho(extent: any): {
            mapExtent: any;
            projViewMatrix: gl_matrix.mat4;
        };
        updateMaskExtent(): void;
        getMaskExtent(): {
            extent: maptalks.Extent;
            ratio: number;
            minHeight: any;
        };
    };
} & typeof maptalks.TileLayer;
declare class TerrainLayer extends TerrainLayer_base {
    constructor(id: any, options: any);
    onAdd(): void;
    getTileUrl(x: any, y: any, z: any): string;
    _skuToken: string;
    _createSkuToken(): string;
    _getExaggeration(): any;
    setSkinLayers(skinLayers: any): void;
    _skinLayers: any;
    getSkinTiles(layer: any): {
        tileGrids: any[];
        count: number;
    };
    getSkinLayer(index: any): any;
    getSkinLayers(): any;
    getSkinCount(): any;
    queryTerrainByProjCoord(prjCoord: any, out: any): any;
    queryTileTerrainByProjCoord(prjCoord: any, tileId: any, tileIndex: any, out: any): any;
    queryTileTerrainByPointAtRes(point: any, res: any, tileId: any, tileIndex: any, out: any): any;
    queryTerrain(coordinate: any, out: any): any;
    queryTileMesh(tile: any, cb: any): void;
    getTerrainTiles(layer: any, tileInfo: any): any;
    isTerrainTileLoaded(tileId: any): boolean;
    updateMaterial(mat: any): void;
    setMaterial(mat: any): void;
    _createTileNode(x: any, y: any, z: any, idx: any, idy: any, res: any, error: any, parentId: any, extent2d: any, tileId: any): {
        parent: any;
        layer: string;
        x: any;
        y: any;
        z: any;
        idx: any;
        idy: any;
        res: any;
        extent2d: any;
        id: any;
        url: string;
        offset: any;
        error: any;
        children: any[];
    };
}

declare class GraphicsFramebuffer {
    device: GraphicsDevice;
    options: any;
    width: number;
    height: number;
    constructor(device: any, options: any);
    get color(): GraphicsTexture[];
    resize(width: any, height: any): void;
    _update(): void;
    getRenderPassDescriptor(): GPURenderPassDescriptor;
    setClearOptions(options: any): void;
    _resetClearOptions(): void;
    destroy(): void;
}

declare class GraphicsDevice {
    wgpu: GPUDevice;
    context: GPUCanvasContext;
    adapter: GPUAdapter;
    gltfManager?: any;
    _supportedFormats: any;
    constructor(device: GPUDevice, context: GPUCanvasContext, adapter: GPUAdapter);
    hasExtension(extension: any): boolean;
    getCommandEncoder(): GPUCommandEncoder;
    endCommandEncoder(): void;
    getDefaultFramebuffer(): GraphicsFramebuffer;
    getRenderPassEncoder(fbo: GraphicsFramebuffer): GPURenderPassEncoder;
    addCommandBuffer(commandBuffer: GPUCommandBuffer, front: boolean): void;
    submit(): void;
    buffer(options: any): any;
    framebuffer(width: any, height: any): GraphicsFramebuffer;
    texture(config: any): GraphicsTexture;
    clear(options: any): void;
    read(options: any): any;
    destroy(): void;
}

declare class GraphicsTexture {
    texture: GPUTexture;
    device: GraphicsDevice;
    config: any;
    constructor(device: GraphicsDevice, config: any);
    get width(): any;
    get height(): any;
    updateFilter(): void;
    _clearBindGroups(): void;
    resize(width: any, height: any): void;
    update(config: any): void;
    _updateTexture(): void;
    getView(): GPUTextureView;
    addBindGroup(bindGroup: any): void;
    destroy(): void;
}

type UrlModifierFunction = (url: string) => string;
type TypedArray = Uint8Array | Uint16Array | Uint32Array | Int8Array | Int16Array | Float32Array;
type NumberArray = TypedArray | number[];
type AttributeData = NumberArray | any;
type GeometryDesc = {
    'positionSize'?: number;
    'primitive'?: REGL__default.PrimitiveType;
    'positionAttribute'?: string;
    'normalAttribute'?: string;
    'uv0Attribute'?: string;
    'uv1Attribute'?: string;
    'color0Attribute'?: string;
    'colorAttribute'?: string;
    'tangentAttribute'?: string;
    'pickingIdAttribute'?: string;
    'textureCoordMatrixAttribute'?: string;
    'altitudeAttribute'?: string;
    'fillEmptyDataInMissingAttribute'?: boolean;
    'static'?: boolean;
};
type AttributeKey = {
    key: string;
};
type ActiveAttributes = {
    name: string;
    type: number;
}[] & AttributeKey;
type ShaderUniformValue = number | boolean | string | NumberArray | null | ShaderUniformTexture;
type ShaderUniformTexture = AbstractTexture | Texture | GraphicsTexture;
type ShaderUniforms = {
    meshConfig?: MeshOptions;
    primitive?: REGL__default.PrimitiveType;
} & {
    [_: string]: ShaderUniformValue;
};
type ShaderDefines = {
    [_: string]: number | string;
};
type MeshOptions = {
    transparent?: boolean;
    bloom?: boolean;
    ssr?: boolean;
    castShadow?: boolean;
    picking?: boolean;
    disableVAO?: boolean;
};
type AttributeBufferData = {
    buffer?: REGL__default.Buffer;
    data?: NumberArray;
    divisor?: number;
};
type AttributeType = NumberArray | REGL__default.Buffer | AttributeBufferData;
type InstancedAttribute = Record<string, AttributeType>;
type ImageObject = {
    array: TextureImageData;
    width: number;
    height: number;
};
type TextureConfig = {
    url?: string;
    image?: ImageObject;
    hdr?: boolean;
    /**
     * hdr 纹理的最大 RGBMRange，默认为9
     * @english
     * max RGBMRange for hdr texture, default is 9
     */
    maxRange?: number;
    promise?: Promise<any>;
    persistent?: boolean;
    compare?: GPUCompareFunction;
} & Texture2DOptions;

type HandlerFnResultType = {
    type: string;
    target: any;
    [propName: string]: any;
};
type BaseEventParamsType = {
    type?: string;
    target?: any;
    [propName: string]: any;
};
type HandlerFn = (result?: HandlerFnResultType) => void | boolean;

type CachedResource = {
    image: any;
    count: number;
};
type PromiseResource = {
    url: string;
    data: any;
};
declare class InnerResourceLoader {
    defaultTexture?: Uint8Array;
    defaultCubeTexture: number[];
    urlModifier?: UrlModifierFunction;
    resources: Record<string, CachedResource>;
    constructor(DEFAULT_TEXTURE: Uint8Array, urlModifier?: UrlModifierFunction);
    setURLModifier(urlModifier: UrlModifierFunction): void;
    get(url: string | string[]): Promise<PromiseResource[]> | Promise<PromiseResource>;
    getArrayBuffer(url: string | string[]): Promise<PromiseResource | PromiseResource[]>;
    disposeRes(url: string | string[]): this;
    isLoading(): boolean;
    getDefaultTexture(url: string | string[]): Uint8Array | number[];
}
declare const ResourceLoader_base: {
    new (...args: any[]): {
        _events: Record<string, BaseEventParamsType>;
        on(type: string, handler: HandlerFn): any;
        once(type: string, handler: HandlerFn): any;
        off(type: string, handler: HandlerFn): any;
        fire(type: string, params?: BaseEventParamsType): any;
        _wrapOnce(type: string, handler: HandlerFn): (params: any) => void;
    };
} & typeof InnerResourceLoader;
declare class ResourceLoader extends ResourceLoader_base {
}
//# sourceMappingURL=ResourceLoader.d.ts.map

declare class Base$1 {
}
declare const AbstractTexture_base: {
    new (...args: any[]): {
        _events: Record<string, BaseEventParamsType>;
        on(type: string, handler: HandlerFn): any;
        once(type: string, handler: HandlerFn): any;
        off(type: string, handler: HandlerFn): any;
        fire(type: string, params?: BaseEventParamsType): any;
        _wrapOnce(type: string, handler: HandlerFn): (params: any) => void;
    };
} & typeof Base$1;
/**
 * Abstract Texture
 * Common methods for Texture2D and TextureCube
 * @abstract
 */
declare class AbstractTexture extends AbstractTexture_base {
    config: TextureConfig;
    promise?: Promise<any>;
    resLoader: ResourceLoader;
    dirty?: boolean;
    constructor(config: any, resLoader?: any);
    onLoad(data: any): void;
    isReady(): boolean;
    set(k: string, v: any): this;
    get(k: string): any;
    createREGLTexture(regl: Regl): null | Texture2D$1;
    getREGLTexture(regl: any): any;
    getMemorySize(): number;
    _update(): void;
    dispose(): void;
}

declare class BoundingBox {
    min: vec3;
    max: vec3;
    vertex?: vec3[];
    center: vec3;
    constructor(min?: vec3, max?: vec3);
    static copy(out: BoundingBox, bbox: BoundingBox): BoundingBox;
    combine(bbox: number[] | BoundingBox): this;
    dirty(): this;
    /**
     * Get center of the bounding box
     * @returns {Number[]} center
     */
    getCenter(): vec3;
    /**
     * 判断BBox是否包含给定的坐标
     * @english
     * If contain point entirely
     * @param  point
     */
    containPoint(p: number): boolean;
    /**
     * BBox的值是否是Infinite
     * @english
     * If bounding box is finite
     */
    isFinite(): boolean;
    updateVertex(): vec3[];
    copy(out: BoundingBox): BoundingBox;
    equals(box: BoundingBox): boolean;
    transform(positionMatrix: any, modelMatrix: any): this;
}
//# sourceMappingURL=BoundingBox.d.ts.map

declare class Geometry {
    static createElementBuffer(device: any, elements: any): any;
    static createBuffer(device: any, data: any, name?: string): any;
    static padGPUBufferAlignment(array: TypedArray, vertexCount: number): TypedArray;
    data: Record<string, AttributeData>;
    elements: any;
    desc: GeometryDesc;
    semantic: Record<string, string>;
    count: number;
    properties: any;
    indices: NumberArray;
    boundingBox: BoundingBox;
    count1?: number;
    offset?: number;
    constructor(data: AttributeData, elements: any, count?: number, desc?: GeometryDesc);
    set version(v: number);
    get version(): number;
    getBuffer(name: string): any;
    getAttrData(activeAttributes: ActiveAttributes): any;
    getREGLData(regl: any, activeAttributes: ActiveAttributes, disableVAO: boolean): AttributeData;
    generateBuffers(device: any): void;
    getVertexCount(): number;
    getColor0Size(): number;
    /**
     * 手动设置geometry的buffer，用于多个属性共用一个ArrayBuffer(interleaved)
     * @param {String} key - 属性
     * @param {ArrayBuffer|REGLBuffer} data - 数据
     */
    deleteData(name: string): this;
    /**
     * Replace data or refill attribute data buffer
     * @param {String} name - data's name
     * @param {Number[] | Object} data - data to update
     * @returns this
     */
    updateData(name: string, data: AttributeData): this;
    _updateGPUBuffer(buffer: GPUBuffer, data: AttributeData): any;
    updateSubData(name: string, data: AttributeData, offset: number): this;
    getPrimitive(): REGL__default.PrimitiveType;
    getElements(): any;
    setElements(elements: any, count: number): this;
    isIndexedElements(): boolean;
    deleteElements(): this;
    setDrawCount(count: number): this;
    getDrawCount(): number;
    setDrawOffset(offset: number): this;
    getDrawOffset(): number;
    dispose(): void;
    isDisposed(): boolean;
    /**
     * Update boundingBox of Geometry
     */
    updateBoundingBox(): void;
    createTangent(name?: string): void;
    createNormal(name?: string): void;
    /**
     * Create barycentric attribute data
     * @param {String} name - attribute name for barycentric attribute
     */
    createBarycentric(name?: string): void;
    /**
     * Build unique vertex data for each attribute
     */
    buildUniqueVertex(): void;
    getMemorySize(): number;
    getElementsType(elements: NumberArray): "uint8" | "uint32" | "uint16";
    getCommandKey(device: any): string;
    getBufferDescriptor(vertexInfo: any): any[];
}

declare class EdgeGeometry extends Geometry {
    constructor(data: AttributeData, elements: any, count: number, desc?: GeometryDesc);
}

declare class Base {
}
declare const Material_base: {
    new (...args: any[]): {
        _events: Record<string, BaseEventParamsType>;
        on(type: string, handler: HandlerFn): any;
        once(type: string, handler: HandlerFn): any;
        off(type: string, handler: HandlerFn): any;
        fire(type: string, params?: BaseEventParamsType): any;
        _wrapOnce(type: string, handler: HandlerFn): (params: any) => void;
    };
} & typeof Base;
declare class Material extends Material_base {
    uniforms: ShaderUniforms;
    refCount: number;
    unlit: boolean;
    constructor(uniforms?: ShaderUniforms, defaultUniforms?: ShaderUniforms);
    set version(v: number);
    get version(): number;
    get propVersion(): number;
    set doubleSided(value: boolean);
    get doubleSided(): boolean;
    getUniforms(device: any): ShaderUniforms;
    getMemorySize(): number;
    isReady(): boolean;
    hasUniform(k: string): any;
    setUniform(k: string, v: ShaderUniformValue): this;
    getUniform(k: string): ShaderUniformValue;
    set(k: string, v: ShaderUniformValue, isDispose?: boolean): this;
    setFunctionUniform(k: string, fn: () => ShaderUniformValue): this;
    hasFunctionUniform(k: string): boolean;
    get(k: string): ShaderUniformValue;
    isDirty(): boolean;
    /**
     * Get shader defines
     * @return {Object}
     */
    appendDefines(defines: ShaderDefines, _geometry: Geometry): ShaderDefines;
    hasSkinAnimation(): boolean;
    isTexture(k: string): boolean;
    dispose(): void;
    isDisposed(): boolean;
    getUniformKeys(): string;
}

declare class WireFrameMaterial extends Material {
    constructor(uniforms: ShaderUniforms);
}
//# sourceMappingURL=WireFrameMaterial.d.ts.map

declare class StandardMaterial extends Material {
    constructor(uniforms: ShaderUniforms);
    appendDefines(defines: ShaderDefines, geometry: Geometry): ShaderDefines;
}
//# sourceMappingURL=StandardMaterial.d.ts.map

declare class PhongMaterial extends Material {
    constructor(uniforms: ShaderUniforms);
    static convertFrom(standardMaterial: StandardMaterial): PhongMaterial;
    appendDefines(defines: ShaderDefines, geometry: Geometry): ShaderDefines;
}
//# sourceMappingURL=PhongMaterial.d.ts.map

declare class StandardLiteMaterial extends Material {
    constructor(uniforms: ShaderUniforms);
    appendDefines(defines: ShaderDefines, geometry: Geometry): ShaderDefines;
}
//# sourceMappingURL=StandardLiteMaterial.d.ts.map

declare const PhongSpecularGlossinessMaterial_base: {
    new (...args: any[]): {
        appendDefines(defines: ShaderDefines, geometry: Geometry): ShaderDefines;
    };
} & typeof PhongMaterial;
declare class PhongSpecularGlossinessMaterial extends PhongSpecularGlossinessMaterial_base {
}
//# sourceMappingURL=PhongSpecularGlossinessMaterial.d.ts.map

type DynamicBufferAllocation = {
    storage?: ArrayBuffer;
    gpuBuffer?: GPUBuffer;
    offset?: number;
    size?: number;
};
declare class DynamicBufferPool {
    /**
     * Allocation size of the underlying buffers.
     *
     */
    bufferSize: number;
    /**
     * Internally allocated gpu buffers.
     *
     */
    poolBuffers: DynamicBufferAllocation[];
    usedBuffers: DynamicBufferAllocation[];
    /**
     * @type {DynamicBufferAllocation|null}
     */
    activeBuffer: DynamicBufferAllocation;
    device: GPUDevice;
    bufferAlignment: number;
    /**
     * Create the system of dynamic buffers.
     *
     * @param device - The graphics device.
     * @param bufferSize - The size of the underlying large buffers.
     * @param bufferAlignment - Alignment of each allocation.
     */
    constructor(device: GPUDevice, bufferSize: number, bufferAlignment: number);
    /**
     * Destroy the system of dynamic buffers.
     */
    destroy(): void;
    /**
     * Allocate an aligned space of the given size from a dynamic buffer.
     *
     * @param {DynamicBufferAllocation} allocation - The allocation info to fill.
     * @param {number} size - The size of the allocation.
     */
    alloc(allocation: any, size: any): void;
    createBuffer(device: GPUDevice, size: number): GPUBuffer;
    scheduleSubmit(): void;
    submit(): void;
}

declare class DynamicOffsets {
    items: any[];
    offsets: number[];
    index: number;
    constructor();
    reset(): void;
    addItem(binding: any, offset: any): void;
    addItems(items: any[]): void;
    getItems(): any[];
    getDynamicOffsets(): number[];
}

declare class DynamicBuffer {
    bindgroupMapping: any;
    dynamicOffsets: number[];
    pool: DynamicBufferPool;
    allocation: DynamicBufferAllocation;
    version: number;
    constructor(bindgroupMapping: any, pool: DynamicBufferPool);
    writeBuffer(uniformValues: Record<string, ShaderUniformValue>, dynamicOffsets: DynamicOffsets): void;
    _fillValue(type: any, buffer: any, offset: any, size: any, value: any): void;
    dispose(): void;
}

declare class BindGroupFormat {
    bytes: number;
    uuid: number;
    name: string;
    constructor(name: any, bindGroupMapping: any, minUniformBufferOffsetAlignment: any);
    getShaderUniforms(): any;
    getMeshUniforms(): any;
    _parse(bindGroupMapping: any): void;
    createBindGroup(device: GraphicsDevice, mesh: Mesh$1, shaderUniforms: ShaderUniforms, layout: GPUBindGroupLayout, shaderBuffer: DynamicBuffer, meshBuffer: DynamicBuffer): GPUBindGroup;
    dispose(): void;
}

/**
 * Config:
 *  transparent, castShadow
 */
declare class Mesh$1 {
    uuid: number;
    transparent: boolean;
    bloom: boolean;
    ssr: boolean;
    needUpdateShadow: boolean;
    picking: boolean;
    disableVAO: boolean;
    properties: any;
    uniforms: ShaderUniforms;
    dirtyDefines?: boolean;
    parent?: Mesh$1;
    constructor(geometry: Geometry, material?: Material, config?: MeshOptions);
    set material(v: Material);
    get material(): Material;
    set version(v: number);
    get version(): number;
    get geometry(): Geometry;
    set geometry(geo: Geometry);
    set localTransform(m: mat4);
    get localTransform(): mat4;
    set positionMatrix(m: mat4);
    get positionMatrix(): mat4;
    get config(): MeshOptions;
    get defines(): ShaderDefines;
    set defines(v: ShaderDefines);
    get castShadow(): boolean;
    set castShadow(v: boolean);
    setMaterial(material: Material): this;
    setParent(parent: Mesh$1): this;
    setLocalTransform(transform: mat4): this;
    setPositionMatrix(matrix: mat4): void;
    setUniform(k: string, v: ShaderUniformValue): this;
    setFunctionUniform(k: string, fn: () => ShaderUniformValue): this;
    hasFunctionUniform(k: string): boolean;
    hasUniform(k: string): boolean;
    getUniform(k: string): ShaderUniformValue;
    getDefines(): ShaderDefines;
    setDefines(defines: ShaderDefines): this;
    hasSkinAnimation(): boolean;
    getCommandKey(device: any): string;
    getRenderProps(device: any): ShaderUniforms;
    appendGeoAttributes(props: any, device: any, activeAttributes: any): void;
    getUniforms(device: any): ShaderUniforms;
    getMaterial(): Material;
    getElements(): any;
    dispose(): this;
    isValid(): boolean;
    getBoundingBox(): [vec3, vec3];
    updateBoundingBox(): void;
    getMemorySize(): number;
    getWorldTransform(): any;
    _meshBuffer: Record<string, DynamicBuffer>;
    writeDynamicBuffer(commandUID: number, renderProps: any, bindGroupMapping: BindGroupFormat, pool: DynamicBufferPool, dynamicOffsets: DynamicOffsets): DynamicBuffer;
    getBindGroup(key: any): GPUBindGroup;
    setBindGroup(key: any, bindGroup: any): this;
    getShaderFnValues(shaderUID: number): GPUBindGroup;
    setShaderFnValues(shaderUID: number, fnValues: any): this;
}

declare class InstancedMesh extends Mesh$1 {
    instancedData: InstancedAttribute;
    constructor(instancedData: InstancedAttribute, instanceCount: number, geometry: Geometry, material?: Material, config?: MeshOptions);
    get instanceCount(): number;
    set instanceCount(count: number);
    getMemorySize(): number;
    getDefines(): ShaderDefines;
    getCommandKey(device: any): string;
    updateInstancedData(name: string, data: any): this;
    getInstancedBuffer(name: string): any;
    generateInstancedBuffers(device: any): this;
    getRenderProps(regl: Regl): ShaderUniforms;
    disposeInstancedData(): void;
    getBufferDescriptor(vertexInfo: any): any[];
}

declare class Scene {
    sortedMeshes: {
        opaques?: Mesh$1[];
        transparents?: Mesh$1[];
    };
    sortFunction?: (a: Mesh$1, b: Mesh$1) => number;
    meshes?: Mesh$1[];
    constructor(meshes: any);
    setMeshes(meshes?: Mesh$1 | Mesh$1[]): this;
    addMesh(mesh: Mesh$1 | Mesh$1[]): this;
    removeMesh(mesh?: Mesh$1 | Mesh$1[]): this;
    getMeshes(): Mesh$1[];
    clear(): this;
    dirty(): this;
    sortMeshes(cameraPosition?: vec3): void;
    getSortedMeshes(): {
        opaques?: Mesh$1[];
        transparents?: Mesh$1[];
    };
}
//# sourceMappingURL=Scene.d.ts.map

/**
 * A basic renderer to render meshes in fashion of forward rendering
 */
declare class Renderer {
    device: any;
    constructor(device: any);
    render(shader: any, uniforms: Uniforms, scene: Scene, framebuffer: REGL__default.Framebuffer): number;
    clear(options: REGL__default.ClearOptions): void;
}
//# sourceMappingURL=Renderer.d.ts.map

/**
 * config properties:
 * https://github.com/regl-project/regl/blob/gh-pages/API.md#textures
 */
declare class Texture2D extends AbstractTexture {
    _version: number;
    get version(): number;
    set version(version: number);
    onLoad({ data }: {
        data: any;
    }): void;
    setConfig(config: any): void;
    setMinFilter(value: number): void;
    setMagFilter(value: number): void;
    createREGLTexture(regl: Regl): REGL__default.Texture2D;
    _checkNPOT(regl: any): void;
}

declare class Plane extends Geometry {
    constructor(z?: number);
}
//# sourceMappingURL=Plane.d.ts.map

/**
 * 对象是否是字符串
 * @english
 * Check whether the object is a string
 * @param obj
 */
declare function isString(obj: any): boolean;
/**
 * 对象是否是null或undefined
 * @english
 * Whether the object is null or undefined.
 * @param  obj - object
 */
declare function isNil(obj: any): boolean;
declare function defined(obj: any): boolean;
/**
 * 对象是否是函数
 * @english
 * Check whether the object is a function
 * @param obj
 */
declare function isFunction(obj: any): boolean;
/**
 * 将后续所有对象属性合并到第一个dest对象中
 * @english
 * Merges the properties of sources into destination object.
 * @param dest - object to extend
 * @param src - sources
 */
declare function extend(dest: any, ...src: any[]): any;
/**
 * 将后续所有对象属性合并到第一个dest对象中，但忽略undefined或null的属性
 * @english
 * Merges the properties of sources into destination object without nil properties.
 * @param dest - object to extend
 * @param src - sources
 */
declare function extendWithoutNil(dest: any, ...args: any[]): any;
/**
 * 检查是否是个数值
 * @english
 * Whether val is a number and not a NaN.
 * @param  val - val
 */
declare function isNumber(val: any): boolean;
/**
 * 计算值的log2
 * @english
 * compute value's log2
 * @param x - value to log
 * @returns
 */
declare function log2(x: number): number;
/**
 * 归一化数组
 * @english
 * normalize a number array
 * @param out - array receives result
 * @param arr - array
 * @returns out
 */
declare function normalize(out: NumberArray, arr: ArrayLike<number>): NumberArray;
/**
 * 两个数值之间的比例推算
 *
 * @english
 * Interpolate between two number.
 *
 * @param from  - from value
 * @param to    - to value
 * @param t     - interpolation factor between 0 and 1
 * @returns     interpolated value
 */
declare function interpolate(a: number, b: number, t: number): number;
/**
 * 检查对象是否是数组或者类型数组
 * @english
 * Check if is an Array or a TypedArray
 * @param arr - input object
 * @returns
 */
declare function isArray(arr: any): boolean;
declare function getArrayCtor(arr: any): ArrayConstructor | Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor;
/**
 * 对两个矢量执行线性推算
 *
 * @english
 * Performs a linear interpolation between two number's
 *
 * @param out   - the receiving vector
 * @param a     - the first operand
 * @param b     - the second operand
 * @param t     - interpolation amount, in the range [0-1], between the two inputs
 * @returns out
 */
declare function lerp(out: NumberArray, a: NumberArray, b: NumberArray, t: number): NumberArray;
/**
 * 将input数组的值设置给out
 * @english
 * Set input array's value to out
 * @param out - the receiving array
 * @param input - input array
 * @returns out
 */
declare function set(out: NumberArray, input: NumberArray): NumberArray;
/**
 * 根据Position的最大值，选择一个合适的TypedArray
 * @english
 * Choose a TypedArray for position according to its max value
 * @param max - position's max value
 * @returns
 */
declare function getPosArrayType(max: number): Int8ArrayConstructor | Int16ArrayConstructor | Float32ArrayConstructor;
/**
 * n大于max时返回max，n小于min时返回min，否则返回n
 * @english
 * Clamp input value between min and max
 * @param n - input value
 * @param min - min value
 * @param max - max value
 */
declare function clamp(n: number, min: number, max: number): number;
/**
 * 检查当前环境是否支持VAO
 * @english
 * Check if current context supports VAO
 * @param regl regl context
 * @returns
 */
declare function isSupportVAO(regl: any): any;
/**
 * Object.hasOwnProperty的包装方法
 * @english
 * Check if object hasOwnProperty of property
 * @param obj - object
 * @param prop - property
 * @returns
 */
declare function hasOwn(obj: any, prop: string): any;
/**
 * 获取buffer的byte大小
 * @english
 * Get buffer's size in bytes
 * @param buffer
 */
declare function getBufferSize(buffer: AttributeBufferData | AttributeType): number;
/**
 * 获取regl texture对象的bytes大小
 * @english
 * Get regl texture size in bytes
 * @param tex - regl rexture
 * @returns
 */
declare function getTexMemorySize(tex: REGL__default.Texture): number;
/**
 * 获取regl texture的byte width
 * @english
 * Get regl texture's byte width
 * @param type - regl texture's type
 * @returns
 */
declare function getTextureByteWidth(type: any): 4 | 1 | 2 | 0;
/**
 * 获取regl texture 的channels数量
 * @english
 * Get regl texture's number of channels
 * @param format - regl texture's format
 * @returns
 */
declare function getTextureChannels(format: any): 4 | 1 | 2 | 3;
/**
 * 检查该attribute数据是否处于interleaved数据中
 * @english
 * Check if this attribute data is in interleaved stride
 * @param dataObj attribute object
 * @returns
 */
declare function isInStride(dataObj: any): boolean;
/**
 * 检查该attribute数据是否是interleaved
 * @english
 * Check if this attribute data is an interleaved data
 * @param dataObj attribute object
 * @returns
 */
declare function isInterleaved(dataObj: any): boolean;
/**
 * 获取该webgl上下文支持的压缩纹理格式
 * @english
 * Get webgl context's supported formats for compressed texture
 * @param gl
 * @returns
 */
declare function getSupportedFormats(gl: WebGL2RenderingContext | WebGLRenderingContext | GPUDevice): {
    etc: boolean;
    etc1: boolean;
    s3tc: boolean;
    pvrtc: boolean;
    astc: boolean;
    bc7: boolean;
};
/**
 * 获取字符串的hash值
 * @english
 * Get string's hash code
 * @param s input string
 * @returns
 */
declare function hashCode(s: string): number;
/**
 * 值是否是2的n次幂
 * @english
 * Get the nearest power of 2 that is less than this value
 * @param value - input value
 * @returns
 */
declare function isPowerOfTwo(value: number): boolean;
declare function resizeToPowerOfTwo(image: HTMLImageElement | NumberArray, width?: number, height?: number): NumberArray | HTMLCanvasElement | HTMLImageElement;
declare function supportNPOT(regl: any): boolean;
declare function isTextureDestroyed(texture: any): boolean;

declare const Util_d_clamp: typeof clamp;
declare const Util_d_defined: typeof defined;
declare const Util_d_extend: typeof extend;
declare const Util_d_extendWithoutNil: typeof extendWithoutNil;
declare const Util_d_getArrayCtor: typeof getArrayCtor;
declare const Util_d_getBufferSize: typeof getBufferSize;
declare const Util_d_getPosArrayType: typeof getPosArrayType;
declare const Util_d_getSupportedFormats: typeof getSupportedFormats;
declare const Util_d_getTexMemorySize: typeof getTexMemorySize;
declare const Util_d_getTextureByteWidth: typeof getTextureByteWidth;
declare const Util_d_getTextureChannels: typeof getTextureChannels;
declare const Util_d_hasOwn: typeof hasOwn;
declare const Util_d_hashCode: typeof hashCode;
declare const Util_d_interpolate: typeof interpolate;
declare const Util_d_isArray: typeof isArray;
declare const Util_d_isFunction: typeof isFunction;
declare const Util_d_isInStride: typeof isInStride;
declare const Util_d_isInterleaved: typeof isInterleaved;
declare const Util_d_isNil: typeof isNil;
declare const Util_d_isNumber: typeof isNumber;
declare const Util_d_isPowerOfTwo: typeof isPowerOfTwo;
declare const Util_d_isString: typeof isString;
declare const Util_d_isSupportVAO: typeof isSupportVAO;
declare const Util_d_isTextureDestroyed: typeof isTextureDestroyed;
declare const Util_d_lerp: typeof lerp;
declare const Util_d_log2: typeof log2;
declare const Util_d_normalize: typeof normalize;
declare const Util_d_resizeToPowerOfTwo: typeof resizeToPowerOfTwo;
declare const Util_d_set: typeof set;
declare const Util_d_supportNPOT: typeof supportNPOT;
declare namespace Util_d {
  export { Util_d_clamp as clamp, Util_d_defined as defined, Util_d_extend as extend, Util_d_extendWithoutNil as extendWithoutNil, Util_d_getArrayCtor as getArrayCtor, Util_d_getBufferSize as getBufferSize, Util_d_getPosArrayType as getPosArrayType, Util_d_getSupportedFormats as getSupportedFormats, Util_d_getTexMemorySize as getTexMemorySize, Util_d_getTextureByteWidth as getTextureByteWidth, Util_d_getTextureChannels as getTextureChannels, Util_d_hasOwn as hasOwn, Util_d_hashCode as hashCode, Util_d_interpolate as interpolate, Util_d_isArray as isArray, Util_d_isFunction as isFunction, Util_d_isInStride as isInStride, Util_d_isInterleaved as isInterleaved, Util_d_isNil as isNil, Util_d_isNumber as isNumber, Util_d_isPowerOfTwo as isPowerOfTwo, Util_d_isString as isString, Util_d_isSupportVAO as isSupportVAO, Util_d_isTextureDestroyed as isTextureDestroyed, Util_d_lerp as lerp, Util_d_log2 as log2, Util_d_normalize as normalize, Util_d_resizeToPowerOfTwo as resizeToPowerOfTwo, Util_d_set as set, Util_d_supportNPOT as supportNPOT };
}

declare function parseRGBE(arrayBuffer: ArrayBufferLike, exposure?: number): {
    width: number;
    height: number;
    pixels: any;
};
//# sourceMappingURL=HDR.d.ts.map

declare const GL_NEAREST = 9728;
declare const GL_LINEAR = 9729;
declare const GL_LINEAR_MIPMAP_LINEAR = 9987;
declare const MAG_FILTER = 10240;
declare const MIN_FILTER = 10241;

declare const WebGLConstants_d_GL_LINEAR: typeof GL_LINEAR;
declare const WebGLConstants_d_GL_LINEAR_MIPMAP_LINEAR: typeof GL_LINEAR_MIPMAP_LINEAR;
declare const WebGLConstants_d_GL_NEAREST: typeof GL_NEAREST;
declare const WebGLConstants_d_MAG_FILTER: typeof MAG_FILTER;
declare const WebGLConstants_d_MIN_FILTER: typeof MIN_FILTER;
declare namespace WebGLConstants_d {
  export { WebGLConstants_d_GL_LINEAR as GL_LINEAR, WebGLConstants_d_GL_LINEAR_MIPMAP_LINEAR as GL_LINEAR_MIPMAP_LINEAR, WebGLConstants_d_GL_NEAREST as GL_NEAREST, WebGLConstants_d_MAG_FILTER as MAG_FILTER, WebGLConstants_d_MIN_FILTER as MIN_FILTER };
}

declare namespace _default$2 {
    /**
     * Register a new shader segment for includes for 3rd parties
     * @param {String} name key name
     * @param {String} source shader segment source
     */
    function register(name: string, source: string): void;
    /**
     * Compile the given source, replace #include with registered shader sources
     * @param {String} source source to compile
     */
    function compile(source: string): any;
    function get(name: any): any;
}
//# sourceMappingURL=ShaderLib.d.ts.map

declare const _default$1: {
    register(name: any, segment: any): void;
    /**
     * Compile the given source, replace #include with registered shader sources
     * @param {String} source source to compile
     */
    compile(source: any, defines: any): any;
    get(name: any): any;
};
//# sourceMappingURL=WgslShaderLib.d.ts.map

declare class GLShader {
    vert: string;
    frag: string;
    wgslVert: string;
    wgslFrag: string;
    uid: number;
    version: number;
    extraCommandProps: any;
    name: string;
    constructor({ vert, frag, wgslVert, wgslFrag, uniforms, defines, extraCommandProps, name }: {
        vert: any;
        frag: any;
        wgslVert: any;
        wgslFrag: any;
        uniforms: any;
        defines: any;
        extraCommandProps: any;
        name: any;
    });
    set shaderDefines(defines: Record<string, string | number>);
    get shaderDefines(): Record<string, string | number>;
    setDefines(defines: any): void;
    /**
     * The framebuffer object to render to
     * Set to null to render to default display
     * @param framebuffer
     */
    setFramebuffer(framebuffer: any): this;
    run(regl: any, command: any, props: any): any;
    getShaderCommandKey(device: any, mesh: any, uniformValues: any): string;
    getVersion(regl: any, source: any): "" | "#version 300 es\n" | "#version 100\n";
    getActiveVars(regl: any, vert: any, frag: any, hash: any): any;
    _insertDefines(source: any, defines: any): string;
    createMeshCommand(regl: any, mesh: any, commandProps?: {}, _uniformValues?: any): any;
    dispose(): void;
    /**
     * Get shader's context uniforms values
     * @param {Object} meshProps - mesh uniforms
     */
    appendDescUniforms(regl: any, meshProps: any): any;
    /**
     * Set or get context uniform to or from the shader
     * @returns {this}
     */
    setUniforms(uniforms: any): this;
    _compileSource(): void;
}
declare class GPUShader extends GLShader {
    getShaderCommandKey(device: any, mesh: any, renderProps: any): any;
    createMeshCommand(device: any, mesh: Mesh$1, commandProps: any, renderProps: any): any;
    _compileWGSLSource(defines: any): {
        vert: any;
        frag: any;
    };
    run(deviceOrRegl: any, command: any, props: any): any;
    _getCurrentRenderPassEncoder(device: GraphicsDevice): GPURenderPassEncoder;
    setFramebuffer(framebuffer: any): this;
    dispose(): void;
}

declare class MeshShader extends GPUShader {
    draw(device: any, meshes: any): number;
    _ensureContextDefines(v: any): void;
    _runFilter(m: any): any;
    getMeshCommand(device: any, mesh: any, renderProps: any): any;
    _cmdKeys: {};
}
//# sourceMappingURL=MeshShader.d.ts.map

declare class WireframeShader extends MeshShader {
    constructor(config?: {});
}
//# sourceMappingURL=WireframeShader.d.ts.map

declare class PhongShader extends MeshShader {
    constructor(config?: {});
    getGeometryDefines(geometry: any): {
        HAS_TANGENT: number;
        HAS_NORMAL: number;
    };
}
//# sourceMappingURL=PhongShader.d.ts.map

declare class PointLineShader extends MeshShader {
    constructor(config?: {});
}
//# sourceMappingURL=PointLineShader.d.ts.map

declare class QuadShader extends MeshShader {
    constructor(config: any);
    draw(regl: any): number;
    getMeshCommand(regl: any): any;
    _createQuadMesh(regl: any): void;
    _quadMesh: Mesh$1[];
}
//# sourceMappingURL=QuadShader.d.ts.map

declare class FxaaShader extends QuadShader {
    constructor();
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=FxaaShader.d.ts.map

declare class BoxBlurShader extends QuadShader {
    constructor({ blurOffset }: {
        blurOffset: any;
    });
    _blurOffset: any;
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=BoxBlurShader.d.ts.map

declare class ImageShader extends MeshShader {
    constructor(config: any);
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=ImageShader.d.ts.map

declare class PostProcessShader extends QuadShader {
    constructor();
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=PostProcessShader.d.ts.map

declare class Jitter {
    constructor(ratio: any);
    _frameNum: number;
    _ratio: any;
    _avg: number[];
    getRatio(): any;
    setRatio(ratio: any): void;
    getAverage(): number[];
    reset(): void;
    getJitter(out: any): any;
    frame(): void;
    getSampleCount(): number;
}
//# sourceMappingURL=Jitter.d.ts.map

declare class BlurPass {
    constructor(regl: any, inputRGBM: any, level?: number);
    _regl: any;
    _renderer: Renderer;
    _inputRGBM: any;
    _level: number;
    render(sourceTex: any, luminThreshold: any): {
        blurTex0: any;
        blurTex1: any;
        blurTex2: any;
        blurTex3: any;
        blurTex4: any;
    };
    _blur(curTex: any, luminThreshold: any): void;
    _blurUniforms: {
        rgbmRange: number;
        blurDir: number[];
        outSize: number[];
        pixelRatio: number[];
        outputSize: number[];
    };
    _blurOnce(shader: any, inputTex: any, output0: any, output1: any, sizeRatio: any, luminThreshold: any): void;
    dispose(): void;
    _createTextures(tex: any): void;
    _blur00Tex: any;
    _blur00FBO: any;
    _blur01Tex: any;
    _blur01FBO: any;
    _blur10Tex: any;
    _blur10FBO: any;
    _blur11Tex: any;
    _blur11FBO: any;
    _blur20Tex: any;
    _blur20FBO: any;
    _blur21Tex: any;
    _blur21FBO: any;
    _blur30Tex: any;
    _blur30FBO: any;
    _blur31Tex: any;
    _blur31FBO: any;
    _blur40Tex: any;
    _blur40FBO: any;
    _blur41Tex: any;
    _blur41FBO: any;
    _blur50Tex: any;
    _blur50FBO: any;
    _blur51Tex: any;
    _blur51FBO: any;
    _blur60Tex: any;
    _blur60FBO: any;
    _blur61Tex: any;
    _blur61FBO: any;
    _createColorTex(curTex: any, w: any, h: any): any;
    _createBlurFBO(tex: any): any;
    _initShaders(): void;
    _blur0Shader: QuadShader;
    _blur1Shader: QuadShader;
    _blur2Shader: QuadShader;
    _blur3Shader: QuadShader;
    _blur4Shader: QuadShader;
    _blur5Shader: QuadShader;
    _blur6Shader: QuadShader;
}
//# sourceMappingURL=BlurPass.d.ts.map

declare class BloomPass {
    constructor(regl: any);
    _regl: any;
    _renderer: Renderer;
    render(sourceTex: any, bloomTex: any, bloomThreshold: any, bloomFactor: any, bloomRadius: any, noAaSource: any, pointSource: any, enableAA: any, paintToScreen: any): any;
    _combine(sourceTex: any, blurTexes: any, inputTex: any, bloomFactor: any, bloomRadius: any, noAaSource: any, pointSource: any, enableAA: any, paintToScreen: any): any;
    _combineUniforms: {
        bloomFactor: number;
        bloomRadius: number;
        rgbmRange: number;
        TextureBloomBlur1: any;
        TextureBloomBlur2: any;
        TextureBloomBlur3: any;
        TextureBloomBlur4: any;
        TextureBloomBlur5: any;
        TextureInput: any;
        TextureSource: any;
        outputSize: number[];
    };
    dispose(): void;
    _createTextures(tex: any): void;
    _combineTex: any;
    _combineFBO: any;
    _createColorTex(curTex: any, w: any, h: any, dataType: any): any;
    _createBlurFBO(tex: any): any;
    _initShaders(): void;
    _blurPass: BlurPass;
    _combineShader: QuadShader;
}
//# sourceMappingURL=BloomPass.d.ts.map

declare class CopyDepthShader extends QuadShader {
    constructor();
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=CopyDepthShader.d.ts.map

declare class SsrPass {
    static getUniformDeclares(): ({
        name: string;
        type: string;
        fn: (context: any, props: any) => mat4;
        length?: undefined;
    } | {
        name: string;
        type: string;
        length: number;
        fn: (context: any, props: any) => number[][];
    })[];
    static getDefines(): {
        HAS_SSR: number;
    };
    constructor(regl: any);
    _regl: any;
    _renderer: Renderer;
    _inputRGBM: number;
    setup(sourceTex: any): void;
    getSSRUniforms(map: any, factor: any, quality: any): {
        TextureDepth: any;
        TextureReflected: any;
        ssrFactor: any;
        ssrQuality: any;
        outSize: any[];
        fov: number;
        prevProjViewMatrix: any;
        cameraWorldMatrix: any;
    };
    genMipMap(sourceTex: any, depthTex: any, projViewMatrix: any): any;
    _projViewMatrix: any[];
    getPrevProjViewMatrix(): any[];
    copyDepthTex(depthTex: any): any;
    _depthCopy: any;
    _depthCopyFBO: any;
    _depthCopied: boolean;
    _mipmap(inputTex: any): void;
    _blurUniforms: {
        rgbmRange: number;
        outputSize: number[];
    };
    getMipmapTexture(): any;
    _outputTex: any;
    dispose(): void;
    _initShaders(): void;
    _copyDepthShader: CopyDepthShader;
    _ssrQuadShader: QuadShader;
    _createTextures(sourceTex: any): void;
    _targetFBO: any;
}
//# sourceMappingURL=SsrPass.d.ts.map

declare class HeatmapShader extends MeshShader {
    constructor(config: any);
}
//# sourceMappingURL=HeatmapShader.d.ts.map

declare class SkyboxShader extends MeshShader {
    constructor();
    /**
    * @param inputRGBM 输入的cubemap是否是rgbm格式
    * @param mode 模式，0： ambient模式， 1: lod模式
    */
    setMode(toneMapping: any, mode: any): this;
    _meshDefines: {
        TONE_MAPPING: number;
        USE_AMBIENT: number;
    };
    draw(regl: any): number;
    _createSkyboxMesh(regl: any): void;
    _skyboxMesh: Mesh$1[];
}
//# sourceMappingURL=SkyboxShader.d.ts.map

declare class HeatmapDisplayShader extends MeshShader {
    constructor(viewport: any, config: any);
}

declare class WaterShader extends MeshShader {
    constructor(config?: {});
}
//# sourceMappingURL=WaterShader.d.ts.map

declare class CopyShader extends QuadShader {
    constructor();
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=CopyShader.d.ts.map

declare class EdgeShader extends MeshShader {
    constructor(config?: {});
}
//# sourceMappingURL=EdgeShader.d.ts.map

declare class StandardLiteShader extends MeshShader {
    constructor(config?: {});
}
//# sourceMappingURL=StandardLiteShader.d.ts.map

declare class EffectShader extends QuadShader {
    constructor();
}
//# sourceMappingURL=EffectShader.d.ts.map

declare class FogPass {
    constructor(regl: any, viewport: any, layer: any);
    _regl: any;
    _layer: any;
    _viewport: any;
    _init(): void;
    _shader: MeshShader;
    _fbo: any;
    _scene: Scene;
    renderer: Renderer;
    render(meshes: any, options: any): any;
    dispose(): void;
    _resize(): void;
}
//# sourceMappingURL=FogPass.d.ts.map

declare class FogShader extends QuadShader {
    constructor();
}
//# sourceMappingURL=FogShader.d.ts.map

declare class RainRipplePass {
    constructor(regl: any, viewport: any);
    _regl: any;
    _viewport: any;
    _init(): void;
    _shader: MeshShader;
    _fbo: any;
    _scene: Scene;
    renderer: Renderer;
    _transformRipples(map: any): void;
    _createRipplesMask(map: any): Mesh$1;
    _fixZoom: any;
    render(map: any, options: any): any;
    _mesh: any;
    dispose(): void;
    _resize(): void;
}

declare class ExtentPass {
    constructor(regl: any, viewport: any);
    regl: any;
    _viewport: any;
    renderer: Renderer;
    _init(): void;
    _maskColorFbo: any;
    _maskModeFbo: any;
    _maskColorShader: MeshShader;
    _maskModeShader: MeshShader;
    _scene: Scene;
    render(meshes: any, projViewMatrix: any): {
        colorExtent: any;
        modeExtent: any;
    };
    _resize(): void;
    dispose(): void;
}
//# sourceMappingURL=ExtentPass.d.ts.map

declare class ScanEffectPass {
    constructor(regl: any, viewport: any, layer: any);
    _regl: any;
    _layer: any;
    _viewport: any;
    _effectsLength: number;
    _init(): void;
    _fbo: any;
    _scene: Scene;
    renderer: Renderer;
    render(meshes: any, options: any): any;
    _shader: MeshShader;
    _createFragSource(effectInfos: any): string;
    _updateUniforms(uniforms: any, effectInfos: any): void;
    dispose(): void;
    _resize(): void;
}
//# sourceMappingURL=ScanEffectPass.d.ts.map

declare class GLTFPack {
    constructor(gltf: any, regl: any);
    gltf: any;
    regl: any;
    geometries: any[];
    _emptyTexture: any;
    getMeshesInfo(): any[];
    getGLTFBBox(): {
        min: number[];
        max: number[];
    };
    _createSkins(skins: any): void;
    _skinMap: {};
    _createTextures(textures: any): void;
    _textureMap: {};
    _checkBaseColorFactor(): void;
    _checkBaseColorFactorAlpha(): boolean;
    dispose(): void;
    updateAnimation(time: any, loop: any, speed: any, animationName: any, startTime: any, nodeMatrixMap: any, skinMap: any, animationNodes: any): void;
    _isFirstLoop(time: any, speed: any, animationName: any, startTime: any): boolean;
    hasSkinAnimation(): boolean;
    _updateNodeMatrix(animationName: any, time: any, node: any, parentNodeMatrix: any, nodeMatrixMap: any, animationNodes: any): void;
    _updateNodeTRS(node: any, time: any, animationName: any): void;
    _updateMorph(node: any, weights: any): void;
    _parserNode(node: any, geometries: any, parentNodeMatrix: any): void;
    _isAnimation: boolean;
    _createMaterialInfo(materialIndex: any): {
        baseColorTexture: any;
        khr_offset: any;
        khr_rotation: any;
        khr_scale: any;
        baseColorFactor: any;
        metallicRoughnessTexture: any;
        metallicFactor: any;
        roughnessFactor: any;
        name: string;
        normalTexture: any;
        occlusionTexture: any;
        emissiveTexture: any;
        emissiveFactor: any;
        alphaCutoff: any;
        doubleSided: any;
        alphaMode: any;
    };
    _createExtralInfo(material: any): {
        doubleSided: any;
        alphaMode: any;
    };
    _getTexture(texInfo: any): any;
    _toTexture(texture: any): any;
    /**
     *
     * @param map
     * @param from
     * @param to
     * @param dist
     * @param rotationZ 模型绕Z轴旋转角度，弧度
     * @param rotationXY 模型绕Z轴与线段的交叉轴的旋转角度，弧度
     * @param gltfScale
     * @param projectionScale
     * @param options
     * @returns
     */
    arrangeAlongLine(from: any, to: any, xyDist: any, gltfScale: any, projectionScale: any, options: any): {
        coordinates: any;
        t: number;
        scale: number[];
        rotation: number[];
        rotationZ: number;
        rotationXY: number;
    }[];
    calModelHeightScale(out: any, modelHeight: any): vec3;
    _calBoxWidth(scale: any, options: any): any;
    _getRotationZ(from: any, to: any): number;
    _getRotationXY(xyDist: any, zDist: any): number;
}

declare function load(url: any, options: any): any;
declare function exportGLTFPack(gltf: any, regl: any): GLTFPack;
declare function loadGLTF(root: any, gltf: any, loaderOptions: any): any;

declare const GLTFHelper_d_exportGLTFPack: typeof exportGLTFPack;
declare const GLTFHelper_d_load: typeof load;
declare const GLTFHelper_d_loadGLTF: typeof loadGLTF;
declare namespace GLTFHelper_d {
  export { GLTFHelper_d_exportGLTFPack as exportGLTFPack, GLTFHelper_d_load as load, GLTFHelper_d_loadGLTF as loadGLTF };
}

declare class GLTFManager {
    constructor(regl: any, options: any);
    regl: any;
    resourceMap: {};
    options: any;
    getGLTF(url: any): any;
    loginGLTF(url: any, requestor: any): void;
    logoutGLTF(url: any): void;
    isSimpleModel(url: any): any;
    addSimpleModel(id: any, gltfData: any): void;
    removeSimpleModel(id: any): void;
    _exportGLTFResource(gltf: any, url: any, useUniqueREGLBuffer?: boolean): {
        bbox: {
            min: number[];
            max: number[];
        };
        gltfPack: GLTFPack;
        resources: any[];
        json: any;
        refCount: any;
    };
    fetchGLTF(url: any): any;
    _loadGLTFModel(url: any): any;
}

declare function getPrimitive(mode: any): string;
declare function getMaterialType(type: any): any;
declare function getArrayType(array: any): "uint8" | "float" | "uint16" | "int8" | "int16";
declare function getMaterialFormat(format: any): any;
declare function getTextureMagFilter(filter: any): any;
declare function getTextureMinFilter(filter: any): any;
declare function getTextureWrap(wrap: any): any;
declare function getUniqueREGLBuffer(regl: any, data: any, options: any): any;
declare function getUniqueTexture(regl: any, texConfig: any): any;

declare const REGLHelper_d_getArrayType: typeof getArrayType;
declare const REGLHelper_d_getMaterialFormat: typeof getMaterialFormat;
declare const REGLHelper_d_getMaterialType: typeof getMaterialType;
declare const REGLHelper_d_getPrimitive: typeof getPrimitive;
declare const REGLHelper_d_getTextureMagFilter: typeof getTextureMagFilter;
declare const REGLHelper_d_getTextureMinFilter: typeof getTextureMinFilter;
declare const REGLHelper_d_getTextureWrap: typeof getTextureWrap;
declare const REGLHelper_d_getUniqueREGLBuffer: typeof getUniqueREGLBuffer;
declare const REGLHelper_d_getUniqueTexture: typeof getUniqueTexture;
declare namespace REGLHelper_d {
  export { REGLHelper_d_getArrayType as getArrayType, REGLHelper_d_getMaterialFormat as getMaterialFormat, REGLHelper_d_getMaterialType as getMaterialType, REGLHelper_d_getPrimitive as getPrimitive, REGLHelper_d_getTextureMagFilter as getTextureMagFilter, REGLHelper_d_getTextureMinFilter as getTextureMinFilter, REGLHelper_d_getTextureWrap as getTextureWrap, REGLHelper_d_getUniqueREGLBuffer as getUniqueREGLBuffer, REGLHelper_d_getUniqueTexture as getUniqueTexture };
}

/**
 * {
 *  envTexture,
 *  envCubeSize,
 *  irradianceCubeSize,
 *  sampleSize,
 *  roughnessLevels,
 *  prefilterCubeSize,
 *  dfgSize
 * }
 * @param regl - regl
 * @param config - config
 */
declare function createIBLMaps(regl: any, config?: {}): {
    envMap: any;
    isHDR: boolean;
    prefilterMap: any;
};
declare function createIBLMapsAsync(regl: any, config?: {}): Promise<any>;
declare function generateDFGLUT(device: any, size: any, sampleSize: any, roughnessLevels: any): any;
declare function supportFloat16(regl: any): any;

declare const PBRHelper_createIBLMaps: typeof createIBLMaps;
declare const PBRHelper_createIBLMapsAsync: typeof createIBLMapsAsync;
declare const PBRHelper_generateDFGLUT: typeof generateDFGLUT;
declare const PBRHelper_supportFloat16: typeof supportFloat16;
declare namespace PBRHelper {
  export { PBRHelper_createIBLMaps as createIBLMaps, PBRHelper_createIBLMapsAsync as createIBLMapsAsync, PBRHelper_generateDFGLUT as generateDFGLUT, PBRHelper_supportFloat16 as supportFloat16 };
}

declare const StandardSpecularGlossinessMaterial_base: {
    new (...args: any[]): {
        appendDefines(defines: ShaderDefines, geometry: Geometry): ShaderDefines;
    };
} & typeof StandardMaterial;
declare class StandardSpecularGlossinessMaterial extends StandardSpecularGlossinessMaterial_base {
}
//# sourceMappingURL=StandardSpecularGlossinessMaterial.d.ts.map

declare class StandardShader extends MeshShader {
    constructor(config?: {});
    getGeometryDefines(geometry: any): {
        HAS_TANGENT: number;
        HAS_NORMAL: number;
        HAS_COLOR: number;
        HAS_COLOR0: number;
        COLOR0_SIZE: any;
    };
}
//# sourceMappingURL=StandardShader.d.ts.map

declare class StandardDepthShader extends MeshShader {
    constructor(config?: {});
}
//# sourceMappingURL=StandardDepthShader.d.ts.map

declare function loginIBLResOnCanvas(canvas: any, regl: any, map: any): {
    dfgLUT: any;
    iblTexes: any;
};
declare function getIBLResOnCanvas(canvas: any): {
    dfgLUT: any;
    iblTexes: any;
};
declare function logoutIBLResOnCanvas(canvas: any, map: any): void;
declare function getPBRUniforms(map: any, iblTexes: any, dfgLUT: any, ssr: any, jitter: any): any;
declare function createIBLTextures(regl: any, map: any): {
    prefilterMap: any;
    envMap: any;
    sh: any;
};
declare function disposeIBLTextures(iblTexes: any): void;
declare function isSupported(regl: any): any;

declare const PBRUtils_createIBLTextures: typeof createIBLTextures;
declare const PBRUtils_disposeIBLTextures: typeof disposeIBLTextures;
declare const PBRUtils_getIBLResOnCanvas: typeof getIBLResOnCanvas;
declare const PBRUtils_getPBRUniforms: typeof getPBRUniforms;
declare const PBRUtils_isSupported: typeof isSupported;
declare const PBRUtils_loginIBLResOnCanvas: typeof loginIBLResOnCanvas;
declare const PBRUtils_logoutIBLResOnCanvas: typeof logoutIBLResOnCanvas;
declare namespace PBRUtils {
  export { PBRUtils_createIBLTextures as createIBLTextures, PBRUtils_disposeIBLTextures as disposeIBLTextures, PBRUtils_getIBLResOnCanvas as getIBLResOnCanvas, PBRUtils_getPBRUniforms as getPBRUniforms, PBRUtils_isSupported as isSupported, PBRUtils_loginIBLResOnCanvas as loginIBLResOnCanvas, PBRUtils_logoutIBLResOnCanvas as logoutIBLResOnCanvas };
}

declare class BoxShadowBlurShader extends QuadShader {
    constructor({ blurOffset }: {
        blurOffset: any;
    });
    _blurOffset: any;
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=BoxShadowBlurShader.d.ts.map

declare class ShadowMapShader extends MeshShader {
    constructor(defines: any);
    filter(mesh: any): any;
}
//# sourceMappingURL=ShadowMapShader.d.ts.map

declare class ShadowPass {
    constructor(renderer: any, { width, height, blurOffset, defines }: {
        width: any;
        height: any;
        blurOffset: any;
        defines: any;
    });
    renderer: any;
    width: any;
    height: any;
    blurOffset: any;
    render(scene: any, { cameraProjViewMatrix, lightDir, farPlane, cameraLookAt }: {
        cameraProjViewMatrix: any;
        lightDir: any;
        farPlane: any;
        cameraLookAt: any;
    }): {
        lightProjViewMatrix: any;
        shadowMap: any;
        depthFBO: any;
        blurFBO: any;
    };
    resize(width: any, height: any): this;
    _renderShadow(scene: any, cameraProjViewMatrix: any, lightDir: any, farPlane: any, cameraLookAt: any): any;
    boxBlurShader: BoxShadowBlurShader;
    _init(defines: any): void;
    depthTex: any;
    shadowMapShader: ShadowMapShader;
    depthFBO: any;
    blurTex: any;
    blurFBO: any;
    dispose(): void;
}
//# sourceMappingURL=ShadowPass.d.ts.map

declare class ShadowDisplayShader extends MeshShader {
    constructor(defines: any);
    getMeshCommand(regl: any, mesh: any): any;
}
//# sourceMappingURL=ShadowDisplayShader.d.ts.map

declare class FBORayPicking {
    constructor(renderer: any, { name, vert, wgslVert, uniforms, defines, extraCommandProps, enableStencil }: {
        name: any;
        vert: any;
        wgslVert: any;
        uniforms: any;
        defines: any;
        extraCommandProps: any;
        enableStencil: any;
    }, fbo: any, map: any);
    _renderer: any;
    _fbo: any;
    _map: any;
    _name: any;
    _vert: any;
    _wgslVert: any;
    _uniforms: any;
    _defines: any;
    _extraCommandProps: any;
    _currentMeshes: any[];
    _init(): void;
    _shader0: MeshShader;
    _shader2: MeshShader;
    _shader1: MeshShader;
    _depthShader: MeshShader;
    _scene: Scene;
    _scene1: Scene;
    filter(): boolean;
    /**
     * Render meshes to fbo for further picking
     * @param {Mesh[]} meshes - meshes to render
     * @param {Object} uniforms - uniform values
     * @param {Boolean} once - if it's an one time rendering which can gain some performance improvement
     */
    render(meshes: Mesh[], uniforms: any, once?: boolean): this;
    _currentShader: any;
    pickAll(x: any, y: any, tolerance: any, uniforms: any, options: any): {
        meshId: any;
        pickingId: any;
        point: number[];
        coordinate: any[];
    }[];
    pick(x: any, y: any, tolerance: any, uniforms: any, options?: {}): {
        meshId: any;
        pickingId: any;
        point: number[];
        coordinate: any[];
    } | {
        pickingId: any;
        meshId: any;
        point: any;
        coordinate?: undefined;
    };
    _pick(x: any, y: any, tolerance: any, uniforms: any, options?: {}): {
        pickingId: any;
        meshId: any;
        point: any;
        meshIds?: undefined;
        pickingIds?: undefined;
        coords?: undefined;
        points?: undefined;
        width?: undefined;
        height?: undefined;
    } | {
        meshIds: any[];
        pickingIds: any[];
        coords: any[][];
        points: number[][];
        width: number;
        height: number;
        pickingId?: undefined;
        meshId?: undefined;
        point?: undefined;
    };
    _convertPickPoint(point: any): any[];
    clear(): this;
    getMeshAt(idx: any): any;
    getRenderedMeshes(): any[];
    dispose(): void;
    _getWorldPos(x: any, y: any, depth: any, viewMatrix: any, projMatrix: any): number[];
    _getPickingId(x: any, y: any, width: any, height: any, pixels: any, meshes: any, uniforms: any): any[];
    _pickDepth(x: any, y: any, width: any, height: any, pixels: any, meshes: any, uniforms: any): number[];
    _packData(data: any, shader: any): {
        meshId: any;
        pickingId: any;
    };
    _clearFbo(framebuffer: any): void;
    _getShader(meshes: any, once: any): MeshShader;
    _getFBO1(): any;
    _fbo1: any;
    _getParams(px: any, py: any, tolerance: any, fbo: any): {
        px: any;
        py: any;
        width: number;
        height: number;
    };
    getPickingVert(): any;
    getPickingWGSLVert(): any;
    getUniformDeclares(): any;
}

declare const KEY_DISPOSED = "__reshader_disposed";
declare const WEBGL_EXTENSIONS: string[];
declare const WEBGL_OPTIONAL_EXTENSIONS: string[];
declare const ERROR_NOT_IMPLEMENTED = "not implemented";

declare const Constants_d_ERROR_NOT_IMPLEMENTED: typeof ERROR_NOT_IMPLEMENTED;
declare const Constants_d_KEY_DISPOSED: typeof KEY_DISPOSED;
declare const Constants_d_WEBGL_EXTENSIONS: typeof WEBGL_EXTENSIONS;
declare const Constants_d_WEBGL_OPTIONAL_EXTENSIONS: typeof WEBGL_OPTIONAL_EXTENSIONS;
declare namespace Constants_d {
  export { Constants_d_ERROR_NOT_IMPLEMENTED as ERROR_NOT_IMPLEMENTED, Constants_d_KEY_DISPOSED as KEY_DISPOSED, Constants_d_WEBGL_EXTENSIONS as WEBGL_EXTENSIONS, Constants_d_WEBGL_OPTIONAL_EXTENSIONS as WEBGL_OPTIONAL_EXTENSIONS };
}

declare class KHRTechniquesWebglManager {
    constructor(regl: any, extraCommandProps: any, resLoader: any);
    _regl: any;
    _khrShaders: {};
    _commandProps: any;
    _resLoader: any;
    getExcludeFilter(): (mesh: any) => boolean;
    /**
     * 遍历Shader
     *
     * */
    forEachShader(cb: any): void;
    createMesh(primitive: any, gltf: any, excludeElementsInVAO: any, useWebGL2: any): {
        geometry: Geometry;
        material: Material;
    };
    _createGeometry(gltfMesh: any, attributeSemantics: any, excludeElementsInVAO: any, shaderHash: any): Geometry;
    _getTexture(texInfo: any): Texture2D;
    _createTechniqueShader(hash: any, extension: any, techIndex: any, extraCommandProps: any, useWebGL2: any): {
        shader: MeshShader;
        filter: (mesh: any) => boolean;
        uniformSemantics: {};
        attributeSemantics: {};
    };
    dispose(): void;
}

/*!
 * codes from GEngine
 * https://github.com/GEngine-js/GEngine/blob/e9c0e2c4a28cc6b9fec133c75958b80115e53a63/src/shader/WGSLParseDefines.ts
 * ISC License
 */

declare function WGSLParseDefines(shader: string, meshDefines: ShaderDefines): string;
declare function getDefineConditionValue(define: any, defines: any, usedDefines: any): any;

declare const WGSLParseDefines_d_WGSLParseDefines: typeof WGSLParseDefines;
declare const WGSLParseDefines_d_getDefineConditionValue: typeof getDefineConditionValue;
declare namespace WGSLParseDefines_d {
  export { WGSLParseDefines_d_WGSLParseDefines as WGSLParseDefines, WGSLParseDefines_d_getDefineConditionValue as getDefineConditionValue };
}

declare const HDR: {
    parseHDR: typeof parseRGBE;
};

declare const pbr: {
    PBRHelper: typeof PBRHelper;
    StandardMaterial: typeof StandardMaterial;
    StandardSpecularGlossinessMaterial: typeof StandardSpecularGlossinessMaterial;
    StandardShader: typeof StandardShader;
    StandardDepthShader: typeof StandardDepthShader;
    PBRUtils: typeof PBRUtils;
};

declare const earcut: any;
//# sourceMappingURL=index.d.ts.map

type index_d_AbstractTexture = AbstractTexture;
declare const index_d_AbstractTexture: typeof AbstractTexture;
type index_d_BloomPass = BloomPass;
declare const index_d_BloomPass: typeof BloomPass;
type index_d_BoundingBox = BoundingBox;
declare const index_d_BoundingBox: typeof BoundingBox;
type index_d_BoxBlurShader = BoxBlurShader;
declare const index_d_BoxBlurShader: typeof BoxBlurShader;
type index_d_CopyShader = CopyShader;
declare const index_d_CopyShader: typeof CopyShader;
type index_d_EdgeGeometry = EdgeGeometry;
declare const index_d_EdgeGeometry: typeof EdgeGeometry;
type index_d_EdgeShader = EdgeShader;
declare const index_d_EdgeShader: typeof EdgeShader;
type index_d_ExtentPass = ExtentPass;
declare const index_d_ExtentPass: typeof ExtentPass;
type index_d_FBORayPicking = FBORayPicking;
declare const index_d_FBORayPicking: typeof FBORayPicking;
type index_d_FogPass = FogPass;
declare const index_d_FogPass: typeof FogPass;
type index_d_FogShader = FogShader;
declare const index_d_FogShader: typeof FogShader;
type index_d_FxaaShader = FxaaShader;
declare const index_d_FxaaShader: typeof FxaaShader;
type index_d_GLTFManager = GLTFManager;
declare const index_d_GLTFManager: typeof GLTFManager;
type index_d_Geometry = Geometry;
declare const index_d_Geometry: typeof Geometry;
type index_d_GraphicsDevice = GraphicsDevice;
declare const index_d_GraphicsDevice: typeof GraphicsDevice;
type index_d_GraphicsFramebuffer = GraphicsFramebuffer;
declare const index_d_GraphicsFramebuffer: typeof GraphicsFramebuffer;
type index_d_GraphicsTexture = GraphicsTexture;
declare const index_d_GraphicsTexture: typeof GraphicsTexture;
declare const index_d_HDR: typeof HDR;
type index_d_HeatmapDisplayShader = HeatmapDisplayShader;
declare const index_d_HeatmapDisplayShader: typeof HeatmapDisplayShader;
type index_d_HeatmapShader = HeatmapShader;
declare const index_d_HeatmapShader: typeof HeatmapShader;
type index_d_ImageShader = ImageShader;
declare const index_d_ImageShader: typeof ImageShader;
type index_d_InstancedMesh = InstancedMesh;
declare const index_d_InstancedMesh: typeof InstancedMesh;
type index_d_Jitter = Jitter;
declare const index_d_Jitter: typeof Jitter;
type index_d_KHRTechniquesWebglManager = KHRTechniquesWebglManager;
declare const index_d_KHRTechniquesWebglManager: typeof KHRTechniquesWebglManager;
type index_d_Material = Material;
declare const index_d_Material: typeof Material;
type index_d_MeshShader = MeshShader;
declare const index_d_MeshShader: typeof MeshShader;
type index_d_PhongMaterial = PhongMaterial;
declare const index_d_PhongMaterial: typeof PhongMaterial;
type index_d_PhongShader = PhongShader;
declare const index_d_PhongShader: typeof PhongShader;
type index_d_PhongSpecularGlossinessMaterial = PhongSpecularGlossinessMaterial;
declare const index_d_PhongSpecularGlossinessMaterial: typeof PhongSpecularGlossinessMaterial;
type index_d_Plane = Plane;
declare const index_d_Plane: typeof Plane;
type index_d_PointLineShader = PointLineShader;
declare const index_d_PointLineShader: typeof PointLineShader;
type index_d_PostProcessShader = PostProcessShader;
declare const index_d_PostProcessShader: typeof PostProcessShader;
type index_d_QuadShader = QuadShader;
declare const index_d_QuadShader: typeof QuadShader;
type index_d_Renderer = Renderer;
declare const index_d_Renderer: typeof Renderer;
type index_d_ResourceLoader = ResourceLoader;
declare const index_d_ResourceLoader: typeof ResourceLoader;
type index_d_ScanEffectPass = ScanEffectPass;
declare const index_d_ScanEffectPass: typeof ScanEffectPass;
type index_d_Scene = Scene;
declare const index_d_Scene: typeof Scene;
type index_d_ShadowDisplayShader = ShadowDisplayShader;
declare const index_d_ShadowDisplayShader: typeof ShadowDisplayShader;
type index_d_ShadowMapShader = ShadowMapShader;
declare const index_d_ShadowMapShader: typeof ShadowMapShader;
type index_d_ShadowPass = ShadowPass;
declare const index_d_ShadowPass: typeof ShadowPass;
type index_d_SkyboxShader = SkyboxShader;
declare const index_d_SkyboxShader: typeof SkyboxShader;
type index_d_SsrPass = SsrPass;
declare const index_d_SsrPass: typeof SsrPass;
type index_d_StandardLiteMaterial = StandardLiteMaterial;
declare const index_d_StandardLiteMaterial: typeof StandardLiteMaterial;
type index_d_StandardLiteShader = StandardLiteShader;
declare const index_d_StandardLiteShader: typeof StandardLiteShader;
type index_d_Texture2D = Texture2D;
declare const index_d_Texture2D: typeof Texture2D;
type index_d_WaterShader = WaterShader;
declare const index_d_WaterShader: typeof WaterShader;
type index_d_WireFrameMaterial = WireFrameMaterial;
declare const index_d_WireFrameMaterial: typeof WireFrameMaterial;
type index_d_WireframeShader = WireframeShader;
declare const index_d_WireframeShader: typeof WireframeShader;
declare const index_d_earcut: typeof earcut;
declare const index_d_glMatrix: typeof glMatrix;
declare const index_d_mat2: typeof mat2;
declare const index_d_mat2d: typeof mat2d;
declare const index_d_mat3: typeof mat3;
declare const index_d_mat4: typeof mat4;
declare const index_d_pbr: typeof pbr;
declare const index_d_quat: typeof quat;
declare const index_d_quat2: typeof quat2;
declare const index_d_vec2: typeof vec2;
declare const index_d_vec3: typeof vec3;
declare const index_d_vec4: typeof vec4;
declare namespace index_d {
  export { index_d_AbstractTexture as AbstractTexture, index_d_BloomPass as BloomPass, index_d_BoundingBox as BoundingBox, index_d_BoxBlurShader as BoxBlurShader, Constants_d as Constants, index_d_CopyShader as CopyShader, index_d_EdgeGeometry as EdgeGeometry, index_d_EdgeShader as EdgeShader, index_d_ExtentPass as ExtentPass, index_d_FBORayPicking as FBORayPicking, index_d_FogPass as FogPass, index_d_FogShader as FogShader, index_d_FxaaShader as FxaaShader, GLTFHelper_d as GLTFHelper, index_d_GLTFManager as GLTFManager, index_d_Geometry as Geometry, index_d_GraphicsDevice as GraphicsDevice, index_d_GraphicsFramebuffer as GraphicsFramebuffer, index_d_GraphicsTexture as GraphicsTexture, index_d_HDR as HDR, index_d_HeatmapDisplayShader as HeatmapDisplayShader, index_d_HeatmapShader as HeatmapShader, index_d_ImageShader as ImageShader, index_d_InstancedMesh as InstancedMesh, index_d_Jitter as Jitter, index_d_KHRTechniquesWebglManager as KHRTechniquesWebglManager, index_d_Material as Material, Mesh$1 as Mesh, index_d_MeshShader as MeshShader, index_d_PhongMaterial as PhongMaterial, index_d_PhongShader as PhongShader, index_d_PhongSpecularGlossinessMaterial as PhongSpecularGlossinessMaterial, index_d_Plane as Plane, index_d_PointLineShader as PointLineShader, index_d_PostProcessShader as PostProcessShader, index_d_QuadShader as QuadShader, REGLHelper_d as REGLHelper, RainRipplePass as RainRipplesPass, index_d_Renderer as Renderer, index_d_ResourceLoader as ResourceLoader, index_d_ScanEffectPass as ScanEffectPass, EffectShader as ScanEffectShader, index_d_Scene as Scene, GPUShader as Shader, _default$2 as ShaderLib, index_d_ShadowDisplayShader as ShadowDisplayShader, index_d_ShadowMapShader as ShadowMapShader, index_d_ShadowPass as ShadowPass, index_d_SkyboxShader as SkyboxShader, index_d_SsrPass as SsrPass, index_d_StandardLiteMaterial as StandardLiteMaterial, index_d_StandardLiteShader as StandardLiteShader, index_d_Texture2D as Texture2D, Util_d as Util, WGSLParseDefines_d as WGSLParseDefines, index_d_WaterShader as WaterShader, WebGLConstants_d as WebGLConstants, _default$1 as WgslShaderLib, index_d_WireFrameMaterial as WireFrameMaterial, index_d_WireframeShader as WireframeShader, index_d_earcut as earcut, index_d_glMatrix as glMatrix, index_d_mat2 as mat2, index_d_mat2d as mat2d, index_d_mat3 as mat3, index_d_mat4 as mat4, index_d_pbr as pbr, index_d_quat as quat, index_d_quat2 as quat2, index_d_vec2 as vec2, index_d_vec3 as vec3, index_d_vec4 as vec4 };
}

declare class Mask extends Polygon {
    getMode(): any;
    remove(): this;
    getMesh(regl: any, ratio: any, minHeight: any): any;
    _mesh: any;
    setCoordinates(coordinates: any): this;
    _createGeometry(regl: any): Geometry | {
        geometry: Geometry;
        copyGeometry: Geometry;
    };
    _createPOSITION(data: any, hasHeight: any): {
        positions: number[];
        uvs: number[];
        triangles: any;
    };
    _createTexcoords(vertices: any, dimension: any): number[];
    _createBilinearPOSITON(data: any): {
        positions: number[];
        uvs: number[];
        triangles: number[];
    };
    _positions: any[];
    clearMesh(): void;
    maskGeoJSON: any;
    _getMaskMode(): any;
    _getMaskColor(): any;
    _altitudeToPoint(altitude?: number): number;
    _setLocalTransform(mesh: any): void;
    _dispose(): void;
    containsPoint(coordinate: any): boolean;
    _contains(coordinates: any, coordinate: any): boolean;
    _calArea(coordinates: any): number;
}

declare class GroupGLLayer extends maptalks.Layer {
    /**
     * Reproduce a GroupGLLayer from layer's profile JSON.
     * @param  {Object} layerJSON - layer's profile JSON
     * @return {GroupGLLayer}
     * @static
     * @private
     * @function
     */
    static fromJSON(layerJSON: object): GroupGLLayer;
    options: GroupGLLayerOptions;
    layers: maptalks.Layer[];
    /**
     * @param id    - layer's id
     * @param layers      - layers to add
     * @param  [options=null]          - construct options
     */
    constructor(id: string, layers: maptalks.Layer[], options: GroupGLLayerOptions);
    sortLayersByZIndex(): void;
    setSceneConfig(sceneConfig: GroupGLLayerSceneConfig): this;
    getSceneConfig(): GroupGLLayerSceneConfig;
    getGroundConfig(): SceneGround;
    getWeatherConfig(): SceneWeather;
    getScanEffectConfig(): ScanEffect;
    /**
     * Add a new Layer.
     * @param layer - new layer
     * @param index - index to insert
     * @returns {GroupGLLayer} this
     */
    addLayer(layer: maptalks.Layer, index?: number): this;
    removeLayer(layer: maptalks.Layer): this;
    clearLayers(): this;
    getPolygonOffsetCount(): number;
    /**
     * Get children TileLayer
     * @returns {TileLayer[]}
     */
    getLayers(): maptalks.Layer[];
    /**
     * 导出GroupGLLayer的序列化JSON对象，可以用于反序列化为一个GroupGLLayer对象。
     * @english
     * Export the GroupGLLayer's profile json. <br>
     * Layer's profile is a snapshot of the layer in JSON format. <br>
     * It can be used to reproduce the instance by [fromJSON]{@link Layer#fromJSON} method
     * @return layer's profile JSON
     */
    toJSON(): LayerJSONType;
    onLoadEnd(): void;
    onRemove(): void;
    getChildLayer(id: string): maptalks.Layer | null;
    getLayer(id: string): maptalks.Layer | null;
    addAnalysis(analysis: Analysis): void;
    removeAnalysis(analysis: Analysis): void;
    clearAnalysis(): void;
    /**
     * 查询给定坐标上的数据要素
     *
     * @english
     * Identify the geometries on the given coordinate
     * @param  coordinate   - coordinate to identify
     * @param  options      - options
     * @return
     */
    identify(coordinate: maptalks.Coordinate, options: object): any[];
    /**
     * 查询给定容器坐标（containerPoint）上的数据要素
     * @english
     * Identify the data at the given point
     * @param point - container point to identify
     * @param options - the identify options
     **/
    identifyAtPoint(point: maptalks.Point, options?: any): any[];
    getTerrain(): TerrainOptions | undefined | null;
    setTerrain(info: TerrainOptions | null): this;
    removeTerrain(): this;
    updateTerrainMaterial(mat: object): void;
    queryTerrain(coord: maptalks.Coordinate, out: QueryHitResult): QueryHitResult;
    queryTerrainAtPoint(containerPoint: maptalks.Point): any;
    query3DTilesAtPoint(containerPoint: maptalks.Point): maptalks.Coordinate;
    _queryRayCast(containerPoint: maptalks.Point, meshes: any[]): any;
    queryTerrainByProjCoord(projCoord: maptalks.Coordinate, out: QueryHitResult): QueryHitResult;
    getTerrainLayer(): TerrainLayer | undefined;
    fire(...args: any[]): void;
}
type TerrainOptions = {
    type: 'mapbox' | 'tianditu' | 'cesium' | 'cesium-ion';
    urlTemplate: string;
    spatialReference?: string;
    shader?: 'lit' | 'default';
    subdomains?: string[];
    tileSystem?: number[];
    tileSize?: number;
    zoomOffset?: number;
    requireSkuToken?: boolean;
    depthMask?: boolean;
    depthFunc?: ComparisonOperatorType;
    blendSrc?: BlendingFunction;
    blendDst?: BlendingFunction;
    material?: object;
    masks?: Mask[];
};
type QueryHitResult = [number | null, 0 | 1];
type GroupGLLayerOptions = {
    renderer?: 'gl';
    antialias?: true;
    extensions?: string[];
    single?: boolean;
    onlyWebGL1?: boolean;
    optionalExtensions?: string[];
    forceRenderOnZooming?: true;
    forceRenderOnMoving?: true;
    forceRenderOnRotating?: true;
    viewMoveThreshold?: number;
    geometryEvents?: boolean;
    multiSamples?: number;
    forceRedrawPerFrame?: boolean;
    sceneConfig?: GroupGLLayerSceneConfig;
    terrain?: TerrainOptions;
};
declare enum SkyboxMode {
    AMBIENT = 0,
    REALISTIC = 1
}
type SceneEnvironment = {
    enable: boolean;
    mode?: SkyboxMode;
    level?: 0 | 1 | 2 | 3;
    brightness?: number;
};
type SceneGround = {
    enable?: boolean;
    renderPlugin: {
        type: 'lit' | 'fill';
    };
    symbol: {
        ssr?: true;
        material?: any;
        polygonFill?: number[];
        polygonOpacity?: number;
    };
};
type SceneWeather = {
    enable?: boolean;
    fog?: {
        enable?: boolean;
        start?: number;
        end?: number;
        color?: number[];
    };
    rain?: {
        enable?: boolean;
        density?: number;
        windDirectionX?: number;
        windDirectionY?: number;
        rainTexture: string;
    };
    snow?: {
        enable?: boolean;
    };
};
type ScanEffectItem = {
    center: maptalks.Coordinate;
    radius: number;
    speed: number;
    color: number[];
};
type ScanEffect = {
    enable?: boolean;
    effects: ScanEffectItem[];
};
type SceneShadow = {
    enable?: boolean;
    type?: 'esm';
    quality?: 'low' | 'medium' | 'high';
    opacity?: number;
    color?: number[];
    blurOffset?: number;
};
type ScenePostProcess = {
    enable?: boolean;
    antialias?: {
        enable?: boolean;
    };
    ssr?: {
        enable?: boolean;
    };
    sharpen?: {
        enable?: boolean;
        factor?: number;
    };
    bloom?: {
        enable?: boolean;
        factor?: number;
        threshold?: number;
        radius?: number;
    };
    outline: {
        enable?: boolean;
        highlightFactor?: number;
        outlineFactor?: number;
        outlineWidth?: number;
        outlineColor?: number[];
    };
    scanEffect?: ScanEffect;
};
type GroupGLLayerSceneConfig = {
    environment?: SceneEnvironment;
    shadow?: SceneShadow;
    ground?: SceneGround;
    weather?: SceneWeather;
    postProcess?: ScenePostProcess;
};

declare class GroundPainter {
    renderer: Renderer;
    static getGroundTransform(out: any, map: any): any;
    constructor(regl: any, layer: any);
    needToRedraw(): any;
    getMap(): any;
    getSymbol(): any;
    isEnable(): any;
    paint(context: any): boolean;
    _isInSSRPhase(context: any): boolean;
    update(): void;
    setToRedraw(): void;
    dispose(): void;
    _getShader(): any;
    _getUniformValues(context: any): any;
    _getCommonUniforms(context: any): any;
    _setIncludeUniformValues(uniforms: any, context: any): void;
    _disposeIblTextures(): void;
    _init(): void;
    _getExtraCommandProps(): {
        viewport: {
            x: number;
            y: number;
            width: () => any;
            height: () => any;
        };
        cull: {
            enable: boolean;
        };
        depth: {
            enable: boolean;
            mask: () => any;
            range: () => any;
            func: string;
        };
        blend: {
            enable: boolean;
            func: {
                src: string;
                dst: string;
            };
            equation: string;
        };
        polygonOffset: {
            enable: boolean;
            offset: {
                factor: (context: any, props: any) => any;
                units: (context: any, props: any) => any;
            };
        };
    };
    _hasIBL(): boolean;
    _createGround(): void;
    _transformGround(): void;
    _getGroundDefines(context: any): any;
    _updateMaterial(): void;
    _onMaterialComplete(): void;
    _createPatternTexture(image: any): any;
    _parseColor(c: any): any;
    _getUVOffsetAnim(): any;
    getRenderMeshes(): Mesh$1[];
}
//# sourceMappingURL=GroundPainter.d.ts.map

declare const canvasCompatible: <T extends maptalks.MixinConstructor>(Base: T) => {
    new (...args: any[]): {
        [x: string]: any;
        createContext(): void;
    };
} & T;
//# sourceMappingURL=CanvasCompatible.d.ts.map

declare class MapGLRenderer extends renderer.MapAbstractRenderer {
    clearLayerCanvasContext(layer: any): void;
    gl: any;
    regl: REGL.Regl;
    reglGL: any;
    device: REGL.Regl;
    _initGL(): void;
    getContextInstance(): any;
}

declare class MapGPURenderer extends renderer.MapAbstractRenderer {
    device: GraphicsDevice;
    gpuDevice: GPUDevice;
    drawLayers(layers: Layer[], framestamp: number): boolean;
    clearCanvas(): void;
    clearLayerCanvasContext(layer: any): void;
    isWebGL(): boolean;
    isWebGPU(): boolean;
    createContext(): Promise<void>;
}

declare function clearShowOnly(mesh: any): void;
declare function showOnly(regl: any, mesh: any, items: any, timestamp: any, feaIdIndiceMap: any): void;
declare function clearHighlight(mesh: any): void;
declare function highlightMesh(regl: any, mesh: any, highlighted: any, timestamp: any, feaIdIndiceMap: any): void;
declare function deleteHighlightBloomMesh(mesh: any): void;

declare const highlight_d_clearHighlight: typeof clearHighlight;
declare const highlight_d_clearShowOnly: typeof clearShowOnly;
declare const highlight_d_deleteHighlightBloomMesh: typeof deleteHighlightBloomMesh;
declare const highlight_d_highlightMesh: typeof highlightMesh;
declare const highlight_d_showOnly: typeof showOnly;
declare namespace highlight_d {
  export { highlight_d_clearHighlight as clearHighlight, highlight_d_clearShowOnly as clearShowOnly, highlight_d_deleteHighlightBloomMesh as deleteHighlightBloomMesh, highlight_d_highlightMesh as highlightMesh, highlight_d_showOnly as showOnly };
}

declare function fillIncludes(defines: any, uniformDeclares: any, context: any): void;
declare function setIncludeUniformValues(uniforms: any, context: any): void;

declare const context_d_fillIncludes: typeof fillIncludes;
declare const context_d_setIncludeUniformValues: typeof setIncludeUniformValues;
declare namespace context_d {
  export { context_d_fillIncludes as fillIncludes, context_d_setIncludeUniformValues as setIncludeUniformValues };
}

declare class HeatmapProcess {
    constructor(regl: any, sceneConfig: any, layer: any, colorStops: any, stencil: any, polygonOffset: any);
    renderer: Renderer;
    sceneConfig: any;
    _layer: any;
    _colorStops: any;
    _stencil: any;
    _polygonOffset: any;
    _outputSize: any[];
    render(scene: any, uniforms: any, fbo: any): number;
    dispose(): void;
    _createColorRamp(): void;
    _rampCanvas: HTMLCanvasElement;
    _rampCtx: CanvasRenderingContext2D;
    _colorRampTex: any;
    _check(): void;
    _init(): void;
    _createGround(): void;
    _ground: Mesh$1;
    _groundScene: Scene;
    _transformGround(): void;
    _createHeatmapTex(): void;
    _heatmapFBO: any;
    _createShader(): void;
    _heatmapShader: HeatmapShader;
    _displayShader: HeatmapDisplayShader;
}

declare function export_default<T extends MixinConstructor>(Base: T): {
    new (...args: any[]): {
        _maskProjViewMatrix: mat4;
        _maskExtentInWorld: [number, number, number, number];
        removeMask(masks: undefined | null | any): any;
        setMask(masks: any): any;
        onAdd(): void;
        getMasks(): any;
        onGeometryEvent(param: any): void;
        identifyMask(point: any, options: any): any[];
        remove(): void;
        updateMask(extent: any): {
            projViewMatrix: mat4;
            extentInWorld: [number, number, number, number];
        };
        getProjViewMatrixInOrtho(extent: any): {
            mapExtent: any;
            projViewMatrix: mat4;
        };
        updateMaskExtent(): void;
        getMaskExtent(): {
            extent: Extent;
            ratio: number;
            minHeight: any;
        };
    };
} & T;

declare function _default(Base: any): {
    new (): {
        [x: string]: any;
        setMask(extent: any, projViewMatrix: any, ratio: any, minHeight: any): void;
        viewport: {
            x: number;
            y: number;
            width: () => any;
            height: () => any;
        };
        _extentPass: ExtentPass;
        needToRedraw(): boolean;
        getMaskUniforms(): any;
        getMaskDefines(): {};
        _maskDefines: {};
        updateMaskDefines(mesh: any): void;
        _clearMask(): void;
        _deleteMaskUniforms(): void;
    };
    [x: string]: any;
};

declare class ClipMask extends Mask {
    constructor(coordinates: any, options: any);
    _createMesh(regl: any): Mesh$1;
    _updateUniforms(mesh: any, ratio: any, minHeight: any): void;
    setHeightRange(heightRange: any): void;
    getHeightRange(): any;
    _getHeightRange(): number[];
    _setDefines(mesh: any): void;
}

declare class ClipInsideMask extends ClipMask {
    _mode: string;
}

declare class ClipOutsideMask extends ClipMask {
    _mode: string;
}

declare class FlatMask extends Mask {
    constructor(coordinates: any, options: any);
    setFlatheight(flatHeight: any): void;
    _createMesh(regl: any): Mesh$1;
    _updateUniforms(mesh: any): void;
    _setDefines(mesh: any): void;
    _getHeightRange(): any[];
}

declare class FlatInsideMask$1 extends FlatMask {
    _mode: string;
}

declare class FlatInsideMask extends FlatMask {
    _mode: string;
}

declare class ColorMask extends Mask {
    constructor(coordinates: any, options: any);
    _mode: string;
    setHeightRange(heightRange: any): void;
    _createMesh(regl: any): Mesh$1;
    _updateUniforms(mesh: any, ratio: any, minHeight: any): void;
    _setDefines(mesh: any): void;
    _getHeightRange(): number[];
}

declare class VideoMask extends Mask {
    constructor(coordinates: any, options: any);
    _mode: string;
    play(): void;
    pause(): void;
    setAudio(audio: any): void;
    setUrl(url: any): void;
    getState(): string;
    _createMesh(regl: any): Mesh$1;
    _copyMesh: Mesh$1;
    _updateUniforms(mesh: any): void;
    _setDefines(mesh: any): void;
    _createVideoTexture(regl: any): any;
    _createVideo(): void;
    _videoState: string;
    _video: HTMLElement;
    _update(): void;
    _needUpdate(): boolean;
}

declare class ImageMask extends Mask {
    /**
     * @param  {Object} options.url   image resource url
     */
    constructor(coordinates: any, options: any);
    _mode: string;
    setUrl(url: any): void;
    _createMesh(regl: any): Mesh$1;
    _copyMesh: Mesh$1;
    _updateUniforms(mesh: any): void;
    _setDefines(mesh: any): void;
    _createTexture(imageTexture: any): void;
    getBBox(): [vec3, vec3];
}

declare class ElevateMask extends FlatMask {
    _mode: string;
    setElevation(elevation: any): void;
}

declare class BoxClipMask extends ClipMask {
    _position: any;
    setPosition(position: any): void;
    getPosition(): any;
    setWidth(width: any): void;
    setLength(length: any): void;
    setHeight(height: any): void;
    setRotation(rotation: any): void;
    _updateCoordinates(): void;
    _generateCoordinates(map: any, center: any, length: any, width: any, height: any, rotation: any): {
        coordinates: any[][];
        heightRange: any[];
    };
    _rotatePoint(points: any, center: any, rotation: any): any;
}

declare class BoxInsideClipper extends BoxClipMask {
    _mode: string;
}

declare class BoxOutsideClipper extends BoxClipMask {
    _mode: string;
}

declare class RayCaster {
    constructor(from: any, to: any, isLngLat?: boolean);
    _from: any;
    _to: any;
    _isLngLat: boolean;
    setFromPoint(from: any): void;
    setToPoint(to: any): void;
    test(meshes: any, map: any, options?: {}): {
        mesh: any;
        coordinates: {
            coordinate: any;
            indices: any[];
            normal: vec3;
        }[];
    }[];
    _testMesh(mesh: any, ray: any, map: any, positions: any, altitudes: any, indices: any, dim: any, matrix: any, count: any): {
        coordinate: any;
        indices: any[];
        normal: vec3;
    }[];
    _toWorldPosition(out: any, map: any, pos: any, altitude: any, matrix: any): any;
    _testIntersection(out: any, triangle: any, ray: any): any;
    _checkBBox(bbox: any, ray: any): any;
}

declare class Measure3DTool extends maptalks.DrawTool {
    constructor(options: any);
    _drawCoordinates: any[];
    addTo(map: any): this;
    _map: any;
    _addHelperLayer(): void;
    _afterEnable(): void;
    _afterDisable(): void;
    _getPickedCoordinate(e: any): any;
    _msOnDrawStart(e: any): void;
    _first: boolean;
    _msOnDrawVertex(e: any): void;
    _msOnMouseMove(e: any): void;
    _msOnDrawEnd(e: any): void;
    _drawEnd(): void;
    _helperGeometry: any;
    _label: any;
    remove(): void;
    clear(): void;
}

declare class Distance3DTool extends Measure3DTool {
    _helperLayer: maptalks.DrawToolLayer;
    _markerLayer: maptalks.DrawToolLayer;
    _drawVertexMarker(): void;
    _drawLabel(): void;
    _getUnitContent(length: any): string;
    _measure: any;
    _units: string;
    _addHelperGeometry(coordinate: any): void;
    getMeasureResult(): any;
}

declare class Area3DTool extends Measure3DTool {
    _helperLayer: maptalks.DrawToolLayer;
    _markerLayer: maptalks.DrawToolLayer;
    _drawVertexMarker(): void;
    _getPolygonCoordinates(coordinates: any): any;
    _drawLabel(): void;
    _getUnitContent(area: any): string;
    _measure: any;
    _units: string;
    _addHelperGeometry(coordinate: any): void;
    _polygon: maptalks.Polygon;
    getMeasureResult(): number;
}

declare class Height3DTool extends Measure3DTool {
    _helperLayer: maptalks.DrawToolLayer;
    _markerLayer: maptalks.DrawToolLayer;
    _drawVertexMarker(): void;
    _drawLabel(coordinates: any, distances: any): void;
    _getUnitContent(length: any): string;
    _measure: any;
    _units: string;
    _addHelperGeometry(coordinate: any): void;
    getMeasureResult(): any;
}

export { Area3DTool, BoxInsideClipper as BoxInsideClipMask, BoxOutsideClipper as BoxOutsideClipMask, canvasCompatible as CanvasCompatible, ClipInsideMask, ClipOutsideMask, ColorMask, context_d as ContextUtil, Distance3DTool, ElevateMask, FlatInsideMask$1 as FlatInsideMask, FlatInsideMask as FlatOutsideMask, GroundPainter, GroupGLLayer, HeatmapProcess, Height3DTool, highlight_d as HighlightUtil, ImageMask, MapGLRenderer, MapGPURenderer, export_default as MaskLayerMixin, _default as MaskRendererMixin, Measure3DTool, RayCaster, VideoMask, index_d as reshader };
