@slkiser/opencode-quota 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,32 @@
8
8
  * 2) Best-effort: internal endpoint using OpenCode's stored OAuth token
9
9
  * (legacy formats or via token exchange).
10
10
  */
11
- import type { CopilotResult } from "./types.js";
11
+ import type { AuthData, CopilotQuotaConfig, CopilotResult } from "./types.js";
12
+ type CopilotAuthKeyName = "github-copilot" | "copilot" | "copilot-chat";
13
+ type CopilotPatTokenKind = "github_pat" | "ghp" | "other";
14
+ export type CopilotPatState = "absent" | "invalid" | "valid";
15
+ export interface CopilotPatReadResult {
16
+ state: CopilotPatState;
17
+ checkedPaths: string[];
18
+ selectedPath?: string;
19
+ config?: CopilotQuotaConfig;
20
+ error?: string;
21
+ tokenKind?: CopilotPatTokenKind;
22
+ }
23
+ export interface CopilotQuotaAuthDiagnostics {
24
+ pat: CopilotPatReadResult;
25
+ oauth: {
26
+ configured: boolean;
27
+ keyName: CopilotAuthKeyName | null;
28
+ hasRefreshToken: boolean;
29
+ hasAccessToken: boolean;
30
+ };
31
+ effectiveSource: "pat" | "oauth" | "none";
32
+ override: "pat_overrides_oauth" | "none";
33
+ }
34
+ export declare function getCopilotPatConfigCandidatePaths(): string[];
35
+ export declare function readQuotaConfigWithMeta(): CopilotPatReadResult;
36
+ export declare function getCopilotQuotaAuthDiagnostics(authData: AuthData | null): CopilotQuotaAuthDiagnostics;
12
37
  /**
13
38
  * Query GitHub Copilot premium requests quota
14
39
  *
@@ -22,4 +47,5 @@ export declare function queryCopilotQuota(): Promise<CopilotResult>;
22
47
  * @returns Formatted string like "Copilot 229/300 (24%)" or null
23
48
  */
24
49
  export declare function formatCopilotQuota(result: CopilotResult): string | null;
50
+ export {};
25
51
  //# sourceMappingURL=copilot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/lib/copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAOV,aAAa,EACd,MAAM,YAAY,CAAC;AA0YpB;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CA2DhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAevE"}
1
+ {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/lib/copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,kBAAkB,EAKlB,aAAa,EACd,MAAM,YAAY,CAAC;AAwDpB,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAAC;AAExE,KAAK,mBAAmB,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,oBAAoB,CAAC;IAC1B,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,eAAe,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1C,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAAC;CAC1C;AAuBD,wBAAgB,iCAAiC,IAAI,MAAM,EAAE,CAK5D;AA4FD,wBAAgB,uBAAuB,IAAI,oBAAoB,CA0C9D;AA6DD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,2BAA2B,CAuBrG;AA4ND;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAiFhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAevE"}
@@ -10,8 +10,8 @@
10
10
  */
11
11
  import { fetchWithTimeout } from "./http.js";
12
12
  import { readAuthFile } from "./opencode-auth.js";
13
+ import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
13
14
  import { existsSync, readFileSync } from "fs";
14
- import { homedir } from "os";
15
15
  import { join } from "path";
16
16
  // =============================================================================
17
17
  // Constants
@@ -24,7 +24,7 @@ const COPILOT_VERSION = "0.35.0";
24
24
  const EDITOR_VERSION = "vscode/1.107.0";
25
25
  const EDITOR_PLUGIN_VERSION = `copilot-chat/${COPILOT_VERSION}`;
26
26
  const USER_AGENT = `GitHubCopilotChat/${COPILOT_VERSION}`;
27
- const COPILOT_QUOTA_CONFIG_PATH = join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "opencode", "copilot-quota-token.json");
27
+ const COPILOT_QUOTA_CONFIG_FILENAME = "copilot-quota-token.json";
28
28
  // =============================================================================
29
29
  // Helpers
