/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
import { classesAddStudent } from "../funcs/classesAddStudent.js";
import { classesAddTeacher } from "../funcs/classesAddTeacher.js";
import { classesCreate } from "../funcs/classesCreate.js";
import { classesCreateResults } from "../funcs/classesCreateResults.js";
import { classesDelete } from "../funcs/classesDelete.js";
import { classesGet } from "../funcs/classesGet.js";
import { classesGetAll } from "../funcs/classesGetAll.js";
import { classesGetCategories } from "../funcs/classesGetCategories.js";
import { classesGetScoreScales } from "../funcs/classesGetScoreScales.js";
import { classesGetStudentResults } from "../funcs/classesGetStudentResults.js";
import { classesGetStudents } from "../funcs/classesGetStudents.js";
import { classesGetTeachers } from "../funcs/classesGetTeachers.js";
import { classesListResources } from "../funcs/classesListResources.js";
import { classesUpdate } from "../funcs/classesUpdate.js";
import { ClientSDK } from "../lib/sdks.js";
import { unwrapAsync } from "../types/fp.js";
import { unwrapResultIterator } from "../types/operations.js";
import { ClassesResults } from "./classesresults.js";
export class Classes extends ClientSDK {
    get results() {
        return (this._results ?? (this._results = new ClassesResults(this._options)));
    }
    /**
     * Create Results for an Academic Session for a Class
     *
     * @remarks
     * To create a set of results for a specific academic session and specific class. The responding system must return the set of sourcedIds that have been allocated to the newly created result records. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class or academic session not found.'
     */
    async createResults(request, options) {
        return unwrapAsync(classesCreateResults(this, request, options));
    }
    /**
     * Get Results for a Student for a Class
     *
     * @remarks
     * Get the set of results on the service provider for a specific student and for a specific class. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class or student not found.'
     */
    async getStudentResults(request, options) {
        return unwrapResultIterator(classesGetStudentResults(this, request, options));
    }
    /**
     * Get Categories for a Class
     *
     * @remarks
     * Get the set of categories on the service provider for a specific class. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class not found.'
     */
    async getCategories(request, options) {
        return unwrapResultIterator(classesGetCategories(this, request, options));
    }
    /**
     * Get Score Scales for a Class
     *
     * @remarks
     * Get the set of scoreScales on the service provider for a specific class. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class not found.'
     */
    async getScoreScales(request, options) {
        return unwrapResultIterator(classesGetScoreScales(this, request, options));
    }
    /**
     * Get all Classes
     *
     * @remarks
     * To get all Classes on the service provider.
     */
    async getAll(request, options) {
        return unwrapResultIterator(classesGetAll(this, request, options));
    }
    /**
     * Create a new Class
     *
     * @remarks
     * To create a new Class. The responding system must return the set of sourcedIds that have been allocated to the newly created class record.
     */
    async create(request, options) {
        return unwrapAsync(classesCreate(this, request, options));
    }
    /**
     * Get a specific class
     *
     * @remarks
     * Get a specific Class on the service provider. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class not found.'
     */
    async get(request, options) {
        return unwrapAsync(classesGet(this, request, options));
    }
    /**
     * Update a Class
     *
     * @remarks
     * To update an existing Class. The sourcedId for the record to be updated is supplied by the requesting system.
     */
    async update(request, options) {
        return unwrapAsync(classesUpdate(this, request, options));
    }
    /**
     * Delete a Class
     *
     * @remarks
     * Perform a soft delete on a specific Class on the service provider. This operation changes the status of the Class to 'tobedeleted'.
     */
    async delete(request, options) {
        return unwrapAsync(classesDelete(this, request, options));
    }
    /**
     * Get resources for a class
     *
     * @remarks
     * To get the collection of resources available to a specific class. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class not found.'
     */
    async listResources(request, options) {
        return unwrapResultIterator(classesListResources(this, request, options));
    }
    /**
     * Add a teacher to a Class
     *
     * @remarks
     * Enrolls a teacher to a specific Class. The responding system must return the set of sourcedIds that have been allocated to the newly created enrollment record.
     */
    async addTeacher(request, options) {
        return unwrapAsync(classesAddTeacher(this, request, options));
    }
    /**
     * Get Teachers for a specific Class in a School
     *
     * @remarks
     * To get all Teachers for a Class in a School on the service provider. If the specified school and/or class cannot be identified within the service provider, the api will return a 404 error code and message 'School or class not found.'
     */
    async getTeachers(request, options) {
        return unwrapResultIterator(classesGetTeachers(this, request, options));
    }
    /**
     * Get students for a Class
     *
     * @remarks
     * To get all students enrolled in a specific Class. If the corresponding record cannot be located, the api will return a 404 error code and message 'Class not found.'
     */
    async getStudents(request, options) {
        return unwrapResultIterator(classesGetStudents(this, request, options));
    }
    /**
     * Add a student to a Class
     *
     * @remarks
     * Enrolls a student in a specific Class. The responding system must return the set of sourcedIds that have been allocated to the newly created enrollment record.
     */
    async addStudent(request, options) {
        return unwrapAsync(classesAddStudent(this, request, options));
    }
}
//# sourceMappingURL=classes.js.map