import type { NobjcObject } from "objc-js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSPageController } from "./NSPageController.js";
import type { _NSViewController } from "./NSViewController.js";
import type { CGRect } from "../structs/CGRect.js";
export interface _NSPageControllerDelegate {
    /**
     * Return the identifier of the view controller that owns a view to display the object. If NSPageController does not have an unused viewController for this identifier, then you will be asked to create one via pageController:viewControllerForIdentifier.
     */
    pageController$identifierForObject$?(pageController: _NSPageController, object_: NobjcObject): _NSString;
    /**
     * NSPageController will cache as many viewControllers and views as necessary to maintain performance. This method is called whenever another instance is required. Note: The viewController may become the selectedViewController after a transition if necessary.
     */
    pageController$viewControllerForIdentifier$?(pageController: _NSPageController, identifier: _NSString): _NSViewController;
    /**
     * You only need to implement this if the view frame can differ between arrangedObjects. This method must return immediately. Avoid file, network or any potentially blocking or lengthy work to provide an answer. This method is called with a nil object to get the default frame size. If this method is not implemented, all arrangedObjects are assumed to have the same frame as the current selectedViewController.view or the bounds of view when selectedViewController is nil.
     */
    pageController$frameForObject$?(pageController: _NSPageController, object_: NobjcObject | null): CGRect;
    /**
     * Prepare the viewController and view for drawing. Setup data sources and perform layout. Note: a nil object is passed for the purposes of caching a rendering of a default viewController. Note: this method is called on the main thread and should return immediately. The view will be asked to draw on a background thread and must support background drawing. If this method is not implemented, then viewController's representedObject is set to the representedObject.
     */
    pageController$prepareViewController$withObject$?(pageController: _NSPageController, viewController: _NSViewController, object_: NobjcObject | null): void;
    /** This message is sent when any page transition is completed. */
    pageController$didTransitionToObject$?(pageController: _NSPageController, object_: NobjcObject): void;
    /**
     * This message is sent when the user begins a transition wither via swipe gesture of one of the navigation IBAction methods.
     */
    pageControllerWillStartLiveTransition$?(pageController: _NSPageController): void;
    /**
     * This message is sent when a transition animation completes either via swipe gesture or one of the navigation IBAction methods. Your content view is still hidden and you must call -completeTransition; on pageController when your content is ready to show. If completed successfully, a pageController:didTransitionToRepresentedObject: will already have been sent.
     */
    pageControllerDidEndLiveTransition$?(pageController: _NSPageController): void;
}
