/** * Type definitions for Optimisely Cloud SDK */ export type CloudProvider = 'aws' | 'azure' | 'gcp'; export type ResourceType = 'compute' | 'storage' | 'database' | 'network' | 'serverless'; export type ComputeResource = CloudResource; export type StorageResource = CloudResource; export type DatabaseResource = CloudResource; export type NetworkResource = CloudResource; export type ServerlessResource = CloudResource; export type OptimizationSeverity = 'low' | 'medium' | 'high' | 'critical'; export interface CloudCredentials { aws?: { accessKeyId: string; secretAccessKey: string; region: string; sessionToken?: string; }; azure?: { clientId: string; clientSecret: string; tenantId: string; subscriptionId: string; }; gcp?: { projectId: string; keyFilename?: string; credentials?: object; }; } export interface CloudConnectorConfig { provider: CloudProvider; credentials: CloudCredentials; region?: string; } export interface ScanOptions { includeTypes?: string[]; excludeTypes?: string[]; includeTags?: Record; excludeTags?: Record; includeRegions?: string[]; excludeRegions?: string[]; includeCostAnalysis?: boolean; includeOptimizationRecommendations?: boolean; outputFormat?: 'json' | 'yaml' | 'csv' | 'table'; outputFile?: string; verbose?: boolean; } export interface CloudResource { id: string; name: string; type: ResourceType; provider: CloudProvider; region: string; resourceType?: string; status: string; createdAt: string; tags: Record; instanceType?: string; vCpus?: number; memory?: number; availabilityZone?: string; subnetId?: string; publicIp?: string; privateIp?: string; networkInterfaces?: any[]; storage?: { size: number; type: string; encrypted: boolean; }; storageType?: string; size?: number; encrypted?: boolean; engine?: string; engineVersion?: string; instanceClass?: string; version?: string; multiAz?: boolean; backupRetention?: number; networkType?: string; cidr?: string; runtime?: string; timeout?: number; codeSize?: number; lastModified?: string; estimatedMonthlyCost?: number; metadata?: Record; } export interface CostBreakdown { total: number; currency: string; breakdown: Record; } export interface OptimizationOpportunity { id: string; type: 'cost' | 'performance' | 'security' | 'compliance'; severity: OptimizationSeverity; title: string; description: string; recommendation: string; potentialSavings?: { monthly: number; annual: number; currency: string; }; effort: 'low' | 'medium' | 'high'; impact: 'low' | 'medium' | 'high'; resourceIds: string[]; implementationSteps?: string[]; } export interface ResourcesByType { compute: CloudResource[]; storage: CloudResource[]; database: CloudResource[]; network: CloudResource[]; serverless: CloudResource[]; } export interface ScanResult { provider: CloudProvider; region: string; timestamp: string; totalResources: number; resources: ResourcesByType; estimatedMonthlyCost: CostBreakdown; optimizationOpportunities: OptimizationOpportunity[]; scanDuration?: number; errors?: string[]; warnings?: string[]; } export interface ConnectorInterface { scanResources(options?: ScanOptions): Promise; getCostAnalysis(resourceTypes?: string[]): Promise; getOptimizationRecommendations(severity?: OptimizationSeverity): Promise; } export interface ComparisonResult { providers: Array<{ provider: CloudProvider; totalCost: number; resourceCount: number; savings?: number; }>; recommendations: { cheapest: CloudProvider; savings: number; migrationComplexity: 'low' | 'medium' | 'high'; timeline: string; }; summary: { totalResourcesAnalyzed: number; potentialSavings: number; averageCostReduction: number; }; } export declare class OptimiselyError extends Error { code: string; provider?: CloudProvider | undefined; details?: any | undefined; constructor(message: string, code: string, provider?: CloudProvider | undefined, details?: any | undefined); } export declare class ConfigurationError extends OptimiselyError { constructor(message: string, provider?: CloudProvider); } export declare class AuthenticationError extends OptimiselyError { constructor(message: string, provider?: CloudProvider); } export declare class ScanError extends OptimiselyError { constructor(message: string, provider?: CloudProvider, details?: any); } //# sourceMappingURL=types.d.ts.map