@etohq/ambassador 1.5.1-alpha.4

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 (100) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/models/ambassador.d.ts +39 -0
  8. package/dist/models/ambassador.d.ts.map +1 -0
  9. package/dist/models/ambassador.js +67 -0
  10. package/dist/models/ambassador.js.map +1 -0
  11. package/dist/models/commission.d.ts +23 -0
  12. package/dist/models/commission.d.ts.map +1 -0
  13. package/dist/models/commission.js +93 -0
  14. package/dist/models/commission.js.map +1 -0
  15. package/dist/models/index.d.ts +8 -0
  16. package/dist/models/index.d.ts.map +1 -0
  17. package/dist/models/index.js +18 -0
  18. package/dist/models/index.js.map +1 -0
  19. package/dist/models/partner.d.ts +38 -0
  20. package/dist/models/partner.d.ts.map +1 -0
  21. package/dist/models/partner.js +78 -0
  22. package/dist/models/partner.js.map +1 -0
  23. package/dist/models/payout.d.ts +28 -0
  24. package/dist/models/payout.d.ts.map +1 -0
  25. package/dist/models/payout.js +57 -0
  26. package/dist/models/payout.js.map +1 -0
  27. package/dist/models/program-enrollment.d.ts +26 -0
  28. package/dist/models/program-enrollment.d.ts.map +1 -0
  29. package/dist/models/program-enrollment.js +81 -0
  30. package/dist/models/program-enrollment.js.map +1 -0
  31. package/dist/models/program.d.ts +52 -0
  32. package/dist/models/program.d.ts.map +1 -0
  33. package/dist/models/program.js +106 -0
  34. package/dist/models/program.js.map +1 -0
  35. package/dist/models/revenue-share-rule.d.ts +25 -0
  36. package/dist/models/revenue-share-rule.d.ts.map +1 -0
  37. package/dist/models/revenue-share-rule.js +54 -0
  38. package/dist/models/revenue-share-rule.js.map +1 -0
  39. package/dist/models/reward.d.ts +16 -0
  40. package/dist/models/reward.d.ts.map +1 -0
  41. package/dist/models/reward.js +41 -0
  42. package/dist/models/reward.js.map +1 -0
  43. package/dist/services/ambassador-module-service.d.ts +221 -0
  44. package/dist/services/ambassador-module-service.d.ts.map +1 -0
  45. package/dist/services/ambassador-module-service.js +972 -0
  46. package/dist/services/ambassador-module-service.js.map +1 -0
  47. package/dist/services/ambassador-service.d.ts +57 -0
  48. package/dist/services/ambassador-service.d.ts.map +1 -0
  49. package/dist/services/ambassador-service.js +127 -0
  50. package/dist/services/ambassador-service.js.map +1 -0
  51. package/dist/services/commission-service.d.ts +45 -0
  52. package/dist/services/commission-service.d.ts.map +1 -0
  53. package/dist/services/commission-service.js +146 -0
  54. package/dist/services/commission-service.js.map +1 -0
  55. package/dist/services/index.d.ts +2 -0
  56. package/dist/services/index.d.ts.map +1 -0
  57. package/dist/services/index.js +9 -0
  58. package/dist/services/index.js.map +1 -0
  59. package/dist/services/payout-service.d.ts +35 -0
  60. package/dist/services/payout-service.d.ts.map +1 -0
  61. package/dist/services/payout-service.js +87 -0
  62. package/dist/services/payout-service.js.map +1 -0
  63. package/dist/services/program-enrollment-service.d.ts +39 -0
  64. package/dist/services/program-enrollment-service.d.ts.map +1 -0
  65. package/dist/services/program-enrollment-service.js +102 -0
  66. package/dist/services/program-enrollment-service.js.map +1 -0
  67. package/dist/services/program-service.d.ts +78 -0
  68. package/dist/services/program-service.d.ts.map +1 -0
  69. package/dist/services/program-service.js +180 -0
  70. package/dist/services/program-service.js.map +1 -0
  71. package/dist/services/revenue-rule-resolver.d.ts +15 -0
  72. package/dist/services/revenue-rule-resolver.d.ts.map +1 -0
  73. package/dist/services/revenue-rule-resolver.js +836 -0
  74. package/dist/services/revenue-rule-resolver.js.map +1 -0
  75. package/dist/services/revenue-share-rule-service.d.ts +5 -0
  76. package/dist/services/revenue-share-rule-service.d.ts.map +1 -0
  77. package/dist/services/revenue-share-rule-service.js +8 -0
  78. package/dist/services/revenue-share-rule-service.js.map +1 -0
  79. package/dist/services/reward-service.d.ts +31 -0
  80. package/dist/services/reward-service.d.ts.map +1 -0
  81. package/dist/services/reward-service.js +82 -0
  82. package/dist/services/reward-service.js.map +1 -0
  83. package/dist/tsconfig.tsbuildinfo +1 -0
  84. package/dist/utils/analytics.d.ts +19 -0
  85. package/dist/utils/analytics.d.ts.map +1 -0
  86. package/dist/utils/analytics.js +90 -0
  87. package/dist/utils/analytics.js.map +1 -0
  88. package/dist/utils/sustainability-monitor.d.ts +20 -0
  89. package/dist/utils/sustainability-monitor.d.ts.map +1 -0
  90. package/dist/utils/sustainability-monitor.js +46 -0
  91. package/dist/utils/sustainability-monitor.js.map +1 -0
  92. package/dist/workflows/calculate-commission-workflow.d.ts +2 -0
  93. package/dist/workflows/calculate-commission-workflow.d.ts.map +1 -0
  94. package/dist/workflows/calculate-commission-workflow.js +59 -0
  95. package/dist/workflows/calculate-commission-workflow.js.map +1 -0
  96. package/dist/workflows/steps/index.d.ts +2 -0
  97. package/dist/workflows/steps/index.d.ts.map +1 -0
  98. package/dist/workflows/steps/index.js +158 -0
  99. package/dist/workflows/steps/index.js.map +1 -0
  100. package/package.json +56 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2021 Etohq
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ Ambassador Module
@@ -0,0 +1,6 @@
1
+ import { AmbassadorModuleService } from "./services";
2
+ declare const _default: import("@etohq/types").ModuleExports<typeof AmbassadorModuleService> & {
3
+ linkable: Record<string, any>;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;;;;AAGnD,wBAEE"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _services_1 = require("./services");
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ exports.default = (0, utils_1.Module)(utils_1.Modules.AMBASSADOR, {
6
+ service: _services_1.AmbassadorModuleService,
7
+ });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAAmD;AACnD,kDAAwD;AAExD,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,UAAU,EAAE;IACxC,OAAO,EAAE,mCAAuB;CACjC,CAAC,CAAA"}
@@ -0,0 +1,39 @@
1
+ declare const Ambassador: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
+ source_type: import("@etohq/framework/utils").EnumProperty<["user", "community"]>;
4
+ source_id: import("@etohq/framework/utils").TextProperty;
5
+ name: import("@etohq/framework/utils").TextProperty;
6
+ email: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
7
+ profile_type: import("@etohq/framework/utils").EnumProperty<["individual", "business"]>;
8
+ company_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
9
+ status: import("@etohq/framework/utils").EnumProperty<["default", "verified", "featured"]>;
10
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
11
+ country: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
12
+ image: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
13
+ total_earnings: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
14
+ website: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
15
+ website_txt_record: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
16
+ website_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
17
+ youtube: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
18
+ youtube_channel_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
19
+ youtube_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
20
+ youtube_subscriber_count: import("@etohq/framework/utils").NumberProperty;
21
+ youtube_video_count: import("@etohq/framework/utils").NumberProperty;
22
+ youtube_view_count: import("@etohq/framework/utils").NumberProperty;
23
+ twitter: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
24
+ twitter_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
25
+ linkedin: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
26
+ linkedin_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
27
+ instagram: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
28
+ instagram_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
29
+ tiktok: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
30
+ paypal_email: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
31
+ stripe_connect_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
32
+ min_withdrawal_amount: import("@etohq/framework/utils").NumberProperty;
33
+ payouts_enabled_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
34
+ connect_payouts_last_reminded_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
35
+ invoice_settings: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
36
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
37
+ }>, "Ambassador">;
38
+ export { Ambassador };
39
+ //# sourceMappingURL=ambassador.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambassador.d.ts","sourceRoot":"","sources":["../../src/models/ambassador.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiEZ,CAAA;AAEJ,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Ambassador = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ const Ambassador = utils_1.model
6
+ .define("Ambassador", {
7
+ id: utils_1.model.id({ prefix: "amb" }).primaryKey(),
8
+ // Universal Source (Our innovation - supports users AND communities)
9
+ source_type: utils_1.model.enum(["user", "community"]), // What type of entity is the ambassador
10
+ source_id: utils_1.model.text().searchable(), // user_id or community_id
11
+ // Basic Info (Dub parity)
12
+ name: utils_1.model.text().searchable(),
13
+ email: utils_1.model.text().unique().nullable(),
14
+ profile_type: utils_1.model.enum(["individual", "business"]).default("individual"),
15
+ company_name: utils_1.model.text().nullable(),
16
+ status: utils_1.model.enum(["default", "verified", "featured"]).default("default"),
17
+ description: utils_1.model.text().nullable(),
18
+ country: utils_1.model.text().nullable(),
19
+ image: utils_1.model.text().nullable(),
20
+ total_earnings: utils_1.model.number().nullable(),
21
+ // Social Verification (Dub parity)
22
+ website: utils_1.model.text().nullable(),
23
+ website_txt_record: utils_1.model.text().nullable(),
24
+ website_verified_at: utils_1.model.dateTime().nullable(),
25
+ youtube: utils_1.model.text().nullable(),
26
+ youtube_channel_id: utils_1.model.text().nullable(),
27
+ youtube_verified_at: utils_1.model.dateTime().nullable(),
28
+ youtube_subscriber_count: utils_1.model.number().default(0),
29
+ youtube_video_count: utils_1.model.number().default(0),
30
+ youtube_view_count: utils_1.model.number().default(0),
31
+ twitter: utils_1.model.text().nullable(),
32
+ twitter_verified_at: utils_1.model.dateTime().nullable(),
33
+ linkedin: utils_1.model.text().nullable(),
34
+ linkedin_verified_at: utils_1.model.dateTime().nullable(),
35
+ instagram: utils_1.model.text().nullable(),
36
+ instagram_verified_at: utils_1.model.dateTime().nullable(),
37
+ tiktok: utils_1.model.text().nullable(),
38
+ // Payout Settings (Dub parity)
39
+ paypal_email: utils_1.model.text().nullable(),
40
+ stripe_connect_id: utils_1.model.text().nullable(),
41
+ min_withdrawal_amount: utils_1.model.number().default(10000), // $100 in cents
42
+ payouts_enabled_at: utils_1.model.dateTime().nullable(),
43
+ connect_payouts_last_reminded_at: utils_1.model.dateTime().nullable(),
44
+ invoice_settings: utils_1.model.json().nullable(),
45
+ // Metadata
46
+ metadata: utils_1.model.json().nullable(),
47
+ })
48
+ .indexes([
49
+ {
50
+ name: "IDX_ambassador_source",
51
+ on: ["source_type", "source_id"],
52
+ where: "deleted_at IS NULL",
53
+ unique: true, // One ambassador record per source
54
+ },
55
+ {
56
+ name: "IDX_ambassador_email",
57
+ on: ["email"],
58
+ where: "deleted_at IS NULL",
59
+ },
60
+ {
61
+ name: "IDX_ambassador_status",
62
+ on: ["status"],
63
+ where: "deleted_at IS NULL",
64
+ },
65
+ ]);
66
+ exports.Ambassador = Ambassador;
67
+ //# sourceMappingURL=ambassador.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ambassador.js","sourceRoot":"","sources":["../../src/models/ambassador.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ declare const Commission: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
+ program_id: import("@etohq/framework/utils").TextProperty;
4
+ ambassador_id: import("@etohq/framework/utils").TextProperty;
5
+ program_enrollment_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
6
+ reward_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
7
+ access_link_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
8
+ invoice_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
9
+ customer_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
10
+ event_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
11
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
12
+ type: import("@etohq/framework/utils").EnumProperty<["click", "lead", "sale", "custom", "revenue_share", "community_bonus"]>;
13
+ amount: import("@etohq/framework/utils").NumberProperty;
14
+ quantity: import("@etohq/framework/utils").NumberProperty;
15
+ earnings: import("@etohq/framework/utils").NumberProperty;
16
+ currency: import("@etohq/framework/utils").TextProperty;
17
+ user_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
18
+ payout_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
19
+ status: import("@etohq/framework/utils").EnumProperty<["pending", "processed", "paid", "refunded", "duplicate", "fraud", "canceled"]>;
20
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
21
+ }>, "Commission">;
22
+ export { Commission };
23
+ //# sourceMappingURL=commission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commission.d.ts","sourceRoot":"","sources":["../../src/models/commission.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;iBAsFZ,CAAA;AAEJ,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Commission = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ const Commission = utils_1.model
6
+ .define("Commission", {
7
+ id: utils_1.model.id({ prefix: "comm" }).primaryKey(),
8
+ program_id: utils_1.model.text().searchable(),
9
+ ambassador_id: utils_1.model.text().searchable(),
10
+ program_enrollment_id: utils_1.model.text().nullable(),
11
+ reward_id: utils_1.model.text().nullable(),
12
+ access_link_id: utils_1.model.text().nullable(),
13
+ invoice_id: utils_1.model.text().nullable(),
14
+ customer_id: utils_1.model.text().nullable(),
15
+ event_id: utils_1.model.text().nullable(),
16
+ description: utils_1.model.text().nullable(),
17
+ type: utils_1.model.enum([
18
+ "click",
19
+ "lead",
20
+ "sale",
21
+ "custom",
22
+ "revenue_share",
23
+ "community_bonus",
24
+ ]),
25
+ amount: utils_1.model.number(),
26
+ quantity: utils_1.model.number(),
27
+ earnings: utils_1.model.number(),
28
+ currency: utils_1.model.text(),
29
+ user_id: utils_1.model.text().nullable(),
30
+ payout_id: utils_1.model.text().nullable(),
31
+ status: utils_1.model
32
+ .enum([
33
+ "pending",
34
+ "processed",
35
+ "paid",
36
+ "refunded",
37
+ "duplicate",
38
+ "fraud",
39
+ "canceled",
40
+ ])
41
+ .default("pending"),
42
+ metadata: utils_1.model.json().nullable(),
43
+ })
44
+ .indexes([
45
+ {
46
+ name: "IDX_commission_invoice_program",
47
+ on: ["invoice_id", "program_id"],
48
+ unique: true,
49
+ where: "deleted_at IS NULL AND invoice_id IS NOT NULL",
50
+ },
51
+ {
52
+ name: "IDX_commission_earnings",
53
+ on: ["earnings", "program_id", "ambassador_id", "status"],
54
+ where: "deleted_at IS NULL",
55
+ },
56
+ {
57
+ name: "IDX_commission_program_analytics",
58
+ on: ["program_id", "created_at", "status", "amount", "earnings"],
59
+ where: "deleted_at IS NULL",
60
+ },
61
+ {
62
+ name: "IDX_commission_ambassador_customer",
63
+ on: ["ambassador_id", "customer_id"],
64
+ where: "deleted_at IS NULL",
65
+ },
66
+ {
67
+ name: "IDX_commission_payout",
68
+ on: ["payout_id"],
69
+ where: "deleted_at IS NULL AND payout_id IS NOT NULL",
70
+ },
71
+ {
72
+ name: "IDX_commission_customer",
73
+ on: ["customer_id"],
74
+ where: "deleted_at IS NULL AND customer_id IS NOT NULL",
75
+ },
76
+ {
77
+ name: "IDX_commission_link",
78
+ on: ["access_link_id"],
79
+ where: "deleted_at IS NULL AND link_id IS NOT NULL",
80
+ },
81
+ {
82
+ name: "IDX_commission_status",
83
+ on: ["status", "created_at"],
84
+ where: "deleted_at IS NULL",
85
+ },
86
+ {
87
+ name: "IDX_commission_reward",
88
+ on: ["reward_id"],
89
+ where: "deleted_at IS NULL AND reward_id IS NOT NULL",
90
+ },
91
+ ]);
92
+ exports.Commission = Commission;
93
+ //# sourceMappingURL=commission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commission.js","sourceRoot":"","sources":["../../src/models/commission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { Ambassador } from "./ambassador";
2
+ export { Program } from "./program";
3
+ export { ProgramEnrollment } from "./program-enrollment";
4
+ export { Reward } from "./reward";
5
+ export { Payout } from "./payout";
6
+ export { Commission } from "./commission";
7
+ export { RevenueShareRule } from "./revenue-share-rule";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RevenueShareRule = exports.Commission = exports.Payout = exports.Reward = exports.ProgramEnrollment = exports.Program = exports.Ambassador = void 0;
4
+ var ambassador_1 = require("./ambassador");
5
+ Object.defineProperty(exports, "Ambassador", { enumerable: true, get: function () { return ambassador_1.Ambassador; } });
6
+ var program_1 = require("./program");
7
+ Object.defineProperty(exports, "Program", { enumerable: true, get: function () { return program_1.Program; } });
8
+ var program_enrollment_1 = require("./program-enrollment");
9
+ Object.defineProperty(exports, "ProgramEnrollment", { enumerable: true, get: function () { return program_enrollment_1.ProgramEnrollment; } });
10
+ var reward_1 = require("./reward");
11
+ Object.defineProperty(exports, "Reward", { enumerable: true, get: function () { return reward_1.Reward; } });
12
+ var payout_1 = require("./payout");
13
+ Object.defineProperty(exports, "Payout", { enumerable: true, get: function () { return payout_1.Payout; } });
14
+ var commission_1 = require("./commission");
15
+ Object.defineProperty(exports, "Commission", { enumerable: true, get: function () { return commission_1.Commission; } });
16
+ var revenue_share_rule_1 = require("./revenue-share-rule");
17
+ Object.defineProperty(exports, "RevenueShareRule", { enumerable: true, get: function () { return revenue_share_rule_1.RevenueShareRule; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,2DAAwD;AAA/C,uHAAA,iBAAiB,OAAA;AAC1B,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,2DAAuD;AAA9C,sHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,38 @@
1
+ declare const Partner: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
+ name: import("@etohq/framework/utils").TextProperty;
4
+ email: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
5
+ image: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
6
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
7
+ company_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
8
+ status: import("@etohq/framework/utils").EnumProperty<["default", "verified", "featured"]>;
9
+ profile_type: import("@etohq/framework/utils").EnumProperty<["individual", "company"]>;
10
+ website: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
11
+ website_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
12
+ youtube: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
13
+ youtube_channel_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
14
+ youtube_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
15
+ youtube_subscriber_count: import("@etohq/framework/utils").NumberProperty;
16
+ youtube_video_count: import("@etohq/framework/utils").NumberProperty;
17
+ youtube_view_count: import("@etohq/framework/utils").NumberProperty;
18
+ twitter: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
19
+ twitter_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
20
+ linkedin: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
21
+ linkedin_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
22
+ instagram: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
23
+ instagram_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
24
+ tiktok: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
25
+ tiktok_verified_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
26
+ paypal_email: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
27
+ spay_connect_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
28
+ payouts_enabled_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
29
+ min_withdrawal_amount: import("@etohq/framework/utils").NumberProperty;
30
+ connect_payouts_last_reminded_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
31
+ country: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
32
+ invoice_settings: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
33
+ created_at: import("@etohq/framework/utils").DateTimeProperty;
34
+ updated_at: import("@etohq/framework/utils").DateTimeProperty;
35
+ deleted_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
36
+ }>, "Partner">;
37
+ export { Partner };
38
+ //# sourceMappingURL=partner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner.d.ts","sourceRoot":"","sources":["../../src/models/partner.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA6ET,CAAA;AAEJ,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Partner = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ const Partner = utils_1.model
6
+ .define("Partner", {
7
+ id: utils_1.model.id({ prefix: "partner" }).primaryKey(),
8
+ name: utils_1.model.text().searchable(),
9
+ email: utils_1.model.text().unique().nullable(),
10
+ image: utils_1.model.text().nullable(),
11
+ description: utils_1.model.text().nullable(),
12
+ company_name: utils_1.model.text().nullable(),
13
+ // Verification & Status
14
+ status: utils_1.model.enum(["default", "verified", "featured"]).default("default"),
15
+ profile_type: utils_1.model.enum(["individual", "company"]).default("individual"),
16
+ // Social Verification
17
+ website: utils_1.model.text().nullable(),
18
+ website_verified_at: utils_1.model.dateTime().nullable(),
19
+ youtube: utils_1.model.text().nullable(),
20
+ youtube_channel_id: utils_1.model.text().nullable(),
21
+ youtube_verified_at: utils_1.model.dateTime().nullable(),
22
+ youtube_subscriber_count: utils_1.model.number().default(0),
23
+ youtube_video_count: utils_1.model.number().default(0),
24
+ youtube_view_count: utils_1.model.number().default(0),
25
+ twitter: utils_1.model.text().nullable(),
26
+ twitter_verified_at: utils_1.model.dateTime().nullable(),
27
+ linkedin: utils_1.model.text().nullable(),
28
+ linkedin_verified_at: utils_1.model.dateTime().nullable(),
29
+ instagram: utils_1.model.text().nullable(),
30
+ instagram_verified_at: utils_1.model.dateTime().nullable(),
31
+ tiktok: utils_1.model.text().nullable(),
32
+ tiktok_verified_at: utils_1.model.dateTime().nullable(),
33
+ // Payout Configuration
34
+ paypal_email: utils_1.model.text().unique().nullable(),
35
+ spay_connect_id: utils_1.model.text().unique().nullable(),
36
+ payouts_enabled_at: utils_1.model.dateTime().nullable(),
37
+ min_withdrawal_amount: utils_1.model.number().default(10000), // $100 in cents
38
+ connect_payouts_last_reminded_at: utils_1.model.dateTime().nullable(),
39
+ // Location
40
+ country: utils_1.model.text().nullable(),
41
+ // Settings
42
+ invoice_settings: utils_1.model.json().nullable(),
43
+ created_at: utils_1.model.dateTime(),
44
+ updated_at: utils_1.model.dateTime(),
45
+ deleted_at: utils_1.model.dateTime().nullable(),
46
+ })
47
+ .indexes([
48
+ {
49
+ name: "IDX_partner_email",
50
+ on: ["email"],
51
+ unique: true,
52
+ where: "deleted_at IS NULL AND email IS NOT NULL",
53
+ },
54
+ {
55
+ name: "IDX_partner_paypal",
56
+ on: ["paypal_email"],
57
+ unique: true,
58
+ where: "deleted_at IS NULL AND paypal_email IS NOT NULL",
59
+ },
60
+ {
61
+ name: "IDX_partner_spay",
62
+ on: ["spay_connect_id"],
63
+ unique: true,
64
+ where: "deleted_at IS NULL AND spay_connect_id IS NOT NULL",
65
+ },
66
+ {
67
+ name: "IDX_partner_status",
68
+ on: ["status", "created_at"],
69
+ where: "deleted_at IS NULL",
70
+ },
71
+ {
72
+ name: "IDX_partner_youtube",
73
+ on: ["youtube_channel_id"],
74
+ where: "deleted_at IS NULL AND youtube_channel_id IS NOT NULL",
75
+ },
76
+ ]);
77
+ exports.Partner = Partner;
78
+ //# sourceMappingURL=partner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner.js","sourceRoot":"","sources":["../../src/models/partner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export declare enum PayoutStatus {
2
+ Pending = "pending",
3
+ Processing = "processing",
4
+ Processed = "processed",
5
+ Sent = "sent",
6
+ Completed = "completed",
7
+ Failed = "failed",
8
+ Canceled = "canceled"
9
+ }
10
+ declare const Payout: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
11
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
12
+ program_id: import("@etohq/framework/utils").TextProperty;
13
+ ambassador_id: import("@etohq/framework/utils").TextProperty;
14
+ amount: import("@etohq/framework/utils").NumberProperty;
15
+ currency: import("@etohq/framework/utils").TextProperty;
16
+ status: import("@etohq/framework/utils").EnumProperty<typeof PayoutStatus>;
17
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
18
+ period_start: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
19
+ period_end: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
20
+ spay_transfer_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
21
+ spay_payout_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
22
+ paypal_transfer_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
23
+ failure_reason: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
24
+ created_by: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
25
+ paid_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
26
+ }>, "Payout">;
27
+ export { Payout };
28
+ //# sourceMappingURL=payout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payout.d.ts","sourceRoot":"","sources":["../../src/models/payout.ts"],"names":[],"mappings":"AAGA,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;aA2CR,CAAA;AAEJ,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Payout = exports.PayoutStatus = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ // Status Management (Dub Pattern)
6
+ // Enum for status
7
+ var PayoutStatus;
8
+ (function (PayoutStatus) {
9
+ PayoutStatus["Pending"] = "pending";
10
+ PayoutStatus["Processing"] = "processing";
11
+ PayoutStatus["Processed"] = "processed";
12
+ PayoutStatus["Sent"] = "sent";
13
+ PayoutStatus["Completed"] = "completed";
14
+ PayoutStatus["Failed"] = "failed";
15
+ PayoutStatus["Canceled"] = "canceled";
16
+ })(PayoutStatus || (exports.PayoutStatus = PayoutStatus = {}));
17
+ const Payout = utils_1.model
18
+ .define("Payout", {
19
+ id: utils_1.model.id({ prefix: "payout" }).primaryKey(),
20
+ // Core Payout Info (Dub Pattern)
21
+ program_id: utils_1.model.text().searchable(),
22
+ ambassador_id: utils_1.model.text().searchable(), // Dub: partnerId
23
+ amount: utils_1.model.number().default(0), // Amount in cents
24
+ currency: utils_1.model.text().default("USD"),
25
+ status: utils_1.model.enum(PayoutStatus).default(PayoutStatus.Pending), // pending, processing, processed, sent, completed, failed, canceled
26
+ description: utils_1.model.text().nullable(),
27
+ // Period Tracking (Dub Pattern)
28
+ period_start: utils_1.model.dateTime().nullable(),
29
+ period_end: utils_1.model.dateTime().nullable(),
30
+ // Payment Integration (Spay + PayPal)
31
+ spay_transfer_id: utils_1.model.text().nullable(),
32
+ spay_payout_id: utils_1.model.text().nullable(),
33
+ paypal_transfer_id: utils_1.model.text().nullable(),
34
+ failure_reason: utils_1.model.text().nullable(),
35
+ // Audit Trail
36
+ created_by: utils_1.model.text().nullable(), // User who initiated payout
37
+ paid_at: utils_1.model.dateTime().nullable(),
38
+ })
39
+ .indexes([
40
+ {
41
+ name: "program_ambassador",
42
+ on: ["program_id", "ambassador_id"],
43
+ where: "deleted_at IS NULL",
44
+ },
45
+ {
46
+ name: "status_lookup",
47
+ on: ["status", "created_at"],
48
+ where: "deleted_at IS NULL",
49
+ },
50
+ {
51
+ name: "ambassador_payouts",
52
+ on: ["ambassador_id", "status"],
53
+ where: "deleted_at IS NULL",
54
+ },
55
+ ]);
56
+ exports.Payout = Payout;
57
+ //# sourceMappingURL=payout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payout.js","sourceRoot":"","sources":["../../src/models/payout.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAC9C,kCAAkC;AAClC,kBAAkB;AAClB,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,yCAAyB,CAAA;IACzB,uCAAuB,CAAA;IACvB,6BAAa,CAAA;IACb,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,qCAAqB,CAAA;AACvB,CAAC,EARW,YAAY,4BAAZ,YAAY,QAQvB;AAED,MAAM,MAAM,GAAG,aAAK;KACjB,MAAM,CAAC,QAAQ,EAAE;IAChB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAE/C,iCAAiC;IACjC,UAAU,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACrC,aAAa,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,iBAAiB;IAC3D,MAAM,EAAE,aAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB;IACrD,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAErC,MAAM,EAAE,aAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,oEAAoE;IACpI,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAEpC,gCAAgC;IAChC,YAAY,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACzC,UAAU,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAEvC,sCAAsC;IACtC,gBAAgB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACzC,cAAc,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACvC,kBAAkB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC3C,cAAc,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAEvC,cAAc;IACd,UAAU,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,4BAA4B;IACjE,OAAO,EAAE,aAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC;KACD,OAAO,CAAC;IACP;QACE,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;QACnC,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC5B,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;QAC/B,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA;AAEK,wBAAM"}
@@ -0,0 +1,26 @@
1
+ declare const ProgramEnrollment: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
+ ambassador_id: import("@etohq/framework/utils").TextProperty;
4
+ program_id: import("@etohq/framework/utils").TextProperty;
5
+ tenant_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
6
+ group_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
7
+ application_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
8
+ click_reward_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
9
+ lead_reward_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
10
+ sale_reward_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
11
+ access_reward_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
12
+ discount_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
13
+ application_message: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
14
+ invited_by: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
15
+ source: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
16
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
17
+ status: import("@etohq/framework/utils").EnumProperty<["pending", "approved", "rejected", "invited", "declined", "banned", "archived"]>;
18
+ total_commissions: import("@etohq/framework/utils").NumberProperty;
19
+ banned_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
20
+ banned_reason: import("@etohq/framework/utils").NullableModifier<"tos_violation" | "inappropriate_content" | "fake_traffic" | "fraud" | "spam" | "brand_abuse", import("@etohq/framework/utils").EnumProperty<["tos_violation", "inappropriate_content", "fake_traffic", "fraud", "spam", "brand_abuse"]>>;
21
+ created_at: import("@etohq/framework/utils").DateTimeProperty;
22
+ updated_at: import("@etohq/framework/utils").DateTimeProperty;
23
+ deleted_at: import("@etohq/framework/utils").NullableModifier<Date, import("@etohq/framework/utils").DateTimeProperty>;
24
+ }>, "ProgramEnrollment">;
25
+ export { ProgramEnrollment };
26
+ //# sourceMappingURL=program-enrollment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program-enrollment.d.ts","sourceRoot":"","sources":["../../src/models/program-enrollment.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;wBA+EnB,CAAA;AAEJ,OAAO,EAAE,iBAAiB,EAAE,CAAA"}