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 PutCourseStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type PutCourseStatus = ClosedEnum<typeof PutCourseStatus>;
export type PutCourseAcademicSession = {
    sourcedId: string;
};
export type PutCourseOrg = {
    sourcedId: string;
};
/**
 * Represents a course.
 */
export type PutCourseCourse = {
    sourcedId?: string | undefined;
    status: PutCourseStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    academicSession?: PutCourseAcademicSession | null | undefined;
    courseCode?: string | null | undefined;
    grades?: Array<string> | null | undefined;
    subjects?: Array<string> | null | undefined;
    subjectCodes?: Array<string> | null | undefined;
    org: PutCourseOrg;
    level?: string | null | undefined;
    gradingScheme?: string | null | undefined;
};
export type PutCourseRequestBody = {
    /**
     * Represents a course.
     */
    course: PutCourseCourse;
};
export type PutCourseRequest = {
    /**
     * The sourcedId of the course to update
     */
    sourcedId: string;
    requestBody?: PutCourseRequestBody | undefined;
};
/** @internal */
export declare const PutCourseStatus$inboundSchema: z.ZodNativeEnum<typeof PutCourseStatus>;
/** @internal */
export declare const PutCourseStatus$outboundSchema: z.ZodNativeEnum<typeof PutCourseStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PutCourseStatus$ {
    /** @deprecated use `PutCourseStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `PutCourseStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const PutCourseAcademicSession$inboundSchema: z.ZodType<PutCourseAcademicSession, z.ZodTypeDef, unknown>;
/** @internal */
export type PutCourseAcademicSession$Outbound = {
    sourcedId: string;
};
/** @internal */
export declare const PutCourseAcademicSession$outboundSchema: z.ZodType<PutCourseAcademicSession$Outbound, z.ZodTypeDef, PutCourseAcademicSession>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PutCourseAcademicSession$ {
    /** @deprecated use `PutCourseAcademicSession$inboundSchema` instead. */
    const inboundSchema: z.ZodType<PutCourseAcademicSession, z.ZodTypeDef, unknown>;
    /** @deprecated use `PutCourseAcademicSession$outboundSchema` instead. */
    const outboundSchema: z.ZodType<PutCourseAcademicSession$Outbound, z.ZodTypeDef, PutCourseAcademicSession>;
    /** @deprecated use `PutCourseAcademicSession$Outbound` instead. */
    type Outbound = PutCourseAcademicSession$Outbound;
}
export declare function putCourseAcademicSessionToJSON(putCourseAcademicSession: PutCourseAcademicSession): string;
export declare function putCourseAcademicSessionFromJSON(jsonString: string): SafeParseResult<PutCourseAcademicSession, SDKValidationError>;
/** @internal */
export declare const PutCourseOrg$inboundSchema: z.ZodType<PutCourseOrg, z.ZodTypeDef, unknown>;
/** @internal */
export type PutCourseOrg$Outbound = {
    sourcedId: string;
};
/** @internal */
export declare const PutCourseOrg$outboundSchema: z.ZodType<PutCourseOrg$Outbound, z.ZodTypeDef, PutCourseOrg>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PutCourseOrg$ {
    /** @deprecated use `PutCourseOrg$inboundSchema` instead. */
    const inboundSchema: z.ZodType<PutCourseOrg, z.ZodTypeDef, unknown>;
    /** @deprecated use `PutCourseOrg$outboundSchema` instead. */
    const outboundSchema: z.ZodType<PutCourseOrg$Outbound, z.ZodTypeDef, PutCourseOrg>;
    /** @deprecated use `PutCourseOrg$Outbound` instead. */
    type Outbound = PutCourseOrg$Outbound;
}
export declare function putCourseOrgToJSON(putCourseOrg: PutCourseOrg): string;
export declare function putCourseOrgFromJSON(jsonString: string): SafeParseResult<PutCourseOrg, SDKValidationError>;
/** @internal */
export declare const PutCourseCourse$inboundSchema: z.ZodType<PutCourseCourse, z.ZodTypeDef, unknown>;
/** @internal */
export type PutCourseCourse$Outbound = {
    sourcedId?: string | undefined;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    academicSession?: PutCourseAcademicSession$Outbound | null | undefined;
    courseCode?: string | null | undefined;
    grades?: Array<string> | null | undefined;
    subjects?: Array<string> | null | undefined;
    subjectCodes?: Array<string> | null | undefined;
    org: PutCourseOrg$Outbound;
    level?: string | null | undefined;
    gradingScheme?: string | null | undefined;
};
/** @internal */
export declare const PutCourseCourse$outboundSchema: z.ZodType<PutCourseCourse$Outbound, z.ZodTypeDef, PutCourseCourse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PutCourseCourse$ {
    /** @deprecated use `PutCourseCourse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<PutCourseCourse, z.ZodTypeDef, unknown>;
    /** @deprecated use `PutCourseCourse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<PutCourseCourse$Outbound, z.ZodTypeDef, PutCourseCourse>;
    /** @deprecated use `PutCourseCourse$Outbound` instead. */
    type Outbound = PutCourseCourse$Outbound;
}
export declare function putCourseCourseToJSON(putCourseCourse: PutCourseCourse): string;
export declare function putCourseCourseFromJSON(jsonString: string): SafeParseResult<PutCourseCourse, SDKValidationError>;
/** @internal */
export declare const PutCourseRequestBody$inboundSchema: z.ZodType<PutCourseRequestBody, z.ZodTypeDef, unknown>;
/** @internal */
export type PutCourseRequestBody$Outbound = {
    course: PutCourseCourse$Outbound;
};
/** @internal */
export declare const PutCourseRequestBody$outboundSchema: z.ZodType<PutCourseRequestBody$Outbound, z.ZodTypeDef, PutCourseRequestBody>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PutCourseRequestBody$ {
    /** @deprecated use `PutCourseRequestBody$inboundSchema` instead. */
    const inboundSchema: z.ZodType<PutCourseRequestBody, z.ZodTypeDef, unknown>;
    /** @deprecated use `PutCourseRequestBody$outboundSchema` instead. */
    const outboundSchema: z.ZodType<PutCourseRequestBody$Outbound, z.ZodTypeDef, PutCourseRequestBody>;
    /** @deprecated use `PutCourseRequestBody$Outbound` instead. */
    type Outbound = PutCourseRequestBody$Outbound;
}
export declare function putCourseRequestBodyToJSON(putCourseRequestBody: PutCourseRequestBody): string;
export declare function putCourseRequestBodyFromJSON(jsonString: string): SafeParseResult<PutCourseRequestBody, SDKValidationError>;
/** @internal */
export declare const PutCourseRequest$inboundSchema: z.ZodType<PutCourseRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type PutCourseRequest$Outbound = {
    sourcedId: string;
    RequestBody?: PutCourseRequestBody$Outbound | undefined;
};
/** @internal */
export declare const PutCourseRequest$outboundSchema: z.ZodType<PutCourseRequest$Outbound, z.ZodTypeDef, PutCourseRequest>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace PutCourseRequest$ {
    /** @deprecated use `PutCourseRequest$inboundSchema` instead. */
    const inboundSchema: z.ZodType<PutCourseRequest, z.ZodTypeDef, unknown>;
    /** @deprecated use `PutCourseRequest$outboundSchema` instead. */
    const outboundSchema: z.ZodType<PutCourseRequest$Outbound, z.ZodTypeDef, PutCourseRequest>;
    /** @deprecated use `PutCourseRequest$Outbound` instead. */
    type Outbound = PutCourseRequest$Outbound;
}
export declare function putCourseRequestToJSON(putCourseRequest: PutCourseRequest): string;
export declare function putCourseRequestFromJSON(jsonString: string): SafeParseResult<PutCourseRequest, SDKValidationError>;
//# sourceMappingURL=putcourse.d.ts.map