@sparkdreamnft/sparkdreamjs 0.0.23 → 0.0.25

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 (29) hide show
  1. package/esm/sparkdream/forum/v1/hide_record.js +13 -1
  2. package/esm/sparkdream/forum/v1/params.js +50 -2
  3. package/esm/sparkdream/forum/v1/sentinel_activity.js +112 -1
  4. package/esm/sparkdream/forum/v1/thread_lock_record.js +13 -1
  5. package/esm/sparkdream/forum/v1/thread_metadata.js +24 -0
  6. package/esm/sparkdream/forum/v1/thread_move_record.js +13 -1
  7. package/esm/sparkdream/forum/v1/types.js +13 -1
  8. package/esm/sparkdream/rep/v1/accountability.js +12 -0
  9. package/esm/sparkdream/rep/v1/params.js +24 -0
  10. package/package.json +1 -1
  11. package/sparkdream/bundle.d.ts +12 -0
  12. package/sparkdream/forum/v1/hide_record.d.ts +14 -0
  13. package/sparkdream/forum/v1/hide_record.js +13 -1
  14. package/sparkdream/forum/v1/params.d.ts +48 -0
  15. package/sparkdream/forum/v1/params.js +50 -2
  16. package/sparkdream/forum/v1/sentinel_activity.d.ts +129 -0
  17. package/sparkdream/forum/v1/sentinel_activity.js +113 -2
  18. package/sparkdream/forum/v1/thread_lock_record.d.ts +12 -0
  19. package/sparkdream/forum/v1/thread_lock_record.js +13 -1
  20. package/sparkdream/forum/v1/thread_metadata.d.ts +32 -0
  21. package/sparkdream/forum/v1/thread_metadata.js +24 -0
  22. package/sparkdream/forum/v1/thread_move_record.d.ts +12 -0
  23. package/sparkdream/forum/v1/thread_move_record.js +13 -1
  24. package/sparkdream/forum/v1/types.d.ts +12 -0
  25. package/sparkdream/forum/v1/types.js +13 -1
  26. package/sparkdream/rep/v1/accountability.d.ts +2 -0
  27. package/sparkdream/rep/v1/accountability.js +12 -0
  28. package/sparkdream/rep/v1/params.d.ts +24 -0
  29. package/sparkdream/rep/v1/params.js +24 -0
