# This file is auto-generated by the CDP protocol generator.
# Do not edit this file manually as your changes will be overwritten.
# Generated from Chrome DevTools Protocol specifications.

"""CDP DOMStorage Domain Event Registration"""

from typing import Callable, Optional

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from ..registry import EventRegistry
    from .events import (
        DomStorageItemAddedEvent,
        DomStorageItemRemovedEvent,
        DomStorageItemUpdatedEvent,
        DomStorageItemsClearedEvent,
    )


class DOMStorageRegistration:
    """Event registration interface for DOMStorage domain."""

    def __init__(self, registry: "EventRegistry"):
        self._registry = registry
        self._domain = "DOMStorage"

    def domStorageItemAdded(
        self,
        callback: Callable[["DomStorageItemAddedEvent", Optional[str]], None],
    ) -> None:
        """
        Register a callback for domStorageItemAdded events.

        Args:
            callback: Function to call when event occurs.
                     Receives (event_data, session_id) as parameters.
        """
        self._registry.register("DOMStorage.domStorageItemAdded", callback)

    def domStorageItemRemoved(
        self,
        callback: Callable[["DomStorageItemRemovedEvent", Optional[str]], None],
    ) -> None:
        """
        Register a callback for domStorageItemRemoved events.

        Args:
            callback: Function to call when event occurs.
                     Receives (event_data, session_id) as parameters.
        """
        self._registry.register("DOMStorage.domStorageItemRemoved", callback)

    def domStorageItemUpdated(
        self,
        callback: Callable[["DomStorageItemUpdatedEvent", Optional[str]], None],
    ) -> None:
        """
        Register a callback for domStorageItemUpdated events.

        Args:
            callback: Function to call when event occurs.
                     Receives (event_data, session_id) as parameters.
        """
        self._registry.register("DOMStorage.domStorageItemUpdated", callback)

    def domStorageItemsCleared(
        self,
        callback: Callable[["DomStorageItemsClearedEvent", Optional[str]], None],
    ) -> None:
        """
        Register a callback for domStorageItemsCleared events.

        Args:
            callback: Function to call when event occurs.
                     Receives (event_data, session_id) as parameters.
        """
        self._registry.register("DOMStorage.domStorageItemsCleared", callback)
