import type { RasterTileDataSourceDescription, ZoomRange } from "../../common/types/index";
import { YMapEntity } from '../YMapEnities';
/**
 * YMapTileDataSource props
 */
interface YMapTileDataSourceProps {
    /** Data source id */
    id: string;
    /** Min and max zoom for tiles */
    zoomRange?: ZoomRange;
    /**
     * Restrict min and max map zoom.
     * Result map zoomRange will be the intersection of the map zoomRange
     * and all data sources with the clampMapZoom option enabled
     **/
    clampMapZoom?: boolean;
    /** Raster data source description */
    raster?: RasterTileDataSourceDescription;
    /** Data source copyrights */
    copyrights?: string[];
}
/**
 * Create map tile data source.
 *
 * @example
 * ```javascript
 * const layer = new YMapLayer({
 *     id: 'layer-source-ground',
 *     source: 'source',
 *     type: 'ground',
 *     raster: {
 *         awaitAllTilesOnFirstDisplay: true
 *     }
 * });
 * const map = new YMap(ref.current, {
 *     location: [37.622504, 55.753215],
 *     mode: 'vector'
 * });
 * map.addChild(new YMapTileDataSource({
 *     id: 'source',
 *     raster: {
 *         type: 'ground',
 *         fetchTile: 'https://my.host.example/tiles?x={{x}}&y={{y}}&z={{z}}&scale={{scale}}'
 *     },
 *     zoomRange: {min: 0, max: 19},
 *     clampMapZoom: true
 * }));
 * map.addChild(layer);
 * ```
 */
declare class YMapTileDataSource extends YMapEntity<YMapTileDataSourceProps> {
    private _id;
    protected _onAttach(): void;
    protected _onDetach(): void;
    protected _onUpdate(props: Partial<YMapTileDataSourceProps>): void;
    private _getDataSourceDescription;
    private _onVectorContextUpdate;
    private _prepareVectorSource;
}
export { YMapTileDataSource, YMapTileDataSourceProps };
