package port

import (
	"context"

	"github.com/orchard9/rdev/internal/domain"
)

// DatabasePinger checks database connectivity.
// *sql.DB satisfies this interface.
type DatabasePinger interface {
	PingContext(ctx context.Context) error
}

// KubernetesChecker checks Kubernetes API connectivity.
type KubernetesChecker interface {
	// ServerVersion returns the server version string, or an error if unreachable.
	ServerVersion() (string, error)
}

// RegistryChecker checks container registry health.
type RegistryChecker interface {
	// Check returns the health status of the registry.
	Check(ctx context.Context) domain.RegistryStatus
}

// ExternalHealthChecker checks an external system's health.
type ExternalHealthChecker interface {
	// Check returns the health status of the external system.
	Check(ctx context.Context) domain.ExternalSystemStatus
}
