/**
 * TypeScript type definitions for Midjourney operations
 */
export type MidjourneyAction = 'IMAGINE' | 'UPSCALE' | 'VARIATION' | 'REROLL' | 'DESCRIBE' | 'BLEND' | 'ZOOM' | 'PAN' | 'SWAP_FACE';
export type TaskStatus = 'NOT_START' | 'SUBMITTED' | 'IN_PROGRESS' | 'FAILURE' | 'SUCCESS';
export type AspectRatio = '1:1' | '16:9' | '9:16' | '4:3' | '3:4' | '2:3' | '3:2' | '5:4' | '4:5';
export type ImageQuality = 'low' | 'medium' | 'high';
export type StyleMode = 'raw' | 'stylize';
export type MidjourneyModel = 'midjourney' | 'niji' | 'niji-5' | 'niji-6';
export interface BaseRequest {
    state?: string;
    notifyHook?: string;
}
export interface ImagineRequest extends BaseRequest {
    prompt: string;
    base64Array?: string[];
}
export interface UpscaleRequest extends BaseRequest {
    taskId: string;
    index: number;
}
export interface VariationRequest extends BaseRequest {
    taskId: string;
    index: number;
}
export interface RerollRequest extends BaseRequest {
    taskId: string;
}
export interface BlendRequest extends BaseRequest {
    base64Array: string[];
}
export interface DescribeRequest extends BaseRequest {
    base64: string;
}
export interface ActionRequest extends BaseRequest {
    taskId: string;
    customId: string;
}
export interface ApiResponse<T = any> {
    code: number;
    description: string;
    properties?: Record<string, any>;
    result?: T;
}
export interface TaskButton {
    customId: string;
    label: string;
    type: string;
    style: string;
    emoji: string;
}
export interface TaskResponse {
    id?: string;
    action?: MidjourneyAction;
    prompt?: string;
    promptEn?: string;
    description?: string;
    status?: TaskStatus;
    progress?: string;
    imageUrl?: string;
    startTime?: number;
    submitTime?: number;
    finishTime?: number;
    failReason?: string;
    state?: string;
    properties?: Record<string, any>;
    buttons?: TaskButton[];
}
export interface ImagineToolParams {
    prompt: string;
    aspect_ratio?: AspectRatio;
    quality?: ImageQuality;
    style?: StyleMode;
    model?: MidjourneyModel;
    chaos?: number;
    stylize?: number;
    weird?: number;
    seed?: number;
    no?: string;
    reference_images?: string[];
}
export interface UpscaleToolParams {
    task_id: string;
    index: number;
}
export interface VariationToolParams {
    task_id: string;
    index: number;
}
export interface RerollToolParams {
    task_id: string;
}
export interface BlendToolParams {
    images: string[];
    aspect_ratio?: AspectRatio;
}
export interface DescribeToolParams {
    image: string;
}
export interface GetTaskToolParams {
    task_id: string;
}
export interface ActionToolParams {
    task_id: string;
    action: string;
}
export interface ToolResponse {
    content: Array<{
        type: 'text' | 'image';
        text?: string;
        data?: string;
        mimeType?: string;
    }>;
}
export interface TaskSubmissionResult {
    task_id: string;
    status: string;
    message: string;
}
export interface TaskStatusResult {
    task_id: string;
    status: TaskStatus;
    progress?: string;
    image_url?: string;
    description?: string;
    fail_reason?: string;
    buttons?: Array<{
        label: string;
        action: string;
        enabled: boolean;
    }>;
    created_at?: string;
    updated_at?: string;
    completed_at?: string;
}
export interface PromptBuilder {
    text: string;
    aspectRatio?: AspectRatio;
    quality?: ImageQuality;
    style?: StyleMode;
    model?: MidjourneyModel;
    parameters?: {
        chaos?: number;
        stylize?: number;
        weird?: number;
        seed?: number;
        no?: string;
    };
}
export interface ImageMetadata {
    width?: number;
    height?: number;
    format?: string;
    size?: number;
    url?: string;
}
export interface TaskMetrics {
    submission_time: number;
    processing_time?: number;
    completion_time?: number;
    total_duration?: number;
}
export interface MidjourneyError {
    code: number;
    message: string;
    details?: string;
    task_id?: string;
    retry_after?: number;
}
export interface ValidationError {
    field: string;
    message: string;
    value?: any;
}
export interface MidjourneyConfig {
    api_key: string;
    base_url: string;
    timeout: number;
    max_retries: number;
    default_model?: MidjourneyModel;
    default_quality?: ImageQuality;
    default_aspect_ratio?: AspectRatio;
}
export declare function isTaskCompleted(status: TaskStatus): boolean;
export declare function isTaskSuccessful(status: TaskStatus): boolean;
export declare function isValidAspectRatio(ratio: string): ratio is AspectRatio;
export declare function isValidQuality(quality: string): quality is ImageQuality;
export declare function isValidStyle(style: string): style is StyleMode;
//# sourceMappingURL=midjourney.d.ts.map