import { JSX } from 'react';
import { VectorTile as LayerVectorTile } from 'ol/layer';
import BaseEvent from 'ol/events/Event';
import RenderFeature from 'ol/render/Feature';
import { FeatureLike } from 'ol/Feature';
import { default as RLayerRaster, RLayerRasterProps } from './RLayerRaster';
import { RFeatureUIEvent } from '../RFeature';
import { RStyleLike } from '../style/RStyle';
import type * as MBTiles from 'ol-mbtiles';
/**
 * @propsfor RLayerVectorTile
 */
export interface RLayerVectorMBTilesProps<F extends FeatureLike = RenderFeature> extends RLayerRasterProps {
    /** An URL for a remote MBTiles file */
    url: string;
    /**
     * Use multiple SQLite workers, refer to the ol-mbtiles for more information
     * @default 4
     */
    workers?: number;
    /**
     * Use a specific HTTP backend, refer to the ol-mbtiles for more information
     * @default 'sync'
     */
    backend?: 'sync' | 'shared';
    /**
     * Cache size in KBytes to use for SQLite
     * @default 4096
     */
    sqlCacheSize?: number;
    /**
     * Maximum SQLite page size in bytes, reduce to 1024 if you have optimized your files
     * @default 4096
     */
    maxSqlPageSize?: number;
    /**
     * Optional list of layers to be retrieved
     * @default all
     */
    layers?: string[];
    /**
     * Style to be used for rendering the features
     * You can use a dynamic style, but the property value must stay the same
     * ie switching from a static OpenLayers style to a RefObject is not supported
     */
    style?: RStyleLike;
    /**
     * Width of the frame around the viewport that shall be rendered too
     * so that the symbols, whose center is outside of the viewport,
     * but are partially inside, can be rendered
     *
     * this property currently does not support dynamic updates
     */
    renderBuffer?: number;
    /** onClick handler for loaded features */
    onClick?: (this: RLayerVectorMBTiles<F>, e: RFeatureUIEvent<F>) => boolean | void;
    /** onPointerMove handler for loaded features */
    onPointerMove?: (this: RLayerVectorMBTiles<F>, e: RFeatureUIEvent<F>) => boolean | void;
    /** onPointerEnter handler for loaded features */
    onPointerEnter?: (this: RLayerVectorMBTiles<F>, e: RFeatureUIEvent<F>) => boolean | void;
    /** onPointerLeave handler for loaded features */
    onPointerLeave?: (this: RLayerVectorMBTiles<F>, e: RFeatureUIEvent<F>) => boolean | void;
    /** Called after each metadata change to signal that the metadata has been loaded */
    onMetadataReady?: (this: RLayerVectorMBTiles, md: MBTiles.MBTilesVectorOptions & MBTiles.SQLOptions) => void;
    /** Called by OpenLayers when the layer is ready to start rendering */
    onSourceReady?: (this: RLayerVectorMBTiles, e: BaseEvent) => void;
}
/**
 * A layer from a remote MBTiles vector source
 *
 * WARNING: Using this module requires manually installing `ol-mbtiles`
 *
 * `npm install ol-mbtiles`
 *
 * Be sure to read its own documentation for tips on how to improve
 * its performance (COOP/COEP, WASM compression, preloading...)
 *
 * It does not provide a vector layer context for JSX-declared `RFeature`s
 * and it is not compatible with RLayerVector
 *
 * Requires an `RMap` context
 */
export default class RLayerVectorMBTiles<F extends FeatureLike = RenderFeature> extends RLayerRaster<RLayerVectorMBTilesProps> {
    addon: Promise<typeof MBTiles>;
    metadata: Promise<MBTiles.MBTilesVectorOptions & MBTiles.SQLOptions>;
    ol: LayerVectorTile<MBTiles.MBTilesVectorSource<F>, F>;
    source: MBTiles.MBTilesVectorSource<F>;
    private abort;
    constructor(props: Readonly<RLayerVectorMBTilesProps>);
    protected createSource(): void;
    protected destroySource(): void;
    componentWillUnmount(): void;
    protected refresh(prevProps?: RLayerVectorMBTilesProps): void;
    render(): JSX.Element;
}
//# sourceMappingURL=RLayerVectorMBTiles.d.ts.map