import type { NobjcObject } from "objc-js";
import type { _NSCoding } from "../Foundation/NSCoding.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSColor } from "./NSColor.js";
import type { _NSImage } from "./NSImage.js";
import type { _NSTabView } from "./NSTabView.js";
import type { _NSView } from "./NSView.js";
import type { _NSViewController } from "./NSViewController.js";
import type { CGRect } from "../structs/CGRect.js";
import type { CGSize } from "../structs/CGSize.js";
import type { NSTabState } from "./NSTabState.js";
export declare class _NSTabViewItem extends _NSObject {
    static alloc(): _NSTabViewItem;
    static new(): _NSTabViewItem;
    init(): _NSTabViewItem;
    /**
     * Creates an autoreleased TabViewItem that wraps the provided ViewController. The viewController is set as the tab view item’s property, which sets several of the tab view item’s other properties. The view controller to wrap, used to set the viewController property
     */
    static tabViewItemWithViewController$(viewController: _NSViewController): _NSTabViewItem;
    /** identifier is retained */
    initWithIdentifier$(identifier: NobjcObject | null): _NSTabViewItem;
    /**
     * This method draws the tab label assuming a local coordinate system whose label axis runs along the x axis. Assume the label axis runs along the length of the label (perpendicular to the direction of the tab). 'labelRect' is the area in between the curved end caps. 'shouldTruncateLabel' is a hint that the label should be truncated. ie. if shouldTruncateLabel is YES, then labelRect.size < ceil([sizeOfLabel:NO])
     */
    drawLabel$inRect$(shouldTruncateLabel: boolean, labelRect: CGRect): void;
    /**
     * This method returns the minimum or nominal size of the tab label. The width of the label is measured along the label axis, and height is measured in the direction parallel to the tab direction. 'computeMin' indicates whether you should return the minimum or nominal label size. The returned value is used to compute the range of legal sizes for the tab label.
     */
    sizeOfLabel$(computeMin: boolean): CGSize;
    identifier(): NobjcObject | null;
    setIdentifier$(value: NobjcObject | null): void;
    color(): _NSColor;
    setColor$(value: _NSColor): void;
    label(): _NSString;
    setLabel$(value: _NSString): void;
    /**
     * Get and set the image for this tab view item. The image may only be used in certain tab view styles and options. The default value is nil.
     */
    image(): _NSImage;
    setImage$(value: _NSImage): void;
    view(): _NSView | null;
    setView$(value: _NSView | null): void;
    /**
     * The view controller wrapped by the tab view item. This property must be set if the tab view item will be added to an NSTabViewController, but can also be used if the tab view item is added to an NSTabView. If this is set, the tab view item will forward calls onto the viewController. Setting a viewController will also set the following properties on the tab view item: from the address of the viewController, from the viewController's title, and based on the classname as the view controller. An image named "ViewControllerClassName-TabViewItem" will be searched for first, followed by "ViewControllerClassName". It will search first using +[NSImage imageNamed:], then in and lastly in the bundle containing the view controller's class. As defined by: -[NSImage imageNamed:imageName], -[viewController.nibBundle imageForResource:imageName], -[[NSBundle bundleForClass:[viewController class]] imageForResource:imageName]. One pass with imageName as [NSStringFromClass([viewController class]) stringByAppendingString: " -TabViewItem"], followed by imageName as NSStringFromClass([viewController class]).
     */
    viewController(): _NSViewController;
    setViewController$(value: _NSViewController): void;
    tabState(): NSTabState;
    tabView(): _NSTabView | null;
    initialFirstResponder(): _NSView | null;
    setInitialFirstResponder$(value: _NSView | null): void;
    /**
     * The following methods provide support for tooltips on the tabs a tab view. The default behavior is to use the label as a tooltip if the label is truncated due to insufficient space; this automatic tooltip is never returned by the toolTip method. If you explicitly set a non-nil tooltip, this default behavior is suppressed, and the given tooltip will be used whether or not the label is truncated.
     */
    toolTip(): _NSString;
    setToolTip$(value: _NSString): void;
}
export interface _NSTabViewItem extends _NSCoding {
}
