import { type ErrorMessage, type Scanner } from "@ark/util"; import type { Regex, regex } from "arkregex"; import type { Out } from "../../../attributes.ts"; import type { InferredAst } from "../../ast/infer.ts"; import type { RuntimeState } from "../../reduce/dynamic.ts"; import type { StaticState, s } from "../../reduce/static.ts"; export type StringLiteral = DoubleQuotedStringLiteral | SingleQuotedStringLiteral; export type DoubleQuotedStringLiteral = `"${contents}"`; export type SingleQuotedStringLiteral = `'${contents}'`; export declare const parseEnclosed: (s: RuntimeState, enclosing: EnclosingStartToken) => void; export type parseEnclosed = Scanner.shiftUntilEscapable extends Scanner.shiftResult ? _parseEnclosed : never; type _parseEnclosed = nextUnscanned extends "" ? s.error> : enclosingStart extends EnclosingQuote ? s.setRoot, nextUnscanned extends Scanner.shift ? unscanned : ""> : enclosingStart extends EnclosingRegexToken ? regex.parse extends infer r ? r extends Regex ? s.setRoot Out, def>, nextUnscanned extends Scanner.shift ? unscanned : ""> : r extends ErrorMessage ? s.error : never : never : s.setRoot, nextUnscanned extends Scanner.shift ? unscanned : "">; export declare const enclosingQuote: { readonly "'": 1; readonly '"': 1; }; export type EnclosingQuote = keyof typeof enclosingQuote; export declare const enclosingChar: { readonly "/": 1; readonly "'": 1; readonly '"': 1; }; export declare const enclosingLiteralTokens: { readonly "d'": "'"; readonly 'd"': "\""; readonly "'": "'"; readonly '"': "\""; }; export type EnclosingLiteralTokens = typeof enclosingLiteralTokens; export type EnclosingLiteralStartToken = keyof EnclosingLiteralTokens; export declare const enclosingRegexTokens: { readonly "/": "/"; readonly "x/": "/"; }; export type EnclosingRegexTokens = typeof enclosingRegexTokens; export type EnclosingRegexToken = keyof EnclosingRegexTokens; export declare const enclosingTokens: { readonly "/": "/"; readonly "x/": "/"; readonly "d'": "'"; readonly 'd"': "\""; readonly "'": "'"; readonly '"': "\""; }; export type EnclosingTokens = typeof enclosingTokens; export type EnclosingStartToken = keyof EnclosingTokens; export type EnclosingEndToken = EnclosingTokens[keyof EnclosingTokens]; export declare const untilLookaheadIsClosing: Record; declare const enclosingCharDescriptions: { readonly '"': "double-quote"; readonly "'": "single-quote"; readonly "/": "forward slash"; }; type enclosingCharDescriptions = typeof enclosingCharDescriptions; export declare const writeUnterminatedEnclosedMessage: (fragment: fragment, enclosingStart: enclosingStart) => writeUnterminatedEnclosedMessage; export type writeUnterminatedEnclosedMessage = `${enclosingStart}${fragment} requires a closing ${enclosingCharDescriptions[EnclosingTokens[enclosingStart]]}`; export {};