type NonEmpty = T extends '' ? never : T; type BemSchema = Record, { _: NonEmpty; [element: string]: NonEmpty; }>; type BemBlocks = { [B in keyof S]: { modifiers: Set | null; elements?: { [E in Exclude]: { modifiers: Set | null; }; }; }; }; export type { BemBlocks as B, BemSchema as a };