/// <reference types="node" />
/// <reference types="node" />
import type { RemoteAPI, SupportedPHPVersion } from '@php-wasm/universal';
import type { BlueprintBundle, BlueprintDeclaration } from '@wp-playground/blueprints';
import type { Server } from 'http';
import { Worker } from 'worker_threads';
import type { Mount, PlaygroundCliBlueprintV1Worker } from './blueprints-v1/worker-thread-v1';
import type { PlaygroundCliBlueprintV2Worker } from './blueprints-v2/worker-thread-v2';
import type { MessagePort as NodeMessagePort } from 'worker_threads';
export declare const LogVerbosity: {
    readonly Quiet: {
        readonly name: "quiet";
        readonly severity: {
            readonly name: "fatal";
            readonly level: 0;
        };
    };
    readonly Normal: {
        readonly name: "normal";
        readonly severity: {
            readonly name: "info";
            readonly level: 4;
        };
    };
    readonly Debug: {
        readonly name: "debug";
        readonly severity: {
            readonly name: "debug";
            readonly level: 5;
        };
    };
};
type LogVerbosity = (typeof LogVerbosity)[keyof typeof LogVerbosity]['name'];
export declare function parseOptionsAndRunCLI(): Promise<void>;
export interface RunCLIArgs {
    blueprint?: BlueprintDeclaration | BlueprintBundle;
    command: 'server' | 'run-blueprint' | 'build-snapshot';
    debug?: boolean;
    login?: boolean;
    mount?: Mount[];
    'mount-before-install'?: Mount[];
    outfile?: string;
    php?: SupportedPHPVersion;
    port?: number;
    'site-url'?: string;
    quiet?: boolean;
    verbosity?: LogVerbosity;
    wp?: string;
    autoMount?: string;
    experimentalMultiWorker?: number;
    experimentalTrace?: boolean;
    exitOnPrimaryWorkerCrash?: boolean;
    internalCookieStore?: boolean;
    'additional-blueprint-steps'?: any[];
    xdebug?: boolean;
    experimentalDevtools?: boolean;
    'experimental-blueprints-v2-runner'?: boolean;
    skipWordPressSetup?: boolean;
    skipSqliteSetup?: boolean;
    followSymlinks?: boolean;
    'blueprint-may-read-adjacent-files'?: boolean;
    mode?: 'mount-only' | 'create-new-site' | 'apply-to-existing-site';
    'db-engine'?: 'sqlite' | 'mysql';
    'db-host'?: string;
    'db-user'?: string;
    'db-pass'?: string;
    'db-name'?: string;
    'db-path'?: string;
    'truncate-new-site-directory'?: boolean;
    allow?: string;
}
type PlaygroundCliWorker = PlaygroundCliBlueprintV1Worker | PlaygroundCliBlueprintV2Worker;
export interface RunCLIServer extends AsyncDisposable {
    playground: RemoteAPI<PlaygroundCliWorker>;
    server: Server;
    [Symbol.asyncDispose](): Promise<void>;
    workerThreadCount: number;
}
export declare function runCLI(args: RunCLIArgs): Promise<RunCLIServer>;
export type SpawnedWorker = {
    worker: Worker;
    phpPort: NodeMessagePort;
};
export {};
