import type { NobjcObject } from "objc-js";
import type { _NSSplitView } from "./NSSplitView.js";
import type { _NSSplitViewItem } from "./NSSplitViewItem.js";
import type { _NSValidatedUserInterfaceItem } from "./NSValidatedUserInterfaceItem.js";
import type { _NSView } from "./NSView.js";
import type { _NSViewController } from "./NSViewController.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { CGRect } from "../structs/CGRect.js";
export declare class _NSSplitViewController extends _NSViewController {
    static alloc(): _NSSplitViewController;
    static new(): _NSSplitViewController;
    init(): _NSSplitViewController;
    /**
     * Adds a SplitViewItem to the end of the SplitViewController. If the receiver's view is loaded and the SplitViewItem is not collapsed, the SplitViewItem's viewController's view will be loaded and added to the splitView. This calls through to -insertSplitViewItem:atIndex:. \param splitViewItem The SplitViewItem to add. It must have a viewController set by the time it is added or an exception will be thrown. An exception will also be thrown if splitViewItem is nil.
     */
    addSplitViewItem$(splitViewItem: _NSSplitViewItem): void;
    /**
     * Adds a SplitViewItem to a given index in the SplitViewController. If the receiver's view is loaded and the SplitViewItem is not collapsed, the SplitViewItem's viewController's view will be loaded and added to the \c splitView. Subclasses must call through \c -insertSplitViewItem:atIndex: to add a SplitViewItem. \param splitViewItem The SplitViewItem to add. It must have a \c viewController set by the time it is added or an exception will be thrown. An exception will also be thrown if splitViewItem is nil. \param index The index to add the SplitViewItem at. Will throw an exception if \c index < 0 or \c index > \c splitViewItems.count
     */
    insertSplitViewItem$atIndex$(splitViewItem: _NSSplitViewItem, index: number): void;
    /**
     * Removes a SplitViewItem from the receiver. The layout of the \c splitView will be adjusted for its removal. Subclasses must call through \c -removeSplitViewItem: to remove a SplitViewItem. \param splitViewItem The SplitViewItem to remove. An exception will be thrown if \c splitViewItem is not in the SplitViewController or if it is nil.
     */
    removeSplitViewItem$(splitViewItem: _NSSplitViewItem): void;
    /**
     * Returns the corresponding SplitViewItem for a given child ViewController. \param viewController The ViewController to look up. \return The corresponding SplitViewItem. Returns nil if \c viewController is not a child of the SplitViewController.
     */
    splitViewItemForViewController$(viewController: _NSViewController): _NSSplitViewItem | null;
    /**
     * Validates items with an action of `toggleSidebar:` to reflect the status of the sidebar item contained within the receiver.
     */
    validateUserInterfaceItem$(item: _NSValidatedUserInterfaceItem): boolean;
    /**
     * Overridden methods from NSViewController. These require a call to super if overriden by a subclass
     * @deprecated NSSplitView no longer supports collapsing sections via double-click. This delegate method is never called, and NSSplitViewController's implementation always returns NO.
     */
    viewDidLoad(): void;
    /**
     * Implemented methods from NSSplitViewDelegate. These require a call to super if overriden by a subclass
     * @deprecated NSSplitView no longer supports collapsing sections via double-click. This delegate method is never called, and NSSplitViewController's implementation always returns NO.
     */
    splitView$canCollapseSubview$(splitView: _NSSplitView, subview: _NSView): boolean;
    /**
     * @deprecated NSSplitView no longer supports collapsing sections via double-click. This delegate method is never called, and NSSplitViewController's implementation always returns NO.
     */
    splitView$shouldCollapseSubview$forDoubleClickOnDividerAtIndex$(splitView: _NSSplitView, subview: _NSView, dividerIndex: number): boolean;
    /**
     * By default, NSSplitViewController hides the first and last dividers if their outer neighbor is collapsed
     */
    splitView$shouldHideDividerAtIndex$(splitView: _NSSplitView, dividerIndex: number): boolean;
    splitView$effectiveRect$forDrawnRect$ofDividerAtIndex$(splitView: _NSSplitView, proposedEffectiveRect: CGRect, drawnRect: CGRect, dividerIndex: number): CGRect;
    splitView$additionalEffectiveRectOfDividerAtIndex$(splitView: _NSSplitView, dividerIndex: number): CGRect;
    /**
     * Animatedly collapses or uncollapses the first sidebar split view item in the receiver. Does nothing if the receiver does not contain any sidebars.
     */
    toggleSidebar$(sender: NobjcObject | null): void;
    /**
     * Animatedly collapses or uncollapses the first inspector split view item in the receiver. Does nothing if the receiver does not contain any inspectors.
     */
    toggleInspector$(sender: NobjcObject | null): void;
    /**
     * The split view managed by the SplitViewController. This can be used to customize view properties such as the dividerStyle, vertical, and autosaveName. It is not guaranteed to be the same view as the receivers 'view' property. The default created splitView is vertical with a dividerStyle of \c NSSplitViewDividerStyleThin. To provide a custom NSSplitView, set the splitView property anytime before self.viewLoaded is YES.
     */
    splitView(): _NSSplitView;
    setSplitView$(value: _NSSplitView): void;
    /**
     * The array of SplitViewItems that correspond to the current child view controllers. After a child view controller is added to the receiving splitViewController, a NSSplitViewItem with the default values will be created for it. Once the child is removed, its corresponding splitViewItem will be removed from the splitViewItems array. Setting this will call through to \c -insertSplitViewItem:atIndex and \c -removeSplitViewItem: for items that are new or need removal.
     */
    splitViewItems(): _NSArray;
    setSplitViewItems$(value: _NSArray): void;
    /**
     * The minimum thickness in the primary axis of split view (width for "vertical", height otherwise) before sidebar items will automatically collapse. If reshown in fullscreen, they will overlay over the other split items. Auto-collapsed sidebars will automatically uncollapse if the thickness is increased back to or past the minimum thickness. Defaults to \c NSSplitViewControllerAutomaticDimension, which will use the effective minimum sizes of the split view item views as described by constraints in the window to determine the minimum size for inline sidebars. Once constraints establishing the minimum size can't be satisfied for all non-collapsed split panes, all sidebars will auto-collapse. When fullscreen, if a sidebar tries to uncollapse in this state, it will overlay.
     */
    minimumThicknessForInlineSidebars(): number;
    setMinimumThicknessForInlineSidebars$(value: number): void;
}
