export interface TemplateParam {
    label: string
    default: string
}

export interface TemplatePackageConfig {
    name: string
    version?: string
    templatePath?: string
}

export interface TemplateInfo {
    name: string
    labels: string[]
    description: string
    category: string
    partial: boolean
    layers?: string[]
    templatePackage?: TemplatePackageConfig
    params: Record<string, TemplateParam>
    configuration: boolean
    globalAppsAllowed: boolean
}

export interface TemplateFile {
    path: string
    content: string
}

export interface TemplateLeaf {
    info: TemplateInfo
    files: TemplateFile[]
}

export interface Templates {
    base: TemplateLeaf
    configuration: TemplateLeaf
    'inplace-conversion': TemplateLeaf
    'build-agent.react': TemplateLeaf
    'javascript.aiux': TemplateLeaf
    'javascript.basic': TemplateLeaf
    'javascript.react': TemplateLeaf
    'typescript.basic': TemplateLeaf
    'typescript.react': TemplateLeaf
    'typescript.vue': TemplateLeaf
    'partial.javascript.basic': TemplateLeaf
    'partial.javascript.react': TemplateLeaf
    'partial.typescript.basic': TemplateLeaf
    'partial.typescript.react': TemplateLeaf
    'partial.typescript.react-devserver': TemplateLeaf
    'partial.typescript.vue': TemplateLeaf
}

export const templates: Templates
