// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/GroupItemStateChangedEvent.java
// public class GroupItemStateChangedEvent extends ItemStateChangedEvent {
// 
// 	public GroupItemStateChangedEvent(Item item, State newState, State oldState) {
// 		super(item, newState, oldState);
// 	}
// 	
//     @Override
//     public String toString() {
//         return String.format("%s group state changed from %s to %s", item.getName(), oldState, newState);
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemAddedEvent.java
// public class ItemAddedEvent implements ItemEvent {
//     protected final Item item;
// 
// 	public ItemAddedEvent(Item item) {
// 		super();
// 		this.item = item;
// 	}
// 
// 	public Item getItem() {
// 		return item;
// 	}
// 	
// 	public String getName() {
// 		return item.getName();
// 	}
// 	
//     @Override
//     public String toString() {
//         return "Item '" + item.getName() + "' has been added.";
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemCommandEvent.java
// public class ItemCommandEvent extends ItemCommandBase implements ItemEvent {
// 
// 	public ItemCommandEvent(Item item, Command command) {
// 		super(item, command);
// 	}
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemRemovedEvent.java
// public class ItemRemovedEvent implements ItemEvent {
//     protected final String itemName;
// 
// 	public ItemRemovedEvent(String itemName) {
// 		super();
// 		this.itemName = itemName;
// 	}
// 	
// 	public String getName() {
// 		return itemName;
// 	}
// 	
//     @Override
//     public String toString() {
//         return "Item '" + itemName + "' has been removed.";
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemStateChangedEvent.java
// public class ItemStateChangedEvent extends ItemStateChangedBase implements ItemEvent {
// 
//     public ItemStateChangedEvent(Item item, State newState, State oldState) {
//         super(item, newState, oldState);
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemStateEvent.java
// public class ItemStateEvent implements ItemEvent {
//     protected final Item item;
//     protected final State itemState;
// 
// 	public ItemStateEvent(Item item, State itemState) {
// 		super();
// 		this.item = item;
// 		this.itemState = itemState;
// 	}
// 
// 	public Item getItem() {
// 		return item;
// 	}
// 	
//     public String getName() {
//         return this.item.getName();
//     }
// 
// 	public State getItemState() {
// 		return itemState;
// 	}
// 	
//     @Override
//     public String toString() {
//         return String.format("%s updated to %s", item.getName(), itemState);
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemUpdatedEvent.java
// public class ItemUpdatedEvent {
//     protected final Item newItem;
//     protected final String oldItemName;
// 	
// 	public ItemUpdatedEvent(Item newItem, String oldItemName) {
// 		super();
// 		this.newItem = newItem;
// 		this.oldItemName = oldItemName;
// 	}
// 
// 	public Item getNewItem() {
// 		return newItem;
// 	}
// 
// 	public String getOldItemName() {
// 		return oldItemName;
// 	}
// 	
//     @Override
//     public String toString() {
//         return "Item '" + oldItemName + "' has been updated.";
//     }
// }


import java.util.Collection;
import org.eclipse.smarthome.core.items.Item;
import com.incquerylabs.smarthome.eventbus.api.events.GroupItemStateChangedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemAddedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemCommandEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemRemovedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemStateChangedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemStateEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemUpdatedEvent;
package com.incquerylabs.smarthome.eventbus.api;




public interface IEventSubscriber {
	public void stateUpdated(ItemStateEvent event);
	
    public void stateChanged(ItemStateChangedEvent event);
    
    public void groupStateChanged(GroupItemStateChangedEvent event);

    public void commandReceived(ItemCommandEvent event);

    public void initItems(Collection<Item> items);

    public void itemAdded(ItemAddedEvent event);

    public void itemRemoved(ItemRemovedEvent event);

