/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
import { schoolsCreate } from "../funcs/schoolsCreate.js";
import { schoolsDelete } from "../funcs/schoolsDelete.js";
import { schoolsGet } from "../funcs/schoolsGet.js";
import { schoolsGetAll } from "../funcs/schoolsGetAll.js";
import { schoolsGetClasses } from "../funcs/schoolsGetClasses.js";
import { schoolsGetEnrollments } from "../funcs/schoolsGetEnrollments.js";
import { schoolsGetStudents } from "../funcs/schoolsGetStudents.js";
import { schoolsGetTeachers } from "../funcs/schoolsGetTeachers.js";
import { schoolsGetTerms } from "../funcs/schoolsGetTerms.js";
import { schoolsUpdate } from "../funcs/schoolsUpdate.js";
import { ClientSDK } from "../lib/sdks.js";
import { unwrapAsync } from "../types/fp.js";
import { unwrapResultIterator } from "../types/operations.js";
import { SchoolsCourses } from "./schoolscourses.js";
import { SchoolsLineItems } from "./schoolslineitems.js";
export class Schools extends ClientSDK {
    get lineItems() {
        return (this._lineItems ?? (this._lineItems = new SchoolsLineItems(this._options)));
    }
    get courses() {
        return (this._courses ?? (this._courses = new SchoolsCourses(this._options)));
    }
    /**
     * Get all Schools
     *
     * @remarks
     * To get all Schools on the service provider.
     */
    async getAll(request, options) {
        return unwrapResultIterator(schoolsGetAll(this, request, options));
    }
    /**
     * Create a new School
     *
     * @remarks
     * To create a new School. The responding system must return the set of sourcedIds that have been allocated to the newly created school record.
     */
    async create(request, options) {
        return unwrapAsync(schoolsCreate(this, request, options));
    }
    /**
     * Get a specific School
     *
     * @remarks
     * Get a specific School on the service provider. If the corresponding record cannot be located, the api will return a 404 error code and message 'School not found.'
     */
    async get(request, options) {
        return unwrapAsync(schoolsGet(this, request, options));
    }
    /**
     * Update a School
     *
     * @remarks
     * To update an existing School. The sourcedId for the record to be updated is supplied by the requesting system.
     */
    async update(request, options) {
        return unwrapAsync(schoolsUpdate(this, request, options));
    }
    /**
     * Delete a School
     *
     * @remarks
     * Perform a soft delete on a specific School on the service provider. The operation changes the status of the School to 'tobedeleted'.
     */
    async delete(request, options) {
        return unwrapAsync(schoolsDelete(this, request, options));
    }
    /**
     * Get all Classes for a School
     *
     * @remarks
     * To get all Classes for a School on the service provider. If the specified school cannot be identified within the service provider, the api will return a 404 error code and message 'School not found.'
     */
    async getClasses(request, options) {
        return unwrapResultIterator(schoolsGetClasses(this, request, options));
    }
    /**
     * Get all Terms for a School
     *
     * @remarks
     * To get all Terms for a School on the service provider. If the specified school cannot be identified within the service provider, the api will return a 404 error code and message 'School not found.'
     */
    async getTerms(request, options) {
        return unwrapResultIterator(schoolsGetTerms(this, request, options));
    }
    /**
     * Get all teachers for a school
     *
     * @remarks
     * To get all Teachers for a School on the service provider. If the specified school cannot be identified within the service provider, the api will return a 404 error code and message 'School not found.'
     */
    async getTeachers(request, options) {
        return unwrapResultIterator(schoolsGetTeachers(this, request, options));
    }
    /**
     * Get all Students for a School
     *
     * @remarks
     * To get all Students for a School on the service provider.
     */
    async getStudents(request, options) {
        return unwrapResultIterator(schoolsGetStudents(this, request, options));
    }
    /**
     * Get all Enrollments for a School
     *
     * @remarks
     * To get all Enrollments for a School on the service provider. If the specified school cannot be identified within the service provider, the api will return a 404 error code and message 'School not found.'
     */
    async getEnrollments(request, options) {
        return unwrapResultIterator(schoolsGetEnrollments(this, request, options));
    }
}
//# sourceMappingURL=schools.js.map