@xcpcio/core 0.52.0 → 0.53.0
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.
- package/dist/index.cjs +2008 -1683
- package/dist/index.d.cts +519 -0
- package/dist/index.d.mts +519 -0
- package/dist/index.d.ts +127 -127
- package/dist/index.mjs +1990 -1663
- package/package.json +21 -21
- package/src/balloon.ts +1 -1
- package/src/battle-of-giants.ts +3 -2
- package/src/contest-index.ts +2 -3
- package/src/contest.ts +6 -6
- package/src/export/cf.ts +2 -2
- package/src/export/general-excel.ts +5 -3
- package/src/export/icpc-standings-csv.ts +4 -3
- package/src/index.ts +6 -7
- package/src/problem.ts +3 -3
- package/src/rank.ts +12 -12
- package/src/rating/index.ts +1 -1
- package/src/rating/rating-history.ts +3 -3
- package/src/rating/rating.ts +2 -3
- package/src/resolver-vue.ts +4 -3
- package/src/resolver.ts +7 -6
- package/src/team.ts +6 -6
- package/src/utils/dayjs.ts +4 -4
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
import { TimeUnit, SubmissionReaction, SubmissionStatus, Submission as Submission$1, Submissions as Submissions$1, BalloonColor, Problem as Problem$1, Problems as Problems$1, CalculationOfPenalty, Image, Team as Team$1, Teams as Teams$1, Lang, StatusTimeDisplay, MedalPreset, BannerMode, ContestState, Contest as Contest$1, ContestIndex as ContestIndex$1, IPerson, IRatingHistory, IRatingUser, IRating } from '@xcpcio/types';
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
export { default as dayjs } from 'dayjs';
|
|
4
|
+
import * as XLSX from 'xlsx-js-style';
|
|
5
|
+
|
|
6
|
+
declare enum MedalType {
|
|
7
|
+
UNKNOWN = "Unknown",
|
|
8
|
+
GOLD = "Gold",
|
|
9
|
+
SILVER = "Silver",
|
|
10
|
+
BRONZE = "Bronze",
|
|
11
|
+
HONORABLE = "Honorable"
|
|
12
|
+
}
|
|
13
|
+
declare class Award {
|
|
14
|
+
medalType: MedalType;
|
|
15
|
+
minRank: number;
|
|
16
|
+
maxRank: number;
|
|
17
|
+
constructor();
|
|
18
|
+
}
|
|
19
|
+
declare function isValidMedalType(medal: MedalType): boolean;
|
|
20
|
+
type Awards = Map<string, Award[]>;
|
|
21
|
+
|
|
22
|
+
declare class Submission {
|
|
23
|
+
id: string;
|
|
24
|
+
teamId: string;
|
|
25
|
+
problemId: string;
|
|
26
|
+
timestamp: number;
|
|
27
|
+
timestampUnit: TimeUnit;
|
|
28
|
+
time?: number;
|
|
29
|
+
language?: string;
|
|
30
|
+
reaction?: SubmissionReaction;
|
|
31
|
+
status: SubmissionStatus;
|
|
32
|
+
isIgnore: boolean;
|
|
33
|
+
isSolved: boolean;
|
|
34
|
+
isFirstSolved: boolean;
|
|
35
|
+
constructor();
|
|
36
|
+
isAccepted(): boolean;
|
|
37
|
+
isRejected(): boolean;
|
|
38
|
+
isPending(): boolean;
|
|
39
|
+
isNotCalculatedPenaltyStatus(): boolean;
|
|
40
|
+
get timestampToMinute(): number;
|
|
41
|
+
get timestampToSecond(): number;
|
|
42
|
+
get timestampDisplayFormatWithSecond(): string;
|
|
43
|
+
get timestampDisplayFormatWithMilliSecond(): string;
|
|
44
|
+
static compare(lhs: Submission, rhs: Submission): number;
|
|
45
|
+
}
|
|
46
|
+
type Submissions = Array<Submission>;
|
|
47
|
+
declare function createSubmission(submissionJSON: Submission$1): Submission;
|
|
48
|
+
declare function createSubmissions(submissionsJSON: Submissions$1): Submissions;
|
|
49
|
+
|
|
50
|
+
declare class ProblemStatistics {
|
|
51
|
+
acceptedNum: number;
|
|
52
|
+
rejectedNum: number;
|
|
53
|
+
pendingNum: number;
|
|
54
|
+
submittedNum: number;
|
|
55
|
+
attemptedNum: number;
|
|
56
|
+
ignoreNum: number;
|
|
57
|
+
firstSolveSubmissions: Submissions;
|
|
58
|
+
lastSolveSubmissions: Submissions;
|
|
59
|
+
se: number;
|
|
60
|
+
constructor();
|
|
61
|
+
reset(): void;
|
|
62
|
+
get dirt(): number;
|
|
63
|
+
calcSE(totalTeams: number): number;
|
|
64
|
+
}
|
|
65
|
+
declare class Problem {
|
|
66
|
+
id: string;
|
|
67
|
+
label: string;
|
|
68
|
+
name: string;
|
|
69
|
+
timeLimit?: string;
|
|
70
|
+
memoryLimit?: string;
|
|
71
|
+
balloonColor: BalloonColor;
|
|
72
|
+
statistics: ProblemStatistics;
|
|
73
|
+
constructor();
|
|
74
|
+
}
|
|
75
|
+
type Problems = Array<Problem>;
|
|
76
|
+
declare function createProblem(problemJSON: Problem$1): Problem;
|
|
77
|
+
declare function createProblems(problemsJSON: Problems$1): Problems;
|
|
78
|
+
declare function createProblemsByProblemIds(problemIds: string[], balloonColors?: BalloonColor[]): Problems;
|
|
79
|
+
declare class TeamProblemStatistics {
|
|
80
|
+
isFirstSolved: boolean;
|
|
81
|
+
isSolved: boolean;
|
|
82
|
+
solvedTimestamp: number;
|
|
83
|
+
isSubmitted: boolean;
|
|
84
|
+
lastSubmitTimestamp: number;
|
|
85
|
+
failedCount: number;
|
|
86
|
+
pendingCount: number;
|
|
87
|
+
ignoreCount: number;
|
|
88
|
+
totalCount: number;
|
|
89
|
+
submissions: Submissions;
|
|
90
|
+
problem: Problem;
|
|
91
|
+
contestPenalty: number;
|
|
92
|
+
constructor(options?: {
|
|
93
|
+
teamProblemStatistics?: TeamProblemStatistics;
|
|
94
|
+
});
|
|
95
|
+
get isAccepted(): boolean;
|
|
96
|
+
get isWrongAnswer(): boolean;
|
|
97
|
+
get isPending(): boolean;
|
|
98
|
+
get isUnSubmitted(): boolean;
|
|
99
|
+
get solvedTimestampToMinute(): number;
|
|
100
|
+
get penalty(): number;
|
|
101
|
+
get penaltyToMinute(): number;
|
|
102
|
+
get penaltyInSecond(): number;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
declare class ContestOptions {
|
|
106
|
+
calculationOfPenalty: CalculationOfPenalty;
|
|
107
|
+
submissionTimestampUnit: TimeUnit;
|
|
108
|
+
submissionHasTimeField: boolean;
|
|
109
|
+
submissionHasLanguageField: boolean;
|
|
110
|
+
submissionEnableActionField: boolean;
|
|
111
|
+
constructor();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
declare class PlaceChartPointData {
|
|
115
|
+
timePoint: number;
|
|
116
|
+
rank: number;
|
|
117
|
+
lastSolvedProblem: Problem | null;
|
|
118
|
+
constructor();
|
|
119
|
+
}
|
|
120
|
+
declare class Team {
|
|
121
|
+
id: string;
|
|
122
|
+
name: string;
|
|
123
|
+
organization: string;
|
|
124
|
+
badge?: Image;
|
|
125
|
+
group: Array<string>;
|
|
126
|
+
tag: Array<string>;
|
|
127
|
+
coach?: string | Array<string>;
|
|
128
|
+
members?: string | Array<string>;
|
|
129
|
+
rank: number;
|
|
130
|
+
originalRank: number;
|
|
131
|
+
organizationRank: number;
|
|
132
|
+
solvedProblemNum: number;
|
|
133
|
+
attemptedProblemNum: number;
|
|
134
|
+
lastSolvedProblem: Problem | null;
|
|
135
|
+
lastSolvedProblemStatistics: TeamProblemStatistics | null;
|
|
136
|
+
penalty: number;
|
|
137
|
+
problemStatistics: Array<TeamProblemStatistics>;
|
|
138
|
+
problemStatisticsMap: Map<string, TeamProblemStatistics>;
|
|
139
|
+
submissions: Submissions;
|
|
140
|
+
placeChartPoints: Array<PlaceChartPointData>;
|
|
141
|
+
awards: MedalType[];
|
|
142
|
+
location?: string;
|
|
143
|
+
icpcID?: string;
|
|
144
|
+
se: number;
|
|
145
|
+
constructor();
|
|
146
|
+
reset(): void;
|
|
147
|
+
get penaltyToMinute(): number;
|
|
148
|
+
get isUnofficial(): boolean;
|
|
149
|
+
get isGirl(): boolean;
|
|
150
|
+
get membersToArray(): string[];
|
|
151
|
+
get membersToString(): string | undefined;
|
|
152
|
+
get isEffectiveTeam(): boolean;
|
|
153
|
+
get dirt(): number;
|
|
154
|
+
calcSE(totalTeams: number): number;
|
|
155
|
+
calcSolvedData(options: ContestOptions): void;
|
|
156
|
+
calcAwards(awards?: Award[]): void;
|
|
157
|
+
isEqualRank(otherTeam: Team): boolean;
|
|
158
|
+
postProcessPlaceChartPoints(): void;
|
|
159
|
+
static compare(lhs: Team, rhs: Team): number;
|
|
160
|
+
}
|
|
161
|
+
type Teams = Array<Team>;
|
|
162
|
+
declare function createTeam(teamJSON: Team$1): Team;
|
|
163
|
+
declare function createTeams(teamsJSON: Teams$1): Teams;
|
|
164
|
+
|
|
165
|
+
declare class Balloon {
|
|
166
|
+
problem: Problem;
|
|
167
|
+
team: Team;
|
|
168
|
+
submission: Submission;
|
|
169
|
+
constructor();
|
|
170
|
+
get key(): string;
|
|
171
|
+
static compare(lhs: Balloon, rhs: Balloon): number;
|
|
172
|
+
}
|
|
173
|
+
type Balloons = Array<Balloon>;
|
|
174
|
+
|
|
175
|
+
interface SelectOptionItem {
|
|
176
|
+
value: string;
|
|
177
|
+
text: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
declare enum GiantsType {
|
|
181
|
+
BLUE = 0,
|
|
182
|
+
RED = 1
|
|
183
|
+
}
|
|
184
|
+
declare class Giants {
|
|
185
|
+
type: GiantsType;
|
|
186
|
+
name: string;
|
|
187
|
+
filterOrganizations: Array<SelectOptionItem>;
|
|
188
|
+
filterOrganizationMap: Map<string, SelectOptionItem>;
|
|
189
|
+
filterTeams: Array<SelectOptionItem>;
|
|
190
|
+
filterTeamMap: Map<string, SelectOptionItem>;
|
|
191
|
+
teams: Array<Team>;
|
|
192
|
+
constructor(type?: GiantsType);
|
|
193
|
+
setFilterOrganizations(filterOrganizations: Array<SelectOptionItem>): void;
|
|
194
|
+
setFilterTeams(filterTeams: Array<SelectOptionItem>): void;
|
|
195
|
+
refreshName(): string;
|
|
196
|
+
get totalSolvedProblemNum(): number;
|
|
197
|
+
get totalPenalty(): number;
|
|
198
|
+
get totalPenaltyToString(): string;
|
|
199
|
+
toJSON(): {
|
|
200
|
+
type: GiantsType;
|
|
201
|
+
name: string;
|
|
202
|
+
filterOrganizations: SelectOptionItem[];
|
|
203
|
+
filterTeams: SelectOptionItem[];
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
declare class BattleOfGiants {
|
|
207
|
+
enable: boolean;
|
|
208
|
+
topX: number;
|
|
209
|
+
equalTeams: boolean;
|
|
210
|
+
persist: boolean;
|
|
211
|
+
blueTeam: Giants;
|
|
212
|
+
redTeam: Giants;
|
|
213
|
+
constructor();
|
|
214
|
+
ToBase64(): string;
|
|
215
|
+
FromBase64(base64: string): void;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
declare class Group {
|
|
219
|
+
names: Map<Lang, string>;
|
|
220
|
+
defaultLang: Lang;
|
|
221
|
+
isDefault: boolean;
|
|
222
|
+
constructor();
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
declare function calcDirt(attemptedNum: number, solvedNum: number): number;
|
|
226
|
+
|
|
227
|
+
declare function getWhiteOrBlackColorV1(background: string): "#000" | "#fff";
|
|
228
|
+
declare function getWhiteOrBlackColor(background: string): "#000" | "#fff";
|
|
229
|
+
|
|
230
|
+
declare function createDayJS(time?: Date | string | number | undefined): dayjs.Dayjs;
|
|
231
|
+
declare function getTimestamp(time: number | dayjs.Dayjs): number;
|
|
232
|
+
declare function getTimeDiff(seconds: number): string;
|
|
233
|
+
|
|
234
|
+
declare class Contest {
|
|
235
|
+
id: string;
|
|
236
|
+
name: string;
|
|
237
|
+
startTime: dayjs.Dayjs;
|
|
238
|
+
endTime: dayjs.Dayjs;
|
|
239
|
+
freezeTime: dayjs.Dayjs;
|
|
240
|
+
replayStartTime?: dayjs.Dayjs;
|
|
241
|
+
replayEndTime?: dayjs.Dayjs;
|
|
242
|
+
replayFreezeTime?: dayjs.Dayjs;
|
|
243
|
+
replayNowTime?: dayjs.Dayjs;
|
|
244
|
+
replayContestStartTimestamp?: number;
|
|
245
|
+
totalDurationTimestamp: number;
|
|
246
|
+
freezeDurationTimestamp: number;
|
|
247
|
+
unFreezeDurationTimestamp: number;
|
|
248
|
+
penalty: number;
|
|
249
|
+
problems: Problems;
|
|
250
|
+
problemsMap: Map<string, Problem>;
|
|
251
|
+
statusTimeDisplay: StatusTimeDisplay;
|
|
252
|
+
badge?: string;
|
|
253
|
+
medal?: Record<string, Record<string, number>> | MedalPreset;
|
|
254
|
+
awards?: Awards;
|
|
255
|
+
organization?: string;
|
|
256
|
+
group: Map<string, Group>;
|
|
257
|
+
tag: Map<string, string>;
|
|
258
|
+
logo?: Image;
|
|
259
|
+
banner?: Image;
|
|
260
|
+
bannerMode?: BannerMode;
|
|
261
|
+
boardLink?: string;
|
|
262
|
+
options: ContestOptions;
|
|
263
|
+
constructor();
|
|
264
|
+
getStartTime(): dayjs.Dayjs;
|
|
265
|
+
getEndTime(): dayjs.Dayjs;
|
|
266
|
+
getFreezeTime(): dayjs.Dayjs;
|
|
267
|
+
getContestDuration(timeFormat?: string): string;
|
|
268
|
+
getContestState(nowTime?: Date): ContestState;
|
|
269
|
+
getContestPendingTime(nowTime?: Date): string;
|
|
270
|
+
getContestElapsedTime(nowTime?: Date): string;
|
|
271
|
+
getContestRemainingTime(nowTime?: Date): string;
|
|
272
|
+
getContestProgressRatio(nowTime?: Date): number;
|
|
273
|
+
isEnableAwards(group: string): boolean;
|
|
274
|
+
resetReplayTime(): void;
|
|
275
|
+
setReplayTime(replayStartTimestamp: number): void;
|
|
276
|
+
}
|
|
277
|
+
declare function createContest(contestJSON: Contest$1): Contest;
|
|
278
|
+
|
|
279
|
+
declare class ContestIndexConfig {
|
|
280
|
+
contestName: string;
|
|
281
|
+
startTime: dayjs.Dayjs;
|
|
282
|
+
endTime: dayjs.Dayjs;
|
|
283
|
+
freezeTime: dayjs.Dayjs;
|
|
284
|
+
totalDurationTimestamp: number;
|
|
285
|
+
freezeDurationTimestamp: number;
|
|
286
|
+
unFreezeDurationTimestamp: number;
|
|
287
|
+
logo?: Image;
|
|
288
|
+
constructor();
|
|
289
|
+
}
|
|
290
|
+
declare class ContestIndex {
|
|
291
|
+
contest: Contest;
|
|
292
|
+
boardLink: string;
|
|
293
|
+
constructor();
|
|
294
|
+
}
|
|
295
|
+
type ContestIndexList = Array<ContestIndex>;
|
|
296
|
+
declare function createContestIndex(contestIndexJSON: ContestIndex$1): ContestIndex;
|
|
297
|
+
declare function createContestIndexList(contestListJSON: any): ContestIndexList;
|
|
298
|
+
|
|
299
|
+
declare class RankStatistics {
|
|
300
|
+
teamSolvedNum: Array<number>;
|
|
301
|
+
teamSolvedNumIndex: Array<number>;
|
|
302
|
+
maxSolvedProblems: number;
|
|
303
|
+
effectiveTeamNum: number;
|
|
304
|
+
totalTeamNum: number;
|
|
305
|
+
constructor();
|
|
306
|
+
reset(): void;
|
|
307
|
+
getTeamSolvedNumIndex(solvedNum: number): number;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
declare class RankOptions {
|
|
311
|
+
enableFilterSubmissionsByTimestamp: boolean;
|
|
312
|
+
width: number;
|
|
313
|
+
timestamp: number;
|
|
314
|
+
enableFilterTeamsByGroup: boolean;
|
|
315
|
+
group: string;
|
|
316
|
+
filterOrganizations: Array<SelectOptionItem>;
|
|
317
|
+
filterOrganizationMap: Map<string, SelectOptionItem>;
|
|
318
|
+
filterTeams: Array<SelectOptionItem>;
|
|
319
|
+
filterTeamMap: Map<string, SelectOptionItem>;
|
|
320
|
+
enableAnimatedSubmissions: boolean;
|
|
321
|
+
battleOfGiants: BattleOfGiants;
|
|
322
|
+
constructor();
|
|
323
|
+
setSelf(self: RankOptions): void;
|
|
324
|
+
setWidth(width: number, contest: Contest): void;
|
|
325
|
+
disableFilterSubmissionByTimestamp(): void;
|
|
326
|
+
setGroup(group: string): void;
|
|
327
|
+
disableFilterTeamsByGroup(): void;
|
|
328
|
+
setFilterOrganizations(filterOrganizations: Array<SelectOptionItem>): void;
|
|
329
|
+
setFilterTeams(filterTeams: Array<SelectOptionItem>): void;
|
|
330
|
+
isNeedReBuildRank(nextRankOptions: RankOptions): boolean;
|
|
331
|
+
}
|
|
332
|
+
declare class Rank {
|
|
333
|
+
readonly contest: Contest;
|
|
334
|
+
teams: Teams;
|
|
335
|
+
teamsMap: Map<string, Team>;
|
|
336
|
+
submissions: Submissions;
|
|
337
|
+
submissionsMap: Map<string, Submission>;
|
|
338
|
+
organizations: Array<string>;
|
|
339
|
+
originTeams: Teams;
|
|
340
|
+
rankStatistics: RankStatistics;
|
|
341
|
+
options: RankOptions;
|
|
342
|
+
balloons: Balloons;
|
|
343
|
+
languages: Array<string>;
|
|
344
|
+
statuses: Array<SubmissionStatus>;
|
|
345
|
+
constructor(contest: Contest, teams: Teams, submissions: Submissions);
|
|
346
|
+
cleanRank(): void;
|
|
347
|
+
buildRank(): this;
|
|
348
|
+
buildTeamRank(): void;
|
|
349
|
+
buildOrgRank(): void;
|
|
350
|
+
buildOrganizations(): string[];
|
|
351
|
+
buildAwards(): void;
|
|
352
|
+
filterTeamByOrg(team: Team): boolean;
|
|
353
|
+
getSubmissions(): Submissions;
|
|
354
|
+
buildBalloons(): void;
|
|
355
|
+
setReplayTime(replayStartTimestamp: number): void;
|
|
356
|
+
}
|
|
357
|
+
type Ranks = Array<Rank>;
|
|
358
|
+
|
|
359
|
+
declare class CodeforcesGymGhostDATConverter {
|
|
360
|
+
constructor();
|
|
361
|
+
convert(rank: Rank): string;
|
|
362
|
+
private submissionStatusToCodeforcesGymDatStatus;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
declare class GeneralExcelConverter {
|
|
366
|
+
constructor();
|
|
367
|
+
convert(oriRank: Rank): XLSX.WorkBook;
|
|
368
|
+
convertAndWrite(rank: Rank, filename: string): any;
|
|
369
|
+
private convertToSheet;
|
|
370
|
+
private convertToAoa;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
declare class ICPCStandingsCsvConverter {
|
|
374
|
+
constructor();
|
|
375
|
+
convert(oriRank: Rank): string;
|
|
376
|
+
private getMedalCitation;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
declare function getImageSource(image: Image, asset_host?: string): string;
|
|
380
|
+
|
|
381
|
+
declare class Person {
|
|
382
|
+
name: string;
|
|
383
|
+
constructor(name?: string);
|
|
384
|
+
toJSON(): IPerson;
|
|
385
|
+
static fromJSON(iPerson: IPerson | string): Person;
|
|
386
|
+
}
|
|
387
|
+
type Persons = Array<Person>;
|
|
388
|
+
declare function createPersons(iPersons: string | Array<string>): Persons;
|
|
389
|
+
|
|
390
|
+
declare class RatingHistory {
|
|
391
|
+
rank: number;
|
|
392
|
+
rating: number;
|
|
393
|
+
teamName: string;
|
|
394
|
+
organization: string;
|
|
395
|
+
members: Persons;
|
|
396
|
+
coaches: Persons;
|
|
397
|
+
contestID: string;
|
|
398
|
+
contestName: string;
|
|
399
|
+
contestLink: string;
|
|
400
|
+
contestTime: dayjs.Dayjs;
|
|
401
|
+
constructor();
|
|
402
|
+
toJSON(): IRatingHistory;
|
|
403
|
+
static fromJSON(iRatingHistory: IRatingHistory | string): RatingHistory;
|
|
404
|
+
}
|
|
405
|
+
type RatingHistories = Array<RatingHistory>;
|
|
406
|
+
|
|
407
|
+
declare class RatingUser {
|
|
408
|
+
id: string;
|
|
409
|
+
name: string;
|
|
410
|
+
organization: string;
|
|
411
|
+
members: Persons;
|
|
412
|
+
coaches: Persons;
|
|
413
|
+
rating: number;
|
|
414
|
+
minRating: number;
|
|
415
|
+
maxRating: number;
|
|
416
|
+
rank: number;
|
|
417
|
+
oldRating: number;
|
|
418
|
+
seed: number;
|
|
419
|
+
delta: number;
|
|
420
|
+
ratingHistories: RatingHistories;
|
|
421
|
+
constructor();
|
|
422
|
+
UpdateRating(rating: number): void;
|
|
423
|
+
toJSON(): IRatingUser;
|
|
424
|
+
static fromJSON(iRatingUser: IRatingUser | string): RatingUser;
|
|
425
|
+
}
|
|
426
|
+
type RatingUsers = Array<RatingUser>;
|
|
427
|
+
type RatingUserMap = Map<string, RatingUser>;
|
|
428
|
+
|
|
429
|
+
declare class Rating {
|
|
430
|
+
id: string;
|
|
431
|
+
name: string;
|
|
432
|
+
baseRating: number;
|
|
433
|
+
contestIDs: string[];
|
|
434
|
+
users: RatingUsers;
|
|
435
|
+
ranks: Ranks;
|
|
436
|
+
userMap: RatingUserMap;
|
|
437
|
+
constructor();
|
|
438
|
+
buildRating(): void;
|
|
439
|
+
generateTeamId(t: Team): string;
|
|
440
|
+
toJSON(): IRating;
|
|
441
|
+
static fromJSON(iRating: IRating | string): Rating;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
declare class RatingCalculator {
|
|
445
|
+
users: RatingUsers;
|
|
446
|
+
constructor();
|
|
447
|
+
calculate(): void;
|
|
448
|
+
private calcP;
|
|
449
|
+
private getExSeed;
|
|
450
|
+
private calcRating;
|
|
451
|
+
private calculateInternal;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
declare enum RatingLevel {
|
|
455
|
+
NEWBIE = "NEWBIE",
|
|
456
|
+
PUPIL = "PUPIL",
|
|
457
|
+
SPECIALIST = "SPECIALIST",
|
|
458
|
+
EXPERT = "EXPERT",
|
|
459
|
+
CANDIDATE_MASTER = "CANDIDATE_MASTER",
|
|
460
|
+
MASTER = "MASTER",
|
|
461
|
+
INTERNATIONAL_MASTER = "INTERNATIONAL_MASTER",
|
|
462
|
+
GRANDMASTER = "GRANDMASTER",
|
|
463
|
+
INTERNATIONAL_GRANDMASTER = "INTERNATIONAL_GRANDMASTER",
|
|
464
|
+
LEGENDARY_GRANDMASTER = "LEGENDARY_GRANDMASTER"
|
|
465
|
+
}
|
|
466
|
+
declare const RatingLevelToString: {
|
|
467
|
+
[key in RatingLevel]: string;
|
|
468
|
+
};
|
|
469
|
+
declare class RatingUtility {
|
|
470
|
+
static getRatingLevel(rating: number): RatingLevel;
|
|
471
|
+
static getRatingLevelClass(ratingLevel: RatingLevel | number): string;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
declare class ResolverOperation {
|
|
475
|
+
id: number;
|
|
476
|
+
team: Team;
|
|
477
|
+
problemIx: number;
|
|
478
|
+
beforeTeamProblemStatistics: TeamProblemStatistics;
|
|
479
|
+
afterTeamProblemStatistics: TeamProblemStatistics;
|
|
480
|
+
constructor();
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
declare class Resolver extends Rank {
|
|
484
|
+
finalRank: Rank;
|
|
485
|
+
operations: Array<ResolverOperation>;
|
|
486
|
+
beforeFreezeSubmissions: Submissions;
|
|
487
|
+
afterFreezeSubmissions: Submissions;
|
|
488
|
+
constructor(contest: Contest, teams: Teams, submissions: Submissions);
|
|
489
|
+
buildResolver(): void;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
declare class ResolverVue extends Resolver {
|
|
493
|
+
readonly FLASHING_TIME_MS = 100;
|
|
494
|
+
readonly ROLLING_TIME_MS = 600;
|
|
495
|
+
maxIndex: number;
|
|
496
|
+
currentIndex: number;
|
|
497
|
+
maxOpIndex: number;
|
|
498
|
+
currentOpIndex: number;
|
|
499
|
+
oldRank: number;
|
|
500
|
+
newRank: number;
|
|
501
|
+
currentTeamId: string;
|
|
502
|
+
currentProblemIndex: number;
|
|
503
|
+
problemFlashingEnded: boolean;
|
|
504
|
+
duringAnimation: boolean;
|
|
505
|
+
startScrollUp: boolean;
|
|
506
|
+
startScrollDown: boolean;
|
|
507
|
+
constructor(contest: Contest, teams: Teams, submissions: Submissions);
|
|
508
|
+
buildResolver(): void;
|
|
509
|
+
next(): void;
|
|
510
|
+
rewind(): void;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
declare function stringToSubmissionStatus(status: string): SubmissionStatus;
|
|
514
|
+
declare function isAccepted(status: SubmissionStatus): boolean;
|
|
515
|
+
declare function isRejected(status: SubmissionStatus): boolean;
|
|
516
|
+
declare function isPending(status: SubmissionStatus): boolean;
|
|
517
|
+
declare function isNotCalculatedPenaltyStatus(status: SubmissionStatus): boolean;
|
|
518
|
+
|
|
519
|
+
export { Award, type Awards, Balloon, type Balloons, BattleOfGiants, CodeforcesGymGhostDATConverter, Contest, ContestIndex, ContestIndexConfig, type ContestIndexList, ContestOptions, GeneralExcelConverter, Giants, GiantsType, ICPCStandingsCsvConverter, MedalType, Person, type Persons, PlaceChartPointData, Problem, ProblemStatistics, type Problems, Rank, RankOptions, RankStatistics, type Ranks, Rating, RatingCalculator, type RatingHistories, RatingHistory, RatingLevel, RatingLevelToString, RatingUser, type RatingUserMap, type RatingUsers, RatingUtility, Resolver, ResolverVue, type SelectOptionItem, Submission, type Submissions, Team, TeamProblemStatistics, type Teams, calcDirt, createContest, createContestIndex, createContestIndexList, createDayJS, createPersons, createProblem, createProblems, createProblemsByProblemIds, createSubmission, createSubmissions, createTeam, createTeams, getImageSource, getTimeDiff, getTimestamp, getWhiteOrBlackColor, getWhiteOrBlackColorV1, isAccepted, isNotCalculatedPenaltyStatus, isPending, isRejected, isValidMedalType, stringToSubmissionStatus };
|