package leigh.elements.sdk;

import java.util.UUID;

/**
 * An elements application. This class provides all of the meta-information about an application which is common
 * to all instances of the application. For instance-specific information, see the {@link AppInstance} class.
 *
 * @author Alex Leigh
 */
public interface App {
    /**
     * Return a new app instance for the given app.
     */
    AppInstance createNewAppInstance(UUID appInstanceId);

    /**
     * Return the main screen friendly-name for this app. Every app has a main screen, which is typically but
     * not necessarily a main menu.
     */
    UUID getMainScreenId();

    /**
     * Search for a screen of the given name in the App, and if found, return its ID to the caller. This is the ID
     * that would be used to create a new instance of the screen, or <code>null</code> if no screen with that
     * name is found.
     */
    UUID getScreenId(String name);
}