30
30
  // =============================================================================
@@ -51,6 +51,31 @@ function buildLegacyTokenHeaders(token) {
51
51
  ...COPILOT_HEADERS,
52
52
  };
53
53
  }
54
+ function classifyPatTokenKind(token) {
55
+ const trimmed = token.trim();
56
+ if (trimmed.startsWith("github_pat_"))
57
+ return "github_pat";
58
+ if (trimmed.startsWith("ghp_"))
59
+ return "ghp";
60
+ return "other";
61
+ }
62
+ function dedupePaths(paths) {
63
+ const out = [];
64
+ const seen = new Set();
65
+ for (const path of paths) {
66
+ if (!path)
67
+ continue;
68
+ if (seen.has(path))
69
+ continue;
70
+ seen.add(path);
71
+ out.push(path);
72
+ }
73
+ return out;
74
+ }
75
+ export function getCopilotPatConfigCandidatePaths() {
76
+ const candidates = getOpencodeRuntimeDirCandidates();
77
+ return dedupePaths(candidates.configDirs.map((configDir) => join(configDir, COPILOT_QUOTA_CONFIG_FILENAME)));
78
+ }
54
79
  function buildGitHubRestHeaders(token, scheme) {
55
80
  return {
56
81
  Accept: "application/vnd.github+json",
@@ -90,6 +115,83 @@ async function readGitHubRestErrorMessage(response) {
90
115
  }
91
116
  return text.slice(0, 160);
92
117
  }
118
+ function validateQuotaConfig(raw) {
119
+ if (!raw || typeof raw !== "object") {
120
+ return { config: null, error: "Config must be a JSON object" };
121
+ }
122
+ const obj = raw;
123
+ const token = typeof obj.token === "string" ? obj.token.trim() : "";
124
+ const tierRaw = typeof obj.tier === "string" ? obj.tier.trim() : "";
125
+ const usernameRaw = obj.username;
126
+ if (!token) {
127
+ return { config: null, error: "Missing required string field: token" };
128
+ }
129
+ const validTiers = ["free", "pro", "pro+", "business", "enterprise"];
130
+ if (!validTiers.includes(tierRaw)) {
131
+ return {
132
+ config: null,
133
+ error: "Invalid tier; expected one of: free, pro, pro+, business, enterprise",
134
+ };
135
+ }
136
+ let username;
137
+ if (usernameRaw != null) {
138
+ if (typeof usernameRaw !== "string") {
139
+ return { config: null, error: "username must be a non-empty string when provided" };
140
+ }
141
+ const trimmed = usernameRaw.trim();
142
+ if (!trimmed) {
143
+ return { config: null, error: "username must be a non-empty string when provided" };
144
+ }
145
+ username = trimmed;
146
+ }
147
+ return {
148
+ config: {
149
+ token,
150
+ tier: tierRaw,
151
+ username,
152
+ },
153
+ };
154
+ }
155
+ export function readQuotaConfigWithMeta() {
156
+ const checkedPaths = getCopilotPatConfigCandidatePaths();
157
+ for (const path of checkedPaths) {
158
+ if (!existsSync(path))
159
+ continue;
160
+ try {
161
+ const content = readFileSync(path, "utf-8");
162
+ const parsed = JSON.parse(content);
163
+ const validated = validateQuotaConfig(parsed);
164
+ if (!validated.config) {
165
+ return {
166
+ state: "invalid",
167
+ checkedPaths,
168
+ selectedPath: path,
169
+ error: validated.error ?? "Invalid config",
170
+ };
171
+ }
172
+ return {
173
+ state: "valid",
174
+ checkedPaths,
175
+ selectedPath: path,
176
+ config: validated.config,
177
+ tokenKind: classifyPatTokenKind(validated.config.token),
178
+ };
179
+ }
180
+ catch (err) {
181
+ const msg = err instanceof Error ? err.message : String(err);
182
+ return {
183
+ state: "invalid",
184
+ checkedPaths,
185
+ selectedPath: path,
186
+ error: msg,
187
+ };
188
+ }
189
+ }
190
+ return {
191
+ state: "absent",
192
+ checkedPaths,
193
+ };
194
+ }
93
195
  async function fetchGitHubRestJsonOnce(url, token, scheme) {
94
196
  const response = await fetchWithTimeout(url, {
95
197
  headers: buildGitHubRestHeaders(token, scheme),
@@ -110,47 +212,62 @@ async function fetchGitHubRestJsonOnce(url, token, scheme) {
110
212
  */
111
213
  async function readCopilotAuth() {
112
214
  const authData = await readAuthFile();
113
- if (!authData)
114
- return null;
115
- // Try known key names in priority order
116
- const copilotAuth = authData["github-copilot"] ??
117
- authData["copilot"] ??
118
- authData["copilot-chat"];
119
- if (!copilotAuth || copilotAuth.type !== "oauth" || !copilotAuth.refresh) {
120
- return null;
121
- }
122
- return copilotAuth;
215
+ return selectCopilotAuth(authData).auth;
123
216
  }
124
217
  /**
125
- * Read optional Copilot quota config from user's config file.
126
- * Returns null if file doesn't exist or is invalid.
218
+ * Select Copilot OAuth auth entry from auth.json-shaped data.
127
219
  */
128
- function readQuotaConfig() {
129
- try {
130
- if (!existsSync(COPILOT_QUOTA_CONFIG_PATH)) {
131
- return null;
132
- }
133
- const content = readFileSync(COPILOT_QUOTA_CONFIG_PATH, "utf-8");
134
- const parsed = JSON.parse(content);
135
- if (!parsed || typeof parsed !== "object")
136
- return null;
137
- if (typeof parsed.token !== "string" || parsed.token.trim() === "")
138
- return null;
139
- if (typeof parsed.tier !== "string" || parsed.tier.trim() === "")
140
- return null;
141
- // Username is optional now that we prefer the /user/... billing endpoint.
142
- if (parsed.username != null) {
143
- if (typeof parsed.username !== "string" || parsed.username.trim() === "")
144
- return null;
145
- }
146
- const validTiers = ["free", "pro", "pro+", "business", "enterprise"];
147
- if (!validTiers.includes(parsed.tier))
148
- return null;
149
- return parsed;
220
+ function selectCopilotAuth(authData) {
221
+ if (!authData) {
222
+ return { auth: null, keyName: null };
150
223
  }
151
- catch {
152
- return null;
224
+ const candidates = [
225
+ ["github-copilot", authData["github-copilot"]],
226
+ ["copilot", authData.copilot],
227
+ ["copilot-chat", authData["copilot-chat"]],
228
+ ];
229
+ for (const [keyName, candidate] of candidates) {
230
+ if (!candidate)
231
+ continue;
232
+ if (candidate.type !== "oauth")
233
+ continue;
234
+ if (!candidate.refresh)
235
+ continue;
236
+ return { auth: candidate, keyName };
153
237
  }
238
+ return { auth: null, keyName: null };
239
+ }
240
+ export function getCopilotQuotaAuthDiagnostics(authData) {
241
+ const pat = readQuotaConfigWithMeta();
242
+ const { auth, keyName } = selectCopilotAuth(authData);
243
+ const oauthConfigured = Boolean(auth);
244
+ let effectiveSource = "none";
245
+ if (pat.state === "valid") {
246
+ effectiveSource = "pat";
247
+ }
248
+ else if (oauthConfigured) {
249
+ effectiveSource = "oauth";
250
+ }
251
+ return {
252
+ pat,
253
+ oauth: {
254
+ configured: oauthConfigured,
255
+ keyName,
256
+ hasRefreshToken: Boolean(auth?.refresh),
257
+ hasAccessToken: Boolean(auth?.access),
258
+ },
259
+ effectiveSource,
260
+ override: pat.state === "valid" && oauthConfigured ? "pat_overrides_oauth" : "none",
261
+ };
262
+ }
263
+ function computePercentRemainingFromUsed(params) {
264
+ const { used, total } = params;
265
+ if (!Number.isFinite(total) || total <= 0)
266
+ return 0;
267
+ if (!Number.isFinite(used) || used <= 0)
268
+ return 100;
269
+ const usedPct = Math.max(0, Math.min(100, Math.ceil((used / total) * 100)));
270
+ return 100 - usedPct;
154
271
  }
155
272
  const COPILOT_PLAN_LIMITS = {
156
273
  free: 50,
@@ -211,11 +328,11 @@ function toQuotaResultFromBilling(data, tier) {
211
328
  if (!total || total <= 0) {
212
329
  throw new Error(`Unsupported Copilot tier: ${tier}`);
213
330
  }
214
- const remaining = Math.max(0, total - used);
215
- const percentRemaining = Math.max(0, Math.min(100, Math.round((remaining / total) * 100)));
331
+ const normalizedUsed = Math.max(0, used);
332
+ const percentRemaining = computePercentRemainingFromUsed({ used: normalizedUsed, total });
216
333
  return {
217
334
  success: true,
218
- used,
335
+ used: normalizedUsed,
219
336
  total,
220
337
  percentRemaining,
221
338
  resetTimeIso: getApproxNextResetIso(),
@@ -301,11 +418,11 @@ async function fetchCopilotUsage(authData) {
301
418
  */
302
419
  export async function queryCopilotQuota() {
303
420
  // Strategy 1: Try public billing API with user's fine-grained PAT.
304
- const quotaConfig = readQuotaConfig();
305
- if (quotaConfig) {
421
+ const quotaConfigRead = readQuotaConfigWithMeta();
422
+ if (quotaConfigRead.state === "valid" && quotaConfigRead.config) {
306
423
  try {
307
- const billing = await fetchPublicBillingUsage(quotaConfig);
308
- return toQuotaResultFromBilling(billing, quotaConfig.tier);
424
+ const billing = await fetchPublicBillingUsage(quotaConfigRead.config);
425
+ return toQuotaResultFromBilling(billing, quotaConfigRead.config.tier);
309
426
  }
310
427
  catch (err) {
311
428
  return {
@@ -338,8 +455,26 @@ export async function queryCopilotQuota() {
338
455
  };
339
456
  }
340
457
  const total = premium.entitlement;
341
- const used = total - premium.remaining;
342
- const percentRemaining = Math.round(premium.percent_remaining);
458
+ if (!Number.isFinite(total) || total <= 0) {
459
+ return {
460
+ success: false,
461
+ error: "Invalid premium quota entitlement",
462
+ };
463
+ }
464
+ const remainingRaw = typeof premium.remaining === "number"
465
+ ? premium.remaining
466
+ : typeof premium.quota_remaining === "number"
467
+ ? premium.quota_remaining
468
+ : NaN;
469
+ if (!Number.isFinite(remainingRaw)) {
470
+ return {
471
+ success: false,
472
+ error: "Invalid premium quota remaining value",
473
+ };
474
+ }
475
+ const remaining = Math.max(0, Math.min(total, remainingRaw));
476
+ const used = Math.max(0, total - remaining);
477
+ const percentRemaining = computePercentRemainingFromUsed({ used, total });
343
478
  return {
344
479
  success: true,
345
480
  used,
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/lib/copilot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/lib/copilot.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type OpencodeRuntimeDirs } from "./opencode-runtime-paths.js";
1
2
  export type CostBuckets = {
2
3
  input?: number;
3
4
  output?: number;
@@ -5,7 +6,7 @@ export type CostBuckets = {
5
6
  cache_write?: number;
6
7
  reasoning?: number;
7
8
  };
8
- type Snapshot = {
9
+ export type PricingSnapshot = {
9
10
  _meta: {
10
11
  source: string;
11
12
  generatedAt: number;
@@ -14,7 +15,60 @@ type Snapshot = {
14
15
  };
15
16
  providers: Record<string, Record<string, CostBuckets>>;
16
17
  };
17
- export declare function getPricingSnapshotMeta(): Snapshot["_meta"];
18
+ export declare const DEFAULT_PRICING_SNAPSHOT_MAX_AGE_MS: number;
19
+ export type PricingSnapshotHealth = {
20
+ generatedAt: number;
21
+ ageMs: number;
22
+ maxAgeMs: number;
23
+ stale: boolean;
24
+ };
25
+ export interface PricingRefreshStateV1 {
26
+ version: 1;
27
+ updatedAt: number;
28
+ lastAttemptAt?: number;
29
+ lastSuccessAt?: number;
30
+ lastFailureAt?: number;
31
+ lastResult?: "success" | "not_modified" | "skipped_fresh" | "skipped_throttled" | "failed";
32
+ lastError?: string;
33
+ etag?: string;
34
+ lastModified?: string;
35
+ }
36
+ export interface PricingRefreshPolicy {
37
+ enabled: boolean;
38
+ maxAgeMs: number;
39
+ minAttemptIntervalMs: number;
40
+ timeoutMs: number;
41
+ }
42
+ export interface PricingRefreshOptions {
43
+ reason?: "init" | "tokens" | "status";
44
+ force?: boolean;
45
+ nowMs?: number;
46
+ maxAgeMs?: number;
47
+ minAttemptIntervalMs?: number;
48
+ timeoutMs?: number;
49
+ runtimeDirs?: OpencodeRuntimeDirs;
50
+ fetchFn?: typeof fetch;
51
+ bootstrapSnapshotOverride?: PricingSnapshot;
52
+ providerAllowlist?: string[];
53
+ }
54
+ export interface PricingRefreshResult {
55
+ attempted: boolean;
56
+ updated: boolean;
57
+ state: PricingRefreshStateV1;
58
+ error?: string;
59
+ reason?: string;
60
+ }
61
+ export declare function getPricingRefreshPolicy(env?: NodeJS.ProcessEnv): PricingRefreshPolicy;
62
+ export declare function getRuntimePricingSnapshotPath(runtimeDirs?: OpencodeRuntimeDirs): string;
63
+ export declare function getRuntimePricingRefreshStatePath(runtimeDirs?: OpencodeRuntimeDirs): string;
64
+ export declare function readPricingRefreshState(runtimeDirs?: OpencodeRuntimeDirs): Promise<PricingRefreshStateV1 | null>;
65
+ export declare function maybeRefreshPricingSnapshot(opts?: PricingRefreshOptions): Promise<PricingRefreshResult>;
66
+ export declare function getPricingSnapshotMeta(): PricingSnapshot["_meta"];
67
+ export declare function getPricingSnapshotSource(): "runtime" | "bundled" | "empty";
68
+ export declare function getPricingSnapshotHealth(opts?: {
69
+ nowMs?: number;
70
+ maxAgeMs?: number;
71
+ }): PricingSnapshotHealth;
18
72
  export declare function hasProvider(providerId: string): boolean;
19
73
  export declare function isModelsDevProviderId(providerId: string): boolean;
20
74
  export declare function hasModel(providerId: string, modelId: string): boolean;
@@ -29,5 +83,5 @@ export declare function listModelsForProvider(providerId: string): string[];
29
83
  export declare function listProvidersForModelId(modelId: string): string[];
30
84
  export declare function lookupCost(providerId: string, modelId: string): CostBuckets | null;
31
85
  export declare function hasCost(providerId: string, modelId: string): boolean;
32
- export {};
86
+ export declare function __resetPricingSnapshotForTests(): void;
33
87
  //# sourceMappingURL=modelsdev-pricing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modelsdev-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/modelsdev-pricing.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACxD,CAAC;AA+BF,wBAAgB,sBAAsB,IAAI,QAAQ,CAAC,OAAO,CAAC,CAE1D;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAItE;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAElE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAGjE;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAMlF;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEpE"}
1
+ {"version":3,"file":"modelsdev-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/modelsdev-pricing.ts"],"names":[],"mappings":"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"}