# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501, F401

import builtins
import typing

import numpy
import numpy.typing

class CatTable:
    r"""
    A categorical tabular dataset.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        The labels of the dataset.

        Returns
        -------
        list[str]
            A list of strings containing the labels of the dataset.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the dataset.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A dictionary mapping each label to a tuple of its possible states.
        """

    def values(self) -> numpy.typing.NDArray[numpy.uint8]:
        r"""
        The values of the dataset.

        Returns
        -------
        numpy.ndarray
            A 2D NumPy array containing the values of the dataset.
        """

    def sample_size(self) -> builtins.float:
        r"""
        The sample size.

        Returns
        -------
        float
            The number of samples in the dataset.
            If the dataset is weighted, this returns the sum of the weights.
        """

    @classmethod
    def from_pandas(cls, df: typing.Any) -> CatTable:
        r"""
        Constructs a new categorical tabular dataset from a Pandas DataFrame.

        Parameters
        ----------

        df: pandas.DataFrame
            A Pandas DataFrame containing only categorical columns.

        Returns
        -------
        CatTable
            A new categorical tabular dataset instance.
        """

    def to_pandas(self) -> typing.Any:
        r"""
        Converts the dataset to a Pandas DataFrame.

        Returns
        -------
        pandas.DataFrame
            A Pandas DataFrame.
        """

class CatTrj:
    r"""
    A categorical trajectory.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        Returns the labels of the categorical trajectory.

        Returns
        -------
        list[str]
            A reference to the labels of the categorical trajectory.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the categorical trajectory.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A reference to the states of the categorical trajectory.
        """

    def values(self) -> numpy.typing.NDArray[numpy.uint8]:
        r"""
        Returns the values of the trajectory.

        Returns
        -------
        numpy.ndarray
            A reference to the values of the trajectory.
        """

    def times(self) -> numpy.typing.NDArray[numpy.float64]:
        r"""
        Returns the times of the trajectory.

        Returns
        -------
        numpy.ndarray
            A reference to the times of the trajectory.
        """

    @classmethod
    def from_pandas(cls, df: typing.Any) -> CatTrj:
        r"""
        Constructs a new categorical trajectory from a Pandas DataFrame.

        Parameters
        ----------
        df: pandas.DataFrame
            A Pandas DataFrame containing the trajectory data.
            The data frame must contain a column named "time" that represents the time of each event.
            Every other column in the data frame must represent a categorical variable.

        Returns
        -------
        CatTrj
            A new categorical trajectory instance.
        """

    def to_pandas(self) -> typing.Any:
        r"""
        Converts the categorical trajectory to a Pandas DataFrame.

        Returns
        -------
        pandas.DataFrame
            A Pandas DataFrame representation of the categorical trajectory.
        """

class CatTrjEv:
    r"""
    A categorical trajectory evidence.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        Returns the labels of the categorical trajectory.

        Returns
        -------
        list[str]
            A reference to the labels of the categorical trajectory.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the categorical trajectory.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A reference to the states of the categorical trajectory.
        """

    @classmethod
    def from_pandas(
        cls, df: typing.Any, with_states: typing.Optional[dict] = None
    ) -> CatTrjEv:
        r"""
        Constructs a new categorical trajectory evidence from a Pandas DataFrame.

        Parameters
        ----------
        df: pandas.DataFrame
            A Pandas DataFrame containing the trajectory evidence data.
            The data frame must contain the following columns:

                - `event`: The event type (str),
                - `state`: The state of the event (str),
                - `start_time`: The start time of the event (float64),
                - `end_time`: The end time of the event (float64).

        with_states: dict[str, Iterable[str]] | None
            An optional dictionary mapping event labels to their possible states.
            If not provided, the states will be inferred from the data frame.

        Returns
        -------
        CatTrjEv
            A new categorical trajectory evidence instance.
        """

class CatTrjs:
    r"""
    A collection of categorical trajectories.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        Returns the labels of the categorical trajectory.

        Returns
        -------
        list[str]
            A reference to the labels of the categorical trajectory.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the categorical trajectory.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A reference to the states of the categorical trajectory.
        """

    def values(self) -> builtins.list[CatTrj]:
        r"""
        Return the trajectories.

        Returns
        -------
        list[CatTrj]
            A list of categorical trajectories.
        """

    @classmethod
    def from_pandas(cls, dfs: typing.Any) -> CatTrjs:
        r"""
        Constructs a new categorical trajectories from an iterable of Pandas DataFrames.

        Parameters
        ----------
        dfs: Iterable[pandas.DataFrame]
            An iterable of Pandas DataFrames containing the trajectory data.
            Each data frame must contain a column named "time" that represents the time of each event.
            Every other column in the data frame must represent a categorical variable.

        Returns
        -------
        CatTrjs
            A new categorical trajectories instance.
        """

    def to_pandas(self) -> builtins.list[typing.Any]:
        r"""
        Converts the categorical trajectories to a list of Pandas DataFrames.

        Returns
        -------
        list[pandas.DataFrame]
            A list of Pandas DataFrame representations of the categorical trajectories.
        """

