# Generated by ariadne-codegen
# Source: ./documents

from typing import Any, List, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import (
    ContentTypes,
    EntityState,
    FileTypes,
    ImageProjectionTypes,
    OrientationTypes,
    TextTypes,
)


class PublishConversation(BaseModel):
    publish_conversation: Optional["PublishConversationPublishConversation"] = Field(
        alias="publishConversation"
    )


class PublishConversationPublishConversation(BaseModel):
    contents: Optional[List[Optional["PublishConversationPublishConversationContents"]]]
    details: Optional["PublishConversationPublishConversationDetails"]


class PublishConversationPublishConversationContents(BaseModel):
    id: str
    name: str
    state: EntityState
    original_date: Optional[Any] = Field(alias="originalDate")
    identifier: Optional[str]
    markdown: Optional[str]
    uri: Optional[Any]
    type: Optional[ContentTypes]
    file_type: Optional[FileTypes] = Field(alias="fileType")
    mime_type: Optional[str] = Field(alias="mimeType")
    format: Optional[str]
    format_name: Optional[str] = Field(alias="formatName")
    file_extension: Optional[str] = Field(alias="fileExtension")
    file_name: Optional[str] = Field(alias="fileName")
    file_size: Optional[Any] = Field(alias="fileSize")
    relative_folder_path: Optional[str] = Field(alias="relativeFolderPath")
    master_uri: Optional[Any] = Field(alias="masterUri")
    image_uri: Optional[Any] = Field(alias="imageUri")
    text_uri: Optional[Any] = Field(alias="textUri")
    audio_uri: Optional[Any] = Field(alias="audioUri")
    transcript_uri: Optional[Any] = Field(alias="transcriptUri")
    summary: Optional[str]
    custom_summary: Optional[str] = Field(alias="customSummary")
    keywords: Optional[List[str]]
    bullets: Optional[List[str]]
    headlines: Optional[List[str]]
    posts: Optional[List[str]]
    chapters: Optional[List[str]]
    questions: Optional[List[str]]
    quotes: Optional[List[str]]
    video: Optional["PublishConversationPublishConversationContentsVideo"]
    audio: Optional["PublishConversationPublishConversationContentsAudio"]
    image: Optional["PublishConversationPublishConversationContentsImage"]
    document: Optional["PublishConversationPublishConversationContentsDocument"]


class PublishConversationPublishConversationContentsVideo(BaseModel):
    width: Optional[int]
    height: Optional[int]
    duration: Optional[Any]
    make: Optional[str]
    model: Optional[str]
    software: Optional[str]
    title: Optional[str]
    description: Optional[str]
    keywords: Optional[List[Optional[str]]]
    author: Optional[str]


class PublishConversationPublishConversationContentsAudio(BaseModel):
    keywords: Optional[List[Optional[str]]]
    author: Optional[str]
    series: Optional[str]
    episode: Optional[str]
    episode_type: Optional[str] = Field(alias="episodeType")
    season: Optional[str]
    publisher: Optional[str]
    copyright: Optional[str]
    genre: Optional[str]
    title: Optional[str]
    description: Optional[str]
    bitrate: Optional[int]
    channels: Optional[int]
    sample_rate: Optional[int] = Field(alias="sampleRate")
    bits_per_sample: Optional[int] = Field(alias="bitsPerSample")
    duration: Optional[Any]


class PublishConversationPublishConversationContentsImage(BaseModel):
    width: Optional[int]
    height: Optional[int]
    resolution_x: Optional[int] = Field(alias="resolutionX")
    resolution_y: Optional[int] = Field(alias="resolutionY")
    bits_per_component: Optional[int] = Field(alias="bitsPerComponent")
    components: Optional[int]
    projection_type: Optional[ImageProjectionTypes] = Field(alias="projectionType")
    orientation: Optional[OrientationTypes]
    description: Optional[str]
    make: Optional[str]
    model: Optional[str]
    software: Optional[str]
    lens: Optional[str]
    focal_length: Optional[float] = Field(alias="focalLength")
    exposure_time: Optional[str] = Field(alias="exposureTime")
    f_number: Optional[str] = Field(alias="fNumber")
    iso: Optional[str]
    heading: Optional[float]
    pitch: Optional[float]


class PublishConversationPublishConversationContentsDocument(BaseModel):
    title: Optional[str]
    subject: Optional[str]
    summary: Optional[str]
    author: Optional[str]
    last_modified_by: Optional[str] = Field(alias="lastModifiedBy")
    publisher: Optional[str]
    description: Optional[str]
    keywords: Optional[List[Optional[str]]]
    page_count: Optional[int] = Field(alias="pageCount")
    worksheet_count: Optional[int] = Field(alias="worksheetCount")
    slide_count: Optional[int] = Field(alias="slideCount")
    word_count: Optional[int] = Field(alias="wordCount")
    line_count: Optional[int] = Field(alias="lineCount")
    paragraph_count: Optional[int] = Field(alias="paragraphCount")
    is_encrypted: Optional[bool] = Field(alias="isEncrypted")
    has_digital_signature: Optional[bool] = Field(alias="hasDigitalSignature")


class PublishConversationPublishConversationDetails(BaseModel):
    contents: Optional[List["PublishConversationPublishConversationDetailsContents"]]
    summaries: Optional[List[str]]
    text: Optional[str]
    text_type: Optional[TextTypes] = Field(alias="textType")
    summary_specification: Optional[str] = Field(alias="summarySpecification")
    publish_specification: Optional[str] = Field(alias="publishSpecification")
    summary_time: Optional[Any] = Field(alias="summaryTime")
    publish_time: Optional[Any] = Field(alias="publishTime")


class PublishConversationPublishConversationDetailsContents(BaseModel):
    id: str


PublishConversation.model_rebuild()
PublishConversationPublishConversation.model_rebuild()
PublishConversationPublishConversationContents.model_rebuild()
PublishConversationPublishConversationDetails.model_rebuild()
