import * as z from "zod";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type ExplicitAssetGlobals = {
    /**
     * The cloud name of your product environment.
     */
    cloudName?: string | undefined;
};
/**
 * The type of resource to apply operations on. "image" for images, "video" for videos, or "raw" for non-media files.
 */
export declare const ExplicitAssetResourceType: {
    readonly Image: "image";
    readonly Video: "video";
    readonly Raw: "raw";
};
/**
 * The type of resource to apply operations on. "image" for images, "video" for videos, or "raw" for non-media files.
 */
export type ExplicitAssetResourceType = ClosedEnum<typeof ExplicitAssetResourceType>;
/**
 * For all asset types, set to:
 *
 * @remarks
 * - manual to add the uploaded asset to a list of pending assets that can be moderated using the Admin API or the Cloudinary Console.
 * - perception_point to automatically moderate the uploaded asset using the Perception Point Malware Detection add-on.
 *
 * For images only, set to:
 * - webpurify to automatically moderate the uploaded image using the WebPurify Image Moderation add-on.
 * - aws_rek to automatically moderate the uploaded image using the Amazon Rekognition AI Moderation add-on.
 * - duplicate:<threshold> to detect if the same or a similar image already exists using the Cloudinary Duplicate Image Detection add-on. Set threshold to a float greater than 0 and less than or equal to 1.0 to specify how similar an image needs to be in order to be considered a duplicate. Set threshold to 0 to add an image to the index of images that are searched when duplicate detection is invoked for another image.
 *
 * For videos only, set to:
 * - aws_rek_video to automatically moderate the uploaded video using the Amazon Rekognition Video Moderation add-on.
 * - google_video_moderation automatically moderate the uploaded video using the Google AI Video Moderation add-on.
 *
 * To request multiple moderations in a single API call:
 * - Send the desired list of moderations as a pipe-separated string with manual moderation, if relevant, being last.
 *
 * Note: Rejected assets are automatically invalidated on the CDN within approximately ten minutes.
 */
export declare const ExplicitAssetModeration: {
    readonly Manual: "manual";
    readonly Webpurify: "webpurify";
    readonly Metascan: "metascan";
    readonly AwsRek: "aws_rek";
    readonly AwsRekVideo: "aws_rek_video";
    readonly GoogleVideoModeration: "google_video_moderation";
    readonly PerceptionPoint: "perception_point";
    readonly Duplicate: "duplicate";
    readonly Cld: "cld";
};
/**
 * For all asset types, set to:
 *
 * @remarks
 * - manual to add the uploaded asset to a list of pending assets that can be moderated using the Admin API or the Cloudinary Console.
 * - perception_point to automatically moderate the uploaded asset using the Perception Point Malware Detection add-on.
 *
 * For images only, set to:
 * - webpurify to automatically moderate the uploaded image using the WebPurify Image Moderation add-on.
 * - aws_rek to automatically moderate the uploaded image using the Amazon Rekognition AI Moderation add-on.
 * - duplicate:<threshold> to detect if the same or a similar image already exists using the Cloudinary Duplicate Image Detection add-on. Set threshold to a float greater than 0 and less than or equal to 1.0 to specify how similar an image needs to be in order to be considered a duplicate. Set threshold to 0 to add an image to the index of images that are searched when duplicate detection is invoked for another image.
 *
 * For videos only, set to:
 * - aws_rek_video to automatically moderate the uploaded video using the Amazon Rekognition Video Moderation add-on.
 * - google_video_moderation automatically moderate the uploaded video using the Google AI Video Moderation add-on.
 *
 * To request multiple moderations in a single API call:
 * - Send the desired list of moderations as a pipe-separated string with manual moderation, if relevant, being last.
 *
 * Note: Rejected assets are automatically invalidated on the CDN within approximately ten minutes.
 */
export type ExplicitAssetModeration = ClosedEnum<typeof ExplicitAssetModeration>;
export type ResponsiveBreakpoint = {
    createDerived?: boolean | undefined;
    maxWidth?: number | undefined;
    minWidth?: number | undefined;
    bytesStep?: number | undefined;
    maxImages?: number | undefined;
    transformation?: string | undefined;
};
/**
 * The storage type of the asset. Defaults to 'upload'.
 */
export declare const ExplicitAssetType: {
    readonly Upload: "upload";
    readonly Private: "private";
    readonly Authenticated: "authenticated";
    readonly Fetch: "fetch";
};
/**
 * The storage type of the asset. Defaults to 'upload'.
 */
