package {{ package }};

{% if needs_list %}
import java.util.List;
{% endif %}
{% if needs_map %}
import java.util.Map;
{% endif %}

/**
 * Bridge interface for the {{ trait_pascal }} plugin system.
 *
 * Implementations are wrapped by {{ trait_pascal }}Bridge and exposed to the native
 * runtime through Panama FFM upcall stubs.
 */
public interface I{{ trait_pascal }} {
{% if has_super_trait %}

    /** Plugin name (used for registry keying). */
    String name();

    /** Plugin version. */
    String version();

    /** Initialize the plugin. */
    default void initialize() throws Exception {}

    /** Shut down the plugin. */
    default void shutdown() throws Exception {}
{% endif %}
{% for method in methods %}

{{ method.javadoc }}    {{ method.signature }};
{% endfor %}
}
