# This file was auto-generated by Fern from our API Definition.

import typing

import typing_extensions
from ..core.serialization import FieldMetadata
from ..types.edit_run_status import EditRunStatus
from .edit_config import EditConfigParams
from .edit_run_metrics import EditRunMetricsParams
from .edit_run_output import EditRunOutputParams
from .file_summary import FileSummaryParams
from .run_usage import RunUsageParams


class EditRunParams(typing_extensions.TypedDict):
    """
    Edit run object.
    """

    object: typing.Literal["edit_run"]
    """
    The type of object. Will always be `"edit_run"`.
    """

    id: str
    """
    A unique identifier for the edit run.
    
    Example: `"edr_xK9mLPqRtN3vS8wF5hB2cQ"`
    """

    file: FileSummaryParams
    """
    The input file that was submitted for editing.
    """

    status: EditRunStatus
    """
    The status of the edit run:
    * `"PROCESSING"` - The file is still being processed
    * `"PROCESSED"` - The file was successfully edited
    * `"FAILED"` - The editing failed (see `failureReason` for details)
    """

    failure_reason: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="failureReason")]
    """
    The reason for failure.
    
    **Availability:** Present when `status` is `"FAILED"`.
    
    Possible values include:
    * `UNABLE_TO_DOWNLOAD_FILE` - Failed to load the requested file
    * `FILE_TYPE_NOT_SUPPORTED` - File type not supported. Edit runs currently require a PDF
    * `FILE_SIZE_TOO_LARGE` - The file exceeds the maximum allowed size
    * `CORRUPT_FILE` - The file appears to be corrupted and cannot be edited
    * `FIELD_DETECTION_ERROR` - An error occurred during field detection
    * `PASSWORD_PROTECTED_FILE` - The file is password protected and cannot be edited
    * `FAILED_TO_CONVERT_TO_PDF` - The file could not be converted to PDF for processing
    * `INTERNAL_ERROR` - An unexpected internal error occurred
    * `INVALID_OPTIONS` - The provided configuration options are invalid
    * `EMPTY_SCHEMA` - No schema was provided and no fields could be detected
    * `OUT_OF_CREDITS` - Insufficient credits to process the file
    
    **Note:** Additional failure reasons may be added in the future. Your integration should handle unknown values gracefully.
    """

    failure_message: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="failureMessage")]
    """
    A human-readable description of the failure.
    
    **Availability:** Present when `status` is `"FAILED"`.
    """

    config: EditConfigParams
    """
    The configuration used for this edit run, including any default values that were applied.
    """

    output: typing.Optional[EditRunOutputParams]
    """
    The output of the edit run.
    
    **Availability:** Present when `status` is `"PROCESSED"`.
    """

    metrics: typing.Optional[EditRunMetricsParams]
    """
    Metrics about the editing process.
    
    **Availability:** Present when `status` is `"PROCESSED"`.
    """

    usage: typing.Optional[RunUsageParams]
    """
    Usage credits consumed by this run.
    
    **Availability:** Present when `status` is `"PROCESSED"`, the run was created after October 7, 2025, and the customer is on the current billing system.
    """
