// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.

#ifndef CHIME_SIGNALING_TRANSPORT_FACTORY_H_
#define CHIME_SIGNALING_TRANSPORT_FACTORY_H_

#include "signaling_transport.h"
#include "signaling_transport_configuration.h"
#include "websocket/websocket.h"

#include <memory>

namespace chime {
/**
 * Defines factory method for creating `SignalingTransport`. Builders will pass it to
 * `DefaultSignalingDependencies` in order to customize their own transport layer.
 */
class SignalingTransportFactory {
 public:
  virtual ~SignalingTransportFactory() = default;
  virtual std::unique_ptr<SignalingTransport> CreateSignalingTransport(SignalingTransportConfiguration configuration,
                                                                       SignalingTransportObserver* observer) = 0;
};

}  // namespace chime

#endif  // CHIME_SIGNALING_TRANSPORT_FACTORY_H_