import * as k8s from '@kubernetes/client-node'; import { Logger } from 'winston'; import { KubernetesClient } from './KubernetesClient.js'; import { RetryableOperationFactory, RetryableOperation } from './RetryableOperation.js'; import { ErrorMonitor } from './ErrorHandling.js'; /** * Common options for resource operations */ export interface ResourceOperationOptions { /** * Namespace for the operation (required for namespaced resources) */ namespace?: string; /** * Label selector for filtering resources */ labelSelector?: string; /** * Field selector for filtering resources */ fieldSelector?: string; /** * Maximum number of results to return */ limit?: number; /** * Continue token for pagination */ continueToken?: string; /** * Resource version for optimistic concurrency control */ resourceVersion?: string; /** * Timeout in seconds for the operation */ timeoutSeconds?: number; /** * Whether to propagate deletion to dependents */ propagationPolicy?: 'Foreground' | 'Background' | 'Orphan'; /** * Grace period seconds for deletion */ gracePeriodSeconds?: number; /** * Whether to sanitize sensitive data in ConfigMaps and Secrets */ skipSanitize?: boolean; } /** * Watch event types */ export declare enum WatchEventType { ADDED = "ADDED", MODIFIED = "MODIFIED", DELETED = "DELETED", ERROR = "ERROR" } /** * Watch event interface */ export interface WatchEvent { type: WatchEventType; object: T; } /** * Watch callback function */ export type WatchCallback = (event: WatchEvent) => void; /** * Generic interface for resource operations */ export interface IResourceOperations { /** * Create a new resource */ create(resource: T, options?: ResourceOperationOptions): Promise; /** * Get a resource by name */ get(name: string, options?: ResourceOperationOptions): Promise; /** * Update an existing resource */ update(resource: T, options?: ResourceOperationOptions): Promise; /** * Patch a resource */ patch(name: string, patch: any, options?: ResourceOperationOptions): Promise; /** * Delete a resource */ delete(name: string, options?: ResourceOperationOptions): Promise; /** * List resources */ list(options?: ResourceOperationOptions): Promise>; /** * Watch resources for changes */ watch(callback: WatchCallback, options?: ResourceOperationOptions): () => void; } /** * Error class for Kubernetes operations */ export declare class KubernetesOperationError extends Error { readonly statusCode?: number | undefined; readonly resource?: string | undefined; readonly operation?: string | undefined; constructor(message: string, statusCode?: number | undefined, resource?: string | undefined, operation?: string | undefined); } /** * Base class for resource operations with integrated retry and error handling */ export declare abstract class BaseResourceOperations implements IResourceOperations { protected client: KubernetesClient; protected resourceType: string; protected logger?: Logger; protected retryFactory: RetryableOperationFactory; protected errorMonitor: ErrorMonitor; constructor(client: KubernetesClient, resourceType: string); /** * Get or create a retryable operation for a specific action */ protected getRetryableOperation(operationName: string): RetryableOperation; /** * Handle API errors and convert to KubernetesOperationError */ protected handleApiError(error: any, operation: string, resourceName?: string): never; /** * Build list options from ResourceOperationOptions */ protected buildListOptions(options?: ResourceOperationOptions): any; /** * Build delete options from ResourceOperationOptions */ protected buildDeleteOptions(options?: ResourceOperationOptions): k8s.V1DeleteOptions; /** * Get error statistics for this resource type */ getErrorStats(): import("./ErrorHandling.js").ErrorStats; /** * Reset circuit breakers for all operations */ resetCircuits(): void; abstract create(resource: T, options?: ResourceOperationOptions): Promise; abstract get(name: string, options?: ResourceOperationOptions): Promise; abstract update(resource: T, options?: ResourceOperationOptions): Promise; abstract patch(name: string, patch: any, options?: ResourceOperationOptions): Promise; abstract delete(name: string, options?: ResourceOperationOptions): Promise; abstract list(options?: ResourceOperationOptions): Promise>; abstract watch(callback: WatchCallback, options?: ResourceOperationOptions): () => void; } //# sourceMappingURL=BaseResourceOperations.d.ts.map