# Copyright 2025 Artezaru
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from .__version__ import __version__

__all__ = [
    "__version__",
]

from .extrinsic_objects.no_extrinsic import NoExtrinsic
from .extrinsic_objects.cv2_extrinsic import Cv2Extrinsic
from .extrinsic_objects.orthographic_extrinsic import OrthographicExtrinsic

__all__.extend(["NoExtrinsic", "Cv2Extrinsic", "OrthographicExtrinsic"])

from .intrinsic_objects.no_intrinsic import NoIntrinsic
from .intrinsic_objects.cv2_intrinsic import Cv2Intrinsic
from .intrinsic_objects.skew_intrinsic import SkewIntrinsic

__all__.extend(["NoIntrinsic", "Cv2Intrinsic", "SkewIntrinsic"])

from .distortion_objects.no_distortion import NoDistortion
from .distortion_objects.cv2_distortion import Cv2Distortion
from .distortion_objects.zernike_distortion import ZernikeDistortion
from .distortion_objects.fisheye_distortion import FisheyeDistortion

__all__.extend(
    ["NoDistortion", "Cv2Distortion", "ZernikeDistortion", "FisheyeDistortion"]
)

from .distorting_image import undistort_image, distort_image
from .distorting_points import undistort_points, distort_points
from .project_points import project_points
from .compute_rays import compute_rays
from .optical_flow import compute_optical_flow, display_optical_flow

__all__.extend(
    [
        "undistort_image",
        "undistort_points",
        "distort_image",
        "distort_points",
        "project_points",
        "compute_rays",
        "compute_optical_flow",
        "display_optical_flow",
    ]
)

from .get_lena_image import get_lena_image

__all__.extend(["get_lena_image"])

from .read_transform import read_transform
from .write_transform import write_transform

__all__.extend(["read_transform", "write_transform"])

from .optimize.optimize_transforms import (
    optimize_parameters_gn,
    optimize_parameters_trf,
    optimize_chains_gn,
    optimize_chains_trf,
    optimize_camera_gn,
    optimize_camera_trf,
)
from .optimize.optimize_input_points import optimize_input_points

__all__.extend(
    [
        "optimize_parameters_gn",
        "optimize_parameters_trf",
        "optimize_chains_gn",
        "optimize_chains_trf",
        "optimize_camera_gn",
        "optimize_camera_trf",
        "optimize_input_points",
    ]
)
