@crm-rocketlink/crm-model 1.0.2 → 1.0.3

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 (55) hide show
  1. package/package.json +28 -28
  2. package/src/dtos/campaign.request.dto.ts +4 -4
  3. package/src/dtos/category.request.dto.ts +8 -8
  4. package/src/dtos/common/base.request.dto.ts +4 -4
  5. package/src/dtos/common/paginated.request.dto.ts +6 -6
  6. package/src/dtos/common/paginated.response.dto.ts +11 -11
  7. package/src/dtos/csv.request.dto.ts +8 -8
  8. package/src/dtos/csv.response.dto.ts +9 -9
  9. package/src/dtos/csvRow.request.dto.ts +13 -13
  10. package/src/dtos/empTransactions.request.dto.ts +5 -5
  11. package/src/dtos/event.request.dto.ts +9 -9
  12. package/src/dtos/fastify.d.ts +18 -18
  13. package/src/dtos/field.request.dto.ts +4 -4
  14. package/src/dtos/hook.request.dto.ts +9 -9
  15. package/src/dtos/hookProfile.request.dto.ts +7 -7
  16. package/src/dtos/lead.request.dto.ts +11 -11
  17. package/src/dtos/offer.request.dto.ts +15 -15
  18. package/src/dtos/order.request.dto.ts +22 -22
  19. package/src/dtos/product.request.dto.ts +9 -9
  20. package/src/dtos/subscription.request.dto.ts +20 -20
  21. package/src/dtos/transaction.request.dto.ts +13 -13
  22. package/src/dtos/transactionError.request.dto.ts +9 -9
  23. package/src/gateways/adapters/dtos/transaction-emp.request.dto.ts +21 -21
  24. package/src/gateways/adapters/dtos/transaction-finxp.request.dto.ts +9 -9
  25. package/src/gateways/adapters/dtos/transaction-novalnet.request.dto.ts +21 -21
  26. package/src/gateways/adapters/model/transactionEmp.model.ts +223 -223
  27. package/src/gateways/adapters/model/transactionFinXP.model.ts +193 -193
  28. package/src/gateways/adapters/model/transactionNovalNet.model.ts +224 -224
  29. package/src/gateways/providers/model/genesis.constants.ts +30 -30
  30. package/src/gateways/providers/model/genesis.model.ts +89 -89
  31. package/src/gateways/providers/model/novalNetManual.model.ts +119 -119
  32. package/src/index.ts +64 -64
  33. package/src/model/campaign.model.ts +15 -15
  34. package/src/model/category.model.ts +7 -7
  35. package/src/model/csv.model.ts +76 -76
  36. package/src/model/empTransactions.model.ts +8 -8
  37. package/src/model/event.model.ts +6 -6
  38. package/src/model/fastify.d.ts +18 -18
  39. package/src/model/field.model.ts +16 -16
  40. package/src/model/gateway.model.ts +49 -49
  41. package/src/model/hook.model.ts +12 -12
  42. package/src/model/hookOutbox.model.ts +12 -12
  43. package/src/model/hookProfile.model.ts +18 -18
  44. package/src/model/lead.model.ts +28 -28
  45. package/src/model/mid.model.ts +25 -25
  46. package/src/model/offer.model.ts +25 -25
  47. package/src/model/order.model.ts +40 -40
  48. package/src/model/paymentData.model.ts +58 -58
  49. package/src/model/product.model.ts +11 -11
  50. package/src/model/subscription.model.ts +28 -28
  51. package/src/model/transaction.model.ts +31 -31
  52. package/src/model/transactionError.model.ts +16 -16
  53. package/src/util/constants.ts +104 -104
  54. package/src/util/dateUtils.ts +71 -71
  55. package/tsconfig.json +27 -27
