"use strict";
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.Courses = void 0;
const coursesAssignResource_js_1 = require("../funcs/coursesAssignResource.js");
const coursesCreate_js_1 = require("../funcs/coursesCreate.js");
const coursesCreateComponent_js_1 = require("../funcs/coursesCreateComponent.js");
const coursesCreateComponentResource_js_1 = require("../funcs/coursesCreateComponentResource.js");
const coursesDelete_js_1 = require("../funcs/coursesDelete.js");
const coursesDeleteComponentResource_js_1 = require("../funcs/coursesDeleteComponentResource.js");
const coursesGet_js_1 = require("../funcs/coursesGet.js");
const coursesGetAll_js_1 = require("../funcs/coursesGetAll.js");
const coursesGetComponent_js_1 = require("../funcs/coursesGetComponent.js");
const coursesGetComponentResource_js_1 = require("../funcs/coursesGetComponentResource.js");
const coursesGetResources_js_1 = require("../funcs/coursesGetResources.js");
const coursesUpdate_js_1 = require("../funcs/coursesUpdate.js");
const coursesUpdateComponent_js_1 = require("../funcs/coursesUpdateComponent.js");
const coursesUpdateComponentResource_js_1 = require("../funcs/coursesUpdateComponentResource.js");
const sdks_js_1 = require("../lib/sdks.js");
const fp_js_1 = require("../types/fp.js");
const operations_js_1 = require("../types/operations.js");
class Courses extends sdks_js_1.ClientSDK {
    /**
     * Get resources for a course
     *
     * @remarks
     * To get the collection of resources assigned to a specific course. If the corresponding record cannot be located, the api will return a 404 error code and message 'Course not found.'
     */
    async getResources(request, options) {
        return (0, operations_js_1.unwrapResultIterator)((0, coursesGetResources_js_1.coursesGetResources)(this, request, options));
    }
    /**
     * Assign a resource to a course
     *
     * @remarks
     * To assign an existing resource to the specified course. The course sourcedId is supplied by the requesting system. If the corresponding record cannot be located, the api will return a 404 error code and message 'Course or resource not found.'
     */
    async assignResource(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesAssignResource_js_1.coursesAssignResource)(this, request, options));
    }
    /**
     * Get All Courses
     *
     * @remarks
     * To get all Courses on the service provider.
     */
    async getAll(request, options) {
        return (0, operations_js_1.unwrapResultIterator)((0, coursesGetAll_js_1.coursesGetAll)(this, request, options));
    }
    /**
     * Create a Course
     *
     * @remarks
     * To create a new Course. The responding system must return the set of sourcedIds that have been allocated to the newly created course record.
     */
    async create(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesCreate_js_1.coursesCreate)(this, request, options));
    }
    /**
     * Get a specific Course
     *
     * @remarks
     * Get a specific Course on the service provider. If the corresponding record cannot be located, the api will return a 404 error code and message 'Course not found.'
     */
    async get(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesGet_js_1.coursesGet)(this, request, options));
    }
    /**
     * Update a Course
     *
     * @remarks
     * To update an existing Course. The sourcedId for the record to be updated is supplied by the requesting system.
     */
    async update(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesUpdate_js_1.coursesUpdate)(this, request, options));
    }
    /**
     * Delete a Course
     *
     * @remarks
     * Perform a soft delete on a specific Course on the service provider. The operation changes the status of the Course to 'tobedeleted'.
     */
    async delete(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesDelete_js_1.coursesDelete)(this, request, options));
    }
    /**
     * Create Component Resource
     *
     * @remarks
     * To create a new Component Resource. The responding system must return the set of sourcedIds that have been allocated to the newly created componentResource record.
     */
    async createComponentResource(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesCreateComponentResource_js_1.coursesCreateComponentResource)(this, request, options));
    }
    /**
     * Get a specific Component Resource
     *
     * @remarks
     * Get a specific Component Resource on the service provider. If the corresponding record cannot be located, the api will return a 404 error code and message 'Component Resource not found.'
     */
    async getComponentResource(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesGetComponentResource_js_1.coursesGetComponentResource)(this, request, options));
    }
    /**
     * Update a Component Resource
     *
     * @remarks
     * To update an existing Component Resource. The sourcedId for the record to be updated is supplied by the requesting system.
     */
    async updateComponentResource(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesUpdateComponentResource_js_1.coursesUpdateComponentResource)(this, request, options));
    }
    /**
     * Delete a Component Resource
     *
     * @remarks
     * Perform a soft delete on a specific Component Resource on the service provider. The operation changes the status of the Component Resource to 'tobedeleted'.
     */
    async deleteComponentResource(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesDeleteComponentResource_js_1.coursesDeleteComponentResource)(this, request, options));
    }
    /**
     * Create Course Component
     *
     * @remarks
     * Used when creating a new course component or module
     */
    async createComponent(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesCreateComponent_js_1.coursesCreateComponent)(this, request, options));
    }
    /**
     * Get a specific Course Component
     *
     * @remarks
     * Get a specific Course Component on the service provider. If the corresponding record cannot be located, the api will return a 404 error code and message 'Course Component not found.'
     */
    async getComponent(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesGetComponent_js_1.coursesGetComponent)(this, request, options));
    }
    /**
     * Update a Course Component
     *
     * @remarks
     * To update an existing Course Component. The sourcedId for the record to be updated is supplied by the requesting system.
     */
    async updateComponent(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, coursesUpdateComponent_js_1.coursesUpdateComponent)(this, request, options));
    }
}
exports.Courses = Courses;
//# sourceMappingURL=courses.js.map