// RelayAd.swift // Base class for ad implementations with delegate forwarding // Corresponds to RelayAd.kt in Android implementation import Foundation open class RelayAd: NSObject { public var listener: FusionAdListener? public let engineId: Int public init(engineId: Int) { self.engineId = engineId } // public methods for notifying listeners (called from subclasses) public func adLoaded(ad: FusionAd) { listener?.onAdLoaded(ad: ad) } public func adDisplayed(ad: FusionAd) { listener?.onAdDisplayed(ad: ad) } public func adHidden(ad: FusionAd) { listener?.onAdHidden(ad: ad) } public func adClicked(ad: FusionAd) { listener?.onAdClicked(ad: ad) } public func adUserRewarded(ad: FusionAd, reward: FusionReward) { listener?.onUserRewarded(ad: ad, reward: reward) } public func adLoadFailed(loadFailedInfo: LoadFailedInfo) { listener?.onAdLoadFailed(loadFailedInfo: loadFailedInfo) } public func adDisplayFailed(ad: FusionAd, error: FusionError) { listener?.onAdDisplayFailed(ad: ad, error: error) } public func adRevenuePaid(ad: FusionAd) { listener?.onAdRevenuePaid(ad: ad) } public func adBannerExpanded(ad: FusionAd) { listener?.onBannerAdExpanded(ad: ad) } public func adBannerCollapsed(ad: FusionAd) { listener?.onBannerAdCollapsed(ad: ad) } }