from __future__ import annotations from typing import Literal from uuid import UUID from pydantic import BaseModel, Field from .operations import VectorSelectionBBox class BathymetryProfileAcquireRequest(BaseModel): bbox: VectorSelectionBBox area_id: UUID | None = None force_refresh: bool = False class BathymetrySourceRead(BaseModel): key: str display_name: str owner: str authority_level: Literal["authoritative", "contextual"] geographic_coverage: str data_kind: str query_modes: list[str] vertical_reference: str horizontal_crs: str native_resolution: str | None = None integration_status: Literal["operational", "available_not_integrated", "catalog_only"] acquisition_supported: bool configured: bool service_url: str | None = None catalog_url: str attribution: str license_note: str limitation_message: str class BathymetryProfileAcquisitionResult(BaseModel): output_dataset_id: UUID reused: bool provider: str profile_count: int = Field(ge=0) document_count: int = Field(ge=0) structured_depth_count: int = Field(ge=0) structured_width_count: int = Field(ge=0) watercourse_count: int = Field(ge=0) bbox_epsg4326: list[float] clipped_to_area_id: UUID | None = None measurement_date_min: str | None = None measurement_date_max: str | None = None attribution: str limitation_message: str