import { BaseGenerator } from "./base"; import { TargetLanguage, GeneratedFile, ValidationResult, GeneratorConfig, EntityGenerationOptions, ControllerGenerationOptions, ServiceGenerationOptions, DtoGenerationOptions, MigrationGenerationOptions, Entity, AuthConfig } from "../types"; /** * Python/FastAPI generator that produces SQLAlchemy models, Pydantic schemas, * and FastAPI routers. */ export declare class PythonGenerator extends BaseGenerator { constructor(config: GeneratorConfig); getLanguage(): TargetLanguage; getFileExtension(): string; validateConfig(config: GeneratorConfig): ValidationResult; 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): 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#81. * * Per the Apso Distribution Model the domain-event engine (the transactional * SQLAlchemy session hook, 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.py`. * * 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; }