import type { RequestParameters } from '../util/ajax';
import type { RGBAImage, AlphaImage } from '../util/image';
import type { GlyphPositions } from '../render/glyph_atlas';
import type ImageAtlas from '../render/image_atlas';
import type { OverscaledTileID } from './tile_id';
import type { Bucket } from '../data/bucket';
import type FeatureIndex from '../data/feature_index';
import type { CollisionBoxArray } from '../data/array_types';
import type DEMData from '../data/dem_data';
import type { StyleGlyph } from '../style/style_glyph';
import type { StyleImage } from '../style/style_image';
import type { PromoteIdSpecification } from '../style-spec/types';
export declare type TileParameters = {
    source: string;
    uid: string;
};
export declare type WorkerTileParameters = TileParameters & {
    tileID: OverscaledTileID;
    request: RequestParameters;
    zoom: number;
    maxZoom: number;
    tileSize: number;
    promoteId: PromoteIdSpecification | undefined | null;
    pixelRatio: number;
    showCollisionBoxes: boolean;
    collectResourceTiming?: boolean;
    returnDependencies?: boolean;
};
export declare type WorkerDEMTileParameters = TileParameters & {
    coord: {
        z: number;
        x: number;
        y: number;
        w: number;
    };
    rawImageData: RGBAImage | ImageBitmap;
    encoding: 'mapbox' | 'terrarium';
};
export declare type WorkerTileResult = {
    buckets: Array<Bucket>;
    imageAtlas: ImageAtlas;
    glyphAtlasImage: AlphaImage;
    featureIndex: FeatureIndex;
    collisionBoxArray: CollisionBoxArray;
    rawTileData?: ArrayBuffer;
    resourceTiming?: Array<PerformanceResourceTiming>;
    glyphMap?: {
        [_: string]: {
            [_: number]: StyleGlyph | undefined | null;
        };
    } | null;
    iconMap?: {
        [_: string]: StyleImage;
    } | null;
    glyphPositions?: GlyphPositions | null;
};
export declare type WorkerTileCallback = (error?: Error | null, result?: WorkerTileResult | null) => void;
export declare type WorkerDEMTileCallback = (err?: Error | null, result?: DEMData | null) => void;
/**
 * May be implemented by custom source types to provide code that can be run on
 * the WebWorkers. In addition to providing a custom
 * {@link WorkerSource#loadTile}, any other methods attached to a `WorkerSource`
 * implementation may also be targeted by the {@link Source} via
 * `dispatcher.getActor().send('source-type.methodname', params, callback)`.
 *
 * @see {@link Map#addSourceType}
 * @private
 *
 * @class WorkerSource
 * @param actor
 * @param layerIndex
 */
export interface WorkerSource {
    availableImages: Array<string>;
    /**
       * Loads a tile from the given params and parse it into buckets ready to send
       * back to the main thread for rendering.  Should call the callback with:
       * `{ buckets, featureIndex, collisionIndex, rawTileData}`.
       */
    loadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void;
    /**
       * Re-parses a tile that has already been loaded.  Yields the same data as
       * {@link WorkerSource#loadTile}.
       */
    reloadTile(params: WorkerTileParameters, callback: WorkerTileCallback): void;
    /**
       * Aborts loading a tile that is in progress.
       */
    abortTile(params: TileParameters, callback: WorkerTileCallback): void;
    /**
       * Removes this tile from any local caches.
       */
    removeTile(params: TileParameters, callback: WorkerTileCallback): void;
    /**
       * Tells the WorkerSource to abort in-progress tasks and release resources.
       * The foreground Source is responsible for ensuring that 'removeSource' is
       * the last message sent to the WorkerSource.
       */
    removeSource?: (params: {
        source: string;
    }, callback: WorkerTileCallback) => void;
}
//# sourceMappingURL=worker_source.d.ts.map