import { BaseGenerator } from "./base"; import { TargetLanguage, GeneratedFile, ValidationResult, GeneratorConfig, EntityGenerationOptions, ControllerGenerationOptions, ServiceGenerationOptions, DtoGenerationOptions, MigrationGenerationOptions, Entity, AuthConfig } from "../types"; /** * Go/Gin generator that produces GORM models, DTOs, Gin handlers, * and service layer code. */ export declare class GoGenerator extends BaseGenerator { constructor(config: GeneratorConfig); getLanguage(): TargetLanguage; getFileExtension(): string; validateConfig(config: GeneratorConfig): ValidationResult; /** * Maps .apsorc field types to Go types */ private mapFieldToGoType; /** * Gets the Go type for primary keys */ private getPrimaryKeyGoType; /** * Gets the Swagger type for primary keys */ private getPrimaryKeySwaggerType; /** * Transforms fields for Go templates with additional Go-specific properties */ private getGoFieldsForTemplate; generateEntity(options: EntityGenerationOptions): Promise; generateController(options: ControllerGenerationOptions): Promise; generateService(options: ServiceGenerationOptions): Promise; generateDto(options: DtoGenerationOptions): Promise; generateModule(_options: EntityGenerationOptions): Promise; generateMigration(options: MigrationGenerationOptions): Promise; generateEnums(entities: Entity[], _apiType: string): Promise; generateIndexModule(entities: Entity[], _apiType: string, opts?: { emitEvents?: boolean; http?: boolean; }): Promise; /** * Emits a schema-derived manifest of the entities that opted in to * domain-event emission (`.apsorc` `emitEvents`), mirroring the TypeScript * generator. See apsoai/cli#82. * * Per the Apso Distribution Model the domain-event engine (the transactional * GORM hook/callback, mapper, relay, delivery) is NOT generated here; it * ships as a versioned library wired by the `domain-events` skill. The CLI's * only job is to declare WHICH entities participate, via a single generated * file: `events/event_emitting_entities.go`. * * Returns an empty array when no entity is opted in. * * Resolution mirrors TS: `entity.emitEvents ?? ?? false`. */ generateDomainEvents(entities: Entity[], _apiType?: string, opts?: { emitEvents?: boolean; }): Promise; generateGuards(_entities: Entity[], auth?: AuthConfig): Promise; generateQueryUtils(_entities: Entity[], _apiType: string): Promise; }