import { PATH_INFO } from '@plastichub/osr-commons'; import * as sharp from 'sharp'; export type IOptions = { alt?: boolean; config?: any; cwd?: string; root?: string; debug?: boolean; verbose?: boolean; dry?: boolean; dst: string; dstInfo?: PATH_INFO; env?: string; cache?: boolean; src: string; srcInfo?: PATH_INFO; stdout?: boolean; variables?: Record; key?: string; logLevel?: string; }; export interface IResizeOptionsSharp { /** Alternative means of specifying width. If both are present this takes priority. */ width?: number | undefined; /** Alternative means of specifying height. If both are present this takes priority. */ height?: number | undefined; /** How the image should be resized to fit both provided dimensions, one of cover, contain, fill, inside or outside. (optional, default 'cover') */ fit?: keyof sharp.FitEnum | undefined; /** Position, gravity or strategy to use when fit is cover or contain. (optional, default 'centre') */ position?: number | string | undefined; /** Background color when using a fit of contain, parsed by the color module, defaults to black without transparency. (optional, default {r:0,g:0,b:0,alpha:1}) */ background?: sharp.Color | undefined; /** The kernel to use for image reduction. (optional, default 'lanczos3') */ kernel?: keyof sharp.KernelEnum | undefined; /** Do not enlarge if the width or height are already less than the specified dimensions, equivalent to GraphicsMagick's > geometry option. (optional, default false) */ withoutEnlargement?: boolean | undefined; /** Do not reduce if the width or height are already greater than the specified dimensions, equivalent to GraphicsMagick's < geometry option. (optional, default false) */ withoutReduction?: boolean | undefined; /** Take greater advantage of the JPEG and WebP shrink-on-load feature, which can lead to a slight moiré pattern on some images. (optional, default true) */ fastShrinkOnLoad?: boolean | undefined; } export type IResizeOptions = IOptions & IResizeOptionsSharp & { percent?: number; minWidth?: number; minHeight?: number; minSize?: number; }; export type IConvertVideoOptions = IOptions & { interval?: number; verb: string; audio: string; };