@codai/cbd
Version:
Codai Better Database - High-Performance Vector Memory System with HPKV-inspired architecture and MCP server
220 lines • 7.92 kB
TypeScript
/**
* Multi-Cloud Configuration Interface
* Defines configuration patterns for AWS, Azure, and GCP integration
*/
import { CloudProvider, CloudSelectionStrategy } from './IntelligentCloudSelector.js';
export interface MultiCloudConfiguration {
readonly strategy: CloudSelectionStrategy;
readonly primaryCloud: CloudProvider;
readonly fallbackClouds: CloudProvider[];
readonly aws: AWSConfiguration;
readonly azure: AzureConfiguration;
readonly gcp: GCPConfiguration;
readonly local: LocalConfiguration;
readonly monitoring: MonitoringConfiguration;
readonly cost: CostOptimizationConfiguration;
}
export interface AWSConfiguration {
readonly region: string;
readonly credentials: {
readonly accessKeyId?: string;
readonly secretAccessKey?: string;
readonly sessionToken?: string;
readonly role?: string;
};
readonly services: {
readonly dynamodb: DynamoDBConfiguration;
readonly opensearch: OpenSearchConfiguration;
readonly rds: RDSConfiguration;
readonly s3: S3Configuration;
readonly lambda: LambdaConfiguration;
};
}
export interface AzureConfiguration {
readonly tenantId: string;
readonly clientId: string;
readonly clientSecret?: string;
readonly subscriptionId: string;
readonly resourceGroup: string;
readonly services: {
readonly cosmosDb: CosmosDBConfiguration;
readonly cognitiveSearch: CognitiveSearchConfiguration;
readonly sqlDatabase: SQLDatabaseConfiguration;
readonly blobStorage: BlobStorageConfiguration;
readonly functions: AzureFunctionsConfiguration;
};
}
export interface GCPConfiguration {
readonly projectId: string;
readonly keyFilename?: string;
readonly credentials?: any;
readonly region: string;
readonly services: {
readonly firestore: FirestoreConfiguration;
readonly spanner: SpannerConfiguration;
readonly bigquery: BigQueryConfiguration;
readonly cloudStorage: CloudStorageConfiguration;
readonly cloudFunctions: CloudFunctionsConfiguration;
};
}
export interface LocalConfiguration {
readonly dataPath: string;
readonly backupPath: string;
readonly maxMemoryMB: number;
readonly enablePersistence: boolean;
readonly compressionEnabled: boolean;
}
export interface MonitoringConfiguration {
readonly enabled: boolean;
readonly metricsInterval: number;
readonly cloudWatch: boolean;
readonly azureMonitor: boolean;
readonly gcpOperations: boolean;
readonly customEndpoint?: string;
}
export interface CostOptimizationConfiguration {
readonly enabled: boolean;
readonly maxMonthlyCost: number;
readonly costAlerts: boolean;
readonly autoScaling: boolean;
readonly spotInstances: boolean;
}
export interface DynamoDBConfiguration {
readonly endpoint?: string;
readonly region: string;
readonly consistentReads: boolean;
readonly billingMode: 'PAY_PER_REQUEST' | 'PROVISIONED';
readonly readCapacityUnits?: number;
readonly writeCapacityUnits?: number;
}
export interface OpenSearchConfiguration {
readonly endpoint: string;
readonly region: string;
readonly version: string;
readonly instanceType: string;
readonly instanceCount: number;
}
export interface RDSConfiguration {
readonly engine: 'postgres' | 'mysql' | 'aurora-postgresql' | 'aurora-mysql';
readonly instanceClass: string;
readonly allocatedStorage: number;
readonly multiAZ: boolean;
readonly backupRetentionPeriod: number;
}
export interface S3Configuration {
readonly bucket: string;
readonly region: string;
readonly storageClass: 'STANDARD' | 'STANDARD_IA' | 'GLACIER' | 'DEEP_ARCHIVE';
readonly versioning: boolean;
readonly encryption: boolean;
}
export interface LambdaConfiguration {
readonly runtime: string;
readonly timeout: number;
readonly memorySize: number;
readonly environment: Record<string, string>;
}
export interface CosmosDBConfiguration {
readonly endpoint: string;
readonly primaryKey: string;
readonly databaseName: string;
readonly consistencyLevel: 'Strong' | 'BoundedStaleness' | 'Session' | 'ConsistentPrefix' | 'Eventual';
readonly requestUnits: number;
readonly multiRegion: boolean;
}
export interface CognitiveSearchConfiguration {
readonly endpoint: string;
readonly apiKey: string;
readonly indexName: string;
readonly tier: 'free' | 'basic' | 'standard' | 'standard2' | 'standard3' | 'storage_optimized_l1' | 'storage_optimized_l2';
}
export interface SQLDatabaseConfiguration {
readonly server: string;
readonly database: string;
readonly username: string;
readonly password: string;
readonly tier: 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale';
readonly maxSizeMB: number;
}
export interface BlobStorageConfiguration {
readonly accountName: string;
readonly accountKey: string;
readonly containerName: string;
readonly tier: 'Hot' | 'Cool' | 'Archive';
readonly redundancy: 'LRS' | 'ZRS' | 'GRS' | 'GZRS';
}
export interface AzureFunctionsConfiguration {
readonly appName: string;
readonly resourceGroup: string;
readonly runtime: string;
readonly version: string;
readonly consumptionPlan: boolean;
}
export interface FirestoreConfiguration {
readonly projectId: string;
readonly databaseId: string;
readonly location: string;
readonly type: 'firestore-native' | 'datastore';
}
export interface SpannerConfiguration {
readonly instanceId: string;
readonly databaseId: string;
readonly nodeCount: number;
readonly processingUnits: number;
}
export interface BigQueryConfiguration {
readonly datasetId: string;
readonly location: string;
readonly defaultTableExpirationMs?: number;
readonly labels?: Record<string, string>;
}
export interface CloudStorageConfiguration {
readonly bucketName: string;
readonly location: string;
readonly storageClass: 'STANDARD' | 'NEARLINE' | 'COLDLINE' | 'ARCHIVE';
readonly uniformBucketLevelAccess: boolean;
}
export interface CloudFunctionsConfiguration {
readonly runtime: string;
readonly region: string;
readonly memory: number;
readonly timeout: number;
readonly environmentVariables: Record<string, string>;
}
/**
* Default multi-cloud configuration
*/
export declare const defaultMultiCloudConfig: MultiCloudConfiguration;
/**
* Configuration builder for multi-cloud setup
*/
export declare class MultiCloudConfigBuilder {
private config;
static create(): MultiCloudConfigBuilder;
withStrategy(strategy: CloudSelectionStrategy): MultiCloudConfigBuilder;
withPrimaryCloud(cloud: CloudProvider): MultiCloudConfigBuilder;
withFallbackClouds(clouds: CloudProvider[]): MultiCloudConfigBuilder;
withAWS(config: Partial<AWSConfiguration>): MultiCloudConfigBuilder;
withAzure(config: Partial<AzureConfiguration>): MultiCloudConfigBuilder;
withGCP(config: Partial<GCPConfiguration>): MultiCloudConfigBuilder;
withLocal(config: Partial<LocalConfiguration>): MultiCloudConfigBuilder;
withMonitoring(config: Partial<MonitoringConfiguration>): MultiCloudConfigBuilder;
withCostOptimization(config: Partial<CostOptimizationConfiguration>): MultiCloudConfigBuilder;
build(): MultiCloudConfiguration;
/**
* Load configuration from environment variables
*/
fromEnvironment(): MultiCloudConfigBuilder;
/**
* Load configuration from file
*/
static fromFile(filePath: string): MultiCloudConfiguration;
/**
* Validate configuration
*/
static validate(config: MultiCloudConfiguration): {
valid: boolean;
errors: string[];
};
}
//# sourceMappingURL=MultiCloudConfiguration.d.ts.map