using System;
using Toolbox.Docking.Api.Control;
using Toolbox.Docking.Api.ExtraActions;

namespace Toolbox.Docking.Api.Objects
{
    /// <summary>
    /// Object extra action definition.
    /// </summary>
    public interface ITbObjectExtraAction : ITbObject
    {
        /// <summary>
        /// Executes a Toolbox object's extra action. As provided by the <see cref="ITbObjectFactoryExtraAction.GetExtraActions"/> method. 
        /// </summary>
        /// <param name="action">The ID of the action.</param>
        /// <param name="command">Command for the action.</param>
        /// <param name="payload">String encoded payload for the action.</param>
        /// <param name="target">Target chemical</param>
        /// <returns>
        /// Returns the actions's <see cref="TbExtraActionResult"/> 
        /// </returns>
        TbExtraActionResult ExecuteExtraAction(Guid action, int command, string payload, ITbBasket target);
    }
}