# Protocols

The following protocols are available globally.

### MediaDownloadDelegate

- `DownloadDelegate`

  Delegate interface for download lifecycle/progress notifications.

  See more

  #### Declaration

  Swift

      public protocol DownloadDelegate

### Track

- `Track`

  Common interface shared by all track types.

  #### Declaration

  Swift

      public protocol Track

### CLDrmPrefetcherAPI

- `CLDrmPrefetcherAPI`

  API for prefetching and managing persistent DRM keys.

  See more

  #### Declaration

  Swift

      public protocol CLDrmPrefetcherAPI : InterceptableAPI

### CLDecryptorAPI

- `CLDecryptorAPI`

  API for extracting decrypted compressed audio samples from protected content.

  Operation-specific failures are returned through each method’s `Result` as a `PRESTOerror`. SDK-level and component-level errors can also be observed through `PRESTOplaySDK.shared.onError`.

  See more

  #### Declaration

  Swift

      public protocol CLDecryptorAPI : InterceptableAPI

### PlayerViewControllerAPI

- `PlayerViewControllerAPI`

  Control and manage the player view controller.

  See more

  #### Declaration

  Swift

      public protocol PlayerViewControllerAPI : UIViewController, PlayerAPI

- `PlaylistAPI`

  Control and manage the playlists

  See more

  #### Declaration

  Swift

      public protocol PlaylistAPI

- `DispatcherProtocol`

  Common dispatcher behaviour

  See more

  #### Declaration

  Swift

      public protocol DispatcherProtocol