/* tslint:disable */
/* eslint-disable */
/**
 * Montelo
 * Documentation for the Montelo API.
 *
 * The version of the OpenAPI document: 1.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
/**
 * 
 * @export
 * @interface FineTuneDto
 */
export interface FineTuneDto {
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    id: string;
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    provider: FineTuneDtoProviderEnum;
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    model: string;
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    status: FineTuneDtoStatusEnum;
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    startedAt: string | null;
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    endedAt: string | null;
    /**
     * 
     * @type {object}
     * @memberof FineTuneDto
     */
    metadata: object | null;
    /**
     * 
     * @type {string}
     * @memberof FineTuneDto
     */
    datasetId: string;
}


/**
 * @export
 */
export const FineTuneDtoProviderEnum = {
    Openai: 'OPENAI',
    Cohere: 'COHERE',
    Montelo: 'MONTELO'
} as const;
export type FineTuneDtoProviderEnum = typeof FineTuneDtoProviderEnum[keyof typeof FineTuneDtoProviderEnum];

/**
 * @export
 */
export const FineTuneDtoStatusEnum = {
    Pending: 'PENDING',
    Running: 'RUNNING',
    Deploying: 'DEPLOYING',
    Completed: 'COMPLETED',
    Failed: 'FAILED',
    Cancelled: 'CANCELLED'
} as const;
export type FineTuneDtoStatusEnum = typeof FineTuneDtoStatusEnum[keyof typeof FineTuneDtoStatusEnum];


/**
 * Check if a given object implements the FineTuneDto interface.
 */
export function instanceOfFineTuneDto(value: object): boolean {
    let isInstance = true;
    isInstance = isInstance && "id" in value;
    isInstance = isInstance && "provider" in value;
    isInstance = isInstance && "model" in value;
    isInstance = isInstance && "status" in value;
    isInstance = isInstance && "startedAt" in value;
    isInstance = isInstance && "endedAt" in value;
    isInstance = isInstance && "metadata" in value;
    isInstance = isInstance && "datasetId" in value;

    return isInstance;
}

export function FineTuneDtoFromJSON(json: any): FineTuneDto {
    return FineTuneDtoFromJSONTyped(json, false);
}

export function FineTuneDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): FineTuneDto {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'id': json['id'],
        'provider': json['provider'],
        'model': json['model'],
        'status': json['status'],
        'startedAt': json['startedAt'],
        'endedAt': json['endedAt'],
        'metadata': json['metadata'],
        'datasetId': json['datasetId'],
    };
}

export function FineTuneDtoToJSON(value?: FineTuneDto | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'id': value.id,
        'provider': value.provider,
        'model': value.model,
        'status': value.status,
        'startedAt': value.startedAt,
        'endedAt': value.endedAt,
        'metadata': value.metadata,
        'datasetId': value.datasetId,
    };
}

