import { type TTrim } from './internal/trim'; import { type TNewLine } from './internal/char'; import { type TTake } from './internal/take'; import { type TUntil } from './until'; type TMultiLine = (TTake<[Start], Input> extends [infer _, infer Rest extends string] ? TUntil<[End], Rest> extends [infer Until extends string, infer UntilRest extends string] ? TTake<[End], UntilRest> extends [infer _ extends string, infer Rest extends string] ? [`${Until}`, Rest] : [] : [] : []); type TSingleLine = (TTake<[Start], Input> extends [infer _ extends string, infer Rest extends string] ? TUntil<[TNewLine, End], Rest> extends [infer Until extends string, infer UntilRest extends string] ? TTake<[End], UntilRest> extends [infer _ extends string, infer EndRest extends string] ? [`${Until}`, EndRest] : [] : [] : []); /** Matches from Start and End capturing everything in-between. Start and End are consumed. */ export type TSpan = (MultiLine extends true ? TMultiLine> : TSingleLine>); /** Matches from Start and End capturing everything in-between. Start and End are consumed. */ export declare function Span(start: Start, end: End, multiLine: MultiLine, input: Input): TSpan; export {};