export interface Transport { writeFile: (signal: AbortSignal, file: string, contents: string) => Promise; readFile: (signal: AbortSignal, file: string) => Promise; pathExists: (signal: AbortSignal, file: string) => Promise; isDirectory: (signal: AbortSignal, file: string) => Promise; mkdir: (signal: AbortSignal, dirpath: string) => Promise; readdir: (signal: AbortSignal, dirpath: string) => Promise>; modTime: (signal: AbortSignal, file: string) => Promise; resolvePath: (signal: AbortSignal, path: string) => Promise; shell: (signal: AbortSignal, command: string, timeout: number) => Promise; close: () => Promise; } export class TransportError extends Error { constructor(msg: string) { super(msg); this.name = this.constructor.name; } } export class CommandFailedError extends TransportError {} export class AbortError extends TransportError { constructor() { super("Aborted"); } }