library Language; import IdlNodes.IdlNode; import IdsNodes.IdsNode; struct ClientType { clientName: string, serverName: string, } enum BuildType { Release, Debug, } enum ServerArg { Run, Build, Generate, } struct ServerType { serverName: string, inputPath: string, buildType: BuildType, args: ServerArg, } struct DataType { serverName: string, inputPath: string, } enum RequestType { Client: ClientType, Server: ServerType, Data: DataType, } struct LibraryItem { nodes: IdlNode[], hash: uint8[], } struct LanguageRequest { libraries: LibraryItem[], idsNodes: IdsNode[], requestRype: RequestType, } enum ResponseType { Generated: StorageItem[], Undefined: string, } struct Source { name: string, txt: string, } struct ItemFolder { name: string, items: StorageItem[], } struct BinarySource { name: string, data: string, } enum StorageItem { Source: Source, Folder: Folder, BinarySource: BinarySource, } struct LanguageResponse { responseType: ResponseType, responseMessages: string[], } interface IdlGen { sendRequest: (request: LanguageRequest) -> LanguageResponse?; }