/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */
import { powerPathPlacementGetNextPlacementTest } from "../../funcs/powerPathPlacementGetNextPlacementTest.js";
import * as operations from "../../models/operations/index.js";
import { formatResult } from "../tools.js";
const args = {
    request: operations.GetNextPlacementTestRequest$inboundSchema,
};
export const tool$powerPathPlacementGetNextPlacementTest = {
    name: "power-path-placement-get-next-placement-test",
    description: `Get next placement test

Returns the next placement test for the student in a subject:
- If the student has completed all placement tests for the subject, the next test's lesson ID will be null. Tests will also be marked as exhausted.
- If the student hasn't completed a single placement test, returns the first placement test's lesson ID for the subject.
- If the student has completed some placement tests, it will return null for the next test's lesson ID if the last completed test had a score smaller than 90.
- Alternatively, it will return the next available placement test's lesson ID if the score was greater than or equal to 90.

Also returns the 'onboarded' boolean that indicates if the student completed the onboarding process for the subject:
- A 'onboarded = true' means they either completed and passed all placement tests or they have gotten a score smaller than 90 in the last completed placement test.
- A 'onboarded = false' means they haven't completed placement tests yet or have achieved a score of 90 or greater in the last completed placement test and there are more tests to take.

A 'Lesson' in this context is a ComponentResource object which has a Resource object with metadata.lessonType = "placement" associated with it.
`,
    args,
    tool: async (client, args, ctx) => {
        const [result, apiCall] = await powerPathPlacementGetNextPlacementTest(client, args.request, { fetchOptions: { signal: ctx.signal } }).$inspect();
        if (!result.ok) {
            return {
                content: [{ type: "text", text: result.error.message }],
                isError: true,
            };
        }
        const value = result.value;
        return formatResult(value, apiCall);
    },
};
//# sourceMappingURL=powerPathPlacementGetNextPlacementTest.js.map