///
import type { $PromiseMaybe } from "@dweb-browser/helper/$PromiseMaybe.ts";
import type { $BootstrapContext } from "./bootstrapContext.js";
import type { Ipc } from "./ipc/index.js";
import type { MICRO_MODULE_CATEGORY } from "./type/category.const.js";
import type { $DWEB_DEEPLINK, $IpcSupportProtocols, $MMID, $MicroModuleManifest, $MicroModuleRuntime } from "./types.js";
export declare abstract class MicroModule {
#private;
abstract manifest: $MicroModuleManifest;
protected abstract createRuntime(context: $BootstrapContext): $PromiseMaybe;
get console(): any;
toString(): string;
get isRunning(): boolean;
get runtime(): MicroModuleRuntime;
bootstrap(bootstrapContext: $BootstrapContext): Promise;
}
export declare abstract class MicroModuleRuntime implements $MicroModuleRuntime {
#private;
abstract mmid: $MMID;
abstract ipc_support_protocols: $IpcSupportProtocols;
abstract dweb_deeplinks: $DWEB_DEEPLINK[];
abstract categories: MICRO_MODULE_CATEGORY[];
abstract dir: $MicroModuleRuntime["dir"];
abstract lang: $MicroModuleRuntime["lang"];
abstract name: $MicroModuleRuntime["name"];
abstract short_name: $MicroModuleRuntime["short_name"];
abstract description: $MicroModuleRuntime["description"];
abstract icons: $MicroModuleRuntime["icons"];
abstract screenshots: $MicroModuleRuntime["screenshots"];
abstract display: $MicroModuleRuntime["display"];
abstract orientation: $MicroModuleRuntime["orientation"];
abstract theme_color: $MicroModuleRuntime["theme_color"];
abstract background_color: $MicroModuleRuntime["background_color"];
abstract shortcuts: $MicroModuleRuntime["shortcuts"];
abstract bootstrapContext: $BootstrapContext;
abstract microModule: MicroModule;
protected abstract _bootstrap(): unknown;
protected abstract _shutdown(): unknown;
private readonly stateLock;
private state;
protected connectionLinks: Set;
get connectedIpcs(): ReadonlySet;
protected connectionMap: Map<`${string}.dweb`, PromiseOut>;
get console(): any;
/**
* 给内部程序自己使用的 onConnect,外部与内部建立连接时使用
* 因为 NativeMicroModule 的内部程序在这里编写代码,所以这里会提供 onConnect 方法
* 如果时 JsMicroModule 这个 onConnect 就是写在 WebWorker 那边了
*/
onConnect(name: string): any;
get isRunning(): boolean;
bootstrap(): any;
private get beforeShotdownPo();
get onBeforeShutdown(): any;
private get shutdownPo();
get onShutdown(): any;
shutdown(): any;
/**
* 尝试连接到指定对象
*/
connect(mmid: $MMID, auto_start?: boolean): any;
/**
* 收到一个连接,触发相关事件
*/
beConnect(ipc: Ipc, _reason?: Request): Promise;
getConnected(mmid: $MMID): any;
protected _getIpcForFetch(url: URL): Promise;
protected _nativeRequest(parsed_url: URL, request_init: RequestInit): Promise;
/**
* 同 ipc.request,只不过使用 fetch 接口的输入参数
* 与 nativeFetch 的差别在于
* nativeFetch 返回 Response
* nativeRequest 返回 IpcResponse
*/
nativeRequest(url: RequestInfo | URL, init?: RequestInit): Promise;
protected _nativeFetch(url: RequestInfo | URL, init?: RequestInit): Promise;
/**
* 模拟fetch的返回值
* 这里的做fetch的时候需要先connect
*/
nativeFetch(url: RequestInfo | URL, init?: RequestInit): any;
requestDwebPermissions(permissions: string): Promise;
private get _manifest();
toManifest(): {
mmid: `${string}.dweb`;
name: string;
short_name: string | undefined;
ipc_support_protocols: $IpcSupportProtocols;
dweb_deeplinks: `dweb:${string}`[];
categories: MICRO_MODULE_CATEGORY[];
dir: import("./types.js").TextDirectionType | undefined;
lang: string | undefined;
description: string | undefined;
icons: import("./types.js").ImageResource[] | undefined;
screenshots: import("./types.js").ImageResource[] | undefined;
display: import("./types.js").DisplayModeType | undefined;
orientation: "any" | "landscape" | "landscape-primary" | "landscape-secondary" | "natural" | "portrait" | "portrait-primary" | "portrait-secondary" | undefined;
theme_color: string | undefined;
background_color: string | undefined;
shortcuts: import("./types.js").ShortcutItem[] | undefined;
};
}
//# sourceMappingURL=MicroModule.d.ts.map