egaki 0.5.0 → 0.6.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.
@@ -1,10 +1,26 @@
1
- // Single source of truth for all image generation models.
1
+ // Single source of truth for all image and video generation models.
2
2
  // Every model's provider, pricing, features, and generation strategy lives here.
3
3
  // Other modules derive their data from this catalog — no separate registries.
4
4
  //
5
5
  // To add a model: add an entry to CATALOG with the right shared fragment spread.
6
6
  // To update pricing: change the cost field on the model entry.
7
7
  // To add a provider: create a new shared fragment and add models using it.
8
+ //
9
+ // Provider option schemas are sourced from the @ai-sdk/* packages and upstream API docs.
10
+ // Each shared fragment has a URL comment pointing to the source of truth so options
11
+ // are easy to verify and update when providers change their APIs.
12
+ //
13
+ // Sources:
14
+ // xAI image: node_modules/@ai-sdk/xai/dist/index.d.ts → xaiImageModelOptions
15
+ // https://docs.x.ai/docs/api-reference#create-image
16
+ // xAI video: node_modules/@ai-sdk/xai/dist/index.d.ts → XaiVideoModelOptions
17
+ // https://docs.x.ai/docs/api-reference#create-video
18
+ // OpenAI: node_modules/@ai-sdk/openai/dist/index.d.ts → imageGeneration args
19
+ // https://platform.openai.com/docs/api-reference/images
20
+ // Fal image: https://ai-sdk.dev/providers/ai-sdk-providers/fal
21
+ // node_modules/@ai-sdk/fal/dist/index.d.ts → FalImageModelOptions
22
+ // Fal video: node_modules/@ai-sdk/fal/dist/index.d.ts → FalVideoModelOptions
23
+ // https://ai-sdk.dev/providers/ai-sdk-providers/fal
8
24
  // ─── shared fragments ────────────────────────────────────────────────────────
9
25
  // Spread these into model entries to avoid repeating common fields.
10
26
  const googleImagen = {
@@ -29,17 +45,31 @@ const googleText = {
29
45
  multipleImages: false,
30
46
  },
31
47
  };
48
+ // Source: node_modules/@ai-sdk/openai/dist/index.d.ts → imageGeneration args
49
+ // Docs: https://platform.openai.com/docs/api-reference/images/create
50
+ const openaiImageProviderOptions = [
51
+ { flag: 'quality', providerKey: 'quality', description: 'Image quality', values: ['auto', 'low', 'medium', 'high'], defaultValue: 'auto', type: 'string' },
52
+ { flag: 'output-format', providerKey: 'outputFormat', description: 'Output format', values: ['png', 'jpeg', 'webp'], defaultValue: 'png', type: 'string' },
53
+ ];
32
54
  const openaiImage = {
33
55
  provider: 'openai',
34
56
  strategy: 'image',
57
+ providerOptions: openaiImageProviderOptions,
35
58
  };
36
59
  const replicateImage = {
37
60
  provider: 'replicate',
38
61
  strategy: 'image',
39
62
  };
63
+ // Source: node_modules/@ai-sdk/fal/dist/index.d.ts → FalImageModelOptions (lazy passthrough)
64
+ // Docs: https://ai-sdk.dev/providers/ai-sdk-providers/fal#provider-options
65
+ const falImageProviderOptions = [
66
+ { flag: 'output-format', providerKey: 'outputFormat', description: 'Output format', values: ['png', 'jpeg'], type: 'string' },
67
+ { flag: 'negative-prompt', providerKey: 'negativePrompt', description: 'What to avoid in the image', type: 'string' },
68
+ ];
40
69
  const falImage = {
41
70
  provider: 'fal',
42
71
  strategy: 'image',
72
+ providerOptions: falImageProviderOptions,
43
73
  };
