import * as z from "zod";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export declare const ClassStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type ClassStatus = ClosedEnum<typeof ClassStatus>;
export declare const ClassType: {
    readonly Homeroom: "homeroom";
    readonly Scheduled: "scheduled";
};
export type ClassType = ClosedEnum<typeof ClassType>;
export type ClassCourse = {
    href: string;
    sourcedId: string;
    type: string;
};
export type ClassSchool = {
    href: string;
    sourcedId: string;
    type: string;
};
export type Term = {
    href: string;
    sourcedId: string;
    type: string;
};
export type ClassResource = {
    href: string;
    sourcedId: string;
    type: string;
};
/**
 * Represents a class.
 */
export type Class = {
    sourcedId: string;
    status: ClassStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    classCode: string | null;
    classType: ClassType;
    location: string | null;
    grades?: Array<string> | undefined;
    subjects?: Array<string> | undefined;
    course: ClassCourse | null;
    school: ClassSchool | null;
    terms: Array<Term>;
    subjectCodes?: Array<string> | undefined;
    periods?: Array<string> | undefined;
    resources?: Array<ClassResource> | undefined;
};
/** @internal */
export declare const ClassStatus$inboundSchema: z.ZodNativeEnum<typeof ClassStatus>;
/** @internal */
export declare const ClassStatus$outboundSchema: z.ZodNativeEnum<typeof ClassStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ClassStatus$ {
    /** @deprecated use `ClassStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `ClassStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const ClassType$inboundSchema: z.ZodNativeEnum<typeof ClassType>;
/** @internal */
export declare const ClassType$outboundSchema: z.ZodNativeEnum<typeof ClassType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ClassType$ {
    /** @deprecated use `ClassType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Homeroom: "homeroom";
        readonly Scheduled: "scheduled";
    }>;
    /** @deprecated use `ClassType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Homeroom: "homeroom";
        readonly Scheduled: "scheduled";
    }>;
}
/** @internal */
export declare const ClassCourse$inboundSchema: z.ZodType<ClassCourse, z.ZodTypeDef, unknown>;
/** @internal */
export type ClassCourse$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const ClassCourse$outboundSchema: z.ZodType<ClassCourse$Outbound, z.ZodTypeDef, ClassCourse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ClassCourse$ {
    /** @deprecated use `ClassCourse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ClassCourse, z.ZodTypeDef, unknown>;
    /** @deprecated use `ClassCourse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ClassCourse$Outbound, z.ZodTypeDef, ClassCourse>;
    /** @deprecated use `ClassCourse$Outbound` instead. */
    type Outbound = ClassCourse$Outbound;
}
export declare function classCourseToJSON(classCourse: ClassCourse): string;
export declare function classCourseFromJSON(jsonString: string): SafeParseResult<ClassCourse, SDKValidationError>;
/** @internal */
export declare const ClassSchool$inboundSchema: z.ZodType<ClassSchool, z.ZodTypeDef, unknown>;
/** @internal */
export type ClassSchool$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const ClassSchool$outboundSchema: z.ZodType<ClassSchool$Outbound, z.ZodTypeDef, ClassSchool>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ClassSchool$ {
    /** @deprecated use `ClassSchool$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ClassSchool, z.ZodTypeDef, unknown>;
    /** @deprecated use `ClassSchool$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ClassSchool$Outbound, z.ZodTypeDef, ClassSchool>;
    /** @deprecated use `ClassSchool$Outbound` instead. */
    type Outbound = ClassSchool$Outbound;
}
export declare function classSchoolToJSON(classSchool: ClassSchool): string;
export declare function classSchoolFromJSON(jsonString: string): SafeParseResult<ClassSchool, SDKValidationError>;
/** @internal */
export declare const Term$inboundSchema: z.ZodType<Term, z.ZodTypeDef, unknown>;
/** @internal */
export type Term$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const Term$outboundSchema: z.ZodType<Term$Outbound, z.ZodTypeDef, Term>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Term$ {
    /** @deprecated use `Term$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Term, z.ZodTypeDef, unknown>;
    /** @deprecated use `Term$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Term$Outbound, z.ZodTypeDef, Term>;
    /** @deprecated use `Term$Outbound` instead. */
    type Outbound = Term$Outbound;
}
export declare function termToJSON(term: Term): string;
export declare function termFromJSON(jsonString: string): SafeParseResult<Term, SDKValidationError>;
/** @internal */
export declare const ClassResource$inboundSchema: z.ZodType<ClassResource, z.ZodTypeDef, unknown>;
/** @internal */
export type ClassResource$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const ClassResource$outboundSchema: z.ZodType<ClassResource$Outbound, z.ZodTypeDef, ClassResource>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ClassResource$ {
    /** @deprecated use `ClassResource$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ClassResource, z.ZodTypeDef, unknown>;
    /** @deprecated use `ClassResource$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ClassResource$Outbound, z.ZodTypeDef, ClassResource>;
    /** @deprecated use `ClassResource$Outbound` instead. */
    type Outbound = ClassResource$Outbound;
}
export declare function classResourceToJSON(classResource: ClassResource): string;
export declare function classResourceFromJSON(jsonString: string): SafeParseResult<ClassResource, SDKValidationError>;
/** @internal */
export declare const Class$inboundSchema: z.ZodType<Class, z.ZodTypeDef, unknown>;
/** @internal */
export type Class$Outbound = {
    sourcedId: string;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    classCode: string | null;
    classType: string;
    location: string | null;
    grades?: Array<string> | undefined;
    subjects?: Array<string> | undefined;
    course: ClassCourse$Outbound | null;
    school: ClassSchool$Outbound | null;
    terms: Array<Term$Outbound>;
    subjectCodes?: Array<string> | undefined;
    periods?: Array<string> | undefined;
    resources?: Array<ClassResource$Outbound> | undefined;
};
/** @internal */
export declare const Class$outboundSchema: z.ZodType<Class$Outbound, z.ZodTypeDef, Class>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Class$ {
    /** @deprecated use `Class$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Class, z.ZodTypeDef, unknown>;
    /** @deprecated use `Class$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Class$Outbound, z.ZodTypeDef, Class>;
    /** @deprecated use `Class$Outbound` instead. */
    type Outbound = Class$Outbound;
}
export declare function classToJSON(value: Class): string;
export declare function classFromJSON(jsonString: string): SafeParseResult<Class, SDKValidationError>;
//# sourceMappingURL=class.d.ts.map