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 AcademicSessionStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type AcademicSessionStatus = ClosedEnum<typeof AcademicSessionStatus>;
export declare const AcademicSessionType: {
    readonly GradingPeriod: "gradingPeriod";
    readonly Semester: "semester";
    readonly SchoolYear: "schoolYear";
    readonly Term: "term";
};
export type AcademicSessionType = ClosedEnum<typeof AcademicSessionType>;
export declare const ParentType: {
    readonly AcademicSession: "academicSession";
    readonly AssessmentLineItem: "assessmentLineItem";
    readonly Category: "category";
    readonly Class: "class";
    readonly Course: "course";
    readonly Demographics: "demographics";
    readonly Enrollment: "enrollment";
    readonly GradingPeriod: "gradingPeriod";
    readonly LineItem: "lineItem";
    readonly Org: "org";
    readonly Resource: "resource";
    readonly Result: "result";
    readonly ScoreScale: "scoreScale";
    readonly Student: "student";
    readonly Teacher: "teacher";
    readonly Term: "term";
    readonly User: "user";
    readonly ComponentResource: "componentResource";
    readonly CourseComponent: "courseComponent";
};
export type ParentType = ClosedEnum<typeof ParentType>;
export type AcademicSessionParent = {
    href: string;
    sourcedId: string;
    type: ParentType;
};
export declare const OrgType2: {
    readonly AcademicSession: "academicSession";
    readonly AssessmentLineItem: "assessmentLineItem";
    readonly Category: "category";
    readonly Class: "class";
    readonly Course: "course";
    readonly Demographics: "demographics";
    readonly Enrollment: "enrollment";
    readonly GradingPeriod: "gradingPeriod";
    readonly LineItem: "lineItem";
    readonly Org: "org";
    readonly Resource: "resource";
    readonly Result: "result";
    readonly ScoreScale: "scoreScale";
    readonly Student: "student";
    readonly Teacher: "teacher";
    readonly Term: "term";
    readonly User: "user";
    readonly ComponentResource: "componentResource";
    readonly CourseComponent: "courseComponent";
};
export type OrgType2 = ClosedEnum<typeof OrgType2>;
export type AcademicSessionOrg = {
    href: string;
    sourcedId: string;
    type: OrgType2;
};
/**
 * Represents an academic session.
 */
