import { BrowserInstanceConfig, CliOverrides, ProjectConfigFile } from "./config.js"; /** 未初始化错误(命令层捕获后输出友好提示并退出)。 */ export declare class NotInitializedError extends Error { searchedFrom: string; constructor(searchedFrom: string); } /** 找不到某实例名错误。 */ export declare class InstanceNotFoundError extends Error { name: string; available: string[]; constructor(name: string, available: string[]); } /** 项目配置查找结果。 */ export interface ProjectConfigHandle { /** 配置文件绝对路径。 */ configPath: string; /** 配置文件所在目录视为项目根(相对路径以此解析)。 */ projectRoot: string; /** 解析后的配置对象。 */ config: ProjectConfigFile; } /** * 从 startDir 向上递归查找项目配置。 * 候选名:mooncat-browser.config.json,然后 config/browser.json(同一目录两级)。 * * 找不到时返回空 config handle (instances: {}) 而非抛错, * 让调用方 (loadInstance) 根据 CLI 参数决定: 有参数 → ad-hoc 创建; 无参数 → 报错。 * 这样 `mooncat-browser start --port ... --profile ...` 无需 init 即可跑。 */ export declare function findProjectConfig(startDir: string): ProjectConfigHandle; /** 列出配置里所有实例名。 */ export declare function listInstanceNames(handle: ProjectConfigHandle): string[]; /** * 加载指定实例:从配置读 raw + 合 CLI 覆盖 + 解析成 BrowserInstanceConfig。 * * 实例名不在 config 的 instances 里时: * - 若 CLI 提供了参数 (端口/profile 等), 自动用空配置 + CLI 覆盖创建 (ad-hoc 实例) * - 这样 `mooncat-browser start <任意名字> --port ... --profile ...` 无需预声明 * - 否则才抛 InstanceNotFoundError (提示去 init) * 同时确保数据目录存在。 */ export declare function loadInstance(name: string, handle: ProjectConfigHandle, cli?: CliOverrides): BrowserInstanceConfig; /** * 生成 --temp 临时实例:在系统 temp 下建随机目录,用默认端口。 * 不读项目配置,不留登录态,退出时由调用方清理。 */ export declare function tempInstance(name?: string, cli?: CliOverrides): { cfg: BrowserInstanceConfig; cleanup: () => void; }; /** * init 生成默认实例配置对象(供 cli init 命令写入文件)。 * 默认实例名 default,数据落到 /.browser/default/{profile,state,logs,extension}。 */ export declare function defaultInstanceEntry(name?: string): { rpcPort: number; healthPort: number; extensionPort: number; profileDir: string; stateDir: string; logsDir: string; extensionDir: string; }; //# sourceMappingURL=instance.d.ts.map