import { FastifyInstance } from 'fastify';
import { EventEmitter } from 'events';
import { TunnelOptions, TunnelInfo, TunnelStatus, TunnelProvider, TunnelConfig, HealthStatus, TunnelRecoveryOptions, TunnelHealth } from './types';
import { AccessController } from './access-controller';
import { AccessEvent } from './usage-tracker';
export declare class TunnelManager extends EventEmitter {
    private _server;
    private providers;
    private activeTunnel?;
    private activeInfo?;
    private config;
    private accessController;
    private usageTracker?;
    private tunnelId?;
    private errorHandler;
    private recoveryOptions;
    private healthCheckTimer?;
    private tunnelHealth;
    private lastTunnelOptions?;
    private retryCount;
    constructor(_server: FastifyInstance, config?: Partial<TunnelConfig>, recoveryOptions?: Partial<TunnelRecoveryOptions>);
    registerProvider(provider: TunnelProvider): void;
    startTunnel(options?: TunnelOptions): Promise<TunnelInfo>;
    private attemptTunnelStart;
    private createTunnelWithProvider;
    stopTunnel(): Promise<void>;
    getStatus(): TunnelStatus;
    private getAvailableProviders;
    checkTunnelHealth(): Promise<HealthStatus | null>;
    private updateTunnelHealth;
    private startHealthMonitoring;
    private stopHealthMonitoring;
    getTunnelHealth(): TunnelHealth;
    getRecoveryOptions(): TunnelRecoveryOptions;
    updateRecoveryOptions(options: Partial<TunnelRecoveryOptions>): void;
    private generateTunnelId;
    getAccessController(): AccessController;
    getTunnelId(): string | undefined;
    /**
     * Track an access event for analytics
     */
    trackAccess(event: AccessEvent): void;
    /**
     * Get current usage metrics
     */
    getUsageMetrics(): import("./usage-tracker").UsageMetrics | null;
    /**
     * Export usage metrics as JSON
     */
    exportUsageMetrics(): string | null;
    /**
     * Clear usage metrics
     */
    clearUsageMetrics(): void;
    /**
     * Check if analytics is enabled
     */
    isAnalyticsEnabled(): boolean;
}
//# sourceMappingURL=manager.d.ts.map