from abc import ABC, abstractmethod

from .am_causal_state import CausalState
from .am_transition import Transition
from .am_symbol import Symbol

class Machine(ABC) :
	
	@property
	@abstractmethod
	def get_states(self) -> list[CausalState]: ...

	@property
	@abstractmethod
	def get_transitions(self) -> list[Transition]: ...

	@property
	@abstractmethod
	def get_alphabet(self) -> list[Symbol]: ...