44
74
  const bflImage = {
45
75
  provider: 'bfl',
@@ -49,10 +79,33 @@ const recraftImage = {
49
79
  provider: 'recraft',
50
80
  strategy: 'image',
51
81
  };
82
+ // Source: node_modules/@ai-sdk/xai/dist/index.d.ts → xaiImageModelOptions
83
+ // Docs: https://docs.x.ai/docs/api-reference#create-image
84
+ const xaiImageProviderOptions = [
85
+ { flag: 'quality', providerKey: 'quality', description: 'Image quality', values: ['low', 'medium', 'high'], defaultValue: 'medium', type: 'string' },
86
+ { flag: 'resolution', providerKey: 'resolution', description: 'Output resolution', values: ['1k', '2k'], defaultValue: '1k', type: 'string' },
87
+ { flag: 'output-format', providerKey: 'output_format', description: 'Output format', values: ['png', 'jpeg'], defaultValue: 'png', type: 'string' },
88
+ ];
52
89
  const xaiImage = {
53
90
  provider: 'xai',
54
91
  strategy: 'image',
92
+ providerOptions: xaiImageProviderOptions,
55
93
  };
94
+ // Source: node_modules/@ai-sdk/xai/dist/index.d.ts → XaiVideoModelOptions
95
+ // Docs: https://docs.x.ai/docs/api-reference#create-video
96
+ const xaiVideoProviderOptions = [
97
+ { flag: 'resolution', providerKey: 'resolution', description: 'Output resolution', values: ['480p', '720p'], defaultValue: '720p', type: 'string' },
98
+ { flag: 'mode', providerKey: 'mode', description: 'Video operation mode', values: ['edit-video', 'extend-video', 'reference-to-video'], type: 'string' },
99
+ // video-url is not a CLI flag; it's set internally from --input in edit/extend modes.
100
+ // Kept here so findProviderOption() can verify the model supports it and resolve the correct providerKey.
101
+ { flag: 'video-url', providerKey: 'videoUrl', description: 'Source video URL for editing or extension (internal)', type: 'string' },
102
+ { flag: 'reference-images', providerKey: 'referenceImageUrls', description: 'Reference images for R2V (1-7 files or URLs)', type: 'string', array: true },
103
+ ];
104
+ // Source: node_modules/@ai-sdk/fal/dist/index.d.ts → FalVideoModelOptions
105
+ // Docs: https://ai-sdk.dev/providers/ai-sdk-providers/fal
106
+ const falVideoProviderOptions = [
107
+ { flag: 'negative-prompt', providerKey: 'negativePrompt', description: 'What to avoid in the video', type: 'string' },
108
+ ];
56
109
  const vertexImagen = {
57
110
  provider: 'vertex',
58
111
  strategy: 'image',
@@ -994,8 +1047,379 @@ export const CATALOG = [
994
1047
  },
995
1048
  },
996
1049
  ];
