text: #import <Foundation/NSObject.h>
  #import <Foundation/NSDate.h>
  #import <CoreFoundation/CFRunLoop.h>
  
  @import Foundation;
  @import JavaScriptCore;
  
  @protocol JSBNSObject;
  
  @protocol JSBNSRunLoop <JSExport, JSBNSObject>
  
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wdeprecated-declarations"
  
  + (NSRunLoop *)currentRunLoop;
  + (NSRunLoop *)mainRunLoop;
  + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(id)anArgument;
  + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget;
  
  - (NSString *)currentMode;
  - (id)getCFRunLoop;
  - (void)addTimer:(NSTimer *)timer forMode:(NSString *)mode;
  - (void)addPort:(NSPort *)aPort forMode:(NSString *)mode;
  - (void)removePort:(NSPort *)aPort forMode:(NSString *)mode;
  - (NSDate *)limitDateForMode:(NSString *)mode;
  - (void)acceptInputForMode:(NSString *)mode beforeDate:(NSDate *)limitDate;
  - (void)run;
  - (void)runUntilDate:(NSDate *)limitDate;
  - (BOOL)runMode:(NSString *)mode beforeDate:(NSDate *)limitDate;
  - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes;
  - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
  - (void)performSelector:(SEL)aSelector target:(id)target argument:(id)arg order:(NSUInteger)order modes:(NSArray *)modes;
  - (void)cancelPerformSelector:(SEL)aSelector target:(id)target argument:(id)arg;
  - (void)cancelPerformSelectorsWithTarget:(id)target;
  
  #pragma clang diagnostic pop
  
  @end
  