/**
 * Panel Types
 *
 * Type definitions for server panel integrations.
 *
 * @since v1.70.6
 */
/**
 * Supported panel types
 */
export type PanelType = 'amp' | 'pterodactyl' | 'crafty' | 'mcsmanager' | 'pufferpanel';
/**
 * Server status
 */
export type ServerStatus = 'running' | 'stopped' | 'starting' | 'stopping' | 'unknown';
/**
 * Panel configuration
 */
export interface PanelConfig {
    /** Panel type */
    type: PanelType;
    /** Display name */
    name: string;
    /** Panel URL (base URL) */
    url: string;
    /** API key or token */
    apiKey?: string;
    /** Username (for panels requiring login) */
    username?: string;
    /** Password (for panels requiring login) */
    password?: string;
    /** Additional options */
    options?: Record<string, unknown>;
}
/**
 * Server info from panel
 */
export interface PanelServer {
    /** Server ID (panel-specific) */
    id: string;
    /** Server name */
    name: string;
    /** Current status */
    status: ServerStatus;
    /** Server type (minecraft, paper, etc.) */
    type: string;
    /** Minecraft version */
    version?: string;
    /** Current player count */
    players?: number;
    /** Max player count */
    maxPlayers?: number;
    /** Server description */
    description?: string;
    /** Node ID (for multi-node panels) */
    nodeId?: string;
}
/**
 * Server resource stats
 */
export interface PanelServerStats {
    /** CPU usage percentage (0-100) */
    cpu: number;
    /** Memory usage */
    memory: {
        /** Used memory in MB */
        used: number;
        /** Allocated memory in MB */
        allocated: number;
        /** Max memory in MB */
        max: number;
    };
    /** Disk usage (optional) */
    disk?: {
        /** Used disk in MB */
        used: number;
        /** Allocated disk in MB */
        allocated: number;
    };
    /** Network usage (optional) */
    network?: {
        /** Received bytes */
        rxBytes: number;
        /** Transmitted bytes */
        txBytes: number;
    };
    /** Uptime in seconds */
    uptime: number;
    /** TPS if available from panel */
    tps?: number;
    /** MSPT if available */
    mspt?: number;
    /** Player count */
    players?: number;
}
/**
 * Console output line
 */
export interface ConsoleLine {
    /** Timestamp */
    timestamp: number;
    /** Log level */
    level?: 'info' | 'warn' | 'error';
    /** Message content */
    message: string;
}
/**
 * Panel connection result
 */
export interface PanelConnectionResult {
    /** Whether connection succeeded */
    success: boolean;
    /** Error message if failed */
    error?: string;
    /** Panel version info */
    version?: string;
    /** Additional info */
    info?: Record<string, unknown>;
}
/**
 * Panel interface
 */
export interface IServerPanel {
    /** Panel type */
    readonly type: PanelType;
    /** Panel name */
    readonly name: string;
    /** Panel URL */
    readonly url: string;
    /** Whether panel is connected */
    readonly connected: boolean;
    /**
     * Connect to the panel
     */
    connect(): Promise<PanelConnectionResult>;
    /**
     * Disconnect from the panel
     */
    disconnect(): Promise<void>;
    /**
     * Get list of servers
     */
    getServers(): Promise<PanelServer[]>;
    /**
     * Get server by ID
     */
    getServer(serverId: string): Promise<PanelServer | null>;
    /**
     * Get server resource stats
     */
    getServerStats(serverId: string): Promise<PanelServerStats>;
    /**
     * Send command to server console
     */
    sendCommand(serverId: string, command: string): Promise<boolean>;
    /**
     * Get console output
     */
    getConsoleOutput(serverId: string, lines?: number): Promise<ConsoleLine[]>;
    /**
     * Start server
     */
    startServer(serverId: string): Promise<boolean>;
    /**
     * Stop server
     */
    stopServer(serverId: string): Promise<boolean>;
    /**
     * Restart server
     */
    restartServer(serverId: string): Promise<boolean>;
    /**
     * Add event listener
     */
    on(type: PanelEventType, listener: PanelEventListener): void;
    /**
     * Remove event listener
     */
    off(type: PanelEventType, listener: PanelEventListener): void;
    /**
     * Remove all event listeners
     */
    removeAllListeners(): void;
}
/**
 * Panel event types
 */
export type PanelEventType = 'connected' | 'disconnected' | 'server_started' | 'server_stopped' | 'stats_updated' | 'console_output' | 'error';
/**
 * Panel event
 */
export interface PanelEvent {
    /** Event type */
    type: PanelEventType;
    /** Panel type */
    panelType: PanelType;
    /** Server ID (if applicable) */
    serverId?: string;
    /** Event timestamp */
    timestamp: number;
    /** Event data */
    data?: unknown;
}
/**
 * Panel event listener
 */
export type PanelEventListener = (event: PanelEvent) => void;
//# sourceMappingURL=panel-types.d.ts.map