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

from typing import Any, List, Optional

from pydantic import Field

from .base_model import BaseModel
from .enums import EntityState, LinkTypes


class QueryInvestmentsClusters(BaseModel):
    investments: Optional["QueryInvestmentsClustersInvestments"]


class QueryInvestmentsClustersInvestments(BaseModel):
    results: Optional[List[Optional["QueryInvestmentsClustersInvestmentsResults"]]]
    clusters: Optional["QueryInvestmentsClustersInvestmentsClusters"]


class QueryInvestmentsClustersInvestmentsResults(BaseModel):
    id: str
    name: str
    creation_date: Any = Field(alias="creationDate")
    modified_date: Optional[Any] = Field(alias="modifiedDate")
    relevance: Optional[float]
    owner: "QueryInvestmentsClustersInvestmentsResultsOwner"
    state: EntityState
    alternate_names: Optional[List[Optional[str]]] = Field(alias="alternateNames")
    uri: Optional[Any]
    description: Optional[str]
    identifier: Optional[str]
    thing: Optional[str]
    feeds: Optional[List[Optional["QueryInvestmentsClustersInvestmentsResultsFeeds"]]]
    links: Optional[List[Optional["QueryInvestmentsClustersInvestmentsResultsLinks"]]]
    workflow: Optional["QueryInvestmentsClustersInvestmentsResultsWorkflow"]
    location: Optional["QueryInvestmentsClustersInvestmentsResultsLocation"]
    h_3: Optional["QueryInvestmentsClustersInvestmentsResultsH3"] = Field(alias="h3")
    amount: Optional[Any]
    amount_currency: Optional[str] = Field(alias="amountCurrency")
    status: Optional[str]
    stage: Optional[str]
    investment_date: Optional[Any] = Field(alias="investmentDate")
    round_size: Optional[Any] = Field(alias="roundSize")
    round_size_currency: Optional[str] = Field(alias="roundSizeCurrency")
    post_valuation: Optional[Any] = Field(alias="postValuation")
    post_valuation_currency: Optional[str] = Field(alias="postValuationCurrency")
    shares_owned: Optional[Any] = Field(alias="sharesOwned")
    vehicle: Optional[str]
    entry_price_per_share: Optional[Any] = Field(alias="entryPricePerShare")
    current_price_per_share: Optional[Any] = Field(alias="currentPricePerShare")
    discount_percent: Optional[Any] = Field(alias="discountPercent")
    pro_rata_rights: Optional[bool] = Field(alias="proRataRights")
    investor: Optional["QueryInvestmentsClustersInvestmentsResultsInvestor"]
    organization: Optional["QueryInvestmentsClustersInvestmentsResultsOrganization"]


class QueryInvestmentsClustersInvestmentsResultsOwner(BaseModel):
    id: str


class QueryInvestmentsClustersInvestmentsResultsFeeds(BaseModel):
    id: str
    name: str


class QueryInvestmentsClustersInvestmentsResultsLinks(BaseModel):
    uri: Optional[Any]
    link_type: Optional[LinkTypes] = Field(alias="linkType")
    excerpts: Optional[str]


class QueryInvestmentsClustersInvestmentsResultsWorkflow(BaseModel):
    id: str
    name: str


class QueryInvestmentsClustersInvestmentsResultsLocation(BaseModel):
    latitude: Optional[float]
    longitude: Optional[float]


class QueryInvestmentsClustersInvestmentsResultsH3(BaseModel):
    h_3_r_0: Optional[str] = Field(alias="h3r0")
    h_3_r_1: Optional[str] = Field(alias="h3r1")
    h_3_r_2: Optional[str] = Field(alias="h3r2")
    h_3_r_3: Optional[str] = Field(alias="h3r3")
    h_3_r_4: Optional[str] = Field(alias="h3r4")
    h_3_r_5: Optional[str] = Field(alias="h3r5")
    h_3_r_6: Optional[str] = Field(alias="h3r6")
    h_3_r_7: Optional[str] = Field(alias="h3r7")
    h_3_r_8: Optional[str] = Field(alias="h3r8")
    h_3_r_9: Optional[str] = Field(alias="h3r9")
    h_3_r_10: Optional[str] = Field(alias="h3r10")
    h_3_r_11: Optional[str] = Field(alias="h3r11")
    h_3_r_12: Optional[str] = Field(alias="h3r12")
    h_3_r_13: Optional[str] = Field(alias="h3r13")
    h_3_r_14: Optional[str] = Field(alias="h3r14")
    h_3_r_15: Optional[str] = Field(alias="h3r15")


class QueryInvestmentsClustersInvestmentsResultsInvestor(BaseModel):
    id: str
    name: str


class QueryInvestmentsClustersInvestmentsResultsOrganization(BaseModel):
    id: str
    name: str


class QueryInvestmentsClustersInvestmentsClusters(BaseModel):
    clusters: Optional[List["QueryInvestmentsClustersInvestmentsClustersClusters"]]


class QueryInvestmentsClustersInvestmentsClustersClusters(BaseModel):
    entities: List["QueryInvestmentsClustersInvestmentsClustersClustersEntities"]
    similarity: Optional[float]


class QueryInvestmentsClustersInvestmentsClustersClustersEntities(BaseModel):
    id: str
    name: Optional[str]


QueryInvestmentsClusters.model_rebuild()
QueryInvestmentsClustersInvestments.model_rebuild()
QueryInvestmentsClustersInvestmentsResults.model_rebuild()
QueryInvestmentsClustersInvestmentsClusters.model_rebuild()
QueryInvestmentsClustersInvestmentsClustersClusters.model_rebuild()