@@ -405,6 +405,7 @@ function createBaseParams() {
405
405
  minAppealsForAccuracy: BigInt(0),
406
406
  minEpochActivityForReward: BigInt(0),
407
407
  minAppealRate: "",
408
+ sentinelAccuracyWindowEpochs: BigInt(0),
408
409
  maxActiveInitiativesPerMember: 0,
409
410
  maxActiveInterimsPerMember: 0,
410
411
  maxDreamMintPerEpoch: "",
@@ -675,6 +676,9 @@ export const Params = {
675
676
  if (message.minAppealRate !== "") {
676
677
  writer.uint32(674).string(Decimal.fromUserInput(message.minAppealRate, 18).atomics);
677
678
  }
679
+ if (message.sentinelAccuracyWindowEpochs !== BigInt(0)) {
680
+ writer.uint32(728).uint64(message.sentinelAccuracyWindowEpochs);
681
+ }
678
682
  if (message.maxActiveInitiativesPerMember !== 0) {
679
683
  writer.uint32(680).uint32(message.maxActiveInitiativesPerMember);
680
684
  }
@@ -954,6 +958,9 @@ export const Params = {
954
958
  case 84:
955
959
  message.minAppealRate = Decimal.fromAtomics(reader.string(), 18).toString();
956
960
  break;
961
+ case 91:
962
+ message.sentinelAccuracyWindowEpochs = reader.uint64();
963
+ break;
957
964
  case 85:
958
965
  message.maxActiveInitiativesPerMember = reader.uint32();
959
966
  break;
@@ -1065,6 +1072,7 @@ export const Params = {
1065
1072
  message.minAppealsForAccuracy = object.minAppealsForAccuracy !== undefined && object.minAppealsForAccuracy !== null ? BigInt(object.minAppealsForAccuracy.toString()) : BigInt(0);
1066
1073
  message.minEpochActivityForReward = object.minEpochActivityForReward !== undefined && object.minEpochActivityForReward !== null ? BigInt(object.minEpochActivityForReward.toString()) : BigInt(0);
1067
1074
  message.minAppealRate = object.minAppealRate ?? "";
1075
+ message.sentinelAccuracyWindowEpochs = object.sentinelAccuracyWindowEpochs !== undefined && object.sentinelAccuracyWindowEpochs !== null ? BigInt(object.sentinelAccuracyWindowEpochs.toString()) : BigInt(0);
1068
1076
  message.maxActiveInitiativesPerMember = object.maxActiveInitiativesPerMember ?? 0;
1069
1077
  message.maxActiveInterimsPerMember = object.maxActiveInterimsPerMember ?? 0;
1070
1078
  message.maxDreamMintPerEpoch = object.maxDreamMintPerEpoch ?? "";
@@ -1327,6 +1335,9 @@ export const Params = {
1327
1335
  if (object.min_appeal_rate !== undefined && object.min_appeal_rate !== null) {
1328
1336
  message.minAppealRate = object.min_appeal_rate;
1329
1337
  }
1338
+ if (object.sentinel_accuracy_window_epochs !== undefined && object.sentinel_accuracy_window_epochs !== null) {
1339
+ message.sentinelAccuracyWindowEpochs = BigInt(object.sentinel_accuracy_window_epochs);
1340
+ }
1330
1341
  if (object.max_active_initiatives_per_member !== undefined && object.max_active_initiatives_per_member !== null) {
1331
1342
  message.maxActiveInitiativesPerMember = object.max_active_initiatives_per_member;
1332
1343
  }
@@ -1433,6 +1444,7 @@ export const Params = {
1433
1444
  obj.min_appeals_for_accuracy = message.minAppealsForAccuracy !== BigInt(0) ? message.minAppealsForAccuracy?.toString() : undefined;
1434
1445
  obj.min_epoch_activity_for_reward = message.minEpochActivityForReward !== BigInt(0) ? message.minEpochActivityForReward?.toString() : undefined;
1435
1446
  obj.min_appeal_rate = message.minAppealRate === "" ? undefined : message.minAppealRate;
1447
+ obj.sentinel_accuracy_window_epochs = message.sentinelAccuracyWindowEpochs !== BigInt(0) ? message.sentinelAccuracyWindowEpochs?.toString() : undefined;
1436
1448
  obj.max_active_initiatives_per_member = message.maxActiveInitiativesPerMember === 0 ? undefined : message.maxActiveInitiativesPerMember;
1437
1449
  obj.max_active_interims_per_member = message.maxActiveInterimsPerMember === 0 ? undefined : message.maxActiveInterimsPerMember;
1438
1450
  obj.max_dream_mint_per_epoch = message.maxDreamMintPerEpoch === "" ? undefined : message.maxDreamMintPerEpoch;
@@ -1533,6 +1545,7 @@ function createBaseRepOperationalParams() {
1533
1545
  minAppealsForAccuracy: BigInt(0),
1534
1546
  minEpochActivityForReward: BigInt(0),
1535
1547
  minAppealRate: "",
1548
+ sentinelAccuracyWindowEpochs: BigInt(0),
1536
1549
  maxActiveInitiativesPerMember: 0,
1537
1550
  maxActiveInterimsPerMember: 0,
1538
1551
  maxDreamMintPerEpoch: "",
@@ -1757,6 +1770,9 @@ export const RepOperationalParams = {
1757
1770
  if (message.minAppealRate !== "") {
1758
1771
  writer.uint32(546).string(Decimal.fromUserInput(message.minAppealRate, 18).atomics);
1759
1772
  }
1773
+ if (message.sentinelAccuracyWindowEpochs !== BigInt(0)) {
1774
+ writer.uint32(600).uint64(message.sentinelAccuracyWindowEpochs);
1775
+ }
1760
1776
  if (message.maxActiveInitiativesPerMember !== 0) {
1761
1777
  writer.uint32(552).uint32(message.maxActiveInitiativesPerMember);
1762
1778
  }
@@ -1988,6 +2004,9 @@ export const RepOperationalParams = {
1988
2004
  case 68:
1989
2005
  message.minAppealRate = Decimal.fromAtomics(reader.string(), 18).toString();
1990
2006
  break;
2007
+ case 75:
2008
+ message.sentinelAccuracyWindowEpochs = reader.uint64();
2009
+ break;
1991
2010
  case 69:
1992
2011
  message.maxActiveInitiativesPerMember = reader.uint32();
1993
2012
  break;
@@ -2083,6 +2102,7 @@ export const RepOperationalParams = {
2083
2102
  message.minAppealsForAccuracy = object.minAppealsForAccuracy !== undefined && object.minAppealsForAccuracy !== null ? BigInt(object.minAppealsForAccuracy.toString()) : BigInt(0);
2084
2103
  message.minEpochActivityForReward = object.minEpochActivityForReward !== undefined && object.minEpochActivityForReward !== null ? BigInt(object.minEpochActivityForReward.toString()) : BigInt(0);
2085
2104
  message.minAppealRate = object.minAppealRate ?? "";
2105
+ message.sentinelAccuracyWindowEpochs = object.sentinelAccuracyWindowEpochs !== undefined && object.sentinelAccuracyWindowEpochs !== null ? BigInt(object.sentinelAccuracyWindowEpochs.toString()) : BigInt(0);
2086
2106
  message.maxActiveInitiativesPerMember = object.maxActiveInitiativesPerMember ?? 0;
2087
2107
  message.maxActiveInterimsPerMember = object.maxActiveInterimsPerMember ?? 0;
2088
2108
  message.maxDreamMintPerEpoch = object.maxDreamMintPerEpoch ?? "";
@@ -2297,6 +2317,9 @@ export const RepOperationalParams = {
2297
2317
  if (object.min_appeal_rate !== undefined && object.min_appeal_rate !== null) {
2298
2318
  message.minAppealRate = object.min_appeal_rate;
2299
2319
  }
2320
+ if (object.sentinel_accuracy_window_epochs !== undefined && object.sentinel_accuracy_window_epochs !== null) {
2321
+ message.sentinelAccuracyWindowEpochs = BigInt(object.sentinel_accuracy_window_epochs);
2322
+ }
2300
2323
  if (object.max_active_initiatives_per_member !== undefined && object.max_active_initiatives_per_member !== null) {
2301
2324
  message.maxActiveInitiativesPerMember = object.max_active_initiatives_per_member;
2302
2325
  }
@@ -2387,6 +2410,7 @@ export const RepOperationalParams = {
2387
2410
  obj.min_appeals_for_accuracy = message.minAppealsForAccuracy !== BigInt(0) ? message.minAppealsForAccuracy?.toString() : undefined;
2388
2411
  obj.min_epoch_activity_for_reward = message.minEpochActivityForReward !== BigInt(0) ? message.minEpochActivityForReward?.toString() : undefined;
2389
2412
  obj.min_appeal_rate = message.minAppealRate === "" ? undefined : message.minAppealRate;
2413
+ obj.sentinel_accuracy_window_epochs = message.sentinelAccuracyWindowEpochs !== BigInt(0) ? message.sentinelAccuracyWindowEpochs?.toString() : undefined;
2390
2414
  obj.max_active_initiatives_per_member = message.maxActiveInitiativesPerMember === 0 ? undefined : message.maxActiveInitiativesPerMember;
2391
2415
  obj.max_active_interims_per_member = message.maxActiveInterimsPerMember === 0 ? undefined : message.maxActiveInterimsPerMember;
2392
2416
  obj.max_dream_mint_per_epoch = message.maxDreamMintPerEpoch === "" ? undefined : message.maxDreamMintPerEpoch;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sparkdreamnft/sparkdreamjs",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "author": "kob <kob@sparkdream.io>",
5
5
  "description": "Spark Dream blockchain TypeScript library",
6
6
  "main": "index.js",
@@ -9383,6 +9383,18 @@ export declare namespace sparkdream {
9383
9383
  toProto(message: _224.ThreadFollowCount): Uint8Array;
9384
9384
  toProtoMsg(message: _224.ThreadFollowCount): _224.ThreadFollowCountProtoMsg;
9385
9385
  };
9386
+ AccuracyEpochBucket: {
9387
+ typeUrl: string;
9388
+ encode(message: _223.AccuracyEpochBucket, writer?: import("..").BinaryWriter): import("..").BinaryWriter;
9389
+ decode(input: import("..").BinaryReader | Uint8Array, length?: number): _223.AccuracyEpochBucket;
9390
+ fromPartial(object: import("../helpers").DeepPartial<_223.AccuracyEpochBucket>): _223.AccuracyEpochBucket;
9391
+ fromAmino(object: _223.AccuracyEpochBucketAmino): _223.AccuracyEpochBucket;
9392
+ toAmino(message: _223.AccuracyEpochBucket): _223.AccuracyEpochBucketAmino;
9393
+ fromAminoMsg(object: _223.AccuracyEpochBucketAminoMsg): _223.AccuracyEpochBucket;
9394
+ fromProtoMsg(message: _223.AccuracyEpochBucketProtoMsg): _223.AccuracyEpochBucket;
9395
+ toProto(message: _223.AccuracyEpochBucket): Uint8Array;
9396
+ toProtoMsg(message: _223.AccuracyEpochBucket): _223.AccuracyEpochBucketProtoMsg;
9397
+ };
9386
9398
  SentinelActivity: {
9387
9399
  typeUrl: string;
9388
9400
  encode(message: _223.SentinelActivity, writer?: import("..").BinaryWriter): import("..").BinaryWriter;
@@ -38,6 +38,13 @@ export interface HideRecord {
38
38
  * hide flavors are distinguished.
39
39
  */
40
40
  authorBondAmount: string;
41
+ /**
42
+ * appealed is set true when an appeal is filed against this hide (via
43
+ * MsgAppealPost). The hide-expiry EndBlocker reads it to avoid double-counting:
44
+ * an appealed hide was already tallied as upheld/overturned, so only an
45
+ * un-appealed hide that expires increments unchallenged_hides.
46
+ */
47
+ appealed: boolean;
41
48
  }
42
49
  export interface HideRecordProtoMsg {
43
50
  typeUrl: "/sparkdream.forum.v1.HideRecord";
@@ -80,6 +87,13 @@ export interface HideRecordAmino {
80
87
  * hide flavors are distinguished.
81
88
  */
82
89
  author_bond_amount?: string;
90
+ /**
91
+ * appealed is set true when an appeal is filed against this hide (via
92
+ * MsgAppealPost). The hide-expiry EndBlocker reads it to avoid double-counting:
93
+ * an appealed hide was already tallied as upheld/overturned, so only an
94
+ * un-appealed hide that expires increments unchallenged_hides.
95
+ */
96
+ appealed?: boolean;
83
97
  }
84
98
  export interface HideRecordAminoMsg {
85
99
  type: "/sparkdream.forum.v1.HideRecord";
@@ -12,7 +12,8 @@ function createBaseHideRecord() {
12
12
  committedAmount: "",
13
13
  reasonCode: 0,
14
14
  reasonText: "",
15
- authorBondAmount: ""
15
+ authorBondAmount: "",
16
+ appealed: false
16
17
  };
17
18
  }
18
19
  /**
@@ -57,6 +58,9 @@ exports.HideRecord = {
57
58
  if (message.authorBondAmount !== "") {
58
59
  writer.uint32(74).string(message.authorBondAmount);
59
60
  }
61
+ if (message.appealed === true) {
62
+ writer.uint32(80).bool(message.appealed);
63
+ }
60
64
  return writer;
61
65
  },
62
66
  decode(input, length) {
@@ -93,6 +97,9 @@ exports.HideRecord = {
93
97
  case 9:
94
98
  message.authorBondAmount = reader.string();
95
99
  break;
100
+ case 10:
101
+ message.appealed = reader.bool();
102
+ break;
96
103
  default:
97
104
  reader.skipType(tag & 7);
98
105
  break;
@@ -111,6 +118,7 @@ exports.HideRecord = {
111
118
  message.reasonCode = object.reasonCode ?? 0;
112
119
  message.reasonText = object.reasonText ?? "";
113
120
  message.authorBondAmount = object.authorBondAmount ?? "";
121
+ message.appealed = object.appealed ?? false;
114
122
  return message;
115
123
  },
116
124
  fromAmino(object) {
@@ -142,6 +150,9 @@ exports.HideRecord = {
142
150
  if (object.author_bond_amount !== undefined && object.author_bond_amount !== null) {
143
151
  message.authorBondAmount = object.author_bond_amount;
144
152
  }
153
+ if (object.appealed !== undefined && object.appealed !== null) {
154
+ message.appealed = object.appealed;
155
+ }
145
156
  return message;
146
157
  },
147
158
  toAmino(message) {
@@ -155,6 +166,7 @@ exports.HideRecord = {
155
166
  obj.reason_code = message.reasonCode === 0 ? undefined : message.reasonCode;
156
167
  obj.reason_text = message.reasonText === "" ? undefined : message.reasonText;
157
168
  obj.author_bond_amount = message.authorBondAmount === "" ? undefined : message.authorBondAmount;
169
+ obj.appealed = message.appealed === false ? undefined : message.appealed;
158
170
  return obj;
159
171
  },
160
172
  fromAminoMsg(object) {
@@ -284,6 +284,22 @@ export interface Params {
284
284
  * and the stake is closed.
285
285
  */
286
286
  postConvictionStakerSlashBps: bigint;
287
+ /**
288
+ * curation_dream_reward is the DREAM minted to a sentinel when their accepted-
289
+ * reply proposal is confirmed (by the author or via auto-confirm), in
290
+ * micro-DREAM (math.Int string). Read directly (no unset/default fallback):
291
+ * a non-positive value disables the reward, matching the IsPositive fee guards
292
+ * in x/rep / x/blog. Seeded by the genesis defaults.
293
+ */
294
+ curationDreamReward: string;
295
+ /**
296
+ * accept_proposal_timeout is the number of seconds after which a pending
297
+ * sentinel accepted-reply proposal auto-confirms if the author has not acted.
298
+ * Must be positive (Validate rejects 0/negative — a 0 timeout would
299
+ * auto-confirm on the next block, never an intended config). Seeded by the
300
+ * genesis defaults (48h).
301
+ */
302
+ acceptProposalTimeout: bigint;
287
303
  }
288
304
  export interface ParamsProtoMsg {
289
305
  typeUrl: "/sparkdream.forum.v1.Params";
@@ -573,6 +589,22 @@ export interface ParamsAmino {
573
589
  * and the stake is closed.
574
590
  */
575
591
  post_conviction_staker_slash_bps?: string;
592
+ /**
593
+ * curation_dream_reward is the DREAM minted to a sentinel when their accepted-
594
+ * reply proposal is confirmed (by the author or via auto-confirm), in
595
+ * micro-DREAM (math.Int string). Read directly (no unset/default fallback):
596
+ * a non-positive value disables the reward, matching the IsPositive fee guards
597
+ * in x/rep / x/blog. Seeded by the genesis defaults.
598
+ */
599
+ curation_dream_reward?: string;
600
+ /**
601
+ * accept_proposal_timeout is the number of seconds after which a pending
602
+ * sentinel accepted-reply proposal auto-confirms if the author has not acted.
603
+ * Must be positive (Validate rejects 0/negative — a 0 timeout would
604
+ * auto-confirm on the next block, never an intended config). Seeded by the
605
+ * genesis defaults (48h).
606
+ */
607
+ accept_proposal_timeout?: string;
576
608
  }
577
609
  export interface ParamsAminoMsg {
578
610
  type: "sparkdream/x/forum/Params";
@@ -733,6 +765,14 @@ export interface ForumOperationalParams {
733
765
  * post_conviction_staker_slash_bps — see Params.post_conviction_staker_slash_bps.
734
766
  */
735
767
  postConvictionStakerSlashBps: bigint;
768
+ /**
769
+ * curation_dream_reward — see Params.curation_dream_reward.
770
+ */
771
+ curationDreamReward: string;
772
+ /**
773
+ * accept_proposal_timeout — see Params.accept_proposal_timeout.
774
+ */
775
+ acceptProposalTimeout: bigint;
736
776
  }
737
777
  export interface ForumOperationalParamsProtoMsg {
738
778
  typeUrl: "/sparkdream.forum.v1.ForumOperationalParams";
@@ -893,6 +933,14 @@ export interface ForumOperationalParamsAmino {
893
933
  * post_conviction_staker_slash_bps — see Params.post_conviction_staker_slash_bps.
894
934
  */
895
935
  post_conviction_staker_slash_bps?: string;
936
+ /**
937
+ * curation_dream_reward — see Params.curation_dream_reward.
938
+ */
939
+ curation_dream_reward?: string;
940
+ /**
941
+ * accept_proposal_timeout — see Params.accept_proposal_timeout.
942
+ */
943
+ accept_proposal_timeout?: string;
896
944
  }
897
945
  export interface ForumOperationalParamsAminoMsg {
898
946
  type: "sparkdream/x/forum/ForumOperationalParams";
@@ -61,7 +61,9 @@ function createBaseParams() {
61
61
  postConvictionLockSeconds: BigInt(0),
62
62
  postConvictionStreamRatePerBlock: "",
63
63
  maxForumRepPerTagPerEpoch: "",
64
- postConvictionStakerSlashBps: BigInt(0)
64
+ postConvictionStakerSlashBps: BigInt(0),
65
+ curationDreamReward: "",
66
+ acceptProposalTimeout: BigInt(0)
65
67
  };
66
68
  }
67
69
  /**
@@ -244,6 +246,12 @@ exports.Params = {
244
246
  if (message.postConvictionStakerSlashBps !== BigInt(0)) {
245
247
  writer.uint32(512).uint64(message.postConvictionStakerSlashBps);
246
248
  }
249
+ if (message.curationDreamReward !== "") {
250
+ writer.uint32(522).string(message.curationDreamReward);
251
+ }
252
+ if (message.acceptProposalTimeout !== BigInt(0)) {
253
+ writer.uint32(528).int64(message.acceptProposalTimeout);
254
+ }
247
255
  return writer;
248
256
  },
249
257
  decode(input, length) {
@@ -421,6 +429,12 @@ exports.Params = {
421
429
  case 64:
422
430
  message.postConvictionStakerSlashBps = reader.uint64();
423
431
  break;
432
+ case 65:
433
+ message.curationDreamReward = reader.string();
434
+ break;
435
+ case 66:
436
+ message.acceptProposalTimeout = reader.int64();
437
+ break;
424
438
  default:
425
439
  reader.skipType(tag & 7);
426
440
  break;
@@ -486,6 +500,8 @@ exports.Params = {
486
500
  message.postConvictionStreamRatePerBlock = object.postConvictionStreamRatePerBlock ?? "";
487
501
  message.maxForumRepPerTagPerEpoch = object.maxForumRepPerTagPerEpoch ?? "";
488
502
  message.postConvictionStakerSlashBps = object.postConvictionStakerSlashBps !== undefined && object.postConvictionStakerSlashBps !== null ? BigInt(object.postConvictionStakerSlashBps.toString()) : BigInt(0);
503
+ message.curationDreamReward = object.curationDreamReward ?? "";
504
+ message.acceptProposalTimeout = object.acceptProposalTimeout !== undefined && object.acceptProposalTimeout !== null ? BigInt(object.acceptProposalTimeout.toString()) : BigInt(0);
489
505
  return message;
490
506
  },
491
507
  fromAmino(object) {
@@ -658,6 +674,12 @@ exports.Params = {
658
674
  if (object.post_conviction_staker_slash_bps !== undefined && object.post_conviction_staker_slash_bps !== null) {
659
675
  message.postConvictionStakerSlashBps = BigInt(object.post_conviction_staker_slash_bps);
660
676
  }
677
+ if (object.curation_dream_reward !== undefined && object.curation_dream_reward !== null) {
678
+ message.curationDreamReward = object.curation_dream_reward;
679
+ }
680
+ if (object.accept_proposal_timeout !== undefined && object.accept_proposal_timeout !== null) {
681
+ message.acceptProposalTimeout = BigInt(object.accept_proposal_timeout);
682
+ }
661
683
  return message;
662
684
  },
663
685
  toAmino(message) {
@@ -718,6 +740,8 @@ exports.Params = {
718
740
  obj.post_conviction_stream_rate_per_block = message.postConvictionStreamRatePerBlock === "" ? undefined : message.postConvictionStreamRatePerBlock;
719
741
  obj.max_forum_rep_per_tag_per_epoch = message.maxForumRepPerTagPerEpoch === "" ? undefined : message.maxForumRepPerTagPerEpoch;
720
742
  obj.post_conviction_staker_slash_bps = message.postConvictionStakerSlashBps !== BigInt(0) ? message.postConvictionStakerSlashBps?.toString() : undefined;
743
+ obj.curation_dream_reward = message.curationDreamReward === "" ? undefined : message.curationDreamReward;
744
+ obj.accept_proposal_timeout = message.acceptProposalTimeout !== BigInt(0) ? message.acceptProposalTimeout?.toString() : undefined;
721
745
  return obj;
722
746
  },
723
747
  fromAminoMsg(object) {
@@ -793,7 +817,9 @@ function createBaseForumOperationalParams() {
793
817
  postConvictionLockSeconds: BigInt(0),
794
818
  postConvictionStreamRatePerBlock: "",
795
819
  maxForumRepPerTagPerEpoch: "",
796
- postConvictionStakerSlashBps: BigInt(0)
820
+ postConvictionStakerSlashBps: BigInt(0),
821
+ curationDreamReward: "",
822
+ acceptProposalTimeout: BigInt(0)
797
823
  };
798
824
  }
799
825
  /**
@@ -959,6 +985,12 @@ exports.ForumOperationalParams = {
959
985
  if (message.postConvictionStakerSlashBps !== BigInt(0)) {
960
986
  writer.uint32(512).uint64(message.postConvictionStakerSlashBps);
961
987
  }
988
+ if (message.curationDreamReward !== "") {
989
+ writer.uint32(522).string(message.curationDreamReward);
990
+ }
991
+ if (message.acceptProposalTimeout !== BigInt(0)) {
992
+ writer.uint32(528).int64(message.acceptProposalTimeout);
993
+ }
962
994
  return writer;
963
995
  },
964
996
  decode(input, length) {
@@ -1118,6 +1150,12 @@ exports.ForumOperationalParams = {
1118
1150
  case 64:
1119
1151
  message.postConvictionStakerSlashBps = reader.uint64();
1120
1152
  break;
1153
+ case 65:
1154
+ message.curationDreamReward = reader.string();
1155
+ break;
1156
+ case 66:
1157
+ message.acceptProposalTimeout = reader.int64();
1158
+ break;
1121
1159
  default:
1122
1160
  reader.skipType(tag & 7);
1123
1161
  break;
@@ -1177,6 +1215,8 @@ exports.ForumOperationalParams = {
1177
1215
  message.postConvictionStreamRatePerBlock = object.postConvictionStreamRatePerBlock ?? "";
1178
1216
  message.maxForumRepPerTagPerEpoch = object.maxForumRepPerTagPerEpoch ?? "";
1179
1217
  message.postConvictionStakerSlashBps = object.postConvictionStakerSlashBps !== undefined && object.postConvictionStakerSlashBps !== null ? BigInt(object.postConvictionStakerSlashBps.toString()) : BigInt(0);
1218
+ message.curationDreamReward = object.curationDreamReward ?? "";
1219
+ message.acceptProposalTimeout = object.acceptProposalTimeout !== undefined && object.acceptProposalTimeout !== null ? BigInt(object.acceptProposalTimeout.toString()) : BigInt(0);
1180
1220
  return message;
1181
1221
  },
1182
1222
  fromAmino(object) {
@@ -1331,6 +1371,12 @@ exports.ForumOperationalParams = {
1331
1371
  if (object.post_conviction_staker_slash_bps !== undefined && object.post_conviction_staker_slash_bps !== null) {
1332
1372
  message.postConvictionStakerSlashBps = BigInt(object.post_conviction_staker_slash_bps);
1333
1373
  }
1374
+ if (object.curation_dream_reward !== undefined && object.curation_dream_reward !== null) {
1375
+ message.curationDreamReward = object.curation_dream_reward;
1376
+ }
1377
+ if (object.accept_proposal_timeout !== undefined && object.accept_proposal_timeout !== null) {
1378
+ message.acceptProposalTimeout = BigInt(object.accept_proposal_timeout);
1379
+ }
1334
1380
  return message;
1335
1381
  },
1336
1382
  toAmino(message) {
@@ -1385,6 +1431,8 @@ exports.ForumOperationalParams = {
1385
1431
  obj.post_conviction_stream_rate_per_block = message.postConvictionStreamRatePerBlock === "" ? undefined : message.postConvictionStreamRatePerBlock;
1386
1432
  obj.max_forum_rep_per_tag_per_epoch = message.maxForumRepPerTagPerEpoch === "" ? undefined : message.maxForumRepPerTagPerEpoch;
1387
1433
  obj.post_conviction_staker_slash_bps = message.postConvictionStakerSlashBps !== BigInt(0) ? message.postConvictionStakerSlashBps?.toString() : undefined;
1434
+ obj.curation_dream_reward = message.curationDreamReward === "" ? undefined : message.curationDreamReward;
1435
+ obj.accept_proposal_timeout = message.acceptProposalTimeout !== BigInt(0) ? message.acceptProposalTimeout?.toString() : undefined;
1388
1436
  return obj;
1389
1437
  },
1390
1438
  fromAminoMsg(object) {
@@ -1,5 +1,53 @@
1
1
  import { BinaryReader, BinaryWriter } from "../../../binary";
2
2
  import { DeepPartial } from "../../../helpers";
3
+ /**
4
+ * AccuracyEpochBucket holds one reward-epoch's resolved-appeal tally for a
5
+ * sentinel. Stored in a fixed-size ring on SentinelActivity (slot index =
6
+ * epoch % SentinelAccuracyRingSize); the `epoch` stamp disambiguates a live
7
+ * slot from a stale one left behind by an inactive epoch.
8
+ * @name AccuracyEpochBucket
9
+ * @package sparkdream.forum.v1
10
+ * @see proto type: sparkdream.forum.v1.AccuracyEpochBucket
11
+ */
12
+ export interface AccuracyEpochBucket {
13
+ epoch: bigint;
14
+ /**
15
+ * upheld_hides + upheld_locks + upheld_moves resolved this epoch
16
+ */
17
+ upheld: bigint;
18
+ /**
19
+ * overturned_* resolved this epoch
20
+ */
21
+ overturned: bigint;
22
+ }
23
+ export interface AccuracyEpochBucketProtoMsg {
24
+ typeUrl: "/sparkdream.forum.v1.AccuracyEpochBucket";
25
+ value: Uint8Array;
26
+ }
27
+ /**
28
+ * AccuracyEpochBucket holds one reward-epoch's resolved-appeal tally for a
29
+ * sentinel. Stored in a fixed-size ring on SentinelActivity (slot index =
30
+ * epoch % SentinelAccuracyRingSize); the `epoch` stamp disambiguates a live
31
+ * slot from a stale one left behind by an inactive epoch.
32
+ * @name AccuracyEpochBucketAmino
33
+ * @package sparkdream.forum.v1
34
+ * @see proto type: sparkdream.forum.v1.AccuracyEpochBucket
35
+ */
36
+ export interface AccuracyEpochBucketAmino {
37
+ epoch?: string;
38
+ /**
39
+ * upheld_hides + upheld_locks + upheld_moves resolved this epoch
40
+ */
41
+ upheld?: string;
42
+ /**
43
+ * overturned_* resolved this epoch
44
+ */
45
+ overturned?: string;
46
+ }
47
+ export interface AccuracyEpochBucketAminoMsg {
48
+ type: "/sparkdream.forum.v1.AccuracyEpochBucket";
49
+ value: AccuracyEpochBucketAmino;
50
+ }
3
51
  /**
4
52
  * SentinelActivity holds forum-specific action counters and local cooldowns
5
53
  * for a sentinel. The accountability record (bond, bond status, activity
@@ -13,6 +61,12 @@ export interface SentinelActivity {
13
61
  totalHides: bigint;
14
62
  upheldHides: bigint;
15
63
  overturnedHides: bigint;
64
+ /**
65
+ * unchallenged_hides counts hides that expired without ever being appealed
66
+ * (the hide stood by default). Written by the hide-expiry EndBlocker. Excluded
67
+ * from accuracy/reward math by design — it is a display/audit metric only, so
68
+ * a sentinel cannot game rewards by spam-hiding low-visibility content.
69
+ */
16
70
  unchallengedHides: bigint;
17
71
  epochHides: bigint;
18
72
  epochAppealsResolved: bigint;
@@ -33,10 +87,34 @@ export interface SentinelActivity {
33
87
  upheldPins: bigint;
34
88
  overturnedPins: bigint;
35
89
  epochPins: bigint;
90
+ /**
91
+ * Curation-proposal tracking. A sentinel may propose a reply as a thread's
92
+ * accepted answer (MsgMarkAcceptedReply on someone else's thread); the author
93
+ * confirms/rejects or it auto-confirms after a timeout.
94
+ * total_proposals — lifetime proposals created (incremented at propose).
95
+ * confirmed_proposals — lifetime proposals confirmed (author confirm or
96
+ * auto-confirm); credited to the proposing sentinel.
97
+ * rejected_proposals — lifetime proposals rejected by the author.
98
+ * epoch_curations — confirmed proposals in the current reward epoch.
99
+ * Feeds the sentinel reward score; reset each epoch.
100
+ * Incremented on CONFIRM (success), not on propose, so
101
+ * it cannot be farmed by spamming unconfirmed proposals.
102
+ */
36
103
  totalProposals: bigint;
37
104
  confirmedProposals: bigint;
38
105
  rejectedProposals: bigint;
39
106
  epochCurations: bigint;
107
+ /**
108
+ * Rolling-window accuracy ring. Fixed length SentinelAccuracyRingSize once
109
+ * first written; slot e % C holds reward-epoch e's resolved-appeal tally.
110
+ * x/rep's reward distribution computes accuracy over the last
111
+ * SentinelAccuracyWindowEpochs slots from this ring. The lifetime
112
+ * upheld_*\/overturned_* counters above are retained for display/audit and are
113
+ * NO LONGER used for reward accuracy. Append-only field — empty on records
114
+ * written before this field existed (no migration needed; an empty ring reads
115
+ * as zero decided appeals).
116
+ */
117
+ accuracyWindow: AccuracyEpochBucket[];
40
118
  }
41
119
  export interface SentinelActivityProtoMsg {
42
120
  typeUrl: "/sparkdream.forum.v1.SentinelActivity";
@@ -55,6 +133,12 @@ export interface SentinelActivityAmino {
55
133
  total_hides?: string;
56
134
  upheld_hides?: string;
57
135
  overturned_hides?: string;
136
+ /**
137
+ * unchallenged_hides counts hides that expired without ever being appealed
138
+ * (the hide stood by default). Written by the hide-expiry EndBlocker. Excluded
139
+ * from accuracy/reward math by design — it is a display/audit metric only, so
140
+ * a sentinel cannot game rewards by spam-hiding low-visibility content.
141
+ */
58
142
  unchallenged_hides?: string;
59
143
  epoch_hides?: string;
60
144
  epoch_appeals_resolved?: string;
@@ -75,15 +159,60 @@ export interface SentinelActivityAmino {
75
159
  upheld_pins?: string;
76
160
  overturned_pins?: string;
77
161
  epoch_pins?: string;
162
+ /**
163
+ * Curation-proposal tracking. A sentinel may propose a reply as a thread's
164
+ * accepted answer (MsgMarkAcceptedReply on someone else's thread); the author
165
+ * confirms/rejects or it auto-confirms after a timeout.
166
+ * total_proposals — lifetime proposals created (incremented at propose).
167
+ * confirmed_proposals — lifetime proposals confirmed (author confirm or
168
+ * auto-confirm); credited to the proposing sentinel.
169
+ * rejected_proposals — lifetime proposals rejected by the author.
170
+ * epoch_curations — confirmed proposals in the current reward epoch.
171
+ * Feeds the sentinel reward score; reset each epoch.
172
+ * Incremented on CONFIRM (success), not on propose, so
173
+ * it cannot be farmed by spamming unconfirmed proposals.
174
+ */
78
175
  total_proposals?: string;
79
176
  confirmed_proposals?: string;
80
177
  rejected_proposals?: string;
81
178
  epoch_curations?: string;
179
+ /**
180
+ * Rolling-window accuracy ring. Fixed length SentinelAccuracyRingSize once
181
+ * first written; slot e % C holds reward-epoch e's resolved-appeal tally.
182
+ * x/rep's reward distribution computes accuracy over the last
183
+ * SentinelAccuracyWindowEpochs slots from this ring. The lifetime
184
+ * upheld_*\/overturned_* counters above are retained for display/audit and are
185
+ * NO LONGER used for reward accuracy. Append-only field — empty on records
186
+ * written before this field existed (no migration needed; an empty ring reads
187
+ * as zero decided appeals).
188
+ */
189
+ accuracy_window?: AccuracyEpochBucketAmino[];
82
190
  }
83
191
  export interface SentinelActivityAminoMsg {
84
192
  type: "/sparkdream.forum.v1.SentinelActivity";
85
193
  value: SentinelActivityAmino;
86
194
  }
195
+ /**
196
+ * AccuracyEpochBucket holds one reward-epoch's resolved-appeal tally for a
197
+ * sentinel. Stored in a fixed-size ring on SentinelActivity (slot index =
198
+ * epoch % SentinelAccuracyRingSize); the `epoch` stamp disambiguates a live
199
+ * slot from a stale one left behind by an inactive epoch.
200
+ * @name AccuracyEpochBucket
201
+ * @package sparkdream.forum.v1
202
+ * @see proto type: sparkdream.forum.v1.AccuracyEpochBucket
203
+ */
204
+ export declare const AccuracyEpochBucket: {
205
+ typeUrl: string;
206
+ encode(message: AccuracyEpochBucket, writer?: BinaryWriter): BinaryWriter;
207
+ decode(input: BinaryReader | Uint8Array, length?: number): AccuracyEpochBucket;
208
+ fromPartial(object: DeepPartial<AccuracyEpochBucket>): AccuracyEpochBucket;
209
+ fromAmino(object: AccuracyEpochBucketAmino): AccuracyEpochBucket;
210
+ toAmino(message: AccuracyEpochBucket): AccuracyEpochBucketAmino;
211
+ fromAminoMsg(object: AccuracyEpochBucketAminoMsg): AccuracyEpochBucket;
212
+ fromProtoMsg(message: AccuracyEpochBucketProtoMsg): AccuracyEpochBucket;
213
+ toProto(message: AccuracyEpochBucket): Uint8Array;
214
+ toProtoMsg(message: AccuracyEpochBucket): AccuracyEpochBucketProtoMsg;
215
+ };
87
216
  /**
88
217
  * SentinelActivity holds forum-specific action counters and local cooldowns
89
218
  * for a sentinel. The accountability record (bond, bond status, activity