@contractspec/example.marketplace 0.0.0-canary-20260113170453

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 (188) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -0
  3. package/dist/docs/index.d.ts +1 -0
  4. package/dist/docs/index.js +1 -0
  5. package/dist/docs/marketplace.docblock.d.ts +1 -0
  6. package/dist/docs/marketplace.docblock.js +115 -0
  7. package/dist/docs/marketplace.docblock.js.map +1 -0
  8. package/dist/entities/index.d.ts +309 -0
  9. package/dist/entities/index.d.ts.map +1 -0
  10. package/dist/entities/index.js +46 -0
  11. package/dist/entities/index.js.map +1 -0
  12. package/dist/entities/order.d.ts +105 -0
  13. package/dist/entities/order.d.ts.map +1 -0
  14. package/dist/entities/order.js +173 -0
  15. package/dist/entities/order.js.map +1 -0
  16. package/dist/entities/payout.d.ts +92 -0
  17. package/dist/entities/payout.d.ts.map +1 -0
  18. package/dist/entities/payout.js +162 -0
  19. package/dist/entities/payout.js.map +1 -0
  20. package/dist/entities/product.d.ts +93 -0
  21. package/dist/entities/product.d.ts.map +1 -0
  22. package/dist/entities/product.js +161 -0
  23. package/dist/entities/product.js.map +1 -0
  24. package/dist/entities/review.d.ts +83 -0
  25. package/dist/entities/review.d.ts.map +1 -0
  26. package/dist/entities/review.js +152 -0
  27. package/dist/entities/review.js.map +1 -0
  28. package/dist/entities/store.d.ts +60 -0
  29. package/dist/entities/store.d.ts.map +1 -0
  30. package/dist/entities/store.js +110 -0
  31. package/dist/entities/store.js.map +1 -0
  32. package/dist/example.d.ts +7 -0
  33. package/dist/example.d.ts.map +1 -0
  34. package/dist/example.js +58 -0
  35. package/dist/example.js.map +1 -0
  36. package/dist/handlers/index.d.ts +2 -0
  37. package/dist/handlers/index.js +3 -0
  38. package/dist/handlers/marketplace.handlers.d.ts +155 -0
  39. package/dist/handlers/marketplace.handlers.d.ts.map +1 -0
  40. package/dist/handlers/marketplace.handlers.js +329 -0
  41. package/dist/handlers/marketplace.handlers.js.map +1 -0
  42. package/dist/index.d.ts +31 -0
  43. package/dist/index.js +32 -0
  44. package/dist/marketplace.capability.d.ts +9 -0
  45. package/dist/marketplace.capability.d.ts.map +1 -0
  46. package/dist/marketplace.capability.js +34 -0
  47. package/dist/marketplace.capability.js.map +1 -0
  48. package/dist/marketplace.feature.d.ts +12 -0
  49. package/dist/marketplace.feature.d.ts.map +1 -0
  50. package/dist/marketplace.feature.js +315 -0
  51. package/dist/marketplace.feature.js.map +1 -0
  52. package/dist/order/index.d.ts +5 -0
  53. package/dist/order/index.js +6 -0
  54. package/dist/order/order.enum.d.ts +10 -0
  55. package/dist/order/order.enum.d.ts.map +1 -0
  56. package/dist/order/order.enum.js +22 -0
  57. package/dist/order/order.enum.js.map +1 -0
  58. package/dist/order/order.event.d.ts +145 -0
  59. package/dist/order/order.event.d.ts.map +1 -0
  60. package/dist/order/order.event.js +216 -0
  61. package/dist/order/order.event.js.map +1 -0
  62. package/dist/order/order.operations.d.ts +368 -0
  63. package/dist/order/order.operations.d.ts.map +1 -0
  64. package/dist/order/order.operations.js +119 -0
  65. package/dist/order/order.operations.js.map +1 -0
  66. package/dist/order/order.presentation.d.ts +9 -0
  67. package/dist/order/order.presentation.d.ts.map +1 -0
  68. package/dist/order/order.presentation.js +86 -0
  69. package/dist/order/order.presentation.js.map +1 -0
  70. package/dist/order/order.schema.d.ts +165 -0
  71. package/dist/order/order.schema.d.ts.map +1 -0
  72. package/dist/order/order.schema.js +155 -0
  73. package/dist/order/order.schema.js.map +1 -0
  74. package/dist/payout/index.d.ts +5 -0
  75. package/dist/payout/index.js +6 -0
  76. package/dist/payout/payout.enum.d.ts +10 -0
  77. package/dist/payout/payout.enum.d.ts.map +1 -0
  78. package/dist/payout/payout.enum.js +17 -0
  79. package/dist/payout/payout.enum.js.map +1 -0
  80. package/dist/payout/payout.event.d.ts +63 -0
  81. package/dist/payout/payout.event.d.ts.map +1 -0
  82. package/dist/payout/payout.event.js +92 -0
  83. package/dist/payout/payout.event.js.map +1 -0
  84. package/dist/payout/payout.operations.d.ts +97 -0
  85. package/dist/payout/payout.operations.d.ts.map +1 -0
  86. package/dist/payout/payout.operations.js +53 -0
  87. package/dist/payout/payout.operations.js.map +1 -0
  88. package/dist/payout/payout.presentation.d.ts +8 -0
  89. package/dist/payout/payout.presentation.d.ts.map +1 -0
  90. package/dist/payout/payout.presentation.js +60 -0
  91. package/dist/payout/payout.presentation.js.map +1 -0
  92. package/dist/payout/payout.schema.d.ts +157 -0
  93. package/dist/payout/payout.schema.d.ts.map +1 -0
  94. package/dist/payout/payout.schema.js +116 -0
  95. package/dist/payout/payout.schema.js.map +1 -0
  96. package/dist/product/index.d.ts +5 -0
  97. package/dist/product/index.js +6 -0
  98. package/dist/product/product.enum.d.ts +10 -0
  99. package/dist/product/product.enum.d.ts.map +1 -0
  100. package/dist/product/product.enum.js +18 -0
  101. package/dist/product/product.enum.js.map +1 -0
  102. package/dist/product/product.event.d.ts +73 -0
  103. package/dist/product/product.event.d.ts.map +1 -0
  104. package/dist/product/product.event.js +120 -0
  105. package/dist/product/product.event.js.map +1 -0
  106. package/dist/product/product.operations.d.ts +273 -0
  107. package/dist/product/product.operations.d.ts.map +1 -0
  108. package/dist/product/product.operations.js +108 -0
  109. package/dist/product/product.operations.js.map +1 -0
  110. package/dist/product/product.presentation.d.ts +9 -0
  111. package/dist/product/product.presentation.d.ts.map +1 -0
  112. package/dist/product/product.presentation.js +86 -0
  113. package/dist/product/product.presentation.js.map +1 -0
  114. package/dist/product/product.schema.d.ts +218 -0
  115. package/dist/product/product.schema.d.ts.map +1 -0
  116. package/dist/product/product.schema.js +176 -0
  117. package/dist/product/product.schema.js.map +1 -0
  118. package/dist/review/index.d.ts +5 -0
  119. package/dist/review/index.js +6 -0
  120. package/dist/review/review.enum.d.ts +10 -0
  121. package/dist/review/review.enum.d.ts.map +1 -0
  122. package/dist/review/review.enum.js +16 -0
  123. package/dist/review/review.enum.js.map +1 -0
  124. package/dist/review/review.event.d.ts +55 -0
  125. package/dist/review/review.event.d.ts.map +1 -0
  126. package/dist/review/review.event.js +84 -0
  127. package/dist/review/review.event.js.map +1 -0
  128. package/dist/review/review.operations.d.ts +237 -0
  129. package/dist/review/review.operations.d.ts.map +1 -0
  130. package/dist/review/review.operations.js +106 -0
  131. package/dist/review/review.operations.js.map +1 -0
  132. package/dist/review/review.presentation.d.ts +8 -0
  133. package/dist/review/review.presentation.d.ts.map +1 -0
  134. package/dist/review/review.presentation.js +60 -0
  135. package/dist/review/review.presentation.js.map +1 -0
  136. package/dist/review/review.schema.d.ts +190 -0
  137. package/dist/review/review.schema.d.ts.map +1 -0
  138. package/dist/review/review.schema.js +156 -0
  139. package/dist/review/review.schema.js.map +1 -0
  140. package/dist/seeders/index.d.ts +10 -0
  141. package/dist/seeders/index.d.ts.map +1 -0
  142. package/dist/seeders/index.js +18 -0
  143. package/dist/seeders/index.js.map +1 -0
  144. package/dist/store/index.d.ts +5 -0
  145. package/dist/store/index.js +6 -0
  146. package/dist/store/store.enum.d.ts +10 -0
  147. package/dist/store/store.enum.d.ts.map +1 -0
  148. package/dist/store/store.enum.js +16 -0
  149. package/dist/store/store.enum.js.map +1 -0
  150. package/dist/store/store.event.d.ts +51 -0
  151. package/dist/store/store.event.d.ts.map +1 -0
  152. package/dist/store/store.event.js +80 -0
  153. package/dist/store/store.event.js.map +1 -0
  154. package/dist/store/store.operations.d.ts +131 -0
  155. package/dist/store/store.operations.d.ts.map +1 -0
  156. package/dist/store/store.operations.js +61 -0
  157. package/dist/store/store.operations.js.map +1 -0
  158. package/dist/store/store.presentation.d.ts +8 -0
  159. package/dist/store/store.presentation.d.ts.map +1 -0
  160. package/dist/store/store.presentation.js +60 -0
  161. package/dist/store/store.presentation.js.map +1 -0
  162. package/dist/store/store.schema.d.ts +84 -0
  163. package/dist/store/store.schema.d.ts.map +1 -0
  164. package/dist/store/store.schema.js +93 -0
  165. package/dist/store/store.schema.js.map +1 -0
  166. package/dist/tests/operations.test-spec.d.ts +11 -0
  167. package/dist/tests/operations.test-spec.d.ts.map +1 -0
  168. package/dist/tests/operations.test-spec.js +152 -0
  169. package/dist/tests/operations.test-spec.js.map +1 -0
  170. package/dist/ui/MarketplaceDashboard.d.ts +7 -0
  171. package/dist/ui/MarketplaceDashboard.d.ts.map +1 -0
  172. package/dist/ui/MarketplaceDashboard.js +319 -0
  173. package/dist/ui/MarketplaceDashboard.js.map +1 -0
  174. package/dist/ui/hooks/index.d.ts +2 -0
  175. package/dist/ui/hooks/index.js +5 -0
  176. package/dist/ui/hooks/useMarketplaceData.d.ts +23 -0
  177. package/dist/ui/hooks/useMarketplaceData.d.ts.map +1 -0
  178. package/dist/ui/hooks/useMarketplaceData.js +64 -0
  179. package/dist/ui/hooks/useMarketplaceData.js.map +1 -0
  180. package/dist/ui/index.d.ts +6 -0
  181. package/dist/ui/index.js +6 -0
  182. package/dist/ui/renderers/index.d.ts +2 -0
  183. package/dist/ui/renderers/index.js +3 -0
  184. package/dist/ui/renderers/marketplace.markdown.d.ts +28 -0
  185. package/dist/ui/renderers/marketplace.markdown.d.ts.map +1 -0
  186. package/dist/ui/renderers/marketplace.markdown.js +244 -0
  187. package/dist/ui/renderers/marketplace.markdown.js.map +1 -0
  188. package/package.json +149 -0
