import { System } from "../system";
import EditorPane from "./panes/pane";
import "./styles/editor.css";
/**
 * The number of rows and columns in the editor ui grid.
 */
export declare const EDITOR_GRID_SIZE = 24;
/**
 * Represents the editor.
 *
 * This class also manages the updating of all editor panes.
 *
 * The whole UI is split into 24 rows and 24 columns that fill the window.
 * The column/row indexes go from 0 to 23.
 */
export default class Editor implements System {
    canvas: HTMLCanvasElement;
    editor: HTMLDivElement;
    panes: EditorPane[];
    /**
     * Creates the editor UI.
     *
     * @param canvas The canvas used by {@link Blaze}, if none is provided then the editor will attempt to locate one.
     */
    constructor(canvas?: HTMLCanvasElement);
    /**
     * Update the editor.
     */
    update(): void;
    /**
     * Create and inject the editor's UI with default layout.
     */
    createUI(): void;
    /**
     * Remove the editor's UI from the dom.
     */
    removeUI(): void;
    /**
     * Setup the default layout.
     */
    defaultLayout(): void;
    /**
     * Refresh the layout of the editor's panes.
     */
    refreshPanes(): void;
    /**
     * Returns the `grid-template-areas` style representing the given grid layout.
     *
     * @param layout `grid-template-areas` style tag
     */
    private gridLayoutToCSS;
    /**
     * Get the grid layout for the current panes in the editor.
     *
     * @returns The grid layout
     */
    private getGridLayout;
    /**
     * Creates an object with arrays for each row in the UI with lengths of `EDITOR_GRID_SIZE` and filled with `"."`.
     *
     * @returns The empty grid layout
     */
    private emptyGridLayout;
}
