import { extensions, ExtensionType } from '@pixi/extensions';
import type { ExtensionMetadata } from '@pixi/extensions';
import type { IRenderer } from '../IRenderer';
import type { ISystem } from '../system/ISystem';
export interface StartupSystemOptions
{
    /**
     * Whether to log the version and type information of renderer to console.
     * @memberof PIXI.IRendererOptions
     */
    hello: boolean;
}
/**
 * A simple system responsible for initiating the renderer.
 * @memberof PIXI
 */
export class StartupSystem implements ISystem<StartupSystemOptions>
{
    /** @ignore */
    static defaultOptions: StartupSystemOptions = {
        /**
         * PIXI.IRendererOptions.hello
         * @default false
         * @memberof PIXI.settings.RENDER_OPTIONS
         */
        hello: false,
    };
    /** @ignore */
    static extension: ExtensionMetadata = {
        type: [
            ExtensionType.RendererSystem,
            ExtensionType.CanvasRendererSystem
        ],
        name: 'startup',
    };
    readonly renderer: IRenderer;
    constructor(renderer: IRenderer)
    {
        this.renderer = renderer;
    }
    /**
     * It all starts here! This initiates every system, passing in the options for any system by name.
     * @param options - the config for the renderer and all its systems
     */
    run(options: StartupSystemOptions): void
    {
        const { renderer } = this;
        renderer.runners.init.emit(renderer.options);
        if (options.hello)
        {
            // eslint-disable-next-line no-console
            console.log(`PixiJS ${'$_VERSION'} - ${renderer.rendererLogId} - https://pixijs.com`);
        }
        renderer.resize(renderer.screen.width, renderer.screen.height);
    }
    destroy(): void
    {
        // ka pow!
    }
}
extensions.add(StartupSystem);