import { D as Direction } from '../types-CK7PVYeU.js';

/** Strong direction of a single character/codepoint. */
declare function charDirection(ch: string): Direction;
/**
 * Detect the base direction of `text` using the first-strong-character rule.
 * Returns `"neutral"` when the string has no strong letters (e.g. only digits
 * or punctuation).
 */
declare function detectDirection(text: string): Direction;
/** True when the first strong character of `text` is right-to-left. */
declare function isRTL(text: string): boolean;

/** Left-to-Right Isolate (U+2066). */
declare const LRI: string;
/** Right-to-Left Isolate (U+2067). */
declare const RLI: string;
/** First Strong Isolate (U+2068). */
declare const FSI: string;
/** Pop Directional Isolate (U+2069). */
declare const PDI: string;
/** Left-to-Right Mark (U+200E). */
declare const LRM: string;
/** Right-to-Left Mark (U+200F). */
declare const RLM: string;
/** Arabic Letter Mark (U+061C). */
declare const ALM: string;
/** Direction hint for {@link isolate}: pick the bracket, or let it auto-detect. */
type IsolateDirection = "auto" | "ltr" | "rtl";
/**
 * Wrap `text` in a Unicode directional isolate so it composes safely inside
 * surrounding text of either direction. Defaults to a First Strong Isolate
 * (FSI), which adopts the text's own detected direction.
 */
declare function isolate(text: string, dir?: IsolateDirection): string;
/** Wrap `text` as a left-to-right isolate (LRI … PDI). */
declare function wrapLTR(text: string): string;
/** Wrap `text` as a right-to-left isolate (RLI … PDI). */
declare function wrapRTL(text: string): string;
/** Remove every Unicode bidi control character (marks, embeddings, isolates). */
declare function stripBidi(text: string): string;
interface IsolateForeignOptions {
    /** Base direction of the surrounding text. Defaults to the detected base. */
    base?: Direction;
    /** Also isolate runs of Western digits (phone numbers, codes). Default true. */
    numbers?: boolean;
}
/**
 * Fix the "broken sentence" problem: wrap each run of opposite-direction content
 * (English words, phone numbers, emails, URLs) embedded in `text` with an
 * isolate, so it keeps its internal order without reordering the rest.
 *
 * @example
 * isolateForeign("اتصل على +1 (555) 234-5678 الآن")
 * // the phone number is wrapped in FSI … PDI and no longer flips the sentence
 */
declare function isolateForeign(text: string, options?: IsolateForeignOptions): string;

export { ALM, FSI, type IsolateDirection, type IsolateForeignOptions, LRI, LRM, PDI, RLI, RLM, charDirection, detectDirection, isRTL, isolate, isolateForeign, stripBidi, wrapLTR, wrapRTL };
