namespace AcDream.UI.Abstractions;
///
/// Publishes user-intent commands from panels to the systems that handle
/// them (WorldSession, ChatService, Inventory, ...). Panels never touch
/// those systems directly — they a record
/// and the bus dispatches.
///
///
/// D.2a scaffolding: is the default wire-up
/// — commands are accepted but dropped. Real routing lands alongside
/// chat and inventory (Sprint 2 of the UI plan) when we actually need
/// commands flowing server-ward.
///
///
public interface ICommandBus
{
///
/// Publish a command record. The bus routes by runtime type via
/// registered handlers. Never blocks; handlers run on the publish
/// thread today (render thread for panel-triggered commands).
///
void Publish(T command) where T : notnull;
}