@ottochain/sdk 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/cjs/apps/contracts/index.js +1 -1
  2. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +272 -0
  3. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +284 -0
  4. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +93 -0
  5. package/dist/cjs/apps/contracts/state-machines/index.js +177 -1
  6. package/dist/cjs/apps/corporate/state-machines/corp-board.js +1022 -0
  7. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +671 -0
  8. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +998 -0
  9. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +1102 -0
  10. package/dist/cjs/apps/corporate/state-machines/index.js +20 -4440
  11. package/dist/cjs/apps/governance/index.js +7 -7
  12. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +467 -0
  13. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +458 -0
  14. package/dist/cjs/apps/governance/state-machines/dao-single.js +199 -0
  15. package/dist/cjs/apps/governance/state-machines/dao-token.js +503 -0
  16. package/dist/cjs/apps/governance/state-machines/governance-simple.js +482 -0
  17. package/dist/cjs/apps/governance/state-machines/governance-universal.js +138 -0
  18. package/dist/cjs/apps/governance/state-machines/index.js +16 -2934
  19. package/dist/cjs/apps/identity/constants.js +28 -14
  20. package/dist/cjs/apps/identity/index.js +27 -12
  21. package/dist/cjs/apps/identity/state-machines/identity-agent.js +256 -0
  22. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +321 -0
  23. package/dist/cjs/apps/identity/state-machines/identity-universal.js +106 -0
  24. package/dist/cjs/apps/identity/state-machines/index.js +15 -784
  25. package/dist/cjs/apps/markets/index.js +1 -1
  26. package/dist/cjs/apps/markets/state-machines/index.js +14 -2298
  27. package/dist/cjs/apps/markets/state-machines/market-auction.js +283 -0
  28. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +312 -0
  29. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +407 -0
  30. package/dist/cjs/apps/markets/state-machines/market-prediction.js +485 -0
  31. package/dist/cjs/apps/markets/state-machines/market-universal.js +129 -0
  32. package/dist/cjs/apps/oracles/index.js +36 -0
  33. package/dist/cjs/generated/google/protobuf/struct.js +1 -1
  34. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  35. package/dist/cjs/generated/index.js +26 -22
  36. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  37. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  38. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +1 -1
  39. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +12 -12
  40. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +1688 -0
  41. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1 -1
  42. package/dist/cjs/generated/ottochain/v1/common.js +1 -1
  43. package/dist/cjs/generated/ottochain/v1/fiber.js +1 -1
  44. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  45. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  46. package/dist/cjs/schema/fiber-app.js +95 -0
  47. package/dist/cjs/schema/index.js +20 -0
  48. package/dist/esm/apps/contracts/index.js +3 -3
  49. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +269 -0
  50. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +281 -0
  51. package/dist/esm/apps/contracts/state-machines/contract-universal.js +90 -0
  52. package/dist/esm/apps/contracts/state-machines/index.js +177 -1
  53. package/dist/esm/apps/corporate/index.js +3 -3
  54. package/dist/esm/apps/corporate/state-machines/corp-board.js +1019 -0
  55. package/dist/esm/apps/corporate/state-machines/corp-entity.js +668 -0
  56. package/dist/esm/apps/corporate/state-machines/corp-securities.js +995 -0
  57. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +1099 -0
  58. package/dist/esm/apps/corporate/state-machines/index.js +15 -4439
  59. package/dist/esm/apps/governance/index.js +9 -9
  60. package/dist/esm/apps/governance/state-machines/dao-multisig.js +464 -0
  61. package/dist/esm/apps/governance/state-machines/dao-reputation.js +455 -0
  62. package/dist/esm/apps/governance/state-machines/dao-single.js +196 -0
  63. package/dist/esm/apps/governance/state-machines/dao-token.js +500 -0
  64. package/dist/esm/apps/governance/state-machines/governance-simple.js +479 -0
  65. package/dist/esm/apps/governance/state-machines/governance-universal.js +135 -0
  66. package/dist/esm/apps/governance/state-machines/index.js +9 -2933
  67. package/dist/esm/apps/identity/constants.js +28 -14
  68. package/dist/esm/apps/identity/index.js +7 -5
  69. package/dist/esm/apps/identity/state-machines/identity-agent.js +253 -0
  70. package/dist/esm/apps/identity/state-machines/identity-oracle.js +318 -0
  71. package/dist/esm/apps/identity/state-machines/identity-universal.js +103 -0
  72. package/dist/esm/apps/identity/state-machines/index.js +11 -783
  73. package/dist/esm/apps/index.js +5 -5
  74. package/dist/esm/apps/markets/index.js +3 -3
  75. package/dist/esm/apps/markets/state-machines/index.js +8 -2297
  76. package/dist/esm/apps/markets/state-machines/market-auction.js +280 -0
  77. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +309 -0
  78. package/dist/esm/apps/markets/state-machines/market-group-buy.js +404 -0
  79. package/dist/esm/apps/markets/state-machines/market-prediction.js +482 -0
  80. package/dist/esm/apps/markets/state-machines/market-universal.js +126 -0
  81. package/dist/esm/apps/oracles/index.js +21 -0
  82. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  83. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  84. package/dist/esm/generated/index.js +8 -4
  85. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  86. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  87. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  88. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +2 -2
  89. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +1676 -0
  90. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1 -1
  91. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  92. package/dist/esm/generated/ottochain/v1/fiber.js +1 -1
  93. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  94. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  95. package/dist/esm/schema/fiber-app.js +86 -0
  96. package/dist/esm/schema/index.js +4 -0
  97. package/dist/types/apps/contracts/index.d.ts +151 -2
  98. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +462 -0
  99. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +511 -0
  100. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +147 -0
  101. package/dist/types/apps/contracts/state-machines/index.d.ts +149 -0
  102. package/dist/types/apps/corporate/index.d.ts +5263 -3825
  103. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +1479 -0
  104. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +970 -0
  105. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +1381 -0
  106. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +1631 -0
  107. package/dist/types/apps/corporate/state-machines/index.d.ts +5245 -3802
  108. package/dist/types/apps/governance/index.d.ts +875 -37
  109. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +644 -0
  110. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +610 -0
  111. package/dist/types/apps/governance/state-machines/dao-single.d.ts +276 -0
  112. package/dist/types/apps/governance/state-machines/dao-token.d.ts +601 -0
  113. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +652 -0
  114. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +181 -0
  115. package/dist/types/apps/governance/state-machines/index.d.ts +9 -2136
  116. package/dist/types/apps/identity/constants.d.ts +8 -6
  117. package/dist/types/apps/identity/index.d.ts +1078 -577
  118. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +401 -0
  119. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +550 -0
  120. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +151 -0
  121. package/dist/types/apps/identity/state-machines/index.d.ts +1069 -567
  122. package/dist/types/apps/index.d.ts +5 -5
  123. package/dist/types/apps/markets/index.d.ts +535 -7
  124. package/dist/types/apps/markets/state-machines/index.d.ts +8 -1678
  125. package/dist/types/apps/markets/state-machines/market-auction.d.ts +392 -0
  126. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +443 -0
  127. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +539 -0
  128. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +651 -0
  129. package/dist/types/apps/markets/state-machines/market-universal.d.ts +191 -0
  130. package/dist/types/apps/oracles/index.d.ts +18 -0
  131. package/dist/types/generated/index.d.ts +3 -2
  132. package/dist/types/generated/ottochain/apps/identity/v1/attestation.d.ts +1 -1
  133. package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +187 -0
  134. package/dist/types/schema/fiber-app.d.ts +172 -0
  135. package/dist/types/schema/index.d.ts +4 -0
  136. package/package.json +1 -1
  137. package/dist/cjs/generated/ottochain/apps/identity/v1/agent.js +0 -619
  138. package/dist/cjs/generated/ottochain/apps/oracles/v1/oracle.js +0 -1223
  139. package/dist/esm/generated/ottochain/apps/identity/v1/agent.js +0 -610
  140. package/dist/esm/generated/ottochain/apps/oracles/v1/oracle.js +0 -1217
  141. package/dist/types/generated/ottochain/apps/identity/v1/agent.d.ts +0 -94
  142. package/dist/types/generated/ottochain/apps/oracles/v1/oracle.d.ts +0 -150
