import { Matrix4 } from "@math.gl/core";
import TransformClassBaidu from '../support/transform-class-baidu';
import type { ResultLngLat } from '../support/coordConver';
type MaskType = number[][] | number[][][] | number[][][][];
export interface XyzLayerOptions {
    url: string;
    subdomains?: string[];
    tileType?: 'xyz' | 'bd09';
    proj?: 'wgs84' | 'gcj02' | 'bd09';
    zooms?: [number, number];
    opacity?: number;
    visible?: boolean;
    zIndex?: number;
    debug?: boolean;
    mask?: MaskType;
    cacheSize?: number;
    tileMaxZoom?: number;
    altitude?: number;
}
interface XYZ {
    x: number;
    y: number;
    z: number;
}
interface PosParamType {
    size: number;
    stride: number;
    offset: number;
}
interface TileType {
    xyz: XYZ;
    xyzKey: string;
    buffer?: WebGLBuffer;
    PosParam?: PosParamType;
    TextCoordParam?: PosParamType;
    texture?: WebGLTexture;
    isLoad: boolean;
    url: string;
    image?: HTMLImageElement;
    imageCanceled: boolean;
    imageError?: boolean;
}
interface MaskCacheType {
    FSIZE: number;
    vertexBuffer: WebGLBuffer;
    indexBuffer: WebGLBuffer;
    deviationLength: number;
}
declare class CustomXyzLayer {
    options: XyzLayerOptions;
    map: any;
    gl: any;
    layer: any;
    customCoords: any;
    center: any;
    program: any;
    showTiles: TileType[];
    isReadRender: boolean;
    isLayerShow: boolean;
    tileCache: TileType[];
    gridCache: Record<string, ResultLngLat>;
    transformBaidu: TransformClassBaidu;
    a_Pos: GLint | undefined;
    a_TextCoord: GLint | undefined;
    mapCallback: any;
    maskCache: MaskCacheType[];
    maskProgram: any;
    mask_Pos: GLint | undefined;
    _projectionMatrix: Matrix4;
    _viewMatrix4: Matrix4;
    _mvpMatrix4: Matrix4;
    isOrtho: boolean;
    constructor(map: any, options: XyzLayerOptions);
    _renderMask(gl: any): void;
    _renderTile(gl: any): void;
    validate(options: XyzLayerOptions): void;
    getDefaultGlLayerOptions(): XyzLayerOptions;
    _createMask(mask?: MaskType): void;
    getMaskDeep(mask: any, deepNumber?: number): number;
    _convertMaskLnglatToCoords(mask: any): any;
    _convertLnglatToCoords(lnglat: [number, number]): any;
    update(): void;
    _cancelOutViewImage(currentTiles: XYZ[]): void;
    getTileCache(key: string): TileType | undefined;
    pushTileCache(tile: TileType): void;
    addGridCache(xyz: XYZ, xPlus: number, yPlus: number): void;
    tileDistance(tile1: XYZ, tile2: [number, number]): number;
    createTileKey(xyz: XYZ | number, y?: number, z?: number): string;
    deepFormatTileNumber(num: number, maxNum: number): any;
    createTile(gl: any, xyz: XYZ): TileType;
    setVertex(gl: any, program: any): void;
    requestRender(): void;
    show(): void;
    hide(): void;
    getzIndex(): number;
    setzIndex(zIndex: number): void;
    getOpacity(): number;
    setOpacity(opacity: number): void;
    getZooms(): [number, number];
    setZooms(zooms: [number, number]): void;
    setMask(mask?: MaskType): void;
    getMask(): MaskType | undefined;
    getMap(): any;
    _destroyMaskCache(): void;
    _destroyTile(tile: TileType): void;
    _clearAllCacheTile(): void;
    _clearShowTile(): void;
    destroy(): void;
}
export { CustomXyzLayer };
