/** * Velo Plot - Plugin System * * Comprehensive plugin architecture for extending chart functionality. * * Features: * - Complete lifecycle hooks (init, render, data, view, interaction, destroy) * - Rich plugin context with access to all chart internals * - Plugin storage for persistent state * - Dependency management between plugins * - Global registry for third-party plugins * - Built-in plugins for common use cases * * @packageDocumentation * @module plugins */ export type { PluginVersion, PluginCapability, PluginManifest, PluginContext, RenderContext, CoordinateContext, DataContext, UIContext, EventContext, PluginStorage, PluginLogger, OverlayOptions, NotificationOptions, PickResult, BeforeRenderEvent, AfterRenderEvent, InteractionEvent, ViewChangeEvent, SeriesChangeEvent, DataUpdateEvent, ChartPlugin, PluginFactory, TypedPlugin, PluginManager, PluginRegistry, PluginRegistryEntry, } from './types'; export { createPluginContext } from './PluginContext'; export type { ContextDependencies } from './PluginContext'; export { PluginManagerImpl } from './PluginManager'; export { getPluginRegistry, registerPlugin, definePlugin, defineAndRegister, loadPlugin, listPluginsByCategory, validateManifest, checkPluginCompatibility, } from './PluginRegistry'; export { CrosshairPlugin, StatsPlugin, WatermarkPlugin, GridHighlightPlugin, DataLoggerPlugin, DirectionIndicatorPlugin, BuiltinPlugins, type CrosshairPluginConfig, type StatsPluginConfig, type WatermarkPluginConfig, type GridHighlightConfig, type DataLoggerConfig, type DirectionIndicatorConfig, } from './builtins'; export { Plugin3D, type Plugin3DConfig } from './3d'; export { PluginGpu, type PluginGpuConfig } from './gpu'; export { PluginAnalysis, type PluginAnalysisConfig } from './analysis'; export { PluginTools, type PluginToolsConfig } from './tools'; export { PluginAnnotations, type PluginAnnotationsConfig } from './annotations'; export { PluginStreaming, type PluginStreamingConfig } from './streaming'; export { PluginThemeEditor, type PluginThemeEditorConfig } from './theme-editor'; export { PluginI18n, type PluginI18nConfig } from './i18n'; export { PluginKeyboard, type PluginKeyboardConfig } from './keyboard'; export { PluginClipboard, type PluginClipboardConfig } from './clipboard'; export { PluginSync, type PluginSyncConfig } from './sync'; export { PluginDebug, type PluginDebugConfig } from './debug'; export { PluginLoading, type PluginLoadingConfig } from './loading'; export { PluginDataExport, type PluginDataExportConfig } from './data-export'; export { PluginContextMenu, type PluginContextMenuConfig } from './context-menu'; export { PluginAnomalyDetection, type PluginAnomalyDetectionConfig, type AnomalyDetectionResult, type AnomalyPoint, type AnomalyMethod } from './anomaly-detection'; export { PluginMLIntegration, type PluginMLIntegrationConfig, type MLIntegrationAPI, type MLModelAPI, type PredictionResult, type VisualizationConfig } from './ml-integration'; export { PluginPatternRecognition, type PluginPatternRecognitionConfig, type PatternRecognitionAPI, type PatternMatch, type PatternDetectionResult } from './pattern-recognition'; export { PluginRegression, type PluginRegressionConfig, type RegressionAPI, type RegressionResult, type RegressionData } from './regression'; export { PluginRadar, type PluginRadarConfig, type RadarAPI, type RadarSeriesData, type RadarPoint } from './radar'; export { PluginSnapshot, type PluginSnapshotConfig, type SnapshotExportAPI, type SnapshotExportOptions, type SnapshotResolution, type SnapshotFormat } from './snapshot'; export { PluginDataTransform, type PluginDataTransformConfig, type DataTransformAPI, type TransformOp, type TransformType } from './data-transform'; export { PluginLaTeX, type PluginLaTeXConfig, type LaTeXPluginAPI, type LaTeXDimensions } from './latex'; export * from './forecasting'; export { PluginDragEdit, type PluginDragEditConfig, type DragEditAPI, type DragEditEvent } from './drag-edit'; export { PluginCaching, type PluginCachingConfig, type CachingAPI, type CacheStats } from './caching'; export { PluginLazyLoad, type PluginLazyLoadConfig, type LazyLoadAPI, type DataProvider } from './lazy-load'; export { PluginBrokenAxis, type PluginBrokenAxisConfig, type BrokenAxisAPI, type AxisBreak } from './broken-axis'; export { PluginVideoRecorder, type PluginVideoRecorderConfig, type VideoRecorderAPI, type VideoRecorderOptions } from './video-recorder'; export { PluginOffscreen, type PluginOffscreenConfig, type OffscreenAPI, type OffscreenStats, type OffscreenMode, type OffscreenTransferMode, type OffscreenFallbackMode } from './offscreen'; export { PluginVirtualization, type PluginVirtualizationConfig, type VirtualizationAPI, type VirtualizationStats, type VirtualizationMode, type VirtualizationStrategy } from './virtualization'; export { PluginDrawingTools, type PluginDrawingToolsConfig, type DrawingToolsAPI, type DrawingMode } from './drawing-tools'; export { PluginReplay, type PluginReplayConfig, type ReplayAPI } from './replay'; export { PluginROI, type PluginROIConfig, type RoiAPI, type RoiRegion, type RoiPoint, type RoiMaskResult, type RoiTool, type RoiEvent, type RoiSelectedEvent } from './roi'; /** * Helper function to create a plugin with proper typing * * @example * ```typescript * const MyPlugin = createPlugin({ * manifest: { * name: 'my-plugin', * version: '1.0.0', * provides: ['analysis'], * }, * onInit(ctx) { * ctx.log.info('Plugin initialized!'); * }, * onAfterRender(ctx, event) { * // Custom rendering * }, * api: { * doSomething() { return 'done'; } * } * }); * * chart.use(MyPlugin); * ``` */ export declare function createPlugin = {}>(definition: import('./types').ChartPlugin & { api?: TApi; }): import('./types').ChartPlugin & { api: TApi; }; /** * Helper function to create a configurable plugin factory * * @example * ```typescript * interface MyConfig { * color: string; * enabled: boolean; * } * * const MyPlugin = createConfigurablePlugin( * { * name: 'my-plugin', * version: '1.0.0', * }, * (config) => ({ * onInit(ctx) { * ctx.log.info(`Color: ${config?.color}`); * } * }) * ); * * chart.use(MyPlugin({ color: 'red', enabled: true })); * ``` */ export declare function createConfigurablePlugin(manifest: import('./types').PluginManifest, factory: (config?: TConfig) => Omit, "manifest">): import('./types').PluginFactory;