/**
 * Align enum
 */
export declare enum AlignOptions {
    left = "left",
    right = "right",
    center = "center",
    bottom = "bottom",
    top = "top"
}
/**
 * Align enum with faces option
 */
export declare enum AlignFacesOptions {
    left = "left",
    right = "right",
    center = "center",
    bottom = "bottom",
    top = "top",
    faces = "faces"
}
/**
 * Fit enum
 */
export declare enum FitOptions {
    clip = "clip",
    crop = "crop",
    scale = "scale",
    max = "max"
}
/**
 * Blur enum
 */
export declare enum BlurMode {
    linear = "linear",
    gaussian = "gaussian"
}
/**
 * Shapes enum
 */
export declare enum ShapeType {
    oval = "oval",
    rect = "rect"
}
/**
 * Noise type enum
 */
export declare enum NoiseType {
    none = "none",
    low = "low",
    medium = "medium",
    high = "high"
}
/**
 * Style type enum
 */
export declare enum StyleType {
    artwork = "artwork",
    photo = "photo"
}
/**
 * Color space enum
 */
export declare enum ColorspaceType {
    RGB = "RGB",
    CMYK = "CMYK",
    Input = "Input"
}
/**
 * Crop faces options enum
 */
export declare enum CropfacesType {
    thumb = "thumb",
    crop = "crop",
    fill = "fill"
}
/**
 * Convert to format
 */
export declare enum VideoTypes {
    h264 = "h264",
    h264_hi = "h264.hi",
    webm = "webm",
    'webm-hi' = "webm.hi",
    ogg = "ogg",
    'ogg-hi' = "ogg.hi",
    'hls-variant' = "hls.variant",
    mp3 = "mp3",
    oga = "oga",
    m4a = "m4a",
    aac = "aac",
    hls = "hls.variant.audio"
}
export declare enum URLScreenshotAgent {
    desktop = "desktop",
    mobile = "mobile"
}
export declare enum URLScreenshotMode {
    all = "all",
    window = "window"
}
export declare enum URLScreenshotOrientation {
    portrait = "portrait",
    landscape = "landscape"
}
/**
 * Video storage location
 */
export declare enum Locations {
    s3 = "s3",
    azure = "azure",
    gcs = "gcs",
    rackspace = "rackspace",
    dropbox = "dropbox"
}
export declare enum VideoAccess {
    private = "private",
    public = "public"
}
export declare enum VideoAccessMode {
    preserve = "preserve",
    constrain = "constrain",
    letterbox = "letterbox",
    pad = "pad",
    crop = "crop"
}
/**
 * Available options for store transformations
 *
 * @export
 * @interface StoreParams
 */
