// AUTOGENERATED FILE - DO NOT MODIFY!
// This file was generated by Djinni from libdc.djinni

#import "DCCertificateType.h"
#import "DCIceServer.h"
#import "DCProxyServer.h"
#import "DCTransportPolicy.h"
#import <Foundation/Foundation.h>

@interface DCConfiguration : NSObject
- (nonnull instancetype)init NS_UNAVAILABLE;
+ (nonnull instancetype)new NS_UNAVAILABLE;
- (nonnull instancetype)initWithIceServers:(nonnull NSArray<DCIceServer *> *)iceServers
                               proxyServer:(nullable DCProxyServer *)proxyServer
                               bindAddress:(nullable NSString *)bindAddress
                           certificateType:(DCCertificateType)certificateType
                        iceTransportPolicy:(DCTransportPolicy)iceTransportPolicy
                              enableIceTcp:(BOOL)enableIceTcp
                           enableIceUdpMux:(BOOL)enableIceUdpMux
                    disableAutoNegotiation:(BOOL)disableAutoNegotiation
                       forceMediaTransport:(BOOL)forceMediaTransport
                            portRangeBegin:(int32_t)portRangeBegin
                              portRangeEnd:(int32_t)portRangeEnd
                                       mtu:(nullable NSNumber *)mtu
                            maxMessageSize:(nullable NSNumber *)maxMessageSize NS_DESIGNATED_INITIALIZER;
+ (nonnull instancetype)ConfigurationWithIceServers:(nonnull NSArray<DCIceServer *> *)iceServers
                                        proxyServer:(nullable DCProxyServer *)proxyServer
                                        bindAddress:(nullable NSString *)bindAddress
                                    certificateType:(DCCertificateType)certificateType
                                 iceTransportPolicy:(DCTransportPolicy)iceTransportPolicy
                                       enableIceTcp:(BOOL)enableIceTcp
                                    enableIceUdpMux:(BOOL)enableIceUdpMux
                             disableAutoNegotiation:(BOOL)disableAutoNegotiation
                                forceMediaTransport:(BOOL)forceMediaTransport
                                     portRangeBegin:(int32_t)portRangeBegin
                                       portRangeEnd:(int32_t)portRangeEnd
                                                mtu:(nullable NSNumber *)mtu
                                     maxMessageSize:(nullable NSNumber *)maxMessageSize;

@property (nonatomic, readonly, nonnull) NSArray<DCIceServer *> * iceServers;

@property (nonatomic, readonly, nullable) DCProxyServer * proxyServer;

@property (nonatomic, readonly, nullable) NSString * bindAddress;

@property (nonatomic, readonly) DCCertificateType certificateType;

@property (nonatomic, readonly) DCTransportPolicy iceTransportPolicy;

@property (nonatomic, readonly) BOOL enableIceTcp;

@property (nonatomic, readonly) BOOL enableIceUdpMux;

@property (nonatomic, readonly) BOOL disableAutoNegotiation;

@property (nonatomic, readonly) BOOL forceMediaTransport;

@property (nonatomic, readonly) int32_t portRangeBegin;

@property (nonatomic, readonly) int32_t portRangeEnd;

@property (nonatomic, readonly, nullable) NSNumber * mtu;

@property (nonatomic, readonly, nullable) NSNumber * maxMessageSize;

@end
