import type { DocumentType } from '../../core/models/api/document';
import type { RecursiveKeyOf } from '../getNestedPropertyKeys';
/**
 * All the (recursive) key paths possible on an object, including partial paths.
 *
 * @example
 * ```ts
 * const house = {
 *   kitchen: {
 *     doors: 2,
 *     cupboards: 5,
 *   },
 *   bedroom: {
 *     bed: {
 *       comfy: true,
 *     },
 *   },
 * };
 *
 * const mappingKeys: MappingKey<typeof house>[] = [
 *   'kitchen',
 *   'kitchen.doors',
 *   'kitchen.cupboards',
 *   'bedroom',
 *   'bedroom.bed',
 *   'bedroom.bed.comfy',
 * ];
 * ```
 */
export type MappingKey<T extends object> = RecursiveKeyOf<T, {
    includePartialPaths: true;
}>;
export type MappingRecord<SourceSchema extends object, TargetSchema extends object> = Partial<Record<MappingKey<SourceSchema>, MappingKey<TargetSchema>>>;
export type DocumentMappingRecord<TargetSchema extends object> = Partial<Record<DocumentType, MappingKey<TargetSchema>>>;
