import type { BaseParseContext, resolvableReferenceIn } from "@ark/schema"; import { type ErrorMessage } from "@ark/util"; import type { ArkAmbient } from "../config.ts"; import type { InnerParseResult, resolutionToAst } from "../scope.ts"; import type { inferAstRoot } from "./ast/infer.ts"; import { RuntimeState, type RootedRuntimeState } from "./reduce/dynamic.ts"; import type { StringifiablePrefixOperator } from "./reduce/shared.ts"; import type { s, StaticState } from "./reduce/static.ts"; import type { parseOperand } from "./shift/operand/operand.ts"; import { parseDefault } from "./shift/operator/default.ts"; import { writeUnexpectedCharacterMessage, type parseOperator } from "./shift/operator/operator.ts"; export declare const parseString: (def: string, ctx: BaseParseContext) => InnerParseResult; /** * Try to parse the definition from right to left using the most common syntax. * This can be much more efficient for simple definitions. */ export type parseString = def extends keyof $ ? resolutionToAst : def extends `${infer child}[]` ? child extends keyof $ ? [ resolutionToAst, "[]" ] : fullStringParse, $, args> : fullStringParse, $, args>; export type inferString = inferAstRoot, $, args>; export type BaseCompletions<$, args, otherSuggestions extends string = never> = resolvableReferenceIn<$> | resolvableReferenceIn | (keyof args & string) | StringifiablePrefixOperator | otherSuggestions; export declare const fullStringParse: (s: RuntimeState) => InnerParseResult; type fullStringParse = extractFinalizedResult>; export declare const parseUntilFinalizer: (s: RuntimeState) => RootedRuntimeState; export type parseUntilFinalizer = s["finalizer"] extends undefined ? parseUntilFinalizer, $, args> : s; declare const next: (s: RuntimeState) => void; type next = s["root"] extends undefined ? parseOperand : parseOperator; export type extractFinalizedResult = s["finalizer"] extends "" ? s["root"] : s["finalizer"] extends ErrorMessage ? s["finalizer"] : s["finalizer"] extends "?" ? [s["root"], "?"] : s["finalizer"] extends "=" ? parseDefault : ErrorMessage>; export {};