import { KubernetesClient } from '@kubernetesjs/ops'; export interface TemplateDeployOptions { name?: string; namespace?: string; [key: string]: any; } export interface TemplateDeployResult { templateId: string; name: string; namespace: string; status: 'deployed' | 'failed'; message?: string; endpoints?: { [serviceName: string]: { host: string; port: number; url?: string; }; }; } export interface TemplateUninstallOptions { name?: string; namespace?: string; force?: boolean; } export interface TemplateUninstallResult { templateId: string; name: string; namespace: string; status: 'uninstalled' | 'failed'; message?: string; } export declare abstract class BaseTemplateDeployer { protected kube: KubernetesClient; protected templateId: string; protected log: (message: string) => void; constructor(kubeClient: KubernetesClient, templateId: string, logger?: (message: string) => void); abstract deploy(options: TemplateDeployOptions): Promise; abstract uninstall(options: TemplateUninstallOptions): Promise; /** * Check if template is already deployed */ abstract isDeployed(name: string, namespace: string): Promise; /** * Get deployment status */ abstract getStatus(name: string, namespace: string): Promise<'deployed' | 'deploying' | 'failed' | 'not-found'>; /** * Wait for deployment to be ready */ waitForReady(name: string, namespace: string, timeoutMs?: number): Promise; protected sleep(ms: number): Promise; protected generateLabels(templateId: string, name: string): Record; }