import numpy as np
from pydantic import BaseModel, ConfigDict
from ..core.gps_point import GPSPoint
from ..chunks.sim3_transform import Sim3Transform


class AlignmentResult(BaseModel):
    model_config = ConfigDict(arbitrary_types_allowed=True)

    matched: bool
    homography: np.ndarray
    gps_center: GPSPoint
    confidence: float
    inlier_count: int
    total_correspondences: int
    reprojection_error: float = 0.0


class ChunkAlignmentResult(BaseModel):
    model_config = ConfigDict(arbitrary_types_allowed=True)

    matched: bool
    chunk_id: str
    chunk_center_gps: GPSPoint
    rotation_angle: float
    confidence: float
    inlier_count: int
    transform: Sim3Transform
    reprojection_error: float = 0.0

