|  |  |  | import SessionProtocolKit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public struct Configuration { | 
					
						
							|  |  |  |     public let storage: SessionMessagingKitStorageProtocol | 
					
						
							|  |  |  |     public let messageSenderDelegate: MessageSenderDelegate | 
					
						
							|  |  |  |     public let messageReceiverDelegate: MessageReceiverDelegate | 
					
						
							|  |  |  |     public let signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore | 
					
						
							|  |  |  |     public let identityKeyStore: IdentityKeyStore | 
					
						
							|  |  |  |     public let sessionRestorationImplementation: SessionRestorationProtocol | 
					
						
							|  |  |  |     public let certificateValidator: SMKCertificateValidator | 
					
						
							|  |  |  |     public let openGroupAPIDelegate: OpenGroupAPIDelegate | 
					
						
							|  |  |  |     public let pnServerURL: String | 
					
						
							|  |  |  |     public let pnServerPublicKey: String | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     internal static var shared: Configuration! | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public enum SNMessagingKit { // Just to make the external API nice | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public static func configure( | 
					
						
							|  |  |  |         storage: SessionMessagingKitStorageProtocol, | 
					
						
							|  |  |  |         messageSenderDelegate: MessageSenderDelegate, | 
					
						
							|  |  |  |         messageReceiverDelegate: MessageReceiverDelegate, | 
					
						
							|  |  |  |         signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore, | 
					
						
							|  |  |  |         identityKeyStore: IdentityKeyStore, | 
					
						
							|  |  |  |         sessionRestorationImplementation: SessionRestorationProtocol, | 
					
						
							|  |  |  |         certificateValidator: SMKCertificateValidator, | 
					
						
							|  |  |  |         openGroupAPIDelegate: OpenGroupAPIDelegate, | 
					
						
							|  |  |  |         pnServerURL: String, | 
					
						
							|  |  |  |         pnServerPublicKey: String | 
					
						
							|  |  |  |     ) { | 
					
						
							|  |  |  |         Configuration.shared = Configuration( | 
					
						
							|  |  |  |             storage: storage, | 
					
						
							|  |  |  |             messageSenderDelegate: messageSenderDelegate, | 
					
						
							|  |  |  |             messageReceiverDelegate: messageReceiverDelegate, | 
					
						
							|  |  |  |             signalStorage: signalStorage, | 
					
						
							|  |  |  |             identityKeyStore: identityKeyStore, | 
					
						
							|  |  |  |             sessionRestorationImplementation: sessionRestorationImplementation, | 
					
						
							|  |  |  |             certificateValidator: certificateValidator, | 
					
						
							|  |  |  |             openGroupAPIDelegate: openGroupAPIDelegate, | 
					
						
							|  |  |  |             pnServerURL: pnServerURL, | 
					
						
							|  |  |  |             pnServerPublicKey: pnServerPublicKey | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |