/* tslint:disable */
/* eslint-disable */
/**
 * recraft.ai external api
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 0.0.1
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { mapValues } from '../runtime';
import type { ImageFeatures } from './ImageFeatures';
import {
    ImageFeaturesFromJSON,
    ImageFeaturesFromJSONTyped,
    ImageFeaturesToJSON,
    ImageFeaturesToJSONTyped,
} from './ImageFeatures';

/**
 * 
 * @export
 * @interface Image
 */
export interface Image {
    /**
     * 
     * @type {string}
     * @memberof Image
     */
    b64Json?: string;
    /**
     * 
     * @type {ImageFeatures}
     * @memberof Image
     */
    features?: ImageFeatures;
    /**
     * 
     * @type {string}
     * @memberof Image
     */
    imageId: string;
    /**
     * 
     * @type {string}
     * @memberof Image
     */
    revisedPrompt?: string;
    /**
     * 
     * @type {string}
     * @memberof Image
     */
    url?: string;
}

/**
 * Check if a given object implements the Image interface.
 */
export function instanceOfImage(value: object): value is Image {
    if (!('imageId' in value) || value['imageId'] === undefined) return false;
    return true;
}

export function ImageFromJSON(json: any): Image {
    return ImageFromJSONTyped(json, false);
}

export function ImageFromJSONTyped(json: any, ignoreDiscriminator: boolean): Image {
    if (json == null) {
        return json;
    }
    return {
        
        'b64Json': json['b64_json'] == null ? undefined : json['b64_json'],
        'features': json['features'] == null ? undefined : ImageFeaturesFromJSON(json['features']),
        'imageId': json['image_id'],
        'revisedPrompt': json['revised_prompt'] == null ? undefined : json['revised_prompt'],
        'url': json['url'] == null ? undefined : json['url'],
    };
}

export function ImageToJSON(json: any): Image {
    return ImageToJSONTyped(json, false);
}

export function ImageToJSONTyped(value?: Image | null, ignoreDiscriminator: boolean = false): any {
    if (value == null) {
        return value;
    }

    return {
        
        'b64_json': value['b64Json'],
        'features': ImageFeaturesToJSON(value['features']),
        'image_id': value['imageId'],
        'revised_prompt': value['revisedPrompt'],
        'url': value['url'],
    };
}

