@sparkdreamnft/sparkdreamjs 0.0.18 → 0.0.19

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 (53) hide show
  1. package/esm/sparkdream/blog/v1/params.js +62 -2
  2. package/esm/sparkdream/blog/v1/tx.js +583 -2
  3. package/esm/sparkdream/blog/v1/tx.registry.js +74 -2
  4. package/esm/sparkdream/blog/v1/tx.rpc.msg.js +33 -3
  5. package/esm/sparkdream/collect/v1/params.js +109 -1
  6. package/esm/sparkdream/collect/v1/tx.js +293 -1
  7. package/esm/sparkdream/collect/v1/tx.registry.js +38 -2
  8. package/esm/sparkdream/collect/v1/tx.rpc.msg.js +17 -2
  9. package/esm/sparkdream/collect/v1/types.js +135 -3
  10. package/esm/sparkdream/forum/v1/params.js +218 -2
  11. package/esm/sparkdream/forum/v1/post.js +25 -1
  12. package/esm/sparkdream/forum/v1/tx.js +460 -0
  13. package/esm/sparkdream/forum/v1/tx.registry.js +56 -2
  14. package/esm/sparkdream/forum/v1/tx.rpc.msg.js +30 -1
  15. package/esm/sparkdream/forum/v1/types.js +355 -0
  16. package/esm/sparkdream/forum/v1/user_rate_limit.js +41 -2
  17. package/esm/sparkdream/rep/v1/member.js +209 -1
  18. package/package.json +1 -1
  19. package/sparkdream/blog/v1/params.d.ts +52 -0
  20. package/sparkdream/blog/v1/params.js +62 -2
  21. package/sparkdream/blog/v1/tx.d.ts +381 -6
  22. package/sparkdream/blog/v1/tx.js +584 -3
  23. package/sparkdream/blog/v1/tx.registry.d.ts +49 -1
  24. package/sparkdream/blog/v1/tx.registry.js +73 -1
  25. package/sparkdream/blog/v1/tx.rpc.msg.d.ts +27 -3
  26. package/sparkdream/blog/v1/tx.rpc.msg.js +32 -2
  27. package/sparkdream/bundle.d.ts +396 -0
  28. package/sparkdream/collect/v1/params.d.ts +124 -0
  29. package/sparkdream/collect/v1/params.js +109 -1
  30. package/sparkdream/collect/v1/tx.d.ts +195 -3
  31. package/sparkdream/collect/v1/tx.js +294 -2
  32. package/sparkdream/collect/v1/tx.registry.d.ts +25 -1
  33. package/sparkdream/collect/v1/tx.registry.js +37 -1
  34. package/sparkdream/collect/v1/tx.rpc.msg.d.ts +15 -2
  35. package/sparkdream/collect/v1/tx.rpc.msg.js +16 -1
  36. package/sparkdream/collect/v1/types.d.ts +112 -0
  37. package/sparkdream/collect/v1/types.js +135 -3
  38. package/sparkdream/forum/v1/params.d.ts +210 -0
  39. package/sparkdream/forum/v1/params.js +218 -2
  40. package/sparkdream/forum/v1/post.d.ts +28 -0
  41. package/sparkdream/forum/v1/post.js +25 -1
  42. package/sparkdream/forum/v1/tx.d.ts +291 -0
  43. package/sparkdream/forum/v1/tx.js +462 -2
  44. package/sparkdream/forum/v1/tx.registry.d.ts +37 -1
  45. package/sparkdream/forum/v1/tx.registry.js +55 -1
  46. package/sparkdream/forum/v1/tx.rpc.msg.d.ts +27 -1
  47. package/sparkdream/forum/v1/tx.rpc.msg.js +29 -0
  48. package/sparkdream/forum/v1/types.d.ts +247 -0
  49. package/sparkdream/forum/v1/types.js +356 -1
  50. package/sparkdream/forum/v1/user_rate_limit.d.ts +24 -3
  51. package/sparkdream/forum/v1/user_rate_limit.js +41 -2
  52. package/sparkdream/rep/v1/member.d.ts +134 -0
  53. package/sparkdream/rep/v1/member.js +210 -2