@@ -0,0 +1,105 @@
1
+ import * as _contractspec_lib_schema551 from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/order.d.ts
4
+ /**
5
+ * Order status enum.
6
+ */
7
+ declare const OrderStatusEnum: _contractspec_lib_schema551.EntityEnumDef;
8
+ /**
9
+ * Payment status enum.
10
+ */
11
+ declare const PaymentStatusEnum: _contractspec_lib_schema551.EntityEnumDef;
12
+ /**
13
+ * Order entity - a purchase transaction.
14
+ */
15
+ declare const OrderEntity: _contractspec_lib_schema551.EntitySpec<{
16
+ id: _contractspec_lib_schema551.EntityScalarField;
17
+ orderNumber: _contractspec_lib_schema551.EntityScalarField;
18
+ buyerId: _contractspec_lib_schema551.EntityScalarField;
19
+ storeId: _contractspec_lib_schema551.EntityScalarField;
20
+ status: _contractspec_lib_schema551.EntityEnumField;
21
+ paymentStatus: _contractspec_lib_schema551.EntityEnumField;
22
+ subtotal: _contractspec_lib_schema551.EntityScalarField;
23
+ shippingTotal: _contractspec_lib_schema551.EntityScalarField;
24
+ taxTotal: _contractspec_lib_schema551.EntityScalarField;
25
+ discountTotal: _contractspec_lib_schema551.EntityScalarField;
26
+ total: _contractspec_lib_schema551.EntityScalarField;
27
+ currency: _contractspec_lib_schema551.EntityScalarField;
28
+ platformFee: _contractspec_lib_schema551.EntityScalarField;
29
+ sellerPayout: _contractspec_lib_schema551.EntityScalarField;
30
+ shippingAddress: _contractspec_lib_schema551.EntityScalarField;
31
+ billingAddress: _contractspec_lib_schema551.EntityScalarField;
32
+ shippingMethod: _contractspec_lib_schema551.EntityScalarField;
33
+ trackingNumber: _contractspec_lib_schema551.EntityScalarField;
34
+ trackingUrl: _contractspec_lib_schema551.EntityScalarField;
35
+ paymentMethod: _contractspec_lib_schema551.EntityScalarField;
36
+ paymentIntentId: _contractspec_lib_schema551.EntityScalarField;
37
+ buyerNote: _contractspec_lib_schema551.EntityScalarField;
38
+ sellerNote: _contractspec_lib_schema551.EntityScalarField;
39
+ internalNote: _contractspec_lib_schema551.EntityScalarField;
40
+ createdAt: _contractspec_lib_schema551.EntityScalarField;
41
+ updatedAt: _contractspec_lib_schema551.EntityScalarField;
42
+ paidAt: _contractspec_lib_schema551.EntityScalarField;
43
+ shippedAt: _contractspec_lib_schema551.EntityScalarField;
44
+ deliveredAt: _contractspec_lib_schema551.EntityScalarField;
45
+ completedAt: _contractspec_lib_schema551.EntityScalarField;
46
+ cancelledAt: _contractspec_lib_schema551.EntityScalarField;
47
+ store: _contractspec_lib_schema551.EntityRelationField;
48
+ items: _contractspec_lib_schema551.EntityRelationField;
49
+ refunds: _contractspec_lib_schema551.EntityRelationField;
50
+ }>;
51
+ /**
52
+ * Order item entity - individual items in an order.
53
+ */
54
+ declare const OrderItemEntity: _contractspec_lib_schema551.EntitySpec<{
55
+ id: _contractspec_lib_schema551.EntityScalarField;
56
+ orderId: _contractspec_lib_schema551.EntityScalarField;
57
+ productId: _contractspec_lib_schema551.EntityScalarField;
58
+ variantId: _contractspec_lib_schema551.EntityScalarField;
59
+ productName: _contractspec_lib_schema551.EntityScalarField;
60
+ variantName: _contractspec_lib_schema551.EntityScalarField;
61
+ sku: _contractspec_lib_schema551.EntityScalarField;
62
+ unitPrice: _contractspec_lib_schema551.EntityScalarField;
63
+ quantity: _contractspec_lib_schema551.EntityScalarField;
64
+ subtotal: _contractspec_lib_schema551.EntityScalarField;
65
+ quantityFulfilled: _contractspec_lib_schema551.EntityScalarField;
66
+ quantityRefunded: _contractspec_lib_schema551.EntityScalarField;
67
+ createdAt: _contractspec_lib_schema551.EntityScalarField;
68
+ updatedAt: _contractspec_lib_schema551.EntityScalarField;
69
+ order: _contractspec_lib_schema551.EntityRelationField;
70
+ product: _contractspec_lib_schema551.EntityRelationField;
71
+ }>;
72
+ /**
73
+ * Refund entity - refund records for orders.
74
+ */
75
+ declare const RefundEntity: _contractspec_lib_schema551.EntitySpec<{
76
+ id: _contractspec_lib_schema551.EntityScalarField;
77
+ orderId: _contractspec_lib_schema551.EntityScalarField;
78
+ amount: _contractspec_lib_schema551.EntityScalarField;
79
+ currency: _contractspec_lib_schema551.EntityScalarField;
80
+ reason: _contractspec_lib_schema551.EntityScalarField;
81
+ notes: _contractspec_lib_schema551.EntityScalarField;
82
+ status: _contractspec_lib_schema551.EntityScalarField;
83
+ refundId: _contractspec_lib_schema551.EntityScalarField;
84
+ issuedBy: _contractspec_lib_schema551.EntityScalarField;
85
+ createdAt: _contractspec_lib_schema551.EntityScalarField;
86
+ processedAt: _contractspec_lib_schema551.EntityScalarField;
87
+ order: _contractspec_lib_schema551.EntityRelationField;
88
+ items: _contractspec_lib_schema551.EntityRelationField;
89
+ }>;
90
+ /**
91
+ * Refund item entity - items being refunded.
92
+ */
93
+ declare const RefundItemEntity: _contractspec_lib_schema551.EntitySpec<{
94
+ id: _contractspec_lib_schema551.EntityScalarField;
95
+ refundId: _contractspec_lib_schema551.EntityScalarField;
96
+ orderItemId: _contractspec_lib_schema551.EntityScalarField;
97
+ quantity: _contractspec_lib_schema551.EntityScalarField;
98
+ amount: _contractspec_lib_schema551.EntityScalarField;
99
+ createdAt: _contractspec_lib_schema551.EntityScalarField;
100
+ refund: _contractspec_lib_schema551.EntityRelationField;
101
+ orderItem: _contractspec_lib_schema551.EntityRelationField;
102
+ }>;
103
+ //#endregion
104
+ export { OrderEntity, OrderItemEntity, OrderStatusEnum, PaymentStatusEnum, RefundEntity, RefundItemEntity };
105
+ //# sourceMappingURL=order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.d.ts","names":[],"sources":["../../src/entities/order.ts"],"sourcesContent":[],"mappings":";;;;;;AAUa,cAAA,eAgBX,EAAA,2BAAA,CAhB0B,aAgB1B;AAKF;AAiBA;;cAjBa,mBAYX,2BAAA,CAZ4B;;;;cAiBjB,yCAAW;MAsEtB,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAtEsB;EAAA,WAAA,+CAAA;EA2EX,WAAA,+CAoCX;EAAA,KAAA,iDAAA;;;;;;;cApCW,6CAAe;MAoC1B,2BAAA,CAAA;;;;;;;;yDApC0B;EAAA,QAAA,+CAAA;EAyCf,iBAsCX,+CAAA;EAAA,gBAAA,+CAAA;;;;;;;;;cAtCW,0CAAY;MAsCvB,2BAAA,CAAA;;;yDAtCuB;EAAA,MAAA,+CAAA;EA2CZ,KAAA,+CAsBX;EAAA,MAAA,+CAAA;;;;;;;;;;;cAtBW,8CAAgB;MAsB3B,2BAAA,CAAA"}
@@ -0,0 +1,173 @@
1
+ import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/order.ts
4
+ /**
5
+ * Order status enum.
6
+ */
7
+ const OrderStatusEnum = defineEntityEnum({
8
+ name: "OrderStatus",
9
+ values: [
10
+ "PENDING",
11
+ "PAID",
12
+ "PROCESSING",
13
+ "SHIPPED",
14
+ "DELIVERED",
15
+ "COMPLETED",
16
+ "CANCELLED",
17
+ "REFUNDED",
18
+ "PARTIALLY_REFUNDED",
19
+ "DISPUTED"
20
+ ],
21
+ schema: "marketplace",
22
+ description: "Status of an order."
23
+ });
24
+ /**
25
+ * Payment status enum.
26
+ */
27
+ const PaymentStatusEnum = defineEntityEnum({
28
+ name: "PaymentStatus",
29
+ values: [
30
+ "PENDING",
31
+ "AUTHORIZED",
32
+ "CAPTURED",
33
+ "FAILED",
34
+ "REFUNDED",
35
+ "VOIDED"
36
+ ],
37
+ schema: "marketplace",
38
+ description: "Status of payment."
39
+ });
40
+ /**
41
+ * Order entity - a purchase transaction.
42
+ */
43
+ const OrderEntity = defineEntity({
44
+ name: "Order",
45
+ description: "A purchase order on the marketplace.",
46
+ schema: "marketplace",
47
+ map: "order",
48
+ fields: {
49
+ id: field.id({ description: "Unique order ID" }),
50
+ orderNumber: field.string({ description: "Human-readable order number" }),
51
+ buyerId: field.foreignKey({ description: "Buyer user ID" }),
52
+ storeId: field.foreignKey({ description: "Seller store ID" }),
53
+ status: field.enum("OrderStatus", { default: "PENDING" }),
54
+ paymentStatus: field.enum("PaymentStatus", { default: "PENDING" }),
55
+ subtotal: field.decimal({ description: "Sum of item prices" }),
56
+ shippingTotal: field.decimal({ default: 0 }),
57
+ taxTotal: field.decimal({ default: 0 }),
58
+ discountTotal: field.decimal({ default: 0 }),
59
+ total: field.decimal({ description: "Final total" }),
60
+ currency: field.string({ default: "\"USD\"" }),
61
+ platformFee: field.decimal({ description: "Platform commission amount" }),
62
+ sellerPayout: field.decimal({ description: "Amount due to seller" }),
63
+ shippingAddress: field.json({ isOptional: true }),
64
+ billingAddress: field.json({ isOptional: true }),
65
+ shippingMethod: field.string({ isOptional: true }),
66
+ trackingNumber: field.string({ isOptional: true }),
67
+ trackingUrl: field.string({ isOptional: true }),
68
+ paymentMethod: field.string({ isOptional: true }),
69
+ paymentIntentId: field.string({ isOptional: true }),
70
+ buyerNote: field.string({ isOptional: true }),
71
+ sellerNote: field.string({ isOptional: true }),
72
+ internalNote: field.string({ isOptional: true }),
73
+ createdAt: field.createdAt(),
74
+ updatedAt: field.updatedAt(),
75
+ paidAt: field.dateTime({ isOptional: true }),
76
+ shippedAt: field.dateTime({ isOptional: true }),
77
+ deliveredAt: field.dateTime({ isOptional: true }),
78
+ completedAt: field.dateTime({ isOptional: true }),
79
+ cancelledAt: field.dateTime({ isOptional: true }),
80
+ store: field.belongsTo("Store", ["storeId"], ["id"]),
81
+ items: field.hasMany("OrderItem"),
82
+ refunds: field.hasMany("Refund")
83
+ },
84
+ indexes: [
85
+ index.unique(["orderNumber"]),
86
+ index.on(["buyerId", "status"]),
87
+ index.on(["storeId", "status"]),
88
+ index.on(["status", "createdAt"]),
89
+ index.on(["paymentStatus"]),
90
+ index.on(["createdAt"])
91
+ ],
92
+ enums: [OrderStatusEnum, PaymentStatusEnum]
93
+ });
94
+ /**
95
+ * Order item entity - individual items in an order.
96
+ */
97
+ const OrderItemEntity = defineEntity({
98
+ name: "OrderItem",
99
+ description: "An item within an order.",
100
+ schema: "marketplace",
101
+ map: "order_item",
102
+ fields: {
103
+ id: field.id(),
104
+ orderId: field.foreignKey(),
105
+ productId: field.foreignKey(),
106
+ variantId: field.string({ isOptional: true }),
107
+ productName: field.string(),
108
+ variantName: field.string({ isOptional: true }),
109
+ sku: field.string({ isOptional: true }),
110
+ unitPrice: field.decimal(),
111
+ quantity: field.int(),
112
+ subtotal: field.decimal(),
113
+ quantityFulfilled: field.int({ default: 0 }),
114
+ quantityRefunded: field.int({ default: 0 }),
115
+ createdAt: field.createdAt(),
116
+ updatedAt: field.updatedAt(),
117
+ order: field.belongsTo("Order", ["orderId"], ["id"], { onDelete: "Cascade" }),
118
+ product: field.belongsTo("Product", ["productId"], ["id"])
119
+ },
120
+ indexes: [index.on(["orderId"]), index.on(["productId"])]
121
+ });
122
+ /**
123
+ * Refund entity - refund records for orders.
124
+ */
125
+ const RefundEntity = defineEntity({
126
+ name: "Refund",
127
+ description: "A refund for an order.",
128
+ schema: "marketplace",
129
+ map: "refund",
130
+ fields: {
131
+ id: field.id(),
132
+ orderId: field.foreignKey(),
133
+ amount: field.decimal(),
134
+ currency: field.string(),
135
+ reason: field.string(),
136
+ notes: field.string({ isOptional: true }),
137
+ status: field.string({ default: "\"PENDING\"" }),
138
+ refundId: field.string({
139
+ isOptional: true,
140
+ description: "Payment provider refund ID"
141
+ }),
142
+ issuedBy: field.foreignKey({ description: "User who issued the refund" }),
143
+ createdAt: field.createdAt(),
144
+ processedAt: field.dateTime({ isOptional: true }),
145
+ order: field.belongsTo("Order", ["orderId"], ["id"]),
146
+ items: field.hasMany("RefundItem")
147
+ },
148
+ indexes: [index.on(["orderId"]), index.on(["status"])]
149
+ });
150
+ /**
151
+ * Refund item entity - items being refunded.
152
+ */
153
+ const RefundItemEntity = defineEntity({
154
+ name: "RefundItem",
155
+ description: "An item within a refund.",
156
+ schema: "marketplace",
157
+ map: "refund_item",
158
+ fields: {
159
+ id: field.id(),
160
+ refundId: field.foreignKey(),
161
+ orderItemId: field.foreignKey(),
162
+ quantity: field.int(),
163
+ amount: field.decimal(),
164
+ createdAt: field.createdAt(),
165
+ refund: field.belongsTo("Refund", ["refundId"], ["id"], { onDelete: "Cascade" }),
166
+ orderItem: field.belongsTo("OrderItem", ["orderItemId"], ["id"])
167
+ },
168
+ indexes: [index.on(["refundId"]), index.on(["orderItemId"])]
169
+ });
170
+
171
+ //#endregion
172
+ export { OrderEntity, OrderItemEntity, OrderStatusEnum, PaymentStatusEnum, RefundEntity, RefundItemEntity };
173
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","names":[],"sources":["../../src/entities/order.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\n\n/**\n * Order status enum.\n */\nexport const OrderStatusEnum = defineEntityEnum({\n name: 'OrderStatus',\n values: [\n 'PENDING', // Order created, awaiting payment\n 'PAID', // Payment received\n 'PROCESSING', // Being prepared by seller\n 'SHIPPED', // Shipped to buyer\n 'DELIVERED', // Delivered to buyer\n 'COMPLETED', // Order finalized\n 'CANCELLED', // Cancelled by buyer or seller\n 'REFUNDED', // Full refund issued\n 'PARTIALLY_REFUNDED', // Partial refund issued\n 'DISPUTED', // In dispute\n ] as const,\n schema: 'marketplace',\n description: 'Status of an order.',\n});\n\n/**\n * Payment status enum.\n */\nexport const PaymentStatusEnum = defineEntityEnum({\n name: 'PaymentStatus',\n values: [\n 'PENDING',\n 'AUTHORIZED',\n 'CAPTURED',\n 'FAILED',\n 'REFUNDED',\n 'VOIDED',\n ] as const,\n schema: 'marketplace',\n description: 'Status of payment.',\n});\n\n/**\n * Order entity - a purchase transaction.\n */\nexport const OrderEntity = defineEntity({\n name: 'Order',\n description: 'A purchase order on the marketplace.',\n schema: 'marketplace',\n map: 'order',\n fields: {\n id: field.id({ description: 'Unique order ID' }),\n\n // Reference\n orderNumber: field.string({ description: 'Human-readable order number' }),\n\n // Parties\n buyerId: field.foreignKey({ description: 'Buyer user ID' }),\n storeId: field.foreignKey({ description: 'Seller store ID' }),\n\n // Status\n status: field.enum('OrderStatus', { default: 'PENDING' }),\n paymentStatus: field.enum('PaymentStatus', { default: 'PENDING' }),\n\n // Totals\n subtotal: field.decimal({ description: 'Sum of item prices' }),\n shippingTotal: field.decimal({ default: 0 }),\n taxTotal: field.decimal({ default: 0 }),\n discountTotal: field.decimal({ default: 0 }),\n total: field.decimal({ description: 'Final total' }),\n currency: field.string({ default: '\"USD\"' }),\n\n // Commission\n platformFee: field.decimal({ description: 'Platform commission amount' }),\n sellerPayout: field.decimal({ description: 'Amount due to seller' }),\n\n // Shipping\n shippingAddress: field.json({ isOptional: true }),\n billingAddress: field.json({ isOptional: true }),\n shippingMethod: field.string({ isOptional: true }),\n trackingNumber: field.string({ isOptional: true }),\n trackingUrl: field.string({ isOptional: true }),\n\n // Payment\n paymentMethod: field.string({ isOptional: true }),\n paymentIntentId: field.string({ isOptional: true }),\n\n // Notes\n buyerNote: field.string({ isOptional: true }),\n sellerNote: field.string({ isOptional: true }),\n internalNote: field.string({ isOptional: true }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n paidAt: field.dateTime({ isOptional: true }),\n shippedAt: field.dateTime({ isOptional: true }),\n deliveredAt: field.dateTime({ isOptional: true }),\n completedAt: field.dateTime({ isOptional: true }),\n cancelledAt: field.dateTime({ isOptional: true }),\n\n // Relations\n store: field.belongsTo('Store', ['storeId'], ['id']),\n items: field.hasMany('OrderItem'),\n refunds: field.hasMany('Refund'),\n },\n indexes: [\n index.unique(['orderNumber']),\n index.on(['buyerId', 'status']),\n index.on(['storeId', 'status']),\n index.on(['status', 'createdAt']),\n index.on(['paymentStatus']),\n index.on(['createdAt']),\n ],\n enums: [OrderStatusEnum, PaymentStatusEnum],\n});\n\n/**\n * Order item entity - individual items in an order.\n */\nexport const OrderItemEntity = defineEntity({\n name: 'OrderItem',\n description: 'An item within an order.',\n schema: 'marketplace',\n map: 'order_item',\n fields: {\n id: field.id(),\n orderId: field.foreignKey(),\n productId: field.foreignKey(),\n variantId: field.string({ isOptional: true }),\n\n // Snapshot at time of purchase\n productName: field.string(),\n variantName: field.string({ isOptional: true }),\n sku: field.string({ isOptional: true }),\n\n // Pricing\n unitPrice: field.decimal(),\n quantity: field.int(),\n subtotal: field.decimal(),\n\n // Fulfillment\n quantityFulfilled: field.int({ default: 0 }),\n quantityRefunded: field.int({ default: 0 }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n order: field.belongsTo('Order', ['orderId'], ['id'], {\n onDelete: 'Cascade',\n }),\n product: field.belongsTo('Product', ['productId'], ['id']),\n },\n indexes: [index.on(['orderId']), index.on(['productId'])],\n});\n\n/**\n * Refund entity - refund records for orders.\n */\nexport const RefundEntity = defineEntity({\n name: 'Refund',\n description: 'A refund for an order.',\n schema: 'marketplace',\n map: 'refund',\n fields: {\n id: field.id(),\n orderId: field.foreignKey(),\n\n // Amount\n amount: field.decimal(),\n currency: field.string(),\n\n // Reason\n reason: field.string(),\n notes: field.string({ isOptional: true }),\n\n // Status\n status: field.string({ default: '\"PENDING\"' }),\n\n // Payment\n refundId: field.string({\n isOptional: true,\n description: 'Payment provider refund ID',\n }),\n\n // Actor\n issuedBy: field.foreignKey({ description: 'User who issued the refund' }),\n\n // Timestamps\n createdAt: field.createdAt(),\n processedAt: field.dateTime({ isOptional: true }),\n\n // Relations\n order: field.belongsTo('Order', ['orderId'], ['id']),\n items: field.hasMany('RefundItem'),\n },\n indexes: [index.on(['orderId']), index.on(['status'])],\n});\n\n/**\n * Refund item entity - items being refunded.\n */\nexport const RefundItemEntity = defineEntity({\n name: 'RefundItem',\n description: 'An item within a refund.',\n schema: 'marketplace',\n map: 'refund_item',\n fields: {\n id: field.id(),\n refundId: field.foreignKey(),\n orderItemId: field.foreignKey(),\n\n quantity: field.int(),\n amount: field.decimal(),\n\n createdAt: field.createdAt(),\n\n // Relations\n refund: field.belongsTo('Refund', ['refundId'], ['id'], {\n onDelete: 'Cascade',\n }),\n orderItem: field.belongsTo('OrderItem', ['orderItemId'], ['id']),\n },\n indexes: [index.on(['refundId']), index.on(['orderItemId'])],\n});\n"],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ import * as _contractspec_lib_schema628 from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/payout.d.ts
4
+ /**
5
+ * Payout status enum.
6
+ */
7
+ declare const PayoutStatusEnum: _contractspec_lib_schema628.EntityEnumDef;
8
+ /**
9
+ * Payout schedule enum.
10
+ */
11
+ declare const PayoutScheduleEnum: _contractspec_lib_schema628.EntityEnumDef;
12
+ /**
13
+ * Payout entity - payment to seller.
14
+ */
15
+ declare const PayoutEntity: _contractspec_lib_schema628.EntitySpec<{
16
+ id: _contractspec_lib_schema628.EntityScalarField;
17
+ storeId: _contractspec_lib_schema628.EntityScalarField;
18
+ payoutNumber: _contractspec_lib_schema628.EntityScalarField;
19
+ status: _contractspec_lib_schema628.EntityEnumField;
20
+ grossAmount: _contractspec_lib_schema628.EntityScalarField;
21
+ platformFees: _contractspec_lib_schema628.EntityScalarField;
22
+ otherDeductions: _contractspec_lib_schema628.EntityScalarField;
23
+ netAmount: _contractspec_lib_schema628.EntityScalarField;
24
+ currency: _contractspec_lib_schema628.EntityScalarField;
25
+ periodStart: _contractspec_lib_schema628.EntityScalarField;
26
+ periodEnd: _contractspec_lib_schema628.EntityScalarField;
27
+ paymentMethod: _contractspec_lib_schema628.EntityScalarField;
28
+ paymentReference: _contractspec_lib_schema628.EntityScalarField;
29
+ bankAccountId: _contractspec_lib_schema628.EntityScalarField;
30
+ bankAccountLast4: _contractspec_lib_schema628.EntityScalarField;
31
+ notes: _contractspec_lib_schema628.EntityScalarField;
32
+ failureReason: _contractspec_lib_schema628.EntityScalarField;
33
+ orderCount: _contractspec_lib_schema628.EntityScalarField;
34
+ createdAt: _contractspec_lib_schema628.EntityScalarField;
35
+ updatedAt: _contractspec_lib_schema628.EntityScalarField;
36
+ scheduledAt: _contractspec_lib_schema628.EntityScalarField;
37
+ processedAt: _contractspec_lib_schema628.EntityScalarField;
38
+ paidAt: _contractspec_lib_schema628.EntityScalarField;
39
+ store: _contractspec_lib_schema628.EntityRelationField;
40
+ items: _contractspec_lib_schema628.EntityRelationField;
41
+ }>;
42
+ /**
43
+ * Payout item entity - orders included in a payout.
44
+ */
45
+ declare const PayoutItemEntity: _contractspec_lib_schema628.EntitySpec<{
46
+ id: _contractspec_lib_schema628.EntityScalarField;
47
+ payoutId: _contractspec_lib_schema628.EntityScalarField;
48
+ orderId: _contractspec_lib_schema628.EntityScalarField;
49
+ orderTotal: _contractspec_lib_schema628.EntityScalarField;
50
+ platformFee: _contractspec_lib_schema628.EntityScalarField;
51
+ netAmount: _contractspec_lib_schema628.EntityScalarField;
52
+ createdAt: _contractspec_lib_schema628.EntityScalarField;
53
+ payout: _contractspec_lib_schema628.EntityRelationField;
54
+ order: _contractspec_lib_schema628.EntityRelationField;
55
+ }>;
56
+ /**
57
+ * Bank account entity - seller payment destinations.
58
+ */
59
+ declare const BankAccountEntity: _contractspec_lib_schema628.EntitySpec<{
60
+ id: _contractspec_lib_schema628.EntityScalarField;
61
+ storeId: _contractspec_lib_schema628.EntityScalarField;
62
+ accountHolderName: _contractspec_lib_schema628.EntityScalarField;
63
+ accountType: _contractspec_lib_schema628.EntityScalarField;
64
+ bankName: _contractspec_lib_schema628.EntityScalarField;
65
+ last4: _contractspec_lib_schema628.EntityScalarField;
66
+ routingLast4: _contractspec_lib_schema628.EntityScalarField;
67
+ externalId: _contractspec_lib_schema628.EntityScalarField;
68
+ isDefault: _contractspec_lib_schema628.EntityScalarField;
69
+ isVerified: _contractspec_lib_schema628.EntityScalarField;
70
+ createdAt: _contractspec_lib_schema628.EntityScalarField;
71
+ updatedAt: _contractspec_lib_schema628.EntityScalarField;
72
+ verifiedAt: _contractspec_lib_schema628.EntityScalarField;
73
+ store: _contractspec_lib_schema628.EntityRelationField;
74
+ }>;
75
+ /**
76
+ * Payout settings entity - store payout configuration.
77
+ */
78
+ declare const PayoutSettingsEntity: _contractspec_lib_schema628.EntitySpec<{
79
+ id: _contractspec_lib_schema628.EntityScalarField;
80
+ storeId: _contractspec_lib_schema628.EntityScalarField;
81
+ schedule: _contractspec_lib_schema628.EntityEnumField;
82
+ dayOfWeek: _contractspec_lib_schema628.EntityScalarField;
83
+ dayOfMonth: _contractspec_lib_schema628.EntityScalarField;
84
+ minimumPayout: _contractspec_lib_schema628.EntityScalarField;
85
+ defaultBankAccountId: _contractspec_lib_schema628.EntityScalarField;
86
+ createdAt: _contractspec_lib_schema628.EntityScalarField;
87
+ updatedAt: _contractspec_lib_schema628.EntityScalarField;
88
+ store: _contractspec_lib_schema628.EntityRelationField;
89
+ }>;
90
+ //#endregion
91
+ export { BankAccountEntity, PayoutEntity, PayoutItemEntity, PayoutScheduleEnum, PayoutSettingsEntity, PayoutStatusEnum };
92
+ //# sourceMappingURL=payout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payout.d.ts","names":[],"sources":["../../src/entities/payout.ts"],"sourcesContent":[],"mappings":";;;;;;AAUa,cAAA,gBAKX,EAAA,2BAAA,CAL2B,aAK3B;AAKF;AAUA;;cAVa,oBAKX,2BAAA,CAL6B;;;;cAUlB,0CAAY;MA6DvB,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;0DA7DuB;EAAA,WAAA,+CAAA;EAkEZ,WAAA,+CAwBX;EAAA,MAAA,+CAAA;;;;;;;cAxBW,8CAAgB;MAwB3B,2BAAA,CAAA;yDAxB2B;EAAA,OAAA,+CAAA;EA6BhB,UAAA,+CAqCX;EAAA,WAAA,+CAAA;;;;;;;;;cArCW,+CAAiB;MAqC5B,2BAAA,CAAA;;;;yDArC4B;EAAA,KAAA,+CAAA;EA0CjB,YAAA,+CAsCX;EAAA,UAAA,+CAAA;;;;;;;;;;;AAtC+B,cAApB,oBAAoB,8BAAA,UAAA,CAAA;MAsC/B,2BAAA,CAAA"}
@@ -0,0 +1,162 @@
1
+ import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
2
+
3
+ //#region src/entities/payout.ts
4
+ /**
5
+ * Payout status enum.
6
+ */
7
+ const PayoutStatusEnum = defineEntityEnum({
8
+ name: "PayoutStatus",
9
+ values: [
10
+ "PENDING",
11
+ "PROCESSING",
12
+ "PAID",
13
+ "FAILED",
14
+ "CANCELLED"
15
+ ],
16
+ schema: "marketplace",
17
+ description: "Status of a payout."
18
+ });
19
+ /**
20
+ * Payout schedule enum.
21
+ */
22
+ const PayoutScheduleEnum = defineEntityEnum({
23
+ name: "PayoutSchedule",
24
+ values: [
25
+ "DAILY",
26
+ "WEEKLY",
27
+ "BIWEEKLY",
28
+ "MONTHLY",
29
+ "MANUAL"
30
+ ],
31
+ schema: "marketplace",
32
+ description: "Payout schedule frequency."
33
+ });
34
+ /**
35
+ * Payout entity - payment to seller.
36
+ */
37
+ const PayoutEntity = defineEntity({
38
+ name: "Payout",
39
+ description: "A payout to a seller.",
40
+ schema: "marketplace",
41
+ map: "payout",
42
+ fields: {
43
+ id: field.id({ description: "Unique payout ID" }),
44
+ storeId: field.foreignKey(),
45
+ payoutNumber: field.string({ description: "Human-readable payout number" }),
46
+ status: field.enum("PayoutStatus", { default: "PENDING" }),
47
+ grossAmount: field.decimal({ description: "Total before fees" }),
48
+ platformFees: field.decimal({ description: "Platform fees deducted" }),
49
+ otherDeductions: field.decimal({ default: 0 }),
50
+ netAmount: field.decimal({ description: "Final payout amount" }),
51
+ currency: field.string({ default: "\"USD\"" }),
52
+ periodStart: field.dateTime({ description: "Start of payout period" }),
53
+ periodEnd: field.dateTime({ description: "End of payout period" }),
54
+ paymentMethod: field.string({ isOptional: true }),
55
+ paymentReference: field.string({ isOptional: true }),
56
+ bankAccountId: field.string({ isOptional: true }),
57
+ bankAccountLast4: field.string({ isOptional: true }),
58
+ notes: field.string({ isOptional: true }),
59
+ failureReason: field.string({ isOptional: true }),
60
+ orderCount: field.int({ default: 0 }),
61
+ createdAt: field.createdAt(),
62
+ updatedAt: field.updatedAt(),
63
+ scheduledAt: field.dateTime({ isOptional: true }),
64
+ processedAt: field.dateTime({ isOptional: true }),
65
+ paidAt: field.dateTime({ isOptional: true }),
66
+ store: field.belongsTo("Store", ["storeId"], ["id"]),
67
+ items: field.hasMany("PayoutItem")
68
+ },
69
+ indexes: [
70
+ index.unique(["payoutNumber"]),
71
+ index.on(["storeId", "status"]),
72
+ index.on(["status", "scheduledAt"]),
73
+ index.on(["periodStart", "periodEnd"])
74
+ ],
75
+ enums: [PayoutStatusEnum]
76
+ });
77
+ /**
78
+ * Payout item entity - orders included in a payout.
79
+ */
80
+ const PayoutItemEntity = defineEntity({
81
+ name: "PayoutItem",
82
+ description: "An order included in a payout.",
83
+ schema: "marketplace",
84
+ map: "payout_item",
85
+ fields: {
86
+ id: field.id(),
87
+ payoutId: field.foreignKey(),
88
+ orderId: field.foreignKey(),
89
+ orderTotal: field.decimal(),
90
+ platformFee: field.decimal(),
91
+ netAmount: field.decimal(),
92
+ createdAt: field.createdAt(),
93
+ payout: field.belongsTo("Payout", ["payoutId"], ["id"], { onDelete: "Cascade" }),
94
+ order: field.belongsTo("Order", ["orderId"], ["id"])
95
+ },
96
+ indexes: [index.on(["payoutId"]), index.on(["orderId"])]
97
+ });
98
+ /**
99
+ * Bank account entity - seller payment destinations.
100
+ */
101
+ const BankAccountEntity = defineEntity({
102
+ name: "BankAccount",
103
+ description: "A bank account for receiving payouts.",
104
+ schema: "marketplace",
105
+ map: "bank_account",
106
+ fields: {
107
+ id: field.id(),
108
+ storeId: field.foreignKey(),
109
+ accountHolderName: field.string(),
110
+ accountType: field.string({ default: "\"CHECKING\"" }),
111
+ bankName: field.string({ isOptional: true }),
112
+ last4: field.string({ description: "Last 4 digits of account" }),
113
+ routingLast4: field.string({ isOptional: true }),
114
+ externalId: field.string({
115
+ isOptional: true,
116
+ description: "External provider account ID"
117
+ }),
118
+ isDefault: field.boolean({ default: false }),
119
+ isVerified: field.boolean({ default: false }),
120
+ createdAt: field.createdAt(),
121
+ updatedAt: field.updatedAt(),
122
+ verifiedAt: field.dateTime({ isOptional: true }),
123
+ store: field.belongsTo("Store", ["storeId"], ["id"])
124
+ },
125
+ indexes: [index.on(["storeId", "isDefault"]), index.on(["externalId"])]
126
+ });
127
+ /**
128
+ * Payout settings entity - store payout configuration.
129
+ */
130
+ const PayoutSettingsEntity = defineEntity({
131
+ name: "PayoutSettings",
132
+ description: "Payout configuration for a store.",
133
+ schema: "marketplace",
134
+ map: "payout_settings",
135
+ fields: {
136
+ id: field.id(),
137
+ storeId: field.foreignKey(),
138
+ schedule: field.enum("PayoutSchedule", { default: "WEEKLY" }),
139
+ dayOfWeek: field.int({
140
+ isOptional: true,
141
+ description: "Day for weekly/biweekly (0=Sunday)"
142
+ }),
143
+ dayOfMonth: field.int({
144
+ isOptional: true,
145
+ description: "Day for monthly (1-28)"
146
+ }),
147
+ minimumPayout: field.decimal({
148
+ default: 50,
149
+ description: "Minimum amount for payout"
150
+ }),
151
+ defaultBankAccountId: field.string({ isOptional: true }),
152
+ createdAt: field.createdAt(),
153
+ updatedAt: field.updatedAt(),
154
+ store: field.belongsTo("Store", ["storeId"], ["id"])
155
+ },
156
+ indexes: [index.unique(["storeId"])],
157
+ enums: [PayoutScheduleEnum]
158
+ });
159
+
160
+ //#endregion
161
+ export { BankAccountEntity, PayoutEntity, PayoutItemEntity, PayoutScheduleEnum, PayoutSettingsEntity, PayoutStatusEnum };
162
+ //# sourceMappingURL=payout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payout.js","names":[],"sources":["../../src/entities/payout.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\n\n/**\n * Payout status enum.\n */\nexport const PayoutStatusEnum = defineEntityEnum({\n name: 'PayoutStatus',\n values: ['PENDING', 'PROCESSING', 'PAID', 'FAILED', 'CANCELLED'] as const,\n schema: 'marketplace',\n description: 'Status of a payout.',\n});\n\n/**\n * Payout schedule enum.\n */\nexport const PayoutScheduleEnum = defineEntityEnum({\n name: 'PayoutSchedule',\n values: ['DAILY', 'WEEKLY', 'BIWEEKLY', 'MONTHLY', 'MANUAL'] as const,\n schema: 'marketplace',\n description: 'Payout schedule frequency.',\n});\n\n/**\n * Payout entity - payment to seller.\n */\nexport const PayoutEntity = defineEntity({\n name: 'Payout',\n description: 'A payout to a seller.',\n schema: 'marketplace',\n map: 'payout',\n fields: {\n id: field.id({ description: 'Unique payout ID' }),\n\n // Store\n storeId: field.foreignKey(),\n\n // Reference\n payoutNumber: field.string({ description: 'Human-readable payout number' }),\n\n // Status\n status: field.enum('PayoutStatus', { default: 'PENDING' }),\n\n // Amount\n grossAmount: field.decimal({ description: 'Total before fees' }),\n platformFees: field.decimal({ description: 'Platform fees deducted' }),\n otherDeductions: field.decimal({ default: 0 }),\n netAmount: field.decimal({ description: 'Final payout amount' }),\n currency: field.string({ default: '\"USD\"' }),\n\n // Period\n periodStart: field.dateTime({ description: 'Start of payout period' }),\n periodEnd: field.dateTime({ description: 'End of payout period' }),\n\n // Payment details\n paymentMethod: field.string({ isOptional: true }),\n paymentReference: field.string({ isOptional: true }),\n\n // Bank account (snapshot)\n bankAccountId: field.string({ isOptional: true }),\n bankAccountLast4: field.string({ isOptional: true }),\n\n // Notes\n notes: field.string({ isOptional: true }),\n failureReason: field.string({ isOptional: true }),\n\n // Stats\n orderCount: field.int({ default: 0 }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n scheduledAt: field.dateTime({ isOptional: true }),\n processedAt: field.dateTime({ isOptional: true }),\n paidAt: field.dateTime({ isOptional: true }),\n\n // Relations\n store: field.belongsTo('Store', ['storeId'], ['id']),\n items: field.hasMany('PayoutItem'),\n },\n indexes: [\n index.unique(['payoutNumber']),\n index.on(['storeId', 'status']),\n index.on(['status', 'scheduledAt']),\n index.on(['periodStart', 'periodEnd']),\n ],\n enums: [PayoutStatusEnum],\n});\n\n/**\n * Payout item entity - orders included in a payout.\n */\nexport const PayoutItemEntity = defineEntity({\n name: 'PayoutItem',\n description: 'An order included in a payout.',\n schema: 'marketplace',\n map: 'payout_item',\n fields: {\n id: field.id(),\n payoutId: field.foreignKey(),\n orderId: field.foreignKey(),\n\n // Amounts\n orderTotal: field.decimal(),\n platformFee: field.decimal(),\n netAmount: field.decimal(),\n\n createdAt: field.createdAt(),\n\n // Relations\n payout: field.belongsTo('Payout', ['payoutId'], ['id'], {\n onDelete: 'Cascade',\n }),\n order: field.belongsTo('Order', ['orderId'], ['id']),\n },\n indexes: [index.on(['payoutId']), index.on(['orderId'])],\n});\n\n/**\n * Bank account entity - seller payment destinations.\n */\nexport const BankAccountEntity = defineEntity({\n name: 'BankAccount',\n description: 'A bank account for receiving payouts.',\n schema: 'marketplace',\n map: 'bank_account',\n fields: {\n id: field.id(),\n storeId: field.foreignKey(),\n\n // Account info\n accountHolderName: field.string(),\n accountType: field.string({ default: '\"CHECKING\"' }),\n bankName: field.string({ isOptional: true }),\n\n // Masked details\n last4: field.string({ description: 'Last 4 digits of account' }),\n routingLast4: field.string({ isOptional: true }),\n\n // Provider reference\n externalId: field.string({\n isOptional: true,\n description: 'External provider account ID',\n }),\n\n // Status\n isDefault: field.boolean({ default: false }),\n isVerified: field.boolean({ default: false }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n verifiedAt: field.dateTime({ isOptional: true }),\n\n // Relations\n store: field.belongsTo('Store', ['storeId'], ['id']),\n },\n indexes: [index.on(['storeId', 'isDefault']), index.on(['externalId'])],\n});\n\n/**\n * Payout settings entity - store payout configuration.\n */\nexport const PayoutSettingsEntity = defineEntity({\n name: 'PayoutSettings',\n description: 'Payout configuration for a store.',\n schema: 'marketplace',\n map: 'payout_settings',\n fields: {\n id: field.id(),\n storeId: field.foreignKey(),\n\n // Schedule\n schedule: field.enum('PayoutSchedule', { default: 'WEEKLY' }),\n dayOfWeek: field.int({\n isOptional: true,\n description: 'Day for weekly/biweekly (0=Sunday)',\n }),\n dayOfMonth: field.int({\n isOptional: true,\n description: 'Day for monthly (1-28)',\n }),\n\n // Thresholds\n minimumPayout: field.decimal({\n default: 50,\n description: 'Minimum amount for payout',\n }),\n\n // Default account\n defaultBankAccountId: field.string({ isOptional: true }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n\n // Relations\n store: field.belongsTo('Store', ['storeId'], ['id']),\n },\n indexes: [index.unique(['storeId'])],\n enums: [PayoutScheduleEnum],\n});\n"],"mappings":"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"}