import type { TSchema } from '../schema/index'; import { type ZeroString, type UnionToTuple, type TIncrement } from '../helpers/index'; import type { TRecursive } from '../recursive/index'; import type { TIntersect } from '../intersect/index'; import type { TUnion } from '../union/index'; import type { TTuple } from '../tuple/index'; import type { TArray } from '../array/index'; import type { TObject, TProperties } from '../object/index'; import { type TSetUnionMany, type TSetIntersectMany } from '../sets/index'; type TFromRest = (Types extends [infer L extends TSchema, ...infer R extends TSchema[]] ? TFromRest]> : Result); type TFromIntersect, PropertyKeys extends PropertyKey[] = TSetUnionMany> = PropertyKeys; type TFromUnion, PropertyKeys extends PropertyKey[] = TSetIntersectMany> = PropertyKeys; type TFromTuple = Types extends [infer _ extends TSchema, ...infer R extends TSchema[]] ? TFromTuple, [...Acc, Indexer]> : Acc; type TFromArray<_ extends TSchema> = ([ '[number]' ]); type TFromProperties = (UnionToTuple); export type TKeyOfPropertyKeys = (Type extends TRecursive ? TKeyOfPropertyKeys : Type extends TIntersect ? TFromIntersect : Type extends TUnion ? TFromUnion : Type extends TTuple ? TFromTuple : Type extends TArray ? TFromArray : Type extends TObject ? TFromProperties : [ ]); /** Returns a tuple of PropertyKeys derived from the given TSchema. */ export declare function KeyOfPropertyKeys(type: Type): TKeyOfPropertyKeys; /** Returns a regular expression pattern derived from the given TSchema */ export declare function KeyOfPattern(schema: TSchema): string; export {};