import type { NobjcObject } from "objc-js";
import type { _NSArray } from "./NSArray.js";
import type { _NSDate } from "./NSDate.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSPort } from "./NSPort.js";
import type { _NSString } from "./NSString.js";
import type { _NSTimer } from "./NSTimer.js";
export declare class _NSRunLoop extends _NSObject {
    static alloc(): _NSRunLoop;
    static new(): _NSRunLoop;
    init(): _NSRunLoop;
    static currentRunLoop(): _NSRunLoop;
    static mainRunLoop(): _NSRunLoop;
    getCFRunLoop(): NobjcObject;
    addTimer$forMode$(timer: _NSTimer, mode: _NSString): void;
    addPort$forMode$(aPort: _NSPort, mode: _NSString): void;
    removePort$forMode$(aPort: _NSPort, mode: _NSString): void;
    limitDateForMode$(mode: _NSString): _NSDate | null;
    acceptInputForMode$beforeDate$(mode: _NSString, limitDate: _NSDate): void;
    run(): void;
    /** @deprecated Not supported */
    runUntilDate$(limitDate: _NSDate): void;
    /** @deprecated Not supported */
    runMode$beforeDate$(mode: _NSString, limitDate: _NSDate): boolean;
    /** @deprecated Not supported */
    configureAsServer(): void;
    /**
     * Schedules the execution of a block on the target run loop in given modes. - parameter: modes An array of input modes for which the block may be executed. - parameter: block The block to execute
     */
    performInModes$block$(modes: _NSArray, block: () => void): void;
    /**
     * Schedules the execution of a block on the target run loop. - parameter: block The block to execute
     */
    performBlock$(block: () => void): void;
    performSelector$target$argument$order$modes$(aSelector: string, target: NobjcObject, arg: NobjcObject | null, order: number, modes: _NSArray): void;
    cancelPerformSelector$target$argument$(aSelector: string, target: NobjcObject, arg: NobjcObject | null): void;
    cancelPerformSelectorsWithTarget$(target: NobjcObject): void;
    currentMode(): _NSString | null;
}
