import type { NobjcObject } from "objc-js";
import type { _NSCoder } from "./NSCoder.js";
import type { _NSCopying } from "./NSCopying.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSString } from "./NSString.js";
export declare class _NSSortDescriptor extends _NSObject {
    static alloc(): _NSSortDescriptor;
    static new(): _NSSortDescriptor;
    init(): _NSSortDescriptor;
    static sortDescriptorWithKey$ascending$(key: _NSString | null, ascending: boolean): _NSSortDescriptor;
    static sortDescriptorWithKey$ascending$selector$(key: _NSString | null, ascending: boolean, selector: string | null): _NSSortDescriptor;
    static sortDescriptorWithKey$ascending$comparator$(key: _NSString | null, ascending: boolean, cmptr: (arg0: NobjcObject, arg1: NobjcObject) => number): _NSSortDescriptor;
    /** keys may be key paths */
    initWithKey$ascending$(key: _NSString | null, ascending: boolean): _NSSortDescriptor;
    initWithKey$ascending$selector$(key: _NSString | null, ascending: boolean, selector: string | null): _NSSortDescriptor;
    initWithCoder$(coder: _NSCoder): _NSSortDescriptor | null;
    /** Force a sort descriptor which was securely decoded to allow evaluation */
    allowEvaluation(): void;
    initWithKey$ascending$comparator$(key: _NSString | null, ascending: boolean, cmptr: (arg0: NobjcObject, arg1: NobjcObject) => number): _NSSortDescriptor;
    /**
     * primitive - override this method if you want to perform comparisons differently (not key based for example)
     */
    compareObject$toObject$(object1: NobjcObject, object2: NobjcObject): number;
    key(): _NSString | null;
    ascending(): boolean;
    selector(): string | null;
    comparator(): (arg0: NobjcObject, arg1: NobjcObject) => number;
    /**
     * primitive - override this method to return a sort descriptor instance with reversed sort order
     */
    reversedSortDescriptor(): NobjcObject;
}
export interface _NSSortDescriptor extends _NSCopying {
}
