@ottochain/sdk 2.2.5 → 2.4.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.
- package/dist/cjs/apps/contracts/index.js +15 -8
- package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +89 -46
- package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/cjs/apps/contracts/state-machines/contract-universal.js +40 -8
- package/dist/cjs/apps/corporate/index.js +2 -2
- package/dist/cjs/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/cjs/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/cjs/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/cjs/apps/governance/index.js +14 -14
- package/dist/cjs/apps/governance/state-machines/dao-multisig.js +85 -43
- package/dist/cjs/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/cjs/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/cjs/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/cjs/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/cjs/apps/governance/state-machines/governance-universal.js +29 -5
- package/dist/cjs/apps/identity/constants.js +55 -14
- package/dist/cjs/apps/identity/index.js +27 -11
- package/dist/cjs/apps/identity/state-machines/identity-agent.js +57 -9
- package/dist/cjs/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/cjs/apps/identity/state-machines/identity-registry.js +288 -0
- package/dist/cjs/apps/identity/state-machines/identity-universal.js +30 -6
- package/dist/cjs/apps/identity/state-machines/index.js +3 -1
- package/dist/cjs/apps/index.js +19 -8
- package/dist/cjs/apps/lending/assets.js +223 -0
- package/dist/cjs/apps/lending/credit-scoring.js +87 -0
- package/dist/cjs/apps/lending/eligibility.js +121 -0
- package/dist/cjs/apps/lending/index.js +91 -0
- package/dist/cjs/apps/lending/state-machines/index.js +9 -0
- package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +412 -0
- package/dist/cjs/apps/markets/index.js +21 -11
- package/dist/cjs/apps/markets/state-machines/market-auction.js +44 -19
- package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/cjs/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/cjs/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/cjs/apps/markets/state-machines/market-universal.js +50 -10
- package/dist/cjs/apps/oracles/index.js +2 -2
- package/dist/cjs/errors.js +3 -3
- package/dist/cjs/generated/google/protobuf/struct.js +4 -4
- package/dist/cjs/generated/index.js +11 -7
- package/dist/cjs/generated/openapi.js +6 -0
- package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +50 -50
- package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +19 -20
- package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +13 -13
- package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +4 -4
- package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +124 -130
- package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +107 -107
- package/dist/cjs/generated/ottochain/v1/common.js +1722 -1
- package/dist/cjs/generated/ottochain/v1/fiber.js +355 -5
- package/dist/cjs/generated/ottochain/v1/messages.js +775 -3
- package/dist/cjs/generated/ottochain/v1/records.js +350 -3
- package/dist/cjs/index.js +45 -7
- package/dist/cjs/openapi.js +2 -0
- package/dist/cjs/ottochain/drop-nulls.js +1 -2
- package/dist/cjs/ottochain/genesis-manifest.js +193 -0
- package/dist/cjs/ottochain/index.js +27 -13
- package/dist/cjs/ottochain/metagraph-client.js +65 -8
- package/dist/cjs/ottochain/snapshot.js +11 -12
- package/dist/cjs/ottochain/transaction.js +57 -14
- package/dist/cjs/ottochain/types.js +19 -1
- package/dist/cjs/privacy/index.js +14 -0
- package/dist/cjs/privacy/sealed-bid.js +210 -0
- package/dist/cjs/privacy/shield-app.js +131 -0
- package/dist/cjs/schema/effects.js +40 -0
- package/dist/cjs/schema/fiber-app.js +19 -13
- package/dist/cjs/schema/guard-lint.js +352 -0
- package/dist/cjs/schema/guards.js +246 -0
- package/dist/cjs/signing.js +80 -0
- package/dist/cjs/types.js +2 -3
- package/dist/cjs/validation.js +8 -8
- package/dist/cjs/verify.js +9 -4
- package/dist/cjs/zk/commit.js +53 -0
- package/dist/cjs/zk/guard.js +107 -0
- package/dist/cjs/zk/index.js +48 -0
- package/dist/cjs/zk/preimage.js +37 -0
- package/dist/cjs/zk/prover.js +87 -0
- package/dist/cjs/zk/registry.js +62 -0
- package/dist/cjs/zk/types.js +28 -0
- package/dist/cjs/zk/witness.js +19 -0
- package/dist/esm/apps/contracts/index.js +7 -3
- package/dist/esm/apps/contracts/state-machines/contract-agreement.js +89 -46
- package/dist/esm/apps/contracts/state-machines/contract-escrow.js +152 -45
- package/dist/esm/apps/contracts/state-machines/contract-universal.js +40 -8
- package/dist/esm/apps/corporate/state-machines/corp-board.js +169 -59
- package/dist/esm/apps/corporate/state-machines/corp-entity.js +245 -47
- package/dist/esm/apps/corporate/state-machines/corp-securities.js +407 -99
- package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +151 -37
- package/dist/esm/apps/governance/state-machines/dao-multisig.js +85 -43
- package/dist/esm/apps/governance/state-machines/dao-reputation.js +73 -43
- package/dist/esm/apps/governance/state-machines/dao-single.js +55 -14
- package/dist/esm/apps/governance/state-machines/dao-token.js +103 -45
- package/dist/esm/apps/governance/state-machines/governance-simple.js +129 -65
- package/dist/esm/apps/governance/state-machines/governance-universal.js +29 -5
- package/dist/esm/apps/identity/constants.js +51 -12
- package/dist/esm/apps/identity/index.js +12 -7
- package/dist/esm/apps/identity/state-machines/identity-agent.js +57 -9
- package/dist/esm/apps/identity/state-machines/identity-oracle.js +70 -27
- package/dist/esm/apps/identity/state-machines/identity-registry.js +285 -0
- package/dist/esm/apps/identity/state-machines/identity-universal.js +30 -6
- package/dist/esm/apps/identity/state-machines/index.js +1 -0
- package/dist/esm/apps/index.js +1 -0
- package/dist/esm/apps/lending/assets.js +207 -0
- package/dist/esm/apps/lending/credit-scoring.js +81 -0
- package/dist/esm/apps/lending/eligibility.js +115 -0
- package/dist/esm/apps/lending/index.js +69 -0
- package/dist/esm/apps/lending/state-machines/index.js +5 -0
- package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +409 -0
- package/dist/esm/apps/markets/index.js +8 -4
- package/dist/esm/apps/markets/state-machines/market-auction.js +44 -19
- package/dist/esm/apps/markets/state-machines/market-crowdfund.js +54 -29
- package/dist/esm/apps/markets/state-machines/market-group-buy.js +53 -31
- package/dist/esm/apps/markets/state-machines/market-prediction.js +120 -61
- package/dist/esm/apps/markets/state-machines/market-universal.js +50 -10
- package/dist/esm/generated/index.js +9 -5
- package/dist/esm/generated/openapi.js +5 -0
- package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +46 -46
- package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +114 -120
- package/dist/esm/generated/ottochain/apps/markets/v1/market.js +100 -100
- package/dist/esm/generated/ottochain/v1/common.js +1718 -0
- package/dist/esm/generated/ottochain/v1/fiber.js +351 -1
- package/dist/esm/generated/ottochain/v1/messages.js +774 -2
- package/dist/esm/generated/ottochain/v1/records.js +349 -2
- package/dist/esm/index.js +23 -2
- package/dist/esm/openapi.js +1 -0
- package/dist/esm/ottochain/genesis-manifest.js +189 -0
- package/dist/esm/ottochain/index.js +4 -3
- package/dist/esm/ottochain/metagraph-client.js +65 -8
- package/dist/esm/ottochain/snapshot.js +4 -4
- package/dist/esm/ottochain/transaction.js +43 -3
- package/dist/esm/ottochain/types.js +18 -0
- package/dist/esm/privacy/index.js +6 -0
- package/dist/esm/privacy/sealed-bid.js +206 -0
- package/dist/esm/privacy/shield-app.js +127 -0
- package/dist/esm/schema/effects.js +35 -0
- package/dist/esm/schema/fiber-app.js +13 -6
- package/dist/esm/schema/guard-lint.js +346 -0
- package/dist/esm/schema/guards.js +229 -0
- package/dist/esm/signing.js +74 -0
- package/dist/esm/verify.js +8 -2
- package/dist/esm/zk/commit.js +44 -0
- package/dist/esm/zk/guard.js +99 -0
- package/dist/esm/zk/index.js +19 -0
- package/dist/esm/zk/preimage.js +30 -0
- package/dist/esm/zk/prover.js +82 -0
- package/dist/esm/zk/registry.js +55 -0
- package/dist/esm/zk/types.js +25 -0
- package/dist/esm/zk/witness.js +15 -0
- package/dist/types/apps/contracts/index.d.ts +159 -227
- package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +50 -101
- package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +86 -120
- package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +20 -4
- package/dist/types/apps/corporate/index.d.ts +1040 -304
- package/dist/types/apps/corporate/state-machines/corp-board.d.ts +188 -52
- package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +267 -62
- package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +355 -131
- package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +225 -53
- package/dist/types/apps/governance/index.d.ts +396 -417
- package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +92 -95
- package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +57 -69
- package/dist/types/apps/governance/state-machines/dao-single.d.ts +40 -50
- package/dist/types/apps/governance/state-machines/dao-token.d.ts +80 -53
- package/dist/types/apps/governance/state-machines/governance-simple.d.ts +107 -121
- package/dist/types/apps/governance/state-machines/governance-universal.d.ts +17 -5
- package/dist/types/apps/identity/constants.d.ts +32 -4
- package/dist/types/apps/identity/index.d.ts +449 -100
- package/dist/types/apps/identity/state-machines/identity-agent.d.ts +30 -0
- package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +41 -87
- package/dist/types/apps/identity/state-machines/identity-registry.d.ts +379 -0
- package/dist/types/apps/identity/state-machines/identity-universal.d.ts +15 -0
- package/dist/types/apps/identity/state-machines/index.d.ts +1 -0
- package/dist/types/apps/index.d.ts +1 -0
- package/dist/types/apps/lending/assets.d.ts +258 -0
- package/dist/types/apps/lending/credit-scoring.d.ts +80 -0
- package/dist/types/apps/lending/eligibility.d.ts +83 -0
- package/dist/types/apps/lending/index.d.ts +548 -0
- package/dist/types/apps/lending/state-machines/index.d.ts +5 -0
- package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +528 -0
- package/dist/types/apps/markets/index.d.ts +184 -204
- package/dist/types/apps/markets/state-machines/market-auction.d.ts +25 -37
- package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +26 -34
- package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +31 -43
- package/dist/types/apps/markets/state-machines/market-prediction.d.ts +67 -72
- package/dist/types/apps/markets/state-machines/market-universal.d.ts +30 -10
- package/dist/types/generated/index.d.ts +5 -5
- package/dist/types/generated/openapi.d.ts +1257 -0
- package/dist/types/generated/ottochain/apps/contracts/v1/contract.d.ts +5 -5
- package/dist/types/generated/ottochain/apps/identity/v1/identity.d.ts +12 -12
- package/dist/types/generated/ottochain/apps/markets/v1/market.d.ts +11 -11
- package/dist/types/generated/ottochain/v1/common.d.ts +228 -0
- package/dist/types/generated/ottochain/v1/fiber.d.ts +32 -1
- package/dist/types/generated/ottochain/v1/messages.d.ts +84 -0
- package/dist/types/generated/ottochain/v1/records.d.ts +34 -0
- package/dist/types/index.d.ts +8 -2
- package/dist/types/openapi.d.ts +22 -0
- package/dist/types/ottochain/genesis-manifest.d.ts +130 -0
- package/dist/types/ottochain/index.d.ts +6 -5
- package/dist/types/ottochain/metagraph-client.d.ts +49 -7
- package/dist/types/ottochain/snapshot.d.ts +6 -6
- package/dist/types/ottochain/transaction.d.ts +33 -1
- package/dist/types/ottochain/types.d.ts +602 -11
- package/dist/types/privacy/index.d.ts +6 -0
- package/dist/types/privacy/sealed-bid.d.ts +348 -0
- package/dist/types/privacy/shield-app.d.ts +48 -0
- package/dist/types/schema/effects.d.ts +34 -0
- package/dist/types/schema/fiber-app.d.ts +41 -3
- package/dist/types/schema/guard-lint.d.ts +111 -0
- package/dist/types/schema/guards.d.ts +134 -0
- package/dist/types/signing.d.ts +45 -0
- package/dist/types/validation.d.ts +22 -217
- package/dist/types/verify.d.ts +4 -0
- package/dist/types/zk/commit.d.ts +28 -0
- package/dist/types/zk/guard.d.ts +46 -0
- package/dist/types/zk/index.d.ts +19 -0
- package/dist/types/zk/preimage.d.ts +10 -0
- package/dist/types/zk/prover.d.ts +34 -0
- package/dist/types/zk/registry.d.ts +34 -0
- package/dist/types/zk/types.d.ts +33 -0
- package/dist/types/zk/witness.d.ts +40 -0
- package/package.json +52 -35
- package/dist/cjs/ottochain/normalize.js +0 -186
- package/dist/esm/ottochain/normalize.js +0 -179
- package/dist/types/ottochain/normalize.d.ts +0 -79
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defineFiberApp } from "../../../schema/fiber-app.js";
|
|
2
|
+
import { signerIsParty, signerIsNotParty } from "../../../schema/guards.js";
|
|
2
3
|
/**
|
|
3
4
|
* All-or-nothing crowdfunding with threshold, deadline, and stretch goals.
|
|
4
5
|
*/
|
|
@@ -78,27 +79,47 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
78
79
|
PROPOSED: {
|
|
79
80
|
id: "PROPOSED",
|
|
80
81
|
isFinal: false,
|
|
81
|
-
metadata: {
|
|
82
|
+
metadata: {
|
|
83
|
+
label: "Proposed",
|
|
84
|
+
description: "Campaign created but not yet open",
|
|
85
|
+
category: "initial",
|
|
86
|
+
},
|
|
82
87
|
},
|
|
83
88
|
OPEN: {
|
|
84
89
|
id: "OPEN",
|
|
85
90
|
isFinal: false,
|
|
86
|
-
metadata: {
|
|
91
|
+
metadata: {
|
|
92
|
+
label: "Open",
|
|
93
|
+
description: "Accepting pledges",
|
|
94
|
+
category: "active",
|
|
95
|
+
},
|
|
87
96
|
},
|
|
88
97
|
FUNDED: {
|
|
89
98
|
id: "FUNDED",
|
|
90
99
|
isFinal: true,
|
|
91
|
-
metadata: {
|
|
100
|
+
metadata: {
|
|
101
|
+
label: "Funded",
|
|
102
|
+
description: "Threshold met, funds released to creator",
|
|
103
|
+
category: "terminal",
|
|
104
|
+
},
|
|
92
105
|
},
|
|
93
106
|
REFUNDED: {
|
|
94
107
|
id: "REFUNDED",
|
|
95
108
|
isFinal: true,
|
|
96
|
-
metadata: {
|
|
109
|
+
metadata: {
|
|
110
|
+
label: "Refunded",
|
|
111
|
+
description: "Threshold not met, all pledges refunded",
|
|
112
|
+
category: "terminal",
|
|
113
|
+
},
|
|
97
114
|
},
|
|
98
115
|
CANCELLED: {
|
|
99
116
|
id: "CANCELLED",
|
|
100
117
|
isFinal: true,
|
|
101
|
-
metadata: {
|
|
118
|
+
metadata: {
|
|
119
|
+
label: "Cancelled",
|
|
120
|
+
description: "Campaign cancelled by creator",
|
|
121
|
+
category: "terminal",
|
|
122
|
+
},
|
|
102
123
|
},
|
|
103
124
|
},
|
|
104
125
|
initialState: "PROPOSED",
|
|
@@ -107,13 +128,13 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
107
128
|
from: "PROPOSED",
|
|
108
129
|
to: "OPEN",
|
|
109
130
|
eventName: "launch",
|
|
110
|
-
guard:
|
|
131
|
+
guard: signerIsParty("state.creator"),
|
|
111
132
|
effect: {
|
|
112
133
|
merge: [
|
|
113
134
|
{ var: "state" },
|
|
114
135
|
{
|
|
115
136
|
status: "OPEN",
|
|
116
|
-
launchedAt: { var: "$
|
|
137
|
+
launchedAt: { var: "$ordinal" },
|
|
117
138
|
pledges: [],
|
|
118
139
|
totalPledged: 0,
|
|
119
140
|
backerCount: 0,
|
|
@@ -126,11 +147,11 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
126
147
|
from: "PROPOSED",
|
|
127
148
|
to: "CANCELLED",
|
|
128
149
|
eventName: "cancel",
|
|
129
|
-
guard:
|
|
150
|
+
guard: signerIsParty("state.creator"),
|
|
130
151
|
effect: {
|
|
131
152
|
merge: [
|
|
132
153
|
{ var: "state" },
|
|
133
|
-
{ status: "CANCELLED", cancelledAt: { var: "$
|
|
154
|
+
{ status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
|
|
134
155
|
],
|
|
135
156
|
},
|
|
136
157
|
dependencies: [],
|
|
@@ -142,14 +163,14 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
142
163
|
guard: {
|
|
143
164
|
and: [
|
|
144
165
|
{ ">": [{ var: "event.amount" }, 0] },
|
|
145
|
-
|
|
166
|
+
signerIsNotParty("state.creator"),
|
|
146
167
|
{
|
|
147
168
|
or: [
|
|
148
169
|
{ "!": [{ var: "state.minPledge" }] },
|
|
149
170
|
{ ">=": [{ var: "event.amount" }, { var: "state.minPledge" }] },
|
|
150
171
|
],
|
|
151
172
|
},
|
|
152
|
-
{ "<=": [{ var: "$
|
|
173
|
+
{ "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
153
174
|
],
|
|
154
175
|
},
|
|
155
176
|
effect: {
|
|
@@ -164,7 +185,7 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
164
185
|
backer: { var: "event.agent" },
|
|
165
186
|
amount: { var: "event.amount" },
|
|
166
187
|
rewardTier: { var: "event.rewardTier" },
|
|
167
|
-
pledgedAt: { var: "$
|
|
188
|
+
pledgedAt: { var: "$ordinal" },
|
|
168
189
|
},
|
|
169
190
|
],
|
|
170
191
|
],
|
|
@@ -185,16 +206,18 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
185
206
|
guard: {
|
|
186
207
|
and: [
|
|
187
208
|
{ ">": [{ var: "event.additionalAmount" }, 0] },
|
|
188
|
-
{ "<=": [{ var: "$
|
|
209
|
+
{ "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
189
210
|
{
|
|
190
211
|
">": [
|
|
191
212
|
{
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
213
|
+
length: [
|
|
214
|
+
{
|
|
215
|
+
filter: [
|
|
216
|
+
{ var: "state.pledges" },
|
|
217
|
+
{ "===": [{ var: "backer" }, { var: "event.agent" }] },
|
|
218
|
+
],
|
|
219
|
+
},
|
|
220
|
+
],
|
|
198
221
|
},
|
|
199
222
|
0,
|
|
200
223
|
],
|
|
@@ -223,7 +246,7 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
223
246
|
guard: {
|
|
224
247
|
and: [
|
|
225
248
|
{ ">=": [{ var: "state.totalPledged" }, { var: "state.threshold" }] },
|
|
226
|
-
{ ">=": [{ var: "$
|
|
249
|
+
{ ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
227
250
|
],
|
|
228
251
|
},
|
|
229
252
|
effect: {
|
|
@@ -231,7 +254,7 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
231
254
|
{ var: "state" },
|
|
232
255
|
{
|
|
233
256
|
status: "FUNDED",
|
|
234
|
-
fundedAt: { var: "$
|
|
257
|
+
fundedAt: { var: "$ordinal" },
|
|
235
258
|
stretchGoalsReached: {
|
|
236
259
|
filter: [
|
|
237
260
|
{ var: "state.stretchGoals" },
|
|
@@ -250,7 +273,7 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
250
273
|
guard: {
|
|
251
274
|
and: [
|
|
252
275
|
{ "<": [{ var: "state.totalPledged" }, { var: "state.threshold" }] },
|
|
253
|
-
{ ">=": [{ var: "$
|
|
276
|
+
{ ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
254
277
|
],
|
|
255
278
|
},
|
|
256
279
|
effect: {
|
|
@@ -258,7 +281,7 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
258
281
|
{ var: "state" },
|
|
259
282
|
{
|
|
260
283
|
status: "REFUNDED",
|
|
261
|
-
refundedAt: { var: "$
|
|
284
|
+
refundedAt: { var: "$ordinal" },
|
|
262
285
|
reason: "threshold_not_met",
|
|
263
286
|
},
|
|
264
287
|
],
|
|
@@ -274,12 +297,14 @@ export const marketCrowdfundDef = defineFiberApp({
|
|
|
274
297
|
{
|
|
275
298
|
">": [
|
|
276
299
|
{
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
300
|
+
length: [
|
|
301
|
+
{
|
|
302
|
+
filter: [
|
|
303
|
+
{ var: "state.pledges" },
|
|
304
|
+
{ "===": [{ var: "backer" }, { var: "event.agent" }] },
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
],
|
|
283
308
|
},
|
|
284
309
|
0,
|
|
285
310
|
],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defineFiberApp } from "../../../schema/fiber-app.js";
|
|
2
|
+
import { signerIsParty, signerIsAnyParty } from "../../../schema/guards.js";
|
|
2
3
|
/**
|
|
3
4
|
* Collective purchasing with quantity thresholds and tiered pricing.
|
|
4
5
|
*/
|
|
@@ -80,41 +81,65 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
80
81
|
PROPOSED: {
|
|
81
82
|
id: "PROPOSED",
|
|
82
83
|
isFinal: false,
|
|
83
|
-
metadata: {
|
|
84
|
+
metadata: {
|
|
85
|
+
label: "Proposed",
|
|
86
|
+
description: "Group buy created but not yet open",
|
|
87
|
+
category: "initial",
|
|
88
|
+
},
|
|
84
89
|
},
|
|
85
90
|
OPEN: {
|
|
86
91
|
id: "OPEN",
|
|
87
92
|
isFinal: false,
|
|
88
|
-
metadata: {
|
|
93
|
+
metadata: {
|
|
94
|
+
label: "Open",
|
|
95
|
+
description: "Accepting orders",
|
|
96
|
+
category: "active",
|
|
97
|
+
},
|
|
89
98
|
},
|
|
90
99
|
THRESHOLD_MET: {
|
|
91
100
|
id: "THRESHOLD_MET",
|
|
92
101
|
isFinal: false,
|
|
93
102
|
metadata: {
|
|
103
|
+
label: "Threshold met",
|
|
94
104
|
description: "Minimum quantity reached, continuing for better tier",
|
|
105
|
+
category: "active",
|
|
95
106
|
},
|
|
96
107
|
},
|
|
97
108
|
PROCESSING: {
|
|
98
109
|
id: "PROCESSING",
|
|
99
110
|
isFinal: false,
|
|
100
111
|
metadata: {
|
|
112
|
+
label: "Processing",
|
|
101
113
|
description: "Order placed with vendor, awaiting fulfillment",
|
|
114
|
+
category: "pending",
|
|
102
115
|
},
|
|
103
116
|
},
|
|
104
117
|
FULFILLED: {
|
|
105
118
|
id: "FULFILLED",
|
|
106
119
|
isFinal: true,
|
|
107
|
-
metadata: {
|
|
120
|
+
metadata: {
|
|
121
|
+
label: "Fulfilled",
|
|
122
|
+
description: "All items delivered to buyers",
|
|
123
|
+
category: "terminal",
|
|
124
|
+
},
|
|
108
125
|
},
|
|
109
126
|
REFUNDED: {
|
|
110
127
|
id: "REFUNDED",
|
|
111
128
|
isFinal: true,
|
|
112
|
-
metadata: {
|
|
129
|
+
metadata: {
|
|
130
|
+
label: "Refunded",
|
|
131
|
+
description: "Threshold not met, all orders refunded",
|
|
132
|
+
category: "terminal",
|
|
133
|
+
},
|
|
113
134
|
},
|
|
114
135
|
CANCELLED: {
|
|
115
136
|
id: "CANCELLED",
|
|
116
137
|
isFinal: true,
|
|
117
|
-
metadata: {
|
|
138
|
+
metadata: {
|
|
139
|
+
label: "Cancelled",
|
|
140
|
+
description: "Group buy cancelled",
|
|
141
|
+
category: "terminal",
|
|
142
|
+
},
|
|
118
143
|
},
|
|
119
144
|
},
|
|
120
145
|
initialState: "PROPOSED",
|
|
@@ -123,13 +148,13 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
123
148
|
from: "PROPOSED",
|
|
124
149
|
to: "OPEN",
|
|
125
150
|
eventName: "open",
|
|
126
|
-
guard:
|
|
151
|
+
guard: signerIsParty("state.organizer"),
|
|
127
152
|
effect: {
|
|
128
153
|
merge: [
|
|
129
154
|
{ var: "state" },
|
|
130
155
|
{
|
|
131
156
|
status: "OPEN",
|
|
132
|
-
openedAt: { var: "$
|
|
157
|
+
openedAt: { var: "$ordinal" },
|
|
133
158
|
orders: [],
|
|
134
159
|
totalQuantity: 0,
|
|
135
160
|
currentTier: 0,
|
|
@@ -142,11 +167,11 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
142
167
|
from: "PROPOSED",
|
|
143
168
|
to: "CANCELLED",
|
|
144
169
|
eventName: "cancel",
|
|
145
|
-
guard:
|
|
170
|
+
guard: signerIsParty("state.organizer"),
|
|
146
171
|
effect: {
|
|
147
172
|
merge: [
|
|
148
173
|
{ var: "state" },
|
|
149
|
-
{ status: "CANCELLED", cancelledAt: { var: "$
|
|
174
|
+
{ status: "CANCELLED", cancelledAt: { var: "$ordinal" } },
|
|
150
175
|
],
|
|
151
176
|
},
|
|
152
177
|
dependencies: [],
|
|
@@ -166,7 +191,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
166
191
|
},
|
|
167
192
|
],
|
|
168
193
|
},
|
|
169
|
-
{ "<=": [{ var: "$
|
|
194
|
+
{ "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
170
195
|
],
|
|
171
196
|
},
|
|
172
197
|
effect: {
|
|
@@ -181,7 +206,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
181
206
|
buyer: { var: "event.agent" },
|
|
182
207
|
quantity: { var: "event.quantity" },
|
|
183
208
|
shippingInfo: { var: "event.shippingInfo" },
|
|
184
|
-
orderedAt: { var: "$
|
|
209
|
+
orderedAt: { var: "$ordinal" },
|
|
185
210
|
},
|
|
186
211
|
],
|
|
187
212
|
],
|
|
@@ -206,7 +231,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
206
231
|
{ var: "state" },
|
|
207
232
|
{
|
|
208
233
|
status: "THRESHOLD_MET",
|
|
209
|
-
thresholdMetAt: { var: "$
|
|
234
|
+
thresholdMetAt: { var: "$ordinal" },
|
|
210
235
|
currentTier: {
|
|
211
236
|
reduce: [
|
|
212
237
|
{ var: "state.priceTiers" },
|
|
@@ -237,7 +262,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
237
262
|
guard: {
|
|
238
263
|
and: [
|
|
239
264
|
{ ">": [{ var: "event.quantity" }, 0] },
|
|
240
|
-
{ "<=": [{ var: "$
|
|
265
|
+
{ "<=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
241
266
|
],
|
|
242
267
|
},
|
|
243
268
|
effect: {
|
|
@@ -252,7 +277,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
252
277
|
buyer: { var: "event.agent" },
|
|
253
278
|
quantity: { var: "event.quantity" },
|
|
254
279
|
shippingInfo: { var: "event.shippingInfo" },
|
|
255
|
-
orderedAt: { var: "$
|
|
280
|
+
orderedAt: { var: "$ordinal" },
|
|
256
281
|
},
|
|
257
282
|
],
|
|
258
283
|
],
|
|
@@ -292,13 +317,13 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
292
317
|
from: "THRESHOLD_MET",
|
|
293
318
|
to: "PROCESSING",
|
|
294
319
|
eventName: "finalize",
|
|
295
|
-
guard: { ">=": [{ var: "$
|
|
320
|
+
guard: { ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
296
321
|
effect: {
|
|
297
322
|
merge: [
|
|
298
323
|
{ var: "state" },
|
|
299
324
|
{
|
|
300
325
|
status: "PROCESSING",
|
|
301
|
-
finalizedAt: { var: "$
|
|
326
|
+
finalizedAt: { var: "$ordinal" },
|
|
302
327
|
finalTier: { var: "state.currentTier" },
|
|
303
328
|
finalPricePerUnit: {
|
|
304
329
|
var: {
|
|
@@ -318,18 +343,13 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
318
343
|
from: "PROCESSING",
|
|
319
344
|
to: "FULFILLED",
|
|
320
345
|
eventName: "fulfill",
|
|
321
|
-
guard:
|
|
322
|
-
or: [
|
|
323
|
-
{ "===": [{ var: "event.agent" }, { var: "state.vendor" }] },
|
|
324
|
-
{ "===": [{ var: "event.agent" }, { var: "state.organizer" }] },
|
|
325
|
-
],
|
|
326
|
-
},
|
|
346
|
+
guard: signerIsAnyParty(["state.vendor", "state.organizer"]),
|
|
327
347
|
effect: {
|
|
328
348
|
merge: [
|
|
329
349
|
{ var: "state" },
|
|
330
350
|
{
|
|
331
351
|
status: "FULFILLED",
|
|
332
|
-
fulfilledAt: { var: "$
|
|
352
|
+
fulfilledAt: { var: "$ordinal" },
|
|
333
353
|
trackingInfo: { var: "event.trackingInfo" },
|
|
334
354
|
},
|
|
335
355
|
],
|
|
@@ -345,7 +365,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
345
365
|
{
|
|
346
366
|
"<": [{ var: "state.totalQuantity" }, { var: "state.minQuantity" }],
|
|
347
367
|
},
|
|
348
|
-
{ ">=": [{ var: "$
|
|
368
|
+
{ ">=": [{ var: "$ordinal" }, { var: "state.deadline" }] },
|
|
349
369
|
],
|
|
350
370
|
},
|
|
351
371
|
effect: {
|
|
@@ -353,7 +373,7 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
353
373
|
{ var: "state" },
|
|
354
374
|
{
|
|
355
375
|
status: "REFUNDED",
|
|
356
|
-
refundedAt: { var: "$
|
|
376
|
+
refundedAt: { var: "$ordinal" },
|
|
357
377
|
reason: "threshold_not_met",
|
|
358
378
|
},
|
|
359
379
|
],
|
|
@@ -369,12 +389,14 @@ export const marketGroupBuyDef = defineFiberApp({
|
|
|
369
389
|
{
|
|
370
390
|
">": [
|
|
371
391
|
{
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
392
|
+
length: [
|
|
393
|
+
{
|
|
394
|
+
filter: [
|
|
395
|
+
{ var: "state.orders" },
|
|
396
|
+
{ "===": [{ var: "buyer" }, { var: "event.agent" }] },
|
|
397
|
+
],
|
|
398
|
+
},
|
|
399
|
+
],
|
|
378
400
|
},
|
|
379
401
|
0,
|
|
380
402
|
],
|