import { Component } from "./component.js";
import type { ComponentJson } from "./types.js";
/**
 * Class that describes a screen in an App Inventor project.
 *
 * @since  1.0.0
 * @access public
 */
export declare class Screen {
    name: string;
    form: Component;
    blocks: string;
    constructor(name: string, form: Component, blocks: string);
    /**
     * Creates a new AIScreen object asynchronously.
     *
     * Asynchronously creating this object, as opposed to using a constructor, lets
     * us generate all screens in a project simultaneously. This greatly reduces
     * the overall load time of the page, especially in case of large AIAs, as the
     * @see AIAReader::read function will not have to wait for the components of
     * this screen to load before starting with the next.
     *
     * @since 1.0.0
     * @access public
     *
     * @class
     * @param {String}    scm     The scheme data for this screen as fetched from
     *                            the AIA.
     * @param {String}    blk     The stringified Blockly XML for this screen as
     *                            fetched from the AIA.
     * @param {String}    name    The name of this screen.
     *
     * @return {Screen} New AIScreen object.
     */
    static init(name: string, scm: string, blk: string): Promise<Screen>;
    /**
     * Takes the raw scheme input from the AIA, parses it as a JSON array, and then
     * generates all the component and property objects for this screen.
     *
     * @since 1.0.0
     * @access private
     *
     * @param {String} scmJSON The raw scheme text fetched from the .scm file of
     *                         the AIA.
     *
     * @return {Component} The Form component of this screen.
     */
    static generateSchemeData(scmJSON: string): Promise<Component>;
    /**
     * Takes the JSON description of a component and asynchronously
     * creates a new @see Component class representing it. Also recursively calls
     * itself for every child of this component.
     *
     * @since 1.0.0
     * @access private
     *
     * @param {String} componentJSON The JSON object describing this component.
     *
     * @return {Component} An object representing this component's properties and
     *                     children.
     */
    static generateComponent(componentJSON: ComponentJson): Promise<Component>;
}
