import type { TSchema, SchemaOptions } from '../schema/index'; import type { Assert } from '../helpers/index'; import type { TUnion } from '../union/index'; import type { TLiteral } from '../literal/index'; import type { TInteger } from '../integer/index'; import type { TNumber } from '../number/index'; import type { TBigInt } from '../bigint/index'; import type { TString } from '../string/index'; import type { TBoolean } from '../boolean/index'; import type { TNever } from '../never/index'; import type { Static } from '../static/index'; import { type TTemplateLiteralSyntax } from './syntax'; import { EmptyString } from '../helpers/index'; import { Kind } from '../symbols/index'; type TemplateLiteralStaticKind = T extends TUnion ? { [K in keyof U]: TemplateLiteralStatic, Acc>; }[number] : T extends TTemplateLiteral ? `${Static}` : T extends TLiteral ? `${U}` : T extends TString ? `${string}` : T extends TNumber ? `${number}` : T extends TBigInt ? `${bigint}` : T extends TBoolean ? `${boolean}` : never; type TemplateLiteralStatic = T extends [infer L, ...infer R] ? `${TemplateLiteralStaticKind}${TemplateLiteralStatic, Acc>}` : Acc; export type TTemplateLiteralKind = TTemplateLiteral | TUnion | TLiteral | TInteger | TNumber | TBigInt | TString | TBoolean | TNever; export interface TTemplateLiteral extends TSchema { [Kind]: 'TemplateLiteral'; static: TemplateLiteralStatic; type: 'string'; pattern: string; } /** `[Json]` Creates a TemplateLiteral type from template dsl string */ export declare function TemplateLiteral(syntax: T, options?: SchemaOptions): TTemplateLiteralSyntax; /** `[Json]` Creates a TemplateLiteral type */ export declare function TemplateLiteral(kinds: [...T], options?: SchemaOptions): TTemplateLiteral; export {};