/* 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';
import type { DatapointDto } from './DatapointDto';
import {
    DatapointDtoFromJSON,
    DatapointDtoFromJSONTyped,
    DatapointDtoToJSON,
} from './DatapointDto';

/**
 * 
 * @export
 * @interface FullDatapointRunDto
 */
export interface FullDatapointRunDto {
    /**
     * 
     * @type {string}
     * @memberof FullDatapointRunDto
     */
    id: string;
    /**
     * 
     * @type {object}
     * @memberof FullDatapointRunDto
     */
    output: object;
    /**
     * 
     * @type {object}
     * @memberof FullDatapointRunDto
     */
    evaluation: object;
    /**
     * 
     * @type {string}
     * @memberof FullDatapointRunDto
     */
    experimentId: string;
    /**
     * 
     * @type {string}
     * @memberof FullDatapointRunDto
     */
    datapointId: string;
    /**
     * 
     * @type {string}
     * @memberof FullDatapointRunDto
     */
    createdAt: string;
    /**
     * 
     * @type {DatapointDto}
     * @memberof FullDatapointRunDto
     */
    datapoint: DatapointDto;
}

/**
 * Check if a given object implements the FullDatapointRunDto interface.
 */
export function instanceOfFullDatapointRunDto(value: object): boolean {
    let isInstance = true;
    isInstance = isInstance && "id" in value;
    isInstance = isInstance && "output" in value;
    isInstance = isInstance && "evaluation" in value;
    isInstance = isInstance && "experimentId" in value;
    isInstance = isInstance && "datapointId" in value;
    isInstance = isInstance && "createdAt" in value;
    isInstance = isInstance && "datapoint" in value;

    return isInstance;
}

export function FullDatapointRunDtoFromJSON(json: any): FullDatapointRunDto {
    return FullDatapointRunDtoFromJSONTyped(json, false);
}

export function FullDatapointRunDtoFromJSONTyped(json: any, ignoreDiscriminator: boolean): FullDatapointRunDto {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'id': json['id'],
        'output': json['output'],
        'evaluation': json['evaluation'],
        'experimentId': json['experimentId'],
        'datapointId': json['datapointId'],
        'createdAt': json['createdAt'],
        'datapoint': DatapointDtoFromJSON(json['datapoint']),
    };
}

export function FullDatapointRunDtoToJSON(value?: FullDatapointRunDto | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'id': value.id,
        'output': value.output,
        'evaluation': value.evaluation,
        'experimentId': value.experimentId,
        'datapointId': value.datapointId,
        'createdAt': value.createdAt,
        'datapoint': DatapointDtoToJSON(value.datapoint),
    };
}

