@cloudverse/cli
Version:
CloudVerse.ai CLI - Developer-native FinOps cost Optimization AI Agent
97 lines • 2.86 kB
TypeScript
import type { CloudProvider } from '../types.js';
export interface EstimateRequest {
files: Record<string, string>;
provider?: CloudProvider;
region?: string;
}
export interface EstimateResponse {
estimate?: {
id: number;
provider: CloudProvider;
region: string;
totalMonthlyCost: string;
resourceCount: number;
};
resources?: Array<{
resourceId: string;
resourceType: string;
region: string;
monthlyCost: string;
skuBreakdown: any[];
status: string;
}>;
violations?: any[];
recommendations?: OptimizationRecommendation[];
}
export interface OptimizationRecommendation {
id: string;
resourceId: string;
resourceType: string;
title: string;
description: string;
potentialMonthlySavings: number;
potentialAnnualSavings: number;
effortRequired: 'low' | 'medium' | 'high';
estimatedImplementationTime: number;
performanceImpact: 'positive' | 'neutral' | 'negative' | 'unknown';
riskLevel: 'low' | 'medium' | 'high';
currentCost: number;
optimizedCost: number;
provider: string;
isPrimary?: boolean;
actions: Array<{
type: string;
description: string;
codeSnippet: string;
}>;
}
export interface AnalyzeResponse {
provider: CloudProvider;
totalCost: number;
resources: Array<{
resourceId: string;
resourceType: string;
region: string;
monthlyCost: number;
skuBreakdown: Array<{
sku: string;
unit: string;
quantity: number;
unitPrice: number;
cost: number;
}>;
status: string;
}>;
summary: {
resourceCount: number;
byType: Record<string, number>;
byCost: Record<string, number>;
};
recommendations?: OptimizationRecommendation[];
}
export declare class CloudVerseAPI {
private client;
private baseURL;
private apiKey?;
constructor(baseURL?: string, apiKey?: string);
estimate(request: EstimateRequest): Promise<EstimateResponse>;
analyze(files: Record<string, string>, options?: {
provider?: CloudProvider;
region?: string;
}): Promise<AnalyzeResponse>;
getRecommendations(estimateId: number): Promise<OptimizationRecommendation[]>;
getEstimate(id: number): Promise<any>;
listEstimates(): Promise<any[]>;
deleteEstimate(id: number): Promise<void>;
/**
* Analyze a Helm chart
* @param chartYaml Chart.yaml content
* @param valuesYaml values.yaml content
* @param templates Array of template files
*/
analyzeHelm(chartYaml: string, valuesYaml: string, templates: Array<{
name: string;
content: string;
}>): Promise<AnalyzeResponse>;
}
//# sourceMappingURL=api-client.d.ts.map