@ottochain/sdk 2.4.0 → 2.5.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 (225) hide show
  1. package/dist/cjs/apps/compute/index.js +33 -0
  2. package/dist/cjs/apps/compute/state-machines/compute-rule110.js +164 -0
  3. package/dist/cjs/apps/compute/state-machines/index.js +9 -0
  4. package/dist/cjs/apps/contracts/index.js +1 -1
  5. package/dist/cjs/apps/contracts/state-machines/contract-agreement.js +126 -148
  6. package/dist/cjs/apps/contracts/state-machines/contract-escrow.js +153 -174
  7. package/dist/cjs/apps/contracts/state-machines/contract-universal.js +46 -58
  8. package/dist/cjs/apps/corporate/state-machines/corp-board.js +415 -481
  9. package/dist/cjs/apps/corporate/state-machines/corp-entity.js +368 -440
  10. package/dist/cjs/apps/corporate/state-machines/corp-securities.js +532 -647
  11. package/dist/cjs/apps/corporate/state-machines/corp-shareholders.js +499 -603
  12. package/dist/cjs/apps/governance/index.js +7 -7
  13. package/dist/cjs/apps/governance/state-machines/dao-multisig.js +170 -209
  14. package/dist/cjs/apps/governance/state-machines/dao-reputation.js +161 -214
  15. package/dist/cjs/apps/governance/state-machines/dao-single.js +92 -92
  16. package/dist/cjs/apps/governance/state-machines/dao-token.js +169 -223
  17. package/dist/cjs/apps/governance/state-machines/governance-simple.js +185 -217
  18. package/dist/cjs/apps/governance/state-machines/governance-universal.js +64 -64
  19. package/dist/cjs/apps/identity/constants.js +16 -24
  20. package/dist/cjs/apps/identity/index.js +1 -1
  21. package/dist/cjs/apps/identity/state-machines/identity-agent.js +124 -158
  22. package/dist/cjs/apps/identity/state-machines/identity-oracle.js +151 -169
  23. package/dist/cjs/apps/identity/state-machines/identity-registry.js +89 -115
  24. package/dist/cjs/apps/identity/state-machines/identity-universal.js +51 -57
  25. package/dist/cjs/apps/index.js +4 -1
  26. package/dist/cjs/apps/lending/assets.js +41 -17
  27. package/dist/cjs/apps/lending/credit-scoring.js +4 -4
  28. package/dist/cjs/apps/lending/eligibility.js +9 -25
  29. package/dist/cjs/apps/lending/index.js +1 -1
  30. package/dist/cjs/apps/lending/state-machines/lending-zk-loan.js +177 -156
  31. package/dist/cjs/apps/markets/index.js +1 -1
  32. package/dist/cjs/apps/markets/state-machines/market-auction.js +115 -134
  33. package/dist/cjs/apps/markets/state-machines/market-crowdfund.js +122 -137
  34. package/dist/cjs/apps/markets/state-machines/market-group-buy.js +158 -177
  35. package/dist/cjs/apps/markets/state-machines/market-prediction.js +193 -227
  36. package/dist/cjs/apps/markets/state-machines/market-universal.js +65 -80
  37. package/dist/cjs/apps/oracles/index.js +1 -1
  38. package/dist/cjs/apps/privacy/index.js +67 -0
  39. package/dist/cjs/apps/privacy/state-machines/index.js +17 -0
  40. package/dist/cjs/apps/privacy/state-machines/mixer-ddhRing.js +286 -0
  41. package/dist/cjs/apps/privacy/state-machines/note-pool.js +476 -0
  42. package/dist/cjs/apps/staked-pool/assets.js +103 -0
  43. package/dist/cjs/apps/staked-pool/base.js +498 -0
  44. package/dist/cjs/apps/staked-pool/consumer.js +55 -0
  45. package/dist/cjs/apps/staked-pool/index.js +83 -0
  46. package/dist/cjs/apps/staked-pool/state-machines/index.js +12 -0
  47. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-base.js +49 -0
  48. package/dist/cjs/apps/staked-pool/state-machines/staked-pool-oracle.js +131 -0
  49. package/dist/cjs/generated/google/protobuf/struct.js +1 -1
  50. package/dist/cjs/generated/google/protobuf/timestamp.js +1 -1
  51. package/dist/cjs/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  52. package/dist/cjs/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  53. package/dist/cjs/generated/ottochain/apps/governance/v1/governance.js +1 -1
  54. package/dist/cjs/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  55. package/dist/cjs/generated/ottochain/apps/identity/v1/identity.js +1 -1
  56. package/dist/cjs/generated/ottochain/apps/markets/v1/market.js +1 -1
  57. package/dist/cjs/generated/ottochain/v1/common.js +1 -1
  58. package/dist/cjs/generated/ottochain/v1/fiber.js +40 -2
  59. package/dist/cjs/generated/ottochain/v1/messages.js +1 -1
  60. package/dist/cjs/generated/ottochain/v1/records.js +1 -1
  61. package/dist/cjs/index.js +20 -3
  62. package/dist/cjs/ottochain/genesis-manifest.js +6 -0
  63. package/dist/cjs/ottochain/metagraph-client.js +16 -8
  64. package/dist/cjs/ottochain/snapshot.js +2 -4
  65. package/dist/cjs/ottochain/transaction.js +10 -0
  66. package/dist/cjs/privacy/sealed-bid.js +85 -82
  67. package/dist/cjs/privacy/shield-app.js +32 -32
  68. package/dist/cjs/schema/effects.js +117 -1
  69. package/dist/cjs/schema/fiber-app.js +132 -3
  70. package/dist/cjs/schema/guard-lint.js +3 -12
  71. package/dist/cjs/schema/guards.js +38 -38
  72. package/dist/cjs/templates/asset-policy.js +190 -0
  73. package/dist/cjs/templates/index.js +86 -0
  74. package/dist/cjs/templates/machine.js +130 -0
  75. package/dist/cjs/templates/migration.js +39 -0
  76. package/dist/cjs/templates/state-shape.js +38 -0
  77. package/dist/cjs/validation.js +1 -3
  78. package/dist/esm/apps/compute/index.js +29 -0
  79. package/dist/esm/apps/compute/state-machines/compute-rule110.js +161 -0
  80. package/dist/esm/apps/compute/state-machines/index.js +5 -0
  81. package/dist/esm/apps/contracts/index.js +4 -4
  82. package/dist/esm/apps/contracts/state-machines/contract-agreement.js +128 -150
  83. package/dist/esm/apps/contracts/state-machines/contract-escrow.js +155 -176
  84. package/dist/esm/apps/contracts/state-machines/contract-universal.js +47 -59
  85. package/dist/esm/apps/corporate/index.js +2 -2
  86. package/dist/esm/apps/corporate/state-machines/corp-board.js +418 -484
  87. package/dist/esm/apps/corporate/state-machines/corp-entity.js +371 -443
  88. package/dist/esm/apps/corporate/state-machines/corp-securities.js +535 -650
  89. package/dist/esm/apps/corporate/state-machines/corp-shareholders.js +502 -606
  90. package/dist/esm/apps/governance/index.js +10 -10
  91. package/dist/esm/apps/governance/state-machines/dao-multisig.js +172 -211
  92. package/dist/esm/apps/governance/state-machines/dao-reputation.js +163 -216
  93. package/dist/esm/apps/governance/state-machines/dao-single.js +94 -94
  94. package/dist/esm/apps/governance/state-machines/dao-token.js +171 -225
  95. package/dist/esm/apps/governance/state-machines/governance-simple.js +187 -219
  96. package/dist/esm/apps/governance/state-machines/governance-universal.js +65 -65
  97. package/dist/esm/apps/identity/constants.js +18 -26
  98. package/dist/esm/apps/identity/index.js +8 -8
  99. package/dist/esm/apps/identity/state-machines/identity-agent.js +125 -159
  100. package/dist/esm/apps/identity/state-machines/identity-oracle.js +153 -171
  101. package/dist/esm/apps/identity/state-machines/identity-registry.js +91 -117
  102. package/dist/esm/apps/identity/state-machines/identity-universal.js +52 -58
  103. package/dist/esm/apps/index.js +9 -6
  104. package/dist/esm/apps/lending/assets.js +41 -17
  105. package/dist/esm/apps/lending/credit-scoring.js +6 -6
  106. package/dist/esm/apps/lending/eligibility.js +10 -26
  107. package/dist/esm/apps/lending/index.js +5 -5
  108. package/dist/esm/apps/lending/state-machines/lending-zk-loan.js +178 -157
  109. package/dist/esm/apps/markets/index.js +5 -5
  110. package/dist/esm/apps/markets/state-machines/market-auction.js +117 -136
  111. package/dist/esm/apps/markets/state-machines/market-crowdfund.js +124 -139
  112. package/dist/esm/apps/markets/state-machines/market-group-buy.js +160 -179
  113. package/dist/esm/apps/markets/state-machines/market-prediction.js +195 -229
  114. package/dist/esm/apps/markets/state-machines/market-universal.js +66 -81
  115. package/dist/esm/apps/oracles/index.js +3 -3
  116. package/dist/esm/apps/privacy/index.js +56 -0
  117. package/dist/esm/apps/privacy/state-machines/index.js +6 -0
  118. package/dist/esm/apps/privacy/state-machines/mixer-ddhRing.js +282 -0
  119. package/dist/esm/apps/privacy/state-machines/note-pool.js +470 -0
  120. package/dist/esm/apps/staked-pool/assets.js +91 -0
  121. package/dist/esm/apps/staked-pool/base.js +493 -0
  122. package/dist/esm/apps/staked-pool/consumer.js +49 -0
  123. package/dist/esm/apps/staked-pool/index.js +60 -0
  124. package/dist/esm/apps/staked-pool/state-machines/index.js +6 -0
  125. package/dist/esm/apps/staked-pool/state-machines/staked-pool-base.js +46 -0
  126. package/dist/esm/apps/staked-pool/state-machines/staked-pool-oracle.js +127 -0
  127. package/dist/esm/generated/google/protobuf/struct.js +1 -1
  128. package/dist/esm/generated/google/protobuf/timestamp.js +1 -1
  129. package/dist/esm/generated/ottochain/apps/contracts/v1/contract.js +1 -1
  130. package/dist/esm/generated/ottochain/apps/corporate/v1/corporate.js +1 -1
  131. package/dist/esm/generated/ottochain/apps/governance/v1/governance.js +1 -1
  132. package/dist/esm/generated/ottochain/apps/identity/v1/attestation.js +1 -1
  133. package/dist/esm/generated/ottochain/apps/identity/v1/identity.js +1 -1
  134. package/dist/esm/generated/ottochain/apps/markets/v1/market.js +1 -1
  135. package/dist/esm/generated/ottochain/v1/common.js +1 -1
  136. package/dist/esm/generated/ottochain/v1/fiber.js +40 -2
  137. package/dist/esm/generated/ottochain/v1/messages.js +1 -1
  138. package/dist/esm/generated/ottochain/v1/records.js +1 -1
  139. package/dist/esm/index.js +10 -4
  140. package/dist/esm/ottochain/genesis-manifest.js +6 -0
  141. package/dist/esm/ottochain/metagraph-client.js +16 -8
  142. package/dist/esm/ottochain/snapshot.js +2 -4
  143. package/dist/esm/ottochain/transaction.js +8 -0
  144. package/dist/esm/privacy/index.js +2 -2
  145. package/dist/esm/privacy/sealed-bid.js +87 -84
  146. package/dist/esm/privacy/shield-app.js +33 -33
  147. package/dist/esm/schema/effects.js +110 -0
  148. package/dist/esm/schema/fiber-app.js +127 -3
  149. package/dist/esm/schema/guard-lint.js +3 -12
  150. package/dist/esm/schema/guards.js +36 -37
  151. package/dist/esm/templates/asset-policy.js +182 -0
  152. package/dist/esm/templates/index.js +41 -0
  153. package/dist/esm/templates/machine.js +125 -0
  154. package/dist/esm/templates/migration.js +34 -0
  155. package/dist/esm/templates/state-shape.js +34 -0
  156. package/dist/esm/validation.js +1 -3
  157. package/dist/esm/zk/index.js +4 -4
  158. package/dist/types/apps/compute/index.d.ts +176 -0
  159. package/dist/types/apps/compute/state-machines/compute-rule110.d.ts +157 -0
  160. package/dist/types/apps/compute/state-machines/index.d.ts +5 -0
  161. package/dist/types/apps/contracts/index.d.ts +14 -14
  162. package/dist/types/apps/contracts/state-machines/contract-agreement.d.ts +3 -3
  163. package/dist/types/apps/contracts/state-machines/contract-escrow.d.ts +3 -3
  164. package/dist/types/apps/contracts/state-machines/contract-universal.d.ts +4 -4
  165. package/dist/types/apps/corporate/index.d.ts +162 -162
  166. package/dist/types/apps/corporate/state-machines/corp-board.d.ts +88 -88
  167. package/dist/types/apps/corporate/state-machines/corp-entity.d.ts +14 -14
  168. package/dist/types/apps/corporate/state-machines/corp-securities.d.ts +18 -18
  169. package/dist/types/apps/corporate/state-machines/corp-shareholders.d.ts +43 -43
  170. package/dist/types/apps/governance/index.d.ts +81 -81
  171. package/dist/types/apps/governance/state-machines/dao-multisig.d.ts +16 -16
  172. package/dist/types/apps/governance/state-machines/dao-reputation.d.ts +22 -22
  173. package/dist/types/apps/governance/state-machines/dao-token.d.ts +21 -21
  174. package/dist/types/apps/governance/state-machines/governance-simple.d.ts +11 -11
  175. package/dist/types/apps/governance/state-machines/governance-universal.d.ts +4 -4
  176. package/dist/types/apps/identity/constants.d.ts +2 -2
  177. package/dist/types/apps/identity/index.d.ts +70 -70
  178. package/dist/types/apps/identity/state-machines/identity-agent.d.ts +23 -23
  179. package/dist/types/apps/identity/state-machines/identity-oracle.d.ts +11 -11
  180. package/dist/types/apps/identity/state-machines/identity-registry.d.ts +27 -27
  181. package/dist/types/apps/identity/state-machines/identity-universal.d.ts +4 -4
  182. package/dist/types/apps/index.d.ts +9 -6
  183. package/dist/types/apps/lending/assets.d.ts +2 -2
  184. package/dist/types/apps/lending/credit-scoring.d.ts +5 -5
  185. package/dist/types/apps/lending/eligibility.d.ts +2 -2
  186. package/dist/types/apps/lending/index.d.ts +20 -12
  187. package/dist/types/apps/lending/state-machines/lending-zk-loan.d.ts +15 -7
  188. package/dist/types/apps/markets/index.d.ts +76 -76
  189. package/dist/types/apps/markets/state-machines/market-auction.d.ts +12 -12
  190. package/dist/types/apps/markets/state-machines/market-crowdfund.d.ts +19 -19
  191. package/dist/types/apps/markets/state-machines/market-group-buy.d.ts +18 -18
  192. package/dist/types/apps/markets/state-machines/market-prediction.d.ts +15 -15
  193. package/dist/types/apps/markets/state-machines/market-universal.d.ts +7 -7
  194. package/dist/types/apps/oracles/index.d.ts +1 -1
  195. package/dist/types/apps/privacy/index.d.ts +328 -0
  196. package/dist/types/apps/privacy/state-machines/index.d.ts +6 -0
  197. package/dist/types/apps/privacy/state-machines/mixer-ddhRing.d.ts +337 -0
  198. package/dist/types/apps/privacy/state-machines/note-pool.d.ts +196 -0
  199. package/dist/types/apps/staked-pool/assets.d.ts +53 -0
  200. package/dist/types/apps/staked-pool/base.d.ts +80 -0
  201. package/dist/types/apps/staked-pool/consumer.d.ts +29 -0
  202. package/dist/types/apps/staked-pool/index.d.ts +51 -0
  203. package/dist/types/apps/staked-pool/state-machines/index.d.ts +6 -0
  204. package/dist/types/apps/staked-pool/state-machines/staked-pool-base.d.ts +8 -0
  205. package/dist/types/apps/staked-pool/state-machines/staked-pool-oracle.d.ts +34 -0
  206. package/dist/types/generated/openapi.d.ts +13 -0
  207. package/dist/types/generated/ottochain/v1/fiber.d.ts +7 -0
  208. package/dist/types/index.d.ts +3 -3
  209. package/dist/types/openapi.d.ts +4 -2
  210. package/dist/types/ottochain/genesis-manifest.d.ts +6 -0
  211. package/dist/types/ottochain/transaction.d.ts +9 -1
  212. package/dist/types/ottochain/types.d.ts +1 -1
  213. package/dist/types/privacy/index.d.ts +2 -2
  214. package/dist/types/privacy/sealed-bid.d.ts +9 -9
  215. package/dist/types/privacy/shield-app.d.ts +1 -1
  216. package/dist/types/schema/effects.d.ts +107 -0
  217. package/dist/types/schema/fiber-app.d.ts +281 -0
  218. package/dist/types/schema/guards.d.ts +12 -0
  219. package/dist/types/templates/asset-policy.d.ts +119 -0
  220. package/dist/types/templates/index.d.ts +26 -0
  221. package/dist/types/templates/machine.d.ts +139 -0
  222. package/dist/types/templates/migration.d.ts +34 -0
  223. package/dist/types/templates/state-shape.d.ts +30 -0
  224. package/dist/types/zk/index.d.ts +4 -4
  225. package/package.json +31 -13
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Oracle-pool specialization of the staked-pool base (`StakedPoolOracle`).
3
+ *
4
+ * `submit` appends a numeric datapoint `{ addr, value }` (the base default arm).
5
+ * `finalize` (COLLECTING→SETTLED) aggregates the array with an outlier-bounded mean and publishes the
6
+ * answer + the in-consensus address set — emitting ZERO asset transfers (the entitlement ledger is
7
+ * `inConsensus`; rewards are pulled per-claim via the base `claim_reward` arm).
8
+ *
9
+ * Aggregation (default `trimmedMean`):
10
+ * 1. vals = map(submissions, .value)
11
+ * 2. trimmed = filter(submissions, value != min(vals) && value != max(vals)) — drop single min + single max
12
+ * 3. center = sum(trimmed.value) / count(trimmed) — EXACT rational (no truncation)
13
+ * 4. kept = filter(submissions, abs(value - center) <= outlierBound) — the in-consensus set
14
+ * 5. answer = sum(kept.value) / count(kept)
15
+ *
16
+ * CRITICAL JLVM SCOPING (verified against @constellation-network/metagraph-sdk-jlvm@1.8.0-rc.5):
17
+ * - Inside a `map`/`filter` callback the data scope is the BARE element, BUT the outer `state.*` is
18
+ * still readable (verified: `{cat:[addr,"|",{var:"state.epoch"}]}` reads epoch correctly).
19
+ * - A `let`-bound name does NOT cross into a `map`/`filter` callback. So `center` is INLINED into the
20
+ * `kept` predicate (it reads `state.submissions`, which IS visible) rather than `let`-hoisted — a
21
+ * `let`-bound `center` resolves to null inside `filter`, evicting every submission (div-by-zero).
22
+ * - A `reduce` with a MAP initial accumulator is rejected (`opReduce` requires `isPrimitive(init)`),
23
+ * so the reward ledger is NOT a folded `{addr:int}` map — it is the `inConsensus` array (membership =
24
+ * entitlement), consumed by `claim_reward` + a `claimed` dedup map.
25
+ */
26
+ import { makeStakedPoolDef } from '../base.js';
27
+ const sum = (arr) => ({
28
+ reduce: [arr, { '+': [{ var: 'accumulator' }, { var: 'current' }] }, 0],
29
+ });
30
+ const meanOf = (arr) => ({ '/': [sum(arr), { count: [arr] }] });
31
+ /** vals = map(submissions, .value) */
32
+ const VALS = { map: [{ var: 'state.submissions' }, { get: [{ var: '' }, 'value'] }] };
33
+ /**
34
+ * The aggregation `center` as a CLOSED expression over `state.submissions` (must be inlined into the
35
+ * `kept` filter — see file header). `trimmedMean` drops the single min + single max before averaging.
36
+ */
37
+ function centerExpr(aggregation) {
38
+ if (aggregation === 'mean')
39
+ return meanOf(VALS);
40
+ const trimmed = {
41
+ filter: [
42
+ { var: 'state.submissions' },
43
+ {
44
+ and: [
45
+ { '!==': [{ get: [{ var: '' }, 'value'] }, { min: [VALS] }] },
46
+ { '!==': [{ get: [{ var: '' }, 'value'] }, { max: [VALS] }] },
47
+ ],
48
+ },
49
+ ],
50
+ };
51
+ const trimmedVals = { map: [trimmed, { get: [{ var: '' }, 'value'] }] };
52
+ return meanOf(trimmedVals);
53
+ }
54
+ /** finalize COLLECTING→SETTLED — publish answer + inConsensus; ZERO asset transfers. */
55
+ function finalizeArm(aggregation) {
56
+ const center = centerExpr(aggregation);
57
+ // kept = the in-consensus submissions; `center` is INLINED (visible state.submissions inside filter).
58
+ const kept = {
59
+ filter: [
60
+ { var: 'state.submissions' },
61
+ {
62
+ '<=': [{ abs: [{ '-': [{ get: [{ var: '' }, 'value'] }, center] }] }, { var: 'state.outlierBound' }],
63
+ },
64
+ ],
65
+ };
66
+ const keptVals = { map: [kept, { get: [{ var: '' }, 'value'] }] };
67
+ const inConsensus = { map: [kept, { get: [{ var: '' }, 'addr'] }] };
68
+ return {
69
+ from: 'COLLECTING',
70
+ to: 'SETTLED',
71
+ eventName: 'finalize',
72
+ // Authority finalizes once quorum is met AND the window has elapsed.
73
+ guard: {
74
+ and: [
75
+ { in: [{ var: 'state.authority' }, { map: [{ var: 'proofs' }, { var: 'address' }] }] },
76
+ { '>=': [{ count: [{ var: 'state.submissions' }] }, { var: 'state.quorum' }] },
77
+ {
78
+ '>=': [{ var: '$ordinal' }, { '+': [{ var: 'state.epochStartedAt' }, { var: 'state.epochLength' }] }],
79
+ },
80
+ ],
81
+ },
82
+ // ZERO _transferAsset: publish result + record the in-consensus entitlement set + reset claimed.
83
+ effect: {
84
+ merge: [
85
+ { var: 'state' },
86
+ {
87
+ status: 'SETTLED',
88
+ inConsensus,
89
+ claimed: {},
90
+ result: {
91
+ value: meanOf(keptVals),
92
+ epoch: { var: 'state.epoch' },
93
+ finalizedAt: { var: '$ordinal' },
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ dependencies: [],
99
+ };
100
+ }
101
+ /** Build the oracle-pool definition. `outlierPenalty` is soft-only (no-credit for outliers); hard slash is v2. */
102
+ export function makeOraclePoolDef(options = {}) {
103
+ const aggregation = options.aggregation ?? 'trimmedMean';
104
+ return makeStakedPoolDef({
105
+ metadata: {
106
+ name: 'StakedPoolOracle',
107
+ type: 'oraclePool',
108
+ description: 'Reputation-gated staked oracle pool: participants stake + submit numeric datapoints; finalize ' +
109
+ 'publishes an outlier-bounded (default trimmed-mean) consensus answer and credits the in-consensus ' +
110
+ 'set as a claim entitlement (zero finalize-time transfers); a consumer reads the published value ' +
111
+ 'cross-fiber via an epoch-pinned depInState(SETTLED) gate.',
112
+ },
113
+ finalize: finalizeArm(aggregation),
114
+ extraCreateProperties: {
115
+ rewardPolicy: {
116
+ type: 'string',
117
+ description: 'Asset policy of the shared fungible reward token.',
118
+ immutable: true,
119
+ },
120
+ },
121
+ extraStateProperties: {
122
+ rewardPolicy: { type: 'string', immutable: true },
123
+ },
124
+ });
125
+ }
126
+ /** Default oracle-pool definition (trimmed-mean). */
127
+ export const stakedPoolOracleDef = makeOraclePoolDef();
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: google/protobuf/struct.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: google/protobuf/timestamp.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/contracts/v1/contract.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/corporate/v1/corporate.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/governance/v1/governance.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/identity/v1/attestation.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/identity/v1/identity.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/apps/markets/v1/market.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/v1/common.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/v1/fiber.proto
6
6
  /* eslint-disable */
@@ -427,7 +427,7 @@ export const StateMachineDefinition = {
427
427
  },
428
428
  };
429
429
  function createBaseEmittedEvent() {
430
- return { name: "", data: undefined, destination: undefined };
430
+ return { name: "", data: undefined, destination: undefined, emitterFiberId: "", emissionIndex: 0 };
431
431
  }
432
432
  export const EmittedEvent = {
433
433
  encode(message, writer = new BinaryWriter()) {
@@ -440,6 +440,12 @@ export const EmittedEvent = {
440
440
  if (message.destination !== undefined) {
441
441
  writer.uint32(26).string(message.destination);
442
442
  }
443
+ if (message.emitterFiberId !== "") {
444
+ writer.uint32(34).string(message.emitterFiberId);
445
+ }
446
+ if (message.emissionIndex !== 0) {
447
+ writer.uint32(40).int32(message.emissionIndex);
448
+ }
443
449
  return writer;
444
450
  },
445
451
  decode(input, length) {
@@ -470,6 +476,20 @@ export const EmittedEvent = {
470
476
  message.destination = reader.string();
471
477
  continue;
472
478
  }
479
+ case 4: {
480
+ if (tag !== 34) {
481
+ break;
482
+ }
483
+ message.emitterFiberId = reader.string();
484
+ continue;
485
+ }
486
+ case 5: {
487
+ if (tag !== 40) {
488
+ break;
489
+ }
490
+ message.emissionIndex = reader.int32();
491
+ continue;
492
+ }
473
493
  }
474
494
  if ((tag & 7) === 4 || tag === 0) {
475
495
  break;
@@ -483,6 +503,16 @@ export const EmittedEvent = {
483
503
  name: isSet(object.name) ? globalThis.String(object.name) : "",
484
504
  data: isSet(object?.data) ? object.data : undefined,
485
505
  destination: isSet(object.destination) ? globalThis.String(object.destination) : undefined,
506
+ emitterFiberId: isSet(object.emitterFiberId)
507
+ ? globalThis.String(object.emitterFiberId)
508
+ : isSet(object.emitter_fiber_id)
509
+ ? globalThis.String(object.emitter_fiber_id)
510
+ : "",
511
+ emissionIndex: isSet(object.emissionIndex)
512
+ ? globalThis.Number(object.emissionIndex)
513
+ : isSet(object.emission_index)
514
+ ? globalThis.Number(object.emission_index)
515
+ : 0,
486
516
  };
487
517
  },
488
518
  toJSON(message) {
@@ -496,6 +526,12 @@ export const EmittedEvent = {
496
526
  if (message.destination !== undefined) {
497
527
  obj.destination = message.destination;
498
528
  }
529
+ if (message.emitterFiberId !== "") {
530
+ obj.emitterFiberId = message.emitterFiberId;
531
+ }
532
+ if (message.emissionIndex !== 0) {
533
+ obj.emissionIndex = Math.round(message.emissionIndex);
534
+ }
499
535
  return obj;
500
536
  },
501
537
  create(base) {
@@ -506,6 +542,8 @@ export const EmittedEvent = {
506
542
  message.name = object.name ?? "";
507
543
  message.data = object.data ?? undefined;
508
544
  message.destination = object.destination ?? undefined;
545
+ message.emitterFiberId = object.emitterFiberId ?? "";
546
+ message.emissionIndex = object.emissionIndex ?? 0;
509
547
  return message;
510
548
  },
511
549
  };
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/v1/messages.proto
6
6
  /* eslint-disable */
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.5
3
+ // protoc-gen-ts_proto v2.11.8
4
4
  // protoc unknown
5
5
  // source: ottochain/v1/records.proto
6
6
  /* eslint-disable */
package/dist/esm/index.js CHANGED
@@ -49,7 +49,10 @@ validate, validatePrivateKey, validatePublicKey, validateAddress, validateKeyPai
49
49
  // ─── OttoChain metagraph client ───────────────────────────────────────────────
50
50
  export { MetagraphClient as OttoMetagraphClient } from './ottochain/metagraph-client.js';
51
51
  // Proto definition helper
52
- export { toProtoDefinition, defineFiberApp, } from './schema/fiber-app.js';
52
+ export { toProtoDefinition, defineFiberApp,
53
+ // Fiber policy (the fiber constitution): mirrors the chain ADT
54
+ // `FiberPolicy = Unconstrained | Immutable | Constrained(<dials>)`.
55
+ constrained, unconstrained, immutable, IMMUTABLE_POLICY, projectFiberPolicy, } from './schema/fiber-app.js';
53
56
  // Canonical authorization-guard builders (bind to verified signers, not attacker payloads).
54
57
  export { signerIsParty, signerIsAnyParty, signerInSet, signerIsNotParty, signerHasEntry, assetSignerIs,
55
58
  // effect-key coupling (S1): bind a dynamic map key to a verified signer
@@ -59,9 +62,12 @@ signerHasReputation, signerHasRole,
59
62
  // identity-registry reads (runtime-bound registry id, #24)
60
63
  signerHasReputationVia, signerHasRoleVia,
61
64
  // cross-fiber state gate (runtime-bound dependency, #24) — replaces object-form deps
62
- depInState, } from './schema/guards.js';
63
- // Reserved EFFECT-directive builders (dynamic dependencies, #24).
64
- export { addDependency, setDependencyActive } from './schema/effects.js';
65
+ depInState,
66
+ // append-only-array dedup: actor not yet present in an array of records
67
+ actorNotInArray, } from './schema/guards.js';
68
+ // Reserved EFFECT-directive builders (dynamic dependencies, #24; whole-asset custody moves;
69
+ // cross-fiber triggers, spawn, emit + recipient-intent helpers; the reserved-key set for validators).
70
+ export { addDependency, setDependencyActive, transferAsset, triggers, spawn, emit, toFiber, toWallet, RESERVED_EFFECT_KEYS, } from './schema/effects.js';
65
71
  // ─── Privacy: shield any fiber app into a zk-jlvm-shielded private-state pool ──
66
72
  // See docs/design/zk-private-contract-state-rfc.md.
67
73
  export { shieldApp, SHIELDED_POOL_STATE } from './privacy/shield-app.js';
@@ -145,6 +145,12 @@ function toWireDefinition(def) {
145
145
  })),
146
146
  // Strip FiberAppMetadata — the chain's `metadata` is `Option[JsonLogicValue]`.
147
147
  metadata: null,
148
+ // Carry the fiber constitution through verbatim from the shared projector: PRESENT for
149
+ // `Constrained` (a bare object of set dials) and `Immutable` (the bare string
150
+ // `"Immutable"`), ABSENT for `Unconstrained`. The `policy` key is only set here when
151
+ // `toProtoDefinition` emitted one, so an unconstrained def keeps NO `policy` key
152
+ // (omit-on-unconstrained wire parity).
153
+ ...(proto.policy !== undefined ? { policy: proto.policy } : {}),
148
154
  };
149
155
  }
150
156
  // ─── Builder ──────────────────────────────────────────────────────────────────
@@ -244,7 +244,9 @@ export class MetagraphClient {
244
244
  try {
245
245
  onError(cbErr instanceof Error ? cbErr : new Error(String(cbErr)));
246
246
  }
247
- catch { /* ignore */ }
247
+ catch {
248
+ /* ignore */
249
+ }
248
250
  }
249
251
  };
