import type { Backslash, ErrorMessage, noSuggest, Scanner, writeUnclosedGroupMessage } from "@ark/util"; import type { parseEscapedChar, StringDigit } from "./escape.ts"; import type { s, State } from "./state.ts"; export type parseCharset = Scanner.shiftUntilEscapable extends (Scanner.shiftResult) ? nextUnscanned extends `]${infer remaining}` ? scanned extends Scanner.shift<"^", string> ? s.shiftQuantifiable : parseNonNegatedCharset extends (infer result extends string) ? [ result ] extends [never] ? s.error : s.shiftQuantifiable : never : s.error> : never; type parseNonNegatedCharset = parseChar extends Scanner.shiftResult ? result extends UnescapedDashMarker ? parseDash : result extends ErrorMessage ? result : parseNonNegatedCharset : set; type parseDash = lastChar extends string ? parseChar extends (Scanner.shiftResult) ? parseNonNegatedCharset, null> : // trailing -, treat as literal set | "-" : parseNonNegatedCharset; type inferRange = start | end extends StringDigit ? `${number}` : string; type UnescapedDashMarker = noSuggest<"dash">; type parseChar = unscanned extends Scanner.shift ? lookahead extends Backslash ? next extends Scanner.shift ? Scanner.shiftResult, postEscaped> : never : Scanner.shiftResult : null; export declare const emptyCharacterSetMessage = "Empty character set [] is unsatisfiable"; export type emptyCharacterSetMessage = typeof emptyCharacterSetMessage; export {};