import { TIsTemplateLiteralFinite } from './finite'; import { TypeBoxError } from '../error/index'; import type { Assert } from '../helpers/index'; import type { TBoolean } from '../boolean/index'; import type { TTemplateLiteral, TTemplateLiteralKind } from './index'; import type { TLiteral, TLiteralValue } from '../literal/index'; import type { Expression } from './parse'; import type { TUnion } from '../union/index'; export declare class TemplateLiteralGenerateError extends TypeBoxError { } type TStringReduceUnary = R extends [infer A extends string, ...infer B extends string[]] ? TStringReduceUnary : Acc; type TStringReduceBinary = L extends [infer A extends string, ...infer B extends string[]] ? TStringReduceBinary]> : Acc; type TStringReduceMany = T extends [infer L extends string[], infer R extends string[], ...infer Rest extends string[][]] ? TStringReduceMany<[TStringReduceBinary, ...Rest]> : T; type TStringReduce> = 0 extends keyof O ? Assert : []; type TFromTemplateLiteralUnionKinds = T extends [infer L extends TLiteral, ...infer R extends TLiteral[]] ? [`${L['const']}`, ...TFromTemplateLiteralUnionKinds] : []; type TFromTemplateLiteralKinds = T extends [infer L extends TTemplateLiteralKind, ...infer R extends TTemplateLiteralKind[]] ? (L extends TTemplateLiteral ? TFromTemplateLiteralKinds<[...S, ...R], Acc> : L extends TLiteral ? TFromTemplateLiteralKinds : L extends TUnion ? TFromTemplateLiteralKinds]> : L extends TBoolean ? TFromTemplateLiteralKinds : Acc) : Acc; export declare function TemplateLiteralExpressionGenerate(expression: Expression): IterableIterator; export type TTemplateLiteralGenerate> = F extends true ? (T extends TTemplateLiteral ? TFromTemplateLiteralKinds extends infer R extends string[][] ? TStringReduce : [] : []) : []; /** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */ export declare function TemplateLiteralGenerate(schema: T): TTemplateLiteralGenerate; export {};