/** * Built-in text functions: LEFT, RIGHT, MID, LEN, TRIM, LOWER, UPPER, CONCAT, * CONCATENATE, TEXTJOIN, FIND, SEARCH, REPLACE, SUBSTITUTE. * * All indices follow Excel's **1-based** convention at the formula surface; the * implementations convert to 0-based JS string offsets internally. * * @packageDocumentation */ import type { FormulaFunction } from './formula-function'; import { FunctionCategory } from './formula-function'; import type { FormulaArgument, FormulaValue } from '../types/formula.types'; /** `LEN(text)` — number of characters. */ export declare class LenFunction implements FormulaFunction { readonly name = "LEN"; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs = 1; readonly description = "Returns the number of characters in a text string."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `LEFT(text, [count])` — leading characters (default 1). */ export declare class LeftFunction implements FormulaFunction { readonly name = "LEFT"; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs = 2; readonly description = "Returns the first characters of a text string."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `RIGHT(text, [count])` — trailing characters (default 1). */ export declare class RightFunction implements FormulaFunction { readonly name = "RIGHT"; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs = 2; readonly description = "Returns the last characters of a text string."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `MID(text, start, count)` — `count` characters from 1-based `start`. */ export declare class MidFunction implements FormulaFunction { readonly name = "MID"; readonly category = FunctionCategory.Text; readonly minArgs = 3; readonly maxArgs = 3; readonly description = "Returns characters from the middle of a text string."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `TRIM(text)` — collapses runs of spaces and trims ends (Excel semantics). */ export declare class TrimFunction implements FormulaFunction { readonly name = "TRIM"; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs = 1; readonly description = "Removes leading, trailing and repeated spaces from text."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `LOWER(text)` — lowercase. */ export declare class LowerFunction implements FormulaFunction { readonly name = "LOWER"; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs = 1; readonly description = "Converts text to lowercase."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `UPPER(text)` — uppercase. */ export declare class UpperFunction implements FormulaFunction { readonly name = "UPPER"; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs = 1; readonly description = "Converts text to uppercase."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** * Shared concatenation for CONCAT/CONCATENATE — flattens every argument * (including ranges) to text and joins with no separator. */ declare abstract class ConcatBaseFunction implements FormulaFunction { abstract readonly name: string; readonly category = FunctionCategory.Text; readonly minArgs = 1; readonly maxArgs: number; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `CONCAT(text1, …)` — joins text, flattening ranges. */ export declare class ConcatFunction extends ConcatBaseFunction { readonly name = "CONCAT"; readonly description = "Joins several text strings (and ranges) into one."; } /** `CONCATENATE(text1, …)` — legacy alias of CONCAT. */ export declare class ConcatenateFunction extends ConcatBaseFunction { readonly name = "CONCATENATE"; readonly description = "Joins several text strings into one (legacy)."; } /** `TEXTJOIN(delimiter, ignoreEmpty, text1, …)`. */ export declare class TextJoinFunction implements FormulaFunction { readonly name = "TEXTJOIN"; readonly category = FunctionCategory.Text; readonly minArgs = 3; readonly maxArgs: number; readonly description = "Joins text with a delimiter, optionally skipping empties."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `FIND(needle, haystack, [start])` — case-sensitive; `#VALUE!` when not found. */ export declare class FindFunction implements FormulaFunction { readonly name = "FIND"; readonly category = FunctionCategory.Text; readonly minArgs = 2; readonly maxArgs = 3; readonly description = "Finds one text string within another (case-sensitive)."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `SEARCH(needle, haystack, [start])` — case-insensitive; `#VALUE!` when not found. */ export declare class SearchFunction implements FormulaFunction { readonly name = "SEARCH"; readonly category = FunctionCategory.Text; readonly minArgs = 2; readonly maxArgs = 3; readonly description = "Finds one text string within another (case-insensitive)."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `REPLACE(text, start, count, newText)` — positional replacement. */ export declare class ReplaceFunction implements FormulaFunction { readonly name = "REPLACE"; readonly category = FunctionCategory.Text; readonly minArgs = 4; readonly maxArgs = 4; readonly description = "Replaces part of a text string with different text."; evaluate(args: readonly FormulaArgument[]): FormulaValue; } /** `SUBSTITUTE(text, oldText, newText, [instance])` — text-matched replacement. */ export declare class SubstituteFunction implements FormulaFunction { readonly name = "SUBSTITUTE"; readonly category = FunctionCategory.Text; readonly minArgs = 3; readonly maxArgs = 4; readonly description = "Substitutes new text for old text in a string."; evaluate(args: readonly FormulaArgument[]): FormulaValue; /** Replaces only the `n`-th (1-based) occurrence of `oldText`. */ private replaceNth; } export {}; //# sourceMappingURL=text-functions.d.ts.map