"""
Timeback PowerPath Client

A Python client for PowerPath adaptive learning operations.

Example:
    ```python
    from timeback_powerpath import PowerPathClient

    async def main():
        client = PowerPathClient(
            env="staging",
            client_id="your-client-id",
            client_secret="your-client-secret",
        )

        # List test assignments
        assignments = await client.test_assignments.list_all(
            TestAssignmentsListParams(student="student-id")
        )

        # Get assessment progress
        progress = await client.assessments.get_assessment_progress(
            GetAssessmentProgressParams(student="student-id", lesson="lesson-id")
        )

        # Get syllabus
        syllabus = await client.syllabus.get("course-sourced-id")

        await client.close()
    ```
"""

from importlib.metadata import PackageNotFoundError, version

try:
    __version__ = version("timeback-powerpath")
except PackageNotFoundError:
    __version__ = "0.0.0"

from .client import PowerPathClient
from .exceptions import (
    APIError,
    AuthenticationError,
    ForbiddenError,
    InputValidationError,
    NotFoundError,
    PowerPathError,
    RateLimitError,
    ServerError,
    TimebackError,
    ValidationError,
    ValidationIssue,
    create_input_validation_error,
)
from .types import (
    AddCustomResourceOperation,
    AssessmentBankConfig,
    AssessmentBankResource,
    AssignmentResult,
    Attempt,
    BulkResult,
    BulkResultError,
    ChangeItemParentOperation,
    CourseProgressResponse,
    CreateAttemptResponse,
    CreateExternalPlacementTestInput,
    CreateExternalTestOutInput,
    CreateInternalTestInput,
    CreateNewAttemptInput,
    ExternalTestCapableLessonType,
    ExternalTestCreateResponse,
    FinalizeAssessmentResponse,
    FinalStudentAssessmentResponseInput,
    GetAllPlacementTestsResponse,
    GetAssessmentProgressParams,
    GetAssessmentProgressResponse,
    GetAttemptsParams,
    GetAttemptsResponse,
    GetCurrentLevelResponse,
    GetNextPlacementTestResponse,
    GetNextQuestionParams,
    GetNextQuestionResponse,
    GetSubjectProgressResponse,
    ImportExternalResultsResponse,
    ImportExternalTestAssignmentResultsParams,
    InternalTestCreateResponse,
    LearningObjectiveResult,
    LearningObjectiveSet,
    LessonPlanCourseSyncResult,
    LessonPlanCreateResponse,
    LessonPlanOperation,
    LessonPlanOperationInput,
    LessonPlanOperationResult,
    LessonPlanOperationsInput,
    LessonPlanOperationsResponse,
    LessonPlanOperationType,
    LessonPlanResponse,
    LessonPlansCreateInput,
    LessonPlanSyncResult,
    LessonPlanTarget,
    LessonPlanUpdateStudentItemResponseInput,
    MakeExternalTestAssignmentInput,
    MakeExternalTestAssignmentResponse,
    MoveItemAfterOperation,
    MoveItemBeforeOperation,
    MoveItemToEndOperation,
    MoveItemToStartOperation,
    PaginationMeta,
    PlacementQueryParams,
    PlacementResetUserPlacementInput,
    PowerPath100ProgressResponse,
    PowerPath100UpdateResponseResult,
    PowerPathLessonType,
    PowerPathQuestionContent,
    PowerPathQuestionDifficulty,
    PowerPathQuestionResult,
    PowerPathTestQuestion,
    QtiTestConfig,
    QuizLikeLessonType,
    RemainingQuestionsPerDifficulty,
    ResetAttemptInput,
    ResetAttemptResponse,
    ResetPlacementResponse,
    ResourceStatus,
    ResponseResult,
    ResponseResultFeedback,
    ScoreStatus,
    ScreeningAssignTestInput,
    ScreeningAssignTestResponse,
    ScreeningResetSessionInput,
    ScreeningResetSessionResponse,
    ScreeningResultsResponse,
    ScreeningSessionResponse,
    ScreeningSubject,
    SetSkippedOperation,
    StandardProgressResponse,
    StandardUpdateResponseResult,
    StudentItemResult,
    SyllabusQueryParams,
    SyllabusResponse,
    TestAssignment,
    TestAssignmentItemInput,
    TestAssignmentsAdminParams,
    TestAssignmentsBulkInput,
    TestAssignmentsCreateInput,
    TestAssignmentsImportInput,
    TestAssignmentsListParams,
    TestAssignmentsListResponse,
    TestAssignmentStatus,
    TestAssignmentsUpdateInput,
    TestOutCredentials,
    TestOutParams,
    TestOutResponse,
    TimebackGrade,
    TimebackSubject,
    ToolProvider,
    UpdateStudentItemResponseResult,
    UpdateStudentQuestionResponseInput,
    UpdateStudentQuestionResponseResult,
)

