UNPKG

@microfox/usage-pricing

Version:

A TypeScript SDK for Tracking Pricing & Usage of any LLM and TypeScript AI SDK internally.

1,930 lines (1,919 loc) 47.4 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { MicrofoxUsagePricing: () => MicrofoxUsagePricing, PricingConfig: () => PricingConfig, UsageWithPricingSchema: () => UsageWithPricingSchema, attachPricing: () => attachPricing, attachPricingApi1: () => attachPricingApi1, attachPricingLLM: () => attachPricingLLM, createDefaultMicrofoxUsagePricing: () => createDefaultMicrofoxUsagePricing, createMicrofoxUsagePricing: () => createMicrofoxUsagePricing, fetchProviderPackage: () => fetchProviderPackage, getPricingForLLM: () => getPricingForLLM }); module.exports = __toCommonJS(index_exports); // src/pricing/ai-provider-openai.ts var commonPricingPrompt = { dataUnit: "token", per: 1e6, description: "Per 1 million prompt token" }; var commonPricingCompletion = { dataUnit: "token", per: 1e6, description: "Per 1 million completion token" }; var OpenAIPricingConfig = { ["ai-provider-openai"]: { type: "llm", // GPT-4.1 Models ["gpt-4.1"]: { promptToken: { basePriceUSD: 2, ...commonPricingPrompt }, completionToken: { basePriceUSD: 8, ...commonPricingCompletion } }, ["gpt-4.1-2025-04-14"]: { promptToken: { basePriceUSD: 2, ...commonPricingPrompt }, completionToken: { basePriceUSD: 8, ...commonPricingCompletion } }, ["gpt-4.1-mini"]: { promptToken: { basePriceUSD: 0.4, ...commonPricingPrompt }, completionToken: { basePriceUSD: 1.6, ...commonPricingCompletion } }, ["gpt-4.1-mini-2025-04-14"]: { promptToken: { basePriceUSD: 0.4, ...commonPricingPrompt }, completionToken: { basePriceUSD: 1.6, ...commonPricingCompletion } }, ["gpt-4.1-nano"]: { promptToken: { basePriceUSD: 0.1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion } }, ["gpt-4.1-nano-2025-04-14"]: { promptToken: { basePriceUSD: 0.1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion } }, // GPT-4.5 Models ["gpt-4.5-preview"]: { promptToken: { basePriceUSD: 75, ...commonPricingPrompt }, completionToken: { basePriceUSD: 150, ...commonPricingCompletion } }, ["gpt-4.5-preview-2025-02-27"]: { promptToken: { basePriceUSD: 75, ...commonPricingPrompt }, completionToken: { basePriceUSD: 150, ...commonPricingCompletion } }, // GPT-4o Models ["gpt-4o"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion } }, ["gpt-4o-2024-08-06"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion } }, ["gpt-4o-2024-11-20"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion } }, ["gpt-4o-2024-05-13"]: { promptToken: { basePriceUSD: 5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion } }, ["gpt-4o-mini"]: { promptToken: { basePriceUSD: 0.15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.6, ...commonPricingCompletion } }, ["gpt-4-0613"]: { promptToken: { basePriceUSD: 0.15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.6, ...commonPricingCompletion } }, ["gpt-4o-mini-2024-07-18"]: { promptToken: { basePriceUSD: 0.15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.6, ...commonPricingCompletion } }, // Audio Models ["gpt-4o-audio-preview"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion } }, ["gpt-4o-audio-preview-2024-12-17"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion } }, ["gpt-4o-audio-preview-2024-10-01"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion } }, ["gpt-4o-mini-audio-preview"]: { promptToken: { basePriceUSD: 0.15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.6, ...commonPricingCompletion } }, ["gpt-4o-mini-audio-preview-2024-12-17"]: { promptToken: { basePriceUSD: 0.15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 0.6, ...commonPricingCompletion } }, // Realtime Models ["gpt-4o-realtime-preview"]: { promptToken: { basePriceUSD: 5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 20, ...commonPricingCompletion } }, ["gpt-4o-realtime-preview-2024-12-17"]: { promptToken: { basePriceUSD: 5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 20, ...commonPricingCompletion } }, ["gpt-4o-realtime-preview-2024-10-01"]: { promptToken: { basePriceUSD: 5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 20, ...commonPricingCompletion } }, ["gpt-4o-mini-realtime-preview"]: { promptToken: { basePriceUSD: 0.6, ...commonPricingPrompt }, completionToken: { basePriceUSD: 2.4, ...commonPricingCompletion } }, ["gpt-4o-mini-realtime-preview-2024-12-17"]: { promptToken: { basePriceUSD: 0.6, ...commonPricingPrompt }, completionToken: { basePriceUSD: 2.4, ...commonPricingCompletion } }, // O1 Models ["o1"]: { promptToken: { basePriceUSD: 15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 60, ...commonPricingCompletion } }, ["o1-2024-12-17"]: { promptToken: { basePriceUSD: 15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 60, ...commonPricingCompletion } }, ["o1-preview-2024-09-12"]: { promptToken: { basePriceUSD: 15, ...commonPricingPrompt }, completionToken: { basePriceUSD: 60, ...commonPricingCompletion } }, ["o1-pro"]: { promptToken: { basePriceUSD: 150, ...commonPricingPrompt }, completionToken: { basePriceUSD: 600, ...commonPricingCompletion } }, ["o1-pro-2025-03-19"]: { promptToken: { basePriceUSD: 150, ...commonPricingPrompt }, completionToken: { basePriceUSD: 600, ...commonPricingCompletion } }, // O3 Models ["o3"]: { promptToken: { basePriceUSD: 10, ...commonPricingPrompt }, completionToken: { basePriceUSD: 40, ...commonPricingCompletion } }, ["o3-2025-04-16"]: { promptToken: { basePriceUSD: 10, ...commonPricingPrompt }, completionToken: { basePriceUSD: 40, ...commonPricingCompletion } }, ["o3-mini"]: { promptToken: { basePriceUSD: 1.1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 4.4, ...commonPricingCompletion } }, ["o3-mini-2025-01-31"]: { promptToken: { basePriceUSD: 1.1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 4.4, ...commonPricingCompletion } }, // O4 Models ["o4-mini"]: { promptToken: { basePriceUSD: 1.1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 4.4, ...commonPricingCompletion } }, ["o4-mini-2025-04-16"]: { promptToken: { basePriceUSD: 1.1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 4.4, ...commonPricingCompletion } }, // GPT-3.5 Models ["gpt-3.5-turbo"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 1.5, ...commonPricingCompletion } }, ["gpt-3.5-turbo-0125"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 1.5, ...commonPricingCompletion } }, ["gpt-3.5-turbo-1106"]: { promptToken: { basePriceUSD: 1, ...commonPricingPrompt }, completionToken: { basePriceUSD: 2, ...commonPricingCompletion } }, ["gpt-3.5-turbo-0613"]: { promptToken: { basePriceUSD: 1.5, ...commonPricingPrompt }, completionToken: { basePriceUSD: 2, ...commonPricingCompletion } }, ["gpt-3.5-turbo-16k-0613"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt }, completionToken: { basePriceUSD: 4, ...commonPricingCompletion } }, // Embeddings Models ["text-embedding-3-small"]: { promptToken: { basePriceUSD: 0.02, dataUnit: "token", per: 1e6, description: "Per 1 million tokens" } }, ["text-embedding-3-large"]: { promptToken: { basePriceUSD: 0.13, dataUnit: "token", per: 1e6, description: "Per 1 million tokens" } }, ["text-embedding-ada-002"]: { promptToken: { basePriceUSD: 0.1, dataUnit: "token", per: 1e6, description: "Per 1 million tokens" } } } }; // src/pricing/aws-ses.ts var AwsSesPricingConfig = { ["aws-ses"]: { type: "api_1", outboundEmail: { requestCount: { basePriceUSD: 0.1, dataUnit: "email", per: 1e3, description: "Per email sent" }, requestData: { basepriceUSD: 0.12, // per GB per: 1, dataUnit: "GB", // "GB, MB, KB, B" description: "Per byte of data in the attachments you send" } } } }; // src/pricing/brave.ts var BravePricingConfig = { ["brave"]: { type: "api_1", dataForSearch: { requestCount: { basePriceUSD: 5, dataUnit: "search", per: 1e3, description: "Per 1000 search requests" } } } }; // src/pricing/ai-provider-anthropic.ts var commonPricingPrompt2 = { dataUnit: "token", per: 1e6, description: "Per 1 million prompt token" }; var commonPricingCompletion2 = { dataUnit: "token", per: 1e6, description: "Per 1 million completion token" }; var commonPricingCache5m = { dataUnit: "token", per: 1e6, description: "Per 1 million tokens for 5-minute cache writes" }; var commonPricingCache1h = { dataUnit: "token", per: 1e6, description: "Per 1 million tokens for 1-hour cache writes" }; var commonPricingCacheHits = { dataUnit: "token", per: 1e6, description: "Per 1 million tokens for cache hits & refreshes" }; var AnthropicAIPricingConfig = { ["ai-provider-anthropic"]: { type: "llm", // Claude 4 Models ["claude-4-opus-20250514"]: { promptToken: { basePriceUSD: 15, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 75, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 18.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 30, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 1.5, ...commonPricingCacheHits } }, ["claude-4-sonnet-20250514"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 3.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 6, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.3, ...commonPricingCacheHits } }, // Claude 3.7 Models ["claude-3-7-sonnet-20250219"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 3.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 6, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.3, ...commonPricingCacheHits } }, // Claude 3.5 Models ["claude-3-5-sonnet-20241022"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 3.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 6, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.3, ...commonPricingCacheHits } }, ["claude-3-5-sonnet-20240620"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 3.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 6, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.3, ...commonPricingCacheHits } }, ["claude-3-5-haiku-20241022"]: { promptToken: { basePriceUSD: 0.8, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 4, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 1, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 1.6, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.08, ...commonPricingCacheHits } }, // Claude 3 Models ["claude-3-opus-20240229"]: { promptToken: { basePriceUSD: 15, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 75, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 18.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 30, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 1.5, ...commonPricingCacheHits } }, ["claude-3-sonnet-20240229"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 3.75, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 6, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.3, ...commonPricingCacheHits } }, ["claude-3-haiku-20240307"]: { promptToken: { basePriceUSD: 0.25, ...commonPricingPrompt2 }, completionToken: { basePriceUSD: 1.25, ...commonPricingCompletion2 }, cache5mToken: { basePriceUSD: 0.3, ...commonPricingCache5m }, cache1hToken: { basePriceUSD: 0.5, ...commonPricingCache1h }, cacheHitsToken: { basePriceUSD: 0.03, ...commonPricingCacheHits } } } }; // src/pricing/ai-provider-google.ts var commonPricingPrompt3 = { dataUnit: "token", per: 1e6, description: "Per 1 million prompt token" }; var commonPricingCompletion3 = { dataUnit: "token", per: 1e6, description: "Per 1 million completion token" }; var commonPricingCache = { dataUnit: "token", per: 1e6, description: "Per 1 million tokens for context caching" }; var commonPricingCacheStorage = { dataUnit: "token", per: 1e6, description: "Per 1 million tokens per hour for context caching storage" }; var GoogleAIPricingConfig = { ["ai-provider-google"]: { type: "llm", // Gemini 2.5 Models ["gemini-2.5-pro"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.31, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 4.5, ...commonPricingCacheStorage } }, ["gemini-2.5-pro-long-context"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.625, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 4.5, ...commonPricingCacheStorage } }, ["gemini-2.5-flash"]: { promptToken: { basePriceUSD: 0.3, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2.5, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.075, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.5-flash-audio"]: { promptToken: { basePriceUSD: 1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2.5, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.25, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.5-flash-lite"]: { promptToken: { basePriceUSD: 0.1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.025, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.5-flash-lite-audio"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.125, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.5-flash-lite-preview-06-17"]: { promptToken: { basePriceUSD: 0.1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.025, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.5-flash-native-audio"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-native-audio-audio"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 12, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-tts"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion3 } }, ["gemini-2.5-pro-tts"]: { promptToken: { basePriceUSD: 1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 20, ...commonPricingCompletion3 } }, // Legacy Gemini 2.5 Models (keeping for backward compatibility) ["gemini-2.5-pro-preview-05-06"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion3 } }, ["gemini-2.5-pro-preview-05-06-long-context"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-preview-05-20"]: { promptToken: { basePriceUSD: 0.3, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2.5, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-preview-05-20-thinking"]: { promptToken: { basePriceUSD: 0.3, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2.5, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-preview-native-audio-dialog"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-exp-native-audio-thinking-dialog"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2, ...commonPricingCompletion3 } }, ["gemini-2.5-flash-preview-tts"]: { promptToken: { basePriceUSD: 0.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion3 } }, ["gemini-2.5-pro-preview-tts"]: { promptToken: { basePriceUSD: 1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 20, ...commonPricingCompletion3 } }, // Gemini 2.0 Models ["gemini-2.0-flash"]: { promptToken: { basePriceUSD: 0.1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.025, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.0-flash-audio"]: { promptToken: { basePriceUSD: 0.7, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.4, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.175, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-2.0-flash-live-001"]: { promptToken: { basePriceUSD: 0.35, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 1.5, ...commonPricingCompletion3 } }, ["gemini-2.0-flash-live-001-audio"]: { promptToken: { basePriceUSD: 2.1, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 8.5, ...commonPricingCompletion3 } }, ["gemini-2.0-flash-lite"]: { promptToken: { basePriceUSD: 0.075, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.3, ...commonPricingCompletion3 } }, ["gemini-2.0-flash-preview-image-generation"]: { promptToken: { basePriceUSD: 0.039, dataUnit: "image", per: 1, description: "Per image" } }, // Gemini 1.5 Models ["gemini-1.5-pro"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.3125, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 4.5, ...commonPricingCacheStorage } }, ["gemini-1.5-pro-long-context"]: { promptToken: { basePriceUSD: 2.5, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 10, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.625, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 4.5, ...commonPricingCacheStorage } }, ["gemini-1.5-flash"]: { promptToken: { basePriceUSD: 0.075, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.3, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.01875, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-1.5-flash-long-context"]: { promptToken: { basePriceUSD: 0.15, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.6, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.0375, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 1, ...commonPricingCacheStorage } }, ["gemini-1.5-flash-8b"]: { promptToken: { basePriceUSD: 0.0375, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.15, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.01, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 0.25, ...commonPricingCacheStorage } }, ["gemini-1.5-flash-8b-long-context"]: { promptToken: { basePriceUSD: 0.075, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.3, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0.02, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 0.25, ...commonPricingCacheStorage } }, // Image Generation Models ["imagen-3.0-generate-002"]: { promptToken: { basePriceUSD: 0.03, dataUnit: "image", per: 1, description: "Per image" } }, ["imagen-4-standard"]: { promptToken: { basePriceUSD: 0.04, dataUnit: "image", per: 1, description: "Per image" } }, ["imagen-4-ultra"]: { promptToken: { basePriceUSD: 0.06, dataUnit: "image", per: 1, description: "Per image" } }, // Video Generation Models ["veo-2.0-generate-001"]: { promptToken: { basePriceUSD: 0.35, dataUnit: "second", per: 1, description: "Per second of video" } }, ["veo-3-video-with-audio"]: { promptToken: { basePriceUSD: 0.75, dataUnit: "second", per: 1, description: "Per second of video with audio" } }, ["veo-3-video-without-audio"]: { promptToken: { basePriceUSD: 0.5, dataUnit: "second", per: 1, description: "Per second of video without audio" } }, // Embeddings Models ["gemini-embedding-exp"]: { promptToken: { basePriceUSD: 0.15, dataUnit: "token", per: 1e3, description: "Per 1,000 tokens" } }, ["text-embedding-004"]: { promptToken: { basePriceUSD: 0.025, dataUnit: "token", per: 1e3, description: "Per 1,000 tokens" } }, ["embedding-001"]: { promptToken: { basePriceUSD: 0.025, dataUnit: "token", per: 1e3, description: "Per 1,000 tokens" } }, // Gemma Models (Free tier only) ["gemma-3-27b-it"]: { promptToken: { basePriceUSD: 0, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 0, ...commonPricingCacheStorage } }, ["gemma-3n"]: { promptToken: { basePriceUSD: 0, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0, ...commonPricingCompletion3 }, cacheToken: { basePriceUSD: 0, ...commonPricingCache }, cacheStorageToken: { basePriceUSD: 0, ...commonPricingCacheStorage } }, // Experimental Models ["gemini-2.0-pro-exp-02-05"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 } }, ["gemini-2.0-flash-thinking-exp-01-21"]: { promptToken: { basePriceUSD: 0.3, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 2.5, ...commonPricingCompletion3 } }, ["gemini-exp-1206"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 } }, ["gemini-exp-1121"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 } }, ["gemini-exp-1114"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 } }, ["gemini-1.5-pro-exp-0827"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 } }, ["gemini-1.5-pro-exp-0801"]: { promptToken: { basePriceUSD: 1.25, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 5, ...commonPricingCompletion3 } }, ["gemini-1.5-flash-8b-exp-0924"]: { promptToken: { basePriceUSD: 0.0375, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.15, ...commonPricingCompletion3 } }, ["gemini-1.5-flash-8b-exp-0827"]: { promptToken: { basePriceUSD: 0.0375, ...commonPricingPrompt3 }, completionToken: { basePriceUSD: 0.15, ...commonPricingCompletion3 } } } }; // src/pricing/ai-provider-deepseek.ts var commonPricingInputCacheHit = { dataUnit: "token", per: 1e6, description: "Per 1 million input tokens (cache hit)" }; var commonPricingInputCacheMiss = { dataUnit: "token", per: 1e6, description: "Per 1 million input tokens (cache miss)" }; var commonPricingOutput = { dataUnit: "token", per: 1e6, description: "Per 1 million output tokens" }; var DeepSeekAIPricingConfig = { ["ai-provider-deepseek"]: { type: "llm", // DeepSeek Chat Models ["deepseek-chat"]: { promptToken: { basePriceUSD: 0.07, ...commonPricingInputCacheHit }, promptTokenCacheMiss: { basePriceUSD: 0.27, ...commonPricingInputCacheMiss }, completionToken: { basePriceUSD: 1.1, ...commonPricingOutput }, discountHours: { start: "16:30", // UTC end: "00:30" // UTC }, discountRates: { promptToken: 0.5, // 50% off promptTokenCacheMiss: 0.5, // 50% off completionToken: 0.5 // 50% off }, features: { jsonOutput: true, functionCalling: true, chatPrefixCompletion: true, fimCompletion: true } }, // DeepSeek Reasoner Models ["deepseek-reasoner"]: { promptToken: { basePriceUSD: 0.14, ...commonPricingInputCacheHit }, promptTokenCacheMiss: { basePriceUSD: 0.55, ...commonPricingInputCacheMiss }, completionToken: { basePriceUSD: 2.19, ...commonPricingOutput }, discountHours: { start: "16:30", // UTC end: "00:30" // UTC }, discountRates: { promptToken: 0.75, // 75% off promptTokenCacheMiss: 0.75, // 75% off completionToken: 0.75 // 75% off }, features: { jsonOutput: true, functionCalling: true, chatPrefixCompletion: true, fimCompletion: false } } } }; // src/pricing/ai-provider-vertex.ts var commonPricingPrompt4 = { dataUnit: "token", per: 1e6, description: "Per 1 million prompt token" }; var commonPricingCompletion4 = { dataUnit: "token", per: 1e6, description: "Per 1 million completion token" }; var commonPricingEmbedding = { dataUnit: "token", per: 1e6, description: "Per 1 million embedding tokens" }; var VertexAIPricingConfig = { ["ai-provider-vertex"]: { type: "llm", // Gemini ["gemini-1.5-pro"]: { promptToken: { basePriceUSD: 7, ...commonPricingPrompt4 }, completionToken: { basePriceUSD: 14, ...commonPricingCompletion4 } }, ["gemini-1.5-flash"]: { promptToken: { basePriceUSD: 0.7, ...commonPricingPrompt4 }, completionToken: { basePriceUSD: 1.4, ...commonPricingCompletion4 } }, // Anthropic on Vertex ["claude-3-opus@20240229"]: { promptToken: { basePriceUSD: 15, ...commonPricingPrompt4 }, completionToken: { basePriceUSD: 75, ...commonPricingCompletion4 } }, ["claude-3-5-sonnet@20240620"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt4 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion4 } }, ["claude-3-sonnet@20240229"]: { promptToken: { basePriceUSD: 3, ...commonPricingPrompt4 }, completionToken: { basePriceUSD: 15, ...commonPricingCompletion4 } }, ["claude-3-haiku@20240307"]: { promptToken: { basePriceUSD: 0.25, ...commonPricingPrompt4 }, completionToken: { basePriceUSD: 1.25, ...commonPricingCompletion4 } }, // Embedding Models ["text-embedding-004"]: { promptToken: { basePriceUSD: 0.2, ...commonPricingEmbedding } } } }; // src/pricing/pricing.ts var PricingConfig = { ...AwsSesPricingConfig, ...OpenAIPricingConfig, ...GoogleAIPricingConfig, ...AnthropicAIPricingConfig, ...DeepSeekAIPricingConfig, ...BravePricingConfig, ...VertexAIPricingConfig }; var attachPricingApi1 = (usage) => { var _a; if (usage.type !== "api_1" || !usage.requestKey) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } const pricingPkgConfig = PricingConfig[usage.package]; if (!pricingPkgConfig) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } const pricingKeyConfig = pricingPkgConfig[usage.requestKey]; if (!pricingKeyConfig) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } let usagePriceUSD = 0; if (usage.type === "api_1" && usage.requestCount && pricingKeyConfig.requestCount) { usagePriceUSD += pricingKeyConfig.requestCount.basePriceUSD * (usage.requestCount / pricingKeyConfig.requestCount.per); } if (usage.type === "api_1" && usage.requestData && pricingKeyConfig.requestData) { usagePriceUSD += pricingKeyConfig.requestData.basePriceUSD * (usage.requestData / pricingKeyConfig.requestData.per); } return { ...usage, priceUSD: usagePriceUSD * (1 - ((_a = usage.markup) != null ? _a : 0) / 100), originalPriceUSD: usagePriceUSD }; }; var fetchProviderPackage = (model) => { var _a; const allLLmConfigs = Object.entries(PricingConfig).map(([key, config]) => ({ key, config })).filter(({ config }) => config.type === "llm"); const pricingConfigPackage = (_a = allLLmConfigs.find( ({ config }) => Object.keys(config).includes(model) )) == null ? void 0 : _a.key; return pricingConfigPackage; }; var attachPricingLLM = (usage) => { var _a, _b, _c, _d, _e, _f; let _package = usage.package; if (!usage.model) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } if (!usage.package) { _package = fetchProviderPackage(usage.model); } if (!_package) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } const pricingConfig = PricingConfig[_package]; if (!pricingConfig) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } let usagePriceUSD = 0; let modelPricingConfig = pricingConfig[usage.model]; if (!modelPricingConfig) { return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } let inputTokenConfig = (_a = modelPricingConfig.promptToken) != null ? _a : modelPricingConfig.inputToken; let outputTokenConfig = (_b = modelPricingConfig.completionToken) != null ? _b : modelPricingConfig.outputToken; if (!inputTokenConfig || !outputTokenConfig) { console.warn( "No input or output token config found for model", usage.model ); return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } const inputTokens = (_c = usage.inputTokens) != null ? _c : usage.promptTokens; const outputTokens = (_d = usage.outputTokens) != null ? _d : usage.completionTokens; if (!inputTokens || !outputTokens) { console.warn("No input or output tokens found for model", usage.model); return { ...usage, priceUSD: 0, originalPriceUSD: 0 }; } usagePriceUSD += inputTokenConfig.basePriceUSD * (inputTokens / inputTokenConfig.per); usagePriceUSD += outputTokenConfig.basePriceUSD * (((_e = usage.outputTokens) != null ? _e : 0) / outputTokenConfig.per); return { ...usage, package: _package, priceUSD: usagePriceUSD * (1 - ((_f = usage.markup) != null ? _f : 0) / 100), originalPriceUSD: usagePriceUSD }; }; var attachPricing = (usage) => { if (usage.type === "llm") { return attachPricingLLM(usage); } if (usage.type === "api_1") { return attachPricingApi1(usage); } return usage; }; var getPricingForLLM = (props) => { var _a, _b, _c, _d, _e; const _package = fetchProviderPackage(props.model); if (!_package) { return { priceUSD: 0, originalPriceUSD: 0 }; } const pricingConfig = PricingConfig[_package]; if (!pricingConfig || !pricingConfig[props.model]) { return { priceUSD: 0, originalPriceUSD: 0 }; } const inputTokens = (_a = props.inputTokens) != null ? _a : props.promptTokens; const outputTokens = (_b = props.outputTokens) != null ? _b : props.completionTokens; if (!inputTokens || !outputTokens) { return { priceUSD: 0, originalPriceUSD: 0 }; } const modelPricingConfig = pricingConfig[props.model]; const inputPricingConfig = (_c = modelPricingConfig.promptToken) != null ? _c : modelPricingConfig.inputToken; const outputPricingConfig = (_d = modelPricingConfig.completionToken) != null ? _d : modelPricingConfig.outputToken; const usagePriceUSD = inputPricingConfig.basePriceUSD * (inputTokens / inputPricingConfig.per) + outputPricingConfig.basePriceUSD * (outputTokens / outputPricingConfig.per); return { provider: _package == null ? void 0 : _package.replace("ai-provider-", ""), priceUSD: usagePriceUSD * (1 - ((_e = props.markup) != null ? _e : 0) / 100), originalPriceUSD: usagePriceUSD }; }; // src/sdk.ts var import_redis = require("@upstash/redis"); var getDateKey = () => { return (/* @__PURE__ */ new Date()).toISOString().split("T")[0]; }; var getDateKeyUntilMonth = () => { const date = /* @__PURE__ */ new Date(); return date.toISOString().split("T")[0].split("-").slice(0, 2).join("-"); }; var getDateKeyUntilYear = () => { const date = /* @__PURE__ */ new Date(); return date.toISOString().split("T")[0].split("-")[0]; }; var cleanPackageName = (packageName) => { return packageName.replace("@microfox/", "").replace("#", "/").replace("@ext_", ""); }; var MicrofoxUsagePricing = class { constructor(config) { var _a, _b, _c, _d, _e, _f; this.redis = new import_redis.Redis({ url: (_b = (_a = config.redisOptions) == null ? void 0 : _a.url) != null ? _b : process.env.MICROFOX_REDIS_URL_TRACKER, token: (_d = (_c = config.redisOptions) == null ? void 0 : _c.token) != null ? _d : process.env.MICROFOX_REDIS_TOKEN_TRACKER }); this.prefix = (_f = (_e = config.prefix) != null ? _e : process.env.MICROFOX_CLIENT_REQUEST_ID) != null ? _f : process.env.MICROFOX_BOT_PROJECT_ID; } processUsageEntries(usage, packageName) { return Object.entries(usage).map(([key, value]) => { try { let json = typeof value === "string" ? JSON.parse(value) : value; if ("model" in json) { json.type = "llm"; } if ("requestKey" in json) { json.type = "api_1"; } return { ...json, timestamp: key }; } catch (e) { console.error("Failed to parse usage entry", value); return null; } }).filter((entry) => entry != null && entry !== void 0).filter( (entry) => packageName ? entry.package === cleanPackageName(packageName) : true ); } async getUsage(packageName, prefixDateKey, options) { var _a, _b; const usageKey = `${this.prefix}:${prefixDateKey != null ? prefixDateKey : "*"}`; const limit = (_a = options == null ? void 0 : options.limit) != null ? _a : 100; const offset = (_b = options == null ? void 0 : options.offset) != null ? _b : 0; let cursor = "0"; const keys = []; let totalItems = 0; do { const [nextCursor, matchedKeys] = await this.redis.scan(cursor, { match: usageKey, count: limit }); cursor = nextCursor; keys.push(...matchedKeys); totalItems += matchedKeys.length; } while (cursor !== "0" && keys.length < offset + limit); const pageKeys = keys.slice(offset, offset + limit); const usages = (await Promise.all( pageKeys.map(async (usageKey2) => { const usage = await this.redis.hgetall(usageKey2); if (!usage) return []; return this.processUsageEntries(usage, packageName); }) )).flat(); return { data: usages.map(attachPricing), total: totalItems, limit, offset, hasMore: totalItems > offset + limit }; } async getDailyUsage(packageName, options) { return this.getUsage(packageName, `${getDateKey()}:*`, options); } async getMonthlyUsage(packageName, options) { return this.getUsage(packageName, `${getDateKeyUntilMonth()}*`, options); } async getYearlyUsage(packageName, options) { return this.getUsage(packageName, `${getDateKeyUntilYear()}*`, options); } async getFullUsage(packageName, prefixDateKey) { const usageKey = `${this.prefix}:${prefixDateKey != null ? prefixDateKey : "*"}`; const keys = await this.redis.keys(usageKey); const usages = (await Promise.all( keys.map(async (usageKey2) => { const usage = await this.redis.hgetall(usageKey2); if (!usage) return []; return this.processUsageEntries(usage, packageName); }) )).flat(); return usages.map(attachPricing); } async getFullDailyUsage(packageName) { return this.getFullUsage(packageName, `${getDateKey()}:*`); } async getFullMonthlyUsage(packageName) { return this.getFullUsage(packageName, `${getDateKeyUntilMonth()}*`); } async getFullYearlyUsage(packageName) { return this.getFullUsage(packageName, `${getDateKeyUntilYear()}*`); } }; var createMicrofoxUsagePricing = (config) => { return new MicrofoxUsagePricing(config); }; var createDefaultMicrofoxUsagePricing = () => { if (!process.env.MICROFOX_REDIS_URL_TRACKER || !process.env.MICROFOX_REDIS_TOKEN_TRACKER) { return; } if (!process.env.MICROFOX_CLIENT_REQUEST_ID) { return; } return new MicrofoxUsagePricing({}); }; // src/types/index.ts var import_usage_tracker = require("@microfox/usage-tracker"); var import_zod = require("zod"); var UsageWithPricingSchema = import_zod.z.object({ priceUSD: import_zod.z.number(), originalPriceUSD: import_zod.z.number().optional() }).and(import_usage_tracker.UsageSchema); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { MicrofoxUsagePricing, PricingConfig, UsageWithPricingSchema, attachPricing, attachPricingApi1, attachPricingLLM, createDefaultMicrofoxUsagePricing, createMicrofoxUsagePricing, fetchProviderPackage, getPricingForLLM }); //# sourceMappingURL=index.js.map