1050
+ // ─── video catalog ───────────────────────────────────────────────────────────
1051
+ const commonVideoRatios = ['16:9', '9:16', '1:1', '4:3', '3:4'];
1052
+ export const VIDEO_CATALOG = [
1053
+ {
1054
+ id: 'veo-3.1-generate-001',
1055
+ name: 'Veo 3.1',
1056
+ provider: 'google',
1057
+ strategy: 'video',
1058
+ released: '2026-01',
1059
+ cost: {
1060
+ type: 'per-video-second',
1061
+ defaultDurationSec: 8,
1062
+ tiers: [
1063
+ { resolution: '720p', audio: false, costPerSecond: 0.2 },
1064
+ { resolution: '720p', audio: true, costPerSecond: 0.4 },
1065
+ { resolution: '1080p', audio: false, costPerSecond: 0.2 },
1066
+ { resolution: '1080p', audio: true, costPerSecond: 0.4 },
1067
+ { resolution: '4k', audio: false, costPerSecond: 0.4 },
1068
+ { resolution: '4k', audio: true, costPerSecond: 0.6 },
1069
+ ],
1070
+ },
1071
+ features: {
1072
+ textToVideo: true,
1073
+ imageToVideo: false,
1074
+ capabilities: ['t2v'],
1075
+ aspectRatios: ['16:9', '9:16'],
1076
+ resolutions: ['720p', '1080p', '4k'],
1077
+ durationRangeSec: { min: 4, max: 8 },
1078
+ seed: true,
1079
+ multipleVideos: true,
1080
+ },
1081
+ },
1082
+ {
1083
+ id: 'veo-3.1-fast-generate-001',
1084
+ name: 'Veo 3.1 Fast',
1085
+ provider: 'google',
1086
+ strategy: 'video',
1087
+ released: '2026-01',
1088
+ cost: {
1089
+ type: 'per-video-second',
1090
+ defaultDurationSec: 8,
1091
+ tiers: [
1092
+ { resolution: '720p', audio: false, costPerSecond: 0.1 },
1093
+ { resolution: '720p', audio: true, costPerSecond: 0.15 },
1094
+ { resolution: '1080p', audio: false, costPerSecond: 0.1 },
1095
+ { resolution: '1080p', audio: true, costPerSecond: 0.15 },
1096
+ { resolution: '4k', audio: false, costPerSecond: 0.3 },
1097
+ { resolution: '4k', audio: true, costPerSecond: 0.35 },
1098
+ ],
1099
+ },
1100
+ features: {
1101
+ textToVideo: true,
1102
+ imageToVideo: false,
1103
+ capabilities: ['t2v'],
1104
+ aspectRatios: ['16:9', '9:16'],
1105
+ resolutions: ['720p', '1080p', '4k'],
1106
+ durationRangeSec: { min: 4, max: 8 },
1107
+ seed: true,
1108
+ multipleVideos: true,
1109
+ },
1110
+ },
1111
+ {
1112
+ id: 'veo-3.0-generate-001',
1113
+ name: 'Veo 3.0',
1114
+ provider: 'google',
1115
+ strategy: 'video',
1116
+ released: '2025-12',
1117
+ cost: {
1118
+ type: 'per-video-second',
1119
+ defaultDurationSec: 8,
1120
+ tiers: [
1121
+ { resolution: '720p', audio: false, costPerSecond: 0.2 },
1122
+ { resolution: '720p', audio: true, costPerSecond: 0.4 },
1123
+ { resolution: '1080p', audio: false, costPerSecond: 0.2 },
1124
+ { resolution: '1080p', audio: true, costPerSecond: 0.4 },
1125
+ ],
1126
+ },
1127
+ features: {
1128
+ textToVideo: true,
1129
+ imageToVideo: false,
1130
+ capabilities: ['t2v'],
1131
+ aspectRatios: ['16:9', '9:16'],
1132
+ resolutions: ['720p', '1080p'],
1133
+ durationRangeSec: { min: 4, max: 8 },
1134
+ seed: true,
1135
+ multipleVideos: true,
1136
+ },
1137
+ },
1138
+ {
1139
+ id: 'veo-3.0-fast-generate-001',
1140
+ name: 'Veo 3.0 Fast',
1141
+ provider: 'google',
1142
+ strategy: 'video',
1143
+ released: '2025-12',
1144
+ cost: {
1145
+ type: 'per-video-second',
1146
+ defaultDurationSec: 8,
1147
+ tiers: [
1148
+ { resolution: '720p', audio: false, costPerSecond: 0.1 },
1149
+ { resolution: '720p', audio: true, costPerSecond: 0.15 },
1150
+ { resolution: '1080p', audio: false, costPerSecond: 0.1 },
1151
+ { resolution: '1080p', audio: true, costPerSecond: 0.15 },
1152
+ ],
1153
+ },
1154
+ features: {
1155
+ textToVideo: true,
1156
+ imageToVideo: false,
1157
+ capabilities: ['t2v'],
1158
+ aspectRatios: ['16:9', '9:16'],
1159
+ resolutions: ['720p', '1080p'],
1160
+ durationRangeSec: { min: 4, max: 8 },
1161
+ seed: true,
1162
+ multipleVideos: true,
1163
+ },
1164
+ },
1165
+ // ── Vertex: Veo ──────────────────────────────────────────────────────
1166
+ {
1167
+ id: 'vertex/veo-3.1-generate-001',
1168
+ name: 'Veo 3.1 (Vertex)',
1169
+ provider: 'vertex',
1170
+ strategy: 'video',
1171
+ released: '2026-01',
1172
+ cost: {
1173
+ type: 'per-video-second',
1174
+ defaultDurationSec: 8,
1175
+ tiers: [
1176
+ { resolution: '720p', audio: false, costPerSecond: 0.2 },
1177
+ { resolution: '720p', audio: true, costPerSecond: 0.4 },
1178
+ { resolution: '1080p', audio: false, costPerSecond: 0.2 },
1179
+ { resolution: '1080p', audio: true, costPerSecond: 0.4 },
1180
+ { resolution: '4k', audio: false, costPerSecond: 0.4 },
1181
+ { resolution: '4k', audio: true, costPerSecond: 0.6 },
1182
+ ],
1183
+ },
1184
+ features: {
1185
+ textToVideo: true,
1186
+ imageToVideo: false,
1187
+ capabilities: ['t2v'],
1188
+ aspectRatios: ['16:9', '9:16'],
1189
+ resolutions: ['720p', '1080p', '4k'],
1190
+ durationRangeSec: { min: 4, max: 8 },
1191
+ seed: true,
1192
+ multipleVideos: true,
1193
+ },
1194
+ },
1195
+ {
1196
+ id: 'vertex/veo-3.1-fast-generate-001',
1197
+ name: 'Veo 3.1 Fast (Vertex)',
1198
+ provider: 'vertex',
1199
+ strategy: 'video',
1200
+ released: '2026-01',
1201
+ cost: {
1202
+ type: 'per-video-second',
1203
+ defaultDurationSec: 8,
1204
+ tiers: [
1205
+ { resolution: '720p', audio: false, costPerSecond: 0.1 },
1206
+ { resolution: '720p', audio: true, costPerSecond: 0.15 },
1207
+ { resolution: '1080p', audio: false, costPerSecond: 0.1 },
1208
+ { resolution: '1080p', audio: true, costPerSecond: 0.15 },
1209
+ { resolution: '4k', audio: false, costPerSecond: 0.3 },
1210
+ { resolution: '4k', audio: true, costPerSecond: 0.35 },
1211
+ ],
1212
+ },
1213
+ features: {
1214
+ textToVideo: true,
1215
+ imageToVideo: false,
1216
+ capabilities: ['t2v'],
1217
+ aspectRatios: ['16:9', '9:16'],
1218
+ resolutions: ['720p', '1080p', '4k'],
1219
+ durationRangeSec: { min: 4, max: 8 },
1220
+ seed: true,
1221
+ multipleVideos: true,
1222
+ },
1223
+ },
1224
+ {
1225
+ id: 'grok-imagine-video',
1226
+ name: 'Grok Imagine Video',
1227
+ provider: 'xai',
1228
+ strategy: 'video',
1229
+ released: '2026-03',
1230
+ cost: {
1231
+ type: 'per-video-second',
1232
+ defaultDurationSec: 5,
1233
+ tiers: [
1234
+ { resolution: '480p', costPerSecond: 0.05 },
1235
+ { resolution: '720p', costPerSecond: 0.07 },
1236
+ ],
1237
+ },
1238
+ features: {
1239
+ textToVideo: true,
1240
+ imageToVideo: true,
1241
+ capabilities: ['t2v', 'i2v', 'editing', 'extension', 'r2v'],
1242
+ aspectRatios: ['1:1', '16:9', '9:16', '4:3', '3:4', '3:2', '2:3'],
1243
+ resolutions: ['480p', '720p'],
1244
+ durationRangeSec: { min: 1, max: 15 },
1245
+ seed: false,
1246
+ multipleVideos: false,
1247
+ },
1248
+ providerOptions: xaiVideoProviderOptions,
1249
+ },
1250
+ {
1251
+ id: 'kling-v2.6-t2v',
1252
+ name: 'Kling v2.6 T2V',
1253
+ provider: 'klingai',
1254
+ strategy: 'video',
1255
+ released: '2025-12',
1256
+ cost: {
1257
+ type: 'per-video-second',
1258
+ defaultDurationSec: 5,
1259
+ tiers: [
1260
+ { mode: 'std', costPerSecond: 0.042 },
1261
+ { mode: 'pro', audio: false, costPerSecond: 0.07 },
1262
+ { mode: 'pro', audio: true, costPerSecond: 0.14 },
1263
+ ],
1264
+ },
1265
+ features: {
1266
+ textToVideo: true,
1267
+ imageToVideo: false,
1268
+ capabilities: ['t2v'],
1269
+ aspectRatios: commonVideoRatios,
1270
+ durationRangeSec: { min: 5, max: 10 },
1271
+ seed: false,
1272
+ multipleVideos: false,
1273
+ },
1274
+ },
1275
+ {
1276
+ id: 'wan-v2.6-t2v',
1277
+ name: 'Wan v2.6 T2V',
1278
+ provider: 'alibaba',
1279
+ strategy: 'video',
1280
+ released: '2026-01',
1281
+ cost: {
1282
+ type: 'per-video-second',
1283
+ defaultDurationSec: 5,
1284
+ tiers: [
1285
+ { resolution: '720p', costPerSecond: 0.1 },
1286
+ { resolution: '1080p', costPerSecond: 0.15 },
1287
+ ],
1288
+ },
1289
+ features: {
1290
+ textToVideo: true,
1291
+ imageToVideo: false,
1292
+ capabilities: ['t2v'],
1293
+ resolutions: ['720p', '1080p'],
1294
+ durationRangeSec: { min: 2, max: 15 },
1295
+ seed: false,
1296
+ multipleVideos: false,
1297
+ },
1298
+ },
1299
+ // ── Fal video models ─────────────────────────────────────────────────
1300
+ {
1301
+ id: 'luma-ray-2',
1302
+ name: 'Luma Ray 2 (Fal)',
1303
+ provider: 'fal',
1304
+ strategy: 'video',
1305
+ released: '2025-11',
1306
+ cost: { type: 'unknown' },
1307
+ features: {
1308
+ textToVideo: true,
1309
+ imageToVideo: true,
1310
+ capabilities: ['t2v', 'i2v'],
1311
+ aspectRatios: commonVideoRatios,
1312
+ seed: true,
1313
+ multipleVideos: false,
1314
+ },
1315
+ providerOptions: falVideoProviderOptions,
1316
+ },
1317
+ {
1318
+ id: 'minimax-video',
1319
+ name: 'MiniMax Video (Fal)',
1320
+ provider: 'fal',
1321
+ strategy: 'video',
1322
+ released: '2025-10',
1323
+ cost: { type: 'unknown' },
1324
+ features: {
1325
+ textToVideo: true,
1326
+ imageToVideo: false,
1327
+ capabilities: ['t2v'],
1328
+ aspectRatios: commonVideoRatios,
1329
+ seed: false,
1330
+ multipleVideos: false,
1331
+ },
1332
+ providerOptions: falVideoProviderOptions,
1333
+ },
1334
+ {
1335
+ id: 'hunyuan-video',
1336
+ name: 'Hunyuan Video (Fal)',
1337
+ provider: 'fal',
1338
+ strategy: 'video',
1339
+ released: '2025-09',
1340
+ cost: { type: 'unknown' },
1341
+ features: {
1342
+ textToVideo: true,
1343
+ imageToVideo: true,
1344
+ capabilities: ['t2v', 'i2v'],
1345
+ aspectRatios: commonVideoRatios,
1346
+ seed: true,
1347
+ multipleVideos: false,
1348
+ },
1349
+ providerOptions: falVideoProviderOptions,
1350
+ },
1351
+ ];
1352
+ // ─── provider option helpers ─────────────────────────────────────────────────
1353
+ /**
1354
+ * Collect the valid values for a CLI flag across all providers in the catalog.
1355
+ * Returns a map of provider name → enum values array. Only includes providers
1356
+ * that declare values for the given flag. Used by cli.ts to auto-generate
1357
+ * flag descriptions like "xAI: low, medium, high. OpenAI: auto, low, medium, high".
1358
+ */
1359
+ export function getProviderValuesForFlag(flag, catalogs = [CATALOG, VIDEO_CATALOG]) {
1360
+ const result = new Map();
1361
+ for (const catalog of catalogs) {
1362
+ for (const entry of catalog) {
1363
+ if (!entry.providerOptions)
1364
+ continue;
1365
+ for (const opt of entry.providerOptions) {
1366
+ if (opt.flag === flag && opt.values?.length && !result.has(entry.provider)) {
1367
+ result.set(entry.provider, opt.values);
1368
+ }
1369
+ }
1370
+ }
1371
+ }
1372
+ return result;
1373
+ }
1374
+ /**
1375
+ * Build a human-readable description suffix listing provider-specific values
1376
+ * for a flag. Includes default values when available.
1377
+ * Example: "xai: low, medium, high (default: medium). openai: auto, low, medium, high (default: auto)"
1378
+ */
1379
+ export function describeProviderValues(flag, catalogs) {
1380
+ const allCatalogs = catalogs ?? [CATALOG, VIDEO_CATALOG];
1381
+ // collect {provider → {values, defaultValue}} for this flag
1382
+ const providerInfo = new Map();
1383
+ for (const catalog of allCatalogs) {
1384
+ for (const entry of catalog) {
1385
+ if (!entry.providerOptions)
1386
+ continue;
1387
+ for (const opt of entry.providerOptions) {
1388
+ if (opt.flag === flag && opt.values?.length && !providerInfo.has(entry.provider)) {
1389
+ providerInfo.set(entry.provider, {
1390
+ values: opt.values,
1391
+ defaultValue: opt.defaultValue,
1392
+ });
1393
+ }
1394
+ }
1395
+ }
1396
+ }
1397
+ if (providerInfo.size === 0)
1398
+ return '';
1399
+ return [...providerInfo.entries()]
1400
+ .map(([provider, info]) => {
1401
+ const vals = info.values.join(', ');
1402
+ const def = info.defaultValue ? ` (default: ${info.defaultValue})` : '';
1403
+ return `${provider}: ${vals}${def}`;
1404
+ })
1405
+ .join('. ');
1406
+ }
1407
+ /**
1408
+ * Find the ProviderOption definition for a given flag and provider from a model entry.
1409
+ * Returns undefined if the model doesn't support this flag.
1410
+ */
1411
+ export function findProviderOption(entry, flag) {
1412
+ return entry.providerOptions?.find((opt) => opt.flag === flag);
1413
+ }
997
1414
  // ─── lookup helpers ──────────────────────────────────────────────────────────
