/** * Asynchronously replaces matches in a string using a regex and an async function. * * @param {string} str - The input string to perform replacements on. * @param {RegExp} regex - The regular expression to match substrings for replacement. * @param {Function} asyncFn - An asynchronous function that returns a replacement for each match. * It receives the same arguments as a standard `replace` callback. * @returns {Promise} The resulting string with all async replacements applied. * * @example * await asyncReplace("Hello @user1 and @user2!", /@\w+/g, async (mention) => { * return await getUserNameFromMention(mention); * }); */ export declare function asyncReplace(str: string, regex: RegExp, asyncFn: Function): Promise; /** * Converts a string to title case where the first letter of each word is capitalized. * All other letters are converted to lowercase. * * Example: "hello world" -> "Hello World" * * @param {string} str - The string to be converted to title case. * @returns {string} The string converted to title case. */ export declare function toTitleCase(str: string): string; /** * Converts a string to title case where the first letter of each word is capitalized, * but the first letter of the entire string is left lowercase. * * Example: "hello world" -> "hello World" * * @param {string} str - The string to be converted to title case with the first letter in lowercase. * @returns {string} The string converted to title case with the first letter in lowercase. */ export declare function toTitleCaseLowerFirst(str: string): string; /** * Enables a keyboard shortcut to toggle a CSS class on the document body. * * This function listens for a specific key combination: `Ctrl + Alt + [key]`. * When triggered, it prevents the default behavior and toggles the * `detect-made-by-ai` class on the ``, which can be used to apply visual * indicators or filters on AI-generated content. * * If executed outside of a browser environment (e.g., in Node.js), the function logs an error and exits. * If the `` is not available at the moment the shortcut is triggered, a warning is logged. * * ------------------------------------------------- * * Any content wrapped inside an `example` or `` tag was generated purely by artificial intelligence, * without any direct or indirect human intervention during the content generation process. * * ------------------------------------------------- * * Any content wrapped inside a `example` or `` tag was partially generated by artificial * intelligence. In this case, the context of the message was fully shaped by a human source guiding how the content should be written (i.e., * transforming a purely human text into a polished version enhanced by AI). * * These texts are characterized as improved versions of original human work, where the AI is strictly utilized to enhance the * structure of a human-written text. This tag does **not** apply to texts translated by AI (or any other non-AI translation tools), * nor does it apply to scenarios where an AI minimally refines an existing text by acting solely as a spell checker or basic grammar corrector. * * ------------------------------------------------- * * @param {Object} [config={}] - Configuration object. * @param {string} [config.key='a'] - The lowercase character key to be used in combination with `Ctrl` and `Alt`. * @param {string} [config.className='detect-made-by-ai'] - The CSS class to toggle on the `` element. * @returns {(this: Document, ev: KeyboardEvent) => any} The event handler attached to `document`. */ export declare function addAiMarkerShortcut({ key, className }?: { key?: string; className?: string; }): (this: Document, ev: KeyboardEvent) => any; /** * Trims a text string to a specified character limit, attempting to avoid cutting words in half. * If a space is found before the limit and it's not too far from the limit (at least 60%), * the cut is made at that space; otherwise, the text is hard-cut at the limit. * If the input is shorter than the limit, it is returned unchanged. * * @param {string} text - The input text to be trimmed. * @param {number} limit - The maximum number of characters allowed. * @param {number} [safeCutZone=0.6] - A decimal between 0 and 1 representing the minimal acceptable position * (as a fraction of `limit`) to cut at a space. Defaults to 0.6. * @returns {string} - The trimmed text, possibly ending with an ellipsis ("..."). * @throws {TypeError} - Throws if `text` is not a string. * @throws {TypeError} - Throws if `limit` is not a positive integer. * @throws {TypeError} - Throws if `safeCutZone` is not a number between 0 and 1 (inclusive). */ export declare function safeTextTrim(text: string, limit: number, safeCutZone?: number): string; export type DiffStringsModifiedValue> = { /** * - The value before the modification. */ old: CompareValue[keyof CompareValue]; /** * - The new value after the modification. */ new: CompareValue[keyof CompareValue]; }; export type DiffStringsData> = { /** * - Properties that only exist in the new object. */ added: Partial; /** * - Properties that only existed in the old object. */ removed: Partial; /** * - Properties that changed, containing their old and new values. */ modified: Partial>>; }; /** * @template {Record} CompareValue * @typedef {Object} DiffStringsModifiedValue * @property {CompareValue[keyof CompareValue]} old - The value before the modification. * @property {CompareValue[keyof CompareValue]} new - The new value after the modification. */ /** * @template {Record} CompareValue * @typedef {Object} DiffStringsData * @property {Partial} added - Properties that only exist in the new object. * @property {Partial} removed - Properties that only existed in the old object. * @property {Partial>>} modified - Properties that changed, containing their old and new values. */ /** * Diff two objects. * @template {Record} CompareValue1 * @template {Record} CompareValue2 * @param {CompareValue1} oldStrings - The original/old object for comparison. * @param {CompareValue2} newStrings - The new object for comparison. * @returns {DiffStringsData} An object containing what was added, removed, and modified. */ export declare function diffObjList, CompareValue2 extends Record>(oldStrings: CompareValue1, newStrings: CompareValue2): DiffStringsData; //# sourceMappingURL=text.d.mts.map