package dev.photosync.mcapi;

import dev.photosync.mcapi.capture.ScreenshotService;
import dev.photosync.mcapi.render.TextureSink;
import dev.photosync.mcapi.screen.ScreenHost;

/**
 * One object holding every version-specific service, built once by the platform
 * module at client startup.
 *
 * <p>It exists so that a screen takes a single constructor argument instead of
 * five, and so that the list of things a new Minecraft version has to provide is
 * readable in one place -- this interface is the porting checklist.
 */
public interface ClientBridge {

    GameContext game();

    Translator text();

    Clipboard clipboard();

    TextureSink textures();

    ScreenHost screens();

    ScreenshotService screenshots();
}
