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 EnrollmentStatus: {
    readonly Active: "active";
    readonly Tobedeleted: "tobedeleted";
};
export type EnrollmentStatus = ClosedEnum<typeof EnrollmentStatus>;
export declare const EnrollmentRole: {
    readonly Administrator: "administrator";
    readonly Proctor: "proctor";
    readonly Student: "student";
    readonly Teacher: "teacher";
};
export type EnrollmentRole = ClosedEnum<typeof EnrollmentRole>;
export type User = {
    href: string;
    sourcedId: string;
    type: string;
};
export type EnrollmentClass = {
    href: string;
    sourcedId: string;
    type: string;
};
/**
 * Represents an enrollment.
 */
export type Enrollment = {
    sourcedId: string;
    status: EnrollmentStatus;
    dateLastModified?: Date | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    role: EnrollmentRole;
    primary: boolean;
    beginDate: string | null;
    endDate: string | null;
    user: User;
    class: EnrollmentClass;
};
/** @internal */
export declare const EnrollmentStatus$inboundSchema: z.ZodNativeEnum<typeof EnrollmentStatus>;
/** @internal */
export declare const EnrollmentStatus$outboundSchema: z.ZodNativeEnum<typeof EnrollmentStatus>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace EnrollmentStatus$ {
    /** @deprecated use `EnrollmentStatus$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
    /** @deprecated use `EnrollmentStatus$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Active: "active";
        readonly Tobedeleted: "tobedeleted";
    }>;
}
/** @internal */
export declare const EnrollmentRole$inboundSchema: z.ZodNativeEnum<typeof EnrollmentRole>;
/** @internal */
export declare const EnrollmentRole$outboundSchema: z.ZodNativeEnum<typeof EnrollmentRole>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace EnrollmentRole$ {
    /** @deprecated use `EnrollmentRole$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<{
        readonly Administrator: "administrator";
        readonly Proctor: "proctor";
        readonly Student: "student";
        readonly Teacher: "teacher";
    }>;
    /** @deprecated use `EnrollmentRole$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<{
        readonly Administrator: "administrator";
        readonly Proctor: "proctor";
        readonly Student: "student";
        readonly Teacher: "teacher";
    }>;
}
/** @internal */
export declare const User$inboundSchema: z.ZodType<User, z.ZodTypeDef, unknown>;
/** @internal */
export type User$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const User$outboundSchema: z.ZodType<User$Outbound, z.ZodTypeDef, User>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace User$ {
    /** @deprecated use `User$inboundSchema` instead. */
    const inboundSchema: z.ZodType<User, z.ZodTypeDef, unknown>;
    /** @deprecated use `User$outboundSchema` instead. */
    const outboundSchema: z.ZodType<User$Outbound, z.ZodTypeDef, User>;
    /** @deprecated use `User$Outbound` instead. */
    type Outbound = User$Outbound;
}
export declare function userToJSON(user: User): string;
export declare function userFromJSON(jsonString: string): SafeParseResult<User, SDKValidationError>;
/** @internal */
export declare const EnrollmentClass$inboundSchema: z.ZodType<EnrollmentClass, z.ZodTypeDef, unknown>;
/** @internal */
export type EnrollmentClass$Outbound = {
    href: string;
    sourcedId: string;
    type: string;
};
/** @internal */
export declare const EnrollmentClass$outboundSchema: z.ZodType<EnrollmentClass$Outbound, z.ZodTypeDef, EnrollmentClass>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace EnrollmentClass$ {
    /** @deprecated use `EnrollmentClass$inboundSchema` instead. */
    const inboundSchema: z.ZodType<EnrollmentClass, z.ZodTypeDef, unknown>;
    /** @deprecated use `EnrollmentClass$outboundSchema` instead. */
    const outboundSchema: z.ZodType<EnrollmentClass$Outbound, z.ZodTypeDef, EnrollmentClass>;
    /** @deprecated use `EnrollmentClass$Outbound` instead. */
    type Outbound = EnrollmentClass$Outbound;
}
export declare function enrollmentClassToJSON(enrollmentClass: EnrollmentClass): string;
export declare function enrollmentClassFromJSON(jsonString: string): SafeParseResult<EnrollmentClass, SDKValidationError>;
/** @internal */
export declare const Enrollment$inboundSchema: z.ZodType<Enrollment, z.ZodTypeDef, unknown>;
/** @internal */
export type Enrollment$Outbound = {
    sourcedId: string;
    status: string;
    dateLastModified?: string | undefined;
    metadata?: {
        [k: string]: any;
    } | null | undefined;
    role: string;
    primary: boolean;
    beginDate: string | null;
    endDate: string | null;
    user: User$Outbound;
    class: EnrollmentClass$Outbound;
};
/** @internal */
export declare const Enrollment$outboundSchema: z.ZodType<Enrollment$Outbound, z.ZodTypeDef, Enrollment>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Enrollment$ {
    /** @deprecated use `Enrollment$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Enrollment, z.ZodTypeDef, unknown>;
    /** @deprecated use `Enrollment$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Enrollment$Outbound, z.ZodTypeDef, Enrollment>;
    /** @deprecated use `Enrollment$Outbound` instead. */
    type Outbound = Enrollment$Outbound;
}
export declare function enrollmentToJSON(enrollment: Enrollment): string;
export declare function enrollmentFromJSON(jsonString: string): SafeParseResult<Enrollment, SDKValidationError>;
//# sourceMappingURL=enrollment.d.ts.map