// IState.swift // The interface for implementing states in a StateMachine // Ported from Android implementation import Foundation /// Protocol defining the interface for implementing states in a state machine public protocol IState { /// Called when a state is entered /// - Parameters: /// - from: State we are coming from /// - params: Optional parameters for state transition func enter(from: IState?, params: Any?) /// Called when a state is exited /// - Parameter to: State we are transitioning to func exit(to: IState?) /// Process a message sent to the state machine /// - Parameter msg: The message to process /// - Returns: HANDLED if processing has completed or NOT_HANDLED if the message wasn't processed func processMessage(_ msg: Message) -> Bool /// Name of State for debugging purposes /// - Returns: name of state var name: String { get } }