/**
 * Panel Service
 *
 * Manages multiple server panel connections.
 *
 * @since v1.70.6
 */
import type { IServerPanel, PanelConfig, PanelEventListener, PanelEventType, PanelServer, PanelServerStats, PanelType } from './panel-types.js';
/**
 * Combined server info with panel reference
 */
export interface ManagedServer extends PanelServer {
    /** Panel name this server belongs to */
    panelName: string;
    /** Panel type */
    panelType: PanelType;
}
/**
 * Panel connection status
 */
export interface PanelStatus {
    /** Panel name */
    name: string;
    /** Panel type */
    type: PanelType;
    /** Whether connected */
    connected: boolean;
    /** Last error message */
    lastError?: string;
    /** Number of servers */
    serverCount: number;
}
/**
 * Panel service for managing multiple panels
 */
export declare class PanelService {
    private panels;
    private serverCache;
    private eventListeners;
    /**
     * Register a panel configuration
     */
    registerPanel(config: PanelConfig): IServerPanel;
    /**
     * Unregister a panel
     */
    unregisterPanel(name: string): boolean;
    /**
     * Get a registered panel by name
     */
    getPanel(name: string): IServerPanel | undefined;
    /**
     * Get all registered panels
     */
    getAllPanels(): IServerPanel[];
    /**
     * Get panel status for all registered panels
     */
    getPanelStatuses(): PanelStatus[];
    /**
     * Connect to a specific panel
     */
    connectPanel(name: string): Promise<boolean>;
    /**
     * Connect to all registered panels
     */
    connectAll(): Promise<Map<string, boolean>>;
    /**
     * Disconnect from a specific panel
     */
    disconnectPanel(name: string): Promise<void>;
    /**
     * Disconnect from all panels
     */
    disconnectAll(): Promise<void>;
    /**
     * Refresh servers from a specific panel
     */
    refreshServers(name: string): Promise<ManagedServer[]>;
    /**
     * Get all servers from all connected panels
     */
    getAllServers(): Promise<ManagedServer[]>;
    /**
     * Get cached servers (no API calls)
     */
    getCachedServers(): ManagedServer[];
    /**
     * Find server by ID across all panels
     */
    findServer(serverId: string): Promise<ManagedServer | null>;
    /**
     * Get server stats
     */
    getServerStats(panelName: string, serverId: string): Promise<PanelServerStats>;
    /**
     * Send command to server
     */
    sendCommand(panelName: string, serverId: string, command: string): Promise<boolean>;
    /**
     * Start server
     */
    startServer(panelName: string, serverId: string): Promise<boolean>;
    /**
     * Stop server
     */
    stopServer(panelName: string, serverId: string): Promise<boolean>;
    /**
     * Restart server
     */
    restartServer(panelName: string, serverId: string): Promise<boolean>;
    /**
     * Add event listener
     */
    on(type: PanelEventType, listener: PanelEventListener): void;
    /**
     * Remove event listener
     */
    off(type: PanelEventType, listener: PanelEventListener): void;
    /**
     * Create panel instance from config
     */
    private createPanel;
    /**
     * Emit event to listeners
     */
    private emitEvent;
}
/**
 * Get the panel service singleton
 */
export declare function getPanelService(): PanelService;
/**
 * Reset the panel service (for testing)
 */
export declare function resetPanelService(): void;
//# sourceMappingURL=panel-service.d.ts.map