998
- const catalogIndex = new Map(CATALOG.map((m) => [m.id, m]));
1415
+ const imageCatalogIndex = new Map(CATALOG.map((m) => [m.id, m]));
1416
+ const videoCatalogIndex = new Map(VIDEO_CATALOG.map((m) => [m.id, m]));
999
1417
  export function findModel(id) {
1000
- return catalogIndex.get(id);
1418
+ return imageCatalogIndex.get(id);
1419
+ }
1420
+ export function findVideoModel(id) {
1421
+ return videoCatalogIndex.get(id);
1422
+ }
1423
+ export function findAnyModel(id) {
1424
+ return imageCatalogIndex.get(id) ?? videoCatalogIndex.get(id);
1001
1425
  }
package/dist/models.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import type { ImageModel, LanguageModel } from 'ai';
2
- import type { ModelEntry } from './model-catalog.js';
3
- import type { VideoModelEntry } from './video-model-catalog.js';
4
- export type AnyModelEntry = ModelEntry | VideoModelEntry;
5
- export type { ModelEntry, VideoModelEntry };
2
+ import { type ImageModelEntry, type VideoModelEntry, type AnyModelEntry } from './model-catalog.js';
3
+ export type { ImageModelEntry, VideoModelEntry, AnyModelEntry };
4
+ /** @deprecated Use ImageModelEntry instead */
5
+ export type ModelEntry = ImageModelEntry;
6
6
  export declare const IMAGE_MODELS: [string, ...string[]];
7
7
  export declare const VIDEO_MODELS: [string, ...string[]];
8
8
  export declare const DEFAULT_MODEL = "nano-banana-pro-preview";
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAInD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,eAAe,CAAA;AACxD,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AAE3C,eAAO,MAAM,YAAY,EAA+B,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAC7E,eAAO,MAAM,YAAY,EAAqC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAYnF,eAAO,MAAM,aAAa,4BAA4B,CAAA;AACtD,eAAO,MAAM,mBAAmB,8BAA8B,CAAA;AAE9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAO7D;AAuBD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAiD5D;AAgDD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI9D;AAOD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAsC3E;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAqCxB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAyCpE"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAWnD,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,CAAA;AAC/D,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,eAAe,CAAA;AAExC,eAAO,MAAM,YAAY,EAA+B,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAC7E,eAAO,MAAM,YAAY,EAAqC,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;AAYnF,eAAO,MAAM,aAAa,4BAA4B,CAAA;AACtD,eAAO,MAAM,mBAAmB,8BAA8B,CAAA;AAE9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAO7D;AAyHD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CA+C5D;AAoCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI9D;AAgED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA0B3E;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8B7E;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CA+BpE"}