from __future__ import annotations

from aiogram.fsm.state import State, StatesGroup


class BookingState(StatesGroup):
    name = State()
    phone = State()
    date = State()
    time = State()
    guests = State()
    comment = State()
    confirm = State()


class SupportState(StatesGroup):
    text = State()


class DeliveryState(StatesGroup):
    name = State()
    phone = State()
    address = State()
    order_text = State()
    comment = State()
    confirm = State()


def group_states(*groups: type[StatesGroup]) -> tuple[State, ...]:
    collected: list[State] = []
    for group in groups:
        all_states = getattr(group, "__all_states__", None)
        if all_states:
            collected.extend(all_states)
            continue
        for name in dir(group):
            value = getattr(group, name)
            if isinstance(value, State):
                collected.append(value)
    return tuple(collected)
