I'll try to keep this as up to date as possible. If you don't know what this is then you shouldn't be here. Just kidding, but seriously what are you doing here?

public interface XPluginHelper
	{
		/// <summary>Send a string command</summary>
		/// command to send, see SDK documentation
		string SendCommand(string command);

		/// <summary>Get the XEPG object, to access EPG information. Returns null if not found</summary>
		/// name of epg to grab
		XEPG GetXEPG(string name);

		/// <summary>Get the XEPG object, to access EPG information. Returns null if not found</summary>
		XEPG GetXEPG();

		/// <summary>See SDK information, used when manipulating images</summary>
		void GrabPaintKey();

		/// <summary>See SDK information, used when manipulating images</summary>
		void ReleasePaintKey();

		/// <summary>Check if connected to the net, returns true if connected</summary>
		bool ConnectedToNet();

		/// <summary>Causes the current screen to be redrawn.</summary>
		void Invalidate();

		/// <summary>Get a Button object, returns null if not found</summary>
		/// id of button to get
		Button GetButton(string id);

		/// <summary>Get a Button object, returns null if not found</summary>
		/// text of button
		Button GetButtonByText(string text);

		void SetXlobbyForeground();
		void SetXlobbyActive();
		void SetXlobbyFocus();


	}

	public interface Button
	{
		int GetX();
		int GetY();
		int GetWidth();
		int GetHeight();

		/// <summary>Set the state of a button to UP</summary>
		void ToggleUp();

		/// <summary>Set the state of a button to Down</summary>
		void ToggleDown();

		/// <summary>Set the state of a button to Enter</summary>
		void ToggleEnter();
	}
	public interface XEPG
	{
		/// <summary>Get name of XEPG object</summary>
		string GetName();

		/// <summary>Get the currently selected Channel object, returns null if none selected</summary>
		Channel GetCurrentChannel();

		/// <summary>Get the currently selected Program object, returns null if none selected</summary>
		Program GetCurrentProgram();

		/// <summary>Get the next Program after the selected one, returns null if none</summary>
		Program GetNextProgram();

		/// <summary>Gets an ArrayList of Channel objects for the XEPG</summary>
		ArrayList GetChannels();

		/// <summary>Set the channel of the XEPG</summary>
		/// id of channel
		void SetChannel(string id);
	}

	public interface Channel
	{
		/// <summary>Get channel name</summary>
		string GetName();

		/// <summary>Get channel id</summary>
		string GetID();

		/// <summary>Get channel url</summary>
		string GetUrl();

		/// <summary>Gets an ArrayList of Program objects for this channel</summary>
		ArrayList GetPrograms();
	}

	public interface Program
	{
		/// <summary>Get program description</summary>
		string GetDescription();

		/// <summary>Get channel name</summary>
		string GetChannelName();

		/// <summary>Get program rating</summary>
		string GetRating();

		/// <summary>Get program title</summary>
		string GetTitle();

		/// <summary>Get program category</summary>
		string GetCategory();

		/// <summary>Get total minutes</summary>
		int GetTotalMinutes();

		/// <summary>Get program start time</summary>
		DateTime GetStartTime();

		/// <summary>Get program stop time</summary>
		DateTime GetStopTime();
	}