import { PromptObject } from "prompts" ; import { Language , PackageManagerType , SlappeyConfig , StructureType , } from "./types" ; export interface Initializer { initialize ( ... args ) : void ; } export interface ProjectScaffolder { createProject ( name , language ) : Promise < void > ; createStructure ( structure ) : Promise < void > ; createCommand ( slappeyFilePath ) : Promise < void > ; createEvent ( slappeyFilePath ) : Promise < void > ; } export interface ProjectPrompter { language ( prompt ) : Promise < Language > ; packageManager ( prompt ) : Promise < PackageManagerType > ; command ( prompt ) : Promise < any > ; event ( prompt ) : Promise < any > ; credentials ( prompt ) : Promise < any > ; } export interface ProjectTemplateGenerator { generateUtilities ( filePath ) : void ; generateCommand ( categoryPath , name , category ) : void ; generateEvents ( events , eventsDir ) : void ; generateBaseCommand ( filePath ) : void ; generateBaseEvent ( filePath ) : void ; generateRegistry ( filePath ) : void ; generateDirectories ( filePath ) : void ; generateTestCommand ( filePath ) : void ; generateReadyEvent ( filePath ) : void ; generateMessageEvent ( filePath ) : void ; generateClient ( filePath ) : void ; } export interface FileSystemManager { createProjectDirectory ( name ) : Promise < string > ; createConfig ( config ) : void ; createSourceDirectory ( name ) : Promise < string > ; createEntryFile ( filePath ) : void ; createDirectory ( dirName ) : Promise < void > ; createFile ( filePath , data ) : Promise < void > ; getFileToJson ( filePath ) : Promise < SlappeyConfig > ; exists ( filePath ) : Promise < boolean > ; findFile ( filePath ) : Promise < void > ; updatePackageJson ( filePath ) : void ; } export interface Logger { success ( message , time ) : void ; error ( message ) : void ; warning ( message ) : void ; info ( message ) : void ; }