/**
 * Base Panel
 *
 * Abstract base class for server panel integrations.
 *
 * @since v1.70.6
 */
import type { ConsoleLine, IServerPanel, PanelConfig, PanelConnectionResult, PanelEventListener, PanelEventType, PanelServer, PanelServerStats, PanelType } from './panel-types.js';
/**
 * Validate and sanitize a Minecraft console command (v2.0.0)
 * @throws Error if command is not in allowlist
 */
export declare function validateCommand(command: string): string;
/**
 * Abstract base panel class
 */
export declare abstract class BasePanel implements IServerPanel {
    abstract readonly type: PanelType;
    readonly name: string;
    readonly url: string;
    protected apiKey?: string;
    protected username?: string;
    protected password?: string;
    protected options: Record<string, unknown>;
    protected _connected: boolean;
    private eventListeners;
    constructor(config: PanelConfig);
    get connected(): boolean;
    /**
     * Normalize URL (remove trailing slash)
     */
    protected normalizeUrl(url: string): string;
    /**
     * Make HTTP request to panel API
     */
    protected fetch<T>(endpoint: string, options?: RequestInit): Promise<T>;
    /**
     * Emit panel event
     */
    protected emit(type: PanelEventType, serverId?: string, data?: unknown): void;
    /**
     * Add event listener
     */
    on(type: PanelEventType, listener: PanelEventListener): void;
    /**
     * Remove event listener
     */
    off(type: PanelEventType, listener: PanelEventListener): void;
    /**
     * Remove all event listeners
     */
    removeAllListeners(): void;
    abstract connect(): Promise<PanelConnectionResult>;
    abstract disconnect(): Promise<void>;
    abstract getServers(): Promise<PanelServer[]>;
    abstract getServer(serverId: string): Promise<PanelServer | null>;
    abstract getServerStats(serverId: string): Promise<PanelServerStats>;
    abstract sendCommand(serverId: string, command: string): Promise<boolean>;
    abstract getConsoleOutput(serverId: string, lines?: number): Promise<ConsoleLine[]>;
    abstract startServer(serverId: string): Promise<boolean>;
    abstract stopServer(serverId: string): Promise<boolean>;
    abstract restartServer(serverId: string): Promise<boolean>;
}
//# sourceMappingURL=base-panel.d.ts.map