export async function reserveConsultationModel< Model extends { readonly id: string }, Reservation, >( modelId: string, resolveModel: (modelId: string) => Model | null, reserveCredit: (model: Model) => Promise, ) { const model = resolveModel(modelId); if (!model) return { status: "unavailable" } as const; return { status: "reserved", model, usageModelId: model.id, reservation: await reserveCredit(model), } as const; }