export interface AntiSpamConfig {
    enabled: boolean;
    globalCooldownMs: number;
    enablePriorityOverride: boolean;
    triggerPriorities: {
        console_error: number;
        api_failure: number;
        form_failure: number;
        exit_intent: number;
        time: number;
        manual: number;
    };
    maxWidgetsPerSession: number;
    priorityOverrideThreshold: number;
}
export interface AntiSpamState {
    lastWidgetShownAt: number;
    lastWidgetPriority: number;
    lastWidgetTriggerType: string;
    widgetsShownThisSession: number;
    sessionStartTime: number;
    isAnyWidgetOpen: boolean;
}
export interface WidgetDecision {
    allowed: boolean;
    reason: string;
    details?: {
        triggerType: string;
        priority: number;
        timeSinceLastWidget?: number;
        sessionCount?: number;
        cooldownRemaining?: number;
    };
}
export declare class AntiSpamManager {
    private config;
    private state;
    private debug;
    private static readonly DEFAULT_CONFIG;
    constructor(debug?: boolean);
    private log;
    private initializeState;
    /**
     * Load configuration from API response
     */
    loadConfig(config: AntiSpamConfig | null): void;
    /**
     * Validate configuration and merge with defaults for missing fields
     */
    private validateAndMergeConfig;
    /**
     * Load persisted state from localStorage
     */
    private loadPersistedState;
    /**
     * Persist current state to localStorage
     */
    private persistState;
    /**
     * Reset state (for new sessions or errors)
     */
    resetState(): void;
    /**
     * Get priority for a trigger type
     */
    private getTriggerPriority;
    /**
     * Main decision method: Should we show a widget for this trigger?
     */
    shouldShowWidget(triggerType: string): WidgetDecision;
    /**
     * Record that a widget was shown
     */
    onWidgetShown(triggerType: string): void;
    /**
     * Record that a widget was hidden/dismissed
     */
    onWidgetHidden(triggerType: string): void;
    /**
     * Record that a widget failed to show (to revert state)
     */
    onWidgetShowFailed(triggerType: string): void;
    /**
     * Get current anti-spam status for debugging
     */
    getStatus(): {
        config: AntiSpamConfig | null;
        state: AntiSpamState;
        nextAllowedAt?: Date;
        remainingInSession: number;
    };
    /**
     * Update configuration (for runtime changes)
     */
    updateConfig(newConfig: Partial<AntiSpamConfig>): void;
    /**
     * Manual override to force allow next widget (for debugging)
     */
    forceAllow(): void;
    /**
     * Check if anti-spam is currently active
     */
    isEnabled(): boolean;
    /**
     * Get configuration (for external inspection)
     */
    getConfig(): AntiSpamConfig | null;
    /**
     * Cleanup (called on SDK destroy)
     */
    destroy(): void;
}
//# sourceMappingURL=AntiSpamManager.d.ts.map