/**
 * @typedef {function(string): PrintService} CreatePrint
 */
/**
 * Provides a function to create ngeo.print.Service objects used to
 * interact with MapFish Print v3 services.
 *
 * ngeo.print.Service objects expose the following methods:
 *
 * - createSpec: create a report specification object
 * - createReport: send a create report request
 * - getStatus: get the status of a report
 * - getReportUrl: get the URL of a report
 * - getCapabilities: get the capabilities of the server
 *
 *
 *     let printBaseUrl = 'http://example.com/print';
 *     let print = new ngeo.print.Service(printBaseUrl);
 *
 *     let scale = 5000;
 *     let dpi = 72;
 *     let layout = 'A4 portrait';
 *     let format = 'pdf';
 *     let reportSpec = print.createSpec(map, scale, dpi, layout, format, {
 *       'title': 'A title for my report',
 *       'rotation': 45 // degree
 *     });
 *
 * See our live example: [../examples/mapfishprint.html](../examples/mapfishprint.html)
 *
 * TODO and limitations:
 *
 * - createSpec should also accept a bbox instead of a center and a scale.
 * - Add support for ol.style.RegularShape. MapFish Print supports symbols
 *   like crosses, stars and squares, so printing regular shapes should be
 *   possible.
 * - ol.style.Icon may use a sprite image, and offsets to define to rectangle
 *   to use within the sprite. This type of icons won't be printed correctly
 *   as MapFish Print does not support sprite icons.
 *
 * @class
 * @param {string} url URL to MapFish print web service.
 * @param {angular.IHttpService} $http Angular $http service.
 * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext service.
 * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper service.
 * @hidden
 */
