import Foundation

/// Provides shared card upload and cleanup functionality for App Clip sharing.
protocol SharedCardProviding: Sendable {
    /// Uploads a business card to CloudKit public database for App Clip access.
    /// - Parameter card: The business card to share.
    /// - Returns: Upload result containing the App Clip URL and expiration date.
    @MainActor
    func uploadSharedCard(_ card: BusinessCard) async throws -> SharedCardUploadResult

    /// Cleans up expired shared cards from CloudKit.
    /// This is a best-effort operation that does not throw errors.
    func cleanupExpiredCards() async
}