@@ -0,0 +1,281 @@
1
+ import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ /**
3
+ * Asset custody with conditional release, dispute resolution, and split payments.
4
+ */
5
+ export const contractEscrowDef = defineFiberApp({
6
+ metadata: {
7
+ name: "ContractEscrow",
8
+ app: "contracts",
9
+ type: "escrow",
10
+ version: "1.0.0",
11
+ description: "Asset custody with conditional release, dispute resolution, and split payments",
12
+ crossReferences: {
13
+ contractId: {
14
+ machine: "contract-agreement",
15
+ field: "contractId",
16
+ description: "Links to Contract SM that created this escrow",
17
+ },
18
+ marketId: {
19
+ machine: "market-universal",
20
+ field: "marketId",
21
+ description: "Links to Market SM for market-based escrow",
22
+ },
23
+ insuranceId: {
24
+ machine: "insurance",
25
+ field: "insuranceId",
26
+ description: "Links to Insurance SM for protected escrow",
27
+ },
28
+ arbitrationPoolId: {
29
+ machine: "arbitration-pool",
30
+ field: "arbitrationPoolId",
31
+ description: "Links to ArbitrationPool for dispute resolution",
32
+ },
33
+ treasuryId: {
34
+ machine: "treasury",
35
+ field: "treasuryId",
36
+ description: "Links to Treasury for fee collection",
37
+ },
38
+ },
39
+ },
40
+ createSchema: {
41
+ required: ["depositor", "beneficiary", "requiredAmount"],
42
+ properties: {
43
+ depositor: {
44
+ type: "address",
45
+ description: "DAG address of the depositor",
46
+ },
47
+ beneficiary: {
48
+ type: "address",
49
+ description: "DAG address of the beneficiary",
50
+ },
51
+ requiredAmount: {
52
+ type: "number",
53
+ minimum: 0,
54
+ description: "Required escrow amount",
55
+ },
56
+ releaseWindowMs: {
57
+ type: "integer",
58
+ description: "Time window for dispute before auto-release",
59
+ nullable: true,
60
+ },
61
+ expiresAt: {
62
+ type: "integer",
63
+ description: "Timestamp when escrow expires",
64
+ nullable: true,
65
+ },
66
+ autoActivate: {
67
+ type: "boolean",
68
+ description: "Whether to auto-activate on funding",
69
+ nullable: true,
70
+ },
71
+ },
72
+ },
73
+ stateSchema: {
74
+ properties: {
75
+ depositor: { type: "address" },
76
+ beneficiary: { type: "address" },
77
+ requiredAmount: { type: "number" },
78
+ balance: { type: "number" },
79
+ fundedAt: { type: "integer", nullable: true },
80
+ activatedAt: { type: "integer", nullable: true },
81
+ releaseRequest: { type: "object", nullable: true },
82
+ releaseDeadline: { type: "integer", nullable: true },
83
+ releasedAt: { type: "integer", nullable: true },
84
+ releasedTo: { type: "address", nullable: true },
85
+ disputedAt: { type: "integer", nullable: true },
86
+ refundedAt: { type: "integer", nullable: true },
87
+ splits: { type: "array", nullable: true },
88
+ rulingId: { type: "string", nullable: true },
89
+ releaseWindowMs: { type: "integer", nullable: true },
90
+ expiresAt: { type: "integer", nullable: true },
91
+ autoActivate: { type: "boolean", nullable: true },
92
+ },
93
+ },
94
+ eventSchemas: {
95
+ deposit: {
96
+ properties: {
97
+ amount: { type: "number" },
98
+ },
99
+ },
100
+ activate: {},
101
+ request_release: {
102
+ properties: {
103
+ amount: { type: "number" },
104
+ reason: { type: "string", nullable: true },
105
+ },
106
+ },
107
+ approve_release: {},
108
+ dispute: {},
109
+ ruling: {
110
+ properties: {
111
+ judicialRuling: { type: "boolean" },
112
+ splits: { type: "array" },
113
+ rulingId: { type: "string" },
114
+ },
115
+ },
116
+ refund: {
117
+ properties: {
118
+ mutualConsent: { type: "boolean", nullable: true },
119
+ },
120
+ },
121
+ cancel: {},
122
+ },
123
+ states: {
124
+ CREATED: { id: "CREATED", isFinal: false, metadata: null },
125
+ FUNDED: { id: "FUNDED", isFinal: false, metadata: null },
126
+ ACTIVE: { id: "ACTIVE", isFinal: false, metadata: null },
127
+ RELEASING: { id: "RELEASING", isFinal: false, metadata: null },
128
+ DISPUTED: { id: "DISPUTED", isFinal: false, metadata: null },
129
+ RELEASED: { id: "RELEASED", isFinal: true, metadata: null },
130
+ REFUNDED: { id: "REFUNDED", isFinal: true, metadata: null },
131
+ SPLIT: { id: "SPLIT", isFinal: true, metadata: null },
132
+ },
133
+ initialState: "CREATED",
134
+ transitions: [
135
+ {
136
+ from: "CREATED",
137
+ to: "FUNDED",
138
+ eventName: "deposit",
139
+ guard: {
140
+ and: [
141
+ { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
142
+ { ">=": [{ var: "event.amount" }, { var: "state.requiredAmount" }] },
143
+ ],
144
+ },
145
+ effect: {
146
+ merge: [
147
+ { var: "state" },
148
+ { balance: { var: "event.amount" }, fundedAt: { var: "$timestamp" } },
149
+ ],
150
+ },
151
+ dependencies: [],
152
+ },
153
+ {
154
+ from: "FUNDED",
155
+ to: "ACTIVE",
156
+ eventName: "activate",
157
+ guard: {
158
+ or: [
159
+ { "===": [{ var: "event.agent" }, { var: "state.beneficiary" }] },
160
+ { var: "state.autoActivate" },
161
+ ],
162
+ },
163
+ effect: {
164
+ merge: [{ var: "state" }, { activatedAt: { var: "$timestamp" } }],
165
+ },
166
+ dependencies: [],
167
+ },
168
+ {
169
+ from: "ACTIVE",
170
+ to: "RELEASING",
171
+ eventName: "request_release",
172
+ guard: { "===": [{ var: "event.agent" }, { var: "state.beneficiary" }] },
173
+ effect: {
174
+ merge: [
175
+ { var: "state" },
176
+ {
177
+ releaseRequest: {
178
+ requestedBy: { var: "event.agent" },
179
+ amount: { var: "event.amount" },
180
+ reason: { var: "event.reason" },
181
+ requestedAt: { var: "$timestamp" },
182
+ },
183
+ releaseDeadline: {
184
+ "+": [{ var: "$timestamp" }, { var: "state.releaseWindowMs" }],
185
+ },
186
+ },
187
+ ],
188
+ },
189
+ dependencies: [],
190
+ },
191
+ {
192
+ from: "RELEASING",
193
+ to: "RELEASED",
194
+ eventName: "approve_release",
195
+ guard: {
196
+ or: [
197
+ { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
198
+ { ">=": [{ var: "$timestamp" }, { var: "state.releaseDeadline" }] },
199
+ ],
200
+ },
201
+ effect: {
202
+ merge: [
203
+ { var: "state" },
204
+ {
205
+ releasedAt: { var: "$timestamp" },
206
+ releasedTo: { var: "state.beneficiary" },
207
+ },
208
+ ],
209
+ },
210
+ dependencies: [],
211
+ },
212
+ {
213
+ from: "RELEASING",
214
+ to: "DISPUTED",
215
+ eventName: "dispute",
216
+ guard: {
217
+ and: [
218
+ { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
219
+ { "<": [{ var: "$timestamp" }, { var: "state.releaseDeadline" }] },
220
+ ],
221
+ },
222
+ effect: {
223
+ merge: [{ var: "state" }, { disputedAt: { var: "$timestamp" } }],
224
+ },
225
+ spawns: {
226
+ sm: "Judiciary",
227
+ initialData: {
228
+ caseType: "escrow_dispute",
229
+ plaintiff: { var: "state.depositor" },
230
+ defendant: { var: "state.beneficiary" },
231
+ claim: {
232
+ escrowId: { var: "fiberId" },
233
+ amount: { var: "state.balance" },
234
+ },
235
+ },
236
+ },
237
+ dependencies: [],
238
+ },
239
+ {
240
+ from: "DISPUTED",
241
+ to: "SPLIT",
242
+ eventName: "ruling",
243
+ guard: { var: "event.judicialRuling" },
244
+ effect: {
245
+ merge: [
246
+ { var: "state" },
247
+ {
248
+ splits: { var: "event.splits" },
249
+ rulingId: { var: "event.rulingId" },
250
+ },
251
+ ],
252
+ },
253
+ dependencies: [],
254
+ },
255
+ {
256
+ from: "ACTIVE",
257
+ to: "REFUNDED",
258
+ eventName: "refund",
259
+ guard: {
260
+ or: [
261
+ { var: "event.mutualConsent" },
262
+ { ">=": [{ var: "$timestamp" }, { var: "state.expiresAt" }] },
263
+ ],
264
+ },
265
+ effect: {
266
+ merge: [{ var: "state" }, { refundedAt: { var: "$timestamp" } }],
267
+ },
268
+ dependencies: [],
269
+ },
270
+ {
271
+ from: "CREATED",
272
+ to: "REFUNDED",
273
+ eventName: "cancel",
274
+ guard: { "===": [{ var: "event.agent" }, { var: "state.depositor" }] },
275
+ effect: {
276
+ merge: [{ var: "state" }, { refundedAt: { var: "$timestamp" } }],
277
+ },
278
+ dependencies: [],
279
+ },
280
+ ],
281
+ });
@@ -0,0 +1,90 @@
1
+ import { defineFiberApp } from "../../../schema/fiber-app.js";
2
+ /**
3
+ * Minimal contract state machine - extend for custom use cases.
4
+ */
5
+ export const contractUniversalDef = defineFiberApp({
6
+ metadata: {
7
+ name: "ContractUniversal",
8
+ app: "contracts",
9
+ type: "universal",
10
+ version: "1.0.0",
11
+ description: "Minimal contract state machine - extend for custom use cases",
12
+ },
13
+ createSchema: {
14
+ properties: {},
15
+ },
16
+ stateSchema: {
17
+ properties: {
18
+ status: { type: "string" },
19
+ acceptedAt: { type: "integer", nullable: true },
20
+ cancelledAt: { type: "integer", nullable: true },
21
+ completedAt: { type: "integer", nullable: true },
22
+ },
23
+ },
24
+ eventSchemas: {
25
+ accept: {},
26
+ cancel: {},
27
+ complete: {},
28
+ },
29
+ states: {
30
+ PROPOSED: { id: "PROPOSED", isFinal: false, metadata: null },
31
+ ACTIVE: { id: "ACTIVE", isFinal: false, metadata: null },
32
+ COMPLETED: { id: "COMPLETED", isFinal: true, metadata: null },
33
+ CANCELLED: { id: "CANCELLED", isFinal: true, metadata: null },
34
+ },
35
+ initialState: "PROPOSED",
36
+ transitions: [
37
+ {
38
+ from: "PROPOSED",
39
+ to: "ACTIVE",
40
+ eventName: "accept",
41
+ guard: { "==": [1, 1] },
42
+ effect: {
43
+ merge: [
44
+ { var: "state" },
45
+ { status: "ACTIVE", acceptedAt: { var: "$timestamp" } },
46
+ ],
47
+ },
48
+ dependencies: [],
49
+ },
50
+ {
51
+ from: "PROPOSED",
52
+ to: "CANCELLED",
53
+ eventName: "cancel",
54
+ guard: { "==": [1, 1] },
55
+ effect: {
56
+ merge: [
57
+ { var: "state" },
58
+ { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
59
+ ],
60
+ },
61
+ dependencies: [],
62
+ },
63
+ {
64
+ from: "ACTIVE",
65
+ to: "COMPLETED",
66
+ eventName: "complete",
67
+ guard: { "==": [1, 1] },
68
+ effect: {
69
+ merge: [
70
+ { var: "state" },
71
+ { status: "COMPLETED", completedAt: { var: "$timestamp" } },
72
+ ],
73
+ },
74
+ dependencies: [],
75
+ },
76
+ {
77
+ from: "ACTIVE",
78
+ to: "CANCELLED",
79
+ eventName: "cancel",
80
+ guard: { "==": [1, 1] },
81
+ effect: {
82
+ merge: [
83
+ { var: "state" },
84
+ { status: "CANCELLED", cancelledAt: { var: "$timestamp" } },
85
+ ],
86
+ },
87
+ dependencies: [],
88
+ },
89
+ ],
90
+ });
@@ -7,6 +7,8 @@ export const contractAgreementDef = {
7
7
  "name": "ContractAgreement",
8
8
  "description": "Two-party agreement with mutual completion attestation and dispute resolution",
9
9
  "version": "1.0.0",
10
+ "app": "contracts",
11
+ "type": "agreement",
10
12
  "crossReferences": {
11
13
  "proposerIdentityId": "Links to proposer's AgentIdentity fiber",
12
14
  "counterpartyIdentityId": "Links to counterparty's AgentIdentity fiber",
@@ -14,6 +16,49 @@ export const contractAgreementDef = {
14
16
  "arbitrationPoolId": "Links to ArbitrationPool for dispute resolution"
15
17
  }
16
18
  },
19
+ "createSchema": {
20
+ "required": [
21
+ "proposer",
22
+ "counterparty"
23
+ ],
24
+ "properties": {
25
+ "proposer": {
26
+ "type": "address",
27
+ "description": "DAG address of the proposer",
28
+ "immutable": true
29
+ },
30
+ "counterparty": {
31
+ "type": "address",
32
+ "description": "DAG address of the counterparty",
33
+ "immutable": true
34
+ }
35
+ }
36
+ },
37
+ "stateSchema": {
38
+ "properties": {
39
+ "status": {
40
+ "type": "string"
41
+ },
42
+ "proposer": {
43
+ "type": "address"
44
+ },
45
+ "counterparty": {
46
+ "type": "address"
47
+ },
48
+ "completions": {
49
+ "type": "array"
50
+ }
51
+ }
52
+ },
53
+ "eventSchemas": {
54
+ "accept": {},
55
+ "reject": {},
56
+ "cancel": {},
57
+ "submit_completion": {},
58
+ "finalize": {},
59
+ "dispute": {},
60
+ "resolve": {}
61
+ },
17
62
  "states": {
18
63
  "PROPOSED": {
19
64
  "id": "PROPOSED",
@@ -351,6 +396,49 @@ export const contractAgreementDef = {
351
396
  ]
352
397
  },
353
398
  "dependencies": []
399
+ },
400
+ {
401
+ "from": "ACTIVE",
402
+ "to": "CANCELLED",
403
+ "eventName": "cancel",
404
+ "guard": {
405
+ "or": [
406
+ {
407
+ "===": [
408
+ {
409
+ "var": "event.agent"
410
+ },
411
+ {
412
+ "var": "state.proposer"
413
+ }
414
+ ]
415
+ },
416
+ {
417
+ "===": [
418
+ {
419
+ "var": "event.agent"
420
+ },
421
+ {
422
+ "var": "state.counterparty"
423
+ }
424
+ ]
425
+ }
426
+ ]
427
+ },
428
+ "effect": {
429
+ "merge": [
430
+ {
431
+ "var": "state"
432
+ },
433
+ {
434
+ "status": "CANCELLED",
435
+ "cancelledAt": {
436
+ "var": "$timestamp"
437
+ }
438
+ }
439
+ ]
440
+ },
441
+ "dependencies": []
354
442
  }
355
443
  ]
356
444
  };
@@ -359,6 +447,8 @@ export const contractEscrowDef = {
359
447
  "name": "ContractEscrow",
360
448
  "description": "Asset custody with conditional release, dispute resolution, and split payments",
361
449
  "version": "1.0.0",
450
+ "app": "contracts",
451
+ "type": "escrow",
362
452
  "crossReferences": {
363
453
  "contractId": "Links to Contract SM that created this escrow",
364
454
  "marketId": "Links to Market SM for market-based escrow",
@@ -367,6 +457,47 @@ export const contractEscrowDef = {
367
457
  "treasuryId": "Links to Treasury for fee collection"
368
458
  }
369
459
  },
460
+ "createSchema": {
461
+ "required": [
462
+ "depositor",
463
+ "beneficiary",
464
+ "requiredAmount"
465
+ ],
466
+ "properties": {
467
+ "depositor": {
468
+ "type": "address",
469
+ "description": "DAG address of the depositor"
470
+ },
471
+ "beneficiary": {
472
+ "type": "address",
473
+ "description": "DAG address of the beneficiary"
474
+ },
475
+ "requiredAmount": {
476
+ "type": "number",
477
+ "minimum": 0,
478
+ "description": "Required escrow amount"
479
+ }
480
+ }
481
+ },
482
+ "stateSchema": {
483
+ "properties": {
484
+ "balance": {
485
+ "type": "number"
486
+ },
487
+ "releaseRequest": {
488
+ "type": "object"
489
+ }
490
+ }
491
+ },
492
+ "eventSchemas": {
493
+ "deposit": {},
494
+ "activate": {},
495
+ "request_release": {},
496
+ "approve_release": {},
497
+ "dispute": {},
498
+ "ruling": {},
499
+ "refund": {}
500
+ },
370
501
  "states": {
371
502
  "CREATED": {
372
503
  "id": "CREATED",
@@ -705,6 +836,34 @@ export const contractEscrowDef = {
705
836
  ]
706
837
  },
707
838
  "dependencies": []
839
+ },
840
+ {
841
+ "from": "CREATED",
842
+ "to": "REFUNDED",
843
+ "eventName": "cancel",
844
+ "guard": {
845
+ "===": [
846
+ {
847
+ "var": "event.agent"
848
+ },
849
+ {
850
+ "var": "state.depositor"
851
+ }
852
+ ]
853
+ },
854
+ "effect": {
855
+ "merge": [
856
+ {
857
+ "var": "state"
858
+ },
859
+ {
860
+ "refundedAt": {
861
+ "var": "$timestamp"
862
+ }
863
+ }
864
+ ]
865
+ },
866
+ "dependencies": []
708
867
  }
709
868
  ]
710
869
  };
@@ -712,7 +871,24 @@ export const contractUniversalDef = {
712
871
  "metadata": {
713
872
  "name": "ContractUniversal",
714
873
  "description": "Minimal contract state machine - extend for custom use cases",
715
- "version": "1.0.0"
874
+ "version": "1.0.0",
875
+ "app": "contracts",
876
+ "type": "universal"
877
+ },
878
+ "createSchema": {
879
+ "properties": {}
880
+ },
881
+ "stateSchema": {
882
+ "properties": {
883
+ "status": {
884
+ "type": "string"
885
+ }
886
+ }
887
+ },
888
+ "eventSchemas": {
889
+ "accept": {},
890
+ "cancel": {},
891
+ "complete": {}
716
892
  },
717
893
  "states": {
718
894
  "PROPOSED": {
@@ -20,12 +20,12 @@
20
20
  * @packageDocumentation
21
21
  */
22
22
  // Re-export generated protobuf types (source of truth)
23
- export { EntityType, EntityState, DirectorStatus, OfficerStatus, BoardMeetingType, ResolutionStatus, Jurisdiction, ShareClass, CorporateEntity, RegisteredAgent, Incorporator, ShareStructure, CorporateBoard, Director, SeatInfo, QuorumRules, BoardMeeting, MeetingAttendee, CorporateOfficers, Officer, OfficerAction, CorporateShareholders, Shareholder, ShareHolding, CorporateResolution, ResolutionVote, CorporateSecurities, SecurityIssuance, SecurityTransfer, CorporateCompliance, FilingRecord, ComplianceRequirement, CreateEntityRequest, AppointDirectorRequest, IssueSharesRequest, ProposeResolutionRequest, entityTypeFromJSON, entityTypeToJSON, entityStateFromJSON, entityStateToJSON, directorStatusFromJSON, directorStatusToJSON, officerStatusFromJSON, officerStatusToJSON, boardMeetingTypeFromJSON, boardMeetingTypeToJSON, resolutionStatusFromJSON, resolutionStatusToJSON, } from '../../generated/ottochain/apps/corporate/v1/corporate.js';
23
+ export { EntityType, EntityState, DirectorStatus, OfficerStatus, BoardMeetingType, ResolutionStatus, Jurisdiction, ShareClass, CorporateEntity, RegisteredAgent, Incorporator, ShareStructure, CorporateBoard, Director, SeatInfo, QuorumRules, BoardMeeting, MeetingAttendee, CorporateOfficers, Officer, OfficerAction, CorporateShareholders, Shareholder, ShareHolding, CorporateResolution, ResolutionVote, CorporateSecurities, SecurityIssuance, SecurityTransfer, CorporateCompliance, FilingRecord, ComplianceRequirement, CreateEntityRequest, AppointDirectorRequest, IssueSharesRequest, ProposeResolutionRequest, entityTypeFromJSON, entityTypeToJSON, entityStateFromJSON, entityStateToJSON, directorStatusFromJSON, directorStatusToJSON, officerStatusFromJSON, officerStatusToJSON, boardMeetingTypeFromJSON, boardMeetingTypeToJSON, resolutionStatusFromJSON, resolutionStatusToJSON, } from "../../generated/ottochain/apps/corporate/v1/corporate.js";
24
24
  // ---------------------------------------------------------------------------
25
25
  // State Machine Definitions (generated from JSON at build time)
26
26
  // ---------------------------------------------------------------------------
27
- import { corpEntityDef, corpBoardDef, corpShareholdersDef, corpSecuritiesDef, } from './state-machines/index.js';
28
- export { corpEntityDef, corpBoardDef, corpShareholdersDef, corpSecuritiesDef, };
27
+ import { corpEntityDef, corpBoardDef, corpShareholdersDef, corpSecuritiesDef, } from "./state-machines/index.js";
28
+ export { corpEntityDef, corpBoardDef, corpShareholdersDef, corpSecuritiesDef };
29
29
  /** All corporate state machine definitions */
30
30
  export const CORPORATE_DEFINITIONS = {
31
31
  entity: corpEntityDef,