package dev.crucifixbeta.api.events.eventbus;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

@Environment(EnvType.CLIENT)
public interface IEventBus {
   void registerLambdaFactory(LambdaListener.Factory factory);

   <T> T post(T object);

   <T extends ICancellable> T post(T iCancellable);

   void subscribe(Object object);

   void subscribe(Class<?> class_);

   void subscribe(IListener iListener);

   void unsubscribe(Object object);

   void unsubscribe(Class<?> class_);

   void unsubscribe(IListener iListener);
}
