|  |  |  | import SessionProtocolKit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @objc | 
					
						
							|  |  |  | public final class SNMessagingKitConfiguration : NSObject { | 
					
						
							|  |  |  |     public let storage: SessionMessagingKitStorageProtocol | 
					
						
							|  |  |  |     @objc public let signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore | 
					
						
							|  |  |  |     public let identityKeyStore: IdentityKeyStore | 
					
						
							|  |  |  |     public let sessionRestorationImplementation: SessionRestorationProtocol | 
					
						
							|  |  |  |     public let certificateValidator: SMKCertificateValidator | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @objc public static var shared: SNMessagingKitConfiguration! | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     fileprivate init( | 
					
						
							|  |  |  |         storage: SessionMessagingKitStorageProtocol, | 
					
						
							|  |  |  |         signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore, | 
					
						
							|  |  |  |         identityKeyStore: IdentityKeyStore, | 
					
						
							|  |  |  |         sessionRestorationImplementation: SessionRestorationProtocol, | 
					
						
							|  |  |  |         certificateValidator: SMKCertificateValidator | 
					
						
							|  |  |  |     ) { | 
					
						
							|  |  |  |         self.storage = storage | 
					
						
							|  |  |  |         self.signalStorage = signalStorage | 
					
						
							|  |  |  |         self.identityKeyStore = identityKeyStore | 
					
						
							|  |  |  |         self.sessionRestorationImplementation = sessionRestorationImplementation | 
					
						
							|  |  |  |         self.certificateValidator = certificateValidator | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public enum SNMessagingKit { // Just to make the external API nice | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public static func configure( | 
					
						
							|  |  |  |         storage: SessionMessagingKitStorageProtocol, | 
					
						
							|  |  |  |         signalStorage: SessionStore & PreKeyStore & SignedPreKeyStore, | 
					
						
							|  |  |  |         identityKeyStore: IdentityKeyStore, | 
					
						
							|  |  |  |         sessionRestorationImplementation: SessionRestorationProtocol, | 
					
						
							|  |  |  |         certificateValidator: SMKCertificateValidator | 
					
						
							|  |  |  |     ) { | 
					
						
							|  |  |  |         SNMessagingKitConfiguration.shared = SNMessagingKitConfiguration( | 
					
						
							|  |  |  |             storage: storage, | 
					
						
							|  |  |  |             signalStorage: signalStorage, | 
					
						
							|  |  |  |             identityKeyStore: identityKeyStore, | 
					
						
							|  |  |  |             sessionRestorationImplementation: sessionRestorationImplementation, | 
					
						
							|  |  |  |             certificateValidator: certificateValidator | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |