import type Storage from '../storage'; import type Oas from 'oas'; export interface InstallerOptions { /** * Will initiate a dry run install process. Used for simulating installations within a unit test. */ dryRun?: boolean; /** * Used for stubbing out the logger that we use within the installation process so it can be * easily introspected without having to mock out `console.*`. */ logger?: (msg: string) => void; } export default abstract class CodeGeneratorLanguage { spec: Oas; specPath: string; identifier: string; userAgent: string; requiredPackages: Record; constructor(spec: Oas, specPath: string, identifier: string); abstract generator(): Promise>; abstract installer(storage: Storage, opts?: InstallerOptions): Promise; hasRequiredPackages(): boolean; }