import type { Expand, ScopeField } from './scope'; type ResolveField< F extends ScopeField, CodecTypes extends Record, > = F['codecId'] extends keyof CodecTypes ? F['nullable'] extends true ? CodecTypes[F['codecId']]['output'] | null : CodecTypes[F['codecId']]['output'] : unknown; type ApplyNullable = F['nullable'] extends true ? T | null : T; export type ResolveRow< Row extends Record, CodecTypes extends Record, PreResolved extends Record = Record, > = Expand<{ -readonly [K in keyof Row]: string extends keyof PreResolved ? ResolveField : K extends keyof PreResolved ? ApplyNullable, Row[K]> : ResolveField; }>;