import type { NobjcObject } from "objc-js";
import type { _NSArray } from "./NSArray.js";
import type { _NSCoder } from "./NSCoder.js";
import type { _NSCopying } from "./NSCopying.js";
import type { _NSEnumerator } from "./NSEnumerator.js";
import type { _NSFastEnumeration } from "./NSFastEnumeration.js";
import type { _NSIndexSet } from "./NSIndexSet.js";
import type { _NSMutableCopying } from "./NSMutableCopying.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSOrderedCollectionDifference } from "./NSOrderedCollectionDifference.js";
import type { _NSPredicate } from "./NSPredicate.js";
import type { _NSSet } from "./NSSet.js";
import type { _NSString } from "./NSString.js";
import type { NSRange } from "../structs/NSRange.js";
import type { NSBinarySearchingOptions } from "./NSBinarySearchingOptions.js";
import type { NSEnumerationOptions } from "./NSEnumerationOptions.js";
import type { NSKeyValueObservingOptions } from "./NSKeyValueObservingOptions.js";
import type { NSOrderedCollectionDifferenceCalculationOptions } from "./NSOrderedCollectionDifferenceCalculationOptions.js";
import type { NSSortOptions } from "./NSSortOptions.js";
export declare class _NSOrderedSet extends _NSObject {
    static alloc(): _NSOrderedSet;
    static new(): _NSOrderedSet;
    static orderedSet(): _NSOrderedSet;
    static orderedSetWithObject$(object_: NobjcObject): _NSOrderedSet;
    static orderedSetWithObjects$count$(objects: NobjcObject, cnt: number): _NSOrderedSet;
    static orderedSetWithObjects$(firstObj: NobjcObject): _NSOrderedSet;
    static orderedSetWithOrderedSet$(set: _NSOrderedSet): _NSOrderedSet;
    static orderedSetWithOrderedSet$range$copyItems$(set: _NSOrderedSet, range: NSRange, flag: boolean): _NSOrderedSet;
    static orderedSetWithArray$(array: _NSArray): _NSOrderedSet;
    static orderedSetWithArray$range$copyItems$(array: _NSArray, range: NSRange, flag: boolean): _NSOrderedSet;
    static orderedSetWithSet$(set: _NSSet): _NSOrderedSet;
    static orderedSetWithSet$copyItems$(set: _NSSet, flag: boolean): _NSOrderedSet;
    objectAtIndex$(idx: number): NobjcObject;
    indexOfObject$(object_: NobjcObject): number;
    init(): _NSOrderedSet;
    initWithObjects$count$(objects: NobjcObject | null, cnt: number): _NSOrderedSet;
    initWithCoder$(coder: _NSCoder): _NSOrderedSet | null;
    getObjects$range$(objects: NobjcObject | null, range: NSRange): void;
    objectsAtIndexes$(indexes: _NSIndexSet): _NSArray;
    isEqualToOrderedSet$(other: _NSOrderedSet): boolean;
    containsObject$(object_: NobjcObject): boolean;
    intersectsOrderedSet$(other: _NSOrderedSet): boolean;
    intersectsSet$(set: _NSSet): boolean;
    isSubsetOfOrderedSet$(other: _NSOrderedSet): boolean;
    isSubsetOfSet$(set: _NSSet): boolean;
    objectAtIndexedSubscript$(idx: number): NobjcObject;
    objectEnumerator(): _NSEnumerator;
    reverseObjectEnumerator(): _NSEnumerator;
    enumerateObjectsUsingBlock$(block: (obj: NobjcObject, idx: number, stop: NobjcObject) => void): void;
    enumerateObjectsWithOptions$usingBlock$(opts: NSEnumerationOptions, block: (obj: NobjcObject, idx: number, stop: NobjcObject) => void): void;
    enumerateObjectsAtIndexes$options$usingBlock$(s: _NSIndexSet, opts: NSEnumerationOptions, block: (obj: NobjcObject, idx: number, stop: NobjcObject) => void): void;
    indexOfObjectPassingTest$(predicate: (obj: NobjcObject, idx: number, stop: NobjcObject) => boolean): number;
    indexOfObjectWithOptions$passingTest$(opts: NSEnumerationOptions, predicate: (obj: NobjcObject, idx: number, stop: NobjcObject) => boolean): number;
    indexOfObjectAtIndexes$options$passingTest$(s: _NSIndexSet, opts: NSEnumerationOptions, predicate: (obj: NobjcObject, idx: number, stop: NobjcObject) => boolean): number;
    indexesOfObjectsPassingTest$(predicate: (obj: NobjcObject, idx: number, stop: NobjcObject) => boolean): _NSIndexSet;
    indexesOfObjectsWithOptions$passingTest$(opts: NSEnumerationOptions, predicate: (obj: NobjcObject, idx: number, stop: NobjcObject) => boolean): _NSIndexSet;
    indexesOfObjectsAtIndexes$options$passingTest$(s: _NSIndexSet, opts: NSEnumerationOptions, predicate: (obj: NobjcObject, idx: number, stop: NobjcObject) => boolean): _NSIndexSet;
    /** binary search */
    indexOfObject$inSortedRange$options$usingComparator$(object_: NobjcObject, range: NSRange, opts: NSBinarySearchingOptions, cmp: (arg0: NobjcObject, arg1: NobjcObject) => number): number;
    sortedArrayUsingComparator$(cmptr: (arg0: NobjcObject, arg1: NobjcObject) => number): _NSArray;
    sortedArrayWithOptions$usingComparator$(opts: NSSortOptions, cmptr: (arg0: NobjcObject, arg1: NobjcObject) => number): _NSArray;
    descriptionWithLocale$(locale: NobjcObject | null): _NSString;
    descriptionWithLocale$indent$(locale: NobjcObject | null, level: number): _NSString;
    initWithObject$(object_: NobjcObject): _NSOrderedSet;
    initWithObjects$(firstObj: NobjcObject): _NSOrderedSet;
    initWithOrderedSet$(set: _NSOrderedSet): _NSOrderedSet;
    initWithOrderedSet$copyItems$(set: _NSOrderedSet, flag: boolean): _NSOrderedSet;
    initWithOrderedSet$range$copyItems$(set: _NSOrderedSet, range: NSRange, flag: boolean): _NSOrderedSet;
    initWithArray$(array: _NSArray): _NSOrderedSet;
    initWithArray$copyItems$(set: _NSArray, flag: boolean): _NSOrderedSet;
    initWithArray$range$copyItems$(set: _NSArray, range: NSRange, flag: boolean): _NSOrderedSet;
    initWithSet$(set: _NSSet): _NSOrderedSet;
    initWithSet$copyItems$(set: _NSSet, flag: boolean): _NSOrderedSet;
    differenceFromOrderedSet$withOptions$usingEquivalenceTest$(other: _NSOrderedSet, options: NSOrderedCollectionDifferenceCalculationOptions, block: (obj1: NobjcObject, obj2: NobjcObject) => boolean): _NSOrderedCollectionDifference;
    differenceFromOrderedSet$withOptions$(other: _NSOrderedSet, options: NSOrderedCollectionDifferenceCalculationOptions): _NSOrderedCollectionDifference;
    /**
     * Uses isEqual: to determine the difference between the parameter and the receiver
     */
    differenceFromOrderedSet$(other: _NSOrderedSet): _NSOrderedCollectionDifference;
    orderedSetByApplyingDifference$(difference: _NSOrderedCollectionDifference): _NSOrderedSet | null;
    /** Invoke -setValue:forKey: on each of the receiver's members. */
    setValue$forKey$(value: NobjcObject | null, key: _NSString): void;
    /**
     * NSOrderedSets are not observable, so these methods raise exceptions when invoked on NSOrderedSets. Instead of observing an ordered set, observe the ordered to-many relationship for which the ordered set is the collection of related objects.
     */
    addObserver$forKeyPath$options$context$(observer: _NSObject, keyPath: _NSString, options: NSKeyValueObservingOptions, context: Uint8Array | null): void;
    removeObserver$forKeyPath$context$(observer: _NSObject, keyPath: _NSString, context: Uint8Array | null): void;
    removeObserver$forKeyPath$(observer: _NSObject, keyPath: _NSString): void;
    /** returns a new array by sorting the objects of the receiver */
    sortedArrayUsingDescriptors$(sortDescriptors: _NSArray): _NSArray;
    /**
     * evaluate a predicate against an ordered set of objects and return a filtered ordered set
     */
    filteredOrderedSetUsingPredicate$(p: _NSPredicate): _NSOrderedSet;
    count(): number;
    firstObject(): NobjcObject | null;
    lastObject(): NobjcObject | null;
    reversedOrderedSet(): _NSOrderedSet;
    /**
     * These two methods return a facade object for the receiving ordered set, which acts like an immutable array or set (respectively). Note that while you cannot mutate the ordered set through these facades, mutations to the original ordered set will "show through" the facade and it will appear to change spontaneously, since a copy of the ordered set is not being made.
     */
    array(): _NSArray;
    set(): _NSSet;
    description(): _NSString;
}
export interface _NSOrderedSet extends _NSCopying, _NSMutableCopying, _NSFastEnumeration {
}
