/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
export const UpdateClassStatus = {
    Active: "active",
    Tobedeleted: "tobedeleted",
};
export const UpdateClassClassType = {
    Homeroom: "homeroom",
    Scheduled: "scheduled",
};
/** @internal */
export const UpdateClassStatus$inboundSchema = z.nativeEnum(UpdateClassStatus);
/** @internal */
export const UpdateClassStatus$outboundSchema = UpdateClassStatus$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassStatus$;
(function (UpdateClassStatus$) {
    /** @deprecated use `UpdateClassStatus$inboundSchema` instead. */
    UpdateClassStatus$.inboundSchema = UpdateClassStatus$inboundSchema;
    /** @deprecated use `UpdateClassStatus$outboundSchema` instead. */
    UpdateClassStatus$.outboundSchema = UpdateClassStatus$outboundSchema;
})(UpdateClassStatus$ || (UpdateClassStatus$ = {}));
/** @internal */
export const UpdateClassClassType$inboundSchema = z.nativeEnum(UpdateClassClassType);
/** @internal */
export const UpdateClassClassType$outboundSchema = UpdateClassClassType$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassClassType$;
(function (UpdateClassClassType$) {
    /** @deprecated use `UpdateClassClassType$inboundSchema` instead. */
    UpdateClassClassType$.inboundSchema = UpdateClassClassType$inboundSchema;
    /** @deprecated use `UpdateClassClassType$outboundSchema` instead. */
    UpdateClassClassType$.outboundSchema = UpdateClassClassType$outboundSchema;
})(UpdateClassClassType$ || (UpdateClassClassType$ = {}));
/** @internal */
export const UpdateClassResource$inboundSchema = z.object({
    sourcedId: z.string(),
});
/** @internal */
export const UpdateClassResource$outboundSchema = z.object({
    sourcedId: z.string(),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassResource$;
(function (UpdateClassResource$) {
    /** @deprecated use `UpdateClassResource$inboundSchema` instead. */
    UpdateClassResource$.inboundSchema = UpdateClassResource$inboundSchema;
    /** @deprecated use `UpdateClassResource$outboundSchema` instead. */
    UpdateClassResource$.outboundSchema = UpdateClassResource$outboundSchema;
})(UpdateClassResource$ || (UpdateClassResource$ = {}));
export function updateClassResourceToJSON(updateClassResource) {
    return JSON.stringify(UpdateClassResource$outboundSchema.parse(updateClassResource));
}
export function updateClassResourceFromJSON(jsonString) {
    return safeParse(jsonString, (x) => UpdateClassResource$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'UpdateClassResource' from JSON`);
}
/** @internal */
export const UpdateClassTerm$inboundSchema = z.object({
    sourcedId: z.string(),
});
/** @internal */
export const UpdateClassTerm$outboundSchema = z.object({
    sourcedId: z.string(),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassTerm$;
(function (UpdateClassTerm$) {
    /** @deprecated use `UpdateClassTerm$inboundSchema` instead. */
    UpdateClassTerm$.inboundSchema = UpdateClassTerm$inboundSchema;
    /** @deprecated use `UpdateClassTerm$outboundSchema` instead. */
    UpdateClassTerm$.outboundSchema = UpdateClassTerm$outboundSchema;
})(UpdateClassTerm$ || (UpdateClassTerm$ = {}));
export function updateClassTermToJSON(updateClassTerm) {
    return JSON.stringify(UpdateClassTerm$outboundSchema.parse(updateClassTerm));
}
export function updateClassTermFromJSON(jsonString) {
    return safeParse(jsonString, (x) => UpdateClassTerm$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'UpdateClassTerm' from JSON`);
}
/** @internal */
export const UpdateClassClass$inboundSchema = z.object({
    status: UpdateClassStatus$inboundSchema.optional(),
    metadata: z.record(z.any()).optional(),
    title: z.string().optional(),
    classCode: z.string().optional(),
    classType: UpdateClassClassType$inboundSchema.optional(),
    location: z.string().optional(),
    grades: z.array(z.string()).optional(),
    subjects: z.array(z.string()).optional(),
    subjectCodes: z.array(z.string()).optional(),
    periods: z.array(z.string()).optional(),
    resources: z.array(z.lazy(() => UpdateClassResource$inboundSchema))
        .optional(),
    terms: z.array(z.lazy(() => UpdateClassTerm$inboundSchema)).optional(),
});
/** @internal */
export const UpdateClassClass$outboundSchema = z.object({
    status: UpdateClassStatus$outboundSchema.optional(),
    metadata: z.record(z.any()).optional(),
    title: z.string().optional(),
    classCode: z.string().optional(),
    classType: UpdateClassClassType$outboundSchema.optional(),
    location: z.string().optional(),
    grades: z.array(z.string()).optional(),
    subjects: z.array(z.string()).optional(),
    subjectCodes: z.array(z.string()).optional(),
    periods: z.array(z.string()).optional(),
    resources: z.array(z.lazy(() => UpdateClassResource$outboundSchema))
        .optional(),
    terms: z.array(z.lazy(() => UpdateClassTerm$outboundSchema)).optional(),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassClass$;
(function (UpdateClassClass$) {
    /** @deprecated use `UpdateClassClass$inboundSchema` instead. */
    UpdateClassClass$.inboundSchema = UpdateClassClass$inboundSchema;
    /** @deprecated use `UpdateClassClass$outboundSchema` instead. */
    UpdateClassClass$.outboundSchema = UpdateClassClass$outboundSchema;
})(UpdateClassClass$ || (UpdateClassClass$ = {}));
export function updateClassClassToJSON(updateClassClass) {
    return JSON.stringify(UpdateClassClass$outboundSchema.parse(updateClassClass));
}
export function updateClassClassFromJSON(jsonString) {
    return safeParse(jsonString, (x) => UpdateClassClass$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'UpdateClassClass' from JSON`);
}
/** @internal */
export const UpdateClassRequestBody$inboundSchema = z.object({
    class: z.lazy(() => UpdateClassClass$inboundSchema),
});
/** @internal */
export const UpdateClassRequestBody$outboundSchema = z.object({
    class: z.lazy(() => UpdateClassClass$outboundSchema),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassRequestBody$;
(function (UpdateClassRequestBody$) {
    /** @deprecated use `UpdateClassRequestBody$inboundSchema` instead. */
    UpdateClassRequestBody$.inboundSchema = UpdateClassRequestBody$inboundSchema;
    /** @deprecated use `UpdateClassRequestBody$outboundSchema` instead. */
    UpdateClassRequestBody$.outboundSchema = UpdateClassRequestBody$outboundSchema;
})(UpdateClassRequestBody$ || (UpdateClassRequestBody$ = {}));
export function updateClassRequestBodyToJSON(updateClassRequestBody) {
    return JSON.stringify(UpdateClassRequestBody$outboundSchema.parse(updateClassRequestBody));
}
export function updateClassRequestBodyFromJSON(jsonString) {
    return safeParse(jsonString, (x) => UpdateClassRequestBody$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'UpdateClassRequestBody' from JSON`);
}
/** @internal */
export const UpdateClassRequest$inboundSchema = z.object({
    sourcedId: z.string(),
    RequestBody: z.lazy(() => UpdateClassRequestBody$inboundSchema).optional(),
}).transform((v) => {
    return remap$(v, {
        "RequestBody": "requestBody",
    });
});
/** @internal */
export const UpdateClassRequest$outboundSchema = z.object({
    sourcedId: z.string(),
    requestBody: z.lazy(() => UpdateClassRequestBody$outboundSchema).optional(),
}).transform((v) => {
    return remap$(v, {
        requestBody: "RequestBody",
    });
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var UpdateClassRequest$;
(function (UpdateClassRequest$) {
    /** @deprecated use `UpdateClassRequest$inboundSchema` instead. */
    UpdateClassRequest$.inboundSchema = UpdateClassRequest$inboundSchema;
    /** @deprecated use `UpdateClassRequest$outboundSchema` instead. */
    UpdateClassRequest$.outboundSchema = UpdateClassRequest$outboundSchema;
})(UpdateClassRequest$ || (UpdateClassRequest$ = {}));
export function updateClassRequestToJSON(updateClassRequest) {
    return JSON.stringify(UpdateClassRequest$outboundSchema.parse(updateClassRequest));
}
export function updateClassRequestFromJSON(jsonString) {
    return safeParse(jsonString, (x) => UpdateClassRequest$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'UpdateClassRequest' from JSON`);
}
//# sourceMappingURL=updateclass.js.map