class CatTrjsEv:
    r"""
    A collection of categorical trajectory evidences.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        Returns the labels of the categorical trajectory.

        Returns
        -------
        list[str]
            A reference to the labels of the categorical trajectory.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the categorical trajectory.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A reference to the states of the categorical trajectory.
        """

    @classmethod
    def from_pandas(
        cls, dfs: typing.Any, with_states: typing.Optional[dict] = None
    ) -> CatTrjsEv:
        r"""
        Constructs a new categorical trajectory evidence from an iterable of Pandas DataFrames.

        Parameters
        ----------
        dfs: Iterable[pandas.DataFrame]
            An iterable of Pandas DataFrames containing the trajectory evidence data.
            The data frames must contain the following columns:

                - `event`: The event type (str),
                - `state`: The state of the event (str),
                - `start_time`: The start time of the event (float64),
                - `end_time`: The end time of the event (float64).

        with_states: dict[str, Iterable[str]] | None
            An optional dictionary mapping event labels to their possible states.
            If not provided, the states will be inferred from the data frame.

        Returns
        -------
        CatTrjsEv
            A new categorical trajectory evidence instance.
        """

class CatWtdTrj:
    r"""
    A categorical trajectory with a weight.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        Returns the labels of the categorical trajectory.

        Returns
        -------
        list[str]
            A reference to the labels of the categorical trajectory.
        """

    def trajectory(self) -> CatTrj:
        r"""
        Returns the trajectory.

        Returns
        -------
        CatTrj
            A reference to the trajectory.
        """

    def weight(self) -> builtins.float:
        r"""
        Returns the weight of the trajectory.

        Returns
        -------
        float
            The weight of the trajectory.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the categorical trajectory.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A reference to the states of the categorical trajectory.
        """

    def times(self) -> numpy.typing.NDArray[numpy.float64]:
        r"""
        Returns the times of the trajectory.

        Returns
        -------
        numpy.ndarray
            A reference to the times of the trajectory.
        """

class CatWtdTrjs:
    r"""
    A collection of categorical trajectories with weights.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        Returns the labels of the categorical trajectory.

        Returns
        -------
        list[str]
            A reference to the labels of the categorical trajectory.
        """

    def states(self) -> builtins.dict[builtins.str, tuple]:
        r"""
        Returns the states of the categorical trajectory.

        Returns
        -------
        dict[str, tuple[str, ...]]
            A reference to the states of the categorical trajectory.
        """

    def values(self) -> builtins.list[CatWtdTrj]:
        r"""
        Return the trajectories.

        Returns
        -------
        list[CatWtdTrj]
            A vector of categorical trajectories.
        """

class GaussTable:
    r"""
    A Gaussian tabular dataset.
    """

    def labels(self) -> builtins.list[builtins.str]:
        r"""
        The labels of the dataset.

        Returns
        -------
        list[str]
            A list of strings containing the labels of the dataset.
        """

    def values(self) -> numpy.typing.NDArray[numpy.float64]:
        r"""
        The values of the dataset.

        Returns
        -------
        numpy.ndarray
            A 2D NumPy array containing the values of the dataset.
        """

    def sample_size(self) -> builtins.float:
        r"""
        The sample size.

        Returns
        -------
        float
            The number of samples in the dataset.
            If the dataset is weighted, this returns the sum of the weights.
        """

    @classmethod
    def from_pandas(cls, df: typing.Any) -> GaussTable:
        r"""
        Constructs a new Gaussian tabular dataset from a Pandas DataFrame.

        Parameters
        ----------
        df: pandas.DataFrame
            A Pandas DataFrame containing only float64 columns.

        Returns
        -------
        GaussTable
            A new Gaussian tabular dataset instance.
        """

    def to_pandas(self) -> typing.Any:
        r"""
        Converts the dataset to a Pandas DataFrame.

        Returns
        -------
        pandas.DataFrame
            A Pandas DataFrame.
        """
