import * as Char from './char';
type LineComment = typeof LineComment;
type OpenComment = typeof OpenComment;
type CloseComment = typeof CloseComment;
declare const LineComment = "//";
declare const OpenComment = "/*";
declare const CloseComment = "*/";
type TDiscardMultiLineComment = (Input extends `${string}${CloseComment}${infer Rest extends string}` ? Rest : '');
type TDiscardLineComment = (Input extends `${string}${Char.TNewLine}${infer Rest extends string}` ? TTrimWhitespace<`${Char.TNewLine}${Rest}`> : '');
type W4 = `${W3}${W3}`;
type W3 = `${W2}${W2}`;
type W2 = `${W1}${W1}`;
type W1 = `${W0}${W0}`;
type W0 = ` `;
export type TTrimWhitespace = (Input extends `${OpenComment}${infer Rest extends string}` ? TTrimWhitespace> : Input extends `${LineComment}${infer Rest extends string}` ? TTrimWhitespace> : Input extends `${W4}${infer Rest extends string}` ? TTrimWhitespace : Input extends `${W3}${infer Rest extends string}` ? TTrimWhitespace : Input extends `${W1}${infer Rest extends string}` ? TTrimWhitespace : Input extends `${W0}${infer Rest extends string}` ? TTrimWhitespace : Input);
export declare function TrimWhitespace(input: Input): TTrimWhitespace;
export type TTrim = (Input extends `${OpenComment}${infer Rest extends string}` ? TTrim> : Input extends `${LineComment}${infer Rest extends string}` ? TTrim> : Input extends `${Char.TNewLine}${infer Rest extends string}` ? TTrim : Input extends `${Char.TTabSpace}${infer Rest extends string}` ? TTrim : Input extends `${W4}${infer Rest extends string}` ? TTrim : Input extends `${W3}${infer Rest extends string}` ? TTrim : Input extends `${W1}${infer Rest extends string}` ? TTrim : Input extends `${W0}${infer Rest extends string}` ? TTrim : Input);
export declare function Trim(input: Input): TTrim;
export {};