import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSet } from "../Foundation/NSSet.js";
import type { _SRFetchRequest } from "./SRFetchRequest.js";
import type { _SRSensorReaderDelegate } from "./SRSensorReaderDelegate.js";
import type { SRAuthorizationStatus } from "./SRAuthorizationStatus.js";
import type { SRSensor } from "./SRSensor.js";
export declare class _SRSensorReader extends _NSObject {
    static alloc(): _SRSensorReader;
    static new(): _SRSensorReader;
    init(): _SRSensorReader;
    /**
     * @brief Request authorization to a given set of sensors @discussion If the SRSensorReader instance is not authorized, this method must be called before any other methods. Failure to request authorization will cause errors to be returned from the other methods. When SensorKit prepares the prompt for display, it will look at the NSSensorKitUsageDetail key in your Info.plist. The value should be a dictionary containing usage descriptions for all of the sensors being requested. The description key you provide to this method must correspond to an entry in that dictionary. To retrieve a localized string, SensorKit will load your InfoPlist.strings file and try to look up a string using the description key you provided. If that fails, SensorKit will use the content provided in your Info.plist. SensorKit may decide against showing the user a prompt. For example, if the user has already chosen whether to grant the application access to all of the types provided. When that happens, your completion block will be called with an appropriate NSError. If the user responded to the prompt, your completion block will be called with a nil error. Changes in authorization status will delivered to the delegate in the sensorReader:didChangeAuthorizationStatus: method.
     */
    static requestAuthorizationForSensors$completion$(sensors: _NSSet, completion: ((error: _NSError) => void) | null): void;
    /**
     * @brief Initializes an SRSensorReader that will fetch data for the current device and any companion
     */
    initWithSensor$(sensor: SRSensor): _SRSensorReader;
    /**
     * @brief Starts recording for the reader's sensor @discussion The reader must be authorized for the sensor for this to succeed. This starts recording on this device and any paired devices. If other readers have already started the sensor recording this reader's interest in recording will be maintained. Other readers in other apps for the same sensor will not affect the recording status of this reader. In the case of success, completion notification will be delivered to the delegate in the sensorReaderWillStartRecording: delegate method. In the case of failure, error notification will be delivered to the delegate in the sensorReader:startRecordingFailedWithError: delegate method.
     */
    startRecording(): void;
    /**
     * @brief Stops recording for the reader's sensor @discussion The reader must be authorized for the sensor for this to succeed. This stops recording on this device and any paired devices. Sensor recording will continue until the last interested reader has stopped recording. In the case of success, completion notification will be delivered to the delegate in the sensorReaderDidStopRecording: delegate method. In the case of failure, error notification will be delivered to the delegate in the sensorReader:stopRecordingFailedWithError: delegate method.
     */
    stopRecording(): void;
    /**
     * @brief Fetches device information for all devices that have stored data for the given sensor in SensorKit If the request completes successfully, devices will be returned to the delegate in the sensorReader:fetchedDevices: callback. If the request failed, an error will be returned to the delegate in the sensorReader:fetchDevicesFailedWithError: method
     */
    fetchDevices(): void;
    /**
     * @brief Fetches samples for the reader's sensor for given request parameters @discussion The reader must be authorized for the sensor for this to succeed. Samples will be delivered to the delegate through multiple calls to the sensorReader:fetchingRequest:didFetchResult: delegate method In the case of a failure, any error will be delivered to the delegate in the sensorReader:fetchingRequest:failedWithError: method. In the case of success, completion notification will be delivered to the delegate in the sensorReader:didCompleteFetch: method. @param request The query parameters for this fetch
     */
    fetch$(request: _SRFetchRequest): void;
    /** @brief The current authorization status of the calling application. */
    authorizationStatus(): SRAuthorizationStatus;
    /** @brief the sensor this reader was initialized with */
    sensor(): SRSensor;
    delegate(): _SRSensorReaderDelegate | null;
    setDelegate$(value: _SRSensorReaderDelegate | null): void;
}
