import type { Api, Model, ProviderId } from "./types.ts";
export type ModelGroups = Record<string, Record<string, object>>;
type ModelId<TGroups extends ModelGroups> = {
    [TApi in keyof TGroups]: keyof TGroups[TApi];
}[keyof TGroups] & string;
type ModelApi<TGroups extends ModelGroups, TModelId extends ModelId<TGroups>> = {
    [TApi in keyof TGroups]: TModelId extends keyof TGroups[TApi] ? TApi : never;
}[keyof TGroups] & Api;
export type ModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {
    [TModelId in ModelId<TGroups>]: Model<ModelApi<TGroups, TModelId>> & {
        id: TModelId;
        provider: TProvider;
    };
};
export declare function flattenModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(_provider: TProvider, groups: TGroups): ModelCatalog<TGroups, TProvider>;
export {};
//# sourceMappingURL=model-catalog.d.ts.map