@sparkdreamnft/sparkdreamjs 0.0.26 → 0.0.28

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 (56) hide show
  1. package/cosmos/bundle.d.ts +160 -160
  2. package/cosmos/bundle.js +181 -181
  3. package/esm/cosmos/bundle.js +181 -181
  4. package/esm/ibc/bundle.js +105 -105
  5. package/esm/sparkdream/bundle.js +275 -273
  6. package/esm/sparkdream/collect/v1/params.js +24 -0
  7. package/esm/sparkdream/collect/v1/query.js +165 -0
  8. package/esm/sparkdream/collect/v1/query.lcd.js +11 -0
  9. package/esm/sparkdream/collect/v1/query.rpc.Query.js +10 -1
  10. package/esm/sparkdream/collect/v1/tx.js +216 -1
  11. package/esm/sparkdream/collect/v1/tx.registry.js +20 -2
  12. package/esm/sparkdream/collect/v1/tx.rpc.msg.js +11 -1
  13. package/esm/sparkdream/collect/v1/types.js +92 -2
  14. package/esm/sparkdream/forum/v1/sentinel_activity.js +58 -1
  15. package/esm/sparkdream/forum/v1/tx.js +1 -1
  16. package/esm/sparkdream/rep/v1/bonded_role.js +17 -5
  17. package/esm/sparkdream/rep/v1/genesis.js +17 -1
  18. package/esm/sparkdream/rep/v1/query.js +13 -34
  19. package/esm/sparkdream/rep/v1/role_activity.js +670 -0
  20. package/esm/tendermint/bundle.js +17 -17
  21. package/ibc/bundle.d.ts +90 -90
  22. package/ibc/bundle.js +105 -105
  23. package/package.json +1 -1
  24. package/sparkdream/bundle.d.ts +7194 -7061
  25. package/sparkdream/bundle.js +275 -273
  26. package/sparkdream/collect/v1/params.d.ts +28 -0
  27. package/sparkdream/collect/v1/params.js +24 -0
  28. package/sparkdream/collect/v1/query.d.ts +92 -0
  29. package/sparkdream/collect/v1/query.js +167 -1
  30. package/sparkdream/collect/v1/query.lcd.d.ts +2 -1
  31. package/sparkdream/collect/v1/query.lcd.js +11 -0
  32. package/sparkdream/collect/v1/query.rpc.Query.d.ts +5 -1
  33. package/sparkdream/collect/v1/query.rpc.Query.js +9 -0
  34. package/sparkdream/collect/v1/tx.d.ts +130 -6
  35. package/sparkdream/collect/v1/tx.js +220 -3
  36. package/sparkdream/collect/v1/tx.registry.d.ts +13 -1
  37. package/sparkdream/collect/v1/tx.registry.js +19 -1
  38. package/sparkdream/collect/v1/tx.rpc.msg.d.ts +10 -1
  39. package/sparkdream/collect/v1/tx.rpc.msg.js +10 -0
  40. package/sparkdream/collect/v1/types.d.ts +72 -0
  41. package/sparkdream/collect/v1/types.js +92 -2
  42. package/sparkdream/forum/v1/sentinel_activity.d.ts +53 -0
  43. package/sparkdream/forum/v1/sentinel_activity.js +58 -1
  44. package/sparkdream/forum/v1/tx.d.ts +1 -1
  45. package/sparkdream/forum/v1/tx.js +1 -1
  46. package/sparkdream/rep/v1/bonded_role.d.ts +13 -1
  47. package/sparkdream/rep/v1/bonded_role.js +17 -5
  48. package/sparkdream/rep/v1/genesis.d.ts +3 -0
  49. package/sparkdream/rep/v1/genesis.js +17 -1
  50. package/sparkdream/rep/v1/query.d.ts +2 -6
  51. package/sparkdream/rep/v1/query.js +13 -34
  52. package/sparkdream/rep/v1/role_activity.d.ts +395 -0
  53. package/sparkdream/rep/v1/role_activity.js +673 -0
  54. package/sparkdream/rpc.query.d.ts +1 -0
  55. package/tendermint/bundle.d.ts +844 -844
  56. package/tendermint/bundle.js +17 -17
@@ -764,6 +764,14 @@ export interface CollectOperationalParams {
764
764
  endorserRepPenalty: string;
765
765
  collabInviterRepPenalty: string;
766
766
  authorRepPenalty: string;
767
+ /**
768
+ * sentinel_unhide_window_blocks — see Params.sentinel_unhide_window_blocks.
769
+ */
770
+ sentinelUnhideWindowBlocks: bigint;
771
+ /**
772
+ * max_hides_per_sentinel_per_day — see Params.max_hides_per_sentinel_per_day.
773
+ */
774
+ maxHidesPerSentinelPerDay: number;
767
775
  }
