# -*- coding: utf-8 -*- """Market data-related schemas.""" from pydantic import BaseModel class InsiderTrade(BaseModel): ticker: str issuer: str | None = None name: str | None = None title: str | None = None is_board_director: bool | None = None transaction_date: str | None = None transaction_shares: float | None = None transaction_price_per_share: float | None = None transaction_value: float | None = None shares_owned_before_transaction: float | None = None shares_owned_after_transaction: float | None = None security_title: str | None = None filing_date: str class InsiderTradeResponse(BaseModel): insider_trades: list[InsiderTrade] class CompanyNews(BaseModel): category: str | None = None ticker: str title: str related: str | None = None source: str date: str | None = None url: str summary: str | None = None class CompanyNewsResponse(BaseModel): news: list[CompanyNews] class CompanyFacts(BaseModel): ticker: str name: str cik: str | None = None industry: str | None = None sector: str | None = None category: str | None = None exchange: str | None = None is_active: bool | None = None listing_date: str | None = None location: str | None = None market_cap: float | None = None number_of_employees: int | None = None sec_filings_url: str | None = None sic_code: str | None = None sic_industry: str | None = None sic_sector: str | None = None website_url: str | None = None weighted_average_shares: int | None = None class CompanyFactsResponse(BaseModel): company_facts: CompanyFacts