@sparkdreamnft/sparkdreamjs 0.0.38 → 0.0.40

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.
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Interim = exports.InterimStatusAmino = exports.InterimStatus = exports.InterimComplexityAmino = exports.InterimComplexity = exports.InterimTypeAmino = exports.InterimType = void 0;
3
+ exports.Interim = exports.InterimStatusAmino = exports.InterimStatus = exports.InterimComplexityAmino = exports.InterimComplexity = exports.InterimTypeAmino = exports.InterimType = exports.AdjudicationDecisionAmino = exports.AdjudicationDecision = void 0;
4
+ exports.adjudicationDecisionFromJSON = adjudicationDecisionFromJSON;
5
+ exports.adjudicationDecisionToJSON = adjudicationDecisionToJSON;
4
6
  exports.interimTypeFromJSON = interimTypeFromJSON;
5
7
  exports.interimTypeToJSON = interimTypeToJSON;
6
8
  exports.interimComplexityFromJSON = interimComplexityFromJSON;
@@ -9,6 +11,51 @@ exports.interimStatusFromJSON = interimStatusFromJSON;
9
11
  exports.interimStatusToJSON = interimStatusToJSON;
10
12
  //@ts-nocheck
11
13
  const binary_1 = require("../../../binary");
14
+ /**
15
+ * AdjudicationDecision is the Operations Committee's verdict on the challenge
16
+ * an ADJUDICATION interim was raised to settle — the terminal path for an
17
+ * inconclusive jury, and for challenges escalated when no jury could be seated.
18
+ */
19
+ var AdjudicationDecision;
20
+ (function (AdjudicationDecision) {
21
+ AdjudicationDecision[AdjudicationDecision["ADJUDICATION_DECISION_UNSPECIFIED"] = 0] = "ADJUDICATION_DECISION_UNSPECIFIED";
22
+ /** ADJUDICATION_DECISION_UPHOLD - The challenge stands: the work failed. Resolves the challenge as UPHELD. */
23
+ AdjudicationDecision[AdjudicationDecision["ADJUDICATION_DECISION_UPHOLD"] = 1] = "ADJUDICATION_DECISION_UPHOLD";
24
+ /** ADJUDICATION_DECISION_REJECT - The challenge fails: the work stands. Resolves the challenge as REJECTED. */
25
+ AdjudicationDecision[AdjudicationDecision["ADJUDICATION_DECISION_REJECT"] = 2] = "ADJUDICATION_DECISION_REJECT";
26
+ AdjudicationDecision[AdjudicationDecision["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
27
+ })(AdjudicationDecision || (exports.AdjudicationDecision = AdjudicationDecision = {}));
28
+ exports.AdjudicationDecisionAmino = AdjudicationDecision;
29
+ function adjudicationDecisionFromJSON(object) {
30
+ switch (object) {
31
+ case 0:
32
+ case "ADJUDICATION_DECISION_UNSPECIFIED":
33
+ return AdjudicationDecision.ADJUDICATION_DECISION_UNSPECIFIED;
34
+ case 1:
35
+ case "ADJUDICATION_DECISION_UPHOLD":
36
+ return AdjudicationDecision.ADJUDICATION_DECISION_UPHOLD;
37
+ case 2:
38
+ case "ADJUDICATION_DECISION_REJECT":
39
+ return AdjudicationDecision.ADJUDICATION_DECISION_REJECT;
40
+ case -1:
41
+ case "UNRECOGNIZED":
42
+ default:
43
+ return AdjudicationDecision.UNRECOGNIZED;
44
+ }
45
+ }
46
+ function adjudicationDecisionToJSON(object) {
47
+ switch (object) {
48
+ case AdjudicationDecision.ADJUDICATION_DECISION_UNSPECIFIED:
49
+ return "ADJUDICATION_DECISION_UNSPECIFIED";
50
+ case AdjudicationDecision.ADJUDICATION_DECISION_UPHOLD:
51
+ return "ADJUDICATION_DECISION_UPHOLD";
52
+ case AdjudicationDecision.ADJUDICATION_DECISION_REJECT:
53
+ return "ADJUDICATION_DECISION_REJECT";
54
+ case AdjudicationDecision.UNRECOGNIZED:
55
+ default:
56
+ return "UNRECOGNIZED";
57
+ }
58
+ }
12
59
  var InterimType;
13
60
  (function (InterimType) {
14
61
  /** INTERIM_TYPE_JURY_DUTY - Jury and dispute resolution */
@@ -231,7 +278,8 @@ function createBaseInterim() {
231
278
  createdAt: BigInt(0),
232
279
  completedAt: BigInt(0),
233
280
  status: 0,
234
- completionNotes: ""
281
+ completionNotes: "",
282
+ decision: 0
235
283
  };
236
284
  }
237
285
  /**
@@ -282,6 +330,9 @@ exports.Interim = {
282
330
  if (message.completionNotes !== "") {
283
331
  writer.uint32(106).string(message.completionNotes);
284
332
  }
333
+ if (message.decision !== 0) {
334
+ writer.uint32(112).int32(message.decision);
335
+ }
285
336
  return writer;
286
337
  },
287
338
  decode(input, length) {
@@ -330,6 +381,9 @@ exports.Interim = {
330
381
  case 13:
331
382
  message.completionNotes = reader.string();
332
383
  break;
384
+ case 14:
385
+ message.decision = reader.int32();
386
+ break;
333
387
  default:
334
388
  reader.skipType(tag & 7);
335
389
  break;
@@ -352,6 +406,7 @@ exports.Interim = {
352
406
  message.completedAt = object.completedAt !== undefined && object.completedAt !== null ? BigInt(object.completedAt.toString()) : BigInt(0);
353
407
  message.status = object.status ?? 0;
354
408
  message.completionNotes = object.completionNotes ?? "";
409
+ message.decision = object.decision ?? 0;
355
410
  return message;
356
411
  },
357
412
  fromAmino(object) {
@@ -393,6 +448,9 @@ exports.Interim = {
393
448
  if (object.completion_notes !== undefined && object.completion_notes !== null) {
394
449
  message.completionNotes = object.completion_notes;
395
450
  }
451
+ if (object.decision !== undefined && object.decision !== null) {
452
+ message.decision = object.decision;
453
+ }
396
454
  return message;
397
455
  },
398
456
  toAmino(message) {
@@ -415,6 +473,7 @@ exports.Interim = {
415
473
  obj.completed_at = message.completedAt !== BigInt(0) ? message.completedAt?.toString() : undefined;
416
474
  obj.status = message.status === 0 ? undefined : message.status;
417
475
  obj.completion_notes = message.completionNotes === "" ? undefined : message.completionNotes;
476
+ obj.decision = message.decision === 0 ? undefined : message.decision;
418
477
  return obj;
419
478
  },
420
479
  fromAminoMsg(object) {
@@ -273,6 +273,33 @@ export interface Member {
273
273
  lifetimeForumRepPerTag: {
274
274
  [key: string]: string;
275
275
  };
276
+ /**
277
+ * Block height at which the member joined. This is the height-domain
278
+ * twin of joined_at (a unix timestamp): the new-member decay grace
279
+ * window is denominated in epochs — height / epoch_blocks — so it must
280
+ * be measured against a height, not a timestamp. Dividing the unix
281
+ * timestamp by epoch_blocks produced an astronomically large "join
282
+ * epoch", a deeply negative member age, and a grace window that never
283
+ * expired for invited members (genesis-seeded members with joined_at=0
284
+ * were unaffected). Members restored from genesis written before this
285
+ * field carry 0, which reads as "joined at genesis" — they exit grace
286
+ * after NewMemberDecayGraceEpochs epochs, the same behaviour
287
+ * genesis-seeded members have always had.
288
+ */
289
+ joinedAtHeight: bigint;
290
+ /**
291
+ * Aggregate DREAM this member currently holds in content-conviction stakes
292
+ * across ALL content items (blog, forum, collection). Backs the per-member
293
+ * max_total_content_stake_per_member cap: the per-item cap only sets the
294
+ * granularity of parking DREAM here, so the aggregate is what bounds the
295
+ * total. (Content stakes earn no DREAM but do decay.) Maintained
296
+ * by updateStakePoolTotals — the single choke point for stake-amount
297
+ * mutations — and recomputed by ReconcileStakePoolTotals on genesis import.
298
+ * Author bonds are not counted here; they are slashable escrow with their
299
+ * own per-item cap. Nil on records written before this field existed;
300
+ * readers must treat nil as zero.
301
+ */
302
+ contentStakedDream: string;
276
303
  }
277
304
  export interface MemberProtoMsg {
278
305
  typeUrl: "/sparkdream.rep.v1.Member";
@@ -401,6 +428,33 @@ export interface MemberAmino {
401
428
  lifetime_forum_rep_per_tag?: {
402
429
  [key: string]: string;
403
430
  };
431
+ /**
432
+ * Block height at which the member joined. This is the height-domain
433
+ * twin of joined_at (a unix timestamp): the new-member decay grace
434
+ * window is denominated in epochs — height / epoch_blocks — so it must
435
+ * be measured against a height, not a timestamp. Dividing the unix
436
+ * timestamp by epoch_blocks produced an astronomically large "join
437
+ * epoch", a deeply negative member age, and a grace window that never
438
+ * expired for invited members (genesis-seeded members with joined_at=0
439
+ * were unaffected). Members restored from genesis written before this
440
+ * field carry 0, which reads as "joined at genesis" — they exit grace
441
+ * after NewMemberDecayGraceEpochs epochs, the same behaviour
442
+ * genesis-seeded members have always had.
443
+ */
444
+ joined_at_height?: string;
445
+ /**
446
+ * Aggregate DREAM this member currently holds in content-conviction stakes
447
+ * across ALL content items (blog, forum, collection). Backs the per-member
448
+ * max_total_content_stake_per_member cap: the per-item cap only sets the
449
+ * granularity of parking DREAM here, so the aggregate is what bounds the
450
+ * total. (Content stakes earn no DREAM but do decay.) Maintained
451
+ * by updateStakePoolTotals — the single choke point for stake-amount
452
+ * mutations — and recomputed by ReconcileStakePoolTotals on genesis import.
453
+ * Author bonds are not counted here; they are slashable escrow with their
454
+ * own per-item cap. Nil on records written before this field existed;
455
+ * readers must treat nil as zero.
456
+ */
457
+ content_staked_dream?: string;
404
458
  }
405
459
  export interface MemberAminoMsg {
406
460
  type: "/sparkdream.rep.v1.Member";
@@ -494,7 +494,9 @@ function createBaseMember() {
494
494
  epochSalvations: 0,
495
495
  lastSalvationEpoch: BigInt(0),
496
496
  forumRepPerTag: {},
497
- lifetimeForumRepPerTag: {}
497
+ lifetimeForumRepPerTag: {},
498
+ joinedAtHeight: BigInt(0),
499
+ contentStakedDream: ""
498
500
  };
499
501
  }
500
502
  /**
@@ -617,6 +619,12 @@ exports.Member = {
617
619
  value
618
620
  }, writer.uint32(258).fork()).ldelim();
619
621
  });
622
+ if (message.joinedAtHeight !== BigInt(0)) {
623
+ writer.uint32(264).int64(message.joinedAtHeight);
624
+ }
625
+ if (message.contentStakedDream !== "") {
626
+ writer.uint32(274).string(message.contentStakedDream);
627
+ }
620
628
  return writer;
621
629
  },
622
630
  decode(input, length) {
@@ -737,6 +745,12 @@ exports.Member = {
737
745
  message.lifetimeForumRepPerTag[entry32.key] = entry32.value;
738
746
  }
739
747
  break;
748
+ case 33:
749
+ message.joinedAtHeight = reader.int64();
750
+ break;
751
+ case 34:
752
+ message.contentStakedDream = reader.string();
753
+ break;
740
754
  default:
741
755
  reader.skipType(tag & 7);
742
756
  break;
@@ -803,6 +817,8 @@ exports.Member = {
803
817
  }
804
818
  return acc;
805
819
  }, {});
820
+ message.joinedAtHeight = object.joinedAtHeight !== undefined && object.joinedAtHeight !== null ? BigInt(object.joinedAtHeight.toString()) : BigInt(0);
821
+ message.contentStakedDream = object.contentStakedDream ?? "";
806
822
  return message;
807
823
  },
808
824
  fromAmino(object) {
@@ -916,6 +932,12 @@ exports.Member = {
916
932
  }
917
933
  return acc;
918
934
  }, {});
935
+ if (object.joined_at_height !== undefined && object.joined_at_height !== null) {
936
+ message.joinedAtHeight = BigInt(object.joined_at_height);
937
+ }
938
+ if (object.content_staked_dream !== undefined && object.content_staked_dream !== null) {
939
+ message.contentStakedDream = object.content_staked_dream;
940
+ }
919
941
  return message;
920
942
  },
921
943
  toAmino(message) {
@@ -982,6 +1004,8 @@ exports.Member = {
982
1004
  obj.lifetime_forum_rep_per_tag[k] = v;
983
1005
  });
984
1006
  }
1007
+ obj.joined_at_height = message.joinedAtHeight !== BigInt(0) ? message.joinedAtHeight?.toString() : undefined;
1008
+ obj.content_staked_dream = message.contentStakedDream === "" ? undefined : message.contentStakedDream;
985
1009
  return obj;
986
1010
  },
987
1011
  fromAminoMsg(object) {
@@ -246,6 +246,41 @@ export interface Params {
246
246
  * Seasonal staking reward pool
247
247
  */
248
248
  maxStakingRewardsPerSeason: string;
249
+ /**
250
+ * Ceiling on each epoch's reward slice, as a yield on the DREAM actually
251
+ * staked (default 0.0005 = 0.05% per epoch, 7.5% over a 150-epoch season
252
+ * gross, ~3.75% net of staked_decay_rate).
253
+ *
254
+ * The slice is otherwise remaining/remaining_epochs no matter how little is
255
+ * staked, so yield per staked DREAM diverges as the staked base shrinks and
256
+ * acc_per_share grows without bound: a chain with 1.47 DREAM staked hands the
257
+ * entire season budget to three dust stakes. Whatever this cap withholds
258
+ * stays in the pool rather than being distributed or dropped.
259
+ */
260
+ stakingRewardYieldPerEpoch: string;
261
+ /**
262
+ * Share of the previous season's non-staking DREAM mints that funds this
263
+ * season's staking reward pool (default 0.05 = 5%), so emission tracks what
264
+ * the chain actually produced rather than the calendar.
265
+ *
266
+ * Staking rewards are excluded from the base. Counting them would let each
267
+ * season's pool inflate the next one's, compounding with nothing but the
268
+ * schedule cap below to stop it.
269
+ */
270
+ stakingPoolMintShare: string;
271
+ /**
272
+ * Schedule ceiling on the seasonal pool:
273
+ *
274
+ * cap = staking_pool_cap_base * (season + 1) * staking_pool_cap_rate
275
+ *
276
+ * The base is the chain's initial DREAM supply (25,000 DREAM at genesis) and
277
+ * the rate defaults to 0.05, so the ceiling opens at 1,250 DREAM in season 0
278
+ * and widens by that much each season. It backstops the mint-share term above
279
+ * on a chain whose mint volume spikes; max_staking_rewards_per_season remains
280
+ * the absolute ceiling over both.
281
+ */
282
+ stakingPoolCapBase: string;
283
+ stakingPoolCapRate: string;
249
284
  /**
250
285
  * Per-epoch decay on staked DREAM (default 0.05% = 0.0005)
251
286
  */
@@ -272,6 +307,31 @@ export interface Params {
272
307
  * but without this cap, a whale can stake disproportionately and extract most seasonal staking rewards.
273
308
  */
274
309
  maxInitiativeStakePerMember: string;
310
+ /**
311
+ * Anti-dust floor on the DREAM one MsgStake may lock (default 0.002 DREAM =
312
+ * 2,000 micro-DREAM). There was no floor at all, so a member could open the
313
+ * ten tranches max_stake_tranches_per_target allows at one micro-DREAM each
314
+ * and be counted as a participant in every conviction and payout weighting
315
+ * the initiative runs.
316
+ *
317
+ * The default is pinned to 1/staking_reward_yield_per_epoch: the smallest
318
+ * stake whose own per-epoch accrual (amount * yield, truncated to an integer)
319
+ * reaches one micro-DREAM. Below that a record can never earn anything, and
320
+ * should not occupy a state slot. Move it with the yield. What bounds the
321
+ * return on a small position is max_completion_bonus_stake_multiple, not
322
+ * this.
323
+ */
324
+ minStakeAmount: string;
325
+ /**
326
+ * Per-season cap on total DREAM minted to pay interim work (default 50,000
327
+ * DREAM). The initiative cap below has always existed; the interim path had
328
+ * no season bound at all, which left it as the one DREAM-creating flow whose
329
+ * total was limited only by max_dream_mint_per_epoch — 250,000 DREAM/day
330
+ * against a 25,000 DREAM genesis supply. Interims are self-assigned and
331
+ * self-completed by design, so the per-member active cap alone does not
332
+ * bound the total: a member can complete and re-create indefinitely.
333
+ */
334
+ maxInterimRewardsPerSeason: string;
275
335
  /**
276
336
  * Per-season cap on total DREAM minted via initiative completion rewards (default 100,000 DREAM).
277
337
  * Bounds total extraction even if colluding members rubber-stamp initiatives.
@@ -482,6 +542,43 @@ export interface Params {
482
542
  * Default 0.1.
483
543
  */
484
544
  initiativeCompletionBonusRate: string;
545
+ /**
546
+ * Ceiling on the initiative completion bonus, as a multiple of the external
547
+ * DREAM actually staked behind the initiative (default 3.0):
548
+ *
549
+ * bonus_pool = min(initiative_completion_bonus_rate * budget,
550
+ * max_completion_bonus_stake_multiple * external_stake)
551
+ *
552
+ * Default 3.0. Without it the bonus is a fixed share of the budget while the
553
+ * capital needed to unlock that budget falls as 1/N in the number of stakers —
554
+ * required_conviction is conviction_per_dream * sqrt(budget), each of N
555
+ * stakers supplies sqrt(stake), so the total stake that clears the gate is
556
+ * conviction_per_dream^2 * budget / N. The bonus per staker is then
557
+ * 2.5 * N times their own stake: 7.5x at three stakers, 25x at ten, 62.5x at
558
+ * twenty-five, risk-free on any initiative that completes.
559
+ *
560
+ * Pricing the bonus off capital at risk instead of participant count
561
+ * restores the stake-to-budget ratio the conviction formula was designed
562
+ * around (~4%) without touching the sqrt weighting that deliberately rewards
563
+ * breadth. Range: 0 disables the bonus entirely.
564
+ */
565
+ maxCompletionBonusStakeMultiple: string;
566
+ /**
567
+ * Ceiling on the TOTAL DREAM one member may hold across all content
568
+ * conviction stakes (blog, forum, collection — every item combined), on top
569
+ * of the per-item max_content_stake_per_member.
570
+ *
571
+ * Content stakes neither decay (decayStakes skips them) nor earn, so without
572
+ * an aggregate bound they are an unbounded decay-free store of value: DREAM
573
+ * parked there escapes the unstaked decay nudge entirely while a reward-
574
+ * bearing stake pays for itself in yield only when the seasonal pool is not
575
+ * calendar-bound. The per-item cap alone does not bound the park — one
576
+ * member can hold max_content_stake_per_member on every item ever created.
577
+ * Must be >= max_content_stake_per_member. Default 20,000 DREAM (2x the
578
+ * per-item cap). Author bonds are not counted; they are slashable escrow
579
+ * with their own per-item cap.
580
+ */
581
+ maxTotalContentStakePerMember: string;
485
582
  /**
486
583
  * Replacement rounds the acceptance sweep may run per jury review.
487
584
  *
@@ -901,6 +998,41 @@ export interface ParamsAmino {
901
998
  * Seasonal staking reward pool
902
999
  */
903
1000
  max_staking_rewards_per_season?: string;
1001
+ /**
1002
+ * Ceiling on each epoch's reward slice, as a yield on the DREAM actually
1003
+ * staked (default 0.0005 = 0.05% per epoch, 7.5% over a 150-epoch season
1004
+ * gross, ~3.75% net of staked_decay_rate).
1005
+ *
1006
+ * The slice is otherwise remaining/remaining_epochs no matter how little is
1007
+ * staked, so yield per staked DREAM diverges as the staked base shrinks and
1008
+ * acc_per_share grows without bound: a chain with 1.47 DREAM staked hands the
1009
+ * entire season budget to three dust stakes. Whatever this cap withholds
1010
+ * stays in the pool rather than being distributed or dropped.
1011
+ */
1012
+ staking_reward_yield_per_epoch?: string;
1013
+ /**
1014
+ * Share of the previous season's non-staking DREAM mints that funds this
1015
+ * season's staking reward pool (default 0.05 = 5%), so emission tracks what
1016
+ * the chain actually produced rather than the calendar.
1017
+ *
1018
+ * Staking rewards are excluded from the base. Counting them would let each
1019
+ * season's pool inflate the next one's, compounding with nothing but the
1020
+ * schedule cap below to stop it.
1021
+ */
1022
+ staking_pool_mint_share?: string;
1023
+ /**
1024
+ * Schedule ceiling on the seasonal pool:
1025
+ *
1026
+ * cap = staking_pool_cap_base * (season + 1) * staking_pool_cap_rate
1027
+ *
1028
+ * The base is the chain's initial DREAM supply (25,000 DREAM at genesis) and
1029
+ * the rate defaults to 0.05, so the ceiling opens at 1,250 DREAM in season 0
1030
+ * and widens by that much each season. It backstops the mint-share term above
1031
+ * on a chain whose mint volume spikes; max_staking_rewards_per_season remains
1032
+ * the absolute ceiling over both.
1033
+ */
1034
+ staking_pool_cap_base?: string;
1035
+ staking_pool_cap_rate?: string;
904
1036
  /**
905
1037
  * Per-epoch decay on staked DREAM (default 0.05% = 0.0005)
906
1038
  */
@@ -927,6 +1059,31 @@ export interface ParamsAmino {
927
1059
  * but without this cap, a whale can stake disproportionately and extract most seasonal staking rewards.
928
1060
  */
929
1061
  max_initiative_stake_per_member?: string;
1062
+ /**
1063
+ * Anti-dust floor on the DREAM one MsgStake may lock (default 0.002 DREAM =
1064
+ * 2,000 micro-DREAM). There was no floor at all, so a member could open the
1065
+ * ten tranches max_stake_tranches_per_target allows at one micro-DREAM each
1066
+ * and be counted as a participant in every conviction and payout weighting
1067
+ * the initiative runs.
1068
+ *
1069
+ * The default is pinned to 1/staking_reward_yield_per_epoch: the smallest
1070
+ * stake whose own per-epoch accrual (amount * yield, truncated to an integer)
1071
+ * reaches one micro-DREAM. Below that a record can never earn anything, and
1072
+ * should not occupy a state slot. Move it with the yield. What bounds the
1073
+ * return on a small position is max_completion_bonus_stake_multiple, not
1074
+ * this.
1075
+ */
1076
+ min_stake_amount?: string;
1077
+ /**
1078
+ * Per-season cap on total DREAM minted to pay interim work (default 50,000
1079
+ * DREAM). The initiative cap below has always existed; the interim path had
1080
+ * no season bound at all, which left it as the one DREAM-creating flow whose
1081
+ * total was limited only by max_dream_mint_per_epoch — 250,000 DREAM/day
1082
+ * against a 25,000 DREAM genesis supply. Interims are self-assigned and
1083
+ * self-completed by design, so the per-member active cap alone does not
1084
+ * bound the total: a member can complete and re-create indefinitely.
1085
+ */
1086
+ max_interim_rewards_per_season?: string;
930
1087
  /**
931
1088
  * Per-season cap on total DREAM minted via initiative completion rewards (default 100,000 DREAM).
932
1089
  * Bounds total extraction even if colluding members rubber-stamp initiatives.
@@ -1137,6 +1294,43 @@ export interface ParamsAmino {
1137
1294
  * Default 0.1.
1138
1295
  */
1139
1296
  initiative_completion_bonus_rate?: string;
1297
+ /**
1298
+ * Ceiling on the initiative completion bonus, as a multiple of the external
1299
+ * DREAM actually staked behind the initiative (default 3.0):
1300
+ *
1301
+ * bonus_pool = min(initiative_completion_bonus_rate * budget,
1302
+ * max_completion_bonus_stake_multiple * external_stake)
1303
+ *
1304
+ * Default 3.0. Without it the bonus is a fixed share of the budget while the
1305
+ * capital needed to unlock that budget falls as 1/N in the number of stakers —
1306
+ * required_conviction is conviction_per_dream * sqrt(budget), each of N
1307
+ * stakers supplies sqrt(stake), so the total stake that clears the gate is
1308
+ * conviction_per_dream^2 * budget / N. The bonus per staker is then
1309
+ * 2.5 * N times their own stake: 7.5x at three stakers, 25x at ten, 62.5x at
1310
+ * twenty-five, risk-free on any initiative that completes.
1311
+ *
1312
+ * Pricing the bonus off capital at risk instead of participant count
1313
+ * restores the stake-to-budget ratio the conviction formula was designed
1314
+ * around (~4%) without touching the sqrt weighting that deliberately rewards
1315
+ * breadth. Range: 0 disables the bonus entirely.
1316
+ */
1317
+ max_completion_bonus_stake_multiple?: string;
1318
+ /**
1319
+ * Ceiling on the TOTAL DREAM one member may hold across all content
1320
+ * conviction stakes (blog, forum, collection — every item combined), on top
1321
+ * of the per-item max_content_stake_per_member.
1322
+ *
1323
+ * Content stakes neither decay (decayStakes skips them) nor earn, so without
1324
+ * an aggregate bound they are an unbounded decay-free store of value: DREAM
1325
+ * parked there escapes the unstaked decay nudge entirely while a reward-
1326
+ * bearing stake pays for itself in yield only when the seasonal pool is not
1327
+ * calendar-bound. The per-item cap alone does not bound the park — one
1328
+ * member can hold max_content_stake_per_member on every item ever created.
1329
+ * Must be >= max_content_stake_per_member. Default 20,000 DREAM (2x the
1330
+ * per-item cap). Author bonds are not counted; they are slashable escrow
1331
+ * with their own per-item cap.
1332
+ */
1333
+ max_total_content_stake_per_member?: string;
1140
1334
  /**
1141
1335
  * Replacement rounds the acceptance sweep may run per jury review.
1142
1336
  *
@@ -1530,6 +1724,14 @@ export interface RepOperationalParams {
1530
1724
  * Anti-whale staking cap (mirrors Params.max_initiative_stake_per_member)
1531
1725
  */
1532
1726
  maxInitiativeStakePerMember: string;
1727
+ /**
1728
+ * Mirrors min_stake_amount in Params.
1729
+ */
1730
+ minStakeAmount: string;
1731
+ /**
1732
+ * Mirrors max_interim_rewards_per_season in Params.
1733
+ */
1734
+ maxInterimRewardsPerSeason: string;
1533
1735
  /**
1534
1736
  * Per-season initiative reward minting cap (mirrors Params.max_initiative_rewards_per_season)
1535
1737
  */
@@ -1624,6 +1826,15 @@ export interface RepOperationalParams {
1624
1826
  * Mirrors initiative_completion_bonus_rate in Params.
1625
1827
  */
1626
1828
  initiativeCompletionBonusRate: string;
1829
+ /**
1830
+ * Mirrors max_completion_bonus_stake_multiple in Params.
1831
+ */
1832
+ maxCompletionBonusStakeMultiple: string;
1833
+ /**
1834
+ * Mirrors max_total_content_stake_per_member in Params: the aggregate
1835
+ * per-member ceiling across all content conviction stakes.
1836
+ */
1837
+ maxTotalContentStakePerMember: string;
1627
1838
  /**
1628
1839
  * Mirrors jury_acceptance_window_ratio in Params. Validated against
1629
1840
  * max_jury_redraws below — the pair must fit inside the review period.
@@ -1694,6 +1905,13 @@ export interface RepOperationalParams {
1694
1905
  minReviewerAgeBlocks: bigint;
1695
1906
  reviewerDemotionCooldown: bigint;
1696
1907
  reviewerUnbondCooldown: bigint;
1908
+ /**
1909
+ * Seasonal staking pool shape; see the same fields on Params.
1910
+ */
1911
+ stakingRewardYieldPerEpoch: string;
1912
+ stakingPoolMintShare: string;
1913
+ stakingPoolCapBase: string;
1914
+ stakingPoolCapRate: string;
1697
1915
  }
1698
1916
  export interface RepOperationalParamsProtoMsg {
1699
1917
  typeUrl: "/sparkdream.rep.v1.RepOperationalParams";
@@ -1829,6 +2047,14 @@ export interface RepOperationalParamsAmino {
1829
2047
  * Anti-whale staking cap (mirrors Params.max_initiative_stake_per_member)
1830
2048
  */
1831
2049
  max_initiative_stake_per_member?: string;
2050
+ /**
2051
+ * Mirrors min_stake_amount in Params.
2052
+ */
2053
+ min_stake_amount?: string;
2054
+ /**
2055
+ * Mirrors max_interim_rewards_per_season in Params.
2056
+ */
2057
+ max_interim_rewards_per_season?: string;
1832
2058
  /**
1833
2059
  * Per-season initiative reward minting cap (mirrors Params.max_initiative_rewards_per_season)
1834
2060
  */
@@ -1923,6 +2149,15 @@ export interface RepOperationalParamsAmino {
1923
2149
  * Mirrors initiative_completion_bonus_rate in Params.
1924
2150
  */
1925
2151
  initiative_completion_bonus_rate?: string;
2152
+ /**
2153
+ * Mirrors max_completion_bonus_stake_multiple in Params.
2154
+ */
2155
+ max_completion_bonus_stake_multiple?: string;
2156
+ /**
2157
+ * Mirrors max_total_content_stake_per_member in Params: the aggregate
2158
+ * per-member ceiling across all content conviction stakes.
2159
+ */
2160
+ max_total_content_stake_per_member?: string;
1926
2161
  /**
1927
2162
  * Mirrors jury_acceptance_window_ratio in Params. Validated against
1928
2163
  * max_jury_redraws below — the pair must fit inside the review period.
@@ -1993,6 +2228,13 @@ export interface RepOperationalParamsAmino {
1993
2228
  min_reviewer_age_blocks?: string;
1994
2229
  reviewer_demotion_cooldown?: string;
1995
2230
  reviewer_unbond_cooldown?: string;
2231
+ /**
2232
+ * Seasonal staking pool shape; see the same fields on Params.
2233
+ */
2234
+ staking_reward_yield_per_epoch?: string;
2235
+ staking_pool_mint_share?: string;
2236
+ staking_pool_cap_base?: string;
2237
+ staking_pool_cap_rate?: string;
1996
2238
  }
1997
2239
  export interface RepOperationalParamsAminoMsg {
1998
2240
  type: "sparkdream/x/rep/RepOperationalParams";