import type { Provider } from '../types/provider.js'; import type { ProviderMetadata } from '../types/provider.js'; export type ProviderConstructor = new () => Provider; export interface ProviderRegistration { metadata: ProviderMetadata; constructor: ProviderConstructor; } /** * Registry for all available providers */ export declare class ProviderRegistry { private static instance; private providers; private logger; private constructor(); static getInstance(): ProviderRegistry; /** * Register a provider */ register(registration: ProviderRegistration): void; register(id: string, type: string, constructor: ProviderConstructor): void; /** * Unregister a provider */ unregister(id: string): void; /** * Get a provider registration */ get(id: string): ProviderRegistration | undefined; /** * Get all registered providers */ getAll(): ProviderRegistration[]; /** * Get providers by type */ getByType(type: 'analytics' | 'error-tracking'): ProviderRegistration[]; /** * Get providers by platform support */ getByPlatform(platform: 'web' | 'ios' | 'android'): ProviderRegistration[]; /** * Create a provider instance */ createProvider(id: string): Provider | null; /** * Check if a provider is registered */ has(id: string): boolean; /** * Get provider metadata */ getMetadata(id: string): ProviderMetadata | undefined; /** * Clear all registrations */ clear(): void; } /** * Decorator to auto-register providers */ export declare function RegisterProvider(metadata: ProviderMetadata): (constructor: T) => T;