import { PowerPathCore } from "../core.js";
import { RequestOptions } from "../lib/sdks.js";
import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/httpclienterrors.js";
import * as errors from "../models/errors/index.js";
import { PowerPathError } from "../models/errors/powerpatherror.js";
import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
import * as operations from "../models/operations/index.js";
import { APIPromise } from "../types/async.js";
import { Result } from "../types/fp.js";
/**
 * Create an External Placement Test
 *
 * @remarks
 * Creates or updates a ComponentResource to act as a Placement Test lesson in a course.
 * This allows integrating with external test-taking platforms (like Edulastic) for content delivery.
 *
 * The endpoint creates or updates (if they already exist) the following entities:
 * - A CourseComponent for the course to hold the Placement Test lesson
 * - A Resource with lessonType = "placement" and the external service details as metadata
 * - A ComponentResource acting as the Placement Test lesson
 *
 * A test assignment is mandatory in order to obtain access credentials for this test on the external platform, as well as to obtain the IDs necessary for fetching test results later on:
 * - For test assignments, use the "makeExternalTestAssignment" endpoint.
 * - For test results retrieval, use the "importExternalTestAssignmentResults" endpoint.
 *
 * If a 'courseIdOnFail' parameter is supplied, its Course's sourcedId will be used to automatically enroll the student when the placement test is completed with a score below 90 %. When the parameter is omitted (or set to null), no automatic enrollment will happen.
 *
 * This request fails if:
 * - The 'course' provided does not exist, or a non-null 'courseIdOnFail' references a non-existent course
 * - An existing Placement Test lesson in the course, targeting the same grade, has a different toolProvider than the one provided (need to perform an update to the Resource first, altering the "toolProvider", before trying again)
 *
 * A 'Lesson' in this context is a ComponentResource object which has a Resource object with lessonType = "placement" associated with it.
 */
export declare function powerPathCourseMasteryCreateExternalPlacementTest(client: PowerPathCore, request?: operations.CreateExternalPlacementTestRequest | undefined, options?: RequestOptions): APIPromise<Result<operations.CreateExternalPlacementTestResponse, errors.BadRequestResponseError | errors.UnauthorizedRequestResponseError | errors.ForbiddenResponseError | errors.NotFoundResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerErrorResponse | PowerPathError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
//# sourceMappingURL=powerPathCourseMasteryCreateExternalPlacementTest.d.ts.map