import { type DevIdentity, type IgnoreOutcome } from './state';
/** Clear of the dev-stack's ports (3001 portal · 4173 world · 5000 backend · 2567 room) and vite's 5173. */
export declare const DEV_SHELL_DEFAULT_PORT = 5190;
/** The world has no real row here, so it gets an obviously synthetic uuid rather than a real-looking one. */
export declare const DEV_WORLD_ID = "00000000-0000-4000-8000-000000000001";
export type DevWorldIdentity = {
id: string;
slug: string;
title: string;
};
export type DevServerOptions = {
/** The world PROJECT dir — its built bundle is
/dist and its state lives in /.helix. */
worldDir: string;
/** Shell port. The world takes the next one; 0 gives both an OS-assigned port (what the specs use). */
port?: number;
reset?: boolean;
fresh?: boolean;
};
export type DevServerHandle = {
shellUrl: string;
worldUrl: string;
shellPort: number;
worldPort: number;
distDir: string;
world: DevWorldIdentity;
identity: DevIdentity;
stateFile: string;
products: {
path: string;
count: number;
} | null;
achievements: {
path: string;
count: number;
criteriaCount: number;
} | null;
gitignore: IgnoreOutcome;
sdkDistDir: string;
close: () => Promise;
};
/**
* Where the browser gets the dev shell from. `@hypersoniclabs/helix-sdk/package.json` is NOT resolvable —
* the SDK's exports map does not list it — so resolve a real subpath instead and walk up from the file:
* dist/dev-shell/index.js and dist/index.js both land on dist/.
*/
export declare function resolveSdkDistDir(): string;
/** slug/title from the project's own manifest; a dir with no helix.json still runs, just unnamed. */
export declare function readWorldIdentity(worldDir: string): DevWorldIdentity;
/**
* Boot both servers. Nothing here reads credentials or touches the network: working with no backend at
* all is the whole point of the command.
*/
export declare function startDevServer(options: DevServerOptions): Promise;