// Path: src/main/java/com/gikk/twirk/types/emote/Emote.java
// public interface Emote {
// 	/** Fetches the emotes ID as String. This became necessary after Twitch start
// 	 * including other characters than numbers in emote IDs
// 	 *
// 	 * @return The emotes ID
// 	 */
// 	String getEmoteIDString();
// 	
// 	/** A list of pairs on indices. Each pair is a BEGIN-END pair of a emote occurrence in the message.<br><br>
// 	 * 
// 	 * For example, if the message is: {@code Kappa PogChamp Kappa}<br> the list for emote 'Kappa' will include these pairs:<ul>
// 	 * <li> (0,5)
// 	 * <li> (15,20)
// 	 * </ul>
// 	 * 
// 	 * @return The indices this emote takes up in the associated message
// 	 */
// 	LinkedList<EmoteIndices> getIndices();
// 	
// 	/** The emote's pattern. For example: 'Kappa'
// 	 * 
// 	 * @return The emote's pattern
// 	 */
// 	String getPattern();
// 	
// 	/**Emote images can be downloaded from Twitch's server, and come in three
// 	 * sizes. Use this method to get the address for the emote.
// 	 * 
// 	 * @param imageSize Emotes comes in three sizes. Specify which size you want
// 	 * @return The address for the emote's image
// 	 */
// 	String getEmoteImageUrl(EMOTE_SIZE imageSize);
// 	
// 	/**Class for representing the beginning and end of an emote occurrence within a message
// 	 * 
// 	 * @author Gikkman
// 	 */	
// 	class EmoteIndices{
// 		public final int beingIndex;
// 		public final int endIndex;
// 		
// 		public EmoteIndices(int begin, int end){
// 			this.beingIndex = begin;
// 			this.endIndex = end;
// 		}
// 		
// 		public String toString(){
// 			return "(" +beingIndex + "," + endIndex + ")";
// 		}
// 	}
// }


import com.gikk.twirk.types.emote.Emote;
import java.util.List;
package com.gikk.twirk.types;


/**Interface for chat messages that might contain emotes
 *
 * @author Gikkman
 */
public interface AbstractEmoteMessage extends AbstractType{

    /**Checks whether this message contains emotes or not
     *
     * @return {@code true} if the message contains emotes
     */
    public boolean hasEmotes();

	/**Fetches a list of all all emotes in this message. Each emote is encapsulated in a {@link Emote}.
	 * The list might be empty, if the message contained no emotes.
	 *
	 * @return List of emotes (might be empty)
	 */
// Path: src/main/java/com/gikk/twirk/types/emote/Emote.java
// public interface Emote {
// 	/** Fetches the emotes ID as String. This became necessary after Twitch start
// 	 * including other characters than numbers in emote IDs
// 	 *
// 	 * @return The emotes ID
// 	 */
// 	String getEmoteIDString();
// 	
// 	/** A list of pairs on indices. Each pair is a BEGIN-END pair of a emote occurrence in the message.<br><br>
// 	 * 
// 	 * For example, if the message is: {@code Kappa PogChamp Kappa}<br> the list for emote 'Kappa' will include these pairs:<ul>
// 	 * <li> (0,5)
// 	 * <li> (15,20)
// 	 * </ul>
// 	 * 
// 	 * @return The indices this emote takes up in the associated message
// 	 */
// 	LinkedList<EmoteIndices> getIndices();
// 	
// 	/** The emote's pattern. For example: 'Kappa'
// 	 * 
// 	 * @return The emote's pattern
// 	 */
// 	String getPattern();
// 	
// 	/**Emote images can be downloaded from Twitch's server, and come in three
// 	 * sizes. Use this method to get the address for the emote.
// 	 * 
// 	 * @param imageSize Emotes comes in three sizes. Specify which size you want
// 	 * @return The address for the emote's image
// 	 */
// 	String getEmoteImageUrl(EMOTE_SIZE imageSize);
// 	
// 	/**Class for representing the beginning and end of an emote occurrence within a message
// 	 * 
// 	 * @author Gikkman
// 	 */	
// 	class EmoteIndices{
// 		public final int beingIndex;
// 		public final int endIndex;
// 		
// 		public EmoteIndices(int begin, int end){
// 			this.beingIndex = begin;
// 			this.endIndex = end;
// 		}
// 		
// 		public String toString(){
// 			return "(" +beingIndex + "," + endIndex + ")";
// 		}
// 	}
// }


// Path: src/main/java/com/gikk/twirk/types/AbstractEmoteMessage.java
import com.gikk.twirk.types.emote.Emote;
import java.util.List;

package com.gikk.twirk.types;


/**Interface for chat messages that might contain emotes
 *
 * @author Gikkman
 */
public interface AbstractEmoteMessage extends AbstractType{

    /**Checks whether this message contains emotes or not
     *
     * @return {@code true} if the message contains emotes
     */
    public boolean hasEmotes();

	/**Fetches a list of all all emotes in this message. Each emote is encapsulated in a {@link Emote}.
	 * The list might be empty, if the message contained no emotes.
	 *
	 * @return List of emotes (might be empty)
	 */
	public List<Emote> getEmotes();