Public declaration syntax from forge-swift/Sources/ForgeComm/ProtocolNegotiation.swift Original source SHA-256: c61ee77620f6ce6f7d75d854c6ed73f8489b87fb8ee724aa17336b81c3cadadd Function bodies and constant values are omitted. This is not the complete implementation. Source line 21 public struct ProtocolOffer: Codable, Sendable, Equatable Source line 23 public let offererDid: String /// The list of supported protocol identifiers, in preference order. public let protocols: [String] /// When the offer was created. public let timestamp: Timestamp /// Creates a new protocol offer. /// /// - Parameters: /// - offererDid: The offering agent's DID. /// - protocols: Supported protocol identifiers in preference order. /// - timestamp: Offer creation time. Defaults to now. public init( offererDid: String, protocols: [String], timestamp: Timestamp; Source line 25 public let protocols: [String] /// When the offer was created. public let timestamp: Timestamp /// Creates a new protocol offer. /// /// - Parameters: /// - offererDid: The offering agent's DID. /// - protocols: Supported protocol identifiers in preference order. /// - timestamp: Offer creation time. Defaults to now. public init( offererDid: String, protocols: [String], timestamp: Timestamp; Source line 27 public let timestamp: Timestamp /// Creates a new protocol offer. /// /// - Parameters: /// - offererDid: The offering agent's DID. /// - protocols: Supported protocol identifiers in preference order. /// - timestamp: Offer creation time. Defaults to now. public init( offererDid: String, protocols: [String], timestamp: Timestamp; Source line 35 public init( offererDid: String, protocols: [String], timestamp: Timestamp; Source line 51 public struct ProtocolAccept: Codable, Sendable, Equatable Source line 53 public let accepterDid: String /// The selected protocol identifier. public let selectedProtocol: String /// When the acceptance was created. public let timestamp: Timestamp /// Creates a new protocol acceptance. /// /// - Parameters: /// - accepterDid: The accepting agent's DID. /// - selectedProtocol: The selected protocol identifier. /// - timestamp: Acceptance creation time. Defaults to now. public init( accepterDid: String, selectedProtocol: String, timestamp: Timestamp; Source line 55 public let selectedProtocol: String /// When the acceptance was created. public let timestamp: Timestamp /// Creates a new protocol acceptance. /// /// - Parameters: /// - accepterDid: The accepting agent's DID. /// - selectedProtocol: The selected protocol identifier. /// - timestamp: Acceptance creation time. Defaults to now. public init( accepterDid: String, selectedProtocol: String, timestamp: Timestamp; Source line 57 public let timestamp: Timestamp /// Creates a new protocol acceptance. /// /// - Parameters: /// - accepterDid: The accepting agent's DID. /// - selectedProtocol: The selected protocol identifier. /// - timestamp: Acceptance creation time. Defaults to now. public init( accepterDid: String, selectedProtocol: String, timestamp: Timestamp; Source line 65 public init( accepterDid: String, selectedProtocol: String, timestamp: Timestamp; Source line 89 public func negotiateProtocol( offer: ProtocolOffer, supportedProtocols: [String], responderDid: String ) throws -> ProtocolAccept