@fractal_cloud/sdk 1.5.2 → 2.0.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.
@@ -0,0 +1,767 @@
1
+ //#region src/model/core.d.ts
2
+ /**
3
+ * core.ts — the LOCKED Fractal model engine (see docs/fractal-model.md).
4
+ *
5
+ * Shared by every Component factory (src/model/components/*) and Offer catalogue
6
+ * (src/model/offers/*). This is the canonical engine; the catalogue and the
7
+ * model specs (src/model/*.test.ts) build on it.
8
+ *
9
+ * Decisions encoded here:
10
+ * - Fractal is vendor-agnostic: blueprints reference abstract Components only;
11
+ * offers come from the open Catalogue at LiveSystem time.
12
+ * - Offers carry their own vendor config and declare which Component they satisfy.
13
+ * - Agnostic params are typed `.withXxx()` setters on Component factories;
14
+ * called at design time they are GUARDRAILS (locked; devs cannot override).
15
+ * - Specialization is pure transforms with an immutable fluent `.specialize()`.
16
+ * - A LiveSystem is built EXCLUSIVELY by per-component offer selection
17
+ * (`select`), with no global provider; mixed vendors are normal.
18
+ */
19
+ type Provider = 'AWS' | 'Azure' | 'GCP' | 'OCI' | 'Hetzner' | 'Aruba' | 'RedHat' | 'VMware';
20
+ type DeliveryModel = 'IaaS' | 'PaaS' | 'CaaS' | 'SaaS' | 'FaaS';
21
+ /**
22
+ * A runtime relationship to another component, on the agent wire contract:
23
+ * `{componentId, settings}`. The agent resolves the target by `componentId` and
24
+ * reads `settings` (e.g. fromPort/protocol for traffic rules; empty for security
25
+ * group / network-policy membership).
26
+ */
27
+ type ComponentLink = {
28
+ componentId: string;
29
+ settings: Record<string, unknown>;
30
+ };
31
+ /** A child component added under a parent via an application operation (e.g. a
32
+ * database under a DBMS). The parent offer's `instantiate` emits a live
33
+ * component for each child IN ITS OWN VENDOR FAMILY — children are not
34
+ * independently offer-selected; swapping the parent offer swaps the family. */
35
+ type ChildContext = {
36
+ id: string;
37
+ parameters: Record<string, unknown>;
38
+ dependencies: readonly string[];
39
+ links: readonly ComponentLink[];
40
+ };
41
+ type InstantiationContext = {
42
+ id: string;
43
+ parameters: Record<string, unknown>;
44
+ dependencies: readonly string[];
45
+ links: readonly ComponentLink[]; /** Child components the application added under this component. */
46
+ children: readonly ChildContext[];
47
+ };
48
+ type LiveSystemComponent = {
49
+ id: string;
50
+ type: string;
51
+ provider?: Provider;
52
+ deliveryModel: DeliveryModel;
53
+ parameters: Record<string, unknown>;
54
+ dependencies: readonly string[];
55
+ links: readonly ComponentLink[];
56
+ };
57
+ type Offer<C extends string = string, Cfg = unknown> = {
58
+ readonly satisfies: C;
59
+ readonly offerType: string;
60
+ readonly provider?: Provider;
61
+ readonly deliveryModel: DeliveryModel;
62
+ readonly config: Cfg;
63
+ readonly instantiate: (ctx: InstantiationContext) => LiveSystemComponent[];
64
+ };
65
+ /** Build an offer constructor (pure). Default instantiate merges neutral params + vendor config. */
66
+ declare const defineOffer: <C extends string, Cfg>(spec: {
67
+ satisfies: C;
68
+ offerType: string;
69
+ provider?: Provider;
70
+ deliveryModel: DeliveryModel;
71
+ instantiate?: (ctx: InstantiationContext, config: Cfg) => LiveSystemComponent[];
72
+ }) => (config: Cfg) => Offer<C, Cfg>;
73
+ type NodeState = {
74
+ readonly id: string;
75
+ readonly component: string;
76
+ readonly parameters: Readonly<Record<string, unknown>>;
77
+ readonly locked: ReadonlySet<string>;
78
+ readonly dependencies: readonly string[];
79
+ };
80
+ /**
81
+ * A blueprint component node. `Id` and `Component` literals are phantom types
82
+ * (never present at runtime) so `toLiveSystem({select})` is type-checked: each
83
+ * component id maps to the Component it requires, and the selected offer must
84
+ * satisfy that Component.
85
+ */
86
+ type ComponentNode<Id extends string = string, Component extends string = string> = {
87
+ readonly state: NodeState;
88
+ readonly __id?: Id;
89
+ readonly __component?: Component;
90
+ };
91
+ type AnyNode = ComponentNode;
92
+ /** Authoring primitive: create a fresh node for a Component factory. */
93
+ declare const newNode: (id: string, component: string) => NodeState;
94
+ /** Authoring primitive: set a neutral param AND lock it (guardrail, design time). */
95
+ declare const guardrail: (s: NodeState, key: string, value: unknown) => NodeState;
96
+ /** Authoring primitive: declare a structural dependency on another node. */
97
+ declare const addDependency: (s: NodeState, depId: string) => NodeState;
98
+ /** A link authored in the blueprint: source component → target component + settings. */
99
+ type LinkRecord = {
100
+ sourceId: string;
101
+ targetId: string;
102
+ settings: Record<string, unknown>;
103
+ };
104
+ type FractalState = {
105
+ readonly fractalId: string;
106
+ readonly fractalName: string;
107
+ readonly version: Version;
108
+ readonly boundedContext: OwnerRef;
109
+ readonly nodes: Readonly<Record<string, NodeState>>;
110
+ readonly order: readonly string[];
111
+ readonly links: readonly LinkRecord[]; /** Child component nodes added via operations, keyed by parent component id. */
112
+ readonly children: Readonly<Record<string, readonly NodeState[]>>;
113
+ };
114
+ type Transform = (st: FractalState) => FractalState;
115
+ /** Dev-facing handle exposed to the `operations` author; produces pure transforms. */
116
+ type SlotOps = {
117
+ set: (key: string, value: unknown) => Transform;
118
+ append: (key: string, value: unknown) => Transform;
119
+ /**
120
+ * Add a child component under this component (e.g. a database under a DBMS).
121
+ * The child is emitted by the PARENT's selected offer, in the parent's vendor
122
+ * family — no separate offer selection. Swapping the parent offer swaps the
123
+ * child's family too. The child depends on this parent.
124
+ */
125
+ addChild: (child: AnyNode) => Transform;
126
+ };
127
+ type SerializedComponent = {
128
+ id: string;
129
+ component: string;
130
+ parameters: Record<string, unknown>;
131
+ locked: string[];
132
+ dependencies: string[];
133
+ links: ComponentLink[];
134
+ };
135
+ type Blueprint = {
136
+ fractalId: string;
137
+ components: SerializedComponent[];
138
+ };
139
+ /** Owner-scoped reference (Bounded Context / Environment). Fields optional so
140
+ * non-deploying tests can omit owner identity; deploy validates them. */
141
+ type OwnerRef = {
142
+ ownerType?: string;
143
+ ownerId?: string;
144
+ name?: string;
145
+ };
146
+ type Version = {
147
+ major: number;
148
+ minor: number;
149
+ patch: number;
150
+ };
151
+ type LiveSystem = {
152
+ name: string;
153
+ fractalId: string;
154
+ fractalName: string;
155
+ version: Version;
156
+ boundedContext: OwnerRef;
157
+ environment: OwnerRef;
158
+ components: LiveSystemComponent[];
159
+ };
160
+ type ToLiveSystemArgs = {
161
+ name: string;
162
+ environment: OwnerRef; /** Per-component offer selection. Key = component id. */
163
+ select: Record<string, Offer>;
164
+ };
165
+ type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
166
+ /** From the blueprint slots, derive `{ [componentId]: ComponentTag }`. */
167
+ type IdToComponent<Slots> = UnionToIntersection<{ [K in keyof Slots]: Slots[K] extends ComponentNode<infer Id, infer Component> ? { [P in Id]: Component } : never }[keyof Slots]>;
168
+ /** Each component id requires an offer that satisfies that id's Component. */
169
+ type Selection<Slots> = { [Id in keyof IdToComponent<Slots>]: Offer<IdToComponent<Slots>[Id] & string> };
170
+ type TypedToLiveSystemArgs<Slots> = {
171
+ name: string;
172
+ environment: OwnerRef;
173
+ select: Selection<Slots>;
174
+ };
175
+ type OpFactories = Record<string, (...args: never[]) => Transform>;
176
+ type Specialized<Slots, Ops extends OpFactories> = { [K in keyof Ops]: (...args: Parameters<Ops[K]>) => Specialized<Slots, Ops> } & {
177
+ readonly value: FractalState;
178
+ readonly blueprint: Blueprint;
179
+ toLiveSystem: (args: TypedToLiveSystemArgs<Slots>) => LiveSystem;
180
+ };
181
+ type Fractal<Slots, Ops extends OpFactories> = {
182
+ readonly fractalId: string;
183
+ readonly blueprint: Blueprint;
184
+ readonly ops: Ops;
185
+ specialize: () => Specialized<Slots, Ops>;
186
+ toLiveSystem: (args: TypedToLiveSystemArgs<Slots>) => LiveSystem;
187
+ };
188
+ declare function createFractal<Slots extends Record<string, AnyNode>, Ops extends OpFactories>(def: {
189
+ id: string;
190
+ version: Version;
191
+ boundedContextId: OwnerRef;
192
+ description?: string;
193
+ blueprint: (bp: {
194
+ add: <N extends AnyNode>(n: N) => N;
195
+ /**
196
+ * Declare a runtime link: `source` links to `target` with optional settings
197
+ * (e.g. {fromPort, protocol} for a traffic rule; empty for security-group /
198
+ * network-policy membership). Blueprint owns all links — see docs/fractal-model.md.
199
+ */
200
+ link: (source: AnyNode, target: AnyNode, settings?: Record<string, unknown>) => void;
201
+ }) => Slots;
202
+ operations?: (slots: { [K in keyof Slots]: SlotOps }) => Ops;
203
+ }): Fractal<Slots, Ops>;
204
+ //#endregion
205
+ //#region src/model/service.d.ts
206
+ type Credentials = {
207
+ clientId: string;
208
+ clientSecret: string;
209
+ };
210
+ type DeployOptions = {
211
+ mode: 'wait' | 'fire-and-forget';
212
+ quiet?: boolean;
213
+ pollIntervalMs?: number;
214
+ timeoutMs?: number;
215
+ };
216
+ /** Deploy (create or update) a LiveSystem. `fire-and-forget` submits and returns;
217
+ * `wait` polls until Active (or failure/timeout) emitting wait-mode log lines. */
218
+ declare function deploy(ls: LiveSystem, creds: Credentials, opts?: DeployOptions): Promise<void>;
219
+ /** Destroy a deployed LiveSystem. */
220
+ declare function destroy(ls: LiveSystem, creds: Credentials): Promise<void>;
221
+ //#endregion
222
+ //#region src/model/components/network_and_compute.d.ts
223
+ type Rule = {
224
+ protocol?: string;
225
+ fromPort: number;
226
+ toPort?: number;
227
+ sourceCidr?: string;
228
+ };
229
+ type NodePool = {
230
+ name: string;
231
+ minNodeCount?: number;
232
+ maxNodeCount?: number;
233
+ autoscalingEnabled?: boolean;
234
+ };
235
+ type VirtualNetworkNode<Id extends string = string> = ComponentNode<Id, 'NetworkAndCompute.VirtualNetwork'> & {
236
+ withCidrBlock: (v: string) => VirtualNetworkNode<Id>;
237
+ withRegion: (v: string) => VirtualNetworkNode<Id>;
238
+ withTags: (v: Record<string, string>) => VirtualNetworkNode<Id>;
239
+ };
240
+ declare const VirtualNetwork: <const Id extends string>(cfg: {
241
+ id: Id;
242
+ }) => VirtualNetworkNode<Id>;
243
+ type SubnetNode<Id extends string = string> = ComponentNode<Id, 'NetworkAndCompute.Subnet'> & {
244
+ withCidrBlock: (v: string) => SubnetNode<Id>;
245
+ dependsOn: (other: AnyNode) => SubnetNode<Id>;
246
+ };
247
+ declare const Subnet: <const Id extends string>(cfg: {
248
+ id: Id;
249
+ }) => SubnetNode<Id>;
250
+ type SecurityGroupNode<Id extends string = string> = ComponentNode<Id, 'NetworkAndCompute.SecurityGroup'> & {
251
+ withIngressRules: (v: Rule[]) => SecurityGroupNode<Id>;
252
+ withEgressRules: (v: Rule[]) => SecurityGroupNode<Id>;
253
+ dependsOn: (other: AnyNode) => SecurityGroupNode<Id>;
254
+ };
255
+ declare const SecurityGroup: <const Id extends string>(cfg: {
256
+ id: Id;
257
+ }) => SecurityGroupNode<Id>;
258
+ type VirtualMachineNode<Id extends string = string> = ComponentNode<Id, 'NetworkAndCompute.VirtualMachine'> & {
259
+ withOsType: (v: 'linux' | 'windows') => VirtualMachineNode<Id>;
260
+ withSize: (v: string) => VirtualMachineNode<Id>;
261
+ withTags: (v: Record<string, string>) => VirtualMachineNode<Id>;
262
+ dependsOn: (other: AnyNode) => VirtualMachineNode<Id>;
263
+ };
264
+ declare const VirtualMachine: <const Id extends string>(cfg: {
265
+ id: Id;
266
+ }) => VirtualMachineNode<Id>;
267
+ type ContainerPlatformNode<Id extends string = string> = ComponentNode<Id, 'NetworkAndCompute.ContainerPlatform'> & {
268
+ withNodePools: (v: NodePool[]) => ContainerPlatformNode<Id>;
269
+ withKubernetesVersion: (v: string) => ContainerPlatformNode<Id>;
270
+ withNetworkPolicyProvider: (v: string) => ContainerPlatformNode<Id>;
271
+ dependsOn: (other: AnyNode) => ContainerPlatformNode<Id>;
272
+ };
273
+ declare const ContainerPlatform: <const Id extends string>(cfg: {
274
+ id: Id;
275
+ }) => ContainerPlatformNode<Id>;
276
+ type LoadBalancerNode<Id extends string = string> = ComponentNode<Id, 'NetworkAndCompute.LoadBalancer'> & {
277
+ withScheme: (v: 'internal' | 'internet-facing') => LoadBalancerNode<Id>;
278
+ dependsOn: (other: AnyNode) => LoadBalancerNode<Id>;
279
+ };
280
+ declare const LoadBalancer: <const Id extends string>(cfg: {
281
+ id: Id;
282
+ }) => LoadBalancerNode<Id>;
283
+ //#endregion
284
+ //#region src/model/components/storage.d.ts
285
+ type ObjectStorageNode<Id extends string = string> = ComponentNode<Id, 'Storage.ObjectStorage'> & {
286
+ withVersioningEnabled: (v: boolean) => ObjectStorageNode<Id>;
287
+ withStorageClass: (v: string) => ObjectStorageNode<Id>;
288
+ withPublicAccess: (v: boolean) => ObjectStorageNode<Id>;
289
+ withEncryption: (v: 'at-rest' | 'none') => ObjectStorageNode<Id>;
290
+ withRetentionDays: (v: number) => ObjectStorageNode<Id>;
291
+ withTags: (v: Record<string, string>) => ObjectStorageNode<Id>;
292
+ };
293
+ declare const ObjectStorage: <const Id extends string>(cfg: {
294
+ id: Id;
295
+ }) => ObjectStorageNode<Id>;
296
+ type RelationalDbmsNode<Id extends string = string> = ComponentNode<Id, 'Storage.RelationalDbms'> & {
297
+ withEngineVersion: (v: string) => RelationalDbmsNode<Id>;
298
+ withSizeTier: (v: string) => RelationalDbmsNode<Id>;
299
+ withStorageGb: (v: number) => RelationalDbmsNode<Id>;
300
+ withBackupRetentionDays: (v: number) => RelationalDbmsNode<Id>;
301
+ withHighAvailability: (v: string) => RelationalDbmsNode<Id>;
302
+ };
303
+ declare const RelationalDbms: <const Id extends string>(cfg: {
304
+ id: Id;
305
+ }) => RelationalDbmsNode<Id>;
306
+ type RelationalDatabaseNode<Id extends string = string> = ComponentNode<Id, 'Storage.RelationalDatabase'> & {
307
+ withCharset: (v: string) => RelationalDatabaseNode<Id>;
308
+ withCollation: (v: string) => RelationalDatabaseNode<Id>;
309
+ dependsOn: (other: AnyNode) => RelationalDatabaseNode<Id>;
310
+ };
311
+ declare const RelationalDatabase: <const Id extends string>(cfg: {
312
+ id: Id;
313
+ }) => RelationalDatabaseNode<Id>;
314
+ //#endregion
315
+ //#region src/model/components/big_data.d.ts
316
+ type ComputeClusterNode<Id extends string = string> = ComponentNode<Id, 'BigData.ComputeCluster'> & {
317
+ withClusterName: (v: string) => ComputeClusterNode<Id>;
318
+ withSparkVersion: (v: string) => ComputeClusterNode<Id>;
319
+ withMinWorkers: (v: number) => ComputeClusterNode<Id>;
320
+ withMaxWorkers: (v: number) => ComputeClusterNode<Id>;
321
+ withAutoTerminationMinutes: (v: number) => ComputeClusterNode<Id>;
322
+ withDataSecurityMode: (v: string) => ComputeClusterNode<Id>;
323
+ };
324
+ declare const ComputeCluster: <const Id extends string>(cfg: {
325
+ id: Id;
326
+ }) => ComputeClusterNode<Id>;
327
+ type DataProcessingJobNode<Id extends string = string> = ComponentNode<Id, 'BigData.DataProcessingJob'> & {
328
+ withJobName: (v: string) => DataProcessingJobNode<Id>;
329
+ withTaskType: (v: string) => DataProcessingJobNode<Id>;
330
+ withCronSchedule: (v: string) => DataProcessingJobNode<Id>;
331
+ withMaxRetries: (v: number) => DataProcessingJobNode<Id>;
332
+ dependsOn: (other: AnyNode) => DataProcessingJobNode<Id>;
333
+ };
334
+ declare const DataProcessingJob: <const Id extends string>(cfg: {
335
+ id: Id;
336
+ }) => DataProcessingJobNode<Id>;
337
+ type MlExperimentNode<Id extends string = string> = ComponentNode<Id, 'BigData.MlExperiment'> & {
338
+ withExperimentName: (v: string) => MlExperimentNode<Id>;
339
+ };
340
+ declare const MlExperiment: <const Id extends string>(cfg: {
341
+ id: Id;
342
+ }) => MlExperimentNode<Id>;
343
+ type DatalakeNode<Id extends string = string> = ComponentNode<Id, 'BigData.Datalake'> & {
344
+ withRegion: (v: string) => DatalakeNode<Id>;
345
+ withVersioningEnabled: (v: boolean) => DatalakeNode<Id>;
346
+ withRetentionDays: (v: number) => DatalakeNode<Id>;
347
+ };
348
+ declare const Datalake: <const Id extends string>(cfg: {
349
+ id: Id;
350
+ }) => DatalakeNode<Id>;
351
+ type DistributedDataProcessingNode<Id extends string = string> = ComponentNode<Id, 'BigData.DistributedDataProcessing'> & {
352
+ withWorkspaceName: (v: string) => DistributedDataProcessingNode<Id>;
353
+ };
354
+ declare const DistributedDataProcessing: <const Id extends string>(cfg: {
355
+ id: Id;
356
+ }) => DistributedDataProcessingNode<Id>;
357
+ //#endregion
358
+ //#region src/model/components/messaging.d.ts
359
+ type BrokerNode<Id extends string = string> = ComponentNode<Id, 'Messaging.Broker'> & {
360
+ withTier: (v: string) => BrokerNode<Id>;
361
+ withRegion: (v: string) => BrokerNode<Id>;
362
+ withEncryption: (v: 'at-rest' | 'none') => BrokerNode<Id>;
363
+ };
364
+ declare const Broker: <const Id extends string>(cfg: {
365
+ id: Id;
366
+ }) => BrokerNode<Id>;
367
+ type MessagingEntityNode<Id extends string = string> = ComponentNode<Id, 'Messaging.MessagingEntity'> & {
368
+ withMessageRetentionHours: (v: number) => MessagingEntityNode<Id>;
369
+ withPartitionCount: (v: number) => MessagingEntityNode<Id>;
370
+ withDeadLetterEnabled: (v: boolean) => MessagingEntityNode<Id>;
371
+ withMaxDeliveryAttempts: (v: number) => MessagingEntityNode<Id>;
372
+ dependsOn: (other: AnyNode) => MessagingEntityNode<Id>;
373
+ };
374
+ declare const MessagingEntity: <const Id extends string>(cfg: {
375
+ id: Id;
376
+ }) => MessagingEntityNode<Id>;
377
+ //#endregion
378
+ //#region src/model/components/api_management.d.ts
379
+ type Route = {
380
+ path: string;
381
+ methods?: string[];
382
+ upstream?: string;
383
+ };
384
+ type ApiGatewayNode<Id extends string = string> = ComponentNode<Id, 'APIManagement.ApiGateway'> & {
385
+ withHttpsOnly: (v: boolean) => ApiGatewayNode<Id>;
386
+ withCustomDomain: (v: string) => ApiGatewayNode<Id>;
387
+ withCors: (v: {
388
+ allowOrigins: string[];
389
+ }) => ApiGatewayNode<Id>;
390
+ withRateLimit: (v: {
391
+ requestsPerSecond: number;
392
+ }) => ApiGatewayNode<Id>;
393
+ withRoutes: (v: Route[]) => ApiGatewayNode<Id>;
394
+ };
395
+ declare const ApiGateway: <const Id extends string>(cfg: {
396
+ id: Id;
397
+ }) => ApiGatewayNode<Id>;
398
+ //#endregion
399
+ //#region src/model/components/observability.d.ts
400
+ type MonitoringNode<Id extends string = string> = ComponentNode<Id, 'Observability.Monitoring'> & {
401
+ withRetentionDays: (v: number) => MonitoringNode<Id>;
402
+ withScrapeInterval: (v: number) => MonitoringNode<Id>;
403
+ };
404
+ declare const Monitoring: <const Id extends string>(cfg: {
405
+ id: Id;
406
+ }) => MonitoringNode<Id>;
407
+ type TracingNode<Id extends string = string> = ComponentNode<Id, 'Observability.Tracing'> & {
408
+ withRetentionDays: (v: number) => TracingNode<Id>;
409
+ withSamplingRate: (v: number) => TracingNode<Id>;
410
+ };
411
+ declare const Tracing: <const Id extends string>(cfg: {
412
+ id: Id;
413
+ }) => TracingNode<Id>;
414
+ type LoggingNode<Id extends string = string> = ComponentNode<Id, 'Observability.Logging'> & {
415
+ withRetentionDays: (v: number) => LoggingNode<Id>;
416
+ };
417
+ declare const Logging: <const Id extends string>(cfg: {
418
+ id: Id;
419
+ }) => LoggingNode<Id>;
420
+ //#endregion
421
+ //#region src/model/components/security.d.ts
422
+ type ServiceMeshNode<Id extends string = string> = ComponentNode<Id, 'Security.ServiceMesh'> & {
423
+ withMtlsMode: (v: 'off' | 'permissive' | 'strict') => ServiceMeshNode<Id>;
424
+ withAuthenticationMode: (v: string) => ServiceMeshNode<Id>;
425
+ withTags: (v: Record<string, string>) => ServiceMeshNode<Id>;
426
+ };
427
+ declare const ServiceMesh: <const Id extends string>(cfg: {
428
+ id: Id;
429
+ }) => ServiceMeshNode<Id>;
430
+ type IdentityProviderNode<Id extends string = string> = ComponentNode<Id, 'Security.IdentityProvider'> & {
431
+ withUserDirectoryName: (v: string) => IdentityProviderNode<Id>;
432
+ withPasswordPolicy: (v: {
433
+ minLength: number;
434
+ }) => IdentityProviderNode<Id>;
435
+ withMfaConfiguration: (v: 'OFF' | 'OPTIONAL' | 'ON') => IdentityProviderNode<Id>;
436
+ withSessionDuration: (v: number) => IdentityProviderNode<Id>;
437
+ withTags: (v: Record<string, string>) => IdentityProviderNode<Id>;
438
+ };
439
+ declare const IdentityProvider: <const Id extends string>(cfg: {
440
+ id: Id;
441
+ }) => IdentityProviderNode<Id>;
442
+ //#endregion
443
+ //#region src/model/components/custom_workloads.d.ts
444
+ type WorkloadNode<Id extends string = string> = ComponentNode<Id, 'CustomWorkloads.Workload'> & {
445
+ withImage: (v: string) => WorkloadNode<Id>;
446
+ withPort: (v: number) => WorkloadNode<Id>;
447
+ withReplicas: (v: number) => WorkloadNode<Id>;
448
+ withEnv: (v: Record<string, string>) => WorkloadNode<Id>;
449
+ withCpuRequest: (v: string) => WorkloadNode<Id>;
450
+ withMemoryRequest: (v: string) => WorkloadNode<Id>;
451
+ withMaxReplicas: (v: number) => WorkloadNode<Id>;
452
+ withHealthCheck: (v: {
453
+ path: string;
454
+ port: number;
455
+ }) => WorkloadNode<Id>;
456
+ };
457
+ declare const Workload: <const Id extends string>(cfg: {
458
+ id: Id;
459
+ }) => WorkloadNode<Id>;
460
+ type FunctionNode<Id extends string = string> = ComponentNode<Id, 'CustomWorkloads.Function'> & {
461
+ withSourceArtifact: (v: string) => FunctionNode<Id>;
462
+ withRuntime: (v: string) => FunctionNode<Id>;
463
+ withEnvironment: (v: Record<string, string>) => FunctionNode<Id>;
464
+ withMemory: (v: number) => FunctionNode<Id>;
465
+ withTimeout: (v: number) => FunctionNode<Id>;
466
+ withConcurrency: (v: number) => FunctionNode<Id>;
467
+ };
468
+ declare const Function: <const Id extends string>(cfg: {
469
+ id: Id;
470
+ }) => FunctionNode<Id>;
471
+ //#endregion
472
+ //#region src/model/offers/network_and_compute.d.ts
473
+ declare const AwsVpc: (config: {}) => Offer<"NetworkAndCompute.VirtualNetwork", {}>;
474
+ declare const AzureVnet: (config: {}) => Offer<"NetworkAndCompute.VirtualNetwork", {}>;
475
+ declare const GcpVpc: (config: {}) => Offer<"NetworkAndCompute.VirtualNetwork", {}>;
476
+ declare const AwsSubnet: (config: {}) => Offer<"NetworkAndCompute.Subnet", {}>;
477
+ declare const AzureSubnet: (config: {}) => Offer<"NetworkAndCompute.Subnet", {}>;
478
+ declare const GcpSubnet: (config: {}) => Offer<"NetworkAndCompute.Subnet", {}>;
479
+ declare const AwsSecurityGroup: (config: {}) => Offer<"NetworkAndCompute.SecurityGroup", {}>;
480
+ declare const AzureNsg: (config: {
481
+ location: string;
482
+ resourceGroup: string;
483
+ }) => Offer<"NetworkAndCompute.SecurityGroup", {
484
+ location: string;
485
+ resourceGroup: string;
486
+ }>;
487
+ declare const GcpFirewall: (config: {}) => Offer<"NetworkAndCompute.SecurityGroup", {}>;
488
+ declare const Ec2Instance: (config: {
489
+ amiId: string;
490
+ instanceType: string;
491
+ }) => Offer<"NetworkAndCompute.VirtualMachine", {
492
+ amiId: string;
493
+ instanceType: string;
494
+ }>;
495
+ declare const AzureVm: (config: {
496
+ vmSize: string;
497
+ }) => Offer<"NetworkAndCompute.VirtualMachine", {
498
+ vmSize: string;
499
+ }>;
500
+ declare const GcpVm: (config: {
501
+ machineType: string;
502
+ }) => Offer<"NetworkAndCompute.VirtualMachine", {
503
+ machineType: string;
504
+ }>;
505
+ declare const VsphereVm: (config: {
506
+ template: string;
507
+ }) => Offer<"NetworkAndCompute.VirtualMachine", {
508
+ template: string;
509
+ }>;
510
+ declare const OpenshiftVm: (config: {}) => Offer<"NetworkAndCompute.VirtualMachine", {}>;
511
+ declare const Eks: (config: {}) => Offer<"NetworkAndCompute.ContainerPlatform", {}>;
512
+ declare const Aks: (config: {}) => Offer<"NetworkAndCompute.ContainerPlatform", {}>;
513
+ declare const Gke: (config: {}) => Offer<"NetworkAndCompute.ContainerPlatform", {}>;
514
+ declare const AwsLb: (config: {}) => Offer<"NetworkAndCompute.LoadBalancer", {}>;
515
+ declare const AzureLb: (config: {}) => Offer<"NetworkAndCompute.LoadBalancer", {}>;
516
+ declare const GcpGlb: (config: {}) => Offer<"NetworkAndCompute.LoadBalancer", {}>;
517
+ declare const OciVcn: (config: {}) => Offer<"NetworkAndCompute.VirtualNetwork", {}>;
518
+ declare const OciSubnet: (config: {
519
+ availabilityDomain?: string;
520
+ }) => Offer<"NetworkAndCompute.Subnet", {
521
+ availabilityDomain?: string;
522
+ }>;
523
+ declare const OciSecurityList: (config: {
524
+ compartmentId: string;
525
+ }) => Offer<"NetworkAndCompute.SecurityGroup", {
526
+ compartmentId: string;
527
+ }>;
528
+ declare const OciInstance: (config: {
529
+ shape: string;
530
+ }) => Offer<"NetworkAndCompute.VirtualMachine", {
531
+ shape: string;
532
+ }>;
533
+ declare const HetznerNetwork: (config: {}) => Offer<"NetworkAndCompute.VirtualNetwork", {}>;
534
+ declare const HetznerSubnet: (config: {
535
+ networkZone?: string;
536
+ }) => Offer<"NetworkAndCompute.Subnet", {
537
+ networkZone?: string;
538
+ }>;
539
+ declare const HetznerFirewall: (config: {}) => Offer<"NetworkAndCompute.SecurityGroup", {}>;
540
+ declare const HetznerServer: (config: {
541
+ serverType: string;
542
+ }) => Offer<"NetworkAndCompute.VirtualMachine", {
543
+ serverType: string;
544
+ }>;
545
+ declare const VspherePortGroup: (config: {
546
+ dvSwitchName?: string;
547
+ }) => Offer<"NetworkAndCompute.VirtualNetwork", {
548
+ dvSwitchName?: string;
549
+ }>;
550
+ declare const VsphereVlan: (config: {
551
+ vlanId?: number;
552
+ }) => Offer<"NetworkAndCompute.Subnet", {
553
+ vlanId?: number;
554
+ }>;
555
+ declare const OpenshiftSecurityGroup: (config: {
556
+ name?: string;
557
+ }) => Offer<"NetworkAndCompute.SecurityGroup", {
558
+ name?: string;
559
+ }>;
560
+ declare const OpenshiftService: (config: {}) => Offer<"NetworkAndCompute.LoadBalancer", {}>;
561
+ //#endregion
562
+ //#region src/model/offers/storage.d.ts
563
+ declare const AwsS3: (config: {
564
+ bucketRegion: string;
565
+ }) => Offer<"Storage.ObjectStorage", {
566
+ bucketRegion: string;
567
+ }>;
568
+ declare const AzureBlob: (config: {
569
+ accountTier: string;
570
+ }) => Offer<"Storage.ObjectStorage", {
571
+ accountTier: string;
572
+ }>;
573
+ declare const GcsBucket: (config: {
574
+ location: string;
575
+ }) => Offer<"Storage.ObjectStorage", {
576
+ location: string;
577
+ }>;
578
+ declare const MinIO: (config: {
579
+ storageClass?: string;
580
+ }) => Offer<"Storage.ObjectStorage", {
581
+ storageClass?: string;
582
+ }>;
583
+ declare const AzurePostgresDbms: (config: {
584
+ resourceGroup: string;
585
+ }) => Offer<"Storage.RelationalDbms", {
586
+ resourceGroup: string;
587
+ }>;
588
+ declare const GcpPostgresDbms: (config: {
589
+ tier: string;
590
+ }) => Offer<"Storage.RelationalDbms", {
591
+ tier: string;
592
+ }>;
593
+ declare const ArubaMySqlDbms: (config: {
594
+ region: string;
595
+ }) => Offer<"Storage.RelationalDbms", {
596
+ region: string;
597
+ }>;
598
+ declare const AzurePostgresDatabase: (config: {}) => Offer<"Storage.RelationalDatabase", {}>;
599
+ declare const GcpPostgresDatabase: (config: {}) => Offer<"Storage.RelationalDatabase", {}>;
600
+ declare const OpenshiftPersistentVolume: (config: {
601
+ storageSize?: string;
602
+ storageClassName?: string;
603
+ }) => Offer<"Storage.ObjectStorage", {
604
+ storageSize?: string;
605
+ storageClassName?: string;
606
+ }>;
607
+ //#endregion
608
+ //#region src/model/offers/big_data.d.ts
609
+ declare const AwsDatabricksCluster: (config: Record<string, never>) => Offer<"BigData.ComputeCluster", Record<string, never>>;
610
+ declare const AzureDatabricksCluster: (config: Record<string, never>) => Offer<"BigData.ComputeCluster", Record<string, never>>;
611
+ declare const GcpDatabricksCluster: (config: Record<string, never>) => Offer<"BigData.ComputeCluster", Record<string, never>>;
612
+ declare const CaaSSparkCluster: (config: Record<string, never>) => Offer<"BigData.ComputeCluster", Record<string, never>>;
613
+ declare const AwsDatabricksJob: (config: Record<string, never>) => Offer<"BigData.DataProcessingJob", Record<string, never>>;
614
+ declare const AzureDatabricksJob: (config: Record<string, never>) => Offer<"BigData.DataProcessingJob", Record<string, never>>;
615
+ declare const GcpDatabricksJob: (config: Record<string, never>) => Offer<"BigData.DataProcessingJob", Record<string, never>>;
616
+ declare const CaaSSparkJob: (config: Record<string, never>) => Offer<"BigData.DataProcessingJob", Record<string, never>>;
617
+ declare const AwsDatabricksMlflow: (config: Record<string, never>) => Offer<"BigData.MlExperiment", Record<string, never>>;
618
+ declare const AzureDatabricksMlflow: (config: Record<string, never>) => Offer<"BigData.MlExperiment", Record<string, never>>;
619
+ declare const GcpDatabricksMlflow: (config: Record<string, never>) => Offer<"BigData.MlExperiment", Record<string, never>>;
620
+ declare const CaaSMlflow: (config: Record<string, never>) => Offer<"BigData.MlExperiment", Record<string, never>>;
621
+ declare const AwsS3Datalake: (config: {
622
+ bucket: string;
623
+ }) => Offer<"BigData.Datalake", {
624
+ bucket: string;
625
+ }>;
626
+ declare const AzureDatalake: (config: {
627
+ resourceGroup: string;
628
+ }) => Offer<"BigData.Datalake", {
629
+ resourceGroup: string;
630
+ }>;
631
+ declare const GcpDatalake: (config: {
632
+ bucketName: string;
633
+ }) => Offer<"BigData.Datalake", {
634
+ bucketName: string;
635
+ }>;
636
+ declare const AwsDatabricks: (config: {
637
+ pricingTier: string;
638
+ }) => Offer<"BigData.DistributedDataProcessing", {
639
+ pricingTier: string;
640
+ }>;
641
+ declare const AzureDatabricks: (config: {
642
+ pricingTier: string;
643
+ }) => Offer<"BigData.DistributedDataProcessing", {
644
+ pricingTier: string;
645
+ }>;
646
+ declare const GcpDatabricks: (config: {
647
+ pricingTier: string;
648
+ }) => Offer<"BigData.DistributedDataProcessing", {
649
+ pricingTier: string;
650
+ }>;
651
+ //#endregion
652
+ //#region src/model/offers/messaging.d.ts
653
+ declare const AzureServiceBus: (config: {
654
+ resourceGroup: string;
655
+ }) => Offer<"Messaging.Broker", {
656
+ resourceGroup: string;
657
+ }>;
658
+ declare const GcpPubSub: (config: Record<string, never>) => Offer<"Messaging.Broker", Record<string, never>>;
659
+ /** Vendor-neutral self-hosted Kafka — no `provider`. */
660
+ declare const Kafka: (config: {
661
+ namespace?: string;
662
+ }) => Offer<"Messaging.Broker", {
663
+ namespace?: string;
664
+ }>;
665
+ declare const AzureServiceBusTopic: (config: Record<string, never>) => Offer<"Messaging.MessagingEntity", Record<string, never>>;
666
+ declare const GcpPubSubTopic: (config: Record<string, never>) => Offer<"Messaging.MessagingEntity", Record<string, never>>;
667
+ /** Vendor-neutral self-hosted Kafka topic — no `provider`. */
668
+ declare const KafkaTopic: (config: Record<string, never>) => Offer<"Messaging.MessagingEntity", Record<string, never>>;
669
+ //#endregion
670
+ //#region src/model/offers/api_management.d.ts
671
+ declare const AwsCloudFront: (config: {
672
+ region: string;
673
+ }) => Offer<"APIManagement.ApiGateway", {
674
+ region: string;
675
+ }>;
676
+ declare const AzureApiManagement: (config: {
677
+ publisherEmail: string;
678
+ sku: string;
679
+ }) => Offer<"APIManagement.ApiGateway", {
680
+ publisherEmail: string;
681
+ sku: string;
682
+ }>;
683
+ declare const GcpApiGateway: (config: {}) => Offer<"APIManagement.ApiGateway", {}>;
684
+ declare const Ambassador: (config: {
685
+ namespace?: string;
686
+ }) => Offer<"APIManagement.ApiGateway", {
687
+ namespace?: string;
688
+ }>;
689
+ declare const Traefik: (config: {
690
+ namespace?: string;
691
+ }) => Offer<"APIManagement.ApiGateway", {
692
+ namespace?: string;
693
+ }>;
694
+ //#endregion
695
+ //#region src/model/offers/observability.d.ts
696
+ declare const Prometheus: (config: {
697
+ namespace?: string;
698
+ }) => Offer<"Observability.Monitoring", {
699
+ namespace?: string;
700
+ }>;
701
+ declare const Jaeger: (config: {
702
+ namespace?: string;
703
+ }) => Offer<"Observability.Tracing", {
704
+ namespace?: string;
705
+ }>;
706
+ declare const ObservabilityElastic: (config: {
707
+ namespace?: string;
708
+ elasticVersion?: string;
709
+ }) => Offer<"Observability.Logging", {
710
+ namespace?: string;
711
+ elasticVersion?: string;
712
+ }>;
713
+ //#endregion
714
+ //#region src/model/offers/security.d.ts
715
+ declare const Ocelot: (config: {
716
+ namespace?: string;
717
+ }) => Offer<"Security.ServiceMesh", {
718
+ namespace?: string;
719
+ }>;
720
+ declare const Cognito: (config: {}) => Offer<"Security.IdentityProvider", {}>;
721
+ declare const Keycloak: (config: {
722
+ namespace?: string;
723
+ }) => Offer<"Security.IdentityProvider", {
724
+ namespace?: string;
725
+ }>;
726
+ //#endregion
727
+ //#region src/model/offers/custom_workloads.d.ts
728
+ declare const EcsService: (config: {
729
+ launchType: string;
730
+ }) => Offer<"CustomWorkloads.Workload", {
731
+ launchType: string;
732
+ }>;
733
+ declare const CloudRun: (config: {
734
+ region: string;
735
+ }) => Offer<"CustomWorkloads.Workload", {
736
+ region: string;
737
+ }>;
738
+ declare const AzureContainerApp: (config: {
739
+ resourceGroup: string;
740
+ }) => Offer<"CustomWorkloads.Workload", {
741
+ resourceGroup: string;
742
+ }>;
743
+ declare const OpenshiftWorkload: (config: {
744
+ namespace?: string;
745
+ }) => Offer<"CustomWorkloads.Workload", {
746
+ namespace?: string;
747
+ }>;
748
+ declare const K8sWorkload: (config: {
749
+ namespace?: string;
750
+ }) => Offer<"CustomWorkloads.Workload", {
751
+ namespace?: string;
752
+ }>;
753
+ declare const AwsLambda: (config: {
754
+ roleArn: string;
755
+ handler: string;
756
+ }) => Offer<"CustomWorkloads.Function", {
757
+ roleArn: string;
758
+ handler: string;
759
+ }>;
760
+ declare const AzureFunction: (config: Record<string, never>) => Offer<"CustomWorkloads.Function", Record<string, never>>;
761
+ declare const GcpFunction: (config: {
762
+ entryPoint: string;
763
+ }) => Offer<"CustomWorkloads.Function", {
764
+ entryPoint: string;
765
+ }>;
766
+ //#endregion
767
+ export { Aks, Ambassador, AnyNode, ApiGateway, ApiGatewayNode, ArubaMySqlDbms, AwsCloudFront, AwsDatabricks, AwsDatabricksCluster, AwsDatabricksJob, AwsDatabricksMlflow, AwsLambda, AwsLb, AwsS3, AwsS3Datalake, AwsSecurityGroup, AwsSubnet, AwsVpc, AzureApiManagement, AzureBlob, AzureContainerApp, AzureDatabricks, AzureDatabricksCluster, AzureDatabricksJob, AzureDatabricksMlflow, AzureDatalake, AzureFunction, AzureLb, AzureNsg, AzurePostgresDatabase, AzurePostgresDbms, AzureServiceBus, AzureServiceBusTopic, AzureSubnet, AzureVm, AzureVnet, Blueprint, Broker, BrokerNode, CaaSMlflow, CaaSSparkCluster, CaaSSparkJob, ChildContext, CloudRun, Cognito, ComponentLink, ComponentNode, ComputeCluster, ComputeClusterNode, ContainerPlatform, ContainerPlatformNode, Credentials, DataProcessingJob, DataProcessingJobNode, Datalake, DatalakeNode, DeliveryModel, DeployOptions, DistributedDataProcessing, DistributedDataProcessingNode, Ec2Instance, EcsService, Eks, Fractal, Function, FunctionNode, GcpApiGateway, GcpDatabricks, GcpDatabricksCluster, GcpDatabricksJob, GcpDatabricksMlflow, GcpDatalake, GcpFirewall, GcpFunction, GcpGlb, GcpPostgresDatabase, GcpPostgresDbms, GcpPubSub, GcpPubSubTopic, GcpSubnet, GcpVm, GcpVpc, GcsBucket, Gke, HetznerFirewall, HetznerNetwork, HetznerServer, HetznerSubnet, IdentityProvider, IdentityProviderNode, InstantiationContext, Jaeger, K8sWorkload, Kafka, KafkaTopic, Keycloak, LiveSystem, LiveSystemComponent, LoadBalancer, LoadBalancerNode, Logging, LoggingNode, MessagingEntity, MessagingEntityNode, MinIO, MlExperiment, MlExperimentNode, Monitoring, MonitoringNode, NodePool, NodeState, ObjectStorage, ObjectStorageNode, ObservabilityElastic, Ocelot, OciInstance, OciSecurityList, OciSubnet, OciVcn, Offer, OpenshiftPersistentVolume, OpenshiftSecurityGroup, OpenshiftService, OpenshiftVm, OpenshiftWorkload, OwnerRef, Prometheus, Provider, RelationalDatabase, RelationalDatabaseNode, RelationalDbms, RelationalDbmsNode, Route, Rule, SecurityGroup, SecurityGroupNode, Selection, SerializedComponent, ServiceMesh, ServiceMeshNode, SlotOps, Subnet, SubnetNode, ToLiveSystemArgs, Tracing, TracingNode, Traefik, TypedToLiveSystemArgs, Version, VirtualMachine, VirtualMachineNode, VirtualNetwork, VirtualNetworkNode, VspherePortGroup, VsphereVlan, VsphereVm, Workload, WorkloadNode, addDependency, createFractal, defineOffer, deploy, destroy, guardrail, newNode };