// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.components.module_installer.builder;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Denotes an interface to be the interface of a feature module. For a module with name foo, this
 * annotation will generate a class FooModule that offers the same functionality as {@link Module}.
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface ModuleInterface {
    /** The name of the module. */
    String module();
    /** The fully qualified name of the module's interface implementation. */
    String impl();
}
