export interface IImpressionEntry {
    key?: string;
    hash?: string;
}
export interface IImpressionProvider {
    /**
     * Gets the max zoom level of an impressions
     *
     * @param {string} comId
     * @param {string} imageKey
     * @returns {Promise<number>} The maximum zoom level
     */
    getMaxZoomLevel(comId: string, imageKey: string): Promise<number>;
    /**
     * Gets all available impression images for an impression
     *
     * @param {string} comId
     * @returns {Promise<IImpressionEntry>}
     */
    getAllImpressions(comId: string): Promise<IImpressionEntry[]>;
    /**
     * Gets all tile images for an impression sorted into rows
     *
     * @param {string} comId
     * @param {string} imageKey
     * @param {number} [level]
     * @returns {string[][]}
     */
    getAllTiles(comId: string, imageKey: string, level?: number): Promise<string[][]>;
    /**
     * Gets the tile image url for the specified coordinates and level
     *
     * @param {string} comId
     * @param {string} imageKey
     * @param {number} [level] defaults to 0
     * @param {number} [row] defaults to 0
     * @param {number} [column] defaults to 0
     * @returns {string}
     */
    getTileImageUrl(comId: string, imageKey: string, level?: number, row?: number, column?: number): Promise<string>;
    getCompleteImageUrl(comId: string, imageKey: string, level: number): Promise<string>;
}