@@ -393,7 +393,9 @@ function createBaseCollection() {
393
393
  seekingEndorsement: false,
394
394
  immutable: false,
395
395
  convictionSustained: false,
396
- initiativeId: BigInt(0)
396
+ initiativeId: BigInt(0),
397
+ pinned: false,
398
+ nonMemberCollaboratorCount: 0
397
399
  };
398
400
  }
399
401
  /**
@@ -489,6 +491,12 @@ exports.Collection = {
489
491
  if (message.initiativeId !== BigInt(0)) {
490
492
  writer.uint32(224).uint64(message.initiativeId);
491
493
  }
494
+ if (message.pinned === true) {
495
+ writer.uint32(232).bool(message.pinned);
496
+ }
497
+ if (message.nonMemberCollaboratorCount !== 0) {
498
+ writer.uint32(240).uint32(message.nonMemberCollaboratorCount);
499
+ }
492
500
  return writer;
493
501
  },
494
502
  decode(input, length) {
@@ -582,6 +590,12 @@ exports.Collection = {
582
590
  case 28:
583
591
  message.initiativeId = reader.uint64();
584
592
  break;
593
+ case 29:
594
+ message.pinned = reader.bool();
595
+ break;
596
+ case 30:
597
+ message.nonMemberCollaboratorCount = reader.uint32();
598
+ break;
585
599
  default:
586
600
  reader.skipType(tag & 7);
587
601
  break;
@@ -619,6 +633,8 @@ exports.Collection = {
619
633
  message.immutable = object.immutable ?? false;
620
634
  message.convictionSustained = object.convictionSustained ?? false;
621
635
  message.initiativeId = object.initiativeId !== undefined && object.initiativeId !== null ? BigInt(object.initiativeId.toString()) : BigInt(0);
636
+ message.pinned = object.pinned ?? false;
637
+ message.nonMemberCollaboratorCount = object.nonMemberCollaboratorCount ?? 0;
622
638
  return message;
623
639
  },
624
640
  fromAmino(object) {
@@ -705,6 +721,12 @@ exports.Collection = {
705
721
  if (object.initiative_id !== undefined && object.initiative_id !== null) {
706
722
  message.initiativeId = BigInt(object.initiative_id);
707
723
  }
724
+ if (object.pinned !== undefined && object.pinned !== null) {
725
+ message.pinned = object.pinned;
726
+ }
727
+ if (object.non_member_collaborator_count !== undefined && object.non_member_collaborator_count !== null) {
728
+ message.nonMemberCollaboratorCount = object.non_member_collaborator_count;
729
+ }
708
730
  return message;
709
731
  },
710
732
  toAmino(message) {
@@ -742,6 +764,8 @@ exports.Collection = {
742
764
  obj.immutable = message.immutable === false ? undefined : message.immutable;
743
765
  obj.conviction_sustained = message.convictionSustained === false ? undefined : message.convictionSustained;
744
766
  obj.initiative_id = message.initiativeId !== BigInt(0) ? message.initiativeId?.toString() : undefined;
767
+ obj.pinned = message.pinned === false ? undefined : message.pinned;
768
+ obj.non_member_collaborator_count = message.nonMemberCollaboratorCount === 0 ? undefined : message.nonMemberCollaboratorCount;
745
769
  return obj;
746
770
  },
747
771
  fromAminoMsg(object) {
@@ -1521,7 +1545,9 @@ function createBaseCollaborator() {
1521
1545
  collectionId: BigInt(0),
1522
1546
  address: "",
1523
1547
  role: 0,
1524
- addedAt: BigInt(0)
1548
+ addedAt: BigInt(0),
1549
+ inviter: "",
1550
+ dreamStake: ""
1525
1551
  };
1526
1552
  }
1527
1553
  /**
@@ -1545,6 +1571,12 @@ exports.Collaborator = {
1545
1571
  if (message.addedAt !== BigInt(0)) {
1546
1572
  writer.uint32(32).int64(message.addedAt);
1547
1573
  }
1574
+ if (message.inviter !== "") {
1575
+ writer.uint32(42).string(message.inviter);
1576
+ }
1577
+ if (message.dreamStake !== "") {
1578
+ writer.uint32(50).string(message.dreamStake);
1579
+ }
1548
1580
  return writer;
1549
1581
  },
1550
1582
  decode(input, length) {
@@ -1566,6 +1598,12 @@ exports.Collaborator = {
1566
1598
  case 4:
1567
1599
  message.addedAt = reader.int64();
1568
1600
  break;
1601
+ case 5:
1602
+ message.inviter = reader.string();
1603
+ break;
1604
+ case 6:
1605
+ message.dreamStake = reader.string();
1606
+ break;
1569
1607
  default:
1570
1608
  reader.skipType(tag & 7);
1571
1609
  break;
@@ -1579,6 +1617,8 @@ exports.Collaborator = {
1579
1617
  message.address = object.address ?? "";
1580
1618
  message.role = object.role ?? 0;
1581
1619
  message.addedAt = object.addedAt !== undefined && object.addedAt !== null ? BigInt(object.addedAt.toString()) : BigInt(0);
1620
+ message.inviter = object.inviter ?? "";
1621
+ message.dreamStake = object.dreamStake ?? "";
1582
1622
  return message;
1583
1623
  },
1584
1624
  fromAmino(object) {
@@ -1595,6 +1635,12 @@ exports.Collaborator = {
1595
1635
  if (object.added_at !== undefined && object.added_at !== null) {
1596
1636
  message.addedAt = BigInt(object.added_at);
1597
1637
  }
1638
+ if (object.inviter !== undefined && object.inviter !== null) {
1639
+ message.inviter = object.inviter;
1640
+ }
1641
+ if (object.dream_stake !== undefined && object.dream_stake !== null) {
1642
+ message.dreamStake = object.dream_stake;
1643
+ }
1598
1644
  return message;
1599
1645
  },
1600
1646
  toAmino(message) {
@@ -1603,6 +1649,8 @@ exports.Collaborator = {
1603
1649
  obj.address = message.address === "" ? undefined : message.address;
1604
1650
  obj.role = message.role === 0 ? undefined : message.role;
1605
1651
  obj.added_at = message.addedAt !== BigInt(0) ? message.addedAt?.toString() : undefined;
1652
+ obj.inviter = message.inviter === "" ? undefined : message.inviter;
1653
+ obj.dream_stake = message.dreamStake === "" ? undefined : message.dreamStake;
1606
1654
  return obj;
1607
1655
  },
1608
1656
  fromAminoMsg(object) {
@@ -2368,7 +2416,14 @@ function createBaseCollectOperationalParams() {
2368
2416
  curatorDemotionCooldown: BigInt(0),
2369
2417
  curatorDemotionThreshold: "",
2370
2418
  curatorOverturnDemotionStreak: BigInt(0),
2371
- curatorUnbondCooldown: BigInt(0)
2419
+ curatorUnbondCooldown: BigInt(0),
2420
+ makePermanentMinTrustLevel: 0,
2421
+ maxMakePermanentPerDay: 0,
2422
+ nonMemberCollabDreamStake: "",
2423
+ nonMemberCollabBurnFraction: "",
2424
+ endorserRepPenalty: "",
2425
+ collabInviterRepPenalty: "",
2426
+ authorRepPenalty: ""
2372
2427
  };
2373
2428
  }
2374
2429
  /**
@@ -2512,6 +2567,27 @@ exports.CollectOperationalParams = {
2512
2567
  if (message.curatorUnbondCooldown !== BigInt(0)) {
2513
2568
  writer.uint32(384).int64(message.curatorUnbondCooldown);
2514
2569
  }
2570
+ if (message.makePermanentMinTrustLevel !== 0) {
2571
+ writer.uint32(392).uint32(message.makePermanentMinTrustLevel);
2572
+ }
2573
+ if (message.maxMakePermanentPerDay !== 0) {
2574
+ writer.uint32(440).uint32(message.maxMakePermanentPerDay);
2575
+ }
2576
+ if (message.nonMemberCollabDreamStake !== "") {
2577
+ writer.uint32(402).string(message.nonMemberCollabDreamStake);
2578
+ }
2579
+ if (message.nonMemberCollabBurnFraction !== "") {
2580
+ writer.uint32(410).string(math_1.Decimal.fromUserInput(message.nonMemberCollabBurnFraction, 18).atomics);
2581
+ }
2582
+ if (message.endorserRepPenalty !== "") {
2583
+ writer.uint32(418).string(math_1.Decimal.fromUserInput(message.endorserRepPenalty, 18).atomics);
2584
+ }
2585
+ if (message.collabInviterRepPenalty !== "") {
2586
+ writer.uint32(426).string(math_1.Decimal.fromUserInput(message.collabInviterRepPenalty, 18).atomics);
2587
+ }
2588
+ if (message.authorRepPenalty !== "") {
2589
+ writer.uint32(434).string(math_1.Decimal.fromUserInput(message.authorRepPenalty, 18).atomics);
2590
+ }
2515
2591
  return writer;
2516
2592
  },
2517
2593
  decode(input, length) {
@@ -2653,6 +2729,27 @@ exports.CollectOperationalParams = {
2653
2729
  case 48:
2654
2730
  message.curatorUnbondCooldown = reader.int64();
2655
2731
  break;
2732
+ case 49:
2733
+ message.makePermanentMinTrustLevel = reader.uint32();
2734
+ break;
2735
+ case 55:
2736
+ message.maxMakePermanentPerDay = reader.uint32();
2737
+ break;
2738
+ case 50:
2739
+ message.nonMemberCollabDreamStake = reader.string();
2740
+ break;
2741
+ case 51:
2742
+ message.nonMemberCollabBurnFraction = math_1.Decimal.fromAtomics(reader.string(), 18).toString();
2743
+ break;
2744
+ case 52:
2745
+ message.endorserRepPenalty = math_1.Decimal.fromAtomics(reader.string(), 18).toString();
2746
+ break;
2747
+ case 53:
2748
+ message.collabInviterRepPenalty = math_1.Decimal.fromAtomics(reader.string(), 18).toString();
2749
+ break;
2750
+ case 54:
2751
+ message.authorRepPenalty = math_1.Decimal.fromAtomics(reader.string(), 18).toString();
2752
+ break;
2656
2753
  default:
2657
2754
  reader.skipType(tag & 7);
2658
2755
  break;
@@ -2706,6 +2803,13 @@ exports.CollectOperationalParams = {
2706
2803
  message.curatorDemotionThreshold = object.curatorDemotionThreshold ?? "";
2707
2804
  message.curatorOverturnDemotionStreak = object.curatorOverturnDemotionStreak !== undefined && object.curatorOverturnDemotionStreak !== null ? BigInt(object.curatorOverturnDemotionStreak.toString()) : BigInt(0);
2708
2805
  message.curatorUnbondCooldown = object.curatorUnbondCooldown !== undefined && object.curatorUnbondCooldown !== null ? BigInt(object.curatorUnbondCooldown.toString()) : BigInt(0);
2806
+ message.makePermanentMinTrustLevel = object.makePermanentMinTrustLevel ?? 0;
2807
+ message.maxMakePermanentPerDay = object.maxMakePermanentPerDay ?? 0;
2808
+ message.nonMemberCollabDreamStake = object.nonMemberCollabDreamStake ?? "";
2809
+ message.nonMemberCollabBurnFraction = object.nonMemberCollabBurnFraction ?? "";
2810
+ message.endorserRepPenalty = object.endorserRepPenalty ?? "";
2811
+ message.collabInviterRepPenalty = object.collabInviterRepPenalty ?? "";
2812
+ message.authorRepPenalty = object.authorRepPenalty ?? "";
2709
2813
  return message;
2710
2814
  },
2711
2815
  fromAmino(object) {
@@ -2842,6 +2946,27 @@ exports.CollectOperationalParams = {
2842
2946
  if (object.curator_unbond_cooldown !== undefined && object.curator_unbond_cooldown !== null) {
2843
2947
  message.curatorUnbondCooldown = BigInt(object.curator_unbond_cooldown);
2844
2948
  }
2949
+ if (object.make_permanent_min_trust_level !== undefined && object.make_permanent_min_trust_level !== null) {
2950
+ message.makePermanentMinTrustLevel = object.make_permanent_min_trust_level;
2951
+ }
2952
+ if (object.max_make_permanent_per_day !== undefined && object.max_make_permanent_per_day !== null) {
2953
+ message.maxMakePermanentPerDay = object.max_make_permanent_per_day;
2954
+ }
2955
+ if (object.non_member_collab_dream_stake !== undefined && object.non_member_collab_dream_stake !== null) {
2956
+ message.nonMemberCollabDreamStake = object.non_member_collab_dream_stake;
2957
+ }
2958
+ if (object.non_member_collab_burn_fraction !== undefined && object.non_member_collab_burn_fraction !== null) {
2959
+ message.nonMemberCollabBurnFraction = object.non_member_collab_burn_fraction;
2960
+ }
2961
+ if (object.endorser_rep_penalty !== undefined && object.endorser_rep_penalty !== null) {
2962
+ message.endorserRepPenalty = object.endorser_rep_penalty;
2963
+ }
2964
+ if (object.collab_inviter_rep_penalty !== undefined && object.collab_inviter_rep_penalty !== null) {
2965
+ message.collabInviterRepPenalty = object.collab_inviter_rep_penalty;
2966
+ }
2967
+ if (object.author_rep_penalty !== undefined && object.author_rep_penalty !== null) {
2968
+ message.authorRepPenalty = object.author_rep_penalty;
2969
+ }
2845
2970
  return message;
2846
2971
  },
2847
2972
  toAmino(message) {
@@ -2890,6 +3015,13 @@ exports.CollectOperationalParams = {
2890
3015
  obj.curator_demotion_threshold = message.curatorDemotionThreshold === "" ? undefined : message.curatorDemotionThreshold;
2891
3016
  obj.curator_overturn_demotion_streak = message.curatorOverturnDemotionStreak !== BigInt(0) ? message.curatorOverturnDemotionStreak?.toString() : undefined;
2892
3017
  obj.curator_unbond_cooldown = message.curatorUnbondCooldown !== BigInt(0) ? message.curatorUnbondCooldown?.toString() : undefined;
3018
+ obj.make_permanent_min_trust_level = message.makePermanentMinTrustLevel === 0 ? undefined : message.makePermanentMinTrustLevel;
3019
+ obj.max_make_permanent_per_day = message.maxMakePermanentPerDay === 0 ? undefined : message.maxMakePermanentPerDay;
3020
+ obj.non_member_collab_dream_stake = message.nonMemberCollabDreamStake === "" ? undefined : message.nonMemberCollabDreamStake;
3021
+ obj.non_member_collab_burn_fraction = message.nonMemberCollabBurnFraction === "" ? undefined : message.nonMemberCollabBurnFraction;
3022
+ obj.endorser_rep_penalty = message.endorserRepPenalty === "" ? undefined : message.endorserRepPenalty;
3023
+ obj.collab_inviter_rep_penalty = message.collabInviterRepPenalty === "" ? undefined : message.collabInviterRepPenalty;
3024
+ obj.author_rep_penalty = message.authorRepPenalty === "" ? undefined : message.authorRepPenalty;
2893
3025
  return obj;
2894
3026
  },
2895
3027
  fromAminoMsg(object) {
@@ -177,6 +177,75 @@ export interface Params {
177
177
  * Zero = immediate withdrawal (legacy behavior).
178
178
  */
