export interface VirtualizePlugin { name: string; version: string; hooks?: { beforeRender?: (items: any[]) => any[]; afterRender?: (elements: HTMLElement[]) => void; onScroll?: (offset: number) => void; onMeasurement?: (index: number, size: number) => void; }; methods?: Record any>; } export declare class PluginManager { private plugins; /** * Register a plugin */ register(plugin: VirtualizePlugin): void; /** * Unregister a plugin */ unregister(name: string): void; /** * Get registered plugins */ getPlugins(): VirtualizePlugin[]; /** * Call plugin hook */ callHook(hookName: keyof NonNullable, ...args: any[]): Promise; /** * Call plugin method */ callMethod(pluginName: string, methodName: string, ...args: any[]): any; } export declare enum LayoutType { LIST = "list",// Traditional 1D list GRID = "grid",// Traditional grid MASONRY = "masonry",// Pinterest-style masonry WATERFALL = "waterfall",// ✨ NEW - Waterfall/cascade FEED = "feed",// ✨ NEW - Social media feed TIMELINE = "timeline" } export interface LayoutConfig { type: LayoutType; columnCount?: number; gapSize?: number; itemAspectRatio?: number; maxWidth?: number; minItemSize?: number; } /** * Waterfall Layout - Multi-column layout with items filling shortest column * Perfect for: Image galleries, product showcases */ export declare class WaterfallLayout { private columns; private gapSize; private columnHeights; constructor(columns: number, gapSize?: number); /** * Get position for item */ getItemPosition(_: number, itemHeight: number, width: number): { x: number; y: number; column: number; }; /** * Get total height needed */ getTotalHeight(): number; /** * Reset layout */ reset(): void; } /** * Feed Layout - Social media feed style (variable width, full-width items) * Perfect for: Social feeds, blogs, news */ export declare class FeedLayout { private itemHeights; private itemOffsets; private totalHeight; /** * Record item height */ recordItemHeight(index: number, height: number): void; /** * Get item offset and height */ getItemDimensions(index: number): { offset: number; height: number; }; /** * Update all offsets */ private updateOffsets; /** * Get total height */ getTotalHeight(): number; } /** * Vue 3 Adapter */ export declare const createVueVirtualList: () => { name: string; template: string; props: { items: ArrayConstructor; height: { type: NumberConstructor; default: number; }; width: { type: NumberConstructor; default: number; }; estimatedItemSize: { type: NumberConstructor; default: number; }; }; }; /** * Svelte Component */ export declare const SvelteVirtualList = "\n\n\n\n {#each $virtualItems as virtualItem (virtualItem.key)}\n
\n \n
\n {/each}\n\n\n\n"; export interface AnalyticsEvent { type: string; timestamp: number; data: any; } export declare class AdvancedAnalytics { private events; private sessionStart; private maxEvents; /** * Track event */ trackEvent(type: string, data: any): void; /** * Get session duration */ getSessionDuration(): number; /** * Get analytics report */ getReport(): { sessionDuration: number; totalEvents: number; eventBreakdown: Record; timeline: AnalyticsEvent[]; }; /** * Get event breakdown */ private getEventBreakdown; /** * Send analytics to server */ sendAnalytics(endpoint: string): Promise; /** * Export analytics as CSV */ exportAsCSV(): string; } /** * Example: Analytics Plugin */ export declare const AnalyticsPlugin: VirtualizePlugin; /** * Example: Logger Plugin */ export declare const LoggerPlugin: VirtualizePlugin; /** * Example: Custom Plugin */ export declare function createCustomPlugin(options: any): VirtualizePlugin; //# sourceMappingURL=plugin.d.ts.map