@apicity/cost 0.1.0-alpha.0

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.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/src/compute.d.ts +3 -0
  4. package/dist/src/compute.d.ts.map +1 -0
  5. package/dist/src/compute.js +144 -0
  6. package/dist/src/compute.js.map +1 -0
  7. package/dist/src/cost.d.ts +3 -0
  8. package/dist/src/cost.d.ts.map +1 -0
  9. package/dist/src/cost.js +7 -0
  10. package/dist/src/cost.js.map +1 -0
  11. package/dist/src/extract/anthropic.d.ts +3 -0
  12. package/dist/src/extract/anthropic.d.ts.map +1 -0
  13. package/dist/src/extract/anthropic.js +26 -0
  14. package/dist/src/extract/anthropic.js.map +1 -0
  15. package/dist/src/extract/chat.d.ts +3 -0
  16. package/dist/src/extract/chat.d.ts.map +1 -0
  17. package/dist/src/extract/chat.js +29 -0
  18. package/dist/src/extract/chat.js.map +1 -0
  19. package/dist/src/extract/messages.d.ts +6 -0
  20. package/dist/src/extract/messages.d.ts.map +1 -0
  21. package/dist/src/extract/messages.js +46 -0
  22. package/dist/src/extract/messages.js.map +1 -0
  23. package/dist/src/extract/openai.d.ts +3 -0
  24. package/dist/src/extract/openai.d.ts.map +1 -0
  25. package/dist/src/extract/openai.js +31 -0
  26. package/dist/src/extract/openai.js.map +1 -0
  27. package/dist/src/extract/types.d.ts +13 -0
  28. package/dist/src/extract/types.d.ts.map +1 -0
  29. package/dist/src/extract/types.js +2 -0
  30. package/dist/src/extract/types.js.map +1 -0
  31. package/dist/src/extract/xai.d.ts +3 -0
  32. package/dist/src/extract/xai.d.ts.map +1 -0
  33. package/dist/src/extract/xai.js +30 -0
  34. package/dist/src/extract/xai.js.map +1 -0
  35. package/dist/src/index.d.ts +9 -0
  36. package/dist/src/index.d.ts.map +1 -0
  37. package/dist/src/index.js +5 -0
  38. package/dist/src/index.js.map +1 -0
  39. package/dist/src/pricing/alibaba.d.ts +3 -0
  40. package/dist/src/pricing/alibaba.d.ts.map +1 -0
  41. package/dist/src/pricing/alibaba.js +16 -0
  42. package/dist/src/pricing/alibaba.js.map +1 -0
  43. package/dist/src/pricing/anthropic.d.ts +3 -0
  44. package/dist/src/pricing/anthropic.d.ts.map +1 -0
  45. package/dist/src/pricing/anthropic.js +56 -0
  46. package/dist/src/pricing/anthropic.js.map +1 -0
  47. package/dist/src/pricing/elevenlabs.d.ts +3 -0
  48. package/dist/src/pricing/elevenlabs.d.ts.map +1 -0
  49. package/dist/src/pricing/elevenlabs.js +24 -0
  50. package/dist/src/pricing/elevenlabs.js.map +1 -0
  51. package/dist/src/pricing/fireworks.d.ts +3 -0
  52. package/dist/src/pricing/fireworks.d.ts.map +1 -0
  53. package/dist/src/pricing/fireworks.js +22 -0
  54. package/dist/src/pricing/fireworks.js.map +1 -0
  55. package/dist/src/pricing/helpers.d.ts +5 -0
  56. package/dist/src/pricing/helpers.d.ts.map +1 -0
  57. package/dist/src/pricing/helpers.js +33 -0
  58. package/dist/src/pricing/helpers.js.map +1 -0
  59. package/dist/src/pricing/index.d.ts +14 -0
  60. package/dist/src/pricing/index.d.ts.map +1 -0
  61. package/dist/src/pricing/index.js +30 -0
  62. package/dist/src/pricing/index.js.map +1 -0
  63. package/dist/src/pricing/kie.d.ts +3 -0
  64. package/dist/src/pricing/kie.d.ts.map +1 -0
  65. package/dist/src/pricing/kie.js +271 -0
  66. package/dist/src/pricing/kie.js.map +1 -0
  67. package/dist/src/pricing/kimicoding.d.ts +3 -0
  68. package/dist/src/pricing/kimicoding.d.ts.map +1 -0
  69. package/dist/src/pricing/kimicoding.js +15 -0
  70. package/dist/src/pricing/kimicoding.js.map +1 -0
  71. package/dist/src/pricing/openai.d.ts +3 -0
  72. package/dist/src/pricing/openai.d.ts.map +1 -0
  73. package/dist/src/pricing/openai.js +24 -0
  74. package/dist/src/pricing/openai.js.map +1 -0
  75. package/dist/src/pricing/types.d.ts +28 -0
  76. package/dist/src/pricing/types.d.ts.map +1 -0
  77. package/dist/src/pricing/types.js +9 -0
  78. package/dist/src/pricing/types.js.map +1 -0
  79. package/dist/src/pricing/xai.d.ts +3 -0
  80. package/dist/src/pricing/xai.d.ts.map +1 -0
  81. package/dist/src/pricing/xai.js +12 -0
  82. package/dist/src/pricing/xai.js.map +1 -0
  83. package/dist/src/slugs.d.ts +231 -0
  84. package/dist/src/slugs.d.ts.map +1 -0
  85. package/dist/src/slugs.js +278 -0
  86. package/dist/src/slugs.js.map +1 -0
  87. package/dist/src/types.d.ts +30 -0
  88. package/dist/src/types.d.ts.map +1 -0
  89. package/dist/src/types.js +2 -0
  90. package/dist/src/types.js.map +1 -0
  91. package/package.json +47 -0
