package net.tomatentum.marinara.wrapper; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; import net.tomatentum.marinara.interaction.commands.SlashCommandDefinition; import net.tomatentum.marinara.interaction.commands.ExecutableSlashCommandDefinition; import net.tomatentum.marinara.interaction.InteractionType; public abstract class LibraryWrapper { private List> interactionSubscriber; protected LibraryWrapper() { interactionSubscriber = new ArrayList<>(); } public void handleInteraction(Object context) { interactionSubscriber.forEach((o) -> o.accept(context)); } public void subscribeInteractions(Consumer consumer) { interactionSubscriber.add(consumer); } public void unsubscribeInteractions(Consumer consumer) { interactionSubscriber.remove(consumer); } public abstract InteractionType getInteractionType(Class clazz); public abstract void registerSlashCommands(SlashCommandDefinition[] defs); public abstract ExecutableSlashCommandDefinition getCommandDefinition(Object context); public abstract String getButtonId(Object context); public abstract ContextObjectProvider getContextObjectProvider(); }