/* tslint:disable */
/* eslint-disable */
/**
 * authentik
 * Making authentication simple.
 *
 * The version of the OpenAPI document: 2026.5.0-rc1
 * Contact: hello@goauthentik.io
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import type { ContentType } from "./ContentType";
import { ContentTypeFromJSON } from "./ContentType";
import type { PartialUser } from "./PartialUser";
import { PartialUserFromJSON } from "./PartialUser";

/**
 * Mixin to validate that a valid enterprise license
 * exists before allowing to save the object
 * @export
 * @interface DataExport
 */
export interface DataExport {
    /**
     *
     * @type {string}
     * @memberof DataExport
     */
    readonly id: string;
    /**
     *
     * @type {PartialUser}
     * @memberof DataExport
     */
    readonly requestedBy: PartialUser;
    /**
     *
     * @type {Date}
     * @memberof DataExport
     */
    readonly requestedOn: Date;
    /**
     *
     * @type {ContentType}
     * @memberof DataExport
     */
    readonly contentType: ContentType;
    /**
     *
     * @type {{ [key: string]: any; }}
     * @memberof DataExport
     */
    queryParams: { [key: string]: any };
    /**
     *
     * @type {string}
     * @memberof DataExport
     */
    readonly fileUrl: string;
    /**
     *
     * @type {boolean}
     * @memberof DataExport
     */
    readonly completed: boolean;
}

/**
 * Check if a given object implements the DataExport interface.
 */
export function instanceOfDataExport(value: object): value is DataExport {
    if (!("id" in value) || value["id"] === undefined) return false;
    if (!("requestedBy" in value) || value["requestedBy"] === undefined) return false;
    if (!("requestedOn" in value) || value["requestedOn"] === undefined) return false;
    if (!("contentType" in value) || value["contentType"] === undefined) return false;
    if (!("queryParams" in value) || value["queryParams"] === undefined) return false;
    if (!("fileUrl" in value) || value["fileUrl"] === undefined) return false;
    if (!("completed" in value) || value["completed"] === undefined) return false;
    return true;
}

export function DataExportFromJSON(json: any): DataExport {
    return DataExportFromJSONTyped(json, false);
}

export function DataExportFromJSONTyped(json: any, ignoreDiscriminator: boolean): DataExport {
    if (json == null) {
        return json;
    }
    return {
        id: json["id"],
        requestedBy: PartialUserFromJSON(json["requested_by"]),
        requestedOn: new Date(json["requested_on"]),
        contentType: ContentTypeFromJSON(json["content_type"]),
        queryParams: json["query_params"],
        fileUrl: json["file_url"],
        completed: json["completed"],
    };
}

export function DataExportToJSON(json: any): DataExport {
    return DataExportToJSONTyped(json, false);
}

export function DataExportToJSONTyped(
    value?: Omit<
        DataExport,
        "id" | "requested_by" | "requested_on" | "content_type" | "file_url" | "completed"
    > | null,
    ignoreDiscriminator: boolean = false,
): any {
    if (value == null) {
        return value;
    }

    return {
        query_params: value["queryParams"],
    };
}
