import type { TSchema, SchemaOptions } from '../schema/index'; import { type TTemplateLiteral, type TTemplateLiteralKind } from '../template-literal/index'; import { type TIntrinsicFromMappedKey } from './intrinsic-from-mapped-key'; import { type TLiteral } from '../literal/index'; import { type TUnion } from '../union/index'; import { type TMappedKey } from '../mapped/index'; export type IntrinsicMode = 'Uppercase' | 'Lowercase' | 'Capitalize' | 'Uncapitalize'; type TFromTemplateLiteral = M extends IntrinsicMode ? T extends [infer L extends TTemplateLiteralKind, ...infer R extends TTemplateLiteralKind[]] ? [TIntrinsic, ...TFromTemplateLiteral] : T : T; type TFromLiteralValue = (T extends string ? M extends 'Uncapitalize' ? Uncapitalize : M extends 'Capitalize' ? Capitalize : M extends 'Uppercase' ? Uppercase : M extends 'Lowercase' ? Lowercase : string : T); type TFromRest = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest]> : Acc; export type TIntrinsic = T extends TMappedKey ? TIntrinsicFromMappedKey : T extends TTemplateLiteral ? TTemplateLiteral> : T extends TUnion ? TUnion> : T extends TLiteral ? TLiteral> : T; /** Applies an intrinsic string manipulation to the given type. */ export declare function Intrinsic(schema: T, mode: M, options?: SchemaOptions): TIntrinsicFromMappedKey; /** Applies an intrinsic string manipulation to the given type. */ export declare function Intrinsic(schema: T, mode: M, options?: SchemaOptions): TIntrinsic; export {};