import { type TSchema } from '../../types/schema.mjs'; import { type TEnum, type TEnumValue } from '../../types/enum.mjs'; import { type TLiteral, type TLiteralValue } from '../../types/literal.mjs'; import { type TUnion } from '../../types/union.mjs'; import { type TTemplateLiteral, type TTemplateLiteralDeferred } from '../../types/template_literal.mjs'; import { type TBigInt, BigIntPattern } from '../../types/bigint.mjs'; import { type TString, StringPattern } from '../../types/string.mjs'; import { type TNumber, NumberPattern } from '../../types/number.mjs'; import { type TInteger, IntegerPattern } from '../../types/integer.mjs'; import { type TBoolean } from '../../types/boolean.mjs'; import { NeverPattern } from '../../types/never.mjs'; import { type TEvaluateEnum } from '../evaluate/evaluate.mjs'; import { type TTemplateLiteralAction } from './instantiate.mjs'; type TJoinString = (Input extends [infer Left extends string, ...infer Right extends string[]] ? Result extends '' ? TJoinString : TJoinString : Result); type TUnwrapTemplateLiteralPattern = (Pattern extends `^${infer Pattern extends string}$` ? Pattern : never); type TEncodeLiteral = (TEncodeTypes); type TEncodeBigInt = (TEncodeTypes); type TEncodeInteger = (TEncodeTypes); type TEncodeNumber = (TEncodeTypes); type TEncodeBoolean = (TEncodeType, TLiteral<'true'>]>, Right, Pattern>); type TEncodeString = (TEncodeTypes); type TEncodeTemplateLiteral = (TEncodeTypes}`>); type TEncodeTemplateLiteralDeferred, Result extends TSchema = TEncodeType> = Result; type TEncodeEnum> = TEncodeType; type TEncodeUnion = Types extends [infer Head extends TSchema, ...infer Tail extends TSchema[]] ? TEncodeUnion]> : TEncodeTypes})`>; type TEncodeType = (Type extends TEnum ? TEncodeEnum : Type extends TInteger ? TEncodeInteger : Type extends TLiteral ? TEncodeLiteral : Type extends TBigInt ? TEncodeBigInt : Type extends TBoolean ? TEncodeBoolean : Type extends TNumber ? TEncodeNumber : Type extends TString ? TEncodeString : Type extends TTemplateLiteral ? TEncodeTemplateLiteral : Type extends TTemplateLiteralDeferred ? TEncodeTemplateLiteralDeferred : Type extends TUnion ? TEncodeUnion : typeof NeverPattern); type TEncodeTypes = (Types extends [infer Left extends TSchema, ...infer Right extends TSchema[]] ? TEncodeType : Pattern); type TEncodePattern, Result extends string = `^${Encoded}$`> = Result; /** Encodes a TemplateLiteral type sequence into a TemplateLiteral */ export type TTemplateLiteralEncode, Result extends TSchema = TTemplateLiteral> = Result; /** Encodes a TemplateLiteral type sequence into a TemplateLiteral */ export declare function TemplateLiteralEncode(types: [...Types]): TTemplateLiteralEncode; export {};