///
/**
* 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"
}