import type { DockerHost } from './classes.host.js';

/**
 * Abstract base class for all Docker resources.
 * Provides standardized patterns for resource management and lifecycle.
 */
export abstract class DockerResource {
  /**
   * Reference to the DockerHost that manages this resource.
   * All API operations go through this host instance.
   */
  protected readonly dockerHost: DockerHost;

  /**
   * Creates a new Docker resource instance.
   * @param dockerHost The DockerHost instance that manages this resource
   */
  constructor(dockerHost: DockerHost) {
    this.dockerHost = dockerHost;
  }

  /**
   * Refreshes this resource's state from the Docker daemon.
   * Implementations should fetch current data and update instance properties.
   */
  abstract refresh(): Promise<void>;
}