179
179
  sentinelUnbondCooldown: bigint;
180
+ /**
181
+ * make_permanent_min_trust_level is the minimum trust level a caller of
182
+ * MsgMakePostPermanent must hold (0–4). Default PROVISIONAL (1) — lower
183
+ * than the sentinel-pin gate because preservation is a smaller curator
184
+ * action than featuring.
185
+ */
186
+ makePermanentMinTrustLevel: number;
187
+ /**
188
+ * max_promotions_per_block bounds how many ephemeral posts the EndBlocker
189
+ * membership-promotion drain may flip per block. Bounds block gas; the
190
+ * remaining queue is processed in subsequent blocks.
191
+ */
192
+ maxPromotionsPerBlock: number;
193
+ /**
194
+ * author_rep_slash is the per-tag reputation deduction applied to a post's
195
+ * author when ExpireHiddenPosts finalizes an unappealed sentinel hide.
196
+ * Deducted from the author's score in each tag the post carried.
197
+ * DeductReputation floors at zero, so authors with no rep in the tag take
198
+ * no harm — safe to ship before any forum-side rep-grant flow exists.
199
+ */
200
+ authorRepSlash: string;
201
+ /**
202
+ * max_make_permanent_per_day caps MsgMakePostPermanent calls per address per
203
+ * UTC day. Independent of daily_post_limit — promoting an ephemeral to
204
+ * permanent is a distinct curator action with its own quota.
205
+ */
206
+ maxMakePermanentPerDay: bigint;
207
+ /**
208
+ * min_post_conviction_stake is the minimum DREAM amount required to open a
209
+ * PostConvictionStake (math.Int string, e.g. "10000000" = 10 DREAM). Floors
210
+ * out sybil dust stakes that would otherwise farm the per-tag epoch cap with
211
+ * many tiny accounts.
212
+ */
213
+ minPostConvictionStake: string;
214
+ /**
215
+ * post_conviction_lock_seconds is the DREAM-lock duration in seconds. A
216
+ * staker cannot call MsgReleasePostConviction before staked_at + this many
217
+ * seconds. Longer lock = more skin-in-the-game per uDREAM committed.
218
+ */
219
+ postConvictionLockSeconds: bigint;
220
+ /**
221
+ * post_conviction_stream_rate_per_block is the per-DREAM-per-day rep
222
+ * accrual rate (math.LegacyDec). Despite the historical "per_block"
223
+ * suffix in the field name, the formula is unit-clean and time-based, not
224
+ * block-based:
225
+ * amount_dream = stake.amount_uDREAM / 1_000_000
226
+ * elapsed_days = (now - last_accrual_at) / 86400
227
+ * rep_credited_total = amount_dream * rate * elapsed_days
228
+ * rep_credited_per_tag = rep_credited_total / len(post.tags)
229
+ * The author's per-tag credit is then capped by
230
+ * max_forum_rep_per_tag_per_epoch (one epoch = one UTC day).
231
+ */
232
+ postConvictionStreamRatePerBlock: string;
233
+ /**
234
+ * max_forum_rep_per_tag_per_epoch caps the per-tag forum rep an author may
235
+ * earn from conviction stakes in a single epoch (math.LegacyDec). Prevents
236
+ * a single tag from being flooded by many simultaneous stakes — excess
237
+ * accrual is silently dropped (no error, no refund) so honest stakers do not
238
+ * suffer from saturation they could not have foreseen.
239
+ */
240
+ maxForumRepPerTagPerEpoch: string;
241
+ /**
242
+ * post_conviction_staker_slash_bps is the basis-points slash applied to the
243
+ * staker's locked DREAM when ExpireHiddenPosts finalizes a hide on the post
244
+ * (0-10000; 2500 = 25%). The slashed DREAM is burned. The non-slashed
245
+ * portion is unlocked back to the staker on the next MsgReleasePostConviction
246
+ * and the stake is closed.
247
+ */
248
+ postConvictionStakerSlashBps: bigint;
180
249
  }
