import type { NobjcObject } from "objc-js";
import type { _NSKeyValueSharedObserversSnapshot } from "./NSKeyValueSharedObserversSnapshot.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSString } from "./NSString.js";
import type { NSKeyValueObservingOptions } from "./NSKeyValueObservingOptions.js";
export declare class _NSKeyValueSharedObservers extends _NSObject {
    static alloc(): _NSKeyValueSharedObservers;
    static new(): _NSKeyValueSharedObservers;
    init(): _NSKeyValueSharedObservers;
    /** A new collection of observables for an observable object of the given class */
    initWithObservableClass$(observableClass: NobjcObject): NobjcObject;
    /**
     * Add a new observer to the collection. This method works like `-[NSObject addObserver: forKey: options: context:]`, but observations on nested and computed properties are disallowed. Observers are not registered until `setSharedObservers` is called on the observable. - Parameter observer: The observer object to register for KVO notifications. The observer must implement the key-value observing method ``observeValue: forKeyPath: of: change: context:`` - Parameter key: key of the property being observed. This cannot be a nested key path or a computed property - Parameter options: A combination of NSKeyValueObservingOptions values that specify what is included in observation notifications. For possible values see NSKeyValueObservingOptions. - Parameter context: Arbitrary data which is passed to the observer object
     */
    addSharedObserver$forKey$options$context$(observer: _NSObject, key: _NSString, options: NSKeyValueObservingOptions, context: Uint8Array | null): void;
    /**
     * A momentary snapshot of all observers added to the collection thus far, that can be assigned to an observable using ``-[NSObject setSharedObservers:]``
     */
    snapshot(): _NSKeyValueSharedObserversSnapshot;
}
