hunk.code_window:   public var resolver: ResolveClosure
     public var rejecter: RejectClosure
     public func resolve(_ value: Any? = nil) -> Void {
       resolver(value)
     }
  
hunk.labels: keep keep add keep keep keep keep
hunk.after_edit:   /**
      The rejecter that is compatible with the legacy `EXPromiseRejectBlock`.
      Necessary in some places not converted to Swift, such as `EXPermissionsMethodsDelegate`.
      */
     public var legacyRejecter: EXPromiseRejectBlock {
       return { code, description, error in
         reject(code ?? "", description ?? "")
       }
     }
  
hunk.file_path: packages/expo-modules-core/ios/Swift/Promise.swift
hunk.type: add
file: import ExpoModulesCore
  
  public class TrackingTransparencyModule: Module {
    public func definition() -> ModuleDefinition {
      name("ExpoTrackingTransparency")
  
      onCreate {
        EXPermissionsMethodsDelegate.register([EXTrackingPermissionRequester()], withPermissionsManager: self.appContext?.permissions)
      }
  
      method("getPermissionsAsync") { (promise: Promise) in
        EXPermissionsMethodsDelegate.getPermissionWithPermissionsManager(
          self.appContext?.permissions,
          withRequester: EXTrackingPermissionRequester.self,
          resolve: promise.resolver,
          reject: promise.rejecter
        )
      }
  
      method("requestPermissionsAsync") { (promise: Promise) in
        EXPermissionsMethodsDelegate.askForPermission(
          withPermissionsManager: self.appContext?.permissions,
          withRequester: EXTrackingPermissionRequester.self,
          resolve: promise.resolver,
          reject: promise.rejecter
        )
      }
    }
  }
  