import { SSHClient } from "../ssh";
import { DockerClient } from "../docker";
export interface PortUsage {
    port: number;
    protocol: "tcp" | "udp";
    process?: string;
    pid?: number;
    containerName?: string;
    containerImage?: string;
    isDockerContainer: boolean;
}
export interface PortConflict {
    port: number;
    hostPort: number;
    containerPort: number;
    requestedBy: string;
    conflictsWith: PortUsage;
    serverHostname: string;
}
export declare class PortChecker {
    private sshClient;
    private dockerClient;
    private serverHostname;
    private verbose;
    constructor(sshClient: SSHClient, dockerClient: DockerClient, serverHostname: string, verbose?: boolean);
    /**
     * Check what ports are currently in use on the server
     */
    getPortUsage(): Promise<PortUsage[]>;
    /**
     * Get port usage from Docker containers
     */
    private getDockerPortUsage;
    /**
     * Get port usage from system processes (non-Docker)
     */
    private getSystemPortUsage;
    /**
     * Check for port conflicts with planned deployments
     */
    checkPortConflicts(plannedPorts: Array<{
        hostPort: number;
        containerPort: number;
        requestedBy: string;
        protocol?: "tcp" | "udp";
    }>, projectName?: string): Promise<PortConflict[]>;
    /**
     * Generate suggestions for resolving port conflicts
     */
    generateConflictSuggestions(conflicts: PortConflict[]): string[];
}
/**
 * Extract port mappings from Docker port specification
 */
export declare function parsePortMappings(ports: string[]): Array<{
    hostPort: number;
    containerPort: number;
    protocol: "tcp" | "udp";
}>;
