import type { Api, Model, ProviderId } from "./types.ts"; export type ModelGroups = Record>; type ModelId = { [TApi in keyof TGroups]: keyof TGroups[TApi]; }[keyof TGroups] & string; type ModelApi> = { [TApi in keyof TGroups]: TModelId extends keyof TGroups[TApi] ? TApi : never; }[keyof TGroups] & Api; export type ModelCatalog = { [TModelId in ModelId]: Model> & { id: TModelId; provider: TProvider; }; }; export function flattenModelCatalog( _provider: TProvider, groups: TGroups, ): ModelCatalog { return Object.assign({}, ...Object.values(groups)) as ModelCatalog; }