import * as plugins from '../plugins.ts'; import * as data from '../data/index.ts'; export interface ICatalogApp { id: string; name: string; description: string; category: string; iconName?: string; iconUrl?: string; latestVersion: string; tags?: string[]; } export interface IAppVersionConfig { image: string; port: number; envVars?: Array<{ key: string; value: string; description: string; required?: boolean }>; volumes?: string[]; platformRequirements?: { mongodb?: boolean; s3?: boolean; clickhouse?: boolean; redis?: boolean; mariadb?: boolean; }; minOneboxVersion?: string; } export interface IAppMeta { id: string; name: string; description: string; category: string; iconName?: string; latestVersion: string; versions: string[]; maintainer?: string; links?: Record; } export interface IUpgradeableService { serviceName: string; appTemplateId: string; currentVersion: string; latestVersion: string; hasMigration: boolean; } export interface IReq_GetAppTemplates extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetAppTemplates > { method: 'getAppTemplates'; request: { identity: data.IIdentity; }; response: { apps: ICatalogApp[]; }; } export interface IReq_GetAppConfig extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetAppConfig > { method: 'getAppConfig'; request: { identity: data.IIdentity; appId: string; version: string; }; response: { config: IAppVersionConfig; appMeta: IAppMeta; }; } export interface IReq_GetUpgradeableServices extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetUpgradeableServices > { method: 'getUpgradeableServices'; request: { identity: data.IIdentity; }; response: { services: IUpgradeableService[]; }; } export interface IReq_UpgradeService extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_UpgradeService > { method: 'upgradeService'; request: { identity: data.IIdentity; serviceName: string; targetVersion: string; }; response: { service: data.IService; warnings: string[]; }; }