import type { EngineGlobalObject } from "../EngineGlobalObject";
import type { Instantiater } from "../Instantiater";
import { SceneBuilder } from "./SceneBuilder";
import { GameSetting } from "./setting/GameSetting";
/**
 * make game scene with interop object and scene builder
 */
export declare abstract class Bootstrapper<T = any> {
    private readonly _instantiater;
    private readonly _interopObject;
    private readonly _sceneBuilder;
    private readonly _gameSetting;
    constructor(engineGlobalObject: EngineGlobalObject, interopObject?: T);
    /**
     * set game setting and make scene
     */
    abstract run(): SceneBuilder;
    /**
     * get instantiater
     *
     * You can instantiate object through instantiater
     */
    protected get instantiater(): Instantiater;
    /**
     * get interop object
     */
    protected get interopObject(): T | null;
    /**
     * get scene builder
     */
    protected get sceneBuilder(): SceneBuilder;
    /**
     * get game setting, this value will be frozen after run
     */
    protected get setting(): GameSetting;
}
