// VoiceCatConfig — Swift-idiomatic mirror of `vc_config` (voicecat.h). Passed to // VoiceCatClient.init. The native CString storage for the string fields is held for the // client's entire lifetime inside VoiceCatClient — see VoiceCatClient.swift's doc comment // on why (the core stores raw pointers from vc_config by value, it does not copy the data). import VoiceCatC /// Configuration for a `VoiceCatClient`. Mirrors `vc_config`. public struct VoiceCatConfig: Sendable { /// E.g. "VoiceCat-macOS". Forwarded in `ClientHello.client_name`. public let clientName: String /// E.g. "0.0.1". Forwarded in `ClientHello.client_version`. public let clientVersion: String public let logLevel: VoiceCatLogLevel /// Path to the TOFU pin file (see `confirmServerIdentity` / docs/security.md §1.1). /// nil = built-in relative default (only suitable for tests). public let tofuStorePath: String? public init( clientName: String, clientVersion: String, logLevel: VoiceCatLogLevel = .info, tofuStorePath: String? = nil ) { self.clientName = clientName self.clientVersion = clientVersion self.logLevel = logLevel self.tofuStorePath = tofuStorePath } }