jr-common-micro 1.1.98 → 1.1.99

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.
@@ -15,10 +15,7 @@ export interface RateInfo {
15
15
  badge: string;
16
16
  badge_base: string;
17
17
  own_tasks: string;
18
- team_share: string;
19
- full_team: string;
20
- full_team_ready: number;
21
- full_team_size: number;
18
+ team_bonus: string;
22
19
  multiplier: string;
23
20
  cap: string;
24
21
  hourly: string;
@@ -50,23 +47,37 @@ export interface TeamMember {
50
47
  user_id: string;
51
48
  username: string;
52
49
  avatar_url: string;
53
- tasks_today: number;
54
- task_multiplier: string;
55
- contribution: string;
56
50
  mining: boolean;
57
- full_team_ready: boolean;
58
51
  active_from: string;
59
52
  active_until: string;
60
53
  nudge_available_at: string;
54
+ sessions_week: number;
55
+ easy_done: boolean;
56
+ refs_week: number;
57
+ }
58
+ export interface TeamWeek {
59
+ week_start: string;
60
+ week_end: string;
61
+ members_count: number;
62
+ eligible: boolean;
63
+ easy_sessions: number;
64
+ easy_bonus_each: string;
65
+ easy_done_count: number;
66
+ hard_leader_refs: number;
67
+ hard_leader_required: number;
68
+ hard_member_count: number;
69
+ hard_member_required: number;
70
+ hard_done: boolean;
71
+ hard_bonus: string;
72
+ bonus: string;
61
73
  }
62
74
  export interface TeamInfo {
63
75
  members: TeamMember[];
64
76
  size: number;
65
- locked: boolean;
66
- locked_until: string;
67
- share: string;
68
- full_team_bonus: string;
69
- full_team_min_tasks: number;
77
+ min_members: number;
78
+ week: TeamWeek | undefined;
79
+ current_bonus: string;
80
+ current_bonus_until: string;
70
81
  }
71
82
  export interface TaskInfo {
72
83
  id: string;
@@ -223,9 +234,6 @@ export interface ConfigResponse {
223
234
  badge_blue: string;
224
235
  badge_yellow: string;
225
236
  team_size: number;
226
- team_share: string;
227
- full_team_bonus: string;
228
- full_team_min_tasks: number;
229
237
  multiplier_cap: string;
230
238
  gift_jr: string;
231
239
  gift_sessions: number;
@@ -235,6 +243,14 @@ export interface ConfigResponse {
235
243
  claim_min: string;
236
244
  nudge_cooldown_days: number;
237
245
  base_rate: string;
246
+ referrer_gift_jr: string;
247
+ l2_gift_jr: string;
248
+ team_min_members: number;
249
+ team_easy_sessions: number;
250
+ team_easy_bonus: string;
251
+ team_hard_leader_refs: number;
252
+ team_hard_member_refs: number;
253
+ team_hard_bonus: string;
238
254
  }
239
255
  export interface AdminOverviewRequest {
240
256
  period: string;
@@ -24,10 +24,7 @@ export declare class RateInfo extends Message<RateInfo> {
24
24
  badge: string;
25
25
  badgeBase: string;
26
26
  ownTasks: string;
27
- teamShare: string;
28
- fullTeam: string;
29
- fullTeamReady: number;
30
- fullTeamSize: number;
27
+ teamBonus: string;
31
28
  multiplier: string;
32
29
  cap: string;
33
30
  hourly: string;
@@ -83,14 +80,13 @@ export declare class TeamMember extends Message<TeamMember> {
83
80
  userId: string;
84
81
  username: string;
85
82
  avatarUrl: string;
86
- tasksToday: number;
87
- taskMultiplier: string;
88
- contribution: string;
89
83
  mining: boolean;
90
- fullTeamReady: boolean;
91
84
  activeFrom: string;
92
85
  activeUntil: string;
93
86
  nudgeAvailableAt: string;
87
+ sessionsWeek: number;
88
+ easyDone: boolean;
89
+ refsWeek: number;
94
90
  constructor(data?: PartialMessage<TeamMember>);
95
91
  static readonly runtime: typeof proto3;
96
92
  static readonly typeName = "micro.v1.mining.TeamMember";
@@ -100,14 +96,37 @@ export declare class TeamMember extends Message<TeamMember> {
100
96
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TeamMember;
101
97
  static equals(a: TeamMember | PlainMessage<TeamMember> | undefined, b: TeamMember | PlainMessage<TeamMember> | undefined): boolean;
102
98
  }
99
+ export declare class TeamWeek extends Message<TeamWeek> {
100
+ weekStart: string;
101
+ weekEnd: string;
102
+ membersCount: number;
103
+ eligible: boolean;
104
+ easySessions: number;
105
+ easyBonusEach: string;
106
+ easyDoneCount: number;
107
+ hardLeaderRefs: number;
108
+ hardLeaderRequired: number;
109
+ hardMemberCount: number;
110
+ hardMemberRequired: number;
111
+ hardDone: boolean;
112
+ hardBonus: string;
113
+ bonus: string;
114
+ constructor(data?: PartialMessage<TeamWeek>);
115
+ static readonly runtime: typeof proto3;
116
+ static readonly typeName = "micro.v1.mining.TeamWeek";
117
+ static readonly fields: FieldList;
118
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TeamWeek;
119
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TeamWeek;
120
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TeamWeek;
121
+ static equals(a: TeamWeek | PlainMessage<TeamWeek> | undefined, b: TeamWeek | PlainMessage<TeamWeek> | undefined): boolean;
122
+ }
103
123
  export declare class TeamInfo extends Message<TeamInfo> {
104
124
  members: TeamMember[];
105
125
  size: number;
106
- locked: boolean;
107
- lockedUntil: string;
108
- share: string;
109
- fullTeamBonus: string;
110
- fullTeamMinTasks: number;
126
+ minMembers: number;
127
+ week?: TeamWeek;
128
+ currentBonus: string;
129
+ currentBonusUntil: string;
111
130
  constructor(data?: PartialMessage<TeamInfo>);
112
131
  static readonly runtime: typeof proto3;
113
132
  static readonly typeName = "micro.v1.mining.TeamInfo";
@@ -456,9 +475,6 @@ export declare class ConfigResponse extends Message<ConfigResponse> {
456
475
  badgeBlue: string;
457
476
  badgeYellow: string;
458
477
  teamSize: number;
459
- teamShare: string;
460
- fullTeamBonus: string;
461
- fullTeamMinTasks: number;
462
478
  multiplierCap: string;
463
479
  giftJr: string;
464
480
  giftSessions: number;
@@ -468,6 +484,14 @@ export declare class ConfigResponse extends Message<ConfigResponse> {
468
484
  claimMin: string;
469
485
  nudgeCooldownDays: number;
470
486
  baseRate: string;
487
+ referrerGiftJr: string;
488
+ l2GiftJr: string;
489
+ teamMinMembers: number;
490
+ teamEasySessions: number;
491
+ teamEasyBonus: string;
492
+ teamHardLeaderRefs: number;
493
+ teamHardMemberRefs: number;
494
+ teamHardBonus: string;
471
495
  constructor(data?: PartialMessage<ConfigResponse>);
472
496
  static readonly runtime: typeof proto3;
473
497
  static readonly typeName = "micro.v1.mining.ConfigResponse";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SetParameterRequest = exports.ParametersResponse = exports.ParameterItem = exports.AdminOverviewResponse = exports.AdminTopReferrer = exports.AdminTaskStat = exports.AdminSeries = exports.AdminSeriesPoint = exports.AdminMetric = exports.AdminOverviewRequest = exports.ConfigResponse = exports.ResolveCodeResponse = exports.ResolveCodeRequest = exports.EnrollResponse = exports.EnrollRequest = exports.UpdateSettingsRequest = exports.HistoryResponse = exports.HistoryDay = exports.HistoryItem = exports.HistoryRequest = exports.TeamResponse = exports.SetTeamRequest = exports.ClaimResponse = exports.ReferralListResponse = exports.ReferralListRequest = exports.ReferralItem = exports.TaskEventResponse = exports.TaskEventRequest = exports.TasksResponse = exports.MiningMeResponse = exports.MiningState = exports.MiningSettings = exports.TasksSummary = exports.TaskInfo = exports.TeamInfo = exports.TeamMember = exports.ReferralInfo = exports.HalvingInfo = exports.RateInfo = exports.SessionInfo = void 0;
3
+ exports.SetParameterRequest = exports.ParametersResponse = exports.ParameterItem = exports.AdminOverviewResponse = exports.AdminTopReferrer = exports.AdminTaskStat = exports.AdminSeries = exports.AdminSeriesPoint = exports.AdminMetric = exports.AdminOverviewRequest = exports.ConfigResponse = exports.ResolveCodeResponse = exports.ResolveCodeRequest = exports.EnrollResponse = exports.EnrollRequest = exports.UpdateSettingsRequest = exports.HistoryResponse = exports.HistoryDay = exports.HistoryItem = exports.HistoryRequest = exports.TeamResponse = exports.SetTeamRequest = exports.ClaimResponse = exports.ReferralListResponse = exports.ReferralListRequest = exports.ReferralItem = exports.TaskEventResponse = exports.TaskEventRequest = exports.TasksResponse = exports.MiningMeResponse = exports.MiningState = exports.MiningSettings = exports.TasksSummary = exports.TaskInfo = exports.TeamInfo = exports.TeamWeek = exports.TeamMember = exports.ReferralInfo = exports.HalvingInfo = exports.RateInfo = exports.SessionInfo = void 0;
4
4
  const protobuf_1 = require("@bufbuild/protobuf");
5
5
  const general_pb_js_1 = require("../general_pb.js");
6
6
  class SessionInfo extends protobuf_1.Message {
@@ -47,10 +47,7 @@ class RateInfo extends protobuf_1.Message {
47
47
  badge = "";
48
48
  badgeBase = "";
49
49
  ownTasks = "";
50
- teamShare = "";
51
- fullTeam = "";
52
- fullTeamReady = 0;
53
- fullTeamSize = 0;
50
+ teamBonus = "";
54
51
  multiplier = "";
55
52
  cap = "";
56
53
  hourly = "";
@@ -65,10 +62,7 @@ class RateInfo extends protobuf_1.Message {
65
62
  { no: 2, name: "badge", kind: "scalar", T: 9 },
66
63
  { no: 3, name: "badge_base", kind: "scalar", T: 9 },
67
64
  { no: 4, name: "own_tasks", kind: "scalar", T: 9 },
68
- { no: 5, name: "team_share", kind: "scalar", T: 9 },
69
- { no: 6, name: "full_team", kind: "scalar", T: 9 },
70
- { no: 7, name: "full_team_ready", kind: "scalar", T: 5 },
71
- { no: 8, name: "full_team_size", kind: "scalar", T: 5 },
65
+ { no: 5, name: "team_bonus", kind: "scalar", T: 9 },
72
66
  { no: 9, name: "multiplier", kind: "scalar", T: 9 },
73
67
  { no: 10, name: "cap", kind: "scalar", T: 9 },
74
68
  { no: 11, name: "hourly", kind: "scalar", T: 9 },
@@ -175,14 +169,13 @@ class TeamMember extends protobuf_1.Message {
175
169
  userId = "";
176
170
  username = "";
177
171
  avatarUrl = "";
178
- tasksToday = 0;
179
- taskMultiplier = "";
180
- contribution = "";
181
172
  mining = false;
182
- fullTeamReady = false;
183
173
  activeFrom = "";
184
174
  activeUntil = "";
185
175
  nudgeAvailableAt = "";
176
+ sessionsWeek = 0;
177
+ easyDone = false;
178
+ refsWeek = 0;
186
179
  constructor(data) {
187
180
  super();
188
181
  protobuf_1.proto3.util.initPartial(data, this);
@@ -193,14 +186,13 @@ class TeamMember extends protobuf_1.Message {
193
186
  { no: 1, name: "user_id", kind: "scalar", T: 9 },
194
187
  { no: 2, name: "username", kind: "scalar", T: 9 },
195
188
  { no: 3, name: "avatar_url", kind: "scalar", T: 9 },
196
- { no: 4, name: "tasks_today", kind: "scalar", T: 5 },
197
- { no: 5, name: "task_multiplier", kind: "scalar", T: 9 },
198
- { no: 6, name: "contribution", kind: "scalar", T: 9 },
199
189
  { no: 7, name: "mining", kind: "scalar", T: 8 },
200
- { no: 8, name: "full_team_ready", kind: "scalar", T: 8 },
201
190
  { no: 9, name: "active_from", kind: "scalar", T: 9 },
202
191
  { no: 10, name: "active_until", kind: "scalar", T: 9 },
203
192
  { no: 11, name: "nudge_available_at", kind: "scalar", T: 9 },
193
+ { no: 12, name: "sessions_week", kind: "scalar", T: 5 },
194
+ { no: 13, name: "easy_done", kind: "scalar", T: 8 },
195
+ { no: 14, name: "refs_week", kind: "scalar", T: 5 },
204
196
  ]);
205
197
  static fromBinary(bytes, options) {
206
198
  return new TeamMember().fromBinary(bytes, options);
@@ -216,14 +208,64 @@ class TeamMember extends protobuf_1.Message {
216
208
  }
217
209
  }
218
210
  exports.TeamMember = TeamMember;
211
+ class TeamWeek extends protobuf_1.Message {
212
+ weekStart = "";
213
+ weekEnd = "";
214
+ membersCount = 0;
215
+ eligible = false;
216
+ easySessions = 0;
217
+ easyBonusEach = "";
218
+ easyDoneCount = 0;
219
+ hardLeaderRefs = 0;
220
+ hardLeaderRequired = 0;
221
+ hardMemberCount = 0;
222
+ hardMemberRequired = 0;
223
+ hardDone = false;
224
+ hardBonus = "";
225
+ bonus = "";
226
+ constructor(data) {
227
+ super();
228
+ protobuf_1.proto3.util.initPartial(data, this);
229
+ }
230
+ static runtime = protobuf_1.proto3;
231
+ static typeName = "micro.v1.mining.TeamWeek";
232
+ static fields = protobuf_1.proto3.util.newFieldList(() => [
233
+ { no: 1, name: "week_start", kind: "scalar", T: 9 },
234
+ { no: 2, name: "week_end", kind: "scalar", T: 9 },
235
+ { no: 3, name: "members_count", kind: "scalar", T: 5 },
236
+ { no: 4, name: "eligible", kind: "scalar", T: 8 },
237
+ { no: 5, name: "easy_sessions", kind: "scalar", T: 5 },
238
+ { no: 6, name: "easy_bonus_each", kind: "scalar", T: 9 },
239
+ { no: 7, name: "easy_done_count", kind: "scalar", T: 5 },
240
+ { no: 8, name: "hard_leader_refs", kind: "scalar", T: 5 },
241
+ { no: 9, name: "hard_leader_required", kind: "scalar", T: 5 },
242
+ { no: 10, name: "hard_member_count", kind: "scalar", T: 5 },
243
+ { no: 11, name: "hard_member_required", kind: "scalar", T: 5 },
244
+ { no: 12, name: "hard_done", kind: "scalar", T: 8 },
245
+ { no: 13, name: "hard_bonus", kind: "scalar", T: 9 },
246
+ { no: 14, name: "bonus", kind: "scalar", T: 9 },
247
+ ]);
248
+ static fromBinary(bytes, options) {
249
+ return new TeamWeek().fromBinary(bytes, options);
250
+ }
251
+ static fromJson(jsonValue, options) {
252
+ return new TeamWeek().fromJson(jsonValue, options);
253
+ }
254
+ static fromJsonString(jsonString, options) {
255
+ return new TeamWeek().fromJsonString(jsonString, options);
256
+ }
257
+ static equals(a, b) {
258
+ return protobuf_1.proto3.util.equals(TeamWeek, a, b);
259
+ }
260
+ }
261
+ exports.TeamWeek = TeamWeek;
219
262
  class TeamInfo extends protobuf_1.Message {
220
263
  members = [];
221
264
  size = 0;
222
- locked = false;
223
- lockedUntil = "";
224
- share = "";
225
- fullTeamBonus = "";
226
- fullTeamMinTasks = 0;
265
+ minMembers = 0;
266
+ week;
267
+ currentBonus = "";
268
+ currentBonusUntil = "";
227
269
  constructor(data) {
228
270
  super();
229
271
  protobuf_1.proto3.util.initPartial(data, this);
@@ -233,11 +275,10 @@ class TeamInfo extends protobuf_1.Message {
233
275
  static fields = protobuf_1.proto3.util.newFieldList(() => [
234
276
  { no: 1, name: "members", kind: "message", T: TeamMember, repeated: true },
235
277
  { no: 2, name: "size", kind: "scalar", T: 5 },
236
- { no: 3, name: "locked", kind: "scalar", T: 8 },
237
- { no: 4, name: "locked_until", kind: "scalar", T: 9 },
238
- { no: 5, name: "share", kind: "scalar", T: 9 },
239
- { no: 6, name: "full_team_bonus", kind: "scalar", T: 9 },
240
- { no: 7, name: "full_team_min_tasks", kind: "scalar", T: 5 },
278
+ { no: 8, name: "min_members", kind: "scalar", T: 5 },
279
+ { no: 9, name: "week", kind: "message", T: TeamWeek },
280
+ { no: 10, name: "current_bonus", kind: "scalar", T: 9 },
281
+ { no: 11, name: "current_bonus_until", kind: "scalar", T: 9 },
241
282
  ]);
242
283
  static fromBinary(bytes, options) {
243
284
  return new TeamInfo().fromBinary(bytes, options);
@@ -993,9 +1034,6 @@ class ConfigResponse extends protobuf_1.Message {
993
1034
  badgeBlue = "";
994
1035
  badgeYellow = "";
995
1036
  teamSize = 0;
996
- teamShare = "";
997
- fullTeamBonus = "";
998
- fullTeamMinTasks = 0;
999
1037
  multiplierCap = "";
1000
1038
  giftJr = "";
1001
1039
  giftSessions = 0;
@@ -1005,6 +1043,14 @@ class ConfigResponse extends protobuf_1.Message {
1005
1043
  claimMin = "";
1006
1044
  nudgeCooldownDays = 0;
1007
1045
  baseRate = "";
1046
+ referrerGiftJr = "";
1047
+ l2GiftJr = "";
1048
+ teamMinMembers = 0;
1049
+ teamEasySessions = 0;
1050
+ teamEasyBonus = "";
1051
+ teamHardLeaderRefs = 0;
1052
+ teamHardMemberRefs = 0;
1053
+ teamHardBonus = "";
1008
1054
  constructor(data) {
1009
1055
  super();
1010
1056
  protobuf_1.proto3.util.initPartial(data, this);
@@ -1018,9 +1064,6 @@ class ConfigResponse extends protobuf_1.Message {
1018
1064
  { no: 4, name: "badge_blue", kind: "scalar", T: 9 },
1019
1065
  { no: 5, name: "badge_yellow", kind: "scalar", T: 9 },
1020
1066
  { no: 6, name: "team_size", kind: "scalar", T: 5 },
1021
- { no: 7, name: "team_share", kind: "scalar", T: 9 },
1022
- { no: 8, name: "full_team_bonus", kind: "scalar", T: 9 },
1023
- { no: 9, name: "full_team_min_tasks", kind: "scalar", T: 5 },
1024
1067
  { no: 10, name: "multiplier_cap", kind: "scalar", T: 9 },
1025
1068
  { no: 11, name: "gift_jr", kind: "scalar", T: 9 },
1026
1069
  { no: 12, name: "gift_sessions", kind: "scalar", T: 5 },
@@ -1030,6 +1073,14 @@ class ConfigResponse extends protobuf_1.Message {
1030
1073
  { no: 16, name: "claim_min", kind: "scalar", T: 9 },
1031
1074
  { no: 17, name: "nudge_cooldown_days", kind: "scalar", T: 5 },
1032
1075
  { no: 18, name: "base_rate", kind: "scalar", T: 9 },
1076
+ { no: 19, name: "referrer_gift_jr", kind: "scalar", T: 9 },
1077
+ { no: 20, name: "l2_gift_jr", kind: "scalar", T: 9 },
1078
+ { no: 21, name: "team_min_members", kind: "scalar", T: 5 },
1079
+ { no: 22, name: "team_easy_sessions", kind: "scalar", T: 5 },
1080
+ { no: 23, name: "team_easy_bonus", kind: "scalar", T: 9 },
1081
+ { no: 24, name: "team_hard_leader_refs", kind: "scalar", T: 5 },
1082
+ { no: 25, name: "team_hard_member_refs", kind: "scalar", T: 5 },
1083
+ { no: 26, name: "team_hard_bonus", kind: "scalar", T: 9 },
1033
1084
  ]);
1034
1085
  static fromBinary(bytes, options) {
1035
1086
  return new ConfigResponse().fromBinary(bytes, options);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jr-common-micro",
3
- "version": "1.1.98",
3
+ "version": "1.1.99",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "private": false,
@@ -26,18 +26,18 @@ message SessionInfo {
26
26
  }
27
27
 
28
28
  // How the hourly rate comes together: hourly = base × multiplier,
29
- // multiplier = min(cap, badge + own_tasks + team_share + full_team).
29
+ // multiplier = min(cap, badge_base × (1 + own_tasks + team_bonus)).
30
+ // The badge multiplies everything; tasks and the weekly team bonus are
31
+ // additive layers on top of 1.
30
32
  message RateInfo {
31
33
  string base = 1;
32
34
  // standard | blue | yellow
33
35
  string badge = 2;
34
36
  string badge_base = 3;
35
37
  string own_tasks = 4;
36
- string team_share = 5;
37
- string full_team = 6;
38
- // Team members that reached the full-team task threshold today.
39
- int32 full_team_ready = 7;
40
- int32 full_team_size = 8;
38
+ // This week's team bonus (earned last week; 0 when none).
39
+ string team_bonus = 5;
40
+ reserved 6 to 8;
41
41
  string multiplier = 9;
42
42
  string cap = 10;
43
43
  string hourly = 11;
@@ -75,32 +75,62 @@ message ReferralInfo {
75
75
  string referred_by_username = 15;
76
76
  }
77
77
 
78
+ // A team member and what they did for the week in progress. Sessions and
79
+ // referrals count from the moment the member joined the team.
78
80
  message TeamMember {
79
81
  string user_id = 1;
80
82
  string username = 2;
81
83
  string avatar_url = 3;
82
- // Tasks done today and the multiplier they add to the owner.
83
- int32 tasks_today = 4;
84
- string task_multiplier = 5;
85
- string contribution = 6;
84
+ reserved 4 to 6, 8;
86
85
  bool mining = 7;
87
- bool full_team_ready = 8;
88
- // When the member becomes / stops being effective (team lock).
86
+ // When the member joined / left the team.
89
87
  string active_from = 9;
90
88
  string active_until = 10;
91
89
  // Nudge state: when the owner may nudge this member again ('' = now).
92
90
  string nudge_available_at = 11;
91
+ // Sessions completed this week (easy task: >= easy_sessions).
92
+ int32 sessions_week = 12;
93
+ bool easy_done = 13;
94
+ // Referrals of this member that activated this week (hard task: >= 1).
95
+ int32 refs_week = 14;
96
+ }
97
+
98
+ // One week of the team task: Monday 00:00 to the next Monday 00:00
99
+ // (Europe/Istanbul). What was earned in a week applies the week after,
100
+ // to the owner only.
101
+ message TeamWeek {
102
+ string week_start = 1;
103
+ string week_end = 2;
104
+ // Members in the roster (the week counts only from min_members on).
105
+ int32 members_count = 3;
106
+ bool eligible = 4;
107
+ // Easy task: each member with >= easy_sessions completed sessions adds
108
+ // easy_bonus_each to next week's layer.
109
+ int32 easy_sessions = 5;
110
+ string easy_bonus_each = 6;
111
+ int32 easy_done_count = 7;
112
+ // Hard task: the owner brings >= hard_leader_required new referrals AND
113
+ // >= hard_member_required distinct members bring >= 1 each.
114
+ int32 hard_leader_refs = 8;
115
+ int32 hard_leader_required = 9;
116
+ int32 hard_member_count = 10;
117
+ int32 hard_member_required = 11;
118
+ bool hard_done = 12;
119
+ string hard_bonus = 13;
120
+ // The layer this week earns for the next one (so far, while running).
121
+ string bonus = 14;
93
122
  }
94
123
 
95
124
  message TeamInfo {
96
125
  repeated TeamMember members = 1;
97
126
  int32 size = 2;
98
- // The team is locked while a session runs; changes apply at this time.
99
- bool locked = 3;
100
- string locked_until = 4;
101
- string share = 5;
102
- string full_team_bonus = 6;
103
- int32 full_team_min_tasks = 7;
127
+ reserved 3 to 7;
128
+ int32 min_members = 8;
129
+ // The week in progress.
130
+ TeamWeek week = 9;
131
+ // The bonus applied to the owner's rate this week (earned last week).
132
+ string current_bonus = 10;
133
+ string current_bonus_until = 11;
104
134
  }
105
135
 
106
136
  message TaskInfo {
@@ -311,10 +341,9 @@ message ConfigResponse {
311
341
  string badge_blue = 4;
312
342
  string badge_yellow = 5;
313
343
  int32 team_size = 6;
314
- string team_share = 7;
315
- string full_team_bonus = 8;
316
- int32 full_team_min_tasks = 9;
344
+ reserved 7 to 9;
317
345
  string multiplier_cap = 10;
346
+ // The invitee's gift on activation.
318
347
  string gift_jr = 11;
319
348
  int32 gift_sessions = 12;
320
349
  int32 referral_levels = 13;
@@ -324,6 +353,16 @@ message ConfigResponse {
324
353
  int32 nudge_cooldown_days = 17;
325
354
  // Current base rate after halvings, JR per hour.
326
355
  string base_rate = 18;
356
+ // The referrer's gift after gift_sessions, and the referrer's referrer's.
357
+ string referrer_gift_jr = 19;
358
+ string l2_gift_jr = 20;
359
+ // Weekly team task.
360
+ int32 team_min_members = 21;
361
+ int32 team_easy_sessions = 22;
362
+ string team_easy_bonus = 23;
363
+ int32 team_hard_leader_refs = 24;
364
+ int32 team_hard_member_refs = 25;
365
+ string team_hard_bonus = 26;
327
366
  }
328
367
 
329
368
  message AdminOverviewRequest {