// // Copyright 2025 Element Creations Ltd. // Copyright 2024-2025 New Vector Ltd. // // SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. // Please see LICENSE files in the repository root for full details. // import Foundation nonisolated enum KnockRequestProxyError: Error { case sdkError(Error) } // sourcery: AutoMockable nonisolated protocol KnockRequestProxyProtocol: Sendable { var eventID: String { get } var userID: String { get } var displayName: String? { get } var avatarURL: URL? { get } var reason: String? { get } var formattedTimestamp: String? { get } var isSeen: Bool { get } func accept() async -> Result func decline() async -> Result func ban() async -> Result func markAsSeen() async -> Result }