using System.Collections.Generic;

namespace FluidSim.Interfaces
{
    /// <summary>
    /// Minimal interface for all simulation components that have ports.
    /// </summary>
    public interface IComponent
    {
        /// <summary>All ports exposed by this component.</summary>
        IReadOnlyList<Port> Ports { get; }

        /// <summary>
        /// Called once per global time step to update the component's internal state
        /// using the port flow data accumulated during sub‑steps.
        /// </summary>
        void UpdateState(double dt);
    }
}