@@ -0,0 +1,24 @@
1
+ const source = { url: "https://openai.com/api/pricing" };
2
+ export const openai = {
3
+ "gpt-5": { kind: "tokens", rate: { input: 1.25, output: 10 }, source },
4
+ "gpt-5-mini": { kind: "tokens", rate: { input: 0.25, output: 2 }, source },
5
+ "gpt-5-nano": { kind: "tokens", rate: { input: 0.05, output: 0.4 }, source },
6
+ "gpt-4.1": { kind: "tokens", rate: { input: 2, output: 8 }, source },
7
+ "gpt-4.1-mini": { kind: "tokens", rate: { input: 0.4, output: 1.6 }, source },
8
+ "gpt-4.1-nano": { kind: "tokens", rate: { input: 0.1, output: 0.4 }, source },
9
+ "gpt-4o": { kind: "tokens", rate: { input: 2.5, output: 10 }, source },
10
+ "gpt-4o-mini": { kind: "tokens", rate: { input: 0.15, output: 0.6 }, source },
11
+ o3: { kind: "tokens", rate: { input: 2, output: 8 }, source },
12
+ "o4-mini": { kind: "tokens", rate: { input: 1.1, output: 4.4 }, source },
13
+ "text-embedding-3-small": {
14
+ kind: "tokens",
15
+ rate: { input: 0.02, output: 0 },
16
+ source,
17
+ },
18
+ "text-embedding-3-large": {
19
+ kind: "tokens",
20
+ rate: { input: 0.13, output: 0 },
21
+ source,
22
+ },
23
+ };
24
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/pricing/openai.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,gCAAgC,EAAE,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAiC;IAClD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;IACtE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE;IAC1E,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;IAC5E,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE;IACpE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;IAC7E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;IAC7E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;IACtE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;IAC7E,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE;IAC7D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;IACxE,wBAAwB,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;QAChC,MAAM;KACP;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;QAChC,MAAM;KACP;CACF,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type CostUnit = "tokens" | "characters" | "seconds" | "images" | "songs" | "generations";
2
+ export interface RateSource {
3
+ url: string;
4
+ asOf?: string;
5
+ }
6
+ export interface TokenPricing {
7
+ kind: "tokens";
8
+ rate: {
9
+ input: number;
10
+ output: number;
11
+ cacheRead?: number;
12
+ cacheWrite5m?: number;
13
+ };
14
+ source: RateSource;
15
+ }
16
+ export interface PerUnitPricing {
17
+ kind: "perUnit";
18
+ unit: CostUnit;
19
+ units: (payload: Record<string, unknown>) => number | undefined;
20
+ select: ReadonlyArray<{
21
+ name: string;
22
+ pick: (payload: Record<string, unknown>) => string | undefined;
23
+ }>;
24
+ rates: Record<string, number>;
25
+ source: RateSource;
26
+ }
27
+ export type ModelPricing = TokenPricing | PerUnitPricing;
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pricing/types.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IAIZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,UAAU,CAAC;CACpB;AASD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAChE,MAAM,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;KAChE,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Shared shapes for the per-provider pricing tables under pricing/.
2
+ //
3
+ // Each provider file exports a Record<modelId, ModelPricing>. The barrel
4
+ // (pricing/index.ts) wires those into a typed `PRICING` constant. Model ids
5
+ // are upstream identifiers verbatim (e.g. "bytedance/seedance-2-fast"), and
6
+ // per-unit rate keys mirror upstream payload values verbatim — no internal
7
+ // translation layer between what the caller sends and what selects a rate.
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/pricing/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E"}
@@ -0,0 +1,3 @@
1
+ import type { ModelPricing } from "./types";
2
+ export declare const xai: Record<string, ModelPricing>;
3
+ //# sourceMappingURL=xai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xai.d.ts","sourceRoot":"","sources":["../../../src/pricing/xai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,eAAO,MAAM,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAS5C,CAAC"}
@@ -0,0 +1,12 @@
1
+ const source = { url: "https://docs.x.ai" };
2
+ export const xai = {
3
+ "grok-4": { kind: "tokens", rate: { input: 3, output: 15 }, source },
4
+ "grok-3": { kind: "tokens", rate: { input: 3, output: 15 }, source },
5
+ "grok-4-fast": { kind: "tokens", rate: { input: 0.2, output: 0.5 }, source },
6
+ "grok-4-1-fast": {
7
+ kind: "tokens",
8
+ rate: { input: 0.2, output: 0.5 },
9
+ source,
10
+ },
11
+ };
12
+ //# sourceMappingURL=xai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xai.js","sourceRoot":"","sources":["../../../src/pricing/xai.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC;AAE5C,MAAM,CAAC,MAAM,GAAG,GAAiC;IAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;IACpE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;IACpE,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE;IAC5E,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QACjC,MAAM;KACP;CACF,CAAC"}
@@ -0,0 +1,231 @@
1
+ export declare const MODEL_SLUGS: {
2
+ readonly kie: {
3
+ readonly "bytedance/seedance-2": "sd2";
4
+ readonly "bytedance/seedance-2-fast": "sd2f";
5
+ readonly "kling-3.0/video": "kling3";
6
+ readonly "kling-3.0/video/std": "kling3s";
7
+ readonly "kling-3.0/video/pro": "kling3p";
8
+ readonly "kling-3.0/motion-control": "kling3mc";
9
+ readonly "wan/2-7-text-to-video": "wan2p7";
10
+ readonly "wan/2-7-image-to-video": "wan2p7";
11
+ readonly "wan/2-7-r2v": "wan2p7";
12
+ readonly "wan/2-7-videoedit": "wan2p7";
13
+ readonly "grok-imagine/text-to-video": "grok";
14
+ readonly "grok-imagine/image-to-video": "grok";
15
+ readonly "grok-imagine/extend": "grok";
16
+ readonly "grok-imagine/upscale": "grok";
17
+ readonly "happyhorse/text-to-video": "hh";
18
+ readonly "happyhorse/image-to-video": "hh";
19
+ readonly "happyhorse/reference-to-video": "hh";
20
+ readonly "happyhorse/video-edit": "hh";
21
+ readonly veo3: "veo3";
22
+ readonly veo3_fast: "veo3f";
23
+ readonly "grok-imagine/text-to-image": "grok";
24
+ readonly "grok-imagine/image-to-image": "grok";
25
+ readonly "nano-banana": "nb";
26
+ readonly "nano-banana-2": "nb2";
27
+ readonly "nano-banana-pro": "nbp";
28
+ readonly "gpt-image-2-text-to-image": "gi2";
29
+ readonly "gpt-image-2-image-to-image": "gi2";
30
+ readonly "wan/2-7-image": "wan2p7";
31
+ readonly "wan/2-7-image-pro": "wan2p7p";
32
+ readonly "qwen2/text-to-image": "qwen2";
33
+ readonly "qwen2/image-edit": "qwen2";
34
+ readonly "seedream/5-lite-text-to-image": "sd5";
35
+ readonly "seedream/5-lite-image-to-image": "sd5";
36
+ readonly "sora-watermark-remover": "soraw";
37
+ readonly "suno/generate": "suno";
38
+ readonly "suno/extend": "suno";
39
+ readonly "suno/upload-cover": "suno";
40
+ readonly "suno/upload-extend": "suno";
41
+ readonly "suno/wav-generate": "suno";
42
+ readonly "suno/mp4-generate": "suno";
43
+ readonly "suno/lyrics": "suno";
44
+ readonly "suno/style-generate": "suno";
45
+ readonly "suno/vocal-removal-generate": "suno";
46
+ readonly "suno/mashup-generate": "suno";
47
+ readonly "suno/replace-music-section-generate": "suno";
48
+ readonly "suno/sounds-generate": "suno";
49
+ readonly "suno/add-instrumental-generate": "suno";
50
+ readonly "suno/add-vocals-generate": "suno";
51
+ };
52
+ readonly kimicoding: {
53
+ readonly "kimi-k2": "kimi2";
54
+ readonly "kimi-k2.5": "kimi2p5";
55
+ readonly "kimi-k2.6": "kimi2p6";
56
+ };
57
+ readonly anthropic: {
58
+ readonly "claude-opus-4": "opus4";
59
+ readonly "claude-opus-4-1": "opus4p1";
60
+ readonly "claude-opus-4-5": "opus4p5";
61
+ readonly "claude-opus-4-6": "opus4p6";
62
+ readonly "claude-opus-4-7": "opus4p7";
63
+ readonly "claude-sonnet-4": "sonnet4";
64
+ readonly "claude-sonnet-4-5": "sonnet4p5";
65
+ readonly "claude-sonnet-4-6": "sonnet4p6";
66
+ readonly "claude-haiku-3-5": "haiku3p5";
67
+ readonly "claude-haiku-4-5": "haiku4p5";
68
+ };
69
+ readonly openai: {
70
+ readonly "gpt-5": "gpt5";
71
+ readonly "gpt-5-mini": "gpt5m";
72
+ readonly "gpt-5-nano": "gpt5n";
73
+ readonly "gpt-4.1": "gpt4p1";
74
+ readonly "gpt-4.1-mini": "gpt4p1m";
75
+ readonly "gpt-4.1-nano": "gpt4p1n";
76
+ readonly "gpt-4o": "gpt4o";
77
+ readonly "gpt-4o-mini": "gpt4om";
78
+ readonly o3: "o3";
79
+ readonly "o4-mini": "o4m";
80
+ readonly "text-embedding-3-small": "emb3s";
81
+ readonly "text-embedding-3-large": "emb3l";
82
+ };
83
+ readonly xai: {
84
+ readonly "grok-3": "grok3";
85
+ readonly "grok-4": "grok4";
86
+ readonly "grok-4-fast": "grok4f";
87
+ readonly "grok-4-1-fast": "grok4p1f";
88
+ };
89
+ readonly alibaba: {
90
+ readonly "qwen3.5-0.8b": "qwen3p5";
91
+ readonly "qwen3.6-plus": "qwen3p6";
92
+ readonly "qwen-image-2.0": "qwen2";
93
+ readonly "qwen-image-2.0-pro": "qwen2p";
94
+ readonly "qwen-image-edit": "qwen2e";
95
+ readonly "qwen-image-edit-plus": "qwen2e";
96
+ readonly "qwen-image-edit-max": "qwen2e";
97
+ readonly "wan2.7-image-pro": "wan2p7p";
98
+ };
99
+ readonly fireworks: {
100
+ readonly "deepseek-v3": "ds3";
101
+ readonly "deepseek-v4-pro": "ds4p";
102
+ readonly "glm-5": "glm5";
103
+ readonly "glm-5.1": "glm5p1";
104
+ readonly "kimi-k2.6": "kimi2p6";
105
+ readonly "qwen3-vl-30b": "qwen3vl";
106
+ };
107
+ readonly elevenlabs: {
108
+ readonly eleven_flash_v2_5: "elf2p5";
109
+ readonly eleven_turbo_v2_5: "elt2p5";
110
+ readonly eleven_multilingual_v2: "elml2";
111
+ readonly eleven_multilingual_v3: "elml3";
112
+ };
113
+ };
114
+ export type SlugProviderId = keyof typeof MODEL_SLUGS;
115
+ export type SlugModelId<P extends SlugProviderId> = keyof (typeof MODEL_SLUGS)[P];
116
+ export declare function modelSlug<P extends SlugProviderId>(provider: P, model: SlugModelId<P>): string;
117
+ export declare const MODEL_DISPLAY: {
118
+ readonly kie: {
119
+ readonly "bytedance/seedance-2": "Seedance 2";
120
+ readonly "bytedance/seedance-2-fast": "Seedance 2 Fast";
121
+ readonly "kling-3.0/video": "Kling 3.0";
122
+ readonly "kling-3.0/video/std": "Kling 3.0";
123
+ readonly "kling-3.0/video/pro": "Kling 3.0 Pro";
124
+ readonly "kling-3.0/motion-control": "Kling 3.0 Motion";
125
+ readonly "wan/2-7-text-to-video": "Wan 2.7";
126
+ readonly "wan/2-7-image-to-video": "Wan 2.7";
127
+ readonly "wan/2-7-r2v": "Wan 2.7";
128
+ readonly "wan/2-7-videoedit": "Wan 2.7 Edit";
129
+ readonly "grok-imagine/text-to-video": "Grok Imagine";
130
+ readonly "grok-imagine/image-to-video": "Grok Imagine";
131
+ readonly "grok-imagine/extend": "Grok Extend";
132
+ readonly "grok-imagine/upscale": "Grok Upscale";
133
+ readonly "happyhorse/text-to-video": "HappyHorse";
134
+ readonly "happyhorse/image-to-video": "HappyHorse";
135
+ readonly "happyhorse/reference-to-video": "HappyHorse";
136
+ readonly "happyhorse/video-edit": "HappyHorse Edit";
137
+ readonly veo3: "Veo 3";
138
+ readonly veo3_fast: "Veo 3 Fast";
139
+ readonly "grok-imagine/text-to-image": "Grok Imagine";
140
+ readonly "grok-imagine/image-to-image": "Grok Imagine";
141
+ readonly "nano-banana": "Nano Banana";
142
+ readonly "nano-banana-2": "Nano Banana 2";
143
+ readonly "nano-banana-pro": "Nano Banana Pro";
144
+ readonly "gpt-image-2-text-to-image": "GPT Image 2.0";
145
+ readonly "gpt-image-2-image-to-image": "GPT Image 2.0 Edit";
146
+ readonly "wan/2-7-image": "Wan 2.7";
147
+ readonly "wan/2-7-image-pro": "Wan 2.7 Pro";
148
+ readonly "qwen2/text-to-image": "Qwen 2 Image";
149
+ readonly "qwen2/image-edit": "Qwen 2 Edit";
150
+ readonly "seedream/5-lite-text-to-image": "Seedream 5";
151
+ readonly "seedream/5-lite-image-to-image": "Seedream 5 Edit";
152
+ readonly "sora-watermark-remover": "Sora Watermark Remover";
153
+ readonly "suno/generate": "Suno";
154
+ readonly "suno/extend": "Suno Extend";
155
+ readonly "suno/upload-cover": "Suno Cover";
156
+ readonly "suno/upload-extend": "Suno Extend";
157
+ readonly "suno/wav-generate": "Suno WAV";
158
+ readonly "suno/mp4-generate": "Suno MP4";
159
+ readonly "suno/lyrics": "Suno Lyrics";
160
+ readonly "suno/style-generate": "Suno Style";
161
+ readonly "suno/vocal-removal-generate": "Suno Vocal Removal";
162
+ readonly "suno/mashup-generate": "Suno Mashup";
163
+ readonly "suno/replace-music-section-generate": "Suno Replace Section";
164
+ readonly "suno/sounds-generate": "Suno Sounds";
165
+ readonly "suno/add-instrumental-generate": "Suno Add Instrumental";
166
+ readonly "suno/add-vocals-generate": "Suno Add Vocals";
167
+ };
168
+ readonly kimicoding: {
169
+ readonly "kimi-k2": "Kimi 2";
170
+ readonly "kimi-k2.5": "Kimi 2.5";
171
+ readonly "kimi-k2.6": "Kimi 2.6";
172
+ };
173
+ readonly anthropic: {
174
+ readonly "claude-opus-4": "Claude Opus 4";
175
+ readonly "claude-opus-4-1": "Claude Opus 4.1";
176
+ readonly "claude-opus-4-5": "Claude Opus 4.5";
177
+ readonly "claude-opus-4-6": "Claude Opus 4.6";
178
+ readonly "claude-opus-4-7": "Claude Opus 4.7";
179
+ readonly "claude-sonnet-4": "Claude Sonnet 4";
180
+ readonly "claude-sonnet-4-5": "Claude Sonnet 4.5";
181
+ readonly "claude-sonnet-4-6": "Claude Sonnet 4.6";
182
+ readonly "claude-haiku-3-5": "Claude Haiku 3.5";
183
+ readonly "claude-haiku-4-5": "Claude Haiku 4.5";
184
+ };
185
+ readonly openai: {
186
+ readonly "gpt-5": "GPT-5";
187
+ readonly "gpt-5-mini": "GPT-5 Mini";
188
+ readonly "gpt-5-nano": "GPT-5 Nano";
189
+ readonly "gpt-4.1": "GPT-4.1";
190
+ readonly "gpt-4.1-mini": "GPT-4.1 Mini";
191
+ readonly "gpt-4.1-nano": "GPT-4.1 Nano";
192
+ readonly "gpt-4o": "GPT-4o";
193
+ readonly "gpt-4o-mini": "GPT-4o Mini";
194
+ readonly o3: "o3";
195
+ readonly "o4-mini": "o4 Mini";
196
+ readonly "text-embedding-3-small": "Embedding 3 Small";
197
+ readonly "text-embedding-3-large": "Embedding 3 Large";
198
+ };
199
+ readonly xai: {
200
+ readonly "grok-3": "Grok 3";
201
+ readonly "grok-4": "Grok 4";
202
+ readonly "grok-4-fast": "Grok 4 Fast";
203
+ readonly "grok-4-1-fast": "Grok 4.1 Fast";
204
+ };
205
+ readonly alibaba: {
206
+ readonly "qwen3.5-0.8b": "Qwen 3.5";
207
+ readonly "qwen3.6-plus": "Qwen 3.6 Plus";
208
+ readonly "qwen-image-2.0": "Qwen Image 2.0";
209
+ readonly "qwen-image-2.0-pro": "Qwen Image 2.0 Pro";
210
+ readonly "qwen-image-edit": "Qwen Image Edit";
211
+ readonly "qwen-image-edit-plus": "Qwen Image Edit Plus";
212
+ readonly "qwen-image-edit-max": "Qwen Image Edit Max";
213
+ readonly "wan2.7-image-pro": "Wan 2.7 Image Pro";
214
+ };
215
+ readonly fireworks: {
216
+ readonly "deepseek-v3": "DeepSeek V3";
217
+ readonly "deepseek-v4-pro": "DeepSeek V4 Pro";
218
+ readonly "glm-5": "GLM 5";
219
+ readonly "glm-5.1": "GLM 5.1";
220
+ readonly "kimi-k2.6": "Kimi 2.6";
221
+ readonly "qwen3-vl-30b": "Qwen 3 VL";
222
+ };
223
+ readonly elevenlabs: {
224
+ readonly eleven_flash_v2_5: "Eleven Flash 2.5";
225
+ readonly eleven_turbo_v2_5: "Eleven Turbo 2.5";
226
+ readonly eleven_multilingual_v2: "Eleven Multilingual 2";
227
+ readonly eleven_multilingual_v3: "Eleven Multilingual 3";
228
+ };
229
+ };
230
+ export declare function modelDisplay<P extends SlugProviderId>(provider: P, model: SlugModelId<P>): string;
231
+ //# sourceMappingURL=slugs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slugs.d.ts","sourceRoot":"","sources":["../../src/slugs.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqJd,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,WAAW,CAAC;AAEtD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,IAC9C,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAKhC,wBAAgB,SAAS,CAAC,CAAC,SAAS,cAAc,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACpB,MAAM,CAUR;AAMD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIhB,CAAC;AAEX,wBAAgB,YAAY,CAAC,CAAC,SAAS,cAAc,EACnD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACpB,MAAM,CAUR"}
@@ -0,0 +1,278 @@
1
+ // Compact, stable per-model slugs for use as filename / asset-id prefixes.
2
+ //
3
+ // Convention: lowercase, alphanumeric only (no spaces, hyphens, or dots).
4
+ // Dots in version numbers become the letter "p" — e.g. "Kimi 2.5" → "kimi2p5",
5
+ // "Wan 2.7" → "wan2p7". Tier letters trail the version: pro → "p",
6
+ // fast → "f", std → "s". Slugs identify the *model variant* (different
7
+ // price / quality tier = different slug), but NOT the I/O modality
8
+ // (T2V/I2V/R2V/edit/extend share one slug — the op is metadata).
9
+ //
10
+ // Keys mirror PRICING wherever possible. The exception is kie's
11
+ // "kling-3.0/video", which has a single pricing entry with mode-tiered
12
+ // rates; we expose two synthetic slug keys ("kling-3.0/video/std",
13
+ // "kling-3.0/video/pro") so consumers get the right slug per tier.
14
+ export const MODEL_SLUGS = {
15
+ kie: {
16
+ // Video — Bytedance Seedance
17
+ "bytedance/seedance-2": "sd2",
18
+ "bytedance/seedance-2-fast": "sd2f",
19
+ // Video — Kling 3.0 (mode-tiered: synthetic suffixed keys)
20
+ "kling-3.0/video": "kling3",
21
+ "kling-3.0/video/std": "kling3s",
22
+ "kling-3.0/video/pro": "kling3p",
23
+ "kling-3.0/motion-control": "kling3mc",
24
+ // Video — Wan 2.7
25
+ "wan/2-7-text-to-video": "wan2p7",
26
+ "wan/2-7-image-to-video": "wan2p7",
27
+ "wan/2-7-r2v": "wan2p7",
28
+ "wan/2-7-videoedit": "wan2p7",
29
+ // Video — Grok Imagine
30
+ "grok-imagine/text-to-video": "grok",
31
+ "grok-imagine/image-to-video": "grok",
32
+ "grok-imagine/extend": "grok",
33
+ "grok-imagine/upscale": "grok",
34
+ // Video — HappyHorse
35
+ "happyhorse/text-to-video": "hh",
36
+ "happyhorse/image-to-video": "hh",
37
+ "happyhorse/reference-to-video": "hh",
38
+ "happyhorse/video-edit": "hh",
39
+ // Video — Veo
40
+ veo3: "veo3",
41
+ veo3_fast: "veo3f",
42
+ // Image — Grok Imagine
43
+ "grok-imagine/text-to-image": "grok",
44
+ "grok-imagine/image-to-image": "grok",
45
+ // Image — Nano Banana
46
+ "nano-banana": "nb",
47
+ "nano-banana-2": "nb2",
48
+ "nano-banana-pro": "nbp",
49
+ // Image — GPT Image 2
50
+ "gpt-image-2-text-to-image": "gi2",
51
+ "gpt-image-2-image-to-image": "gi2",
52
+ // Image — Wan 2.7
53
+ "wan/2-7-image": "wan2p7",
54
+ "wan/2-7-image-pro": "wan2p7p",
55
+ // Image — Qwen 2
56
+ "qwen2/text-to-image": "qwen2",
57
+ "qwen2/image-edit": "qwen2",
58
+ // Image — Seedream 5 lite
59
+ "seedream/5-lite-text-to-image": "sd5",
60
+ "seedream/5-lite-image-to-image": "sd5",
61
+ // Image — Sora watermark removal
62
+ "sora-watermark-remover": "soraw",
63
+ // Audio — Suno
64
+ "suno/generate": "suno",
65
+ "suno/extend": "suno",
66
+ "suno/upload-cover": "suno",
67
+ "suno/upload-extend": "suno",
68
+ "suno/wav-generate": "suno",
69
+ "suno/mp4-generate": "suno",
70
+ "suno/lyrics": "suno",
71
+ "suno/style-generate": "suno",
72
+ "suno/vocal-removal-generate": "suno",
73
+ "suno/mashup-generate": "suno",
74
+ "suno/replace-music-section-generate": "suno",
75
+ "suno/sounds-generate": "suno",
76
+ "suno/add-instrumental-generate": "suno",
77
+ "suno/add-vocals-generate": "suno",
78
+ },
79
+ kimicoding: {
80
+ "kimi-k2": "kimi2",
81
+ "kimi-k2.5": "kimi2p5",
82
+ "kimi-k2.6": "kimi2p6",
83
+ },
84
+ anthropic: {
85
+ "claude-opus-4": "opus4",
86
+ "claude-opus-4-1": "opus4p1",
87
+ "claude-opus-4-5": "opus4p5",
88
+ "claude-opus-4-6": "opus4p6",
89
+ "claude-opus-4-7": "opus4p7",
90
+ "claude-sonnet-4": "sonnet4",
91
+ "claude-sonnet-4-5": "sonnet4p5",
92
+ "claude-sonnet-4-6": "sonnet4p6",
93
+ "claude-haiku-3-5": "haiku3p5",
94
+ "claude-haiku-4-5": "haiku4p5",
95
+ },
96
+ openai: {
97
+ "gpt-5": "gpt5",
98
+ "gpt-5-mini": "gpt5m",
99
+ "gpt-5-nano": "gpt5n",
100
+ "gpt-4.1": "gpt4p1",
101
+ "gpt-4.1-mini": "gpt4p1m",
102
+ "gpt-4.1-nano": "gpt4p1n",
103
+ "gpt-4o": "gpt4o",
104
+ "gpt-4o-mini": "gpt4om",
105
+ o3: "o3",
106
+ "o4-mini": "o4m",
107
+ "text-embedding-3-small": "emb3s",
108
+ "text-embedding-3-large": "emb3l",
109
+ },
110
+ xai: {
111
+ "grok-3": "grok3",
112
+ "grok-4": "grok4",
113
+ "grok-4-fast": "grok4f",
114
+ "grok-4-1-fast": "grok4p1f",
115
+ },
116
+ alibaba: {
117
+ "qwen3.5-0.8b": "qwen3p5",
118
+ "qwen3.6-plus": "qwen3p6",
119
+ // Image gen via alibaba's direct API (Qwen Image, Wan 2.7 Image).
120
+ // Same underlying models as kie's qwen2/* and wan/2-7-image* —
121
+ // slugs intentionally match.
122
+ "qwen-image-2.0": "qwen2",
123
+ "qwen-image-2.0-pro": "qwen2p",
124
+ "qwen-image-edit": "qwen2e",
125
+ "qwen-image-edit-plus": "qwen2e",
126
+ "qwen-image-edit-max": "qwen2e",
127
+ "wan2.7-image-pro": "wan2p7p",
128
+ },
129
+ fireworks: {
130
+ "deepseek-v3": "ds3",
131
+ "deepseek-v4-pro": "ds4p",
132
+ "glm-5": "glm5",
133
+ "glm-5.1": "glm5p1",
134
+ "kimi-k2.6": "kimi2p6",
135
+ "qwen3-vl-30b": "qwen3vl",
136
+ },
137
+ elevenlabs: {
138
+ eleven_flash_v2_5: "elf2p5",
139
+ eleven_turbo_v2_5: "elt2p5",
140
+ eleven_multilingual_v2: "elml2",
141
+ eleven_multilingual_v3: "elml3",
142
+ },
143
+ };
144
+ // Returns the compact slug for a given provider+model. Throws if unknown
145
+ // — slugs are a write-time concern (asset naming, telemetry) where
146
+ // silently falling back to a string would produce drift.
147
+ export function modelSlug(provider, model) {
148
+ const slug = MODEL_SLUGS[provider][model];
149
+ if (!slug) {
150
+ throw new Error(`No slug registered for ${String(provider)}/${String(model)} — add it to packages/provider/cost/src/slugs.ts`);
151
+ }
152
+ return slug;
153
+ }
154
+ // Human-readable display names. Parallel to MODEL_SLUGS — same provider/
155
+ // model keys. Used by UIs that surface model identity to end users
156
+ // (activity logs, model pickers, cost breakdowns). Title-case is
157
+ // intentional; consumers can lowercase if they prefer.
158
+ export const MODEL_DISPLAY = {
159
+ kie: {
160
+ "bytedance/seedance-2": "Seedance 2",
161
+ "bytedance/seedance-2-fast": "Seedance 2 Fast",
162
+ "kling-3.0/video": "Kling 3.0",
163
+ "kling-3.0/video/std": "Kling 3.0",
164
+ "kling-3.0/video/pro": "Kling 3.0 Pro",
165
+ "kling-3.0/motion-control": "Kling 3.0 Motion",
166
+ "wan/2-7-text-to-video": "Wan 2.7",
167
+ "wan/2-7-image-to-video": "Wan 2.7",
168
+ "wan/2-7-r2v": "Wan 2.7",
169
+ "wan/2-7-videoedit": "Wan 2.7 Edit",
170
+ "grok-imagine/text-to-video": "Grok Imagine",
171
+ "grok-imagine/image-to-video": "Grok Imagine",
172
+ "grok-imagine/extend": "Grok Extend",
173
+ "grok-imagine/upscale": "Grok Upscale",
174
+ "happyhorse/text-to-video": "HappyHorse",
175
+ "happyhorse/image-to-video": "HappyHorse",
176
+ "happyhorse/reference-to-video": "HappyHorse",
177
+ "happyhorse/video-edit": "HappyHorse Edit",
178
+ veo3: "Veo 3",
179
+ veo3_fast: "Veo 3 Fast",
180
+ "grok-imagine/text-to-image": "Grok Imagine",
181
+ "grok-imagine/image-to-image": "Grok Imagine",
182
+ "nano-banana": "Nano Banana",
183
+ "nano-banana-2": "Nano Banana 2",
184
+ "nano-banana-pro": "Nano Banana Pro",
185
+ "gpt-image-2-text-to-image": "GPT Image 2.0",
186
+ "gpt-image-2-image-to-image": "GPT Image 2.0 Edit",
187
+ "wan/2-7-image": "Wan 2.7",
188
+ "wan/2-7-image-pro": "Wan 2.7 Pro",
189
+ "qwen2/text-to-image": "Qwen 2 Image",
190
+ "qwen2/image-edit": "Qwen 2 Edit",
191
+ "seedream/5-lite-text-to-image": "Seedream 5",
192
+ "seedream/5-lite-image-to-image": "Seedream 5 Edit",
193
+ "sora-watermark-remover": "Sora Watermark Remover",
194
+ "suno/generate": "Suno",
195
+ "suno/extend": "Suno Extend",
196
+ "suno/upload-cover": "Suno Cover",
197
+ "suno/upload-extend": "Suno Extend",
198
+ "suno/wav-generate": "Suno WAV",
199
+ "suno/mp4-generate": "Suno MP4",
200
+ "suno/lyrics": "Suno Lyrics",
201
+ "suno/style-generate": "Suno Style",
202
+ "suno/vocal-removal-generate": "Suno Vocal Removal",
203
+ "suno/mashup-generate": "Suno Mashup",
204
+ "suno/replace-music-section-generate": "Suno Replace Section",
205
+ "suno/sounds-generate": "Suno Sounds",
206
+ "suno/add-instrumental-generate": "Suno Add Instrumental",
207
+ "suno/add-vocals-generate": "Suno Add Vocals",
208
+ },
209
+ kimicoding: {
210
+ "kimi-k2": "Kimi 2",
211
+ "kimi-k2.5": "Kimi 2.5",
212
+ "kimi-k2.6": "Kimi 2.6",
213
+ },
214
+ anthropic: {
215
+ "claude-opus-4": "Claude Opus 4",
216
+ "claude-opus-4-1": "Claude Opus 4.1",
217
+ "claude-opus-4-5": "Claude Opus 4.5",
218
+ "claude-opus-4-6": "Claude Opus 4.6",
219
+ "claude-opus-4-7": "Claude Opus 4.7",
220
+ "claude-sonnet-4": "Claude Sonnet 4",
221
+ "claude-sonnet-4-5": "Claude Sonnet 4.5",
222
+ "claude-sonnet-4-6": "Claude Sonnet 4.6",
223
+ "claude-haiku-3-5": "Claude Haiku 3.5",
224
+ "claude-haiku-4-5": "Claude Haiku 4.5",
225
+ },
226
+ openai: {
227
+ "gpt-5": "GPT-5",
228
+ "gpt-5-mini": "GPT-5 Mini",
229
+ "gpt-5-nano": "GPT-5 Nano",
230
+ "gpt-4.1": "GPT-4.1",
231
+ "gpt-4.1-mini": "GPT-4.1 Mini",
232
+ "gpt-4.1-nano": "GPT-4.1 Nano",
233
+ "gpt-4o": "GPT-4o",
234
+ "gpt-4o-mini": "GPT-4o Mini",
235
+ o3: "o3",
236
+ "o4-mini": "o4 Mini",
237
+ "text-embedding-3-small": "Embedding 3 Small",
238
+ "text-embedding-3-large": "Embedding 3 Large",
239
+ },
240
+ xai: {
241
+ "grok-3": "Grok 3",
242
+ "grok-4": "Grok 4",
243
+ "grok-4-fast": "Grok 4 Fast",
244
+ "grok-4-1-fast": "Grok 4.1 Fast",
245
+ },
246
+ alibaba: {
247
+ "qwen3.5-0.8b": "Qwen 3.5",
248
+ "qwen3.6-plus": "Qwen 3.6 Plus",
249
+ "qwen-image-2.0": "Qwen Image 2.0",
250
+ "qwen-image-2.0-pro": "Qwen Image 2.0 Pro",
251
+ "qwen-image-edit": "Qwen Image Edit",
252
+ "qwen-image-edit-plus": "Qwen Image Edit Plus",
253
+ "qwen-image-edit-max": "Qwen Image Edit Max",
254
+ "wan2.7-image-pro": "Wan 2.7 Image Pro",
255
+ },
256
+ fireworks: {
257
+ "deepseek-v3": "DeepSeek V3",
258
+ "deepseek-v4-pro": "DeepSeek V4 Pro",
259
+ "glm-5": "GLM 5",
260
+ "glm-5.1": "GLM 5.1",
261
+ "kimi-k2.6": "Kimi 2.6",
262
+ "qwen3-vl-30b": "Qwen 3 VL",
263
+ },
264
+ elevenlabs: {
265
+ eleven_flash_v2_5: "Eleven Flash 2.5",
266
+ eleven_turbo_v2_5: "Eleven Turbo 2.5",
267
+ eleven_multilingual_v2: "Eleven Multilingual 2",
268
+ eleven_multilingual_v3: "Eleven Multilingual 3",
269
+ },
270
+ };
271
+ export function modelDisplay(provider, model) {
272
+ const display = MODEL_DISPLAY[provider][model];
273
+ if (!display) {
274
+ throw new Error(`No display name registered for ${String(provider)}/${String(model)} — add it to packages/provider/cost/src/slugs.ts`);
275
+ }
276
+ return display;
277
+ }
278
+ //# sourceMappingURL=slugs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../src/slugs.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,mEAAmE;AACnE,uEAAuE;AACvE,mEAAmE;AACnE,iEAAiE;AACjE,EAAE;AACF,gEAAgE;AAChE,uEAAuE;AACvE,mEAAmE;AACnE,mEAAmE;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,EAAE;QACH,6BAA6B;QAC7B,sBAAsB,EAAE,KAAK;QAC7B,2BAA2B,EAAE,MAAM;QAEnC,2DAA2D;QAC3D,iBAAiB,EAAE,QAAQ;QAC3B,qBAAqB,EAAE,SAAS;QAChC,qBAAqB,EAAE,SAAS;QAChC,0BAA0B,EAAE,UAAU;QAEtC,kBAAkB;QAClB,uBAAuB,EAAE,QAAQ;QACjC,wBAAwB,EAAE,QAAQ;QAClC,aAAa,EAAE,QAAQ;QACvB,mBAAmB,EAAE,QAAQ;QAE7B,uBAAuB;QACvB,4BAA4B,EAAE,MAAM;QACpC,6BAA6B,EAAE,MAAM;QACrC,qBAAqB,EAAE,MAAM;QAC7B,sBAAsB,EAAE,MAAM;QAE9B,qBAAqB;QACrB,0BAA0B,EAAE,IAAI;QAChC,2BAA2B,EAAE,IAAI;QACjC,+BAA+B,EAAE,IAAI;QACrC,uBAAuB,EAAE,IAAI;QAE7B,cAAc;QACd,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,OAAO;QAElB,uBAAuB;QACvB,4BAA4B,EAAE,MAAM;QACpC,6BAA6B,EAAE,MAAM;QAErC,sBAAsB;QACtB,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,KAAK;QACtB,iBAAiB,EAAE,KAAK;QAExB,sBAAsB;QACtB,2BAA2B,EAAE,KAAK;QAClC,4BAA4B,EAAE,KAAK;QAEnC,kBAAkB;QAClB,eAAe,EAAE,QAAQ;QACzB,mBAAmB,EAAE,SAAS;QAE9B,iBAAiB;QACjB,qBAAqB,EAAE,OAAO;QAC9B,kBAAkB,EAAE,OAAO;QAE3B,0BAA0B;QAC1B,+BAA+B,EAAE,KAAK;QACtC,gCAAgC,EAAE,KAAK;QAEvC,iCAAiC;QACjC,wBAAwB,EAAE,OAAO;QAEjC,eAAe;QACf,eAAe,EAAE,MAAM;QACvB,aAAa,EAAE,MAAM;QACrB,mBAAmB,EAAE,MAAM;QAC3B,oBAAoB,EAAE,MAAM;QAC5B,mBAAmB,EAAE,MAAM;QAC3B,mBAAmB,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM;QACrB,qBAAqB,EAAE,MAAM;QAC7B,6BAA6B,EAAE,MAAM;QACrC,sBAAsB,EAAE,MAAM;QAC9B,qCAAqC,EAAE,MAAM;QAC7C,sBAAsB,EAAE,MAAM;QAC9B,gCAAgC,EAAE,MAAM;QACxC,0BAA0B,EAAE,MAAM;KACnC;IAED,UAAU,EAAE;QACV,SAAS,EAAE,OAAO;QAClB,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;KACvB;IAED,SAAS,EAAE;QACT,eAAe,EAAE,OAAO;QACxB,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,SAAS;QAC5B,iBAAiB,EAAE,SAAS;QAC5B,mBAAmB,EAAE,WAAW;QAChC,mBAAmB,EAAE,WAAW;QAChC,kBAAkB,EAAE,UAAU;QAC9B,kBAAkB,EAAE,UAAU;KAC/B;IAED,MAAM,EAAE;QACN,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,OAAO;QACrB,SAAS,EAAE,QAAQ;QACnB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,QAAQ;QACvB,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,KAAK;QAChB,wBAAwB,EAAE,OAAO;QACjC,wBAAwB,EAAE,OAAO;KAClC;IAED,GAAG,EAAE;QACH,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,QAAQ;QACvB,eAAe,EAAE,UAAU;KAC5B;IAED,OAAO,EAAE;QACP,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,kEAAkE;QAClE,+DAA+D;QAC/D,6BAA6B;QAC7B,gBAAgB,EAAE,OAAO;QACzB,oBAAoB,EAAE,QAAQ;QAC9B,iBAAiB,EAAE,QAAQ;QAC3B,sBAAsB,EAAE,QAAQ;QAChC,qBAAqB,EAAE,QAAQ;QAC/B,kBAAkB,EAAE,SAAS;KAC9B;IAED,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;KAC1B;IAED,UAAU,EAAE;QACV,iBAAiB,EAAE,QAAQ;QAC3B,iBAAiB,EAAE,QAAQ;QAC3B,sBAAsB,EAAE,OAAO;QAC/B,sBAAsB,EAAE,OAAO;KAChC;CACO,CAAC;AAOX,yEAAyE;AACzE,mEAAmE;AACnE,yDAAyD;AACzD,MAAM,UAAU,SAAS,CACvB,QAAW,EACX,KAAqB;IAErB,MAAM,IAAI,GAAI,WAAW,CAAC,QAAQ,CAA4B,CAC5D,KAAe,CAChB,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACb,0BAA0B,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAC9G,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yEAAyE;AACzE,mEAAmE;AACnE,iEAAiE;AACjE,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE;QACH,sBAAsB,EAAE,YAAY;QACpC,2BAA2B,EAAE,iBAAiB;QAE9C,iBAAiB,EAAE,WAAW;QAC9B,qBAAqB,EAAE,WAAW;QAClC,qBAAqB,EAAE,eAAe;QACtC,0BAA0B,EAAE,kBAAkB;QAE9C,uBAAuB,EAAE,SAAS;QAClC,wBAAwB,EAAE,SAAS;QACnC,aAAa,EAAE,SAAS;QACxB,mBAAmB,EAAE,cAAc;QAEnC,4BAA4B,EAAE,cAAc;QAC5C,6BAA6B,EAAE,cAAc;QAC7C,qBAAqB,EAAE,aAAa;QACpC,sBAAsB,EAAE,cAAc;QAEtC,0BAA0B,EAAE,YAAY;QACxC,2BAA2B,EAAE,YAAY;QACzC,+BAA+B,EAAE,YAAY;QAC7C,uBAAuB,EAAE,iBAAiB;QAE1C,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,YAAY;QAEvB,4BAA4B,EAAE,cAAc;QAC5C,6BAA6B,EAAE,cAAc;QAE7C,aAAa,EAAE,aAAa;QAC5B,eAAe,EAAE,eAAe;QAChC,iBAAiB,EAAE,iBAAiB;QAEpC,2BAA2B,EAAE,eAAe;QAC5C,4BAA4B,EAAE,oBAAoB;QAElD,eAAe,EAAE,SAAS;QAC1B,mBAAmB,EAAE,aAAa;QAElC,qBAAqB,EAAE,cAAc;QACrC,kBAAkB,EAAE,aAAa;QAEjC,+BAA+B,EAAE,YAAY;QAC7C,gCAAgC,EAAE,iBAAiB;QAEnD,wBAAwB,EAAE,wBAAwB;QAElD,eAAe,EAAE,MAAM;QACvB,aAAa,EAAE,aAAa;QAC5B,mBAAmB,EAAE,YAAY;QACjC,oBAAoB,EAAE,aAAa;QACnC,mBAAmB,EAAE,UAAU;QAC/B,mBAAmB,EAAE,UAAU;QAC/B,aAAa,EAAE,aAAa;QAC5B,qBAAqB,EAAE,YAAY;QACnC,6BAA6B,EAAE,oBAAoB;QACnD,sBAAsB,EAAE,aAAa;QACrC,qCAAqC,EAAE,sBAAsB;QAC7D,sBAAsB,EAAE,aAAa;QACrC,gCAAgC,EAAE,uBAAuB;QACzD,0BAA0B,EAAE,iBAAiB;KAC9C;IAED,UAAU,EAAE;QACV,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,UAAU;KACxB;IAED,SAAS,EAAE;QACT,eAAe,EAAE,eAAe;QAChC,iBAAiB,EAAE,iBAAiB;QACpC,iBAAiB,EAAE,iBAAiB;QACpC,iBAAiB,EAAE,iBAAiB;QACpC,iBAAiB,EAAE,iBAAiB;QACpC,iBAAiB,EAAE,iBAAiB;QACpC,mBAAmB,EAAE,mBAAmB;QACxC,mBAAmB,EAAE,mBAAmB;QACxC,kBAAkB,EAAE,kBAAkB;QACtC,kBAAkB,EAAE,kBAAkB;KACvC;IAED,MAAM,EAAE;QACN,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,YAAY;QAC1B,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,cAAc;QAC9B,cAAc,EAAE,cAAc;QAC9B,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,aAAa;QAC5B,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,SAAS;QACpB,wBAAwB,EAAE,mBAAmB;QAC7C,wBAAwB,EAAE,mBAAmB;KAC9C;IAED,GAAG,EAAE;QACH,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,aAAa;QAC5B,eAAe,EAAE,eAAe;KACjC;IAED,OAAO,EAAE;QACP,cAAc,EAAE,UAAU;QAC1B,cAAc,EAAE,eAAe;QAC/B,gBAAgB,EAAE,gBAAgB;QAClC,oBAAoB,EAAE,oBAAoB;QAC1C,iBAAiB,EAAE,iBAAiB;QACpC,sBAAsB,EAAE,sBAAsB;QAC9C,qBAAqB,EAAE,qBAAqB;QAC5C,kBAAkB,EAAE,mBAAmB;KACxC;IAED,SAAS,EAAE;QACT,aAAa,EAAE,aAAa;QAC5B,iBAAiB,EAAE,iBAAiB;QACpC,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,WAAW;KAC5B;IAED,UAAU,EAAE;QACV,iBAAiB,EAAE,kBAAkB;QACrC,iBAAiB,EAAE,kBAAkB;QACrC,sBAAsB,EAAE,uBAAuB;QAC/C,sBAAsB,EAAE,uBAAuB;KAChD;CACO,CAAC;AAEX,MAAM,UAAU,YAAY,CAC1B,QAAW,EACX,KAAqB;IAErB,MAAM,OAAO,GAAI,aAAa,CAAC,QAAQ,CAA4B,CACjE,KAAe,CAChB,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kCAAkC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,kDAAkD,CACtH,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}