@lssm/example.saas-boilerplate 0.0.0-canary-20251217054315 → 0.0.0-canary-20251217060433

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,418 @@
1
+ import * as _lssm_lib_schema168 from "@lssm/lib.schema";
2
+ import * as _lssm_lib_contracts6 from "@lssm/lib.contracts";
3
+
4
+ //#region src/project/project.contracts.d.ts
5
+ /**
6
+ * Create a new project.
7
+ */
8
+ declare const CreateProjectContract: _lssm_lib_contracts6.ContractSpec<_lssm_lib_schema168.SchemaModel<{
9
+ name: {
10
+ type: _lssm_lib_schema168.FieldType<string, string>;
11
+ isOptional: false;
12
+ };
13
+ description: {
14
+ type: _lssm_lib_schema168.FieldType<string, string>;
15
+ isOptional: true;
16
+ };
17
+ slug: {
18
+ type: _lssm_lib_schema168.FieldType<string, string>;
19
+ isOptional: true;
20
+ };
21
+ isPublic: {
22
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
23
+ isOptional: true;
24
+ };
25
+ tags: {
26
+ type: _lssm_lib_schema168.FieldType<string, string>;
27
+ isArray: true;
28
+ isOptional: true;
29
+ };
30
+ }>, _lssm_lib_schema168.SchemaModel<{
31
+ id: {
32
+ type: _lssm_lib_schema168.FieldType<string, string>;
33
+ isOptional: false;
34
+ };
35
+ name: {
36
+ type: _lssm_lib_schema168.FieldType<string, string>;
37
+ isOptional: false;
38
+ };
39
+ description: {
40
+ type: _lssm_lib_schema168.FieldType<string, string>;
41
+ isOptional: true;
42
+ };
43
+ slug: {
44
+ type: _lssm_lib_schema168.FieldType<string, string>;
45
+ isOptional: true;
46
+ };
47
+ organizationId: {
48
+ type: _lssm_lib_schema168.FieldType<string, string>;
49
+ isOptional: false;
50
+ };
51
+ createdBy: {
52
+ type: _lssm_lib_schema168.FieldType<string, string>;
53
+ isOptional: false;
54
+ };
55
+ status: {
56
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
57
+ isOptional: false;
58
+ };
59
+ isPublic: {
60
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
61
+ isOptional: false;
62
+ };
63
+ tags: {
64
+ type: _lssm_lib_schema168.FieldType<string, string>;
65
+ isArray: true;
66
+ isOptional: false;
67
+ };
68
+ createdAt: {
69
+ type: _lssm_lib_schema168.FieldType<Date, string>;
70
+ isOptional: false;
71
+ };
72
+ updatedAt: {
73
+ type: _lssm_lib_schema168.FieldType<Date, string>;
74
+ isOptional: false;
75
+ };
76
+ }>, {
77
+ name: string;
78
+ version: number;
79
+ when: string;
80
+ payload: _lssm_lib_schema168.SchemaModel<{
81
+ id: {
82
+ type: _lssm_lib_schema168.FieldType<string, string>;
83
+ isOptional: false;
84
+ };
85
+ name: {
86
+ type: _lssm_lib_schema168.FieldType<string, string>;
87
+ isOptional: false;
88
+ };
89
+ description: {
90
+ type: _lssm_lib_schema168.FieldType<string, string>;
91
+ isOptional: true;
92
+ };
93
+ slug: {
94
+ type: _lssm_lib_schema168.FieldType<string, string>;
95
+ isOptional: true;
96
+ };
97
+ organizationId: {
98
+ type: _lssm_lib_schema168.FieldType<string, string>;
99
+ isOptional: false;
100
+ };
101
+ createdBy: {
102
+ type: _lssm_lib_schema168.FieldType<string, string>;
103
+ isOptional: false;
104
+ };
105
+ status: {
106
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
107
+ isOptional: false;
108
+ };
109
+ isPublic: {
110
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
111
+ isOptional: false;
112
+ };
113
+ tags: {
114
+ type: _lssm_lib_schema168.FieldType<string, string>;
115
+ isArray: true;
116
+ isOptional: false;
117
+ };
118
+ createdAt: {
119
+ type: _lssm_lib_schema168.FieldType<Date, string>;
120
+ isOptional: false;
121
+ };
122
+ updatedAt: {
123
+ type: _lssm_lib_schema168.FieldType<Date, string>;
124
+ isOptional: false;
125
+ };
126
+ }>;
127
+ }[]>;
128
+ /**
129
+ * Get project by ID.
130
+ */
131
+ declare const GetProjectContract: _lssm_lib_contracts6.ContractSpec<_lssm_lib_schema168.SchemaModel<{
132
+ projectId: {
133
+ type: _lssm_lib_schema168.FieldType<string, string>;
134
+ isOptional: false;
135
+ };
136
+ }>, _lssm_lib_schema168.SchemaModel<{
137
+ id: {
138
+ type: _lssm_lib_schema168.FieldType<string, string>;
139
+ isOptional: false;
140
+ };
141
+ name: {
142
+ type: _lssm_lib_schema168.FieldType<string, string>;
143
+ isOptional: false;
144
+ };
145
+ description: {
146
+ type: _lssm_lib_schema168.FieldType<string, string>;
147
+ isOptional: true;
148
+ };
149
+ slug: {
150
+ type: _lssm_lib_schema168.FieldType<string, string>;
151
+ isOptional: true;
152
+ };
153
+ organizationId: {
154
+ type: _lssm_lib_schema168.FieldType<string, string>;
155
+ isOptional: false;
156
+ };
157
+ createdBy: {
158
+ type: _lssm_lib_schema168.FieldType<string, string>;
159
+ isOptional: false;
160
+ };
161
+ status: {
162
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
163
+ isOptional: false;
164
+ };
165
+ isPublic: {
166
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
167
+ isOptional: false;
168
+ };
169
+ tags: {
170
+ type: _lssm_lib_schema168.FieldType<string, string>;
171
+ isArray: true;
172
+ isOptional: false;
173
+ };
174
+ createdAt: {
175
+ type: _lssm_lib_schema168.FieldType<Date, string>;
176
+ isOptional: false;
177
+ };
178
+ updatedAt: {
179
+ type: _lssm_lib_schema168.FieldType<Date, string>;
180
+ isOptional: false;
181
+ };
182
+ }>, undefined>;
183
+ /**
184
+ * Update a project.
185
+ */
186
+ declare const UpdateProjectContract: _lssm_lib_contracts6.ContractSpec<_lssm_lib_schema168.SchemaModel<{
187
+ projectId: {
188
+ type: _lssm_lib_schema168.FieldType<string, string>;
189
+ isOptional: false;
190
+ };
191
+ name: {
192
+ type: _lssm_lib_schema168.FieldType<string, string>;
193
+ isOptional: true;
194
+ };
195
+ description: {
196
+ type: _lssm_lib_schema168.FieldType<string, string>;
197
+ isOptional: true;
198
+ };
199
+ slug: {
200
+ type: _lssm_lib_schema168.FieldType<string, string>;
201
+ isOptional: true;
202
+ };
203
+ isPublic: {
204
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
205
+ isOptional: true;
206
+ };
207
+ tags: {
208
+ type: _lssm_lib_schema168.FieldType<string, string>;
209
+ isArray: true;
210
+ isOptional: true;
211
+ };
212
+ status: {
213
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
214
+ isOptional: true;
215
+ };
216
+ }>, _lssm_lib_schema168.SchemaModel<{
217
+ id: {
218
+ type: _lssm_lib_schema168.FieldType<string, string>;
219
+ isOptional: false;
220
+ };
221
+ name: {
222
+ type: _lssm_lib_schema168.FieldType<string, string>;
223
+ isOptional: false;
224
+ };
225
+ description: {
226
+ type: _lssm_lib_schema168.FieldType<string, string>;
227
+ isOptional: true;
228
+ };
229
+ slug: {
230
+ type: _lssm_lib_schema168.FieldType<string, string>;
231
+ isOptional: true;
232
+ };
233
+ organizationId: {
234
+ type: _lssm_lib_schema168.FieldType<string, string>;
235
+ isOptional: false;
236
+ };
237
+ createdBy: {
238
+ type: _lssm_lib_schema168.FieldType<string, string>;
239
+ isOptional: false;
240
+ };
241
+ status: {
242
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
243
+ isOptional: false;
244
+ };
245
+ isPublic: {
246
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
247
+ isOptional: false;
248
+ };
249
+ tags: {
250
+ type: _lssm_lib_schema168.FieldType<string, string>;
251
+ isArray: true;
252
+ isOptional: false;
253
+ };
254
+ createdAt: {
255
+ type: _lssm_lib_schema168.FieldType<Date, string>;
256
+ isOptional: false;
257
+ };
258
+ updatedAt: {
259
+ type: _lssm_lib_schema168.FieldType<Date, string>;
260
+ isOptional: false;
261
+ };
262
+ }>, {
263
+ name: string;
264
+ version: number;
265
+ when: string;
266
+ payload: _lssm_lib_schema168.SchemaModel<{
267
+ id: {
268
+ type: _lssm_lib_schema168.FieldType<string, string>;
269
+ isOptional: false;
270
+ };
271
+ name: {
272
+ type: _lssm_lib_schema168.FieldType<string, string>;
273
+ isOptional: false;
274
+ };
275
+ description: {
276
+ type: _lssm_lib_schema168.FieldType<string, string>;
277
+ isOptional: true;
278
+ };
279
+ slug: {
280
+ type: _lssm_lib_schema168.FieldType<string, string>;
281
+ isOptional: true;
282
+ };
283
+ organizationId: {
284
+ type: _lssm_lib_schema168.FieldType<string, string>;
285
+ isOptional: false;
286
+ };
287
+ createdBy: {
288
+ type: _lssm_lib_schema168.FieldType<string, string>;
289
+ isOptional: false;
290
+ };
291
+ status: {
292
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
293
+ isOptional: false;
294
+ };
295
+ isPublic: {
296
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
297
+ isOptional: false;
298
+ };
299
+ tags: {
300
+ type: _lssm_lib_schema168.FieldType<string, string>;
301
+ isArray: true;
302
+ isOptional: false;
303
+ };
304
+ createdAt: {
305
+ type: _lssm_lib_schema168.FieldType<Date, string>;
306
+ isOptional: false;
307
+ };
308
+ updatedAt: {
309
+ type: _lssm_lib_schema168.FieldType<Date, string>;
310
+ isOptional: false;
311
+ };
312
+ }>;
313
+ }[]>;
314
+ /**
315
+ * Delete a project.
316
+ */
317
+ declare const DeleteProjectContract: _lssm_lib_contracts6.ContractSpec<_lssm_lib_schema168.SchemaModel<{
318
+ projectId: {
319
+ type: _lssm_lib_schema168.FieldType<string, string>;
320
+ isOptional: false;
321
+ };
322
+ }>, _lssm_lib_schema168.SchemaModel<{
323
+ success: {
324
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
325
+ isOptional: false;
326
+ };
327
+ }>, {
328
+ name: string;
329
+ version: number;
330
+ when: string;
331
+ payload: _lssm_lib_schema168.SchemaModel<{
332
+ projectId: {
333
+ type: _lssm_lib_schema168.FieldType<string, string>;
334
+ isOptional: false;
335
+ };
336
+ }>;
337
+ }[]>;
338
+ /**
339
+ * List organization projects.
340
+ */
341
+ declare const ListProjectsContract: _lssm_lib_contracts6.ContractSpec<_lssm_lib_schema168.SchemaModel<{
342
+ status: {
343
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
344
+ isOptional: true;
345
+ };
346
+ search: {
347
+ type: _lssm_lib_schema168.FieldType<string, string>;
348
+ isOptional: true;
349
+ };
350
+ limit: {
351
+ type: _lssm_lib_schema168.FieldType<number, number>;
352
+ isOptional: true;
353
+ defaultValue: number;
354
+ };
355
+ offset: {
356
+ type: _lssm_lib_schema168.FieldType<number, number>;
357
+ isOptional: true;
358
+ defaultValue: number;
359
+ };
360
+ }>, _lssm_lib_schema168.SchemaModel<{
361
+ projects: {
362
+ type: _lssm_lib_schema168.SchemaModel<{
363
+ id: {
364
+ type: _lssm_lib_schema168.FieldType<string, string>;
365
+ isOptional: false;
366
+ };
367
+ name: {
368
+ type: _lssm_lib_schema168.FieldType<string, string>;
369
+ isOptional: false;
370
+ };
371
+ description: {
372
+ type: _lssm_lib_schema168.FieldType<string, string>;
373
+ isOptional: true;
374
+ };
375
+ slug: {
376
+ type: _lssm_lib_schema168.FieldType<string, string>;
377
+ isOptional: true;
378
+ };
379
+ organizationId: {
380
+ type: _lssm_lib_schema168.FieldType<string, string>;
381
+ isOptional: false;
382
+ };
383
+ createdBy: {
384
+ type: _lssm_lib_schema168.FieldType<string, string>;
385
+ isOptional: false;
386
+ };
387
+ status: {
388
+ type: _lssm_lib_schema168.EnumType<[string, string, string, string]>;
389
+ isOptional: false;
390
+ };
391
+ isPublic: {
392
+ type: _lssm_lib_schema168.FieldType<boolean, boolean>;
393
+ isOptional: false;
394
+ };
395
+ tags: {
396
+ type: _lssm_lib_schema168.FieldType<string, string>;
397
+ isArray: true;
398
+ isOptional: false;
399
+ };
400
+ createdAt: {
401
+ type: _lssm_lib_schema168.FieldType<Date, string>;
402
+ isOptional: false;
403
+ };
404
+ updatedAt: {
405
+ type: _lssm_lib_schema168.FieldType<Date, string>;
406
+ isOptional: false;
407
+ };
408
+ }>;
409
+ isArray: true;
410
+ isOptional: false;
411
+ };
412
+ total: {
413
+ type: _lssm_lib_schema168.FieldType<number, number>;
414
+ isOptional: false;
415
+ };
416
+ }>, undefined>;
417
+ //#endregion
418
+ export { CreateProjectContract, DeleteProjectContract, GetProjectContract, ListProjectsContract, UpdateProjectContract };
@@ -0,0 +1,39 @@
1
+ import * as _lssm_lib_schema347 from "@lssm/lib.schema";
2
+
3
+ //#region src/project/project.entity.d.ts
4
+ /**
5
+ * Project status enum for entities.
6
+ */
7
+ declare const ProjectStatusEnum: _lssm_lib_schema347.EntityEnumDef;
8
+ /**
9
+ * Project entity - team-scoped work container.
10
+ */
11
+ declare const ProjectEntity: _lssm_lib_schema347.EntitySpec<{
12
+ id: _lssm_lib_schema347.EntityScalarField;
13
+ name: _lssm_lib_schema347.EntityScalarField;
14
+ description: _lssm_lib_schema347.EntityScalarField;
15
+ slug: _lssm_lib_schema347.EntityScalarField;
16
+ organizationId: _lssm_lib_schema347.EntityScalarField;
17
+ createdBy: _lssm_lib_schema347.EntityScalarField;
18
+ status: _lssm_lib_schema347.EntityEnumField;
19
+ isPublic: _lssm_lib_schema347.EntityScalarField;
20
+ settings: _lssm_lib_schema347.EntityScalarField;
21
+ tags: _lssm_lib_schema347.EntityScalarField;
22
+ metadata: _lssm_lib_schema347.EntityScalarField;
23
+ createdAt: _lssm_lib_schema347.EntityScalarField;
24
+ updatedAt: _lssm_lib_schema347.EntityScalarField;
25
+ archivedAt: _lssm_lib_schema347.EntityScalarField;
26
+ }>;
27
+ /**
28
+ * ProjectMember entity - project-level access.
29
+ */
30
+ declare const ProjectMemberEntity: _lssm_lib_schema347.EntitySpec<{
31
+ id: _lssm_lib_schema347.EntityScalarField;
32
+ projectId: _lssm_lib_schema347.EntityScalarField;
33
+ userId: _lssm_lib_schema347.EntityScalarField;
34
+ role: _lssm_lib_schema347.EntityScalarField;
35
+ addedBy: _lssm_lib_schema347.EntityScalarField;
36
+ createdAt: _lssm_lib_schema347.EntityScalarField;
37
+ }>;
38
+ //#endregion
39
+ export { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum };
@@ -0,0 +1,15 @@
1
+ import * as _lssm_lib_schema271 from "@lssm/lib.schema";
2
+
3
+ //#region src/project/project.enum.d.ts
4
+
5
+ /**
6
+ * Project status enum for contract schemas.
7
+ * Note: Entity enum is defined separately in project.entity.ts
8
+ */
9
+ declare const ProjectStatusSchemaEnum: _lssm_lib_schema271.EnumType<[string, string, string, string]>;
10
+ /**
11
+ * Project status filter enum (includes 'all' option).
12
+ */
13
+ declare const ProjectStatusFilterEnum: _lssm_lib_schema271.EnumType<[string, string, string, string]>;
14
+ //#endregion
15
+ export { ProjectStatusFilterEnum, ProjectStatusSchemaEnum };
@@ -0,0 +1,91 @@
1
+ import * as _lssm_lib_schema273 from "@lssm/lib.schema";
2
+ import * as _lssm_lib_contracts11 from "@lssm/lib.contracts";
3
+
4
+ //#region src/project/project.event.d.ts
5
+ /**
6
+ * Event: A new project has been created.
7
+ */
8
+ declare const ProjectCreatedEvent: _lssm_lib_contracts11.EventSpec<_lssm_lib_schema273.SchemaModel<{
9
+ projectId: {
10
+ type: _lssm_lib_schema273.FieldType<string, string>;
11
+ isOptional: false;
12
+ };
13
+ name: {
14
+ type: _lssm_lib_schema273.FieldType<string, string>;
15
+ isOptional: false;
16
+ };
17
+ organizationId: {
18
+ type: _lssm_lib_schema273.FieldType<string, string>;
19
+ isOptional: false;
20
+ };
21
+ createdBy: {
22
+ type: _lssm_lib_schema273.FieldType<string, string>;
23
+ isOptional: false;
24
+ };
25
+ createdAt: {
26
+ type: _lssm_lib_schema273.FieldType<Date, string>;
27
+ isOptional: false;
28
+ };
29
+ }>>;
30
+ /**
31
+ * Event: A project has been updated.
32
+ */
33
+ declare const ProjectUpdatedEvent: _lssm_lib_contracts11.EventSpec<_lssm_lib_schema273.SchemaModel<{
34
+ projectId: {
35
+ type: _lssm_lib_schema273.FieldType<string, string>;
36
+ isOptional: false;
37
+ };
38
+ updatedFields: {
39
+ type: _lssm_lib_schema273.FieldType<string, string>;
40
+ isArray: true;
41
+ isOptional: false;
42
+ };
43
+ updatedBy: {
44
+ type: _lssm_lib_schema273.FieldType<string, string>;
45
+ isOptional: false;
46
+ };
47
+ updatedAt: {
48
+ type: _lssm_lib_schema273.FieldType<Date, string>;
49
+ isOptional: false;
50
+ };
51
+ }>>;
52
+ /**
53
+ * Event: A project has been deleted.
54
+ */
55
+ declare const ProjectDeletedEvent: _lssm_lib_contracts11.EventSpec<_lssm_lib_schema273.SchemaModel<{
56
+ projectId: {
57
+ type: _lssm_lib_schema273.FieldType<string, string>;
58
+ isOptional: false;
59
+ };
60
+ organizationId: {
61
+ type: _lssm_lib_schema273.FieldType<string, string>;
62
+ isOptional: false;
63
+ };
64
+ deletedBy: {
65
+ type: _lssm_lib_schema273.FieldType<string, string>;
66
+ isOptional: false;
67
+ };
68
+ deletedAt: {
69
+ type: _lssm_lib_schema273.FieldType<Date, string>;
70
+ isOptional: false;
71
+ };
72
+ }>>;
73
+ /**
74
+ * Event: A project has been archived.
75
+ */
76
+ declare const ProjectArchivedEvent: _lssm_lib_contracts11.EventSpec<_lssm_lib_schema273.SchemaModel<{
77
+ projectId: {
78
+ type: _lssm_lib_schema273.FieldType<string, string>;
79
+ isOptional: false;
80
+ };
81
+ archivedBy: {
82
+ type: _lssm_lib_schema273.FieldType<string, string>;
83
+ isOptional: false;
84
+ };
85
+ archivedAt: {
86
+ type: _lssm_lib_schema273.FieldType<Date, string>;
87
+ isOptional: false;
88
+ };
89
+ }>>;
90
+ //#endregion
91
+ export { ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectUpdatedEvent };
@@ -0,0 +1,71 @@
1
+ //#region src/project/project.handler.d.ts
2
+ interface Project {
3
+ id: string;
4
+ name: string;
5
+ description?: string;
6
+ slug?: string;
7
+ organizationId: string;
8
+ createdBy: string;
9
+ status: 'DRAFT' | 'ACTIVE' | 'ARCHIVED' | 'DELETED';
10
+ isPublic: boolean;
11
+ tags: string[];
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }
15
+ interface CreateProjectInput {
16
+ name: string;
17
+ description?: string;
18
+ slug?: string;
19
+ isPublic?: boolean;
20
+ tags?: string[];
21
+ }
22
+ interface UpdateProjectInput {
23
+ projectId: string;
24
+ name?: string;
25
+ description?: string;
26
+ slug?: string;
27
+ isPublic?: boolean;
28
+ tags?: string[];
29
+ status?: 'DRAFT' | 'ACTIVE' | 'ARCHIVED' | 'DELETED';
30
+ }
31
+ interface ListProjectsInput {
32
+ status?: 'DRAFT' | 'ACTIVE' | 'ARCHIVED' | 'all';
33
+ search?: string;
34
+ limit?: number;
35
+ offset?: number;
36
+ }
37
+ interface ListProjectsOutput {
38
+ projects: Project[];
39
+ total: number;
40
+ }
41
+ /**
42
+ * Mock handler for ListProjectsContract.
43
+ */
44
+ declare function mockListProjectsHandler(input: ListProjectsInput): Promise<ListProjectsOutput>;
45
+ /**
46
+ * Mock handler for GetProjectContract.
47
+ */
48
+ declare function mockGetProjectHandler(input: {
49
+ projectId: string;
50
+ }): Promise<Project>;
51
+ /**
52
+ * Mock handler for CreateProjectContract.
53
+ */
54
+ declare function mockCreateProjectHandler(input: CreateProjectInput, context: {
55
+ organizationId: string;
56
+ userId: string;
57
+ }): Promise<Project>;
58
+ /**
59
+ * Mock handler for UpdateProjectContract.
60
+ */
61
+ declare function mockUpdateProjectHandler(input: UpdateProjectInput): Promise<Project>;
62
+ /**
63
+ * Mock handler for DeleteProjectContract.
64
+ */
65
+ declare function mockDeleteProjectHandler(input: {
66
+ projectId: string;
67
+ }): Promise<{
68
+ success: boolean;
69
+ }>;
70
+ //#endregion
71
+ export { CreateProjectInput, ListProjectsInput, ListProjectsOutput, Project, UpdateProjectInput, mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockListProjectsHandler, mockUpdateProjectHandler };
@@ -0,0 +1,14 @@
1
+ import { PresentationDescriptorV2 } from "@lssm/lib.contracts";
2
+
3
+ //#region src/project/project.presentation.d.ts
4
+
5
+ /**
6
+ * Presentation for displaying a list of projects.
7
+ */
8
+ declare const ProjectListPresentation: PresentationDescriptorV2;
9
+ /**
10
+ * Presentation for project detail view.
11
+ */
12
+ declare const ProjectDetailPresentation: PresentationDescriptorV2;
13
+ //#endregion
14
+ export { ProjectDetailPresentation, ProjectListPresentation };