// Path: coronata/coronata-interface/src/main/java/com/github/awvalenti/bauhinia/coronata/observers/CoronataButtonObserver.java
// public interface CoronataButtonObserver {
// 
// 	void buttonPressed(CoronataWiiRemoteButton button);
// 
// 	void buttonReleased(CoronataWiiRemoteButton button);
// 
// }
// 
// Path: coronata/coronata-interface/src/main/java/com/github/awvalenti/bauhinia/coronata/observers/CoronataLifecycleEventsObserver.java
// public interface CoronataLifecycleEventsObserver extends
// 		CoronataDisconnectionObserver,
// 		CoronataErrorObserver {
// 
// 	void coronataStarted();
// 
// 	void searchStarted(boolean isWindows);
// 
// 	void bluetoothDeviceFound(String btAddress, String deviceClass);
// 
// 	void identificationRejected(String btAddress);
// 
// 	void identifiedAsNonWiiRemote(String btAddress);
// 
// 	void identifiedAsWiiRemote(String btAddressOrNull);
// 
// 	void connectionRejected(String btAddress);
// 
// 	void connected(CoronataWiiRemote wiiRemote);
// 
// 	void searchFinished();
// 
// 	@Override
// 	void disconnected();
// 
// 	@Override
// 	void errorOccurred(CoronataException e);
// 
// }


import com.github.awvalenti.bauhinia.coronata.observers.CoronataButtonObserver;
import com.github.awvalenti.bauhinia.coronata.observers.CoronataLifecycleEventsObserver;
package com.github.awvalenti.bauhinia.coronata;


class LinuxConnectionStateMachine {

	private final CoronataLifecycleEventsObserver leObserver;
	private final int timeoutInSeconds;

// Path: coronata/coronata-interface/src/main/java/com/github/awvalenti/bauhinia/coronata/observers/CoronataButtonObserver.java
// public interface CoronataButtonObserver {
// 
// 	void buttonPressed(CoronataWiiRemoteButton button);
// 
// 	void buttonReleased(CoronataWiiRemoteButton button);
// 
// }
// 
// Path: coronata/coronata-interface/src/main/java/com/github/awvalenti/bauhinia/coronata/observers/CoronataLifecycleEventsObserver.java
// public interface CoronataLifecycleEventsObserver extends
// 		CoronataDisconnectionObserver,
// 		CoronataErrorObserver {
// 
// 	void coronataStarted();
// 
// 	void searchStarted(boolean isWindows);
// 
// 	void bluetoothDeviceFound(String btAddress, String deviceClass);
// 
// 	void identificationRejected(String btAddress);
// 
// 	void identifiedAsNonWiiRemote(String btAddress);
// 
// 	void identifiedAsWiiRemote(String btAddressOrNull);
// 
// 	void connectionRejected(String btAddress);
// 
// 	void connected(CoronataWiiRemote wiiRemote);
// 
// 	void searchFinished();
// 
// 	@Override
// 	void disconnected();
// 
// 	@Override
// 	void errorOccurred(CoronataException e);
// 
// }


// Path: coronata/coronata-linux/coronata-linux-state-machine/src/main/java/com/github/awvalenti/bauhinia/coronata/LinuxConnectionStateMachine.java
import com.github.awvalenti.bauhinia.coronata.observers.CoronataButtonObserver;
import com.github.awvalenti.bauhinia.coronata.observers.CoronataLifecycleEventsObserver;

package com.github.awvalenti.bauhinia.coronata;


class LinuxConnectionStateMachine {

	private final CoronataLifecycleEventsObserver leObserver;
	private final int timeoutInSeconds;

	private final StateFactory states;