250
252
  const poll = async () => {
@@ -261,7 +263,9 @@ export class MetagraphClient {
261
263
  try {
262
264
  onError(err instanceof Error ? err : new Error(String(err)));
263
265
  }
264
- catch { /* ignore */ }
266
+ catch {
267
+ /* ignore */
268
+ }
265
269
  if (active)
266
270
  setTimeout(poll, intervalMs);
267
271
  return;
@@ -294,7 +298,9 @@ export class MetagraphClient {
294
298
  // callers can unsubscribe before the first poll runs, and each
295
299
  // jest.runOnlyPendingTimersAsync() advances exactly one poll cycle.
296
300
  setTimeout(poll, 0);
297
- return () => { active = false; };
301
+ return () => {
302
+ active = false;
303
+ };
298
304
  }
299
305
  /**
300
306
  * Wait for a fiber to reach a specific state, with an optional timeout.
@@ -392,14 +398,16 @@ export class MetagraphClient {
392
398
  let settled = false;
393
399
  let pending = this.dl1Clients.length;
394
400
  for (const client of this.dl1Clients) {
395
- client.post('/data', request).then((result) => { if (!settled) {
396
- settled = true;
397
- resolve(result);
398
- } }, (err) => {
401
+ client.post('/data', request).then((result) => {
402
+ if (!settled) {
403
+ settled = true;
404
+ resolve(result);
405
+ }
406
+ }, (err) => {
399
407
  errors.push(err instanceof Error ? err : new Error(String(err)));
400
408
  pending--;
401
409
  if (pending === 0 && !settled) {
402
- reject(new Error('All DL1 nodes failed: ' + errors.map(e => e.message).join('; ')));
410
+ reject(new Error('All DL1 nodes failed: ' + errors.map((e) => e.message).join('; ')));
403
411
  }
404
412
  });
405
413
  }
@@ -81,8 +81,7 @@ export function getLogsForFiber(onChain, fiberId) {
81
81
  * @returns Array of EventReceipt entries
82
82
  */
83
83
  export function getEventReceipts(onChain, fiberId) {
84
- return getLogsForFiber(onChain, fiberId)
85
- .filter((entry) => 'eventName' in entry && 'success' in entry);
84
+ return getLogsForFiber(onChain, fiberId).filter((entry) => 'eventName' in entry && 'success' in entry);
86
85
  }
87
86
  /**
88
87
  * Get ScriptInvocation log entries for a specific fiber.
@@ -95,6 +94,5 @@ export function getEventReceipts(onChain, fiberId) {
95
94
  * @returns Array of ScriptInvocation entries
96
95
  */
97
96
  export function getScriptInvocations(onChain, fiberId) {
98
- return getLogsForFiber(onChain, fiberId)
99
- .filter((entry) => 'method' in entry && 'result' in entry);
97
+ return getLogsForFiber(onChain, fiberId).filter((entry) => 'method' in entry && 'result' in entry);
100
98
  }
@@ -157,6 +157,14 @@ export function createApplyMorphismPayload(params) {
157
157
  export function createAuthorizeComposePayload(params) {
158
158
  return { AuthorizeCompose: params };
159
159
  }
160
+ /** Wrap a {@link PublishMachineVersion} (create-or-append a STATE-MACHINE registry version). */
161
+ export function createPublishMachineVersionPayload(params) {
162
+ return { PublishMachineVersion: params };
163
+ }
164
+ /** Wrap an {@link UpgradeFiber} (re-pin a fiber to another registered version of the SAME package). */
165
+ export function createUpgradeFiberPayload(params) {
166
+ return { UpgradeFiber: params };
167
+ }
160
168
  /**
161
169
  * Sign a transaction payload for self-signed mode.
162
170
  *
@@ -2,5 +2,5 @@
2
2
  * Privacy: shield any fiber app into a zk-jlvm-shielded private-state pool.
3
3
  * See docs/design/zk-private-contract-state-rfc.md.
4
4
  */
5
- export { shieldApp, SHIELDED_POOL_STATE } from "./shield-app.js";
6
- export { sealedBidAccountDef, shieldedSealedBidDef, vickreyAuctionDef } from "./sealed-bid.js";
5
+ export { shieldApp, SHIELDED_POOL_STATE } from './shield-app.js';
6
+ export { sealedBidAccountDef, shieldedSealedBidDef, vickreyAuctionDef } from './sealed-bid.js';