import type { _NSStackViewDelegate } from "./NSStackViewDelegate.js";
import type { _NSView } from "./NSView.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { NSEdgeInsets } from "../structs/NSEdgeInsets.js";
import type { NSLayoutAttribute } from "./NSLayoutAttribute.js";
import type { NSLayoutConstraintOrientation } from "./NSLayoutConstraintOrientation.js";
import type { NSStackViewDistribution } from "./NSStackViewDistribution.js";
import type { NSStackViewGravity } from "./NSStackViewGravity.js";
import type { NSUserInterfaceLayoutOrientation } from "./NSUserInterfaceLayoutOrientation.js";
export declare class _NSStackView extends _NSView {
    static alloc(): _NSStackView;
    static new(): _NSStackView;
    init(): _NSStackView;
    /**
     * Returns an autoreleased horizontal StackView with the provided views set as the leading views, and has translatesAutoresizingMaskIntoConstraints set to NO.
     */
    static stackViewWithViews$(views: _NSArray): _NSStackView;
    /**
     * Set and get custom spacing after a view. This custom spacing is used instead of the default spacing set with the spacing property. This is saved across layout updates, until the view is removed from the StackView or the custom spacing is changed. A value of NSStackViewSpacingUseDefault signifies that the spacing is the default spacing set with the StackView property. `view` must be managed by the StackView, an exception will be raised if not.
     */
    setCustomSpacing$afterView$(spacing: number, view: _NSView): void;
    customSpacingAfterView$(view: _NSView): number;
    /**
     * Adds a view to the end of the arrangedSubviews list. If the view is not a subview of the receiver, it will be added as one.
     */
    addArrangedSubview$(view: _NSView): void;
    /**
     * Adds a view to the arrangedSubviews list at a specific index. If the view is already in the arrangedSubviews list, it will move the view to the specified index (but not change the subview index). If the view is not a subview of the receiver, it will be added as one (not necessarily at the same index).
     */
    insertArrangedSubview$atIndex$(view: _NSView, index: number): void;
    /**
     * Removes a subview from the list of arranged subviews without removing it as a subview of the receiver. Removing the view as a subview (either by -[view removeFromSuperview] or setting the receiver's subviews) will automatically remove it as an arranged subview.
     */
    removeArrangedSubview$(view: _NSView): void;
    /**
     * Sets and gets the visibility priorities for views in the StackView. When detaching a view, it will first detach views with the lowest visibility priority. If multiple views share the same lowest visibility priority, all of them will be dropped. Defaults to `NSStackViewVisibilityPriorityMustHold`. Setting the visibility priority to NSStackViewVisibilityPriorityNotVisible will force that view to be detached (regardless of available space), and will set the view to be hidden if `detachesHiddenViews` is set to `YES`. `view` must be managed by the StackView, an exception will be raised if not.
     */
    setVisibilityPriority$forView$(priority: number, view: _NSView): void;
    visibilityPriorityForView$(view: _NSView): number;
    /**
     * Priority at which the StackView will not clip its views, defaults to NSLayoutPriorityRequired Clipping begins from the trailing and bottom sides of the StackView.
     */
    clippingResistancePriorityForOrientation$(orientation: NSLayoutConstraintOrientation): number;
    setClippingResistancePriority$forOrientation$(clippingResistancePriority: number, orientation: NSLayoutConstraintOrientation): void;
    /**
     * Priority at which the StackView wants its internal spacing to be as small as possible, defaults to NSLayoutPriorityDefaultLow Spacing within a StackView is managed completely by the StackView. However, extra layout constraints can be added in conjunction with the StackView to create a more customized layout. Below describes the constraints the StackView uses to space its internal views. Spacing between view gravities have constraints with the following constraints: - Length >= spacing @ NSLayoutPriorityRequired - Length == spacing @ huggingPriority Spacing between views (within a gravity) have the following constraints: - Length >= spacing @ NSLayoutPriorityRequired - Length == spacing @ MAX(NSLayoutPriorityDefaultHigh, huggingPriority)
     */
    huggingPriorityForOrientation$(orientation: NSLayoutConstraintOrientation): number;
    setHuggingPriority$forOrientation$(huggingPriority: number, orientation: NSLayoutConstraintOrientation): void;
    /**
     * Adds the view to the given gravity area at the end of that gravity area. This method will update the StackView's layout, and could result in the StackView changing its size or views being detached / clipped.
     */
    addView$inGravity$(view: _NSView, gravity: NSStackViewGravity): void;
    /**
     * Adds the view to the given gravity area at the index within that gravity area. Index numbers & counts are specific to each gravity area, and are indexed based on the set userInterfaceLayoutDirection. (For a L2R layout, index 0 in the leading gravity is the furthest left index; for a R2L layout index 0 in the leading gravity is the furthest right index) This method will update the StackView's layout, and could result in the StackView changing its size or views being detached / clipped. An NSRangeException will be raised if the index is out of bounds
     */
    insertView$atIndex$inGravity$(view: _NSView, index: number, gravity: NSStackViewGravity): void;
    /**
     * Will remove view from the StackView. [view removeFromSuperview] will have the same behavior in the case that view is visible (not detached) from the StackView. In the case that view had been detached, this method must be used to remove it from the StackView. view must be managed by the StackView, an exception will be raised if not.
     */
    removeView$(view: _NSView): void;
    /**
     * Getters will return the views that are contained by the corresponding gravity area, regardless of detach-status.
     */
    viewsInGravity$(gravity: NSStackViewGravity): _NSArray;
    /** Setters will update the views and the layout for that gravity area. */
    setViews$inGravity$(views: _NSArray, gravity: NSStackViewGravity): void;
    delegate(): _NSStackViewDelegate | null;
    setDelegate$(value: _NSStackViewDelegate | null): void;
    /**
     * Orientation of the StackView, defaults to NSUserInterfaceLayoutOrientationHorizontal
     */
    orientation(): NSUserInterfaceLayoutOrientation;
    setOrientation$(value: NSUserInterfaceLayoutOrientation): void;
    /**
     * Describes how subviews are aligned within the StackView, defaults to `NSLayoutAttributeCenterY` for horizontal stacks, `NSLayoutAttributeCenterX` for vertical stacks. Setting `NSLayoutAttributeNotAnAttribute` will cause the internal alignment constraints to not be created, and could result in an ambiguous layout. Setting an inapplicable attribute for the set orientation will result in the alignment being ignored (similar to its handling with NSLayoutAttributeNotAnAttribute). The alignment constraints are established at a priority of `NSLayoutPriorityDefaultLow` and are overridable for individual views using external constraints.
     */
    alignment(): NSLayoutAttribute;
    setAlignment$(value: NSLayoutAttribute): void;
    /** Default padding inside the StackView, around all of the subviews. */
    edgeInsets(): NSEdgeInsets;
    setEdgeInsets$(value: NSEdgeInsets): void;
    /**
     * The spacing and sizing distribution of stacked views along the primary axis. Defaults to GravityAreas.
     */
    distribution(): NSStackViewDistribution;
    setDistribution$(value: NSStackViewDistribution): void;
    /** Default (minimum) spacing between each view */
    spacing(): number;
    setSpacing$(value: number): void;
    /**
     * If YES, when a stacked view's `hidden` property is set to YES, the view will be detached from the stack and reattached when set to NO. Similarly, if the view has a lowered visibility priority and is detached from the stack view, it will be set as `hidden` rather than removed from the view hierarchy. Defaults to YES for apps linked on the 10.11 SDK or later.
     */
    detachesHiddenViews(): boolean;
    setDetachesHiddenViews$(value: boolean): void;
    /**
     * The list of views that are arranged in a stack by the receiver. They are a subset of \c -subviews, with potential difference in ordering.
     */
    arrangedSubviews(): _NSArray;
    /** The arrangedSubviews that are currently detached/hidden. */
    detachedViews(): _NSArray;
    /**
     * Returns an array of all the views managed by this StackView, regardless of detach-status or gravity area. This is indexed in the order of indexing within the StackView. Detached views are indexed at the positions they would have been if they were still attached.
     */
    views(): _NSArray;
    /**
     * Property describing whether or not all spacing between views should be equivalent. Defaults to NO. If set to YES, this modifies the constraints used internally for spacing in such manners: - All spacing is >= spacing @ NSLayoutPriorityRequired - All spacing is == spacing @ huggingPriority - All spacing is == each other @ NSLayoutPriorityDefaultLow - Custom spacing is ignored. StackView's spacing property is used as the minimum spacing between each view
     * @deprecated Set -distribution to NSStackViewDistributionEqualSpacing instead.
     */
    hasEqualSpacing(): boolean;
    setHasEqualSpacing$(value: boolean): void;
}
