import { Logger } from '../utils/logger.js'; import type { BaseProvider } from './base.js'; import type { ProviderConfig, ProviderType, ConsentSettings } from '../types/provider.js'; /** * Abstract base class for all provider implementations */ export declare abstract class BaseProviderImpl implements BaseProvider { abstract readonly id: string; abstract readonly name: string; abstract readonly type: ProviderType; abstract readonly version: string; protected config: ProviderConfig; protected logger: Logger; protected initialized: boolean; protected enabled: boolean; protected debugMode: boolean; protected ready: boolean; constructor(); initialize(config: ProviderConfig): Promise; /** * Provider-specific initialization logic */ protected abstract doInitialize(config: ProviderConfig): Promise; shutdown(): Promise; /** * Provider-specific shutdown logic */ protected abstract doShutdown(): Promise; updateConsent(consent: ConsentSettings): Promise; /** * Provider-specific consent handling */ protected abstract doUpdateConsent(consent: ConsentSettings): Promise; isReady(): boolean; getConfig(): ProviderConfig; setEnabled(enabled: boolean): void; isEnabled(): boolean; setDebugMode(enabled: boolean): void; /** * Provider-specific debug mode handling */ protected doSetDebugMode(_enabled: boolean): void; reset(): Promise; /** * Provider-specific reset logic */ protected abstract doReset(): Promise; pause(): Promise; /** * Provider-specific pause logic (optional) */ protected doPause?(): Promise; resume(): Promise; /** * Provider-specific resume logic (optional) */ protected doResume?(): Promise; protected enable(): Promise; protected disable(): Promise; /** * Provider-specific enable logic (optional) */ protected doEnable?(): Promise; /** * Provider-specific disable logic (optional) */ protected doDisable?(): Promise; /** * Check if provider is initialized and enabled */ protected checkReady(): void; /** * Log debug message if debug mode is enabled */ protected debug(message: string, data?: unknown): void; }