/// /** * Copyright 2023 Kapeta Inc. * SPDX-License-Identifier: MIT */ export declare const OPTION_CONTEXT_AI = "AIContext"; export interface TargetMethods { generate: (data: any, context: any) => GeneratedFile[]; preprocess?: (data: any) => Promise; postprocess?: (targetDir: string, files: GeneratedAsset[]) => Promise; mergeFile?: (sourceFile: SourceFile, newFile: GeneratedFile, lastFile: GeneratedFile | null) => GeneratedFile; validate?: (targetDir: string) => Promise; language?: () => string; } export interface Target extends TargetMethods { new (options: any): Target; } export interface CodeGenerator { generate(): Promise; generateForTarget(target: Target): Promise; postprocess(targetDir: string, assets: GeneratedAsset[]): Promise; postprocessForTarget(targetDir: string, assets: GeneratedAsset[], target: Target): Promise; validateForTarget(targetDir: string): Promise; language(): Promise; } export interface ValidationResult { error: string; valid: boolean; } export interface SourceFile { filename: string; content: Buffer; permissions: string; } export interface GeneratedResult { target: TargetMethods; files: GeneratedFile[]; } export interface GeneratedFile { filename: string; content: string | Buffer; mode: string; permissions: string; } export interface GeneratedAsset { filename: string; mode: string; permissions: string; modified?: number; checksum?: string; merged?: boolean; } export declare enum AIFileTypes { SERVICE = "service", SERVICE_IF = "service-interface", WEB_SCREEN = "web-screen", WEB_ROUTER = "web-router", DAO = "dao", DTO = "dto", CONFIG = "config", CLIENT = "client",// Various clients API = "api", API_CLIENT = "api-client",// API client EVENT_PUBLISHER = "event-publisher", EVENT_CONSUMER = "event-consumer", SECURITY = "security", CONTEXT = "context", IGNORE = "ignore", INSTRUCTIONS = "instructions", DOCUMENTATION = "documentation" }