import App from "../app";
import { LoadLibraryByUrlParams } from "../locales/type";
import { MenuItem } from "../menuManager/index";
export type ApplicationInterface = {
    page_type: "low_code" | "code";
    page_id: number | string;
    page_code: string;
    page_version?: string;
    page_name: string;
    router: string;
    category: "page" | "component" | "function";
    Component?: any;
    children?: any;
    layout?: string;
    originalUrl?: string;
};
export type ApplicationData = {
    app_id: number;
    app_name: string;
    app_type: "system" | "custom";
    interfaces: ApplicationInterface[];
    functions?: any[];
    menu?: {
        [key: string]: MenuItem[];
    };
    locales?: LoadLibraryByUrlParams;
    [key: string]: any;
};
export declare class Application {
    options: ApplicationData;
    name: ApplicationData["app_name"];
    interfaces: Map<ApplicationInterface["page_name"], ApplicationInterface>;
    components: Map<string, any>;
    functions: Map<string, any>;
    app: App;
    constructor(options: ApplicationData, app: App);
    afterAdd(application: Application): Promise<void>;
    beforeLoad(): Promise<void>;
    load(): Promise<void>;
    initInterfaces(interfaces: ApplicationData["interfaces"]): void;
    initFunctions(functions: ApplicationData["functions"]): void;
    loadInterface(interfaceItem: ApplicationInterface): Promise<ApplicationInterface>;
    setInterface(code: string, interfaceItem: ApplicationInterface): void;
    setComponent(code: string, component: ApplicationInterface): void;
    setFunction(code: string, functionItem: ApplicationInterface): void;
    getInterface(code: string): ApplicationInterface | undefined;
    getComponent(code: string): any;
    getFunction(code: string): any;
    runFunction(code: string, params?: any, ...args: any): any;
}
