"use strict";
/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.GradingPeriods = void 0;
const gradingPeriodsCreate_js_1 = require("../funcs/gradingPeriodsCreate.js");
const gradingPeriodsCreateForTerm_js_1 = require("../funcs/gradingPeriodsCreateForTerm.js");
const gradingPeriodsDelete_js_1 = require("../funcs/gradingPeriodsDelete.js");
const gradingPeriodsGet_js_1 = require("../funcs/gradingPeriodsGet.js");
const gradingPeriodsGetAll_js_1 = require("../funcs/gradingPeriodsGetAll.js");
const gradingPeriodsUpdate_js_1 = require("../funcs/gradingPeriodsUpdate.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 GradingPeriods extends sdks_js_1.ClientSDK {
    /**
     * Get all Grading Periods
     *
     * @remarks
     * To get all Grading Periods on the service provider.
     */
    async getAll(request, options) {
        return (0, operations_js_1.unwrapResultIterator)((0, gradingPeriodsGetAll_js_1.gradingPeriodsGetAll)(this, request, options));
    }
    /**
     * Create a new Grading Period
     *
     * @remarks
     * To create a new Grading Period. The responding system must return the set of sourcedIds that have been allocated to the newly created gradingPeriod record.
     */
    async create(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, gradingPeriodsCreate_js_1.gradingPeriodsCreate)(this, request, options));
    }
    /**
     * Get a specific Grading Period
     *
     * @remarks
     * Get a specific Grading Period on the service provider. If the corresponding record cannot be located, the api will return a 404 error code and message 'Grading period not found.'
     */
    async get(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, gradingPeriodsGet_js_1.gradingPeriodsGet)(this, request, options));
    }
    /**
     * Update a Grading Period
     *
     * @remarks
     * To update an existing Grading Period. 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, gradingPeriodsUpdate_js_1.gradingPeriodsUpdate)(this, request, options));
    }
    /**
     * Delete a Grading Period
     *
     * @remarks
     * Perform a soft delete on a specific Grading Period on the service provider. The operation changes the status of the Grading Period to 'tobedeleted'.
     */
    async delete(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, gradingPeriodsDelete_js_1.gradingPeriodsDelete)(this, request, options));
    }
    /**
     * Create a new Grading Period for a Term
     *
     * @remarks
     * To create a new Grading Period for a Term. A Grading Period is a type of Academic Session. The responding system must return the set of sourcedIds that have been allocated to the newly created academicSession record.
     */
    async createForTerm(request, options) {
        return (0, fp_js_1.unwrapAsync)((0, gradingPeriodsCreateForTerm_js_1.gradingPeriodsCreateForTerm)(this, request, options));
    }
}
exports.GradingPeriods = GradingPeriods;
//# sourceMappingURL=gradingperiods.js.map