181
250
  export interface ParamsProtoMsg {
182
251
  typeUrl: "/sparkdream.forum.v1.Params";
@@ -359,6 +428,75 @@ export interface ParamsAmino {
359
428
  * Zero = immediate withdrawal (legacy behavior).
360
429
  */
361
430
  sentinel_unbond_cooldown?: string;
431
+ /**
432
+ * make_permanent_min_trust_level is the minimum trust level a caller of
433
+ * MsgMakePostPermanent must hold (0–4). Default PROVISIONAL (1) — lower
434
+ * than the sentinel-pin gate because preservation is a smaller curator
435
+ * action than featuring.
436
+ */
437
+ make_permanent_min_trust_level?: number;
438
+ /**
439
+ * max_promotions_per_block bounds how many ephemeral posts the EndBlocker
440
+ * membership-promotion drain may flip per block. Bounds block gas; the
441
+ * remaining queue is processed in subsequent blocks.
442
+ */
443
+ max_promotions_per_block?: number;
444
+ /**
445
+ * author_rep_slash is the per-tag reputation deduction applied to a post's
446
+ * author when ExpireHiddenPosts finalizes an unappealed sentinel hide.
447
+ * Deducted from the author's score in each tag the post carried.
448
+ * DeductReputation floors at zero, so authors with no rep in the tag take
449
+ * no harm — safe to ship before any forum-side rep-grant flow exists.
450
+ */
451
+ author_rep_slash?: string;
452
+ /**
453
+ * max_make_permanent_per_day caps MsgMakePostPermanent calls per address per
454
+ * UTC day. Independent of daily_post_limit — promoting an ephemeral to
455
+ * permanent is a distinct curator action with its own quota.
456
+ */
457
+ max_make_permanent_per_day?: string;
458
+ /**
459
+ * min_post_conviction_stake is the minimum DREAM amount required to open a
460
+ * PostConvictionStake (math.Int string, e.g. "10000000" = 10 DREAM). Floors
461
+ * out sybil dust stakes that would otherwise farm the per-tag epoch cap with
462
+ * many tiny accounts.
463
+ */
464
+ min_post_conviction_stake?: string;
465
+ /**
466
+ * post_conviction_lock_seconds is the DREAM-lock duration in seconds. A
467
+ * staker cannot call MsgReleasePostConviction before staked_at + this many
468
+ * seconds. Longer lock = more skin-in-the-game per uDREAM committed.
469
+ */
470
+ post_conviction_lock_seconds?: string;
471
+ /**
472
+ * post_conviction_stream_rate_per_block is the per-DREAM-per-day rep
473
+ * accrual rate (math.LegacyDec). Despite the historical "per_block"
474
+ * suffix in the field name, the formula is unit-clean and time-based, not
475
+ * block-based:
476
+ * amount_dream = stake.amount_uDREAM / 1_000_000
477
+ * elapsed_days = (now - last_accrual_at) / 86400
478
+ * rep_credited_total = amount_dream * rate * elapsed_days
479
+ * rep_credited_per_tag = rep_credited_total / len(post.tags)
480
+ * The author's per-tag credit is then capped by
481
+ * max_forum_rep_per_tag_per_epoch (one epoch = one UTC day).
482
+ */
483
+ post_conviction_stream_rate_per_block?: string;
484
+ /**
485
+ * max_forum_rep_per_tag_per_epoch caps the per-tag forum rep an author may
486
+ * earn from conviction stakes in a single epoch (math.LegacyDec). Prevents
487
+ * a single tag from being flooded by many simultaneous stakes — excess
488
+ * accrual is silently dropped (no error, no refund) so honest stakers do not
489
+ * suffer from saturation they could not have foreseen.
490
+ */
491
+ max_forum_rep_per_tag_per_epoch?: string;
492
+ /**
493
+ * post_conviction_staker_slash_bps is the basis-points slash applied to the
494
+ * staker's locked DREAM when ExpireHiddenPosts finalizes a hide on the post
495
+ * (0-10000; 2500 = 25%). The slashed DREAM is burned. The non-slashed
496
+ * portion is unlocked back to the staker on the next MsgReleasePostConviction
497
+ * and the stake is closed.
498
+ */
499
+ post_conviction_staker_slash_bps?: string;
362
500
  }
363
501
  export interface ParamsAminoMsg {
364
502
  type: "sparkdream/x/forum/Params";
@@ -467,6 +605,42 @@ export interface ForumOperationalParams {
467
605
  * authority. Zero = immediate withdrawal.
468
606
  */
469
607
  sentinelUnbondCooldown: bigint;
608
+ /**
609
+ * make_permanent_min_trust_level — see Params.make_permanent_min_trust_level.
610
+ */
611
+ makePermanentMinTrustLevel: number;
612
+ /**
613
+ * max_promotions_per_block — see Params.max_promotions_per_block.
614
+ */
615
+ maxPromotionsPerBlock: number;
616
+ /**
617
+ * author_rep_slash — see Params.author_rep_slash.
618
+ */
619
+ authorRepSlash: string;
620
+ /**
621
+ * max_make_permanent_per_day — see Params.max_make_permanent_per_day.
622
+ */
623
+ maxMakePermanentPerDay: bigint;
624
+ /**
625
+ * min_post_conviction_stake — see Params.min_post_conviction_stake.
626
+ */
627
+ minPostConvictionStake: string;
628
+ /**
629
+ * post_conviction_lock_seconds — see Params.post_conviction_lock_seconds.
630
+ */
631
+ postConvictionLockSeconds: bigint;
632
+ /**
633
+ * post_conviction_stream_rate_per_block — see Params.post_conviction_stream_rate_per_block.
634
+ */
635
+ postConvictionStreamRatePerBlock: string;
636
+ /**
637
+ * max_forum_rep_per_tag_per_epoch — see Params.max_forum_rep_per_tag_per_epoch.
638
+ */
639
+ maxForumRepPerTagPerEpoch: string;
640
+ /**
641
+ * post_conviction_staker_slash_bps — see Params.post_conviction_staker_slash_bps.
642
+ */
643
+ postConvictionStakerSlashBps: bigint;
470
644
  }
471
645
  export interface ForumOperationalParamsProtoMsg {
472
646
  typeUrl: "/sparkdream.forum.v1.ForumOperationalParams";
@@ -575,6 +749,42 @@ export interface ForumOperationalParamsAmino {
575
749
  * authority. Zero = immediate withdrawal.
576
750
  */
577
751
  sentinel_unbond_cooldown?: string;
752
+ /**
753
+ * make_permanent_min_trust_level — see Params.make_permanent_min_trust_level.
754
+ */
755
+ make_permanent_min_trust_level?: number;
756
+ /**
757
+ * max_promotions_per_block — see Params.max_promotions_per_block.
758
+ */
759
+ max_promotions_per_block?: number;
760
+ /**
761
+ * author_rep_slash — see Params.author_rep_slash.
762
+ */
763
+ author_rep_slash?: string;
764
+ /**
765
+ * max_make_permanent_per_day — see Params.max_make_permanent_per_day.
766
+ */
767
+ max_make_permanent_per_day?: string;
768
+ /**
769
+ * min_post_conviction_stake — see Params.min_post_conviction_stake.
770
+ */
771
+ min_post_conviction_stake?: string;
772
+ /**
773
+ * post_conviction_lock_seconds — see Params.post_conviction_lock_seconds.
774
+ */
775
+ post_conviction_lock_seconds?: string;
776
+ /**
777
+ * post_conviction_stream_rate_per_block — see Params.post_conviction_stream_rate_per_block.
778
+ */
779
+ post_conviction_stream_rate_per_block?: string;
780
+ /**
781
+ * max_forum_rep_per_tag_per_epoch — see Params.max_forum_rep_per_tag_per_epoch.
782
+ */
783
+ max_forum_rep_per_tag_per_epoch?: string;
784
+ /**
785
+ * post_conviction_staker_slash_bps — see Params.post_conviction_staker_slash_bps.
786
+ */
787
+ post_conviction_staker_slash_bps?: string;
578
788
  }
579
789
  export interface ForumOperationalParamsAminoMsg {
580
790
  type: "sparkdream/x/forum/ForumOperationalParams";