"""AUTOGENERATED CODE - DO NOT EDIT

If you want to customize this structure:
  1. Copy this file to your own module
  2. Remove the 'structure' or 'refines' declaration from the concept in the MTHDS file
     and declare it in inline mode (see https://docs.pipelex.com/latest/building-methods/concepts/define_your_concepts/#basic-concept-definition)
  3. Make sure your custom class is importable and registered

To regenerate: pipelex build structures <target_directory>
"""

from pydantic import Field

from pipelex.core.stuffs.structured_content import StructuredContent
from tests.e2e.pipelex.concepts.nested_concepts.generated_models.nested_concepts_test__customer import Customer
from tests.e2e.pipelex.concepts.nested_concepts.generated_models.nested_concepts_test__line_item import LineItem


class Invoice(StructuredContent):
    """Generated Invoice class"""

    invoice_number: str = Field(..., description="Unique invoice identifier")
    customer: Customer = Field(..., description="The customer for this invoice")
    line_items: list[LineItem] = Field(..., description="List of line items in the invoice")
    total_amount: float = Field(..., description="Total invoice amount")
    notes: str | None = Field(default=None, description="Optional notes for the invoice")