@@ -1,89 +1,89 @@
1
- import { GENESIS_TRANSACTION_TYPE } from "./genesis.constants";
2
- import { GENESIS_TRANSACTION_STATUS } from "./genesis.constants";
3
- import { GENESIS_TRANSACTION_MODE } from "./genesis.constants";
4
-
5
- export interface GenesisConfig {
6
- customer: {
7
- username?: string;
8
- password?: string;
9
- token?: string;
10
- force_smart_routing?: boolean;
11
- };
12
- gateway: {
13
- protocol?: string;
14
- hostname?: string; //endpoint-you-want e-comprocessing.net or emerchantpay.net
15
- timeout?: string;
16
- testing: boolean;
17
- };
18
- notifications?: {
19
- host: string;
20
- port: string;
21
- path: string;
22
- };
23
- }
24
-
25
- export interface GenesisSddSaleParams {
26
- transaction_id: string; //orderId
27
- usage: string;
28
- remote_ip: string;
29
- amount: string;
30
- currency: string;
31
- iban: string;
32
- bic: string;
33
- billing_address: {
34
- first_name: string;
35
- last_name: string;
36
- city: string;
37
- address1: string;
38
- country: string;
39
- zip_code: string;
40
- };
41
- }
42
-
43
- export interface GenesisResponse {
44
- transaction_type?: GENESIS_TRANSACTION_TYPE;
45
- status: GENESIS_TRANSACTION_STATUS;
46
- unique_id: string; //EMP transactionId
47
- transaction_id?: string; //orderId. When we download CSV from the bank, this value is present in "Merchant Transaction ID"
48
- bank_account_number?: string;
49
- bank_identifier_code?: string;
50
- technical_message?: string;
51
- code?: string;
52
- message?: string;
53
- mode?: GENESIS_TRANSACTION_MODE,
54
- timestamp?: string; //"2025-10-27T14:42:27Z"
55
- descriptor?: string;
56
- amount?: string;
57
- currency?: string;
58
- sent_to_acquirer?: boolean;
59
- }
60
-
61
- export interface GenesisRiconcileByDateResponse {
62
- page: number
63
- per_page: number
64
- total_count: number;
65
- pages_count: number;
66
- payment_response: GenesisResponse[];
67
- }
68
-
69
- export interface GenesisRefundParams {
70
- transactionId: string;
71
- }
72
-
73
- export interface GenesisChargebackParams {
74
- transactionId: string;
75
- }
76
-
77
- export interface GenesisError {
78
- status: string;
79
- code?: string;
80
- message?: string;
81
- technical_message?: string;
82
- response?: GenesisFieldError[];
83
- }
84
-
85
- export interface GenesisFieldError {
86
- type: string;
87
- property: string;
88
- message: string;
89
- }
1
+ import { GENESIS_TRANSACTION_TYPE } from "./genesis.constants";
2
+ import { GENESIS_TRANSACTION_STATUS } from "./genesis.constants";
3
+ import { GENESIS_TRANSACTION_MODE } from "./genesis.constants";
4
+
5
+ export interface GenesisConfig {
6
+ customer: {
7
+ username?: string;
8
+ password?: string;
9
+ token?: string;
10
+ force_smart_routing?: boolean;
11
+ };
12
+ gateway: {
13
+ protocol?: string;
14
+ hostname?: string; //endpoint-you-want e-comprocessing.net or emerchantpay.net
15
+ timeout?: string;
16
+ testing: boolean;
17
+ };
18
+ notifications?: {
19
+ host: string;
20
+ port: string;
21
+ path: string;
22
+ };
23
+ }
24
+
25
+ export interface GenesisSddSaleParams {
26
+ transaction_id: string; //orderId
27
+ usage: string;
28
+ remote_ip: string;
29
+ amount: string;
30
+ currency: string;
31
+ iban: string;
32
+ bic: string;
33
+ billing_address: {
34
+ first_name: string;
35
+ last_name: string;
36
+ city: string;
37
+ address1: string;
38
+ country: string;
39
+ zip_code: string;
40
+ };
41
+ }
42
+
43
+ export interface GenesisResponse {
44
+ transaction_type?: GENESIS_TRANSACTION_TYPE;
45
+ status: GENESIS_TRANSACTION_STATUS;
46
+ unique_id: string; //EMP transactionId
47
+ transaction_id?: string; //orderId. When we download CSV from the bank, this value is present in "Merchant Transaction ID"
48
+ bank_account_number?: string;
49
+ bank_identifier_code?: string;
50
+ technical_message?: string;
51
+ code?: string;
52
+ message?: string;
53
+ mode?: GENESIS_TRANSACTION_MODE,
54
+ timestamp?: string; //"2025-10-27T14:42:27Z"
55
+ descriptor?: string;
56
+ amount?: string;
57
+ currency?: string;
58
+ sent_to_acquirer?: boolean;
59
+ }
60
+
61
+ export interface GenesisRiconcileByDateResponse {
62
+ page: number
63
+ per_page: number
64
+ total_count: number;
65
+ pages_count: number;
66
+ payment_response: GenesisResponse[];
67
+ }
68
+
69
+ export interface GenesisRefundParams {
70
+ transactionId: string;
71
+ }
72
+
73
+ export interface GenesisChargebackParams {
74
+ transactionId: string;
75
+ }
76
+
77
+ export interface GenesisError {
78
+ status: string;
79
+ code?: string;
80
+ message?: string;
81
+ technical_message?: string;
82
+ response?: GenesisFieldError[];
83
+ }
84
+
85
+ export interface GenesisFieldError {
86
+ type: string;
87
+ property: string;
88
+ message: string;
89
+ }
@@ -1,119 +1,119 @@
1
- export interface NovalNetSddSaleParams {
2
- vendorId: string;
3
- vendorAuthcode: string;
4
- productId: string;
5
- tariffId: string;
6
- testMode: string;
7
- amount: string;
8
- currency: string;
9
- tariffPeriod: string;
10
- tariffPeriod2: string;
11
- tariffPeriod2Amount: string;
12
- utf8: string;
13
- lang: string;
14
- orderNo: string;
15
- customerNo: string;
16
- gender: string;
17
- title: string;
18
- firstName: string;
19
- lastName: string;
20
- street: string;
21
- searchInStreet: string;
22
- zip: string;
23
- city: string;
24
- countryCode: string;
25
- birthDate: string;
26
- tel: string;
27
- mobile: string;
28
- email: string;
29
- paymentType: string;
30
- invoiceType: string;
31
- dueDate: string;
32
- invoiceRef: string;
33
- paymentRef: string;
34
- tid: string;
35
- sepaDueDate: string;
36
- mandatePresent: string;
37
- mandateSignatureDate: string;
38
- mandateId: string;
39
- iban: string;
40
- bic: string;
41
- debitAccountHolder: string;
42
- debitReason1: string;
43
- debitReason2: string;
44
- debitReason3: string;
45
- debitReason4: string;
46
- debitReason5: string;
47
- input1: string;
48
- input2: string;
49
- input3: string;
50
- input4: string;
51
- input5: string;
52
- input6: string;
53
- input7: string;
54
- discount: string;
55
- mref: string;
56
- createPaymentRef: string;
57
- noRc: string;
58
- }
59
-
60
- export const novalNetSDDRequestColumnMapper: Partial<Record<keyof NovalNetSddSaleParams, string>> = {
61
- vendorId: "vendor_id",
62
- vendorAuthcode: "vendor_authcode",
63
- productId: "product_id",
64
- tariffId: "tariff_id",
65
- testMode: "test_mode",
66
- amount: "amount",
67
- currency: "currency",
68
- tariffPeriod: "tariff_period",
69
- tariffPeriod2: "tariff_period2",
70
- tariffPeriod2Amount: "tariff_period2_amount",
71
- utf8: "utf8",
72
- lang: "lang",
73
- orderNo: "order_no",
74
- customerNo: "customer_no",
75
- gender: "gender",
76
- title: "title",
77
- firstName: "first_name",
78
- lastName: "last_name",
79
- street: "street",
80
- searchInStreet: "search_in_street",
81
- zip: "zip",
82
- city: "city",
83
- countryCode: "country_code",
84
- birthDate: "birth_date",
85
- tel: "tel",
86
- mobile: "mobile",
87
- email: "email",
88
- paymentType: "payment_type",
89
- invoiceType: "invoice_type",
90
- dueDate: "due_date",
91
- invoiceRef: "invoice_ref",
92
- paymentRef: "payment_ref",
93
- tid: "tid",
94
- sepaDueDate: "sepa_due_date",
95
- mandatePresent: "mandate_present",
96
- mandateSignatureDate: "mandate_signature_date",
97
- mandateId: "mandate_id",
98
- iban: "iban",
99
- bic: "bic",
100
- debitAccountHolder: "debit_account_holder",
101
- debitReason1: "debit_reason_1",
102
- debitReason2: "debit_reason_2",
103
- debitReason3: "debit_reason_3",
104
- debitReason4: "debit_reason_4",
105
- debitReason5: "debit_reason_5",
106
- input1: "input1",
107
- input2: "input2",
108
- input3: "input3",
109
- input4: "input4",
110
- input5: "input5",
111
- input6: "input6",
112
- input7: "input7",
113
- discount: "discount",
114
- mref: "mref",
115
- createPaymentRef: "create_payment_ref",
116
- noRc: "no_rc",
117
- };
118
- export const novalNetSDDRequestColumnMapperKeys = Object.keys(novalNetSDDRequestColumnMapper);
119
- export const novalNetSDDRequestColumnMapperValues = Object.values(novalNetSDDRequestColumnMapper);
1
+ export interface NovalNetSddSaleParams {
2
+ vendorId: string;
3
+ vendorAuthcode: string;
4
+ productId: string;
5
+ tariffId: string;
6
+ testMode: string;
7
+ amount: string;
8
+ currency: string;
9
+ tariffPeriod: string;
10
+ tariffPeriod2: string;
11
+ tariffPeriod2Amount: string;
12
+ utf8: string;
13
+ lang: string;
14
+ orderNo: string;
15
+ customerNo: string;
16
+ gender: string;
17
+ title: string;
18
+ firstName: string;
19
+ lastName: string;
20
+ street: string;
21
+ searchInStreet: string;
22
+ zip: string;
23
+ city: string;
24
+ countryCode: string;
25
+ birthDate: string;
26
+ tel: string;
27
+ mobile: string;
28
+ email: string;
29
+ paymentType: string;
30
+ invoiceType: string;
31
+ dueDate: string;
32
+ invoiceRef: string;
33
+ paymentRef: string;
34
+ tid: string;
35
+ sepaDueDate: string;
36
+ mandatePresent: string;
37
+ mandateSignatureDate: string;
38
+ mandateId: string;
39
+ iban: string;
40
+ bic: string;
41
+ debitAccountHolder: string;
42
+ debitReason1: string;
43
+ debitReason2: string;
44
+ debitReason3: string;
45
+ debitReason4: string;
46
+ debitReason5: string;
47
+ input1: string;
48
+ input2: string;
49
+ input3: string;
50
+ input4: string;
51
+ input5: string;
52
+ input6: string;
53
+ input7: string;
54
+ discount: string;
55
+ mref: string;
56
+ createPaymentRef: string;
57
+ noRc: string;
58
+ }
59
+
60
+ export const novalNetSDDRequestColumnMapper: Partial<Record<keyof NovalNetSddSaleParams, string>> = {
61
+ vendorId: "vendor_id",
62
+ vendorAuthcode: "vendor_authcode",
63
+ productId: "product_id",
64
+ tariffId: "tariff_id",
65
+ testMode: "test_mode",
66
+ amount: "amount",
67
+ currency: "currency",
68
+ tariffPeriod: "tariff_period",
69
+ tariffPeriod2: "tariff_period2",
70
+ tariffPeriod2Amount: "tariff_period2_amount",
71
+ utf8: "utf8",
72
+ lang: "lang",
73
+ orderNo: "order_no",
74
+ customerNo: "customer_no",
75
+ gender: "gender",
76
+ title: "title",
77
+ firstName: "first_name",
78
+ lastName: "last_name",
79
+ street: "street",
80
+ searchInStreet: "search_in_street",
81
+ zip: "zip",
82
+ city: "city",
83
+ countryCode: "country_code",
84
+ birthDate: "birth_date",
85
+ tel: "tel",
86
+ mobile: "mobile",
87
+ email: "email",
88
+ paymentType: "payment_type",
89
+ invoiceType: "invoice_type",
90
+ dueDate: "due_date",
91
+ invoiceRef: "invoice_ref",
92
+ paymentRef: "payment_ref",
93
+ tid: "tid",
94
+ sepaDueDate: "sepa_due_date",
95
+ mandatePresent: "mandate_present",
96
+ mandateSignatureDate: "mandate_signature_date",
97
+ mandateId: "mandate_id",
98
+ iban: "iban",
99
+ bic: "bic",
100
+ debitAccountHolder: "debit_account_holder",
101
+ debitReason1: "debit_reason_1",
102
+ debitReason2: "debit_reason_2",
103
+ debitReason3: "debit_reason_3",
104
+ debitReason4: "debit_reason_4",
105
+ debitReason5: "debit_reason_5",
106
+ input1: "input1",
107
+ input2: "input2",
108
+ input3: "input3",
109
+ input4: "input4",
110
+ input5: "input5",
111
+ input6: "input6",
112
+ input7: "input7",
113
+ discount: "discount",
114
+ mref: "mref",
115
+ createPaymentRef: "create_payment_ref",
116
+ noRc: "no_rc",
117
+ };
118
+ export const novalNetSDDRequestColumnMapperKeys = Object.keys(novalNetSDDRequestColumnMapper);
119
+ export const novalNetSDDRequestColumnMapperValues = Object.values(novalNetSDDRequestColumnMapper);
package/src/index.ts CHANGED
@@ -1,64 +1,64 @@
1
- // Export constants
2
- export * from './util/constants';
3
- export * from './util/dateUtils';
4
- export { isDateString, dateToString, stringToDate, getCurrentDateCompacted, FORMATS } from './util/dateUtils';
5
-
6
- // Export all DTOs
7
- export * from './dtos/common/base.request.dto';
8
- export * from './dtos/common/paginated.request.dto';
9
- export * from './dtos/common/paginated.response.dto';
10
- export * from './dtos/campaign.request.dto';
11
- export * from './dtos/category.request.dto';
12
- export * from './dtos/csv.request.dto';
13
- export * from './dtos/csv.response.dto';
14
- export * from './dtos/csvRow.request.dto';
15
- // export * from './dtos/emailTemplate.request.dto'; // Empty file
16
- export * from './dtos/empTransactions.request.dto';
17
- export * from './dtos/event.request.dto';
18
- export * from './dtos/field.request.dto';
19
- export * from './dtos/hook.request.dto';
20
- export * from './dtos/hookProfile.request.dto';
21
- export * from './dtos/lead.request.dto';
22
- export * from './dtos/offer.request.dto';
23
- export * from './dtos/order.request.dto';
24
- export * from './dtos/product.request.dto';
25
- export * from './dtos/subscription.request.dto';
26
- export * from './dtos/transaction.request.dto';
27
- export * from './dtos/transactionError.request.dto';
28
-
29
- // Export all Models
30
- export * from './model/campaign.model';
31
- export * from './model/category.model';
32
- export * from './model/csv.model';
33
- // export * from './model/emailTemplate.model'; // Empty file
34
- export * from './model/empTransactions.model';
35
- export * from './model/event.model';
36
- export * from './model/field.model';
37
- export * from './model/gateway.model';
38
- export * from './model/hook.model';
39
- export * from './model/hookOutbox.model';
40
- export * from './model/hookProfile.model';
41
- export * from './model/lead.model';
42
- export * from './model/mid.model';
43
- export * from './model/offer.model';
44
- export * from './model/order.model';
45
- export * from './model/paymentData.model';
46
- export * from './model/product.model';
47
- export * from './model/subscription.model';
48
- export * from './model/transaction.model';
49
- export * from './model/transactionError.model';
50
-
51
- // Export Gateway Adapters Models
52
- export * from './gateways/adapters/model/transactionEmp.model';
53
- export * from './gateways/adapters/model/transactionNovalNet.model';
54
- export * from './gateways/adapters/model/transactionFinXP.model';
55
-
56
- // Export Gateway Adapters DTOs
57
- export * from './gateways/adapters/dtos/transaction-emp.request.dto';
58
- export * from './gateways/adapters/dtos/transaction-novalnet.request.dto';
59
- export * from './gateways/adapters/dtos/transaction-finxp.request.dto';
60
-
61
- // Export Gateway Providers Models
62
- export * from './gateways/providers/model/genesis.constants';
63
- export * from './gateways/providers/model/genesis.model';
64
- export * from './gateways/providers/model/novalNetManual.model';
1
+ // Export constants
2
+ export * from './util/constants';
3
+ export * from './util/dateUtils';
4
+ export { isDateString, dateToString, stringToDate, getCurrentDateCompacted, FORMATS } from './util/dateUtils';
5
+
6
+ // Export all DTOs
7
+ export * from './dtos/common/base.request.dto';
8
+ export * from './dtos/common/paginated.request.dto';
9
+ export * from './dtos/common/paginated.response.dto';
10
+ export * from './dtos/campaign.request.dto';
11
+ export * from './dtos/category.request.dto';
12
+ export * from './dtos/csv.request.dto';
13
+ export * from './dtos/csv.response.dto';
14
+ export * from './dtos/csvRow.request.dto';
15
+ // export * from './dtos/emailTemplate.request.dto'; // Empty file
16
+ export * from './dtos/empTransactions.request.dto';
17
+ export * from './dtos/event.request.dto';
18
+ export * from './dtos/field.request.dto';
19
+ export * from './dtos/hook.request.dto';
20
+ export * from './dtos/hookProfile.request.dto';
21
+ export * from './dtos/lead.request.dto';
22
+ export * from './dtos/offer.request.dto';
23
+ export * from './dtos/order.request.dto';
24
+ export * from './dtos/product.request.dto';
25
+ export * from './dtos/subscription.request.dto';
26
+ export * from './dtos/transaction.request.dto';
27
+ export * from './dtos/transactionError.request.dto';
28
+
29
+ // Export all Models
30
+ export * from './model/campaign.model';
31
+ export * from './model/category.model';
32
+ export * from './model/csv.model';
33
+ // export * from './model/emailTemplate.model'; // Empty file
34
+ export * from './model/empTransactions.model';
35
+ export * from './model/event.model';
36
+ export * from './model/field.model';
37
+ export * from './model/gateway.model';
38
+ export * from './model/hook.model';
39
+ export * from './model/hookOutbox.model';
40
+ export * from './model/hookProfile.model';
41
+ export * from './model/lead.model';
42
+ export * from './model/mid.model';
43
+ export * from './model/offer.model';
44
+ export * from './model/order.model';
45
+ export * from './model/paymentData.model';
46
+ export * from './model/product.model';
47
+ export * from './model/subscription.model';
48
+ export * from './model/transaction.model';
49
+ export * from './model/transactionError.model';
50
+
51
+ // Export Gateway Adapters Models
52
+ export * from './gateways/adapters/model/transactionEmp.model';
53
+ export * from './gateways/adapters/model/transactionNovalNet.model';
54
+ export * from './gateways/adapters/model/transactionFinXP.model';
55
+
56
+ // Export Gateway Adapters DTOs
57
+ export * from './gateways/adapters/dtos/transaction-emp.request.dto';
58
+ export * from './gateways/adapters/dtos/transaction-novalnet.request.dto';
59
+ export * from './gateways/adapters/dtos/transaction-finxp.request.dto';
60
+
61
+ // Export Gateway Providers Models
62
+ export * from './gateways/providers/model/genesis.constants';
63
+ export * from './gateways/providers/model/genesis.model';
64
+ export * from './gateways/providers/model/novalNetManual.model';
@@ -1,16 +1,16 @@
1
- import { PaymentMethodType } from "./paymentData.model";
2
- import type { HookProfile } from "./hookProfile.model";
3
- import type { Offer } from "./offer.model";
4
-
5
- export interface Campaign {
6
- id: number;
7
- name: string;
8
- description?: string;
9
- categoryId?: number;
10
- paymentMethod?: PaymentMethodType;
11
- trafficSourceId?: number;
12
- offers?: Offer[];
13
- hookProfiles?: HookProfile[];
14
- createdAt: Date;
15
- updatedAt?: Date;
1
+ import { PaymentMethodType } from "./paymentData.model";
2
+ import type { HookProfile } from "./hookProfile.model";
3
+ import type { Offer } from "./offer.model";
4
+
5
+ export interface Campaign {
6
+ id: number;
7
+ name: string;
8
+ description?: string;
9
+ categoryId?: number;
10
+ paymentMethod?: PaymentMethodType;
11
+ trafficSourceId?: number;
12
+ offers?: Offer[];
13
+ hookProfiles?: HookProfile[];
14
+ createdAt: Date;
15
+ updatedAt?: Date;
16
16
  }
@@ -1,7 +1,7 @@
1
- export interface Category {
2
- id?: number;
3
- name?: string;
4
- description?: string;
5
- createdAt?: Date;
6
- updatedAt?: Date;
7
- }
1
+ export interface Category {
2
+ id?: number;
3
+ name?: string;
4
+ description?: string;
5
+ createdAt?: Date;
6
+ updatedAt?: Date;
7
+ }