import { IExecuteFunctions } from 'n8n-workflow'; import { CloudinaryCredentials } from './operations/types'; export declare const MODEL_FAMILIES: readonly ["flux", "recraft", "gpt-image", "nano-banana", "ideogram"]; export type ModelFamily = (typeof MODEL_FAMILIES)[number]; export declare const MODEL_TIERS: readonly ["standard", "premium"]; export type ModelTier = (typeof MODEL_TIERS)[number]; export declare const MODEL_PREFERENCES: readonly ["balanced", "quality", "economy", "balanced_fast", "quality_fast", "economy_fast"]; export type ModelPreference = (typeof MODEL_PREFERENCES)[number]; export declare const TEXT_TO_IMAGE_MODEL_IDS: readonly ["nano-banana-1", "nano-banana-2", "nano-banana-2-lite", "flux-2-klein-9b", "flux-2-pro", "flux-2-flash", "flux-3", "recraft-v3", "recraft-v4", "gpt-image-1-mini", "gpt-image-2", "gpt-image-2.5-flare", "gpt-image-2.5-sunburst", "muse-image", "mai-image-2.5", "mai-image-2.5-pro", "seedream-5-pro", "grok-imagine-image", "recraft-v4.1-utility", "recraft-v4.1-utility-pro", "seedream-5-lite", "grok-imagine-image-2.0-low", "qwen-image-3", "ideogram-v4-base", "ideogram-v4-turbo"]; export declare const IMAGE_TO_IMAGE_MODEL_IDS: readonly ["nano-banana-1-edit", "nano-banana-2-edit", "nano-banana-2-lite-edit", "flux-2-klein-9b-edit", "flux-2-pro-edit", "flux-2-flash-edit", "flux-3-edit", "recraft-v3-edit", "gpt-image-1-mini-edit", "gpt-image-2-edit", "gpt-image-2.5-flare-edit", "gpt-image-2.5-sunburst-edit", "muse-image-edit", "mai-image-2.5-edit", "mai-image-2.5-pro-edit", "seedream-5-pro-edit", "grok-imagine-image-edit", "seedream-5-lite-edit", "grok-imagine-image-2.0-low-edit", "qwen-image-3-edit"]; export type ModelId = (typeof TEXT_TO_IMAGE_MODEL_IDS)[number] | (typeof IMAGE_TO_IMAGE_MODEL_IDS)[number]; export interface ModelByFamily { family: ModelFamily; tier?: ModelTier; } export interface ModelById { id: ModelId; } export interface ModelAuto { mode: 'auto'; preference?: ModelPreference; } export type ModelSelection = ModelByFamily | ModelById | ModelAuto; export declare const ASPECT_RATIOS: readonly ["1:1", "16:9", "9:16", "4:3", "3:4"]; export type AspectRatio = (typeof ASPECT_RATIOS)[number]; export declare const RESOLUTIONS: readonly ["0.5K", "1K", "2K", "4K"]; export type Resolution = (typeof RESOLUTIONS)[number]; export declare const IMAGE_DIMENSION_MIN = 64; export declare const IMAGE_DIMENSION_MAX = 4096; export interface DimensionsImageSize { width: number; height: number; } export interface DeclarativeImageSize { aspect_ratio: AspectRatio; resolution?: Resolution; } export type ImageSize = DimensionsImageSize | DeclarativeImageSize; export declare const IMAGE_FORMATS: readonly ["jpeg", "png", "webp"]; export type ImageFormat = (typeof IMAGE_FORMATS)[number]; export interface ManagedAssetTarget { target_type: 'managed_asset'; public_id?: string; upload_preset?: string; } export interface TemporaryTarget { target_type: 'temporary'; } export type Target = ManagedAssetTarget | TemporaryTarget; export declare const REFERENCE_IMAGES_MIN = 1; export declare const REFERENCE_IMAGES_MAX = 4; export interface ManagedAssetReference { source_type: 'managed_asset'; asset_id: string; } export interface UrlReference { source_type: 'url'; url: string; } export type ReferenceImage = ManagedAssetReference | UrlReference; export interface GenerateImageRequest { prompt: string; model?: ModelSelection; image_size?: ImageSize; format?: ImageFormat; target?: Target; seed?: number | null; async?: boolean; notification_url?: string; } export interface ImageToImageRequest extends GenerateImageRequest { reference_images: ReferenceImage[]; } export interface ManagedAssetStorage { storage_type: 'managed_asset'; secure_url: string; asset_id?: string; public_id: string; resource_type: 'image' | 'video' | 'raw'; type: string; version: number; } export interface TemporaryStorage { storage_type: 'temporary'; secure_url: string; expires_at: string; } export type Storage = ManagedAssetStorage | TemporaryStorage; export interface Model { family: string; tier: string; id: string; } export interface GeneratedAsset { storage: Storage; format?: ImageFormat; width?: number; height?: number; bytes?: number; model?: Model; seed?: number | null; created_at?: string; } export interface GeneratedAssets { assets: GeneratedAsset[]; } export interface AddonQuota { type: 'image_generation'; used_by_request: number | null; remaining: number | null; limit: number | null; } export interface Limits { addons_quota?: AddonQuota[]; } export declare const NOTICE_SEVERITIES: readonly ["info", "warning", "blocking"]; export type NoticeSeverity = (typeof NOTICE_SEVERITIES)[number]; export interface Notice { severity: NoticeSeverity; text: string; } export type Notices = Notice[]; export interface GenerateImageResult { data?: GeneratedAssets; limits?: Limits; notices?: Notices; request_id: string; } export declare const TASK_STATUSES: readonly ["pending", "processing", "completed", "failed"]; export type TaskStatus = (typeof TASK_STATUSES)[number]; export interface Task { task_id: string; status: TaskStatus; result?: GeneratedAssets | null; limits?: Limits; } export interface TaskResponse { data?: Task; notices?: Notices; request_id: string; } export declare const TASK_ID_PATTERN: RegExp; export type ErrorCategory = 'user_error' | 'auth_error' | 'server_error' | 'rate_limit_error'; export interface MediaGenerationErrorResponse { error?: { category?: ErrorCategory; code?: string; message?: string; details?: Record; }; limits?: Limits; notices?: Notices; request_id?: string; } export declare const isTaskResponse: (response: GenerateImageResult | TaskResponse) => response is TaskResponse; export declare const buildMediaGenerationUrl: (cloudName: string, path: string) => string; export declare const generateImage: (ctx: IExecuteFunctions, i: number, creds: CloudinaryCredentials, body: GenerateImageRequest) => Promise; export declare const generateImageFromImages: (ctx: IExecuteFunctions, i: number, creds: CloudinaryCredentials, body: ImageToImageRequest) => Promise; export declare const getGenerationTask: (ctx: IExecuteFunctions, i: number, creds: CloudinaryCredentials, taskId: string) => Promise; export declare const extractMediaGenerationError: (error: any) => { status: number | undefined; body: MediaGenerationErrorResponse | undefined; }; export declare const noticesText: (notices: Notices | undefined) => string;