// src/index.ts

// Core
export * from './core/interfaces';
export * from './core/pipeline';
export * from './core/errors';
export * from './core/registry'; // Export registry functions

// Config
export { loadPipelineFromConfig } from './config/loader';

// MARK: - Extractors
export * from './extractors/index';


// MARK: - Transformers
export * from './transformers/index';


// MARK: - Loaders
export * from './loaders/index';



// MARK: - Mongo & Redis
export { MongoExtractor } from './extractors/mongoExtractor';
export { RedisExtractor } from './extractors/redisExtractor';
export { MongoLoader } from './loaders/mongoLoader';
export { RedisLoader } from './loaders/redisLoader';


// MARK: - Stream Adapters
// INFO: - Stream Adapters
export { KafkaAdapter } from './streaming/kafkaAdapter';
export { RedisStreamAdapter } from './streaming/redisStreamAdapter';

// MARK: - Utils
export { createLogger } from './utils/logger';
export { performRetry } from './utils/retry'; // May be useful externally


// MARK: - Streaming
export { StreamManager } from './streaming/streamManager';
export * from './streaming/interfaces'; // Export streaming interfaces

// MARK: - FlowLab Integration Placeholders
// INFO: - FlowLab Integration Placeholders
// Example:
export function registerFlowLabNodes(registry: /* IFlowLabRegistry from @flowlab/core */ any) {
    // TODO: Implement registration of built-in components as FlowLab nodes
    // Example: registry.register(new StreamManagerNodeAdapter(new StreamManager(...))) ?
    // Example: registry.register(new PipelineNodeAdapter(pipelineInstance)) ?
    console.warn("@flowlab/data: registerFlowLabNodes function needs implementation based on @flowlab/core definitions.");
}

// Re-export specific component classes for easier direct use
export { PrismaExtractor } from './extractors/prismaExtractor';
export { FileExtractor } from './extractors/fileExtractor';
export { ApiExtractor } from './extractors/apiExtractor';
export { PrismaLoader } from './loaders/prismaLoader';
export { FileLoader } from './loaders/fileLoader';
export { ApiLoader } from './loaders/apiLoader';
export { MappingTransformer } from './transformers/mappingTransformer';
export { CustomFunctionTransformer } from './transformers/customFunctionTransformer';
export { RequiredFieldCleaner, DefaultValueCleaner } from './extractors/cleaner';