export type AcademicSession = {
    sourcedId: string;
    status: AcademicSessionStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    startDate: string;
    endDate: string;
    type: AcademicSessionType;
    parent?: AcademicSessionParent | null | undefined;
    schoolYear: number;
    org: AcademicSessionOrg;
};
/** @internal */
export declare const AcademicSessionStatus$inboundSchema: z.ZodNativeEnum<typeof AcademicSessionStatus>;
/** @internal */
export declare const AcademicSessionStatus$outboundSchema: z.ZodNativeEnum<typeof AcademicSessionStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace AcademicSessionStatus$ {
    /** @deprecated use `AcademicSessionStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `AcademicSessionStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const AcademicSessionType$inboundSchema: z.ZodNativeEnum<typeof AcademicSessionType>;
/** @internal */
export declare const AcademicSessionType$outboundSchema: z.ZodNativeEnum<typeof AcademicSessionType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace AcademicSessionType$ {
    /** @deprecated use `AcademicSessionType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly GradingPeriod: "gradingPeriod";
        readonly Semester: "semester";
        readonly SchoolYear: "schoolYear";
        readonly Term: "term";
    }>;
    /** @deprecated use `AcademicSessionType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly GradingPeriod: "gradingPeriod";
        readonly Semester: "semester";
        readonly SchoolYear: "schoolYear";
        readonly Term: "term";
    }>;
}
/** @internal */
export declare const ParentType$inboundSchema: z.ZodNativeEnum<typeof ParentType>;
/** @internal */
export declare const ParentType$outboundSchema: z.ZodNativeEnum<typeof ParentType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ParentType$ {
    /** @deprecated use `ParentType$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly AcademicSession: "academicSession";
        readonly AssessmentLineItem: "assessmentLineItem";
        readonly Category: "category";
        readonly Class: "class";
        readonly Course: "course";
        readonly Demographics: "demographics";
        readonly Enrollment: "enrollment";
        readonly GradingPeriod: "gradingPeriod";
        readonly LineItem: "lineItem";
        readonly Org: "org";
        readonly Resource: "resource";
        readonly Result: "result";
        readonly ScoreScale: "scoreScale";
        readonly Student: "student";
        readonly Teacher: "teacher";
        readonly Term: "term";
        readonly User: "user";
        readonly ComponentResource: "componentResource";
        readonly CourseComponent: "courseComponent";
    }>;
    /** @deprecated use `ParentType$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly AcademicSession: "academicSession";
        readonly AssessmentLineItem: "assessmentLineItem";
        readonly Category: "category";
        readonly Class: "class";
        readonly Course: "course";
        readonly Demographics: "demographics";
        readonly Enrollment: "enrollment";
        readonly GradingPeriod: "gradingPeriod";
        readonly LineItem: "lineItem";
        readonly Org: "org";
        readonly Resource: "resource";
        readonly Result: "result";
        readonly ScoreScale: "scoreScale";
        readonly Student: "student";
        readonly Teacher: "teacher";
        readonly Term: "term";
        readonly User: "user";
        readonly ComponentResource: "componentResource";
        readonly CourseComponent: "courseComponent";
    }>;
}
/** @internal */
export declare const AcademicSessionParent$inboundSchema: z.ZodType<AcademicSessionParent, z.ZodTypeDef, unknown>;
/** @internal */
export type AcademicSessionParent$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const AcademicSessionParent$outboundSchema: z.ZodType<AcademicSessionParent$Outbound, z.ZodTypeDef, AcademicSessionParent>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace AcademicSessionParent$ {
    /** @deprecated use `AcademicSessionParent$inboundSchema` instead. */
    const inboundSchema: z.ZodType<AcademicSessionParent, z.ZodTypeDef, unknown>;
    /** @deprecated use `AcademicSessionParent$outboundSchema` instead. */
    const outboundSchema: z.ZodType<AcademicSessionParent$Outbound, z.ZodTypeDef, AcademicSessionParent>;
    /** @deprecated use `AcademicSessionParent$Outbound` instead. */
    type Outbound = AcademicSessionParent$Outbound;
}
export declare function academicSessionParentToJSON(academicSessionParent: AcademicSessionParent): string;
export declare function academicSessionParentFromJSON(jsonString: string): SafeParseResult<AcademicSessionParent, SDKValidationError>;
/** @internal */
export declare const OrgType2$inboundSchema: z.ZodNativeEnum<typeof OrgType2>;
/** @internal */
export declare const OrgType2$outboundSchema: z.ZodNativeEnum<typeof OrgType2>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace OrgType2$ {
    /** @deprecated use `OrgType2$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly AcademicSession: "academicSession";
        readonly AssessmentLineItem: "assessmentLineItem";
        readonly Category: "category";
        readonly Class: "class";
        readonly Course: "course";
        readonly Demographics: "demographics";
        readonly Enrollment: "enrollment";
        readonly GradingPeriod: "gradingPeriod";
        readonly LineItem: "lineItem";
        readonly Org: "org";
        readonly Resource: "resource";
        readonly Result: "result";
        readonly ScoreScale: "scoreScale";
        readonly Student: "student";
        readonly Teacher: "teacher";
        readonly Term: "term";
        readonly User: "user";
        readonly ComponentResource: "componentResource";
        readonly CourseComponent: "courseComponent";
    }>;
    /** @deprecated use `OrgType2$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly AcademicSession: "academicSession";
        readonly AssessmentLineItem: "assessmentLineItem";
        readonly Category: "category";
        readonly Class: "class";
        readonly Course: "course";
        readonly Demographics: "demographics";
        readonly Enrollment: "enrollment";
        readonly GradingPeriod: "gradingPeriod";
        readonly LineItem: "lineItem";
        readonly Org: "org";
        readonly Resource: "resource";
        readonly Result: "result";
        readonly ScoreScale: "scoreScale";
        readonly Student: "student";
        readonly Teacher: "teacher";
        readonly Term: "term";
        readonly User: "user";
        readonly ComponentResource: "componentResource";
        readonly CourseComponent: "courseComponent";
    }>;
}
/** @internal */
export declare const AcademicSessionOrg$inboundSchema: z.ZodType<AcademicSessionOrg, z.ZodTypeDef, unknown>;
/** @internal */
export type AcademicSessionOrg$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const AcademicSessionOrg$outboundSchema: z.ZodType<AcademicSessionOrg$Outbound, z.ZodTypeDef, AcademicSessionOrg>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace AcademicSessionOrg$ {
    /** @deprecated use `AcademicSessionOrg$inboundSchema` instead. */
    const inboundSchema: z.ZodType<AcademicSessionOrg, z.ZodTypeDef, unknown>;
    /** @deprecated use `AcademicSessionOrg$outboundSchema` instead. */
    const outboundSchema: z.ZodType<AcademicSessionOrg$Outbound, z.ZodTypeDef, AcademicSessionOrg>;
    /** @deprecated use `AcademicSessionOrg$Outbound` instead. */
    type Outbound = AcademicSessionOrg$Outbound;
}
export declare function academicSessionOrgToJSON(academicSessionOrg: AcademicSessionOrg): string;
export declare function academicSessionOrgFromJSON(jsonString: string): SafeParseResult<AcademicSessionOrg, SDKValidationError>;
/** @internal */
export declare const AcademicSession$inboundSchema: z.ZodType<AcademicSession, z.ZodTypeDef, unknown>;
/** @internal */
export type AcademicSession$Outbound = {
    sourcedId: string;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    title: string;
    startDate: string;
    endDate: string;
    type: string;
    parent?: AcademicSessionParent$Outbound | null | undefined;
    schoolYear: number;
    org: AcademicSessionOrg$Outbound;
};
/** @internal */
export declare const AcademicSession$outboundSchema: z.ZodType<AcademicSession$Outbound, z.ZodTypeDef, AcademicSession>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace AcademicSession$ {
    /** @deprecated use `AcademicSession$inboundSchema` instead. */
    const inboundSchema: z.ZodType<AcademicSession, z.ZodTypeDef, unknown>;
    /** @deprecated use `AcademicSession$outboundSchema` instead. */
    const outboundSchema: z.ZodType<AcademicSession$Outbound, z.ZodTypeDef, AcademicSession>;
    /** @deprecated use `AcademicSession$Outbound` instead. */
    type Outbound = AcademicSession$Outbound;
}
export declare function academicSessionToJSON(academicSession: AcademicSession): string;
export declare function academicSessionFromJSON(jsonString: string): SafeParseResult<AcademicSession, SDKValidationError>;
//# sourceMappingURL=academicsession.d.ts.map