import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _PDFDestination } from "./PDFDestination.js";
import type { _PDFDocument } from "./PDFDocument.js";
export declare class _PDFOutline extends _NSObject {
    static alloc(): _PDFOutline;
    static new(): _PDFOutline;
    /**
     * Returns a PDFOutline object. If this object is to be the outline root, you will need to add additional PDFOutline objects to form the outline hierarchy you desire. You will then need to add it to a PDFDocument by passing it to -[PDFDocument setOutlineRoot:]. If this is to be a child (non-root) outline you will need to set a label for it and either a destination or action for it. Also, you will need to add it as a child of another PDFOutline object.
     */
    init(): _PDFOutline;
    /** PDFOutline child at index. Will throw exception if index is out of range. */
    childAtIndex$(index: number): _PDFOutline | null;
    /**
     * To build up a PDFOutline hierarchy, you call this method to add children outline items. For the simplest of outlines you would, at the very least, have to add items to the outline root item. NOTE: Be careful when calling this for a PDFOutline item which already has a parent (for example when moving items around within an outline hierarchy) - you should retain the item and call -[removeFromParent] first.
     */
    insertChild$atIndex$(child: _PDFOutline, index: number): void;
    /**
     * Removes self from parent (for root outline, does nothing since the root has no parent).
     */
    removeFromParent(): void;
    /** The PDFDocument the outline is associated with. */
    document(): _PDFDocument | null;
    /** Returns the parent outline (the root outline will return nil). */
    parent(): NobjcObject;
    /** Number of PDFOutline children this PDFOutline has. */
    numberOfChildren(): number;
    /**
     * Returns the index of the outline item - that is, relative to its siblings (and from the perspective of the parent). The root outline item (or any item with no parent) is always index 0.
     */
    index(): number;
    /**
     * The label for the outline. The root PDFOutline has no label and is only a container for children PDFOutlines.
     */
    label(): _NSString | null;
    setLabel$(value: _NSString | null): void;
    /**
     * Indicates whether PDFOutline item is initially disclosed or not. If the outline item has no children, -[isOpen] is always NO and calling -[setIsOpen] has no effect. The root item always returns YES for -[isOpen] and calling -[setIsOpen] also has no effect.
     */
    isOpen(): boolean;
    setIsOpen$(value: boolean): void;
    /**
     * Set: Has no effect on the root PDFOutline item. If the item previously had an action associated with it, the action is released (PDFOutline items cannot have both an action and a destination, they are mutually exclusive). The preferred way though is to call -[setAction] below.
     */
    destination(): _PDFDestination | null;
    setDestination$(value: _PDFDestination | null): void;
    /**
     * Action performed when a user clicks on the PDFOutline. Equivalent to calling -[destination] above when the outline has a destination (-[action] will return a PDFActionGoTo object). Some outlines do not have destinations however and you must therefore call this method. The root outline item will never return either an action or a destination. Calling -[setAction] on the root item has no effect.
     */
    action(): NobjcObject;
    setAction$(value: NobjcObject): void;
}
