"use strict";
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.PowerPathLessonPlans = void 0;
const powerPathLessonPlansAttachComponent_js_1 = require("../funcs/powerPathLessonPlansAttachComponent.js");
const powerPathLessonPlansAttachResource_js_1 = require("../funcs/powerPathLessonPlansAttachResource.js");
const powerPathLessonPlansCreateLessonPlan_js_1 = require("../funcs/powerPathLessonPlansCreateLessonPlan.js");
const powerPathLessonPlansDeleteLessonPlan_js_1 = require("../funcs/powerPathLessonPlansDeleteLessonPlan.js");
const powerPathLessonPlansDeleteLessonPlanItem_js_1 = require("../funcs/powerPathLessonPlansDeleteLessonPlanItem.js");
const powerPathLessonPlansGetTree_js_1 = require("../funcs/powerPathLessonPlansGetTree.js");
const powerPathLessonPlansUpdateLessonPlanItem_js_1 = require("../funcs/powerPathLessonPlansUpdateLessonPlanItem.js");
const sdks_js_1 = require("../lib/sdks.js");
const fp_js_1 = require("../types/fp.js");
class PowerPathLessonPlans extends sdks_js_1.ClientSDK {
    /**
     * Create a lesson plan
     *
     * @remarks
     *
     *     Creates a new lesson plan for a course and student.
     *
     *     The lesson plan is created by specifying a course sourced ID and a student sourced ID and, optionally, a class sourced ID.
     *     The student must be enrolled in the class to create a lesson plan for them.
     *
     *     If no class sourced ID is provided, the course's default class will be used if available.
     */
    async createLessonPlan(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansCreateLessonPlan_js_1.powerPathLessonPlansCreateLessonPlan)(this, request, options));
    }
    /**
     * Returns the lesson plan tree for a course and student
     *
     * @remarks
     *
     *     Given a course sourced ID and a user sourced ID, returns the lesson plan tree.
     *
     *     The lesson plan tree is nested object comprised of several lessonPlanItems,
     *     which are nodes that contain information about the lesson plan - including which component or component resource is associated with that node,
     *     as well as which node is its parent.
     *
     *     A node may reference a component or a componentResource.
     *     A node with no parent is considered at the root level of the lesson plan tree.
     *
     *     A student's lesson plan has a unique ID that can be used instead of the parameters to retrieve it.
     */
    async getTree(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansGetTree_js_1.powerPathLessonPlansGetTree)(this, request, options));
    }
    /**
     * Delete a lesson plan
     *
     * @remarks
     *
     *     Deletes a lesson plan by its ID.
     *     This will delete the lesson plan and all of its associated lesson plan items.
     */
    async deleteLessonPlan(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansDeleteLessonPlan_js_1.powerPathLessonPlansDeleteLessonPlan)(this, request, options));
    }
    /**
     * Create a lesson plan item to attach a component to a lesson plan
     *
     * @remarks
     *
     *     Creates a lessonPlanItem of type "component" and attaches it to lesson plan with the given ID.
     *     The lessonPlanItem *must* reference a course component for the course associated with the lesson plan.
     *     The parent lessonPlanItem, if any, must be of type "component" as well.
     */
    async attachComponent(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansAttachComponent_js_1.powerPathLessonPlansAttachComponent)(this, request, options));
    }
    /**
     * Create a lesson plan item to attach a resource to a lesson plan
     *
     * @remarks
     *
     *     Creates a lessonPlanItem of type "resource" and attaches it to lesson plan with the given ID.
     *     The lessonPlanItem *must* reference a course component resource for the course associated with the lesson plan.
     *
     *     The parent lessonPlanItem, if any, must be of type "component".
     */
    async attachResource(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansAttachResource_js_1.powerPathLessonPlansAttachResource)(this, request, options));
    }
    /**
     * Update a lesson plan item
     *
     * @remarks
     *
     *     Updates a lesson plan item by its ID.
     *
     *     While many parameters of a lesson plan item can be updated,
     *     the main use case for this feature is to re-parent a lesson plan item.
     */
    async updateLessonPlanItem(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansUpdateLessonPlanItem_js_1.powerPathLessonPlansUpdateLessonPlanItem)(this, request, options));
    }
    /**
     * Delete a lesson plan item
     *
     * @remarks
     *
     *     Deletes a lesson plan item by its ID.
     *
     *     This will delete the lesson plan item and all of its associated lesson plan items.
     *     WARNING: This operation is irreversible.
     */
    async deleteLessonPlanItem(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, powerPathLessonPlansDeleteLessonPlanItem_js_1.powerPathLessonPlansDeleteLessonPlanItem)(this, request, options));
    }
}
exports.PowerPathLessonPlans = PowerPathLessonPlans;
//# sourceMappingURL=powerpathlessonplans.js.map