/// 
import type { Metadata, Sharp } from 'sharp';
import type { Platform } from './platform';
import type { ResolvedImageSource, ResourceType } from './resources';
import { Format } from './resources';
export declare type SharpTransformation = (pipeline: Sharp) => Promise | Sharp;
/**
 * Check an array of source files, returning the first viable image.
 */
export declare function resolveSourceImage(platform: Platform, type: ResourceType, sources: string[], errstream: NodeJS.WritableStream | null): Promise;
export declare function readSourceImage(platform: Platform, type: ResourceType, src: string, errstream: NodeJS.WritableStream | null): Promise;
export declare function debugSourceImage(src: string, error: NodeJS.ErrnoException, errstream: NodeJS.WritableStream | null): void;
export declare type Fit = 'contain' | 'cover' | 'fill';
export declare type Position = 'center' | 'top' | 'right top' | 'right' | 'right bottom' | 'bottom' | 'left bottom' | 'left' | 'left top';
export declare const FITS: readonly Fit[];
export declare const FITS_WITH_POSITION: readonly Fit[];
export declare const POSITIONS: readonly Position[];
export declare function validateFit(fit: any): Fit;
export declare function validatePosition(fit: Fit, position: any): Position;
export interface ResizeOptions {
    /**
     * When resizing, use this fit algorithm.
     */
    readonly fit?: Fit;
    /**
     * When resizing using a {@link fit} of `cover` or `contain`, use this to position the image.
     */
    readonly position?: Position;
}
export interface ImageSchema extends ResizeOptions {
    readonly src: string;
    readonly format: Format;
    readonly width: number;
    readonly height: number;
}
export declare function generateImage(image: ImageSchema, src: Sharp, metadata: Metadata, errstream: NodeJS.WritableStream | null): Promise;
export declare function applyTransformations(src: Sharp, transformations: readonly SharpTransformation[]): Promise;
export declare function createImageResizer(image: ImageSchema): SharpTransformation;
export declare function createImageConverter(format: Format): SharpTransformation;