import { Container, ImageInfo, Image, Volume, VolumeCreateResponse, VolumeInspectInfo, ContainerCreateOptions, ContainerInspectInfo } from 'dockerode'; import { DockerAuth, RestartPolicy } from '@nosana/sdk'; import { ReturnedStatus } from '../types.js'; export type RunContainerArgs = { name?: string; networks?: { [key: string]: {}; }; cmd?: string[]; gpu?: boolean; requires_network_mode?: boolean; volumes?: Array<{ dest: string; name: string; readonly?: boolean; }>; env?: { [key: string]: string; }; work_dir?: string; entrypoint?: string | string[]; restart_policy?: RestartPolicy; aliases?: string[] | undefined; runtime?: string; bind_network_to_container?: string; }; export interface ContainerOrchestrationInterface { teeRuntime?: string; getConnection(): any; pullImage(image: string, auth?: DockerAuth, controller?: AbortController): Promise; hasImage(image: string): Promise; getImage(image: string): Promise; listImages(): Promise; deleteImage(image: string, controller?: AbortController): Promise; createNetwork(name: string, controller?: AbortController): Promise; hasNetwork(name: string): Promise; deleteNetwork(name: string, controller?: AbortController): Promise; createVolume(name?: string, controller?: AbortController): Promise; getVolume(name: string): Promise; hasVolume(name: string): Promise; getRawVolume(name: string): Promise; listVolumes(): Promise; deleteVolume(name: string, controller?: AbortController): Promise; getContainerByName(name: string): Promise; getContainersByName(names: string[]): Promise; runContainer(args: ContainerCreateOptions, controller?: AbortController): Promise; runFlowContainer(image: string, args: RunContainerArgs): Promise; stopContainer(id: string, controller?: AbortController): Promise; stopAndDeleteContainer(id: string, controller?: AbortController): Promise; isContainerExited(id: string): Promise; doesContainerExist(id: string): Promise; healthy(): Promise; check(): Promise; getProtocol(): string; }