import type { NobjcObject } from "objc-js";
import type { _NSString } from "./NSString.js";
import type { NSRange } from "../structs/NSRange.js";
import type { NSStringCompareOptions } from "./NSStringCompareOptions.js";
export declare class _NSMutableString extends _NSString {
    static alloc(): _NSMutableString;
    static new(): _NSMutableString;
    init(): _NSMutableString;
    static stringWithCapacity$(capacity: number): _NSMutableString;
    /**
     * NSMutableString primitive (funnel) method. See below for the other mutation methods.
     */
    replaceCharactersInRange$withString$(range: NSRange, aString: _NSString): void;
    /**
     * Additional mutation methods. For subclassers these are all available implemented in terms of the primitive replaceCharactersInRange:range: method.
     */
    insertString$atIndex$(aString: _NSString, loc: number): void;
    deleteCharactersInRange$(range: NSRange): void;
    appendString$(aString: _NSString): void;
    appendFormat$(format: _NSString): void;
    setString$(aString: _NSString): void;
    /**
     * This method replaces all occurrences of the target string with the replacement string, in the specified range of the receiver string, and returns the number of replacements. NSBackwardsSearch means the search is done from the end of the range (the results could be different); NSAnchoredSearch means only anchored (but potentially multiple) instances will be replaced. NSLiteralSearch and NSCaseInsensitiveSearch also apply. NSNumericSearch is ignored. Use NSMakeRange(0, [receiver length]) to process whole string. If NSRegularExpressionSearch is specified, the replacement is treated as a template, as in the corresponding NSRegularExpression methods, and no other options can apply except NSCaseInsensitiveSearch and NSAnchoredSearch.
     */
    replaceOccurrencesOfString$withString$options$range$(target: _NSString, replacement: _NSString, options: NSStringCompareOptions, searchRange: NSRange): number;
    /**
     * Perform string transliteration. The transformation represented by transform is applied to the given range of string in place. Only the specified range will be modified, but the transform may look at portions of the string outside that range for context. If supplied, resultingRange is modified to reflect the new range corresponding to the original range. reverse indicates that the inverse transform should be used instead, if it exists. Attempting to use an invalid transform identifier or reverse an irreversible transform will return NO; otherwise YES is returned, even if no characters are actually transformed. You can pass one of the predefined transforms listed above (NSStringTransformLatinToKatakana, etc), or any valid ICU transform ID as defined in the ICU User Guide. Arbitrary ICU transform rules are not supported.
     */
    applyTransform$reverse$range$updatedRange$(transform: _NSString, reverse: boolean, range: NSRange, resultingRange: NobjcObject | null): boolean;
    /**
     * In addition to these two, NSMutableString responds properly to all NSString creation methods.
     */
    initWithCapacity$(capacity: number): _NSMutableString;
}
