/*
 * 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";
/**
 * The order to sort the response by
 */
export const GetTeachersForClassOrderBy = {
    Asc: "asc",
    Desc: "desc",
};
export const GetTeachersForClassStatus = {
    Active: "active",
    Tobedeleted: "tobedeleted",
};
export const GetTeachersForClassRoleType = {
    Primary: "primary",
    Secondary: "secondary",
};
export const GetTeachersForClassRoleEnum = {
    Administrator: "administrator",
    Aide: "aide",
    Guardian: "guardian",
    Parent: "parent",
    Proctor: "proctor",
    Relative: "relative",
    Student: "student",
    Teacher: "teacher",
};
export const GetTeachersForClassType = {
    AcademicSession: "academicSession",
    AssessmentLineItem: "assessmentLineItem",
    Category: "category",
    Class: "class",
    Course: "course",
    Demographics: "demographics",
    Enrollment: "enrollment",
    GradingPeriod: "gradingPeriod",
    LineItem: "lineItem",
    Org: "org",
    Resource: "resource",
    Result: "result",
    ScoreScale: "scoreScale",
    Student: "student",
    Teacher: "teacher",
    Term: "term",
    User: "user",
    ComponentResource: "componentResource",
    CourseComponent: "courseComponent",
};
/** @internal */
export const GetTeachersForClassOrderBy$inboundSchema = z.nativeEnum(GetTeachersForClassOrderBy);
/** @internal */
export const GetTeachersForClassOrderBy$outboundSchema = GetTeachersForClassOrderBy$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassOrderBy$;
(function (GetTeachersForClassOrderBy$) {
    /** @deprecated use `GetTeachersForClassOrderBy$inboundSchema` instead. */
    GetTeachersForClassOrderBy$.inboundSchema = GetTeachersForClassOrderBy$inboundSchema;
    /** @deprecated use `GetTeachersForClassOrderBy$outboundSchema` instead. */
    GetTeachersForClassOrderBy$.outboundSchema = GetTeachersForClassOrderBy$outboundSchema;
})(GetTeachersForClassOrderBy$ || (GetTeachersForClassOrderBy$ = {}));
/** @internal */
export const GetTeachersForClassRequest$inboundSchema = z.object({
    classSourcedId: z.string(),
    fields: z.string().optional(),
    limit: z.number().int().default(100),
    offset: z.number().int().default(0),
    sort: z.string().optional(),
    orderBy: GetTeachersForClassOrderBy$inboundSchema.optional(),
    filter: z.string().optional(),
    search: z.string().optional(),
});
/** @internal */
export const GetTeachersForClassRequest$outboundSchema = z.object({
    classSourcedId: z.string(),
    fields: z.string().optional(),
    limit: z.number().int().default(100),
    offset: z.number().int().default(0),
    sort: z.string().optional(),
    orderBy: GetTeachersForClassOrderBy$outboundSchema.optional(),
    filter: z.string().optional(),
    search: z.string().optional(),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassRequest$;
(function (GetTeachersForClassRequest$) {
    /** @deprecated use `GetTeachersForClassRequest$inboundSchema` instead. */
    GetTeachersForClassRequest$.inboundSchema = GetTeachersForClassRequest$inboundSchema;
    /** @deprecated use `GetTeachersForClassRequest$outboundSchema` instead. */
    GetTeachersForClassRequest$.outboundSchema = GetTeachersForClassRequest$outboundSchema;
})(GetTeachersForClassRequest$ || (GetTeachersForClassRequest$ = {}));
export function getTeachersForClassRequestToJSON(getTeachersForClassRequest) {
    return JSON.stringify(GetTeachersForClassRequest$outboundSchema.parse(getTeachersForClassRequest));
}
export function getTeachersForClassRequestFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassRequest$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassRequest' from JSON`);
}
/** @internal */
export const GetTeachersForClassStatus$inboundSchema = z.nativeEnum(GetTeachersForClassStatus);
/** @internal */
export const GetTeachersForClassStatus$outboundSchema = GetTeachersForClassStatus$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassStatus$;
(function (GetTeachersForClassStatus$) {
    /** @deprecated use `GetTeachersForClassStatus$inboundSchema` instead. */
    GetTeachersForClassStatus$.inboundSchema = GetTeachersForClassStatus$inboundSchema;
    /** @deprecated use `GetTeachersForClassStatus$outboundSchema` instead. */
    GetTeachersForClassStatus$.outboundSchema = GetTeachersForClassStatus$outboundSchema;
})(GetTeachersForClassStatus$ || (GetTeachersForClassStatus$ = {}));
/** @internal */
export const GetTeachersForClassUserId$inboundSchema = z.object({
    type: z.string(),
    identifier: z.string(),
});
/** @internal */
export const GetTeachersForClassUserId$outboundSchema = z.object({
    type: z.string(),
    identifier: 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 GetTeachersForClassUserId$;
(function (GetTeachersForClassUserId$) {
    /** @deprecated use `GetTeachersForClassUserId$inboundSchema` instead. */
    GetTeachersForClassUserId$.inboundSchema = GetTeachersForClassUserId$inboundSchema;
    /** @deprecated use `GetTeachersForClassUserId$outboundSchema` instead. */
    GetTeachersForClassUserId$.outboundSchema = GetTeachersForClassUserId$outboundSchema;
})(GetTeachersForClassUserId$ || (GetTeachersForClassUserId$ = {}));
export function getTeachersForClassUserIdToJSON(getTeachersForClassUserId) {
    return JSON.stringify(GetTeachersForClassUserId$outboundSchema.parse(getTeachersForClassUserId));
}
export function getTeachersForClassUserIdFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassUserId$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassUserId' from JSON`);
}
/** @internal */
export const GetTeachersForClassRoleType$inboundSchema = z.nativeEnum(GetTeachersForClassRoleType);
/** @internal */
export const GetTeachersForClassRoleType$outboundSchema = GetTeachersForClassRoleType$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassRoleType$;
(function (GetTeachersForClassRoleType$) {
    /** @deprecated use `GetTeachersForClassRoleType$inboundSchema` instead. */
    GetTeachersForClassRoleType$.inboundSchema = GetTeachersForClassRoleType$inboundSchema;
    /** @deprecated use `GetTeachersForClassRoleType$outboundSchema` instead. */
    GetTeachersForClassRoleType$.outboundSchema = GetTeachersForClassRoleType$outboundSchema;
})(GetTeachersForClassRoleType$ || (GetTeachersForClassRoleType$ = {}));
/** @internal */
export const GetTeachersForClassRoleEnum$inboundSchema = z.nativeEnum(GetTeachersForClassRoleEnum);
/** @internal */
export const GetTeachersForClassRoleEnum$outboundSchema = GetTeachersForClassRoleEnum$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassRoleEnum$;
(function (GetTeachersForClassRoleEnum$) {
    /** @deprecated use `GetTeachersForClassRoleEnum$inboundSchema` instead. */
    GetTeachersForClassRoleEnum$.inboundSchema = GetTeachersForClassRoleEnum$inboundSchema;
    /** @deprecated use `GetTeachersForClassRoleEnum$outboundSchema` instead. */
    GetTeachersForClassRoleEnum$.outboundSchema = GetTeachersForClassRoleEnum$outboundSchema;
})(GetTeachersForClassRoleEnum$ || (GetTeachersForClassRoleEnum$ = {}));
/** @internal */
export const GetTeachersForClassOrg$inboundSchema = z.object({
    href: z.string(),
    sourcedId: z.string(),
    type: z.string(),
});
/** @internal */
export const GetTeachersForClassOrg$outboundSchema = z.object({
    href: z.string(),
    sourcedId: z.string(),
    type: 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 GetTeachersForClassOrg$;
(function (GetTeachersForClassOrg$) {
    /** @deprecated use `GetTeachersForClassOrg$inboundSchema` instead. */
    GetTeachersForClassOrg$.inboundSchema = GetTeachersForClassOrg$inboundSchema;
    /** @deprecated use `GetTeachersForClassOrg$outboundSchema` instead. */
    GetTeachersForClassOrg$.outboundSchema = GetTeachersForClassOrg$outboundSchema;
})(GetTeachersForClassOrg$ || (GetTeachersForClassOrg$ = {}));
export function getTeachersForClassOrgToJSON(getTeachersForClassOrg) {
    return JSON.stringify(GetTeachersForClassOrg$outboundSchema.parse(getTeachersForClassOrg));
}
export function getTeachersForClassOrgFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassOrg$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassOrg' from JSON`);
}
/** @internal */
export const GetTeachersForClassRole$inboundSchema = z.object({
    roleType: GetTeachersForClassRoleType$inboundSchema,
    role: GetTeachersForClassRoleEnum$inboundSchema,
    org: z.lazy(() => GetTeachersForClassOrg$inboundSchema),
    userProfile: z.string().optional(),
    beginDate: z.nullable(z.string()),
    endDate: z.nullable(z.string()),
});
/** @internal */
export const GetTeachersForClassRole$outboundSchema = z.object({
    roleType: GetTeachersForClassRoleType$outboundSchema,
    role: GetTeachersForClassRoleEnum$outboundSchema,
    org: z.lazy(() => GetTeachersForClassOrg$outboundSchema),
    userProfile: z.string().optional(),
    beginDate: z.nullable(z.string()),
    endDate: z.nullable(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 GetTeachersForClassRole$;
(function (GetTeachersForClassRole$) {
    /** @deprecated use `GetTeachersForClassRole$inboundSchema` instead. */
    GetTeachersForClassRole$.inboundSchema = GetTeachersForClassRole$inboundSchema;
    /** @deprecated use `GetTeachersForClassRole$outboundSchema` instead. */
    GetTeachersForClassRole$.outboundSchema = GetTeachersForClassRole$outboundSchema;
})(GetTeachersForClassRole$ || (GetTeachersForClassRole$ = {}));
export function getTeachersForClassRoleToJSON(getTeachersForClassRole) {
    return JSON.stringify(GetTeachersForClassRole$outboundSchema.parse(getTeachersForClassRole));
}
export function getTeachersForClassRoleFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassRole$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassRole' from JSON`);
}
/** @internal */
export const GetTeachersForClassType$inboundSchema = z.nativeEnum(GetTeachersForClassType);
/** @internal */
export const GetTeachersForClassType$outboundSchema = GetTeachersForClassType$inboundSchema;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassType$;
(function (GetTeachersForClassType$) {
    /** @deprecated use `GetTeachersForClassType$inboundSchema` instead. */
    GetTeachersForClassType$.inboundSchema = GetTeachersForClassType$inboundSchema;
    /** @deprecated use `GetTeachersForClassType$outboundSchema` instead. */
    GetTeachersForClassType$.outboundSchema = GetTeachersForClassType$outboundSchema;
})(GetTeachersForClassType$ || (GetTeachersForClassType$ = {}));
/** @internal */
export const GetTeachersForClassAgent$inboundSchema = z.object({
    href: z.string(),
    sourcedId: z.string(),
    type: GetTeachersForClassType$inboundSchema,
});
/** @internal */
export const GetTeachersForClassAgent$outboundSchema = z.object({
    href: z.string(),
    sourcedId: z.string(),
    type: GetTeachersForClassType$outboundSchema,
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassAgent$;
(function (GetTeachersForClassAgent$) {
    /** @deprecated use `GetTeachersForClassAgent$inboundSchema` instead. */
    GetTeachersForClassAgent$.inboundSchema = GetTeachersForClassAgent$inboundSchema;
    /** @deprecated use `GetTeachersForClassAgent$outboundSchema` instead. */
    GetTeachersForClassAgent$.outboundSchema = GetTeachersForClassAgent$outboundSchema;
})(GetTeachersForClassAgent$ || (GetTeachersForClassAgent$ = {}));
export function getTeachersForClassAgentToJSON(getTeachersForClassAgent) {
    return JSON.stringify(GetTeachersForClassAgent$outboundSchema.parse(getTeachersForClassAgent));
}
export function getTeachersForClassAgentFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassAgent$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassAgent' from JSON`);
}
/** @internal */
export const GetTeachersForClassPrimaryOrg$inboundSchema = z.object({
    href: z.string(),
    sourcedId: z.string(),
    type: z.string(),
});
/** @internal */
export const GetTeachersForClassPrimaryOrg$outboundSchema = z.object({
    href: z.string(),
    sourcedId: z.string(),
    type: 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 GetTeachersForClassPrimaryOrg$;
(function (GetTeachersForClassPrimaryOrg$) {
    /** @deprecated use `GetTeachersForClassPrimaryOrg$inboundSchema` instead. */
    GetTeachersForClassPrimaryOrg$.inboundSchema = GetTeachersForClassPrimaryOrg$inboundSchema;
    /** @deprecated use `GetTeachersForClassPrimaryOrg$outboundSchema` instead. */
    GetTeachersForClassPrimaryOrg$.outboundSchema = GetTeachersForClassPrimaryOrg$outboundSchema;
})(GetTeachersForClassPrimaryOrg$ || (GetTeachersForClassPrimaryOrg$ = {}));
export function getTeachersForClassPrimaryOrgToJSON(getTeachersForClassPrimaryOrg) {
    return JSON.stringify(GetTeachersForClassPrimaryOrg$outboundSchema.parse(getTeachersForClassPrimaryOrg));
}
export function getTeachersForClassPrimaryOrgFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassPrimaryOrg$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassPrimaryOrg' from JSON`);
}
/** @internal */
export const Teacher$inboundSchema = z.object({
    sourcedId: z.string(),
    status: GetTeachersForClassStatus$inboundSchema,
    dateLastModified: z.string().datetime({ offset: true }).transform(v => new Date(v)).optional(),
    metadata: z.nullable(z.record(z.any())).optional(),
    userMasterIdentifier: z.nullable(z.string()).optional(),
    username: z.nullable(z.string()).optional(),
    userIds: z.array(z.lazy(() => GetTeachersForClassUserId$inboundSchema))
        .optional(),
    enabledUser: z.boolean(),
    givenName: z.string(),
    familyName: z.string(),
    middleName: z.nullable(z.string()).optional(),
    roles: z.array(z.lazy(() => GetTeachersForClassRole$inboundSchema)),
    agents: z.array(z.lazy(() => GetTeachersForClassAgent$inboundSchema)),
    primaryOrg: z.lazy(() => GetTeachersForClassPrimaryOrg$inboundSchema)
        .optional(),
    email: z.nullable(z.string()).optional(),
    preferredFirstName: z.nullable(z.string()).optional(),
    preferredMiddleName: z.nullable(z.string()).optional(),
    preferredLastName: z.nullable(z.string()).optional(),
    pronouns: z.nullable(z.string()).optional(),
    grades: z.array(z.string()).optional(),
    password: z.nullable(z.string()).optional(),
    sms: z.nullable(z.string()).optional(),
    phone: z.nullable(z.string()).optional(),
});
/** @internal */
export const Teacher$outboundSchema = z.object({
    sourcedId: z.string(),
    status: GetTeachersForClassStatus$outboundSchema,
    dateLastModified: z.date().transform(v => v.toISOString()).optional(),
    metadata: z.nullable(z.record(z.any())).optional(),
    userMasterIdentifier: z.nullable(z.string()).optional(),
    username: z.nullable(z.string()).optional(),
    userIds: z.array(z.lazy(() => GetTeachersForClassUserId$outboundSchema))
        .optional(),
    enabledUser: z.boolean(),
    givenName: z.string(),
    familyName: z.string(),
    middleName: z.nullable(z.string()).optional(),
    roles: z.array(z.lazy(() => GetTeachersForClassRole$outboundSchema)),
    agents: z.array(z.lazy(() => GetTeachersForClassAgent$outboundSchema)),
    primaryOrg: z.lazy(() => GetTeachersForClassPrimaryOrg$outboundSchema)
        .optional(),
    email: z.nullable(z.string()).optional(),
    preferredFirstName: z.nullable(z.string()).optional(),
    preferredMiddleName: z.nullable(z.string()).optional(),
    preferredLastName: z.nullable(z.string()).optional(),
    pronouns: z.nullable(z.string()).optional(),
    grades: z.array(z.string()).optional(),
    password: z.nullable(z.string()).optional(),
    sms: z.nullable(z.string()).optional(),
    phone: z.nullable(z.string()).optional(),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var Teacher$;
(function (Teacher$) {
    /** @deprecated use `Teacher$inboundSchema` instead. */
    Teacher$.inboundSchema = Teacher$inboundSchema;
    /** @deprecated use `Teacher$outboundSchema` instead. */
    Teacher$.outboundSchema = Teacher$outboundSchema;
})(Teacher$ || (Teacher$ = {}));
export function teacherToJSON(teacher) {
    return JSON.stringify(Teacher$outboundSchema.parse(teacher));
}
export function teacherFromJSON(jsonString) {
    return safeParse(jsonString, (x) => Teacher$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'Teacher' from JSON`);
}
/** @internal */
export const GetTeachersForClassResponseBody$inboundSchema = z.object({
    teachers: z.array(z.lazy(() => Teacher$inboundSchema)),
    totalCount: z.number(),
    pageCount: z.number(),
    pageNumber: z.number(),
    offset: z.number(),
    limit: z.number(),
});
/** @internal */
export const GetTeachersForClassResponseBody$outboundSchema = z.object({
    teachers: z.array(z.lazy(() => Teacher$outboundSchema)),
    totalCount: z.number(),
    pageCount: z.number(),
    pageNumber: z.number(),
    offset: z.number(),
    limit: z.number(),
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassResponseBody$;
(function (GetTeachersForClassResponseBody$) {
    /** @deprecated use `GetTeachersForClassResponseBody$inboundSchema` instead. */
    GetTeachersForClassResponseBody$.inboundSchema = GetTeachersForClassResponseBody$inboundSchema;
    /** @deprecated use `GetTeachersForClassResponseBody$outboundSchema` instead. */
    GetTeachersForClassResponseBody$.outboundSchema = GetTeachersForClassResponseBody$outboundSchema;
})(GetTeachersForClassResponseBody$ || (GetTeachersForClassResponseBody$ = {}));
export function getTeachersForClassResponseBodyToJSON(getTeachersForClassResponseBody) {
    return JSON.stringify(GetTeachersForClassResponseBody$outboundSchema.parse(getTeachersForClassResponseBody));
}
export function getTeachersForClassResponseBodyFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassResponseBody$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassResponseBody' from JSON`);
}
/** @internal */
export const GetTeachersForClassResponse$inboundSchema = z.object({
    Result: z.lazy(() => GetTeachersForClassResponseBody$inboundSchema),
}).transform((v) => {
    return remap$(v, {
        "Result": "result",
    });
});
/** @internal */
export const GetTeachersForClassResponse$outboundSchema = z.object({
    result: z.lazy(() => GetTeachersForClassResponseBody$outboundSchema),
}).transform((v) => {
    return remap$(v, {
        result: "Result",
    });
});
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export var GetTeachersForClassResponse$;
(function (GetTeachersForClassResponse$) {
    /** @deprecated use `GetTeachersForClassResponse$inboundSchema` instead. */
    GetTeachersForClassResponse$.inboundSchema = GetTeachersForClassResponse$inboundSchema;
    /** @deprecated use `GetTeachersForClassResponse$outboundSchema` instead. */
    GetTeachersForClassResponse$.outboundSchema = GetTeachersForClassResponse$outboundSchema;
})(GetTeachersForClassResponse$ || (GetTeachersForClassResponse$ = {}));
export function getTeachersForClassResponseToJSON(getTeachersForClassResponse) {
    return JSON.stringify(GetTeachersForClassResponse$outboundSchema.parse(getTeachersForClassResponse));
}
export function getTeachersForClassResponseFromJSON(jsonString) {
    return safeParse(jsonString, (x) => GetTeachersForClassResponse$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'GetTeachersForClassResponse' from JSON`);
}
//# sourceMappingURL=getteachersforclass.js.map