export type ExplicitAssetType = ClosedEnum<typeof ExplicitAssetType>;
/**
 * Override the quality setting for this asset.
 */
export type QualityOverride = string | number;
export type ExplicitAssetRequestBody = {
    /**
     * (Required for signed REST API calls) Used to authenticate the request and based on the parameters you use in the request. When using the Cloudinary SDKs for signed requests, the signature is automatically generated and added to the request. If you manually generate your own signed POST request, you need to manually generate the signature parameter and add it to the request together with the api_key and timestamp parameters.
     *
     * @remarks
     */
    signature?: string | undefined;
    /**
     * The timestamp to use for the request in unix time. This is automatically computed by the Cloudinary's SDKs.
     */
    timestamp?: number | undefined;
    /**
     * The API key to use for the request. This is automatically computed by the Cloudinary's SDKs.
     */
    apiKey?: string | undefined;
    /**
     * Whether to return return accessibility analysis values for the image.
     */
    accessibilityAnalysis?: boolean | undefined;
    /**
     * The asset folder to assign to the asset.
     */
    assetFolder?: string | undefined;
    /**
     * When set to true, returns the uploaded asset's public_id immediately in the response, before the upload is completed (asynchronously). Default: false.
     *
     * @remarks
     */
    async?: boolean | undefined;
    /**
     * Whether to trigger automatic generation of video chapters. Chapters will be generated and saved as a .vtt file with -chapters appended to the public ID of the video. You can enable chapters as part of the Cloudinary Video Player. Relevant for videos only.
     */
    autoChaptering?: boolean | undefined;
    /**
     * Whether to trigger automatic generation of video transcription. Transcription will be generated and saved as a .vtt file with -transcription appended to the public ID of the video. Relevant for videos only.
     */
    autoTranscription?: boolean | undefined;
    /**
     * Whether to return a cinemagraph analysis value for the media asset between 0 and 1, where 0 means the asset is not a cinemagraph and 1 means the asset is a cinemagraph. Relevant for animated images and video only. A static image will return 0.
     */
    cinemagraphAnalysis?: boolean | undefined;
    /**
     * Whether to retrieve predominant colors & color histogram of the uploaded image. Note: If all returned colors are opaque, then 6-digit RGB hex values are returned. If one or more colors contain an alpha channel, then 8-digit RGBA hex quadruplet values are returned.
     */
    colors?: boolean | undefined;
    /**
     * Key-value pairs of general textual context metadata to attach to the asset.
     */
    context?: string | undefined;
    /**
     * An array of coordinates for custom cropping.
     */
    customCoordinates?: string | undefined;
    /**
     * A display name for the asset.
     */
    displayName?: string | undefined;
    /**
     * A list of transformations to eagerly generate for the asset. Accepts either a single transformation or a pipe-separated list of transformations.
     */
    eager?: string | undefined;
    /**
     * Whether to generate the eager transformations asynchronously in the background after the upload request is completed rather than before the upload is completed.
     */
    eagerAsync?: boolean | undefined;
    /**
     * A URL to notify when eager transformations are completed.
     */
    eagerNotificationUrl?: string | undefined;
    /**
     * An array of coordinates representing detected faces in the asset, used for custom cropping or overlays.
     */
    faceCoordinates?: string | undefined;
    /**
     * Whether to detect faces in the asset.
     */
    faces?: boolean | undefined;
    /**
     * An HTTP header or a list of headers lines for adding as response HTTP headers when delivering the asset to your users. Supported headers: Link, Authorization, X-Robots-Tag.
     *
     * @remarks
     */
    headers?: string | undefined;
    /**
     * Whether to invalidate CDN cache copies of a previously uploaded asset that shares the same public ID. Default: false.
     *
     * @remarks
     */
    invalidate?: boolean | undefined;
    /**
     * Whether to return IPTC, XMP, and detailed Exif metadata of the uploaded asset in the response.
     *
     * @remarks
     * Supported for images, video, and audio.
     * - Returned metadata for images includes: PixelsPerUnitX, PixelsPerUnitY, PixelUnits, Colorspace, and DPI.
     * - Returned metadata for audio and video includes: audio_codec, audio_bit_rate, audio_frequency, channels, channel_layout.
     * - Additional metadata for video includes: pix_format, codec, level, profile, video_bit_rate, dar.
     */
    mediaMetadata?: boolean | undefined;
    /**
     * Structured metadata to attach to the asset based on the metadata fields defined for your account.
     */
    metadata?: string | undefined;
    /**
     * For all asset types, set to:
     *
     * @remarks
     * - manual to add the uploaded asset to a list of pending assets that can be moderated using the Admin API or the Cloudinary Console.
     * - perception_point to automatically moderate the uploaded asset using the Perception Point Malware Detection add-on.
     *
     * For images only, set to:
     * - webpurify to automatically moderate the uploaded image using the WebPurify Image Moderation add-on.
     * - aws_rek to automatically moderate the uploaded image using the Amazon Rekognition AI Moderation add-on.
     * - duplicate:<threshold> to detect if the same or a similar image already exists using the Cloudinary Duplicate Image Detection add-on. Set threshold to a float greater than 0 and less than or equal to 1.0 to specify how similar an image needs to be in order to be considered a duplicate. Set threshold to 0 to add an image to the index of images that are searched when duplicate detection is invoked for another image.
     *
     * For videos only, set to:
     * - aws_rek_video to automatically moderate the uploaded video using the Amazon Rekognition Video Moderation add-on.
     * - google_video_moderation automatically moderate the uploaded video using the Google AI Video Moderation add-on.
     *
     * To request multiple moderations in a single API call:
     * - Send the desired list of moderations as a pipe-separated string with manual moderation, if relevant, being last.
     *
     * Note: Rejected assets are automatically invalidated on the CDN within approximately ten minutes.
     */
    moderation?: ExplicitAssetModeration | undefined;
    /**
     * A URL to notify when the asset is ready.
     */
    notificationUrl?: string | undefined;
    /**
     * Whether to return the perceptual hash (pHash) on the uploaded image for image similarity detection.
     *
     * @remarks
     */
    phash?: boolean | undefined;
    /**
     * Whether to return a quality analysis value for the image between 0 and 1, where 0 means the image is blurry and out of focus and 1 means the image is sharp and in focus. Relevant for images only.
     */
    qualityAnalysis?: boolean | undefined;
    /**
     * Regions to detect in the asset.
     */
    regions?: string | undefined;
    /**
     * Settings to automatically generate breakpoints for responsive images.
     */
    responsiveBreakpoints?: Array<ResponsiveBreakpoint> | undefined;
    /**
     * A comma-separated list of tag names to assign to the asset.
     */
    tags?: string | undefined;
    /**
     * A URL to redirect to after the upload/explicit is completed instead of returning the upload response.
     *
     * @remarks
     * Signed upload result parameters are added to the callback URL. This parameter is ignored for XHR (Ajax XMLHttpRequest) or JavaScript Fetch API upload requests.
     * Note: This parameter is relevant for direct uploads from a form in the browser. It is automatically set if you perform direct upload from the browser using Cloudinary's SDKs and the jQuery plugin.
     */
    callback?: string | undefined;
    /**
     * The public ID of the existing asset to apply operations on.
     */
    publicId: string;
    /**
     * The storage type of the asset. Defaults to 'upload'.
     */
    type?: ExplicitAssetType | undefined;
    /**
     * When applying eager for already existing video transformations, this setting indicates whether to force the existing derived video resources to be regenerated. Default for videos: false.
     *
     * @remarks
     * Note: When specifying existing eager transformations for images, corresponding derived images are always regenerated.
     */
    overwrite?: boolean | undefined;
    /**
     * Override the quality setting for this asset.
     */
    qualityOverride?: string | number | undefined;
};
export type ExplicitAssetRequest = {
    /**
     * The type of resource to apply operations on. "image" for images, "video" for videos, or "raw" for non-media files.
     */
    resourceType: ExplicitAssetResourceType;
    requestBody: ExplicitAssetRequestBody;
};
/** @internal */
export declare const ExplicitAssetGlobals$inboundSchema: z.ZodType<ExplicitAssetGlobals, z.ZodTypeDef, unknown>;
/** @internal */
export type ExplicitAssetGlobals$Outbound = {
    cloud_name?: string | undefined;
};
/** @internal */
export declare const ExplicitAssetGlobals$outboundSchema: z.ZodType<ExplicitAssetGlobals$Outbound, z.ZodTypeDef, ExplicitAssetGlobals>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ExplicitAssetGlobals$ {
    /** @deprecated use `ExplicitAssetGlobals$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ExplicitAssetGlobals, z.ZodTypeDef, unknown>;
    /** @deprecated use `ExplicitAssetGlobals$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ExplicitAssetGlobals$Outbound, z.ZodTypeDef, ExplicitAssetGlobals>;
    /** @deprecated use `ExplicitAssetGlobals$Outbound` instead. */
    type Outbound = ExplicitAssetGlobals$Outbound;
}
export declare function explicitAssetGlobalsToJSON(explicitAssetGlobals: ExplicitAssetGlobals): string;
export declare function explicitAssetGlobalsFromJSON(jsonString: string): SafeParseResult<ExplicitAssetGlobals, SDKValidationError>;
/** @internal */
export declare const ExplicitAssetResourceType$inboundSchema: z.ZodNativeEnum<typeof ExplicitAssetResourceType>;
/** @internal */
export declare const ExplicitAssetResourceType$outboundSchema: z.ZodNativeEnum<typeof ExplicitAssetResourceType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ExplicitAssetResourceType$ {
    /** @deprecated use `ExplicitAssetResourceType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Image: "image";
        readonly Video: "video";
        readonly Raw: "raw";
    }>;
    /** @deprecated use `ExplicitAssetResourceType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Image: "image";
        readonly Video: "video";
        readonly Raw: "raw";
    }>;
}
/** @internal */
export declare const ExplicitAssetModeration$inboundSchema: z.ZodNativeEnum<typeof ExplicitAssetModeration>;
/** @internal */
export declare const ExplicitAssetModeration$outboundSchema: z.ZodNativeEnum<typeof ExplicitAssetModeration>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ExplicitAssetModeration$ {
    /** @deprecated use `ExplicitAssetModeration$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Manual: "manual";
        readonly Webpurify: "webpurify";
        readonly Metascan: "metascan";
        readonly AwsRek: "aws_rek";
        readonly AwsRekVideo: "aws_rek_video";
        readonly GoogleVideoModeration: "google_video_moderation";
        readonly PerceptionPoint: "perception_point";
        readonly Duplicate: "duplicate";
        readonly Cld: "cld";
    }>;
    /** @deprecated use `ExplicitAssetModeration$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Manual: "manual";
        readonly Webpurify: "webpurify";
        readonly Metascan: "metascan";
        readonly AwsRek: "aws_rek";
        readonly AwsRekVideo: "aws_rek_video";
        readonly GoogleVideoModeration: "google_video_moderation";
        readonly PerceptionPoint: "perception_point";
        readonly Duplicate: "duplicate";
        readonly Cld: "cld";
    }>;
}
/** @internal */
export declare const ResponsiveBreakpoint$inboundSchema: z.ZodType<ResponsiveBreakpoint, z.ZodTypeDef, unknown>;
/** @internal */
export type ResponsiveBreakpoint$Outbound = {
    create_derived?: boolean | undefined;
    max_width?: number | undefined;
    min_width?: number | undefined;
    bytes_step?: number | undefined;
    max_images?: number | undefined;
    transformation?: string | undefined;
};
/** @internal */
export declare const ResponsiveBreakpoint$outboundSchema: z.ZodType<ResponsiveBreakpoint$Outbound, z.ZodTypeDef, ResponsiveBreakpoint>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ResponsiveBreakpoint$ {
    /** @deprecated use `ResponsiveBreakpoint$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ResponsiveBreakpoint, z.ZodTypeDef, unknown>;
    /** @deprecated use `ResponsiveBreakpoint$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ResponsiveBreakpoint$Outbound, z.ZodTypeDef, ResponsiveBreakpoint>;
    /** @deprecated use `ResponsiveBreakpoint$Outbound` instead. */
    type Outbound = ResponsiveBreakpoint$Outbound;
}
export declare function responsiveBreakpointToJSON(responsiveBreakpoint: ResponsiveBreakpoint): string;
export declare function responsiveBreakpointFromJSON(jsonString: string): SafeParseResult<ResponsiveBreakpoint, SDKValidationError>;
/** @internal */
export declare const ExplicitAssetType$inboundSchema: z.ZodNativeEnum<typeof ExplicitAssetType>;
/** @internal */
export declare const ExplicitAssetType$outboundSchema: z.ZodNativeEnum<typeof ExplicitAssetType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ExplicitAssetType$ {
    /** @deprecated use `ExplicitAssetType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Upload: "upload";
        readonly Private: "private";
        readonly Authenticated: "authenticated";
        readonly Fetch: "fetch";
    }>;
    /** @deprecated use `ExplicitAssetType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Upload: "upload";
        readonly Private: "private";
        readonly Authenticated: "authenticated";
        readonly Fetch: "fetch";
    }>;
}
/** @internal */
export declare const QualityOverride$inboundSchema: z.ZodType<QualityOverride, z.ZodTypeDef, unknown>;
/** @internal */
export type QualityOverride$Outbound = string | number;
/** @internal */
export declare const QualityOverride$outboundSchema: z.ZodType<QualityOverride$Outbound, z.ZodTypeDef, QualityOverride>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QualityOverride$ {
    /** @deprecated use `QualityOverride$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QualityOverride, z.ZodTypeDef, unknown>;
    /** @deprecated use `QualityOverride$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QualityOverride$Outbound, z.ZodTypeDef, QualityOverride>;
    /** @deprecated use `QualityOverride$Outbound` instead. */
    type Outbound = QualityOverride$Outbound;
}
export declare function qualityOverrideToJSON(qualityOverride: QualityOverride): string;
export declare function qualityOverrideFromJSON(jsonString: string): SafeParseResult<QualityOverride, SDKValidationError>;
/** @internal */
export declare const ExplicitAssetRequestBody$inboundSchema: z.ZodType<ExplicitAssetRequestBody, z.ZodTypeDef, unknown>;
/** @internal */
export type ExplicitAssetRequestBody$Outbound = {
    signature?: string | undefined;
    timestamp?: number | undefined;
    api_key?: string | undefined;
    accessibility_analysis?: boolean | undefined;
    asset_folder?: string | undefined;
    async?: boolean | undefined;
    auto_chaptering?: boolean | undefined;
    auto_transcription?: boolean | undefined;
    cinemagraph_analysis?: boolean | undefined;
    colors: boolean;
    context?: string | undefined;
    custom_coordinates?: string | undefined;
    display_name?: string | undefined;
    eager?: string | undefined;
    eager_async?: boolean | undefined;
    eager_notification_url?: string | undefined;
    face_coordinates?: string | undefined;
    faces?: boolean | undefined;
    headers?: string | undefined;
    invalidate?: boolean | undefined;
    media_metadata?: boolean | undefined;
    metadata?: string | undefined;
    moderation?: string | undefined;
    notification_url?: string | undefined;
    phash?: boolean | undefined;
    quality_analysis?: boolean | undefined;
    regions?: string | undefined;
    responsive_breakpoints?: Array<ResponsiveBreakpoint$Outbound> | undefined;
    tags?: string | undefined;
    callback?: string | undefined;
    public_id: string;
    type?: string | undefined;
    overwrite?: boolean | undefined;
    quality_override?: string | number | undefined;
};
/** @internal */
export declare const ExplicitAssetRequestBody$outboundSchema: z.ZodType<ExplicitAssetRequestBody$Outbound, z.ZodTypeDef, ExplicitAssetRequestBody>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ExplicitAssetRequestBody$ {
    /** @deprecated use `ExplicitAssetRequestBody$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ExplicitAssetRequestBody, z.ZodTypeDef, unknown>;
    /** @deprecated use `ExplicitAssetRequestBody$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ExplicitAssetRequestBody$Outbound, z.ZodTypeDef, ExplicitAssetRequestBody>;
    /** @deprecated use `ExplicitAssetRequestBody$Outbound` instead. */
    type Outbound = ExplicitAssetRequestBody$Outbound;
}
export declare function explicitAssetRequestBodyToJSON(explicitAssetRequestBody: ExplicitAssetRequestBody): string;
export declare function explicitAssetRequestBodyFromJSON(jsonString: string): SafeParseResult<ExplicitAssetRequestBody, SDKValidationError>;
/** @internal */
export declare const ExplicitAssetRequest$inboundSchema: z.ZodType<ExplicitAssetRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type ExplicitAssetRequest$Outbound = {
    resource_type: string;
    RequestBody: ExplicitAssetRequestBody$Outbound;
};
/** @internal */
export declare const ExplicitAssetRequest$outboundSchema: z.ZodType<ExplicitAssetRequest$Outbound, z.ZodTypeDef, ExplicitAssetRequest>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ExplicitAssetRequest$ {
    /** @deprecated use `ExplicitAssetRequest$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ExplicitAssetRequest, z.ZodTypeDef, unknown>;
    /** @deprecated use `ExplicitAssetRequest$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ExplicitAssetRequest$Outbound, z.ZodTypeDef, ExplicitAssetRequest>;
    /** @deprecated use `ExplicitAssetRequest$Outbound` instead. */
    type Outbound = ExplicitAssetRequest$Outbound;
}
export declare function explicitAssetRequestToJSON(explicitAssetRequest: ExplicitAssetRequest): string;
export declare function explicitAssetRequestFromJSON(jsonString: string): SafeParseResult<ExplicitAssetRequest, SDKValidationError>;
//# sourceMappingURL=explicitasset.d.ts.map