import type { SaveImageOptions } from './types/core/image/ImageRefTypes';
import type { ImageRotation } from './types/core/image/ImageTypes';
import type { ImageRef } from './types/core/image/image';
import type { ParametricFilter } from './types/core/image_processing/ParametricFilters';
import type { Point } from './types/core/utils/utils';
/**
 * Entry point for all image processing features.
 */
export declare const ScanbotImageProcessor: {
    /**
     * Applies the given filters on the image.
     * @param {string} params.imageFileUri - File uri of the image to be processed.
     * @param {ParametricFilter[]} params.filters - List of filters to be applied on the image.
     * @param {boolean} params.overwrite - Whether to overwrite the original image file or create a new file. Default is false
     * @param {SaveImageOptions} params.saveOptions - Options for saving the image.
     * @returns {Promise<string>} - File uri of the image with applied filters.
     */
    applyFiltersOnImageFile(params: {
        imageFileUri: string;
        filters: ParametricFilter[];
        overwrite?: boolean;
        saveOptions?: SaveImageOptions;
    }): Promise<string>;
    /**
     * Applies the given filters on the image.
     * @param {ImageRef} params.image - Reference of the image to be processed.
     * @param {ParametricFilter[]} params.filters - List of filters to be applied on the image.
     * @returns {Promise<ImageRef>} - Reference of the image with applied filters.
     */
    applyFilters(params: {
        image: ImageRef;
        filters: ParametricFilter[];
    }): Promise<ImageRef>;
    /**
     * Rotates the image by the given rotation degree.
     * @param {string} params.imageFileUri - File uri of the image to be rotated.
     * @param {ImageRotation} params.rotation - Rotation degree.
     * @param {boolean} params.overwrite - Whether to overwrite the original image file or create a new file. Default is false
     * @param {SaveImageOptions} params.saveOptions - Options for saving the image.
     * @returns {Promise<string>} - File uri of the rotated image.
     */
    rotateImageFile(params: {
        imageFileUri: string;
        rotation: ImageRotation;
        overwrite?: boolean;
        saveOptions?: SaveImageOptions;
    }): Promise<string>;
    /**
     * Rotates the image by the given rotation degree. This methods must be wrapped inside an autorelease pool.
     * @param {ImageRef} params.image - Reference of the image to be rotated.
     * @param {ImageRotation} params.rotation - Rotation degree.
     * @returns {Promise<ImageRef>} - Reference of the rotated image.
     */
    rotate(params: {
        image: ImageRef;
        rotation: ImageRotation;
    }): Promise<ImageRef>;
    /**
     * Resizes the image to fit within the given maximum size for the longest edge.
     * @param {string} params.imageFileUri - File uri of the image to be resized.
     * @param {number} params.maxSize - Maximum size for the longest edge of the image.
     * @param {boolean} params.overwrite - Whether to overwrite the original image file or create a new file. Default is false
     * @param {SaveImageOptions} params.saveOptions - Options for saving the image.
     * @returns {Promise<string>} - File uri of the resized image.
     */
    resizeImageFile(params: {
        imageFileUri: string;
        maxSize: number;
        overwrite?: boolean;
        saveOptions?: SaveImageOptions;
    }): Promise<string>;
    /**
     * Resizes the image to fit within the given maximum size for the longest edge.
     * @param {ImageRef} params.image - Reference of the image to be resized.
     * @param {number} params.maxSize - Maximum size for the longest edge of the image.
     * @returns {Promise<ImageRef>} - Reference of the resized image.
     */
    resize(params: {
        image: ImageRef;
        maxSize: number;
    }): Promise<ImageRef>;
    /**
     * Crops the image to the given polygon area.
     * @param {string} params.imageFileUri - File uri of the image to be cropped.
     * @param {Point[]} params.polygon - Polygon defining the area to be cropped. Points needs to be represented in percentage values (0.0 - 1.0) and the order should be top-left, top-right, bottom-right, bottom-left.
     * @param {boolean} params.overwrite - Whether to overwrite the original image file or create a new file. Default is false
     * @param {SaveImageOptions} params.saveOptions - Options for saving the image.
     * @returns {Promise<string>} - File uri of the cropped image.
     */
    cropImageFile(params: {
        imageFileUri: string;
        polygon: Point[];
        overwrite?: boolean;
        saveOptions?: SaveImageOptions;
    }): Promise<string>;
    /**
     * Crops the image to the given polygon area.
     * @param {ImageRef} params.image - Reference of the image to be cropped.
     * @param {Point[]} params.polygon - Polygon defining the area to be cropped. Points needs to be represented in percentage values (0.0 - 1.0) and the order should be top-left, top-right, bottom-right, bottom-left.
     * @returns {Promise<ImageRef>} - Reference of the cropped image.
     */
    crop(params: {
        image: ImageRef;
        polygon: Point[];
    }): Promise<ImageRef>;
    /**
     * Reads image data from the given file uri and returns it as a Base 64 encoded string.
     * @param {string} imageFileUri - File uri of the image to be read.
     * @returns {Promise<string>} - The Base 64 encoded representation of the image.
     */
    readImageData(imageFileUri: string): Promise<string>;
};
