import * as z from "zod";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
export type GetSubjectProgressRequest = {
    /**
     * The sourcedId of the student
     */
    student: string;
    /**
     * The subject name
     */
    subject: string;
};
export type GetSubjectProgressCourse = {
    courseCode: string | null;
    dateLastModified: string;
    grades: Array<string> | null;
    level: string | null;
    orgSourcedId: string;
    sourcedId: string;
    status: string;
    subjects: Array<string> | null;
    title: string;
};
/**
 * The overview of the course's progress
 */
export type Progress = {
    course: GetSubjectProgressCourse;
    inEnrolled: boolean;
    /**
     * Whether the student has a fully graded assessment result for a test-out lesson in the course
     */
    hasUsedTestOut: boolean;
    /**
     * The sourcedId of the test-out lesson (ComponentResource) in the course
     */
    testOutLessonId: string | null;
    /**
     * The number of lessons that contain an assessment result with a score status of 'fully graded'
     */
    completedLessons: number;
    /**
     * The total number of lessons in the course
     */
    totalLessons: number;
    /**
     * The total XP that can be earned by the student in the course, not considering potential multipliers
     */
    totalAttainableXp: number;
    /**
     * The total XP earned by the student considering calculated multipliers
     */
    totalXpEarned: number;
};
/**
 * Success
 */
export type GetSubjectProgressResponse = {
    /**
     * The progress of the student in each of the subject's courses
     */
    progress: Array<Progress>;
};
/** @internal */
export declare const GetSubjectProgressRequest$inboundSchema: z.ZodType<GetSubjectProgressRequest, z.ZodTypeDef, unknown>;
/** @internal */
export type GetSubjectProgressRequest$Outbound = {
    student: string;
    subject: string;
};
/** @internal */
export declare const GetSubjectProgressRequest$outboundSchema: z.ZodType<GetSubjectProgressRequest$Outbound, z.ZodTypeDef, GetSubjectProgressRequest>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetSubjectProgressRequest$ {
    /** @deprecated use `GetSubjectProgressRequest$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetSubjectProgressRequest, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetSubjectProgressRequest$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetSubjectProgressRequest$Outbound, z.ZodTypeDef, GetSubjectProgressRequest>;
    /** @deprecated use `GetSubjectProgressRequest$Outbound` instead. */
    type Outbound = GetSubjectProgressRequest$Outbound;
}
export declare function getSubjectProgressRequestToJSON(getSubjectProgressRequest: GetSubjectProgressRequest): string;
export declare function getSubjectProgressRequestFromJSON(jsonString: string): SafeParseResult<GetSubjectProgressRequest, SDKValidationError>;
/** @internal */
export declare const GetSubjectProgressCourse$inboundSchema: z.ZodType<GetSubjectProgressCourse, z.ZodTypeDef, unknown>;
/** @internal */
export type GetSubjectProgressCourse$Outbound = {
    courseCode: string | null;
    dateLastModified: string;
    grades: Array<string> | null;
    level: string | null;
    orgSourcedId: string;
    sourcedId: string;
    status: string;
    subjects: Array<string> | null;
    title: string;
};
/** @internal */
export declare const GetSubjectProgressCourse$outboundSchema: z.ZodType<GetSubjectProgressCourse$Outbound, z.ZodTypeDef, GetSubjectProgressCourse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetSubjectProgressCourse$ {
    /** @deprecated use `GetSubjectProgressCourse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetSubjectProgressCourse, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetSubjectProgressCourse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetSubjectProgressCourse$Outbound, z.ZodTypeDef, GetSubjectProgressCourse>;
    /** @deprecated use `GetSubjectProgressCourse$Outbound` instead. */
    type Outbound = GetSubjectProgressCourse$Outbound;
}
export declare function getSubjectProgressCourseToJSON(getSubjectProgressCourse: GetSubjectProgressCourse): string;
export declare function getSubjectProgressCourseFromJSON(jsonString: string): SafeParseResult<GetSubjectProgressCourse, SDKValidationError>;
/** @internal */
export declare const Progress$inboundSchema: z.ZodType<Progress, z.ZodTypeDef, unknown>;
/** @internal */
export type Progress$Outbound = {
    course: GetSubjectProgressCourse$Outbound;
    inEnrolled: boolean;
    hasUsedTestOut: boolean;
    testOutLessonId: string | null;
    completedLessons: number;
    totalLessons: number;
    totalAttainableXp: number;
    totalXpEarned: number;
};
/** @internal */
export declare const Progress$outboundSchema: z.ZodType<Progress$Outbound, z.ZodTypeDef, Progress>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Progress$ {
    /** @deprecated use `Progress$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Progress, z.ZodTypeDef, unknown>;
    /** @deprecated use `Progress$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Progress$Outbound, z.ZodTypeDef, Progress>;
    /** @deprecated use `Progress$Outbound` instead. */
    type Outbound = Progress$Outbound;
}
export declare function progressToJSON(progress: Progress): string;
export declare function progressFromJSON(jsonString: string): SafeParseResult<Progress, SDKValidationError>;
/** @internal */
export declare const GetSubjectProgressResponse$inboundSchema: z.ZodType<GetSubjectProgressResponse, z.ZodTypeDef, unknown>;
/** @internal */
export type GetSubjectProgressResponse$Outbound = {
    progress: Array<Progress$Outbound>;
};
/** @internal */
export declare const GetSubjectProgressResponse$outboundSchema: z.ZodType<GetSubjectProgressResponse$Outbound, z.ZodTypeDef, GetSubjectProgressResponse>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace GetSubjectProgressResponse$ {
    /** @deprecated use `GetSubjectProgressResponse$inboundSchema` instead. */
    const inboundSchema: z.ZodType<GetSubjectProgressResponse, z.ZodTypeDef, unknown>;
    /** @deprecated use `GetSubjectProgressResponse$outboundSchema` instead. */
    const outboundSchema: z.ZodType<GetSubjectProgressResponse$Outbound, z.ZodTypeDef, GetSubjectProgressResponse>;
    /** @deprecated use `GetSubjectProgressResponse$Outbound` instead. */
    type Outbound = GetSubjectProgressResponse$Outbound;
}
export declare function getSubjectProgressResponseToJSON(getSubjectProgressResponse: GetSubjectProgressResponse): string;
export declare function getSubjectProgressResponseFromJSON(jsonString: string): SafeParseResult<GetSubjectProgressResponse, SDKValidationError>;
//# sourceMappingURL=getsubjectprogress.d.ts.map