import type { NobjcObject } from "objc-js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _SCContentFilter } from "./SCContentFilter.js";
import type { _SCRecordingOutput } from "./SCRecordingOutput.js";
import type { _SCStreamConfiguration } from "./SCStreamConfiguration.js";
import type { _SCStreamDelegate } from "./SCStreamDelegate.js";
import type { _SCStreamOutput } from "./SCStreamOutput.js";
import type { SCStreamOutputType } from "./SCStreamOutputType.js";
export declare class _SCStream extends _NSObject {
    static alloc(): _SCStream;
    static new(): _SCStream;
    init(): _SCStream;
    /**
     * @abstract initWithFilter:configuration:delegate: @param contentFilter the requested content filter to be captured @param streamConfig the requested stream configuration to be applied to the SCStream @param delegate the SCStream delegate object @discussion this method create a SCStream object that has the particular output settings for the content stream
     */
    initWithFilter$configuration$delegate$(contentFilter: _SCContentFilter, streamConfig: _SCStreamConfiguration, delegate: _SCStreamDelegate | null): _SCStream;
    /**
     * @abstract addStreamOutput:type:sampleHandlerQueue:error: @param output an object that adheres to the SCStreamOutput protocol that will receive the frames and call its delegate frame call back on its sample handler queue @param type the SCStreamOutput type @param sampleHandlerQueue the return queue for the sample handler @param error the error pertaining to the add stream output @discussion An SCStreamOutput protocol object instance can only be added to a session using -addStreamOutput: Returns a BOOL denoting if the add was successful
     */
    addStreamOutput$type$sampleHandlerQueue$error$(output: _SCStreamOutput, type: SCStreamOutputType, sampleHandlerQueue: _NSObject | null, error: NobjcObject | null): boolean;
    /**
     * @abstract removeStreamOutput:type:error: @param output an object that adheres to the SCStreamOutput protocol that will received the frames and call its delegate frame call back on its sample handler queue @param type the SCStreamOutput type @param error the error pertaining to the removing stream output @discussion An SCStreamOutput protocol object instance can only be removed to a session using -addStreamOutput: Returns a BOOL denoting if the remove was successful
     */
    removeStreamOutput$type$error$(output: _SCStreamOutput, type: SCStreamOutputType, error: NobjcObject | null): boolean;
    /**
     * @abstract updateContentFilter:completionHandler: @param contentFilter the requested content filter to be updated @param completionHandler the handler to be called when the function completes @discussion this method will update the content filter for a content stream. A completion handler will be called when the update is complete with an error denoting if the update has failed.
     */
    updateContentFilter$completionHandler$(contentFilter: _SCContentFilter, completionHandler: ((error: _NSError) => void) | null): void;
    /**
     * @abstract updateConfiguration:completionHandler: @param streamConfig the requested content filter to be updated @param completionHandler the handler to be called when the function completes @discussion this method will update the stream configuration for a content stream. A completion handler will be called when the update is complete with an error denoting if the update has failed.
     */
    updateConfiguration$completionHandler$(streamConfig: _SCStreamConfiguration, completionHandler: ((error: _NSError) => void) | null): void;
    /**
     * @abstract startCaptureWithCompletionHandler: @param completionHandler the handler to be called when the function completes @discussion this method starts the content stream. The handler will be called when the content stream start has completed with an error denoting if the start has failed.
     */
    startCaptureWithCompletionHandler$(completionHandler: ((error: _NSError) => void) | null): void;
    /**
     * @abstract stopCaptureWithCompletionHandler: @param completionHandler the handler to be called when the function completes @discussion this method stops the content stream. The handler will be called when the content stream stop has completed with an error denoting if the stop has failed.
     */
    stopCaptureWithCompletionHandler$(completionHandler: ((error: _NSError) => void) | null): void;
    /**
     * @method addRecordingOutput @abstract Add a SCRecordingOutput to the SCStream. Starts Recording if stream is already capturing, otherwise recording will be started after capture starts. Recording will be written into a file url specified in SCRecordingOutput. Media(Screen/Audio/Microphone) to be recorded will be based on the SCStream configuration. @param recordingOutput an SCRecordingOutput that including configuration of recording, and delegate for recording event. @param error the error pertaining to the add recording output @discussion Returns a BOOL denoting if the add was successful. Currently only support one recordingOutput on a stream. To guarantee the first sample captured in the stream to be written into the recording file, client need to add recordingOutput before startCapture. Delegate for recordingDidStart will be notified in SCRecordingOutput or recordingDidFinishWithError will be notified with an error associated if recording failed to start.
     */
    addRecordingOutput$error$(recordingOutput: _SCRecordingOutput, error: NobjcObject | null): boolean;
    /**
     * @method removeRecordingOutput @abstract Remove SCRecordingOutput from the SCStream. Stops Recording if the stream is currently recording. @param recordingOutput an SCRecordingOutput that including configuration of recording, and delegate for recording event. @param error the error pertaining to the remove recording output @discussion Returns a BOOL denoting if the remove was successful. Delegate for recordingDidFinishWithError will be notified in SCRecordingOutput, associate with an error code if recording failed to finish written to the file. If stopCapture is called without removing recordingOutput, recording will be stopped and finish writting into the file. In case client update the stream configuration during recording, recording will be stopped as well.
     */
    removeRecordingOutput$error$(recordingOutput: _SCRecordingOutput, error: NobjcObject | null): boolean;
    /** @abstract Synchronization clock used for media capture. */
    synchronizationClock(): NobjcObject;
}