768
776
  export interface CollectOperationalParamsProtoMsg {
769
777
  typeUrl: "/sparkdream.collect.v1.CollectOperationalParams";
@@ -856,6 +864,14 @@ export interface CollectOperationalParamsAmino {
856
864
  endorser_rep_penalty?: string;
857
865
  collab_inviter_rep_penalty?: string;
858
866
  author_rep_penalty?: string;
867
+ /**
868
+ * sentinel_unhide_window_blocks — see Params.sentinel_unhide_window_blocks.
869
+ */
870
+ sentinel_unhide_window_blocks?: string;
871
+ /**
872
+ * max_hides_per_sentinel_per_day — see Params.max_hides_per_sentinel_per_day.
873
+ */
874
+ max_hides_per_sentinel_per_day?: number;
859
875
  }
860
876
  export interface CollectOperationalParamsAminoMsg {
861
877
  type: "/sparkdream.collect.v1.CollectOperationalParams";
@@ -917,6 +933,34 @@ export interface HideRecord {
917
933
  appealDeadline: bigint;
918
934
  appealed: boolean;
919
935
  resolved: boolean;
936
+ /**
937
+ * Set true when the hiding sentinel self-corrected via MsgUnhideContent.
938
+ * The record is Resolved at that point, but the HideRecordExpiry entry
939
+ * is retained so the EndBlocker releases the committed bond at the
940
+ * original appeal_deadline (anti hide/unhide cycling).
941
+ */
942
+ selfCorrected: boolean;
943
+ /**
944
+ * Snapshot of the author bond amount slashed by MsgHideContent
945
+ * (SlashAuthorBond), so a self-correct can mint it back. Zero if no
946
+ * bond existed or the target is an item.
947
+ */
948
+ authorBondAmount: string;
949
+ /**
950
+ * Snapshot of the per-tag rep penalty PARAM at hide time (params may
951
+ * change before unhide) and the tags it was applied to (collection tags
952
+ * are owner-editable). Zero/empty when no deduction ran.
953
+ */
954
+ authorRepPenalty: string;
955
+ repPenaltyTags: string[];
956
+ /**
957
+ * Per-tag ACTUAL deducted amounts (LegacyDec strings), aligned with
958
+ * rep_penalty_tags. DeductReputation floors at zero, so the actual
959
+ * deduction is min(current_score, author_rep_penalty) — restoring the
960
+ * raw param instead would mint reputation from nothing on every
961
+ * hide/reversal cycle for authors with less rep than the penalty.
962
+ */
963
+ repPenaltyAmounts: string[];
920
964
  }
921
965
  export interface HideRecordProtoMsg {
922
966
  typeUrl: "/sparkdream.collect.v1.HideRecord";
@@ -940,6 +984,34 @@ export interface HideRecordAmino {
940
984
  appeal_deadline?: string;
941
985
  appealed?: boolean;
942
986
  resolved?: boolean;
987
+ /**
988
+ * Set true when the hiding sentinel self-corrected via MsgUnhideContent.
989
+ * The record is Resolved at that point, but the HideRecordExpiry entry
990
+ * is retained so the EndBlocker releases the committed bond at the
991
+ * original appeal_deadline (anti hide/unhide cycling).
992
+ */
993
+ self_corrected?: boolean;
994
+ /**
995
+ * Snapshot of the author bond amount slashed by MsgHideContent
996
+ * (SlashAuthorBond), so a self-correct can mint it back. Zero if no
997
+ * bond existed or the target is an item.
998
+ */
999
+ author_bond_amount?: string;
1000
+ /**
1001
+ * Snapshot of the per-tag rep penalty PARAM at hide time (params may
1002
+ * change before unhide) and the tags it was applied to (collection tags
1003
+ * are owner-editable). Zero/empty when no deduction ran.
1004
+ */
1005
+ author_rep_penalty?: string;
1006
+ rep_penalty_tags?: string[];
1007
+ /**
1008
+ * Per-tag ACTUAL deducted amounts (LegacyDec strings), aligned with
1009
+ * rep_penalty_tags. DeductReputation floors at zero, so the actual
1010
+ * deduction is min(current_score, author_rep_penalty) — restoring the
1011
+ * raw param instead would mint reputation from nothing on every
1012
+ * hide/reversal cycle for authors with less rep than the penalty.
1013
+ */
1014
+ rep_penalty_amounts?: string[];
943
1015
  }
944
1016
  export interface HideRecordAminoMsg {
945
1017
  type: "/sparkdream.collect.v1.HideRecord";
@@ -2423,7 +2423,9 @@ function createBaseCollectOperationalParams() {
2423
2423
  nonMemberCollabBurnFraction: "",
2424
2424
  endorserRepPenalty: "",
2425
2425
  collabInviterRepPenalty: "",
2426
- authorRepPenalty: ""
2426
+ authorRepPenalty: "",
2427
+ sentinelUnhideWindowBlocks: BigInt(0),
2428
+ maxHidesPerSentinelPerDay: 0
2427
2429
  };
2428
2430
  }
2429
2431
  /**
@@ -2588,6 +2590,12 @@ exports.CollectOperationalParams = {
2588
2590
  if (message.authorRepPenalty !== "") {
2589
2591
  writer.uint32(434).string(math_1.Decimal.fromUserInput(message.authorRepPenalty, 18).atomics);
2590
2592
  }
2593
+ if (message.sentinelUnhideWindowBlocks !== BigInt(0)) {
2594
+ writer.uint32(448).int64(message.sentinelUnhideWindowBlocks);
2595
+ }
2596
+ if (message.maxHidesPerSentinelPerDay !== 0) {
2597
+ writer.uint32(456).uint32(message.maxHidesPerSentinelPerDay);
2598
+ }
2591
2599
  return writer;
2592
2600
  },
2593
2601
  decode(input, length) {
@@ -2750,6 +2758,12 @@ exports.CollectOperationalParams = {
2750
2758
  case 54:
2751
2759
  message.authorRepPenalty = math_1.Decimal.fromAtomics(reader.string(), 18).toString();
2752
2760
  break;
2761
+ case 56:
2762
+ message.sentinelUnhideWindowBlocks = reader.int64();
2763
+ break;
2764
+ case 57:
2765
+ message.maxHidesPerSentinelPerDay = reader.uint32();
2766
+ break;
2753
2767
  default:
2754
2768
  reader.skipType(tag & 7);
2755
2769
  break;
@@ -2810,6 +2824,8 @@ exports.CollectOperationalParams = {
2810
2824
  message.endorserRepPenalty = object.endorserRepPenalty ?? "";
2811
2825
  message.collabInviterRepPenalty = object.collabInviterRepPenalty ?? "";
2812
2826
  message.authorRepPenalty = object.authorRepPenalty ?? "";
2827
+ message.sentinelUnhideWindowBlocks = object.sentinelUnhideWindowBlocks !== undefined && object.sentinelUnhideWindowBlocks !== null ? BigInt(object.sentinelUnhideWindowBlocks.toString()) : BigInt(0);
2828
+ message.maxHidesPerSentinelPerDay = object.maxHidesPerSentinelPerDay ?? 0;
2813
2829
  return message;
2814
2830
  },
2815
2831
  fromAmino(object) {
@@ -2967,6 +2983,12 @@ exports.CollectOperationalParams = {
2967
2983
  if (object.author_rep_penalty !== undefined && object.author_rep_penalty !== null) {
2968
2984
  message.authorRepPenalty = object.author_rep_penalty;
2969
2985
  }
2986
+ if (object.sentinel_unhide_window_blocks !== undefined && object.sentinel_unhide_window_blocks !== null) {
2987
+ message.sentinelUnhideWindowBlocks = BigInt(object.sentinel_unhide_window_blocks);
2988
+ }
2989
+ if (object.max_hides_per_sentinel_per_day !== undefined && object.max_hides_per_sentinel_per_day !== null) {
2990
+ message.maxHidesPerSentinelPerDay = object.max_hides_per_sentinel_per_day;
2991
+ }
2970
2992
  return message;
2971
2993
  },
2972
2994
  toAmino(message) {
@@ -3022,6 +3044,8 @@ exports.CollectOperationalParams = {
3022
3044
  obj.endorser_rep_penalty = message.endorserRepPenalty === "" ? undefined : message.endorserRepPenalty;
3023
3045
  obj.collab_inviter_rep_penalty = message.collabInviterRepPenalty === "" ? undefined : message.collabInviterRepPenalty;
3024
3046
  obj.author_rep_penalty = message.authorRepPenalty === "" ? undefined : message.authorRepPenalty;
3047
+ obj.sentinel_unhide_window_blocks = message.sentinelUnhideWindowBlocks !== BigInt(0) ? message.sentinelUnhideWindowBlocks?.toString() : undefined;
3048
+ obj.max_hides_per_sentinel_per_day = message.maxHidesPerSentinelPerDay === 0 ? undefined : message.maxHidesPerSentinelPerDay;
3025
3049
  return obj;
3026
3050
  },
3027
3051
  fromAminoMsg(object) {
@@ -3196,7 +3220,12 @@ function createBaseHideRecord() {
3196
3220
  reasonText: "",
3197
3221
  appealDeadline: BigInt(0),
3198
3222
  appealed: false,
3199
- resolved: false
3223
+ resolved: false,
3224
+ selfCorrected: false,
3225
+ authorBondAmount: "",
3226
+ authorRepPenalty: "",
3227
+ repPenaltyTags: [],
3228
+ repPenaltyAmounts: []
3200
3229
  };
3201
3230
  }
3202
3231
  /**
@@ -3241,6 +3270,21 @@ exports.HideRecord = {
3241
3270
  if (message.resolved === true) {
3242
3271
  writer.uint32(88).bool(message.resolved);
3243
3272
  }
3273
+ if (message.selfCorrected === true) {
3274
+ writer.uint32(96).bool(message.selfCorrected);
3275
+ }
3276
+ if (message.authorBondAmount !== "") {
3277
+ writer.uint32(106).string(message.authorBondAmount);
3278
+ }
3279
+ if (message.authorRepPenalty !== "") {
3280
+ writer.uint32(114).string(math_1.Decimal.fromUserInput(message.authorRepPenalty, 18).atomics);
3281
+ }
3282
+ for (const v of message.repPenaltyTags) {
3283
+ writer.uint32(122).string(v);
3284
+ }
3285
+ for (const v of message.repPenaltyAmounts) {
3286
+ writer.uint32(130).string(v);
3287
+ }
3244
3288
  return writer;
3245
3289
  },
3246
3290
  decode(input, length) {
@@ -3283,6 +3327,21 @@ exports.HideRecord = {
3283
3327
  case 11:
3284
3328
  message.resolved = reader.bool();
3285
3329
  break;
3330
+ case 12:
3331
+ message.selfCorrected = reader.bool();
3332
+ break;
3333
+ case 13:
3334
+ message.authorBondAmount = reader.string();
3335
+ break;
3336
+ case 14:
3337
+ message.authorRepPenalty = math_1.Decimal.fromAtomics(reader.string(), 18).toString();
3338
+ break;
3339
+ case 15:
3340
+ message.repPenaltyTags.push(reader.string());
3341
+ break;
3342
+ case 16:
3343
+ message.repPenaltyAmounts.push(reader.string());
3344
+ break;
3286
3345
  default:
3287
3346
  reader.skipType(tag & 7);
3288
3347
  break;
@@ -3303,6 +3362,11 @@ exports.HideRecord = {
3303
3362
  message.appealDeadline = object.appealDeadline !== undefined && object.appealDeadline !== null ? BigInt(object.appealDeadline.toString()) : BigInt(0);
3304
3363
  message.appealed = object.appealed ?? false;
3305
3364
  message.resolved = object.resolved ?? false;
3365
+ message.selfCorrected = object.selfCorrected ?? false;
3366
+ message.authorBondAmount = object.authorBondAmount ?? "";
3367
+ message.authorRepPenalty = object.authorRepPenalty ?? "";
3368
+ message.repPenaltyTags = object.repPenaltyTags?.map(e => e) || [];
3369
+ message.repPenaltyAmounts = object.repPenaltyAmounts?.map(e => e) || [];
3306
3370
  return message;
3307
3371
  },
3308
3372
  fromAmino(object) {
@@ -3340,6 +3404,17 @@ exports.HideRecord = {
3340
3404
  if (object.resolved !== undefined && object.resolved !== null) {
3341
3405
  message.resolved = object.resolved;
3342
3406
  }
3407
+ if (object.self_corrected !== undefined && object.self_corrected !== null) {
3408
+ message.selfCorrected = object.self_corrected;
3409
+ }
3410
+ if (object.author_bond_amount !== undefined && object.author_bond_amount !== null) {
3411
+ message.authorBondAmount = object.author_bond_amount;
3412
+ }
3413
+ if (object.author_rep_penalty !== undefined && object.author_rep_penalty !== null) {
3414
+ message.authorRepPenalty = object.author_rep_penalty;
3415
+ }
3416
+ message.repPenaltyTags = object.rep_penalty_tags?.map(e => e) || [];
3417
+ message.repPenaltyAmounts = object.rep_penalty_amounts?.map(e => e) || [];
3343
3418
  return message;
3344
3419
  },
3345
3420
  toAmino(message) {
@@ -3355,6 +3430,21 @@ exports.HideRecord = {
3355
3430
  obj.appeal_deadline = message.appealDeadline !== BigInt(0) ? message.appealDeadline?.toString() : undefined;
3356
3431
  obj.appealed = message.appealed === false ? undefined : message.appealed;
3357
3432
  obj.resolved = message.resolved === false ? undefined : message.resolved;
3433
+ obj.self_corrected = message.selfCorrected === false ? undefined : message.selfCorrected;
3434
+ obj.author_bond_amount = message.authorBondAmount === "" ? undefined : message.authorBondAmount;
3435
+ obj.author_rep_penalty = message.authorRepPenalty === "" ? undefined : message.authorRepPenalty;
3436
+ if (message.repPenaltyTags) {
3437
+ obj.rep_penalty_tags = message.repPenaltyTags.map(e => e);
3438
+ }
3439
+ else {
3440
+ obj.rep_penalty_tags = message.repPenaltyTags;
3441
+ }
3442
+ if (message.repPenaltyAmounts) {
3443
+ obj.rep_penalty_amounts = message.repPenaltyAmounts.map(e => e);
3444
+ }
3445
+ else {
3446
+ obj.rep_penalty_amounts = message.repPenaltyAmounts;
3447
+ }
3358
3448
  return obj;
3359
3449
  },
3360
3450
  fromAminoMsg(object) {
@@ -52,6 +52,15 @@ export interface AccuracyEpochBucketAminoMsg {
52
52
  * SentinelActivity holds forum-specific action counters and local cooldowns
53
53
  * for a sentinel. The accountability record (bond, bond status, activity
54
54
  * stamps) lives in sparkdream.rep.v1.SentinelActivity.
55
+ * STORAGE vs PROJECTION: the shared accountability record lives on
56
+ * x/rep's RoleActivity (see docs/x-rep-spec.md); forum PERSISTS only the
57
+ * forum-local fields — pending_hide_count, unchallenged_hides, and the
58
+ * curation-proposal lifecycle counters (total/confirmed/rejected_proposals).
59
+ * Every other field (per-action totals/upheld/overturned/epoch counters,
60
+ * streaks, overturn_cooldown_until, accuracy_window, collect counters) is
61
+ * PROJECTION-ONLY: sourced from x/rep's shared RoleActivity record at query
62
+ * time by get-sentinel-activity so client field paths stay stable. Those
63
+ * fields are zero in stored records and must not be written.
55
64
  * @name SentinelActivity
56
65
  * @package sparkdream.forum.v1
57
66
  * @see proto type: sparkdream.forum.v1.SentinelActivity
@@ -115,6 +124,19 @@ export interface SentinelActivity {
115
124
  * as zero decided appeals).
116
125
  */
117
126
  accuracyWindow: AccuracyEpochBucket[];
127
+ /**
128
+ * Cross-module (x/collect) hide counters. Collect moderation is performed
129
+ * by the same shared CONTENT_SENTINEL corps; collect reports hide actions
130
+ * and jury outcomes into this record so streak demotion, the overturn
131
+ * cooldown, the accuracy ring (outcomes land in accuracy_window like forum
132
+ * ones), and reward-epoch activity all see collect behavior. Kept as
133
+ * separate counters (not folded into total/epoch_hides) so forum's own
134
+ * max_hides_per_epoch budget is not consumed by collect actions.
135
+ */
136
+ totalCollectHides: bigint;
137
+ upheldCollectHides: bigint;
138
+ overturnedCollectHides: bigint;
139
+ epochCollectHides: bigint;
118
140
  }
119
141
  export interface SentinelActivityProtoMsg {
120
142
  typeUrl: "/sparkdream.forum.v1.SentinelActivity";
@@ -124,6 +146,15 @@ export interface SentinelActivityProtoMsg {
124
146
  * SentinelActivity holds forum-specific action counters and local cooldowns
125
147
  * for a sentinel. The accountability record (bond, bond status, activity
126
148
  * stamps) lives in sparkdream.rep.v1.SentinelActivity.
149
+ * STORAGE vs PROJECTION: the shared accountability record lives on
150
+ * x/rep's RoleActivity (see docs/x-rep-spec.md); forum PERSISTS only the
151
+ * forum-local fields — pending_hide_count, unchallenged_hides, and the
152
+ * curation-proposal lifecycle counters (total/confirmed/rejected_proposals).
153
+ * Every other field (per-action totals/upheld/overturned/epoch counters,
154
+ * streaks, overturn_cooldown_until, accuracy_window, collect counters) is
155
+ * PROJECTION-ONLY: sourced from x/rep's shared RoleActivity record at query
156
+ * time by get-sentinel-activity so client field paths stay stable. Those
157
+ * fields are zero in stored records and must not be written.
127
158
  * @name SentinelActivityAmino
128
159
  * @package sparkdream.forum.v1
129
160
  * @see proto type: sparkdream.forum.v1.SentinelActivity
@@ -187,6 +218,19 @@ export interface SentinelActivityAmino {
187
218
  * as zero decided appeals).
188
219
  */
189
220
  accuracy_window?: AccuracyEpochBucketAmino[];
221
+ /**
222
+ * Cross-module (x/collect) hide counters. Collect moderation is performed
223
+ * by the same shared CONTENT_SENTINEL corps; collect reports hide actions
224
+ * and jury outcomes into this record so streak demotion, the overturn
225
+ * cooldown, the accuracy ring (outcomes land in accuracy_window like forum
226
+ * ones), and reward-epoch activity all see collect behavior. Kept as
227
+ * separate counters (not folded into total/epoch_hides) so forum's own
228
+ * max_hides_per_epoch budget is not consumed by collect actions.
229
+ */
230
+ total_collect_hides?: string;
231
+ upheld_collect_hides?: string;
232
+ overturned_collect_hides?: string;
233
+ epoch_collect_hides?: string;
190
234
  }
191
235
  export interface SentinelActivityAminoMsg {
192
236
  type: "/sparkdream.forum.v1.SentinelActivity";
@@ -217,6 +261,15 @@ export declare const AccuracyEpochBucket: {
217
261
  * SentinelActivity holds forum-specific action counters and local cooldowns
218
262
  * for a sentinel. The accountability record (bond, bond status, activity
219
263
  * stamps) lives in sparkdream.rep.v1.SentinelActivity.
264
+ * STORAGE vs PROJECTION: the shared accountability record lives on
265
+ * x/rep's RoleActivity (see docs/x-rep-spec.md); forum PERSISTS only the
266
+ * forum-local fields — pending_hide_count, unchallenged_hides, and the
267
+ * curation-proposal lifecycle counters (total/confirmed/rejected_proposals).
268
+ * Every other field (per-action totals/upheld/overturned/epoch counters,
269
+ * streaks, overturn_cooldown_until, accuracy_window, collect counters) is
270
+ * PROJECTION-ONLY: sourced from x/rep's shared RoleActivity record at query
271
+ * time by get-sentinel-activity so client field paths stay stable. Those
272
+ * fields are zero in stored records and must not be written.
220
273
  * @name SentinelActivity
221
274
  * @package sparkdream.forum.v1
222
275
  * @see proto type: sparkdream.forum.v1.SentinelActivity
@@ -129,13 +129,26 @@ function createBaseSentinelActivity() {
129
129
  confirmedProposals: BigInt(0),
130
130
  rejectedProposals: BigInt(0),
131
131
  epochCurations: BigInt(0),
132
- accuracyWindow: []
132
+ accuracyWindow: [],
133
+ totalCollectHides: BigInt(0),
134
+ upheldCollectHides: BigInt(0),
135
+ overturnedCollectHides: BigInt(0),
136
+ epochCollectHides: BigInt(0)
133
137
  };
134
138
  }
135
139
  /**
136
140
  * SentinelActivity holds forum-specific action counters and local cooldowns
137
141
  * for a sentinel. The accountability record (bond, bond status, activity
138
142
  * stamps) lives in sparkdream.rep.v1.SentinelActivity.
143
+ * STORAGE vs PROJECTION: the shared accountability record lives on
144
+ * x/rep's RoleActivity (see docs/x-rep-spec.md); forum PERSISTS only the
145
+ * forum-local fields — pending_hide_count, unchallenged_hides, and the
146
+ * curation-proposal lifecycle counters (total/confirmed/rejected_proposals).
147
+ * Every other field (per-action totals/upheld/overturned/epoch counters,
148
+ * streaks, overturn_cooldown_until, accuracy_window, collect counters) is
149
+ * PROJECTION-ONLY: sourced from x/rep's shared RoleActivity record at query
150
+ * time by get-sentinel-activity so client field paths stay stable. Those
151
+ * fields are zero in stored records and must not be written.
139
152
  * @name SentinelActivity
140
153
  * @package sparkdream.forum.v1
141
154
  * @see proto type: sparkdream.forum.v1.SentinelActivity
@@ -230,6 +243,18 @@ exports.SentinelActivity = {
230
243
  for (const v of message.accuracyWindow) {
231
244
  exports.AccuracyEpochBucket.encode(v, writer.uint32(234).fork()).ldelim();
232
245
  }
246
+ if (message.totalCollectHides !== BigInt(0)) {
247
+ writer.uint32(240).uint64(message.totalCollectHides);
248
+ }
249
+ if (message.upheldCollectHides !== BigInt(0)) {
250
+ writer.uint32(248).uint64(message.upheldCollectHides);
251
+ }
252
+ if (message.overturnedCollectHides !== BigInt(0)) {
253
+ writer.uint32(256).uint64(message.overturnedCollectHides);
254
+ }
255
+ if (message.epochCollectHides !== BigInt(0)) {
256
+ writer.uint32(264).uint64(message.epochCollectHides);
257
+ }
233
258
  return writer;
234
259
  },
235
260
  decode(input, length) {
@@ -326,6 +351,18 @@ exports.SentinelActivity = {
326
351
  case 29:
327
352
  message.accuracyWindow.push(exports.AccuracyEpochBucket.decode(reader, reader.uint32()));
328
353
  break;
354
+ case 30:
355
+ message.totalCollectHides = reader.uint64();
356
+ break;
357
+ case 31:
358
+ message.upheldCollectHides = reader.uint64();
359
+ break;
360
+ case 32:
361
+ message.overturnedCollectHides = reader.uint64();
362
+ break;
363
+ case 33:
364
+ message.epochCollectHides = reader.uint64();
365
+ break;
329
366
  default:
330
367
  reader.skipType(tag & 7);
331
368
  break;
@@ -364,6 +401,10 @@ exports.SentinelActivity = {
364
401
  message.rejectedProposals = object.rejectedProposals !== undefined && object.rejectedProposals !== null ? BigInt(object.rejectedProposals.toString()) : BigInt(0);
365
402
  message.epochCurations = object.epochCurations !== undefined && object.epochCurations !== null ? BigInt(object.epochCurations.toString()) : BigInt(0);
366
403
  message.accuracyWindow = object.accuracyWindow?.map(e => exports.AccuracyEpochBucket.fromPartial(e)) || [];
404
+ message.totalCollectHides = object.totalCollectHides !== undefined && object.totalCollectHides !== null ? BigInt(object.totalCollectHides.toString()) : BigInt(0);
405
+ message.upheldCollectHides = object.upheldCollectHides !== undefined && object.upheldCollectHides !== null ? BigInt(object.upheldCollectHides.toString()) : BigInt(0);
406
+ message.overturnedCollectHides = object.overturnedCollectHides !== undefined && object.overturnedCollectHides !== null ? BigInt(object.overturnedCollectHides.toString()) : BigInt(0);
407
+ message.epochCollectHides = object.epochCollectHides !== undefined && object.epochCollectHides !== null ? BigInt(object.epochCollectHides.toString()) : BigInt(0);
367
408
  return message;
368
409
  },
369
410
  fromAmino(object) {
@@ -453,6 +494,18 @@ exports.SentinelActivity = {
453
494
  message.epochCurations = BigInt(object.epoch_curations);
454
495
  }
455
496
  message.accuracyWindow = object.accuracy_window?.map(e => exports.AccuracyEpochBucket.fromAmino(e)) || [];
497
+ if (object.total_collect_hides !== undefined && object.total_collect_hides !== null) {
498
+ message.totalCollectHides = BigInt(object.total_collect_hides);
499
+ }
500
+ if (object.upheld_collect_hides !== undefined && object.upheld_collect_hides !== null) {
501
+ message.upheldCollectHides = BigInt(object.upheld_collect_hides);
502
+ }
503
+ if (object.overturned_collect_hides !== undefined && object.overturned_collect_hides !== null) {
504
+ message.overturnedCollectHides = BigInt(object.overturned_collect_hides);
505
+ }
506
+ if (object.epoch_collect_hides !== undefined && object.epoch_collect_hides !== null) {
507
+ message.epochCollectHides = BigInt(object.epoch_collect_hides);
508
+ }
456
509
  return message;
457
510
  },
458
511
  toAmino(message) {
@@ -491,6 +544,10 @@ exports.SentinelActivity = {
491
544
  else {
492
545
  obj.accuracy_window = message.accuracyWindow;
493
546
  }
547
+ obj.total_collect_hides = message.totalCollectHides !== BigInt(0) ? message.totalCollectHides?.toString() : undefined;
548
+ obj.upheld_collect_hides = message.upheldCollectHides !== BigInt(0) ? message.upheldCollectHides?.toString() : undefined;
549
+ obj.overturned_collect_hides = message.overturnedCollectHides !== BigInt(0) ? message.overturnedCollectHides?.toString() : undefined;
550
+ obj.epoch_collect_hides = message.epochCollectHides !== BigInt(0) ? message.epochCollectHides?.toString() : undefined;
494
551
  return obj;
495
552
  },
496
553
  fromAminoMsg(object) {
@@ -8,7 +8,7 @@ import { DeepPartial } from "../../../helpers";
8
8
  * where an account is BOTH a bonded forum sentinel and a Commons Operations
9
9
  * Committee member: without it the handler would silently pick the council
10
10
  * (gov) path — a strictly more powerful, less accountable action chosen by
11
- * accident. See docs/HANDOFF_HIDE_AUTHORITY_DISAMBIGUATION.md.
11
+ * accident. See docs/x-forum-spec.md (Shared ModerationAuthority).
12
12
  */
13
13
  export declare enum ModerationAuthority {
14
14
  /**
@@ -13,7 +13,7 @@ const binary_1 = require("../../../binary");
13
13
  * where an account is BOTH a bonded forum sentinel and a Commons Operations
14
14
  * Committee member: without it the handler would silently pick the council
15
15
  * (gov) path — a strictly more powerful, less accountable action chosen by
16
- * accident. See docs/HANDOFF_HIDE_AUTHORITY_DISAMBIGUATION.md.
16
+ * accident. See docs/x-forum-spec.md (Shared ModerationAuthority).
17
17
  */
18
18
  var ModerationAuthority;
19
19
  (function (ModerationAuthority) {
@@ -7,10 +7,22 @@ import { DeepPartial } from "../../../helpers";
7
7
  * BondedRoleConfig. Independent bond pools, configs, and slashing surfaces per
8
8
  * role; cross-role coupling (if ever needed) belongs in the gaining module, not
9
9
  * in this primitive.
10
+ *
11
+ * CONTENT_SENTINEL is the deliberate exception to the owning-module naming
12
+ * convention: one moderation corps (one bond, one accountability record)
13
+ * spans every content surface — forum posts/threads AND collect
14
+ * collections/items. x/forum is the role's CONFIG STEWARD: it is the sole
15
+ * writer of the role's BondedRoleConfig (via its sentinel operational
16
+ * params). The shared accountability record (RoleActivity: per-kind action
17
+ * counters, verdict streaks, overturn cooldown, accuracy ring) is owned by
18
+ * x/rep itself; forum and collect report actions and verdicts into it.
19
+ * Formerly named ROLE_TYPE_FORUM_SENTINEL (renamed pre-launch; see the
20
+ * docs/bonded-role-generalization.md addendum and docs/x-rep-spec.md,
21
+ * RoleActivity).
10
22
  */
11
23
  export declare enum RoleType {
12
24
  ROLE_TYPE_UNSPECIFIED = 0,
13
- ROLE_TYPE_FORUM_SENTINEL = 1,
25
+ ROLE_TYPE_CONTENT_SENTINEL = 1,
14
26
  ROLE_TYPE_COLLECT_CURATOR = 2,
15
27
  ROLE_TYPE_FEDERATION_VERIFIER = 3,
16
28
  UNRECOGNIZED = -1
@@ -14,11 +14,23 @@ const binary_1 = require("../../../binary");
14
14
  * BondedRoleConfig. Independent bond pools, configs, and slashing surfaces per
15
15
  * role; cross-role coupling (if ever needed) belongs in the gaining module, not
16
16
  * in this primitive.
17
+ *
18
+ * CONTENT_SENTINEL is the deliberate exception to the owning-module naming
19
+ * convention: one moderation corps (one bond, one accountability record)
20
+ * spans every content surface — forum posts/threads AND collect
21
+ * collections/items. x/forum is the role's CONFIG STEWARD: it is the sole
22
+ * writer of the role's BondedRoleConfig (via its sentinel operational
23
+ * params). The shared accountability record (RoleActivity: per-kind action
24
+ * counters, verdict streaks, overturn cooldown, accuracy ring) is owned by
25
+ * x/rep itself; forum and collect report actions and verdicts into it.
26
+ * Formerly named ROLE_TYPE_FORUM_SENTINEL (renamed pre-launch; see the
27
+ * docs/bonded-role-generalization.md addendum and docs/x-rep-spec.md,
28
+ * RoleActivity).
17
29
  */
18
30
  var RoleType;
19
31
  (function (RoleType) {
20
32
  RoleType[RoleType["ROLE_TYPE_UNSPECIFIED"] = 0] = "ROLE_TYPE_UNSPECIFIED";
21
- RoleType[RoleType["ROLE_TYPE_FORUM_SENTINEL"] = 1] = "ROLE_TYPE_FORUM_SENTINEL";
33
+ RoleType[RoleType["ROLE_TYPE_CONTENT_SENTINEL"] = 1] = "ROLE_TYPE_CONTENT_SENTINEL";
22
34
  RoleType[RoleType["ROLE_TYPE_COLLECT_CURATOR"] = 2] = "ROLE_TYPE_COLLECT_CURATOR";
23
35
  RoleType[RoleType["ROLE_TYPE_FEDERATION_VERIFIER"] = 3] = "ROLE_TYPE_FEDERATION_VERIFIER";
24
36
  RoleType[RoleType["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
@@ -30,8 +42,8 @@ function roleTypeFromJSON(object) {
30
42
  case "ROLE_TYPE_UNSPECIFIED":
31
43
  return RoleType.ROLE_TYPE_UNSPECIFIED;
32
44
  case 1:
33
- case "ROLE_TYPE_FORUM_SENTINEL":
34
- return RoleType.ROLE_TYPE_FORUM_SENTINEL;
45
+ case "ROLE_TYPE_CONTENT_SENTINEL":
46
+ return RoleType.ROLE_TYPE_CONTENT_SENTINEL;
35
47
  case 2:
36
48
  case "ROLE_TYPE_COLLECT_CURATOR":
37
49
  return RoleType.ROLE_TYPE_COLLECT_CURATOR;
@@ -48,8 +60,8 @@ function roleTypeToJSON(object) {
48
60
  switch (object) {
49
61
  case RoleType.ROLE_TYPE_UNSPECIFIED:
50
62
  return "ROLE_TYPE_UNSPECIFIED";
51
- case RoleType.ROLE_TYPE_FORUM_SENTINEL:
52
- return "ROLE_TYPE_FORUM_SENTINEL";
63
+ case RoleType.ROLE_TYPE_CONTENT_SENTINEL:
64
+ return "ROLE_TYPE_CONTENT_SENTINEL";
53
65
  case RoleType.ROLE_TYPE_COLLECT_CURATOR:
54
66
  return "ROLE_TYPE_COLLECT_CURATOR";
55
67
  case RoleType.ROLE_TYPE_FEDERATION_VERIFIER:
@@ -19,6 +19,7 @@ import { MemberReport, MemberReportAmino } from "./member_report";
19
19
  import { MemberWarning, MemberWarningAmino } from "./member_warning";
20
20
  import { GovActionAppeal, GovActionAppealAmino } from "./gov_action_appeal";
21
21
  import { BondedRole, BondedRoleAmino, BondedRoleConfig, BondedRoleConfigAmino } from "./bonded_role";
22
+ import { RoleActivity, RoleActivityAmino } from "./role_activity";
22
23
  import { BinaryReader, BinaryWriter } from "../../../binary";
23
24
  import { DeepPartial } from "../../../helpers";
24
25
  /**
@@ -93,6 +94,7 @@ export interface GenesisState {
93
94
  */
94
95
  bondedRoleList: BondedRole[];
95
96
  bondedRoleConfigList: BondedRoleConfig[];
97
+ roleActivityList: RoleActivity[];
96
98
  }
97
99
  export interface GenesisStateProtoMsg {
98
100
  typeUrl: "/sparkdream.rep.v1.GenesisState";
@@ -170,6 +172,7 @@ export interface GenesisStateAmino {
170
172
  */
171
173
  bonded_role_list?: BondedRoleAmino[];
172
174
  bonded_role_config_list?: BondedRoleConfigAmino[];
175
+ role_activity_list?: RoleActivityAmino[];
173
176
  }
174
177
  export interface GenesisStateAminoMsg {
175
178
  type: "/sparkdream.rep.v1.GenesisState";
@@ -23,6 +23,7 @@ const member_report_1 = require("./member_report");
23
23
  const member_warning_1 = require("./member_warning");
24
24
  const gov_action_appeal_1 = require("./gov_action_appeal");
25
25
  const bonded_role_1 = require("./bonded_role");
26
+ const role_activity_1 = require("./role_activity");
26
27
  const binary_1 = require("../../../binary");
27
28
  function createBaseGenesisState() {
28
29
  return {
@@ -63,7 +64,8 @@ function createBaseGenesisState() {
63
64
  govActionAppealList: [],
64
65
  govActionAppealCount: BigInt(0),
65
66
  bondedRoleList: [],
66
- bondedRoleConfigList: []
67
+ bondedRoleConfigList: [],
68
+ roleActivityList: []
67
69
  };
68
70
  }
69
71
  /**
@@ -189,6 +191,9 @@ exports.GenesisState = {
189
191
  for (const v of message.bondedRoleConfigList) {
190
192
  bonded_role_1.BondedRoleConfig.encode(v, writer.uint32(314).fork()).ldelim();
191
193
  }
194
+ for (const v of message.roleActivityList) {
195
+ role_activity_1.RoleActivity.encode(v, writer.uint32(322).fork()).ldelim();
196
+ }
192
197
  return writer;
193
198
  },
194
199
  decode(input, length) {
@@ -312,6 +317,9 @@ exports.GenesisState = {
312
317
  case 39:
313
318
  message.bondedRoleConfigList.push(bonded_role_1.BondedRoleConfig.decode(reader, reader.uint32()));
314
319
  break;
320
+ case 40:
321
+ message.roleActivityList.push(role_activity_1.RoleActivity.decode(reader, reader.uint32()));
322
+ break;
315
323
  default:
316
324
  reader.skipType(tag & 7);
317
325
  break;
@@ -359,6 +367,7 @@ exports.GenesisState = {
359
367
  message.govActionAppealCount = object.govActionAppealCount !== undefined && object.govActionAppealCount !== null ? BigInt(object.govActionAppealCount.toString()) : BigInt(0);
360
368
  message.bondedRoleList = object.bondedRoleList?.map(e => bonded_role_1.BondedRole.fromPartial(e)) || [];
361
369
  message.bondedRoleConfigList = object.bondedRoleConfigList?.map(e => bonded_role_1.BondedRoleConfig.fromPartial(e)) || [];
370
+ message.roleActivityList = object.roleActivityList?.map(e => role_activity_1.RoleActivity.fromPartial(e)) || [];
362
371
  return message;
363
372
  },
364
373
  fromAmino(object) {
@@ -427,6 +436,7 @@ exports.GenesisState = {
427
436
  }
428
437
  message.bondedRoleList = object.bonded_role_list?.map(e => bonded_role_1.BondedRole.fromAmino(e)) || [];
429
438
  message.bondedRoleConfigList = object.bonded_role_config_list?.map(e => bonded_role_1.BondedRoleConfig.fromAmino(e)) || [];
439
+ message.roleActivityList = object.role_activity_list?.map(e => role_activity_1.RoleActivity.fromAmino(e)) || [];
430
440
  return message;
431
441
  },
432
442
  toAmino(message) {
@@ -594,6 +604,12 @@ exports.GenesisState = {
594
604
  else {
595
605
  obj.bonded_role_config_list = message.bondedRoleConfigList;
596
606
  }
607
+ if (message.roleActivityList) {
608
+ obj.role_activity_list = message.roleActivityList.map(e => e ? role_activity_1.RoleActivity.toAmino(e) : undefined);
609
+ }
610
+ else {
611
+ obj.role_activity_list = message.roleActivityList;
612
+ }
597
613
  return obj;
598
614
  },
599
615
  fromAminoMsg(object) {
@@ -1123,9 +1123,7 @@ export interface QueryInvitationsByInviterRequestAminoMsg {
1123
1123
  * @see proto type: sparkdream.rep.v1.QueryInvitationsByInviterResponse
1124
1124
  */
1125
1125
  export interface QueryInvitationsByInviterResponse {
1126
- invitationId: bigint;
1127
- inviteeAddress: string;
1128
- status: bigint;
1126
+ invitation: Invitation[];
1129
1127
  pagination?: PageResponse;
1130
1128
  }
1131
1129
  export interface QueryInvitationsByInviterResponseProtoMsg {
@@ -1139,9 +1137,7 @@ export interface QueryInvitationsByInviterResponseProtoMsg {
1139
1137
  * @see proto type: sparkdream.rep.v1.QueryInvitationsByInviterResponse
1140
1138
  */
1141
1139
  export interface QueryInvitationsByInviterResponseAmino {
1142
- invitation_id?: string;
1143
- invitee_address?: string;
1144
- status?: string;
1140
+ invitation?: InvitationAmino[];
1145
1141
  pagination?: PageResponseAmino;
1146
1142
  }
1147
1143
  export interface QueryInvitationsByInviterResponseAminoMsg {