# Copyright 2026 Q-CTRL. All rights reserved.
#
# Licensed under the Q-CTRL Terms of service (the "License"). Unauthorized
# copying or use of this file, via any medium, is strictly prohibited.
# Proprietary and confidential. You may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
#    https://q-ctrl.com/terms
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS. See the
# License for the specific language.
"""
Input types shared across Fire Opal functions.
"""
from typing import Union

from qctrlcommons.pauli_operations import PauliOperator

# Supported types for observables used in the Fire Opal estimation functions.
# Note: list[tuple[str, float]] is deprecated and will be removed in
# future versions.
ObservableType = Union[
    PauliOperator,
    list[PauliOperator],
    str,
    dict[str, float],
    list[tuple[str, float]],
    list[str],
]


__all__ = ["PauliOperator", "ObservableType"]
