content: package im.actor.runtime;
  
  import com.google.j2objc.annotations.ObjectiveCName;
  
  import org.jetbrains.annotations.NotNull;
  
  import im.actor.runtime.promise.Promise;
  import im.actor.runtime.webrtc.WebRTCIceServer;
  import im.actor.runtime.webrtc.WebRTCMediaStream;
  import im.actor.runtime.webrtc.WebRTCPeerConnection;
  import im.actor.runtime.webrtc.WebRTCSettings;
  
  /**
   * Web RTC support runtime
   */
  public interface WebRTCRuntime {
  
      /**
       * Creating of WebRTC peer connection
       *
       * @param webRTCIceServers servers for peer connection
       * @param settings         settings for peer connection
       * @return promise of peer connection
       */
      @NotNull
      @ObjectiveCName("createPeerConnectionWithServers:withSettings:")
      Promise<WebRTCPeerConnection> createPeerConnection(WebRTCIceServer[] webRTCIceServers,
                                                         WebRTCSettings settings);
  
      /**
       * Getting User Audio stream
       *
       * @return promise of audio stream
       */
      @NotNull
      @ObjectiveCName("getUserMediaWithIsAudioEnabled:withIsVideoEnabled:")
      Promise<WebRTCMediaStream> getUserMedia(boolean isAudioEnabled, boolean isVideoEnabled);
  
      /**
       * Return if implementation supports pre-connection technique
       *
       * @return true if preconnections are supported
       */
      @ObjectiveCName("supportsPreConnections")
      boolean supportsPreConnections();
  }
  