from __future__ import annotations

from collections.abc import Sequence

from bayesline.api._src.registry import Settings, SettingsMenu


class UploadSettingsMenu(SettingsMenu, frozen=True, extra="forbid"):
    """Menu for upload settings."""

    pass


class UploadSettings(Settings[UploadSettingsMenu]):
    """Settings for uploading data."""

    data_type: str

    def get_references(self) -> Sequence[str | int]:
        """
        Get references for this settings object.

        Returns
        -------
        Sequence[str | int]
            A sequence of references (strings or integers) for this settings object.
        """
        return []  # uploads never have references

    @property
    def menu_type(self) -> type[UploadSettingsMenu]:
        """
        Get the menu type for this settings object.

        Returns
        -------
        type[UploadSettingsMenu]
            The menu type for this settings object.
        """
        return UploadSettingsMenu
