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 type GetCourseRequest = {
    /**
     * The sourcedId of the course
     */
    sourcedId: string;
};
export declare const GetCourseStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type GetCourseStatus = ClosedEnum<typeof GetCourseStatus>;
export type GetCourseAcademicSession = {
    sourcedId: string;
};
export type GetCourseOrg = {
    sourcedId: string;
};
/**
 * Represents a course.
 */
export type GetCourseCourse = {
    sourcedId?: string | undefined;
    status: GetCourseStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    academicSession?: GetCourseAcademicSession | null | undefined;
    courseCode?: string | null | undefined;
    grades?: Array<string> | null | undefined;
    subjects?: Array<string> | null | undefined;
    subjectCodes?: Array<string> | null | undefined;
    org: GetCourseOrg;
    level?: string | null | undefined;
    gradingScheme?: string | null | undefined;
};
/**
 * Single Course
 */
export type GetCourseResponse = {
    /**
     * Represents a course.
     */
    course: GetCourseCourse;
};
/** @internal */
export declare const GetCourseRequest$inboundSchema: z.ZodType<GetCourseRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type GetCourseRequest$Outbound = {
    sourcedId: string;
};
/** @internal */
export declare const GetCourseRequest$outboundSchema: z.ZodType<GetCourseRequest$Outbound, z.ZodTypeDef, GetCourseRequest>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetCourseRequest$ {
    /** @deprecated use `GetCourseRequest$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetCourseRequest, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetCourseRequest$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetCourseRequest$Outbound, z.ZodTypeDef, GetCourseRequest>;
    /** @deprecated use `GetCourseRequest$Outbound` instead. */
    type Outbound = GetCourseRequest$Outbound;
}
export declare function getCourseRequestToJSON(getCourseRequest: GetCourseRequest): string;
export declare function getCourseRequestFromJSON(jsonString: string): SafeParseResult<GetCourseRequest, SDKValidationError>;
/** @internal */
export declare const GetCourseStatus$inboundSchema: z.ZodNativeEnum<typeof GetCourseStatus>;
/** @internal */
export declare const GetCourseStatus$outboundSchema: z.ZodNativeEnum<typeof GetCourseStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetCourseStatus$ {
    /** @deprecated use `GetCourseStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `GetCourseStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const GetCourseAcademicSession$inboundSchema: z.ZodType<GetCourseAcademicSession, z.ZodTypeDef, unknown>;
/** @internal */
export type GetCourseAcademicSession$Outbound = {
    sourcedId: string;
};
/** @internal */
export declare const GetCourseAcademicSession$outboundSchema: z.ZodType<GetCourseAcademicSession$Outbound, z.ZodTypeDef, GetCourseAcademicSession>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetCourseAcademicSession$ {
    /** @deprecated use `GetCourseAcademicSession$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetCourseAcademicSession, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetCourseAcademicSession$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetCourseAcademicSession$Outbound, z.ZodTypeDef, GetCourseAcademicSession>;
    /** @deprecated use `GetCourseAcademicSession$Outbound` instead. */
    type Outbound = GetCourseAcademicSession$Outbound;
}
export declare function getCourseAcademicSessionToJSON(getCourseAcademicSession: GetCourseAcademicSession): string;
export declare function getCourseAcademicSessionFromJSON(jsonString: string): SafeParseResult<GetCourseAcademicSession, SDKValidationError>;
/** @internal */
export declare const GetCourseOrg$inboundSchema: z.ZodType<GetCourseOrg, z.ZodTypeDef, unknown>;
/** @internal */
export type GetCourseOrg$Outbound = {
    sourcedId: string;
};
/** @internal */
export declare const GetCourseOrg$outboundSchema: z.ZodType<GetCourseOrg$Outbound, z.ZodTypeDef, GetCourseOrg>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetCourseOrg$ {
    /** @deprecated use `GetCourseOrg$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetCourseOrg, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetCourseOrg$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetCourseOrg$Outbound, z.ZodTypeDef, GetCourseOrg>;
    /** @deprecated use `GetCourseOrg$Outbound` instead. */
    type Outbound = GetCourseOrg$Outbound;
}
export declare function getCourseOrgToJSON(getCourseOrg: GetCourseOrg): string;
export declare function getCourseOrgFromJSON(jsonString: string): SafeParseResult<GetCourseOrg, SDKValidationError>;
/** @internal */
export declare const GetCourseCourse$inboundSchema: z.ZodType<GetCourseCourse, z.ZodTypeDef, unknown>;
/** @internal */
export type GetCourseCourse$Outbound = {
    sourcedId?: string | undefined;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    academicSession?: GetCourseAcademicSession$Outbound | null | undefined;
    courseCode?: string | null | undefined;
    grades?: Array<string> | null | undefined;
    subjects?: Array<string> | null | undefined;
    subjectCodes?: Array<string> | null | undefined;
    org: GetCourseOrg$Outbound;
    level?: string | null | undefined;
    gradingScheme?: string | null | undefined;
};
/** @internal */
export declare const GetCourseCourse$outboundSchema: z.ZodType<GetCourseCourse$Outbound, z.ZodTypeDef, GetCourseCourse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetCourseCourse$ {
    /** @deprecated use `GetCourseCourse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetCourseCourse, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetCourseCourse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetCourseCourse$Outbound, z.ZodTypeDef, GetCourseCourse>;
    /** @deprecated use `GetCourseCourse$Outbound` instead. */
    type Outbound = GetCourseCourse$Outbound;
}
export declare function getCourseCourseToJSON(getCourseCourse: GetCourseCourse): string;
export declare function getCourseCourseFromJSON(jsonString: string): SafeParseResult<GetCourseCourse, SDKValidationError>;
/** @internal */
export declare const GetCourseResponse$inboundSchema: z.ZodType<GetCourseResponse, z.ZodTypeDef, unknown>;
/** @internal */
export type GetCourseResponse$Outbound = {
    course: GetCourseCourse$Outbound;
};
/** @internal */
export declare const GetCourseResponse$outboundSchema: z.ZodType<GetCourseResponse$Outbound, z.ZodTypeDef, GetCourseResponse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetCourseResponse$ {
    /** @deprecated use `GetCourseResponse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetCourseResponse, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetCourseResponse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetCourseResponse$Outbound, z.ZodTypeDef, GetCourseResponse>;
    /** @deprecated use `GetCourseResponse$Outbound` instead. */
    type Outbound = GetCourseResponse$Outbound;
}
export declare function getCourseResponseToJSON(getCourseResponse: GetCourseResponse): string;
export declare function getCourseResponseFromJSON(jsonString: string): SafeParseResult<GetCourseResponse, SDKValidationError>;
//# sourceMappingURL=getcourse.d.ts.map