export interface StoreParams {
    filename?: string;
    localion?: string;
    path?: string;
    container?: string;
    region?: string;
    access?: string;
    base64decode?: boolean;
}
export interface ResizeParams {
    width?: number;
    height?: number;
    fit?: FitOptions;
    align?: AlignFacesOptions;
}
export interface CropParams {
    dim: [number, number, number, number];
}
export interface RotateParams {
    deg: number | string;
    color?: string;
    background?: string;
}
export interface DetectFacesParams {
    minsize?: number;
    maxsize?: number;
    color?: string;
    export?: boolean;
}
export interface CropFacesParams {
    mode?: CropfacesType;
    width?: number;
    height?: number;
    faces?: number | string;
    buffer?: number;
}
export interface PixelateFacesParams {
    faces?: number | string;
    minsize?: number;
    maxsize?: number;
    buffer?: number;
    amount?: number;
    blur?: number;
    type?: ShapeType;
}
export interface BlurFacesParams {
    faces?: number | string;
    minsize?: number;
    maxsize?: number;
    buffer?: number;
    amount?: number;
    blur?: number;
    type?: ShapeType;
}
export interface RoundedCornersParams {
    radius?: number;
    blur?: number;
    background?: string;
}
export interface VignetteParams {
    amount?: number;
    blurmode?: BlurMode;
    background?: string;
}
export interface PolaroidParams {
    color?: string;
    rotate?: number;
    background?: string;
}
export interface TornEdgesParams {
    spread?: [number, number];
    background?: string;
}
export interface ShadowParams {
    blur?: number;
    opacity?: number;
    vector?: [number, number];
    color?: string;
    background?: string;
}
export interface CircleParams {
    background?: string;
}
export interface BorderParams {
    width?: number;
    color?: string;
    background?: string;
}
export interface SharpenParams {
    amount: number;
}
export interface BlurParams {
    amount: number;
}
export interface BlackwhiteParams {
    threshold: number;
}
export interface SepiaParams {
    tone: number;
}
export interface PixelateParams {
    amount: number;
}
export interface OilPaintParams {
    amount: number;
}
export interface ModulateParams {
    brightness?: number;
    hue?: number;
    saturation?: number;
}
export interface PartialPixelateParams {
    amount?: number;
    blur?: number;
    type?: ShapeType;
    objects?: [[number, number, number, number]];
}
export interface PartialBlurParams {
    amount: number;
    blur?: number;
    type?: ShapeType;
    objects?: [[number, number, number, number]];
}
export interface CollageParams {
    margin?: number;
    width?: number;
    height?: number;
    color?: string;
    fit?: FitOptions;
    files: [string];
}
export interface UpscaleParams {
    upscale?: boolean;
    noise?: NoiseType;
    style?: StyleType;
}
export interface AsciiParams {
    background?: string;
    foreground?: string;
    colored?: boolean;
    size?: number;
    reverse?: boolean;
}
export interface QualityParams {
    value: number;
}
export interface SecurityParams {
    policy: string;
    signature?: string;
}
export interface OutputParams {
    format: string;
    colorspace?: string;
    strip?: boolean;
    quality?: number;
    page?: number;
    compress?: boolean;
    density?: number;
    background?: string;
    secure?: boolean;
    docinfo?: boolean;
    pageformat?: string;
    pageorientation?: string;
}
export interface CacheParams {
    cache?: boolean;
    expiry: number;
}
export interface VideoConvertParams {
    aspect_mode: VideoAccessMode;
    preset?: VideoTypes;
    force?: boolean;
    title?: string;
    extname?: string;
    filename?: string;
    location?: Locations;
    path?: string;
    access?: VideoAccess;
    container?: string;
    audio_bitrate?: number;
    upscale: boolean;
    video_bitrate?: number;
    audio_sample_rate?: number;
    audio_channels?: number;
    clip_length?: string;
    clip_offset?: string;
    width?: number;
    height?: number;
    two_pass?: boolean;
    fps?: number;
    keyframe_interval?: number;
    watermark_url?: string;
    watermark_top?: number;
    watermark_bottom?: number;
    watermark_right?: number;
    watermark_left?: number;
    watermark_width?: number;
    watermark_height?: number;
}
export interface URLScreenshotParams {
    agent?: URLScreenshotAgent;
    width?: number;
    height?: number;
    mode?: URLScreenshotMode;
    delay?: number;
    orientation?: URLScreenshotOrientation;
    device?: string;
}
export interface PdfInfoParams {
    colorinfo?: boolean;
}
export interface PdfConvertParams {
    pageorientation?: string;
    pageformat?: string;
    pages?: (string | number)[];
}
/**
 * Class for handling filelinks. For now its supports all filestack transforms.
 * It outputs transform url or array of transforms
 * @example
 * const link = new Filelink('handle or externalUrl', 'apikey');
 * link.flip().flop().store();
 *
 * console.log(link.toString());
 * // enable base64 support
 * link.setBase64(true)
 *
 * console.log(link.toString());
 *
 * @export
 * @class Filelink
 */
