import { spawn } from 'node:child_process'; interface FrpTunnelRuntimeConfig { serverHost: string; serverPort?: number; token?: string; protocol?: string; proxyName?: string; customDomains?: string[]; remotePort?: number; entrypoint?: string; type?: string; [key: string]: unknown; } interface FrpcProcessManagerOptions { binaryPath: string; configPath: string; workingDirectory?: string; logPrefix?: string; autoRestart?: boolean; processFactory?: typeof spawn; } export interface FrpcRuntimeStatus { state: 'inactive' | 'starting' | 'running' | 'error'; lastUpdated?: string; error?: string; entrypoint?: string; pid?: number; } export declare class FrpcProcessManager { private readonly logger; private readonly binaryPath; private readonly configPath; private readonly workingDirectory?; private readonly logPrefix; private readonly autoRestart; private readonly processFactory; private process?; private currentSignature?; private restarting; private status; private desiredRunning; constructor(options: FrpcProcessManagerOptions); applyConfig(config?: FrpTunnelRuntimeConfig, status?: string, entrypoint?: string): Promise; stop(): Promise; private restart; private ensureDirectory; private writeConfigFile; getStatus(): FrpcRuntimeStatus; private setStatus; } export {};