import type { _UNNotification } from "../UserNotifications/UNNotification.js";
import type { _UNNotificationResponse } from "../UserNotifications/UNNotificationResponse.js";
import type { _NSColor } from "../AppKit/NSColor.js";
import type { CGRect } from "../structs/CGRect.js";
import type { UNNotificationContentExtensionMediaPlayPauseButtonType } from "./UNNotificationContentExtensionMediaPlayPauseButtonType.js";
import type { UNNotificationContentExtensionResponseOption } from "./UNNotificationContentExtensionResponseOption.js";
export interface _UNNotificationContentExtension {
    /**
     * Delivers a new notification to your notification content app extension. In your implementation of this method, use the contents of `notification` to configure your view controller. This method may be called multiple times while your view controller is visible. Specifically, it is called again when a new notification arrives whose <doc ://com.apple.documentation/documentation/usernotifications/unnotificationcontent/1649860-threadidentifier> value matches the thread identifier of the notification already being displayed. The method is called on the main thread of your notification content app extension. If you want to accommodate new content in your interface, you can change the height of your view controller's view. Change only the height; width values are ignored. You can then add subviews to fill the additional space with your content. - Parameters: - notification: The notification that arrived.
     */
    didReceiveNotification$?(notification: _UNNotification): void;
    /**
     * Handles a notification action selected by the user. Implement this method when you want your view controller to handle actions selected by the user. Use your implementation to perform the associated task and then execute the `completion` block. If you implement this method, you must handle all actions defined in all categories managed by your Notification Content app extension. If you don't implement this method, the system notifies your app when the user selects an action. - Parameters: - response: The response object that identifies the user-selected action. Use this object to get information about the notification and the user’s response. - completion: The block to execute when you are finished performing the action. You must call this block at some point during your implementation. The block has no return value and takes the following parameter: - term `dismiss`: The response you want to take for the notification. For a list of possible options, see ``UserNotificationsUI/UNNotificationContentExtensionResponseOption``.
     */
    didReceiveNotificationResponse$completionHandler$?(response: _UNNotificationResponse, completion: (option: UNNotificationContentExtensionResponseOption) => void): void;
    /**
     * Tells you to begin playback of your media content. Don't call this method yourself. If you implement the ``UNNotificationContentExtension/mediaPlayPauseButtonFrame`` property in your view controller, the system calls this method when the user wants to begin playback of your media. Use your implementation of this method to initiate playback.
     */
    mediaPlay?(): void;
    /**
     * Tells you to pause playback of your media content. Don't call this method yourself. If you implement the ``UNNotificationContentExtension/mediaPlayPauseButtonFrame`` property in your view controller, the system calls this method when the user wants to stop playback of your media. Use your implementation of this method to pause playback at the current location.
     */
    mediaPause?(): void;
    /**
     * The type of media button type to display. Implement this property when you want the system to display a media playback button in your notification interface. Return an appropriate constant indicating the type of button you want. If you don't implement this property, the system behaves as if you set the value to ``UNNotificationContentExtensionMediaPlayPauseButtonType/UNNotificationContentExtensionMediaPlayPauseButtonTypeNone``.
     */
    mediaPlayPauseButtonType?(): UNNotificationContentExtensionMediaPlayPauseButtonType;
    /**
     * The frame rectangle to use for displaying a media playback button. If you support the playback of media directly from your notification interface, implement this property and use it to return a nonempty rectangle specified in the coordinate system of your view controller’s view. The system draws a button in the provided rectangle that lets the user play and pause your media content. The system handles the drawing of the button for you and calls the ``UNNotificationContentExtension/mediaPlay`` and ``UNNotificationContentExtension/mediaPause`` methods in response to user interactions. You can place this button anywhere in your view controller’s view. If you don't implement this property, the system doesn't draw a media playback button.
     */
    mediaPlayPauseButtonFrame?(): CGRect;
    /**
     * The tint color for the media playback button. If you implement the ``UNNotificationContentExtension/mediaPlayPauseButtonFrame`` property, you can also implement this property and use it to specify the tint color to apply to the button. If you don't implement this property, the system uses a default color for the tint color.
     */
    mediaPlayPauseButtonTintColor?(): _NSColor;
}
