import type { BaseRoot } from "@ark/schema"; import type { BigintLiteral, ErrorMessage, NumberLiteral, Scanner, trim } from "@ark/util"; import type { DateLiteral } from "../../../attributes.ts"; import type { RootedRuntimeState } from "../../reduce/dynamic.ts"; import type { EnclosingLiteralStartToken, EnclosingLiteralTokens, StringLiteral } from "../operand/enclosed.ts"; type UnitLiteralKeyword = "null" | "undefined" | "true" | "false"; export type UnitLiteral = UnenclosedUnitLiteral | EnclosedUnitLiteral; export type UnenclosedUnitLiteral = BigintLiteral | NumberLiteral | UnitLiteralKeyword; export type EnclosedUnitLiteral = StringLiteral | DateLiteral; export type ParsedDefaultableProperty = readonly [BaseRoot, "=", unknown]; export declare const parseDefault: (s: RootedRuntimeState) => ParsedDefaultableProperty; export type parseDefault = trim extends infer defaultExpression extends string ? defaultExpression extends UnenclosedUnitLiteral ? [ root, "=", defaultExpression ] : defaultExpression extends (`${infer start extends EnclosingLiteralStartToken}${string}`) ? defaultExpression extends `${start}${infer nextUnscanned}` ? isValidEnclosedLiteral extends true ? [ root, "=", defaultExpression ] : ErrorMessage> : never : ErrorMessage> : never; export type isValidEnclosedLiteral = Scanner.shiftUntilEscapable extends Scanner.shiftResult ? nextUnscanned extends EnclosingLiteralTokens[start] ? true : false : false; export declare const writeNonLiteralDefaultMessage: (defaultDef: defaultDef) => writeNonLiteralDefaultMessage; export type writeNonLiteralDefaultMessage = `Default value '${defaultDef}' must be a literal value`; export {};