#nullable enable
using Robust.Server.GameObjects.Components.Container;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Maths;

namespace Content.Server.GameObjects.Components.Disposal
{
    public interface IDisposalTubeComponent : IComponent
    {
        Container Contents { get; }

        Direction NextDirection(DisposalHolderComponent holder);
        Vector2 ExitVector(DisposalHolderComponent holder);
        IDisposalTubeComponent? NextTube(DisposalHolderComponent holder);
        bool Remove(DisposalHolderComponent holder);
        bool TransferTo(DisposalHolderComponent holder, IDisposalTubeComponent to);
        bool CanConnect(Direction direction, IDisposalTubeComponent with);
        void PopupDirections(IEntity entity);
    }
}
