The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of XMTPiOS, reference 4.4.0 (6b990f), with Swift 6.1 for macOS (SPM) on 26 Aug 2025 03:00:39 UTC.

Swift 6 data race errors: 13

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:380:14: warning: no 'async' operations occur within 'await' expression
378 | 		options.direction = direction
379 |
380 | 		return try await ffiConversation.findMessagesWithReactions(
    |              `- warning: no 'async' operations occur within 'await' expression
381 | 			opts: options
382 | 		).compactMap {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:413:13: warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
411 |
412 |     public func getPushTopics() async throws -> [String] {
413 |         var duplicates = try await ffiConversation.findDuplicateDms()
    |             `- warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
414 |         var topicIds = duplicates.map { $0.id().toHex }
415 |         topicIds.append(id)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:308:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
306 | 			}
307 |
308 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
309 | 				let stream: FfiStreamCloser
310 | 				switch type {
    |            `- note: closure captures 'type' which is accessible to code in the current task
311 | 				case .groups:
312 | 					stream = await ffiConversations.streamGroups(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:279:10: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
277 | 			let conversationCallback = ConversationStreamCallback {
278 | 				conversation in
279 | 				Task {
    |          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
280 | 					guard !Task.isCancelled else {
281 | 						continuation.finish()
    :
288 | 							continuation.yield(
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
    |                                         `- note: closure captures 'self' which is accessible to code in the current task
291 | 							)
292 | 						} else if conversationType == .group {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:288:21: warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
286 | 							try await conversation.conversationType()
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
    |                     |- warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.dmFromFFI.dm' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:293:21: warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
291 | 							)
292 | 						} else if conversationType == .group {
293 | 							continuation.yield(
    |                     |- warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.groupFromFFI.group' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
294 | 								Conversation.group(
295 | 									conversation.groupFromFFI(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:578:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
576 | 			}
577 |
578 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
579 | 				let stream: FfiStreamCloser
580 | 				switch type {
    :
582 | 					stream = await ffiConversations.streamAllGroupMessages(
583 | 						messageCallback: messageCallback,
584 | 						consentStates: consentStates?.toFFI
    |                      `- note: closure captures 'consentStates' which is accessible to code in the current task
585 | 					)
586 | 				case .dms:
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:220:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
218 | 	public func streamMessages(onClose: (() -> Void)? = nil) -> AsyncThrowingStream<DecodedMessage, Error> {
219 | 		AsyncThrowingStream { continuation in
220 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
221 | 				self.streamHolder.stream = await self.ffiConversation.stream(
222 | 					messageCallback: MessageCallback {
    :
230 | 						}
231 | 					} onClose: {
232 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
233 | 						continuation.finish()
234 | 					}
[322/363] Compiling XMTPiOS Date.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:38:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 36 |
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 39 | 	let callback: (FfiConversation) -> Void
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:39:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
 39 | 	let callback: (FfiConversation) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 40 |
 41 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:286:12: warning: no 'async' operations occur within 'await' expression
284 | 					do {
285 | 						let conversationType =
286 | 							try await conversation.conversationType()
    |            `- warning: no 'async' operations occur within 'await' expression
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:286:8: warning: no calls to throwing functions occur within 'try' expression
284 | 					do {
285 | 						let conversationType =
286 | 							try await conversation.conversationType()
    |        `- warning: no calls to throwing functions occur within 'try' expression
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:299:8: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
297 | 							)
298 | 						}
299 | 					} catch {
    |        `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
300 | 						print("Error processing conversation type: \(error)")
301 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:238:6: warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  2 | import LibXMTP
  3 |
  4 | public struct Dm: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Dm' conform to the 'Sendable' protocol
  5 | 	var ffiConversation: FfiConversation
  6 | 	var ffiLastMessage: FfiMessage? = nil
    :
236 |
237 | 				continuation.onTermination = { @Sendable reason in
238 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
239 | 				}
240 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:244:5: warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  2 | import LibXMTP
  3 |
  4 | public struct Dm: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Dm' conform to the 'Sendable' protocol
  5 | 	var ffiConversation: FfiConversation
  6 | 	var ffiLastMessage: FfiMessage? = nil
    :
242 | 			continuation.onTermination = { @Sendable reason in
243 | 				task.cancel()
244 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
245 | 			}
246 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:380:14: warning: no 'async' operations occur within 'await' expression
378 | 		options.direction = direction
379 |
380 | 		return try await ffiConversation.findMessagesWithReactions(
    |              `- warning: no 'async' operations occur within 'await' expression
381 | 			opts: options
382 | 		).compactMap {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:413:13: warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
411 |
412 |     public func getPushTopics() async throws -> [String] {
413 |         var duplicates = try await ffiConversation.findDuplicateDms()
    |             `- warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
414 |         var topicIds = duplicates.map { $0.id().toHex }
415 |         topicIds.append(id)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:308:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
306 | 			}
307 |
308 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
309 | 				let stream: FfiStreamCloser
310 | 				switch type {
    |            `- note: closure captures 'type' which is accessible to code in the current task
311 | 				case .groups:
312 | 					stream = await ffiConversations.streamGroups(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:279:10: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
277 | 			let conversationCallback = ConversationStreamCallback {
278 | 				conversation in
279 | 				Task {
    |          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
280 | 					guard !Task.isCancelled else {
281 | 						continuation.finish()
    :
288 | 							continuation.yield(
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
    |                                         `- note: closure captures 'self' which is accessible to code in the current task
291 | 							)
292 | 						} else if conversationType == .group {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:288:21: warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
286 | 							try await conversation.conversationType()
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
    |                     |- warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.dmFromFFI.dm' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:293:21: warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
291 | 							)
292 | 						} else if conversationType == .group {
293 | 							continuation.yield(
    |                     |- warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.groupFromFFI.group' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
294 | 								Conversation.group(
295 | 									conversation.groupFromFFI(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:578:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
576 | 			}
577 |
578 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
579 | 				let stream: FfiStreamCloser
580 | 				switch type {
    :
582 | 					stream = await ffiConversations.streamAllGroupMessages(
583 | 						messageCallback: messageCallback,
584 | 						consentStates: consentStates?.toFFI
    |                      `- note: closure captures 'consentStates' which is accessible to code in the current task
585 | 					)
586 | 				case .dms:
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:220:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
218 | 	public func streamMessages(onClose: (() -> Void)? = nil) -> AsyncThrowingStream<DecodedMessage, Error> {
219 | 		AsyncThrowingStream { continuation in
220 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
221 | 				self.streamHolder.stream = await self.ffiConversation.stream(
222 | 					messageCallback: MessageCallback {
    :
230 | 						}
231 | 					} onClose: {
232 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
233 | 						continuation.finish()
234 | 					}
[323/363] Compiling XMTPiOS Ffi.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:38:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 36 |
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 39 | 	let callback: (FfiConversation) -> Void
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:39:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
 39 | 	let callback: (FfiConversation) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 40 |
 41 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:286:12: warning: no 'async' operations occur within 'await' expression
284 | 					do {
285 | 						let conversationType =
286 | 							try await conversation.conversationType()
    |            `- warning: no 'async' operations occur within 'await' expression
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:286:8: warning: no calls to throwing functions occur within 'try' expression
284 | 					do {
285 | 						let conversationType =
286 | 							try await conversation.conversationType()
    |        `- warning: no calls to throwing functions occur within 'try' expression
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:299:8: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
297 | 							)
298 | 						}
299 | 					} catch {
    |        `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
300 | 						print("Error processing conversation type: \(error)")
301 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:238:6: warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  2 | import LibXMTP
  3 |
  4 | public struct Dm: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Dm' conform to the 'Sendable' protocol
  5 | 	var ffiConversation: FfiConversation
  6 | 	var ffiLastMessage: FfiMessage? = nil
    :
236 |
237 | 				continuation.onTermination = { @Sendable reason in
238 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
239 | 				}
240 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:244:5: warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  2 | import LibXMTP
  3 |
  4 | public struct Dm: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Dm' conform to the 'Sendable' protocol
  5 | 	var ffiConversation: FfiConversation
  6 | 	var ffiLastMessage: FfiMessage? = nil
    :
242 | 			continuation.onTermination = { @Sendable reason in
243 | 				task.cancel()
244 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
245 | 			}
246 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:380:14: warning: no 'async' operations occur within 'await' expression
378 | 		options.direction = direction
379 |
380 | 		return try await ffiConversation.findMessagesWithReactions(
    |              `- warning: no 'async' operations occur within 'await' expression
381 | 			opts: options
382 | 		).compactMap {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:413:13: warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
411 |
412 |     public func getPushTopics() async throws -> [String] {
413 |         var duplicates = try await ffiConversation.findDuplicateDms()
    |             `- warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
414 |         var topicIds = duplicates.map { $0.id().toHex }
415 |         topicIds.append(id)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:308:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
306 | 			}
307 |
308 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
309 | 				let stream: FfiStreamCloser
310 | 				switch type {
    |            `- note: closure captures 'type' which is accessible to code in the current task
311 | 				case .groups:
312 | 					stream = await ffiConversations.streamGroups(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:279:10: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
277 | 			let conversationCallback = ConversationStreamCallback {
278 | 				conversation in
279 | 				Task {
    |          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
280 | 					guard !Task.isCancelled else {
281 | 						continuation.finish()
    :
288 | 							continuation.yield(
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
    |                                         `- note: closure captures 'self' which is accessible to code in the current task
291 | 							)
292 | 						} else if conversationType == .group {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:288:21: warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
286 | 							try await conversation.conversationType()
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
    |                     |- warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.dmFromFFI.dm' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:293:21: warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
291 | 							)
292 | 						} else if conversationType == .group {
293 | 							continuation.yield(
    |                     |- warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.groupFromFFI.group' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
294 | 								Conversation.group(
295 | 									conversation.groupFromFFI(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:578:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
576 | 			}
577 |
578 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
579 | 				let stream: FfiStreamCloser
580 | 				switch type {
    :
582 | 					stream = await ffiConversations.streamAllGroupMessages(
583 | 						messageCallback: messageCallback,
584 | 						consentStates: consentStates?.toFFI
    |                      `- note: closure captures 'consentStates' which is accessible to code in the current task
585 | 					)
586 | 				case .dms:
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:220:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
218 | 	public func streamMessages(onClose: (() -> Void)? = nil) -> AsyncThrowingStream<DecodedMessage, Error> {
219 | 		AsyncThrowingStream { continuation in
220 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
221 | 				self.streamHolder.stream = await self.ffiConversation.stream(
222 | 					messageCallback: MessageCallback {
    :
230 | 						}
231 | 					} onClose: {
232 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
233 | 						continuation.finish()
234 | 					}
[324/363] Compiling XMTPiOS String.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:38:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 36 |
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 39 | 	let callback: (FfiConversation) -> Void
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:39:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
 39 | 	let callback: (FfiConversation) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 40 |
 41 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:286:12: warning: no 'async' operations occur within 'await' expression
284 | 					do {
285 | 						let conversationType =
286 | 							try await conversation.conversationType()
    |            `- warning: no 'async' operations occur within 'await' expression
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:286:8: warning: no calls to throwing functions occur within 'try' expression
284 | 					do {
285 | 						let conversationType =
286 | 							try await conversation.conversationType()
    |        `- warning: no calls to throwing functions occur within 'try' expression
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:299:8: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
297 | 							)
298 | 						}
299 | 					} catch {
    |        `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
300 | 						print("Error processing conversation type: \(error)")
301 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:238:6: warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  2 | import LibXMTP
  3 |
  4 | public struct Dm: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Dm' conform to the 'Sendable' protocol
  5 | 	var ffiConversation: FfiConversation
  6 | 	var ffiLastMessage: FfiMessage? = nil
    :
236 |
237 | 				continuation.onTermination = { @Sendable reason in
238 | 					self.streamHolder.stream?.end()
    |      `- warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
239 | 				}
240 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:244:5: warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
  2 | import LibXMTP
  3 |
  4 | public struct Dm: Identifiable, Equatable, Hashable {
    |               `- note: consider making struct 'Dm' conform to the 'Sendable' protocol
  5 | 	var ffiConversation: FfiConversation
  6 | 	var ffiLastMessage: FfiMessage? = nil
    :
242 | 			continuation.onTermination = { @Sendable reason in
243 | 				task.cancel()
244 | 				self.streamHolder.stream?.end()
    |     `- warning: capture of 'self' with non-sendable type 'Dm' in a '@Sendable' closure; this is an error in the Swift 6 language mode
245 | 			}
246 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:380:14: warning: no 'async' operations occur within 'await' expression
378 | 		options.direction = direction
379 |
380 | 		return try await ffiConversation.findMessagesWithReactions(
    |              `- warning: no 'async' operations occur within 'await' expression
381 | 			opts: options
382 | 		).compactMap {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:413:13: warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
411 |
412 |     public func getPushTopics() async throws -> [String] {
413 |         var duplicates = try await ffiConversation.findDuplicateDms()
    |             `- warning: variable 'duplicates' was never mutated; consider changing to 'let' constant
414 |         var topicIds = duplicates.map { $0.id().toHex }
415 |         topicIds.append(id)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:308:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
306 | 			}
307 |
308 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
309 | 				let stream: FfiStreamCloser
310 | 				switch type {
    |            `- note: closure captures 'type' which is accessible to code in the current task
311 | 				case .groups:
312 | 					stream = await ffiConversations.streamGroups(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:279:10: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
277 | 			let conversationCallback = ConversationStreamCallback {
278 | 				conversation in
279 | 				Task {
    |          `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
280 | 					guard !Task.isCancelled else {
281 | 						continuation.finish()
    :
288 | 							continuation.yield(
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
    |                                         `- note: closure captures 'self' which is accessible to code in the current task
291 | 							)
292 | 						} else if conversationType == .group {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:288:21: warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
286 | 							try await conversation.conversationType()
287 | 						if conversationType == .dm {
288 | 							continuation.yield(
    |                     |- warning: sending 'conversation.dmFromFFI.dm' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.dmFromFFI.dm' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
289 | 								Conversation.dm(
290 | 									conversation.dmFromFFI(client: self.client))
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:293:21: warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
291 | 							)
292 | 						} else if conversationType == .group {
293 | 							continuation.yield(
    |                     |- warning: sending 'conversation.groupFromFFI.group' risks causing data races; this is an error in the Swift 6 language mode
    |                     `- note: task-isolated 'conversation.groupFromFFI.group' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
294 | 								Conversation.group(
295 | 									conversation.groupFromFFI(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:578:20: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
576 | 			}
577 |
578 | 			let task = Task {
    |                    `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
579 | 				let stream: FfiStreamCloser
580 | 				switch type {
    :
582 | 					stream = await ffiConversations.streamAllGroupMessages(
583 | 						messageCallback: messageCallback,
584 | 						consentStates: consentStates?.toFFI
    |                      `- note: closure captures 'consentStates' which is accessible to code in the current task
585 | 					)
586 | 				case .dms:
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Dm.swift:220:29: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
218 | 	public func streamMessages(onClose: (() -> Void)? = nil) -> AsyncThrowingStream<DecodedMessage, Error> {
219 | 		AsyncThrowingStream { continuation in
220 | 			let task = Task.detached {
    |                             `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
221 | 				self.streamHolder.stream = await self.ffiConversation.stream(
222 | 					messageCallback: MessageCallback {
    :
230 | 						}
231 | 					} onClose: {
232 | 						onClose?()
    |       `- note: closure captures 'onClose' which is accessible to code in the current task
233 | 						continuation.finish()
234 | 					}
[325/363] Compiling XMTPiOS Client.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[326/363] Compiling XMTPiOS CodecRegistry.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[327/363] Compiling XMTPiOS AttachmentCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[328/363] Compiling XMTPiOS ContentCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[329/363] Compiling XMTPiOS ContentTypeID.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[330/363] Compiling XMTPiOS EncryptedEncodedContent.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[331/363] Compiling XMTPiOS GroupUpdatedCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[332/363] Compiling XMTPiOS MultiRemoteAttachmentCodec.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:302:7: warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 300 | 		let alias = "xmtp-\(options.api.env.rawValue)-\(inboxId).db3"
 301 | 		var dbURL = directoryURL.appendingPathComponent(alias).path
 302 | 		var fileExists = FileManager.default.fileExists(atPath: dbURL)
     |       `- warning: variable 'fileExists' was never mutated; consider changing to 'let' constant
 303 |
 304 | 		if !fileExists {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:370:4: warning: no calls to throwing functions occur within 'try' expression
 368 | 		// Check for an existing connected client
 369 | 		if let cached = await apiCache.getClient(forKey: cacheKey),
 370 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 371 | 		{
 372 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:393:4: warning: no calls to throwing functions occur within 'try' expression
 391 | 		// Check for an existing connected client
 392 | 		if let cached = await apiCache.getSyncClient(forKey: cacheKey),
 393 | 			try await LibXMTP.isConnected(api: cached)
     |    `- warning: no calls to throwing functions occur within 'try' expression
 394 | 		{
 395 | 			return cached
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:613:36: warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 611 | 		recoveryAccount: SigningKey, identityToRemove: PublicIdentity
 612 | 	) async throws {
 613 | 		let signatureRequest = try await ffiRevokeIdentity(
     |                                    `- warning: 'ffiRevokeIdentity(identityToRemove:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `removeIdentity()` instead.
 614 | 			identityToRemove: identityToRemove)
 615 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:619:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 617 | 				for: signatureRequest.ffiSignatureRequest,
 618 | 				signingKey: recoveryAccount)
 619 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 620 | 				signatureRequest: signatureRequest)
 621 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:629:36: warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 627 | 	public func revokeAllOtherInstallations(signingKey: SigningKey) async throws
 628 | 	{
 629 | 		let signatureRequest = try await ffiRevokeAllOtherInstallations()
     |                                    `- warning: 'ffiRevokeAllOtherInstallations()' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeAllOtherInstallations()` instead.
 630 | 		do {
 631 | 			try await Client.handleSignature(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:634:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 632 | 				for: signatureRequest.ffiSignatureRequest,
 633 | 				signingKey: signingKey)
 634 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 635 | 				signatureRequest: signatureRequest)
 636 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:646:36: warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 644 | 	) async throws {
 645 | 		let installations = installationIds.map { $0.hexToData }
 646 | 		let signatureRequest = try await ffiRevokeInstallations(
     |                                    `- warning: 'ffiRevokeInstallations(ids:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `revokeInstallations()` instead.
 647 | 			ids: installations)
 648 | 		do {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:652:14: warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 650 | 				for: signatureRequest.ffiSignatureRequest,
 651 | 				signingKey: signingKey)
 652 | 			try await ffiApplySignatureRequest(
     |              `- warning: 'ffiApplySignatureRequest(signatureRequest:)' is deprecated: This function is delicate and should be used with caution.
Should only be used if trying to manage the signature flow independently;
otherwise use `addAccount()`, `removeAccount()`, or `revoke()` instead.
 653 | 				signatureRequest: signatureRequest)
 654 | 		} catch {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:679:7: warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 677 |
 678 | 	public func deleteLocalDatabase() throws {
 679 | 		try dropLocalDatabaseConnection()
     |       `- warning: 'dropLocalDatabaseConnection()' is deprecated: This function is delicate and should be used with caution. App will error if database not properly reconnected. See: reconnectLocalDatabase()
 680 | 		let fm = FileManager.default
 681 | 		try fm.removeItem(atPath: dbPath)
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:1072:5: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1070 | 		do {
1071 | 			deactivatePersistentLibXMTPLogWriter()
1072 | 		} catch {
     |     `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
1073 | 			// Log writer might not be active, continue with deletion
1074 | 		}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Codecs/GroupUpdatedCodec.swift:32:14: warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
30 |
31 | 	public func decode(content: EncodedContent) throws -> GroupUpdated {
32 | 		return try GroupUpdated(serializedData: content.content)
   |              |- warning: 'init(serializedData:extensions:partial:options:)' is deprecated: replaced by 'init(serializedBytes:extensions:partial:options:)'
   |              `- note: use 'init(serializedBytes:extensions:partial:options:)' instead
33 | 	}
34 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:127:53: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
 125 | 		ffiClient: ffiClient)
 126 |
 127 | 	public lazy var preferences: PrivatePreferences = .init(
     |                                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
     |                                                     `- note: sending task-isolated 'self' to actor-isolated callee risks causing data races between actor-isolated and task-isolated uses
 128 | 		client: self, ffiClient: ffiClient)
 129 |
[333/363] Emitting module XMTPiOS
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:133:13: warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 131 | 		client: self, ffiClient: ffiClient)
 132 |
 133 | 	static var codecRegistry = CodecRegistry()
     |             |- warning: static property 'codecRegistry' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
     |             |- note: convert 'codecRegistry' to a 'let' constant to make 'Sendable' shared state immutable
     |             |- note: add '@MainActor' to make static property 'codecRegistry' part of global actor 'MainActor'
     |             `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 134 |
 135 | 	public static func register(codec: any ContentCodec) {
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:38:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 36 |
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 39 | 	let callback: (FfiConversation) -> Void
 40 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Conversations.swift:39:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
 37 | final class ConversationStreamCallback: FfiConversationCallback {
 38 | 	let onCloseCallback: () -> Void
 39 | 	let callback: (FfiConversation) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConversationStreamCallback' has non-sendable type '(FfiConversation) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 40 |
 41 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:13:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
 11 | 	}
 12 |
 13 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
 15 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Group.swift:14:6: warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
 12 |
 13 | 	let onCloseCallback: () -> Void
 14 | 	let callback: (LibXMTP.FfiMessage) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'MessageCallback' has non-sendable type '(FfiMessage) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 15 |
 16 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/XMTPEnvironment.swift:17:20: warning: static property 'customLocalAddress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
15 |
16 | 	// Optional override for the local environment
17 | 	public static var customLocalAddress: String?
   |                    |- warning: static property 'customLocalAddress' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                    |- note: convert 'customLocalAddress' to a 'let' constant to make 'Sendable' shared state immutable
   |                    |- note: add '@MainActor' to make static property 'customLocalAddress' part of global actor 'MainActor'
   |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
18 |
19 | 	var address: String {
[334/363] Compiling XMTPiOS conversation_reference.pb.swift
[335/363] Compiling XMTPiOS ecies.pb.swift
[336/363] Compiling XMTPiOS frames.pb.swift
[337/363] Compiling XMTPiOS invitation.pb.swift
[338/363] Compiling XMTPiOS message.pb.swift
[339/363] Compiling XMTPiOS private_key.pb.swift
[340/363] Compiling XMTPiOS private_preferences.pb.swift
[341/363] Compiling XMTPiOS public_key.pb.swift
[342/363] Compiling XMTPiOS group_metadata.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[343/363] Compiling XMTPiOS group_mutable_metadata.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[344/363] Compiling XMTPiOS group_permissions.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[345/363] Compiling XMTPiOS transcript_messages.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[346/363] Compiling XMTPiOS XMTPPush.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[347/363] Compiling XMTPiOS service.connect.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[348/363] Compiling XMTPiOS service.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Push/XMTPPush.swift:127:20: warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
125 | #else
126 | public struct XMTPPush {
127 | 	public static var shared = XMTPPush()
    |                    |- warning: static property 'shared' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                    |- note: convert 'shared' to a 'let' constant to make 'Sendable' shared state immutable
    |                    |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                    `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
128 | 	private init() {
129 | 		fatalError("XMTPPush not available")
[349/363] Compiling XMTPiOS signature.pb.swift
[350/363] Compiling XMTPiOS signed_payload.pb.swift
[351/363] Compiling XMTPiOS mls.pb.swift
[352/363] Compiling XMTPiOS intents.pb.swift
[353/363] Compiling XMTPiOS association.pb.swift
[354/363] Compiling XMTPiOS credential.pb.swift
[355/363] Compiling XMTPiOS group_membership.pb.swift
[356/363] Compiling XMTPiOS PrivatePreferences.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[357/363] Compiling XMTPiOS keystore.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[358/363] Compiling XMTPiOS authn.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[359/363] Compiling XMTPiOS message_api.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[360/363] Compiling XMTPiOS ciphertext.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[361/363] Compiling XMTPiOS composite.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[362/363] Compiling XMTPiOS contact.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[363/363] Compiling XMTPiOS content.pb.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:168:6: warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
166 |
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:169:6: warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
167 | final class ConsentCallback: FfiConsentCallback {
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '([FfiConsent]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
170 | 	let onCloseCallback: () -> Void
171 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:170:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
168 | 	let client: Client
169 | 	let callback: ([FfiConsent]) -> Void
170 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'ConsentCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
171 |
172 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:195:6: warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
193 |
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
    |      `- warning: stored property 'client' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type 'Client'; this is an error in the Swift 6 language mode
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/Client.swift:113:20: note: class 'Client' does not conform to the 'Sendable' protocol
 111 | public typealias InboxId = String
 112 |
 113 | public final class Client {
     |                    `- note: class 'Client' does not conform to the 'Sendable' protocol
 114 | 	public let inboxID: InboxId
 115 | 	public let libXMTPVersion: String = getVersionInfo()
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:196:6: warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
194 | final class PreferenceCallback: FfiPreferenceCallback {
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
    |      |- warning: stored property 'callback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '([FfiPreferenceUpdate]) -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
197 | 	let onCloseCallback: () -> Void
198 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:197:6: warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
195 | 	let client: Client
196 | 	let callback: ([FfiPreferenceUpdate]) -> Void
197 | 	let onCloseCallback: () -> Void
    |      |- warning: stored property 'onCloseCallback' of 'Sendable'-conforming class 'PreferenceCallback' has non-sendable type '() -> Void'; this is an error in the Swift 6 language mode
    |      `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
198 |
199 | 	init(
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:77:23: warning: result of call to 'syncPreferences()' is unused
 75 |
 76 | 	public func sync() async throws {
 77 | 		try await ffiClient.syncPreferences()
    |                       `- warning: result of call to 'syncPreferences()' is unused
 78 | 	}
 79 |
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:142:24: warning: immutable value 'key' was never used; consider replacing with '_' or removing it
140 | 				}
141 | 				for preference in records {
142 | 					if case .hmac(let key) = preference {
    |                        `- warning: immutable value 'key' was never used; consider replacing with '_' or removing it
143 | 						continuation.yield(.hmac_keys)
144 | 					}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:107:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
 89 | 		-> AsyncThrowingStream<ConsentRecord, Error>
 90 | 	{
 91 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
 92 | 			let ffiStreamActor = FfiStreamActor()
 93 |
    :
105 | 				}
106 | 			} onClose: {
107 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
108 | 				continuation.finish()
109 | 			}
/Users/admin/builder/spi-builder-workspace/Sources/XMTPiOS/PrivatePreferences.swift:147:5: warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
127 | 		-> AsyncThrowingStream<PreferenceType, Error>
128 | 	{
129 | 		AsyncThrowingStream { continuation in
    |   `- note: access can happen concurrently
130 | 			let ffiStreamActor = FfiStreamActor()
131 |
    :
145 | 				}
146 | 			} onClose: {
147 | 				onClose?()
    |     |- warning: sending 'onClose' risks causing data races; this is an error in the Swift 6 language mode
    |     `- note: 'self'-isolated 'onClose' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later nonisolated uses
148 | 				continuation.finish()
149 | 			}
[364/365] Emitting module XMTPTestHelpers
[365/365] Compiling XMTPTestHelpers TestHelpers.swift
Build complete! (34.40s)
warning: 'libxmtp-swift': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/.build/checkouts/libxmtp-swift/Sources/LibXMTP/libxmtp-version.txt
Build complete.
{
  "dependencies" : [
    {
      "identity" : "csecp256k1.swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.2.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/tesseract-one/CSecp256k1.swift.git"
    },
    {
      "identity" : "connect-swift",
      "requirement" : {
        "exact" : [
          "1.0.0"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/bufbuild/connect-swift"
    },
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin.git"
    },
    {
      "identity" : "cryptoswift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.8.4",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/krzyzanowskim/CryptoSwift.git"
    },
    {
      "identity" : "libxmtp-swift",
      "requirement" : {
        "exact" : [
          "4.4.0"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/xmtp/libxmtp-swift.git"
    }
  ],
  "manifest_display_name" : "XMTPiOS",
  "name" : "XMTPiOS",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "macos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "XMTPiOS",
      "targets" : [
        "XMTPiOS"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "XMTPTestHelpers",
      "targets" : [
        "XMTPTestHelpers"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "XMTPiOS",
      "module_type" : "SwiftTarget",
      "name" : "XMTPiOS",
      "path" : "Sources/XMTPiOS",
      "product_dependencies" : [
        "CSecp256k1",
        "Connect",
        "LibXMTP",
        "CryptoSwift"
      ],
      "product_memberships" : [
        "XMTPiOS",
        "XMTPTestHelpers"
      ],
      "sources" : [
        "Client.swift",
        "CodecRegistry.swift",
        "Codecs/AttachmentCodec.swift",
        "Codecs/ContentCodec.swift",
        "Codecs/ContentTypeID.swift",
        "Codecs/EncryptedEncodedContent.swift",
        "Codecs/GroupUpdatedCodec.swift",
        "Codecs/MultiRemoteAttachmentCodec.swift",
        "Codecs/ReactionCodec.swift",
        "Codecs/ReactionV2Codec.swift",
        "Codecs/ReadReceiptCodec.swift",
        "Codecs/RemoteAttachmentCodec.swift",
        "Codecs/ReplyCodec.swift",
        "Codecs/TextCodec.swift",
        "Codecs/TransactionReferenceCodec.swift",
        "Conversation.swift",
        "Conversations.swift",
        "Crypto.swift",
        "Dm.swift",
        "EncodedContentCompression.swift",
        "Extensions/Data.swift",
        "Extensions/Date.swift",
        "Extensions/Ffi.swift",
        "Extensions/String.swift",
        "Extensions/URL.swift",
        "Group.swift",
        "KeyUtil.swift",
        "Libxmtp/ArchiveOptions.swift",
        "Libxmtp/ConversationDebugInfo.swift",
        "Libxmtp/DecodedMessage.swift",
        "Libxmtp/DisappearingMessageSettings.swift",
        "Libxmtp/GroupMembershipResult.swift",
        "Libxmtp/InboxState.swift",
        "Libxmtp/Installation.swift",
        "Libxmtp/Member.swift",
        "Libxmtp/PermissionPolicySet.swift",
        "Libxmtp/PublicIdentity.swift",
        "Libxmtp/SignatureRequest.swift",
        "Libxmtp/XMTPDebugInformation.swift",
        "Messages/PrivateKey.swift",
        "PrivatePreferences.swift",
        "Proto/keystore_api/v1/keystore.pb.swift",
        "Proto/message_api/v1/authn.pb.swift",
        "Proto/message_api/v1/message_api.pb.swift",
        "Proto/message_contents/ciphertext.pb.swift",
        "Proto/message_contents/composite.pb.swift",
        "Proto/message_contents/contact.pb.swift",
        "Proto/message_contents/content.pb.swift",
        "Proto/message_contents/conversation_reference.pb.swift",
        "Proto/message_contents/ecies.pb.swift",
        "Proto/message_contents/frames.pb.swift",
        "Proto/message_contents/invitation.pb.swift",
        "Proto/message_contents/message.pb.swift",
        "Proto/message_contents/private_key.pb.swift",
        "Proto/message_contents/private_preferences.pb.swift",
        "Proto/message_contents/public_key.pb.swift",
        "Proto/message_contents/signature.pb.swift",
        "Proto/message_contents/signed_payload.pb.swift",
        "Proto/mls/api/v1/mls.pb.swift",
        "Proto/mls/database/intents.pb.swift",
        "Proto/mls/message_contents/association.pb.swift",
        "Proto/mls/message_contents/credential.pb.swift",
        "Proto/mls/message_contents/group_membership.pb.swift",
        "Proto/mls/message_contents/group_metadata.pb.swift",
        "Proto/mls/message_contents/group_mutable_metadata.pb.swift",
        "Proto/mls/message_contents/group_permissions.pb.swift",
        "Proto/mls/message_contents/transcript_messages.pb.swift",
        "Push/XMTPPush.swift",
        "Push/service.connect.swift",
        "Push/service.pb.swift",
        "SendOptions.swift",
        "SignedData.swift",
        "SigningKey.swift",
        "Topic.swift",
        "Util.swift",
        "XMTPEnvironment.swift",
        "XMTPLogger.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "XMTPTests",
      "module_type" : "SwiftTarget",
      "name" : "XMTPTests",
      "path" : "Tests/XMTPTests",
      "sources" : [
        "ArchiveTests.swift",
        "AttachmentTests.swift",
        "ClientTests.swift",
        "CodecTests.swift",
        "ConversationTests.swift",
        "CryptoTests.swift",
        "DmTests.swift",
        "GroupPermissionsTests.swift",
        "GroupTests.swift",
        "HistorySyncTests.swift",
        "MultiRemoteAttachmentTest.swift",
        "PerformanceTests.swift",
        "ReactionTests.swift",
        "ReadReceiptTests.swift",
        "RemoteAttachmentTest.swift",
        "ReplyTests.swift",
        "TransactionReferencesTests.swift"
      ],
      "target_dependencies" : [
        "XMTPiOS",
        "XMTPTestHelpers"
      ],
      "type" : "test"
    },
    {
      "c99name" : "XMTPTestHelpers",
      "module_type" : "SwiftTarget",
      "name" : "XMTPTestHelpers",
      "path" : "Sources/XMTPTestHelpers",
      "product_memberships" : [
        "XMTPTestHelpers"
      ],
      "sources" : [
        "TestHelpers.swift"
      ],
      "target_dependencies" : [
        "XMTPiOS"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
Done.