export function PrintService(url: string, $http: angular.IHttpService, gettextCatalog: angular.gettext.gettextCatalog, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper): void;
export class PrintService {
    /**
     * @typedef {function(string): PrintService} CreatePrint
     */
    /**
     * Provides a function to create ngeo.print.Service objects used to
     * interact with MapFish Print v3 services.
     *
     * ngeo.print.Service objects expose the following methods:
     *
     * - createSpec: create a report specification object
     * - createReport: send a create report request
     * - getStatus: get the status of a report
     * - getReportUrl: get the URL of a report
     * - getCapabilities: get the capabilities of the server
     *
     *
     *     let printBaseUrl = 'http://example.com/print';
     *     let print = new ngeo.print.Service(printBaseUrl);
     *
     *     let scale = 5000;
     *     let dpi = 72;
     *     let layout = 'A4 portrait';
     *     let format = 'pdf';
     *     let reportSpec = print.createSpec(map, scale, dpi, layout, format, {
     *       'title': 'A title for my report',
     *       'rotation': 45 // degree
     *     });
     *
     * See our live example: [../examples/mapfishprint.html](../examples/mapfishprint.html)
     *
     * TODO and limitations:
     *
     * - createSpec should also accept a bbox instead of a center and a scale.
     * - Add support for ol.style.RegularShape. MapFish Print supports symbols
     *   like crosses, stars and squares, so printing regular shapes should be
     *   possible.
     * - ol.style.Icon may use a sprite image, and offsets to define to rectangle
     *   to use within the sprite. This type of icons won't be printed correctly
     *   as MapFish Print does not support sprite icons.
     *
     * @class
     * @param {string} url URL to MapFish print web service.
     * @param {angular.IHttpService} $http Angular $http service.
     * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext service.
     * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper service.
     * @hidden
     */
    constructor(url: string, $http: angular.IHttpService, gettextCatalog: angular.gettext.gettextCatalog, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper);
    /**
     * @type {string}
     */
    url_: string;
    /**
     * @type {angular.IHttpService}
     */
    $http_: angular.IHttpService;
    /**
     * @type {angular.gettext.gettextCatalog}
     */
    gettextCatalog_: angular.gettext.gettextCatalog;
    /**
     * @type {import('ngeo/map/LayerHelper').LayerHelper}
     */
    ngeoLayerHelper_: import("ngeo/map/LayerHelper").LayerHelper;
    /**
     * @type {import('ngeo/print/VectorEncoder').default}
     */
    vectorEncoder: import("ngeo/print/VectorEncoder").default;
    /**
     * @type {boolean}
     */
    printNativeAngle_: boolean;
    /**
     * @type {number}
     */
    goodnessOfFit_: number;
    /**
     * Cancel a report.
     *
     * @param {string} ref Print report reference.
     * @param {angular.IRequestShortcutConfig} [opt_httpConfig] $http config object.
     * @returns {angular.IHttpPromise<Object>} HTTP promise.
     */
    cancel(ref: string, opt_httpConfig?: angular.IRequestShortcutConfig): angular.IHttpPromise<Object>;
    /**
     * Create a report specification.
     *
     * @param {import('ol/Map').default} map Map.
     * @param {number} scale Scale.
     * @param {number} rotation Rotation.
     * @param {number} dpi DPI.
     * @param {string} layout Layout.
     * @param {string} format Formats.
     * @param {Object<string, *>} customAttributes Custom attributes.
     * @param {string} [email] Email to send the file to.
     * @param {number} [goodnessOfFit] Goodness of fit.
     * @returns {import('ngeo/print/mapfish-print-v3').MapFishPrintSpec} The print spec.
     */
    createSpec(map: import("ol/Map").default, scale: number, rotation: number, dpi: number, layout: string, format: string, customAttributes: {
        [x: string]: any;
    }, email?: string, goodnessOfFit?: number): import("ngeo/print/mapfish-print-v3").MapFishPrintSpec;
    /**
     * @param {import('ol/Map').default} map Map.
     * @param {number} scale Scale.
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintMap} object Object.
     * @param {number} destinationPrintDpi The destination print DPI.
     */
    encodeMap_(map: import("ol/Map").default, scale: number, object: import("ngeo/print/mapfish-print-v3").MapFishPrintMap, destinationPrintDpi: number): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/Base').default} layer Layer.
     * @param {number} resolution Resolution.
     * @param {number} destinationPrintDpi The destination print DPI.
     */
    encodeLayer(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/Base").default, resolution: number, destinationPrintDpi: number): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {olLayerVector<import('ol/source/Vector').default<import('ol/geom/Geometry').default>>} layer Layer.
     * @param {number} resolution Resolution.
     * @param {number} destinationPrintDpi The destination print DPI.
     */
    encodeVectorLayer(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: olLayerVector<import("ol/source/Vector").default<import("ol/geom/Geometry").default>>, resolution: number, destinationPrintDpi: number): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/Image').default<import('ol/source/Image').default>} layer Layer.
     */
    encodeImageLayer_(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/Image").default<import("ol/source/Image").default>): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/Image').default<import('ol/source/Image').default>} layer Layer.
     */
    encodeImageWmsLayer_(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/Image").default<import("ol/source/Image").default>): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/Image').default<import('ol/source/Image').default>|import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>} layer The layer.
     * @param {string} url URL of the WMS server.
     * @param {Object<string, string>} params URL parameters
     */
    encodeWmsLayer_(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/Image").default<import("ol/source/Image").default> | import("ol/layer/WebGLTile").default<import("ol/source/Tile").default>, url: string, params: {
        [x: string]: string;
    }): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>} layer Layer.
     */
    encodeTileLayer_(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/WebGLTile").default<import("ol/source/Tile").default>): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>} layer Layer.
     */
    encodeTileWmtsLayer_(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/WebGLTile").default<import("ol/source/Tile").default>): void;
    /**
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintLayer[]} arr Array.
     * @param {import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>} layer Layer.
     */
    encodeTileWmsLayer_(arr: import("ngeo/print/mapfish-print-v3").MapFishPrintLayer[], layer: import("ol/layer/WebGLTile").default<import("ol/source/Tile").default>): void;
    /**
     * Return the WMTS URL to use in the print spec.
     *
     * @param {import('ol/source/WMTS').default} source The WMTS source.
     * @returns {string} URL.
     */
    getWmtsUrl_(source: import("ol/source/WMTS").default): string;
    /**
     * Return an opacity value for the specified layer.
     *
     * @param {import('ol/layer/Base').default} layer Layer.
     * @returns {number} opacity Opacity value.
     */
    getOpacityOrInherited_(layer: import("ol/layer/Base").default): number;
    /**
     * Send a create report request to the MapFish Print service.
     *
     * @param {import('ngeo/print/mapfish-print-v3').MapFishPrintSpec} printSpec Print specification.
     * @param {angular.IRequestShortcutConfig} [opt_httpConfig] $http config object.
     * @returns {angular.IHttpPromise<import('ngeo/print/mapfish-print-v3').MapFishPrintReportResponse>} HTTP promise.
     */
    createReport(printSpec: import("ngeo/print/mapfish-print-v3").MapFishPrintSpec, opt_httpConfig?: angular.IRequestShortcutConfig): angular.IHttpPromise<import("ngeo/print/mapfish-print-v3").MapFishPrintReportResponse>;
    /**
     * Get the status of a report.
     *
     * @param {string} ref Print report reference.
     * @param {angular.IRequestShortcutConfig} [opt_httpConfig] $http config object.
     * @returns {angular.IHttpPromise<import('ngeo/print/mapfish-print-v3').MapFishPrintStatusResponse>} HTTP promise.
     */
    getStatus(ref: string, opt_httpConfig?: angular.IRequestShortcutConfig): angular.IHttpPromise<import("ngeo/print/mapfish-print-v3").MapFishPrintStatusResponse>;
    /**
     * Get the URL of a report.
     *
     * @param {string} ref Print report reference.
     * @returns {string} The report URL for this ref.
     */
    getReportUrl(ref: string): string;
    /**
     * Get the print capabilities from MapFish Print.
     *
     * @param {angular.IRequestShortcutConfig} [opt_httpConfig] $http config object.
     * @returns {angular.IHttpPromise<import('ngeo/print/mapfish-print-v3').MapFishPrintCapabilities>} HTTP promise.
     */
    getCapabilities(opt_httpConfig?: angular.IRequestShortcutConfig): angular.IHttpPromise<import("ngeo/print/mapfish-print-v3").MapFishPrintCapabilities>;
}
export namespace PrintService {
    let $inject: string[];
}
/**
 * @param {angular.IHttpService} $http Angular $http service.
 * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext service.
 * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper.
 * @returns {CreatePrint} The function to create a print service.
 * @ngdoc service
 * @ngname ngeoCreatePrint
 * @hidden
 */
export function createPrintServiceFactory($http: angular.IHttpService, gettextCatalog: angular.gettext.gettextCatalog, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper): CreatePrint;
export namespace createPrintServiceFactory {
    let $inject_1: string[];
    export { $inject_1 as $inject };
}
export default myModule;
export type CreatePrint = (arg0: string) => PrintService;
import angular from 'angular';
import olLayerVector from 'ol/layer/Vector';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
