import express from 'express';
import { createServer } from 'http';
import { WebSocketServer } from 'ws';
import { PtyManager } from './pty/index.js';
import { ActivityMonitor } from './services/activity-monitor.js';
import { BufferAggregator } from './services/buffer-aggregator.js';
import { ConfigService } from './services/config-service.js';
import { ControlDirWatcher } from './services/control-dir-watcher.js';
import { HQClient } from './services/hq-client.js';
import { PushNotificationService } from './services/push-notification-service.js';
import { RemoteRegistry } from './services/remote-registry.js';
import { StreamWatcher } from './services/stream-watcher.js';
import { TerminalManager } from './services/terminal-manager.js';
export declare function isShuttingDown(): boolean;
export declare function setShuttingDown(value: boolean): void;
interface Config {
    port: number | null;
    bind: string | null;
    enableSSHKeys: boolean;
    disallowUserPassword: boolean;
    noAuth: boolean;
    isHQMode: boolean;
    hqUrl: string | null;
    hqUsername: string | null;
    hqPassword: string | null;
    remoteName: string | null;
    allowInsecureHQ: boolean;
    showHelp: boolean;
    showVersion: boolean;
    debug: boolean;
    pushEnabled: boolean;
    vapidEmail: string | null;
    generateVapidKeys: boolean;
    bellNotificationsEnabled: boolean;
    allowLocalBypass: boolean;
    localAuthToken: string | null;
    enableTailscaleServe: boolean;
    noHqAuth: boolean;
    enableMDNS: boolean;
}
interface AppInstance {
    app: express.Application;
    server: ReturnType<typeof createServer>;
    wss: WebSocketServer;
    startServer: () => void;
    config: Config;
    configService: ConfigService;
    ptyManager: PtyManager;
    terminalManager: TerminalManager;
    streamWatcher: StreamWatcher;
    remoteRegistry: RemoteRegistry | null;
    hqClient: HQClient | null;
    controlDirWatcher: ControlDirWatcher | null;
    bufferAggregator: BufferAggregator | null;
    activityMonitor: ActivityMonitor;
    pushNotificationService: PushNotificationService | null;
}
export declare function createApp(): Promise<AppInstance>;
export declare function startVibeTunnelServer(): Promise<void>;
export * from './version.js';
