/**
 * @full-pack/string-builder v2.0.0
 * Copyright (c) 2024 Ram Amoncar <ramamonkar444@gmail.com>
 * @license MIT
 */
type Replacer = (char: string, index: number, str: string) => string;
declare class StringBuilder {
    private _cap;
    private _str;
    constructor(str?: string, capacity?: number);
    insert(index: number, value: number | string | boolean, repeatCount?: number): boolean;
    append(value: number | string | boolean, repeatCount?: number): boolean;
    prepend(value: number | string | boolean, repeatCount?: number): boolean;
    appendNewLine(num?: number): boolean;
    prependNewLine(num?: number): boolean;
    appendSpace(num?: number): boolean;
    prependSpace(num?: number): boolean;
    appendArray(arr: Array<number | string | boolean>, separator?: string): boolean;
    prependArray(arr: Array<number | string | boolean>, separator?: string): boolean;
    appendJSON(json: Record<string | number | symbol, unknown> | Array<Record<string | number | symbol, unknown>>, space?: string | number): boolean;
    prependJSON(json: Record<string | number | symbol, unknown> | Array<Record<string | number | symbol, unknown>>, space?: string | number): boolean;
    appendCodePoint(...codePoints: number[]): boolean;
    prependCodePoint(...codePoints: number[]): boolean;
    replaceSubstring(str: string | Replacer, start?: number, end?: number): boolean;
    setString(value: string): boolean;
    private checkCapacity;
    getString(): string;
    indexOf(searchString: string, position?: number): number;
    lastIndexOf(searchString: string, position?: number): number;
    setChar(index: number, char: string): string;
    substring(start: number, end?: number): string;
    trim(): void;
    /**
     * Only removes the string.
     */
    clear(): void;
    /**
     * Removes string & capacity.
     */
    reset(): void;
    clone(): StringBuilder;
    isFull(): boolean;
    isEmpty(): boolean;
    get capacity(): number;
    set capacity(value: number);
    get length(): number;
    set length(value: number);
}

declare class ChainableStringBuilder {
    private readonly sb;
    readonly UNSET_VALUE = -1;
    static fromStringBuilder(sb: StringBuilder): ChainableStringBuilder;
    constructor(str?: string, capacity?: number);
    insert(index: number, value: number | string | boolean, repeatCount?: number): this;
    append(value: number | string | boolean, repeatCount?: number): this;
    prepend(value: number | string | boolean, repeatCount?: number): this;
    appendNewLine(num?: number): this;
    prependNewLine(num?: number): this;
    appendSpace(num?: number): this;
    prependSpace(num?: number): this;
    appendArray(arr: Array<number | string | boolean>, separator?: string): this;
    prependArray(arr: Array<number | string | boolean>, separator?: string): this;
    appendJSON(json: Record<string | number | symbol, unknown> | Array<Record<string | number | symbol, unknown>>, space?: string | number): this;
    prependJSON(json: Record<string | number | symbol, unknown> | Array<Record<string | number | symbol, unknown>>, space?: string | number): this;
    appendCodePoint(...codePoints: number[]): this;
    prependCodePoint(...codePoints: number[]): this;
    replaceSubstring(str: string | Replacer, start?: number, end?: number): this;
    setString(value: string): this;
    trim(): this;
    clear(): this;
    reset(): this;
    clone(): ChainableStringBuilder;
    build(): StringBuilder;
    getString(): string;
    get capacity(): number;
    set capacity(value: number);
    get length(): number;
    set length(value: number);
}

export { ChainableStringBuilder, type Replacer, StringBuilder, StringBuilder as default };