export declare class Filelink {
    /**
     * Validator instance
     *
     * @private
     * @memberof Filelink
     */
    private validator;
    /**
     * Applied transforms array
     *
     * @private
     * @memberof Filelink
     */
    private transforms;
    /**
     * Handle or multiple handles in array
     *
     * @private
     * @memberof Filelink
     */
    private source;
    /**
     * Application key
     *
     * @private
     * @type {string}
     * @memberof Filelink
     */
    private apikey;
    /**
     * Is base64 support is enabled
     *
     * @private
     * @type {boolean}
     * @memberof Filelink
     */
    private b64;
    /**
     * Custom CNAME
     *
     * @private
     * @type {string}
     * @memberof Filelink
     */
    private cname;
    /**
     * Overwrite domain (test purposes)
     *
     * @private
     * @type {string}
     * @memberof Filelink
     */
    private customDomain;
    /**
     * Class for generating tranformation urls
     * @param {(string | string[])} source - handle or multiple handles (i.e. for collage)
     * @param {string} [apikey] - your apikey - required for all external sources
     *
     * @memberof Filelink
     */
    constructor(source: string | string[], apikey?: string);
    /**
     * Enable new base64 link support to avoid problems with special chars in link
     *
     * @param {boolean} flag
     * @returns
     * @memberof Filelink
     */
    setBase64(flag: boolean): this;
    /**
     * Set cname for transformation link
     *
     * @param {string} cname
     * @returns
     * @memberof Filelink
     */
    setCname(cname: string): this;
    /**
     * Set custom domain. Used for test purpose. It will be removed when after client.transform
     *
     * @param {string} domain
     * @returns
     * @memberof Filelink
     */
    setCustomDomain(domain: string): this;
    /**
     * Returns JSONSchema form transformations params
     *
     * @returns
     * @memberof Filelink
     */
    getValidationSchema(): {
        '$schema': string;
        title: string;
        description: string;
        type: string;
        additionalProperties: boolean;
        definitions: {
            securityCallDef: {
                id: string;
                type: string;
                enum: string[];
            };
            regionsDef: {
                id: string;
                type: string;
                enum: string[];
            };
            locationsDef: {
                id: string;
                type: string;
                enum: string[];
            };
            colorDef: {
                id: string;
                oneOf: ({
                    type: string;
                    pattern: string;
                    enum?: undefined;
                } | {
                    type: string;
                    enum: string[];
                    pattern?: undefined;
                })[];
            };
            pageFormatDef: {
                id: string;
                type: string;
                enum: string[];
            };
            pageRangeDef: {
                id: string;
                type: string;
                uniqueItems: boolean;
                items: {
                    oneOf: ({
                        type: string;
                        minimum: number;
                        pattern?: undefined;
                        errorMessage?: undefined;
                    } | {
                        type: string;
                        pattern: string;
                        errorMessage: string;
                        minimum?: undefined;
                    })[];
                }[];
            };
            facesDef: {
                id: string;
                oneOf: ({
                    type: string;
                    enum: string[];
                    minimum?: undefined;
                    maximum?: undefined;
                    uniqueItems?: undefined;
                    items?: undefined;
                } | {
                    type: string;
                    minimum: number;
                    maximum: number;
                    enum?: undefined;
                    uniqueItems?: undefined;
                    items?: undefined;
                } | {
                    type: string;
                    uniqueItems: boolean;
                    items: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    }[];
                    enum?: undefined;
                    minimum?: undefined;
                    maximum?: undefined;
                })[];
            };
            objectsDef: {
                id: string;
                type: string;
                minItems: number;
                maxItems: number;
                items: {
                    type: string;
                    additionalItems: boolean;
                    minItems: number;
                    items: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    }[];
                }[];
            };
            positionDef: {
                id: string;
                default: string[];
                oneOf: ({
                    type: string;
                    enum: string[];
                    uniqueItems?: undefined;
                    additionalItems?: undefined;
                    minItems?: undefined;
                    default?: undefined;
                    items?: undefined;
                } | {
                    type: string;
                    uniqueItems: boolean;
                    additionalItems: boolean;
                    minItems: number;
                    default: string[];
                    items: {
                        type: string;
                        enum: string[];
                    }[];
                    enum?: undefined;
                })[];
            };
        };
        properties: {
            flip: {
                type: string;
                additionalProperties: boolean;
            };
            no_metadata: {
                type: string;
                additionalProperties: boolean;
            };
            compress: {
                additionalProperties: boolean;
                oneOf: ({
                    type: string;
                    properties?: undefined;
                } | {
                    type: string;
                    properties: {
                        metadata: {
                            type: string;
                            default: boolean;
                        };
                    };
                })[];
            };
            flop: {
                type: string;
                additionalProperties: boolean;
            };
            enchance: {
                type: string;
                additionalProperties: boolean;
            };
            redeye: {
                type: string;
                additionalProperties: boolean;
            };
            monochrome: {
                type: string;
                additionalProperties: boolean;
            };
            negative: {
                type: string;
                additionalProperties: boolean;
            };
            tags: {
                type: string;
                additionalProperties: boolean;
            };
            sfw: {
                type: string;
                additionalProperties: boolean;
            };
            imagesize: {
                type: string;
                additionalProperties: boolean;
            };
            metadata: {
                type: string;
                /**
                 * Applied transforms array
                 *
                 * @private
                 * @memberof Filelink
                 */
                params: {
                    type: string;
                    items: {
                        type: string;
                        'enum': string[];
                    };
                    minItems: number;
                    uniqueItems: boolean;
                    additionalItems: boolean;
                };
                additionalProperties: boolean;
            };
            resize: {
                type: string;
                properties: {
                    width: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    height: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    fit: {
                        type: string;
                        enum: string[];
                        default: string;
                    };
                    align: {
                        '$ref': string;
                        default: string;
                    };
                };
                additionalProperties: boolean;
                anyOf: {
                    required: string[];
                }[];
            };
            crop: {
                type: string;
                properties: {
                    dim: {
                        type: string;
                        additionalItems: boolean;
                        minItems: number;
                        items: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        }[];
                    };
                };
                required: string[];
            };
            rotate: {
                type: string;
                properties: {
                    deg: {
                        oneOf: ({
                            type: string;
                            enum: string[];
                            minimum?: undefined;
                            maximum?: undefined;
                        } | {
                            type: string;
                            minimum: number;
                            maximum: number;
                            enum?: undefined;
                        })[];
                    };
                    exif: {
                        type: string;
                    };
                    background: {
                        '$ref': string;
                        default: string;
                    };
                };
                additionalProperties: boolean;
            };
            detect_faces: {
                oneOf: ({
                    /**
                     * Returns transformations in JSON format
                     *
                     * @returns
                     * @memberof Filelink
                     */
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        maxsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        minsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        export: {
                            type: string;
                        };
                        color: {
                            '$ref': string;
                            default: string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            crop_faces: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        faces: {
                            default: number;
                            '$ref': string;
                        };
                        width: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                        height: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                        maxsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        minsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        buffer: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                        mode: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            pixelate_faces: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        faces: {
                            /**
                             * Adds flip transformation
                             *
                             * @see https://www.filestack.com/docs/api/processing/#flip
                             * @returns this
                             * @memberof Filelink
                             */
                            '$ref': string;
                            default: string;
                        };
                        maxsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        minsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        buffer: {
                            type: string;
                            minimum: number;
                            maximum: number; /**
                             * Adds enhance transformation
                             *
                             * @see https://www.filestack.com/docs/api/processing/#enhance
                             * @returns this
                             * @memberof Filelink
                             */
                        };
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        blur: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        type: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            blur_faces: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        faces: {
                            '$ref': string;
                            default: string;
                        };
                        maxsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        minsize: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        buffer: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        blur: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        type: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            rounded_corners: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        radius: {
                            oneOf: ({
                                type: string;
                                minimum: number;
                                maximum: number;
                                enum?: undefined;
                            } | {
                                type: string;
                                enum: string[];
                                minimum?: undefined;
                                maximum?: undefined;
                            })[];
                        };
                        blur: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        background: {
                            '$ref': string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            vignette: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        blurmode: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                        background: {
                            '$ref': string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            polaroid: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        rotate: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                        color: {
                            '$ref': string;
                            default: string;
                        }; /**
                         * Adds crop faces transformation
                         *
                         * @see https://www.filestack.com/docs/api/processing/#crop-faces
                         * @param {CropFacesParams} params
                         * @returns this
                         * @memberof Filelink
                         */
                        background: {
                            '$ref': string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            torn_edges: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        spread: {
                            type: string;
                            additionalItems: boolean;
                            minItems: number;
                            items: {
                                type: string;
                                minimum: number;
                                maximum: number;
                                default: number;
                            }[];
                        };
                        background: {
                            '$ref': string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            shadow: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        blur: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        opacity: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        vector: {
                            type: string;
                            additionalItems: boolean;
                            minItems: number;
                            items: {
                                type: string;
                                minimum: number;
                                maximum: number;
                                default: number;
                            }[];
                        };
                        color: {
                            '$ref': string;
                        };
                        background: {
                            '$ref': string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            circle: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        background: {
                            '$ref': string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            border: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        color: {
                            '$ref': string;
                        };
                        background: {
                            '$ref': string;
                        };
                        width: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            sharpen: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            blur: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            blackwhite: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        threshold: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            sepia: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        tone: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        }; /**
                         * Adds blackwhite transformation
                         *
                         * @see https://www.filestack.com/docs/api/processing/#blackwhite
                         * @param {(BlackwhiteParams | boolean)} params
                         * @returns this
                         * @memberof Filelink
                         */
                    };
                    additionalProperties: boolean;
                })[];
            };
            pixelate: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            oil_paint: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        amount: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            modulate: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        brightness: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        saturation: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        hue: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            asci: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        foreground: {
                            '$ref': string;
                            default: string;
                        };
                        background: {
                            '$ref': string;
                            default: string;
                        };
                        colored: {
                            type: string;
                            default: boolean;
                        };
                        size: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        reverse: {
                            type: string;
                            default: boolean;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            collage: {
                type: string;
                properties: {
                    files: {
                        type: string;
                        additionalItems: boolean;
                        minItems: number;
                        items: {
                            type: string;
                        }[];
                    };
                    margin: {
                        type: string;
                        minimum: number;
                        maximum: number;
                        default: number;
                    };
                    width: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    height: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    color: {
                        '$ref': string;
                        default: string;
                    };
                    fit: {
                        type: string;
                        enum: string[];
                    };
                    autorotate: {
                        type: string;
                        default: boolean;
                    };
                };
                required: string[];
                additionalProperties: boolean;
            };
            urlscreenshot: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        agent: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                        width: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        height: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        mode: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                        delay: {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                        };
                        orientation: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                        /**
                         * Adds video convert transformation
                         *
                         * @see https://www.filestack.com/docs/api/processing/#video-convert
                         * @param {VideoConvertParams} params
                         * @returns this
                         * @memberof Filelink
                         */
                        device: {
                            type: string;
                            default: string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            upscale: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                    additionalProperties?: undefined;
                } | {
                    type: string;
                    properties: {
                        noise: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                        upscale: {
                            type: string;
                            default: boolean;
                        };
                        style: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                    };
                    additionalProperties: boolean;
                })[];
            };
            output: {
                type: string;
                additionalProperties: boolean;
                properties: {
                    format: {
                        type: string;
                        enum: string[];
                    };
                    page: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    density: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    compress: {
                        type: string;
                    };
                    quality: {
                        oneOf: ({
                            type: string;
                            enum: string[];
                            minimum?: undefined;
                            maximum?: undefined;
                            default?: undefined;
                        } | {
                            type: string;
                            minimum: number;
                            maximum: number;
                            default: number;
                            enum?: undefined;
                        })[];
                    };
                    secure: {
                        type: string;
                        default: boolean;
                    };
                    docinfo: {
                        type: string;
                        default: boolean;
                    };
                    strip: {
                        type: string;
                        default: boolean;
                    };
                    colorspace: {
                        type: string;
                        enum: string[];
                        default: string;
                    };
                    background: {
                        '$ref': string;
                    };
                    pageformat: {
                        type: string;
                        enum: string[];
                    };
                    pageorientation: {
                        type: string;
                        enum: string[];
                    };
                };
            };
            pjpg: {
                oneOf: ({
                    type: string;
                    additionalProperties?: undefined;
                    properties?: undefined;
                } | {
                    type: string;
                    additionalProperties: boolean;
                    properties: {
                        quality: {
                            type: string;
                            minimum: number;
                            maximum: number;
                        };
                        metadata: {
                            type: string;
                            default: boolean;
                        };
                    };
                })[];
            };
            quality: {
                type: string;
                additionalProperties: boolean;
                properties: {
                    value: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                };
            };
            cache: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                } | {
                    type: string;
                    properties: {
                        expiry: {
                            type: string;
                        };
                    };
                })[];
            };
            video_convert: {
                type: string;
                additionalProperties: boolean;
                properties: {
                    width: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    height: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    preset: {
                        type: string;
                    };
                    force: {
                        type: string;
                    };
                    title: {
                        type: string;
                    };
                    extname: {
                        type: string;
                    };
                    upscale: {
                        type: string;
                    };
                    aspect_mode: {
                        type: string;
                        enum: string[];
                        default: string;
                    };
                    audio_sample_rate: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    two_pass: {
                        type: string;
                    };
                    video_bitrate: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    fps: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    keyframe_interval: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    audio_bitrate: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    audio_channels: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    clip_length: {
                        type: string;
                        pattern: string;
                    };
                    clip_offset: {
                        type: string;
                        pattern: string;
                    };
                    watermark_url: {
                        type: string;
                    };
                    watermark_top: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    watermark_right: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    watermark_bottom: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    watermark_left: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    frame_count: {
                        type: string;
                        minimum: number;
                        maximum: number;
                        default: number;
                    };
                    filename: {
                        type: string;
                    };
                    location: {
                        '$ref': string;
                    };
                    path: {
                        type: string;
                    };
                    container: {
                        type: string;
                    };
                    access: {
                        type: string;
                        enum: string[];
                        default: string;
                    };
                };
            };
            store: {
                oneOf: ({
                    type: string;
                    additionalProperties?: undefined;
                    properties?: undefined;
                } | {
                    type: string;
                    additionalProperties: boolean;
                    properties: {
                        filename: {
                            type: string;
                        };
                        location: {
                            '$ref': string;
                        };
                        path: {
                            type: string;
                        };
                        container: {
                            type: string;
                        };
                        region: {
                            '$ref': string;
                        };
                        access: {
                            type: string;
                            enum: string[];
                            default: string;
                        };
                        base64decode: {
                            type: string;
                        };
                        workflows: {
                            type: string;
                            additionalItems: boolean;
                            minItems: number;
                            maxItems: number;
                            items: ({
                                type: string;
                                additionalProperties?: undefined;
                                properties?: undefined;
                            } | {
                                type: string;
                                additionalProperties: boolean;
                                properties: {
                                    id: {
                                        type: string;
                                    };
                                };
                            })[];
                        };
                    };
                })[];
            };
            watermark: {
                type: string;
                properties: {
                    file: {
                        type: string;
                    };
                    size: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    position: {
                        '$ref': string;
                    };
                };
                required: string[];
                additionalProperties: boolean;
            };
            partial_blur: {
                type: string;
                properties: {
                    objects: {
                        '$ref': string;
                    };
                    amount: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    blur: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    type: {
                        type: string;
                        enum: string[];
                    };
                };
                required: string[];
            };
            partial_pixelate: {
                type: string;
                properties: {
                    objects: {
                        '$ref': string;
                    };
                    amount: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    blur: {
                        type: string;
                        minimum: number;
                        maximum: number;
                    };
                    type: {
                        type: string;
                        enum: string[];
                    };
                };
                required: string[];
            };
            security: {
                type: string;
                additionalProperties: boolean;
                properties: {
                    policy: {
                        type: string;
                    };
                    signature: {
                        type: string;
                    };
                };
                required: string[];
            };
            pdfinfo: {
                oneOf: ({
                    type: string;
                    properties?: undefined;
                } | {
                    type: string;
                    properties: {
                        colorinfo: {
                            type: string;
                        };
                    };
                })[];
            };
            pdfconvert: {
                type: string;
                additionalProperties: boolean;
                properties: {
                    pageorientation: {
                        type: string;
                        enum: string[];
                    };
                    pageformat: {
                        '$ref': string;
                    };
                    pages: {
                        '$ref': string;
                    };
                };
                anyOf: {
                    required: string[];
                }[];
            };
        };
    };
    /**
     * Returns transformations in JSON format
     *
     * @returns
     * @memberof Filelink
     */
    getTransformations(): any[];
    /**
     * Returns transform url
     *
     * @returns
     * @memberof Filelink
     */
    toString(): string;
    /**
     * Add task and validate
     *
     * @param {string} name
     * @param {*} [params]
     * @returns
     * @memberof Filelink
     */
    addTask(name: string, params?: any): this;
    /**
     * Cleanup transformations on filelink
     *
     * @returns
     * @memberof Filelink
     */
    reset(): this;
    /**
     * Transformations part
     */
    /**
     * Adds flip transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#flip
     * @returns this
     * @memberof Filelink
     */
    flip(): this;
    /**
     * Adds flop transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#flop
     * @returns this
     * @memberof Filelink
     */
    flop(): this;
    /**
     * Adds enhance transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#enhance
     * @returns this
     * @memberof Filelink
     */
    enhance(): this;
    /**
     * Add security to link
     *
     * @see https://www.filestack.com/docs/api/processing/#redeye
     * @returns
     * @memberof Filelink
     */
    redeye(): this;
    /**
     * Add monochrome transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#monochrome
     * @returns this
     * @memberof Filelink
     */
    monochrome(): this;
    /**
     * Adds negative transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#negative
     * @returns this
     * @memberof Filelink
     */
    negative(): this;
    /**
     * Adds enchance transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#tags
     * @returns this
     * @memberof Filelink
     */
    tags(): this;
    /**
     * Adds sfw transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#sfw
     * @returns this
     * @memberof Filelink
     */
    sfw(): this;
    /**
     * Adds store transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#store
     * @param {(StoreParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    store(params?: StoreParams | boolean): this;
    /**
     * Adds cache transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#cache
     * @param {(CacheParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    cache(params: CacheParams | boolean): this;
    /**
     * Adds resize transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#resize
     * @param {ResizeParams} params
     * @returns this
     * @memberof Filelink
     */
    resize(params: ResizeParams): this;
    /**
     * Adds crop transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#crop
     * @param {CropParams} params
     * @returns this
     * @memberof Filelink
     */
    crop(params: CropParams): this;
    /**
     * Adds rotate transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#rotate
     * @param {RotateParams} params
     * @returns this
     * @memberof Filelink
     */
    rotate(params: RotateParams): this;
    /**
     * Adds detect_faces transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#facial-detection
     * @param {(DetectFacesParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    detectFaces(params?: DetectFacesParams | boolean): this;
    /**
     * Adds crop faces transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#crop-faces
     * @param {CropFacesParams} params
     * @returns this
     * @memberof Filelink
     */
    cropFaces(params: CropFacesParams): this;
    /**
     * Adds pixelate faces transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#pixelate-faces
     * @param {PixelateFacesParams} params
     * @returns this
     * @memberof Filelink
     */
    pixelateFaces(params: PixelateFacesParams): this;
    /**
     * Adds blur faces transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#blur-faces
     * @param {BlurFacesParams} params
     * @returns this
     * @memberof Filelink
     */
    blurFaces(params: BlurFacesParams): this;
    /**
     * Adds rounded corners transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#rounded-corners
     * @param {(RoundedCornersParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    roundedCorners(params?: RoundedCornersParams | boolean): this;
    /**
     * Adds polaroid transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#polaroid
     * @param {(PolaroidParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    polaroid(params?: PolaroidParams | boolean): this;
    /**
     * Adds vignette transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#vignette
     * @param {(VignetteParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    vignette(params?: VignetteParams | boolean): this;
    /**
     * Adds torn edges transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#torn-edges
     * @param {(TornEdgesParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    tornEdges(params?: TornEdgesParams | boolean): this;
    /**
     * Adds shadow transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#shadow
     * @param {(ShadowParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    shadow(params?: ShadowParams | boolean): this;
    /**
     * Adds circle transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#circle
     * @param {(CircleParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    circle(params?: CircleParams | boolean): this;
    /**
     * Adds border transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#border
     * @param {(BorderParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    border(params?: BorderParams | boolean): this;
    /**
     * Adds sharpen transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#sharpen
     * @param {(SharpenParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    sharpen(params?: SharpenParams | boolean): this;
    /**
     * Adds blur transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#blur
     * @param {(BlurParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    blur(params?: BlurParams | boolean): this;
    /**
     * Adds blackwhite transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#blackwhite
     * @param {(BlackwhiteParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    blackwhite(params?: BlackwhiteParams | boolean): this;
    /**
     * Adds sepia transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#sepia
     * @param {(SepiaParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    sepia(params?: SepiaParams | boolean): this;
    /**
     * Adds pixelate transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#pixelate
     * @param {(PixelateParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    pixelate(params?: PixelateParams | boolean): this;
    /**
     * Adds oilpaint transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#oil-paint
     * @param {(OilPaintParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    oilPaint(params?: OilPaintParams | boolean): this;
    /**
     * Adds modulate transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#modulate
     * @param {(ModulateParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    modulate(params?: ModulateParams | boolean): this;
    /**
     * Adds partial pixelate transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#partial-pixelate
     * @param {PartialPixelateParams} params
     * @returns this
     * @memberof Filelink
     */
    partialPixelate(params: PartialPixelateParams): this;
    /**
     * Adds partial blur transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#partial-blur
     * @param {PartialBlurParams} params
     * @returns this
     * @memberof Filelink
     */
    partialBlur(params: PartialBlurParams): this;
    /**
     * Adds collage transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#collage
     * @param {CollageParams} params
     * @returns this
     * @memberof Filelink
     */
    collage(params: CollageParams): this;
    /**
     * Adds upscale transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#upscale
     * @param {(UpscaleParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    upscale(params?: UpscaleParams | boolean): this;
    /**
     * Adds ascii transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#ascii
     * @param {(AsciiParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    ascii(params?: AsciiParams | boolean): this;
    /**
     * Adds quality transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#quality
     * @param {QualityParams} params
     * @returns this
     * @memberof Filelink
     */
    quality(params: QualityParams): this;
    /**
     * Adds security transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#security
     * @param {SecurityParams} params
     * @returns this
     * @memberof Filelink
     */
    security(params: SecurityParams): this;
    /**
     * Adds output transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#output
     * @param {OutputParams} params
     * @returns this
     * @memberof Filelink
     */
    output(params: OutputParams): this;
    /**
     * Adds video convert transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#video-convert
     * @param {VideoConvertParams} params
     * @returns this
     * @memberof Filelink
     */
    videoConvert(params: VideoConvertParams): this;
    /**
     * Adds URLScreenshot transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#urlscreenshot
     * @param {(URLScreenshotParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    URLScreenshot(params?: URLScreenshotParams | boolean): this;
    /**
     * Adds pdfinfo transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#pdfinfo
     * @param {(PdfInfoParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    PDFInfo(params?: PdfInfoParams | boolean): this;
    /**
     * Adds pdfconvert transformation
     *
     * @see https://www.filestack.com/docs/api/processing/#pdfconvert
     * @param {(PdfConvertParams | boolean)} params
     * @returns this
     * @memberof Filelink
     */
    PDFConvert(params?: PdfConvertParams | boolean): this;
    /**
     * Checks if source is external
     *
     * @private
     * @returns {boolean}
     * @memberof Filelink
     */
    private isSourceExternal;
    /**
     * Validate single task against schema
     *
     * @private
     * @param {*} name
     * @param {*} options
     * @returns {void}
     * @memberof Filelink
     */
    private validateTask;
    /**
     * Returns correct cdn url with cname support
     *
     * @private
     * @returns {string}
     * @memberof Filelink
     */
    private getCdnHost;
    /**
     * Returns applied transformations as string
     *
     * @private
     * @returns {string}
     * @memberof Filelink
     */
    private generateTransformString;
    /**
     * Flatten transformation option to string
     *
     * @private
     * @example {resize:{width: 100,height: 200}} => resize=width:100,height:200
     * @param key - option key
     * @param values - option params
     */
    private optionToString;
    /**
     * Escape params values
     *
     * @private
     * @param {string} value
     * @returns {string}
     * @memberof Filelink
     */
    private escapeValue;
    /**
     * Converts nested arrays to string
     *
     * @private
     * @example [1,2, [2,3]] => "[1,2, [2,3]]"
     * @param arr - any array
     */
    private arrayToString;
}
