import { EnumBsonSchemaOf } from './EnumBsonSchemaOf'; import { FromBsonSchema } from './FromBsonSchema'; import { SchemaBase } from '../generic/SchemaBase'; import { StringBsonSchema } from './StringBsonSchema'; import { BsonSchema } from './BsonSchemaOrPrimitive'; export type MapBsonSchema = { readonly type: 'map'; readonly keys: StringBsonSchema | EnumBsonSchemaOf; readonly values: BsonSchema; readonly partial?: boolean; readonly default?: Record; readonly examples?: Record[]; }; export type MapBsonSchemaOf, V, P = false> = SchemaBase & { readonly type: 'map'; readonly keys: K; readonly values: V; readonly partial: P; }; export type FromMapBsonSchema = S['partial'] extends true ? { -readonly [key in S['keys'] extends EnumBsonSchemaOf ? M : string]?: FromBsonSchema; } : { -readonly [key in S['keys'] extends EnumBsonSchemaOf ? M : string]: FromBsonSchema; };