import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSMutableAttributedString } from "../Foundation/NSMutableAttributedString.js";
import type { _NSColor } from "./NSColor.js";
import type { _NSFont } from "./NSFont.js";
import type { _NSLayoutManager } from "./NSLayoutManager.js";
import type { _NSTextContentStorage } from "./NSTextContentStorage.js";
import type { _NSTextStorageDelegate } from "./NSTextStorageDelegate.js";
import type { _NSTextStorageObserving } from "./NSTextStorageObserving.js";
import type { NSRange } from "../structs/NSRange.js";
import type { NSTextStorageEditActions } from "./NSTextStorageEditActions.js";
export declare class _NSTextStorage extends _NSMutableAttributedString {
    static alloc(): _NSTextStorage;
    static new(): _NSTextStorage;
    init(): _NSTextStorage;
    /**
     * Adds aLayoutManager to the receiver. Sends -[NSLayoutManager setTextStorage:] to aLayoutManager with the receiver.
     */
    addLayoutManager$(aLayoutManager: _NSLayoutManager): void;
    /**
     * Removes aLayoutManager from the receiver if already owned by it. Sends -[NSLayoutManager setTextStorage:] to aLayoutManager with nil.
     */
    removeLayoutManager$(aLayoutManager: _NSLayoutManager): void;
    /**
     * Notifies and records a recent change. If there are no outstanding -beginEditing calls, this method calls -processEditing to trigger post-editing processes. This method has to be called by the primitives after changes are made if subclassed and overridden. editedRange is the range in the original string (before the edit).
     */
    edited$range$changeInLength$(editedMask: NSTextStorageEditActions, editedRange: NSRange, delta: number): void;
    /**
     * Sends out -textStorage:willProcessEditing, fixes the attributes, sends out -textStorage:didProcessEditing, and notifies the layout managers of change with the -processEditingForTextStorage:edited:range:changeInLength:invalidatedRange: method. Invoked from -edited:range:changeInLength: or -endEditing.
     */
    processEditing(): void;
    /**
     * Notes the range of attributes that requires validation. If the NSTextStorage is not lazy this just calls fixAttributesInRange:. If it is lazy this instead just records the range needing fixing in order to do it later.
     */
    invalidateAttributesInRange$(range: NSRange): void;
    /**
     * Ensures all attributes in range are validated and ready to be used. An NSTextStorage that is lazy is required to call the following method before accessing any attributes. This gives the attribute fixing a chance to occur if necessary. NSTextStorage subclasses that wish to support laziness must call it from all attribute accessors that they implement. The default concrete subclass does call this from its accessors.
     */
    ensureAttributesAreFixedInRange$(range: NSRange): void;
    /** NSLayoutManager objects owned by the receiver. */
    layoutManagers(): _NSArray;
    /**
     * The NSTextStorageEditActions mask indicating that there are pending changes for attributes, characters, or both.
     */
    editedMask(): NSTextStorageEditActions;
    /**
     * The range for pending changes. {NSNotFound, 0} when there is no pending changes.
     */
    editedRange(): NSRange;
    /** The length delta for the pending changes. */
    changeInLength(): number;
    /** ************************* Delegate *************************** */
    delegate(): _NSTextStorageDelegate | null;
    setDelegate$(value: _NSTextStorageDelegate | null): void;
    /**
     * Indicates if the receiver fixes invalidated attributes lazily. The concrete UIKit subclass fixes attributes lazily by default. The abstract class (hence, all custom subclasses) is not lazy.
     */
    fixesAttributesLazily(): boolean;
    /**
     * An object conforming to NSTextStorageObserving observing and retaining NSTextStorage
     */
    textStorageObserver(): _NSTextContentStorage;
    setTextStorageObserver$(value: _NSTextStorageObserving): void;
    attributeRuns(): _NSArray;
    setAttributeRuns$(value: _NSArray): void;
    paragraphs(): _NSArray;
    setParagraphs$(value: _NSArray): void;
    words(): _NSArray;
    setWords$(value: _NSArray): void;
    characters(): _NSArray;
    setCharacters$(value: _NSArray): void;
    font(): _NSFont | null;
    setFont$(value: _NSFont | null): void;
    foregroundColor(): _NSColor | null;
    setForegroundColor$(value: _NSColor | null): void;
}
