import { HotFile } from "./HotFile";
import { HotStaq } from "./HotStaq";
import { HotAPI } from "./HotAPI";
import { HotTestElement } from "./HotTestElement";
import { HotTestPath } from "./HotTestMap";
import { HotComponent } from "./HotComponent";
/**
 * A page to preprocess.
 */
export interface IHotPage {
    /**
     * The processor to use.
     */
    processor: HotStaq;
    /**
     * The name of the page.
     */
    name?: string;
    /**
     * The route used to get to this page.
     */
    route?: string;
    /**
     * The components added to this page.
     */
    components?: {
        [name: string]: HotComponent;
    };
    /**
     * The name of the page. File ordering matters here.
     * Every file is processed incrementally.
     */
    files?: HotFile[];
    /**
     * The functions to execute later.
     */
    functions?: {
        [name: string]: Function;
    };
    /**
     * The associated tester name.
     */
    testerName?: string;
    /**
     * The associated tester map.
     */
    testerMap?: string;
    /**
     * The elements to test on this page.
     */
    testElements?: {
        [name: string]: HotTestElement;
    };
    /**
     * The test paths to test on this page.
     */
    testPaths?: {
        [name: string]: HotTestPath;
    };
}
/**
 * A page to preprocess.
 */
export declare class HotPage implements IHotPage {
    /**
     * The processor to use.
     */
    processor: HotStaq;
    /**
     * The name of the page.
     */
    name: string;
    /**
     * The route used to get to this page.
     */
    route: string;
    /**
     * The components added to this page.
     */
    components: {
        [name: string]: HotComponent;
    };
    /**
     * The name of the page. File ordering matters here.
     * Every file is processed incrementally.
     */
    files: HotFile[];
    /**
     * The functions to execute later.
     */
    functions: {
        [name: string]: Function;
    };
    /**
     * The associated tester name.
     */
    testerName: string;
    /**
     * The associated tester map.
     */
    testerMap: string;
    /**
     * The elements to test on this page.
     */
    testElements: {
        [name: string]: HotTestElement;
    };
    /**
     * The test paths to test on this page.
     */
    testPaths: {
        [name: string]: HotTestPath;
    };
    constructor(copy: IHotPage | HotStaq);
    /**
     * Add a file to process. It's recommend to load the file prior to
     * adding it to a page if it's about to be used.
     */
    addFile(file: HotFile): Promise<void>;
    /**
     * Get the API associated with this page.
     */
    getAPI(): HotAPI;
    /**
     * Get the tester API associated with this page.
     */
    getTesterAPI(): HotAPI;
    /**
     * Add all files in the page. Could decrease page loading performance.
     * It's recommend to load the file prior to adding it to a page.
     */
    load(file: HotFile): Promise<void>;
    /**
     * Process a page and get the result.
     */
    process(args?: any): Promise<string>;
    /**
     * Add a function to execute later.
     *
     * @returns The new function's name.
     */
    addFunction(name: string, args: string[], funcBody: string, isAsync?: boolean): string;
    /**
     * Calls a function that's been stored and returns the result.
     */
    callFunction(thisObj: any, name: string, args: any[]): any;
    /**
     * Calls an async function that's been stored and returns the result.
     */
    callAsyncFunction(thisObj: any, name: string, args: any[]): Promise<any>;
    /**
     * Add a test element.
     */
    addTestElement(elm: HotTestElement): void;
    /**
     * Get a test element.
     */
    getTestElement(name: string): HotTestElement;
    /**
     * Create a test path.
     */
    createTestPath(pathName: string, driverFunc: HotTestPath): void;
}
//# sourceMappingURL=HotPage.d.ts.map