    public void itemUpdated(ItemUpdatedEvent event);

// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/GroupItemStateChangedEvent.java
// public class GroupItemStateChangedEvent extends ItemStateChangedEvent {
// 
// 	public GroupItemStateChangedEvent(Item item, State newState, State oldState) {
// 		super(item, newState, oldState);
// 	}
// 	
//     @Override
//     public String toString() {
//         return String.format("%s group state changed from %s to %s", item.getName(), oldState, newState);
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemAddedEvent.java
// public class ItemAddedEvent implements ItemEvent {
//     protected final Item item;
// 
// 	public ItemAddedEvent(Item item) {
// 		super();
// 		this.item = item;
// 	}
// 
// 	public Item getItem() {
// 		return item;
// 	}
// 	
// 	public String getName() {
// 		return item.getName();
// 	}
// 	
//     @Override
//     public String toString() {
//         return "Item '" + item.getName() + "' has been added.";
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemCommandEvent.java
// public class ItemCommandEvent extends ItemCommandBase implements ItemEvent {
// 
// 	public ItemCommandEvent(Item item, Command command) {
// 		super(item, command);
// 	}
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemRemovedEvent.java
// public class ItemRemovedEvent implements ItemEvent {
//     protected final String itemName;
// 
// 	public ItemRemovedEvent(String itemName) {
// 		super();
// 		this.itemName = itemName;
// 	}
// 	
// 	public String getName() {
// 		return itemName;
// 	}
// 	
//     @Override
//     public String toString() {
//         return "Item '" + itemName + "' has been removed.";
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemStateChangedEvent.java
// public class ItemStateChangedEvent extends ItemStateChangedBase implements ItemEvent {
// 
//     public ItemStateChangedEvent(Item item, State newState, State oldState) {
//         super(item, newState, oldState);
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemStateEvent.java
// public class ItemStateEvent implements ItemEvent {
//     protected final Item item;
//     protected final State itemState;
// 
// 	public ItemStateEvent(Item item, State itemState) {
// 		super();
// 		this.item = item;
// 		this.itemState = itemState;
// 	}
// 
// 	public Item getItem() {
// 		return item;
// 	}
// 	
//     public String getName() {
//         return this.item.getName();
//     }
// 
// 	public State getItemState() {
// 		return itemState;
// 	}
// 	
//     @Override
//     public String toString() {
//         return String.format("%s updated to %s", item.getName(), itemState);
//     }
// }
// 
// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/events/ItemUpdatedEvent.java
// public class ItemUpdatedEvent {
//     protected final Item newItem;
//     protected final String oldItemName;
// 	
// 	public ItemUpdatedEvent(Item newItem, String oldItemName) {
// 		super();
// 		this.newItem = newItem;
// 		this.oldItemName = oldItemName;
// 	}
// 
// 	public Item getNewItem() {
// 		return newItem;
// 	}
// 
// 	public String getOldItemName() {
// 		return oldItemName;
// 	}
// 	
//     @Override
//     public String toString() {
//         return "Item '" + oldItemName + "' has been updated.";
//     }
// }


// Path: runtime/com.incquerylabs.smarthome.eventbus.api/src/main/java/com/incquerylabs/smarthome/eventbus/api/IEventSubscriber.java
import java.util.Collection;
import org.eclipse.smarthome.core.items.Item;
import com.incquerylabs.smarthome.eventbus.api.events.GroupItemStateChangedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemAddedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemCommandEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemRemovedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemStateChangedEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemStateEvent;
import com.incquerylabs.smarthome.eventbus.api.events.ItemUpdatedEvent;

package com.incquerylabs.smarthome.eventbus.api;




public interface IEventSubscriber {
	public void stateUpdated(ItemStateEvent event);
	
    public void stateChanged(ItemStateChangedEvent event);
    
    public void groupStateChanged(GroupItemStateChangedEvent event);

    public void commandReceived(ItemCommandEvent event);

    public void initItems(Collection<Item> items);

    public void itemAdded(ItemAddedEvent event);

    public void itemRemoved(ItemRemovedEvent event);

    public void itemUpdated(ItemUpdatedEvent event);

    public String getSubscriberName();