import type { _AVPictureInPictureController } from "./AVPictureInPictureController.js";
import type { _NSError } from "../Foundation/NSError.js";
export interface _AVPictureInPictureControllerDelegate {
    /**
     * @method pictureInPictureControllerWillStartPictureInPicture: @param pictureInPictureController The Picture in Picture controller. @abstract Delegate can implement this method to be notified when Picture in Picture will start.
     */
    pictureInPictureControllerWillStartPictureInPicture$?(pictureInPictureController: _AVPictureInPictureController): void;
    /**
     * @method pictureInPictureControllerDidStartPictureInPicture: @param pictureInPictureController The Picture in Picture controller. @abstract Delegate can implement this method to be notified when Picture in Picture did start.
     */
    pictureInPictureControllerDidStartPictureInPicture$?(pictureInPictureController: _AVPictureInPictureController): void;
    /**
     * @method pictureInPictureController:failedToStartPictureInPictureWithError: @param pictureInPictureController The Picture in Picture controller. @param error An error describing why it failed. @abstract Delegate can implement this method to be notified when Picture in Picture failed to start.
     */
    pictureInPictureController$failedToStartPictureInPictureWithError$?(pictureInPictureController: _AVPictureInPictureController, error: _NSError): void;
    /**
     * @method pictureInPictureControllerWillStopPictureInPicture: @param pictureInPictureController The Picture in Picture controller. @abstract Delegate can implement this method to be notified when Picture in Picture will stop.
     */
    pictureInPictureControllerWillStopPictureInPicture$?(pictureInPictureController: _AVPictureInPictureController): void;
    /**
     * @method pictureInPictureControllerDidStopPictureInPicture: @param pictureInPictureController The Picture in Picture controller. @abstract Delegate can implement this method to be notified when Picture in Picture did stop.
     */
    pictureInPictureControllerDidStopPictureInPicture$?(pictureInPictureController: _AVPictureInPictureController): void;
    /**
     * @method pictureInPictureController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler: @param pictureInPictureController The Picture in Picture controller. @param completionHandler The completion handler the delegate needs to call after restore. @abstract Delegate can implement this method to restore the user interface before Picture in Picture stops.
     */
    pictureInPictureController$restoreUserInterfaceForPictureInPictureStopWithCompletionHandler$?(pictureInPictureController: _AVPictureInPictureController, completionHandler: (restored: boolean) => void): void;
}