__all__ = [
    "APIError",
    "AddCustomResourceOperation",
    "AssessmentBankConfig",
    "AssessmentBankResource",
    "AssignmentResult",
    "Attempt",
    "AuthenticationError",
    "BulkResult",
    "BulkResultError",
    "ChangeItemParentOperation",
    "CourseProgressResponse",
    "CreateAttemptResponse",
    "CreateExternalPlacementTestInput",
    "CreateExternalTestOutInput",
    "CreateInternalTestInput",
    "CreateNewAttemptInput",
    "ExternalTestCapableLessonType",
    "ExternalTestCreateResponse",
    "FinalStudentAssessmentResponseInput",
    "FinalizeAssessmentResponse",
    "ForbiddenError",
    "GetAllPlacementTestsResponse",
    "GetAssessmentProgressParams",
    "GetAssessmentProgressResponse",
    "GetAttemptsParams",
    "GetAttemptsResponse",
    "GetCurrentLevelResponse",
    "GetNextPlacementTestResponse",
    "GetNextQuestionParams",
    "GetNextQuestionResponse",
    "GetSubjectProgressResponse",
    "ImportExternalResultsResponse",
    "ImportExternalTestAssignmentResultsParams",
    "InputValidationError",
    "InternalTestCreateResponse",
    "LearningObjectiveResult",
    "LearningObjectiveSet",
    "LessonPlanCourseSyncResult",
    "LessonPlanCreateResponse",
    "LessonPlanOperation",
    "LessonPlanOperationInput",
    "LessonPlanOperationResult",
    "LessonPlanOperationType",
    "LessonPlanOperationsInput",
    "LessonPlanOperationsResponse",
    "LessonPlanResponse",
    "LessonPlanSyncResult",
    "LessonPlanTarget",
    "LessonPlanUpdateStudentItemResponseInput",
    "LessonPlansCreateInput",
    "MakeExternalTestAssignmentInput",
    "MakeExternalTestAssignmentResponse",
    "MoveItemAfterOperation",
    "MoveItemBeforeOperation",
    "MoveItemToEndOperation",
    "MoveItemToStartOperation",
    "NotFoundError",
    "PaginationMeta",
    "PlacementQueryParams",
    "PlacementResetUserPlacementInput",
    "PowerPath100ProgressResponse",
    "PowerPath100UpdateResponseResult",
    "PowerPathClient",
    "PowerPathError",
    "PowerPathLessonType",
    "PowerPathQuestionContent",
    "PowerPathQuestionDifficulty",
    "PowerPathQuestionResult",
    "PowerPathTestQuestion",
    "QtiTestConfig",
    "QuizLikeLessonType",
    "RateLimitError",
    "RemainingQuestionsPerDifficulty",
    "ResetAttemptInput",
    "ResetAttemptResponse",
    "ResetPlacementResponse",
    "ResourceStatus",
    "ResponseResult",
    "ResponseResultFeedback",
    "ScoreStatus",
    "ScreeningAssignTestInput",
    "ScreeningAssignTestResponse",
    "ScreeningResetSessionInput",
    "ScreeningResetSessionResponse",
    "ScreeningResultsResponse",
    "ScreeningSessionResponse",
    "ScreeningSubject",
    "ServerError",
    "SetSkippedOperation",
    "StandardProgressResponse",
    "StandardUpdateResponseResult",
    "StudentItemResult",
    "SyllabusQueryParams",
    "SyllabusResponse",
    "TestAssignment",
    "TestAssignmentItemInput",
    "TestAssignmentStatus",
    "TestAssignmentsAdminParams",
    "TestAssignmentsBulkInput",
    "TestAssignmentsCreateInput",
    "TestAssignmentsImportInput",
    "TestAssignmentsListParams",
    "TestAssignmentsListResponse",
    "TestAssignmentsUpdateInput",
    "TestOutCredentials",
    "TestOutParams",
    "TestOutResponse",
    "TimebackError",
    "TimebackGrade",
    "TimebackSubject",
    "ToolProvider",
    "UpdateStudentItemResponseResult",
    "UpdateStudentQuestionResponseInput",
    "UpdateStudentQuestionResponseResult",
    "ValidationError",
    "ValidationIssue",
    "__version__",
    "create_input_validation_error",
]
