@foxford/sdk 8.0.0 → 8.1.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/api.d.cts +4 -19
- package/api.d.ts +4 -19
- package/api.js.flow +3 -26
- package/entities.cjs +572 -7
- package/entities.d.cts +535 -7
- package/entities.d.ts +535 -7
- package/entities.js +572 -7
- package/entities.js.flow +577 -7
- package/index.cjs +572 -7
- package/index.d.cts +710 -187
- package/index.d.ts +710 -187
- package/index.js +572 -7
- package/index.js.flow +829 -262
- package/package.json +5 -3
- package/plugins/autocomplete-email.d.cts +1 -1
- package/plugins/confirm-phone.d.cts +1 -1
- package/plugins/types-sRHKQ8xU.d.cts +1269 -0
- package/plugins/types-sRHKQ8xU.d.ts +1269 -0
- package/types-3Yq2Uj51.d.cts +33 -0
- package/types-BrKJGAOa.d.ts +33 -0
package/index.js.flow
CHANGED
|
@@ -43,10 +43,256 @@ declare export {
|
|
|
43
43
|
ResponseSuccessPluginInterface,
|
|
44
44
|
} from "@foxford/services";
|
|
45
45
|
import {
|
|
46
|
-
type CartItemResourceType,
|
|
47
46
|
type BusinessUnitAbbreviation,
|
|
47
|
+
type CartItemResourceType,
|
|
48
48
|
type Course,
|
|
49
49
|
} from "@foxford/types";
|
|
50
|
+
declare interface FoxfordAntibotConfig {
|
|
51
|
+
antibotFrameSrc?: string;
|
|
52
|
+
antibotOnload?: (e: Event) => void;
|
|
53
|
+
antibotOnerror?: () => void;
|
|
54
|
+
debug?: boolean;
|
|
55
|
+
}
|
|
56
|
+
declare class FoxfordAntibot {
|
|
57
|
+
static FOXFORD_ANTIBOT_URL: string;
|
|
58
|
+
static DEFAULT_CONFIG: {
|
|
59
|
+
antibotFrameSrc: string,
|
|
60
|
+
...
|
|
61
|
+
};
|
|
62
|
+
static FRAME_CLASSNAME: string;
|
|
63
|
+
constructor(config?: FoxfordAntibotConfig): this;
|
|
64
|
+
createAntibotFrame: (params: {
|
|
65
|
+
src: string,
|
|
66
|
+
onload?: (_e: Event) => void,
|
|
67
|
+
onerror?: () => void,
|
|
68
|
+
...
|
|
69
|
+
}) => void;
|
|
70
|
+
}
|
|
71
|
+
declare type Widget = {
|
|
72
|
+
name:
|
|
73
|
+
| "menu"
|
|
74
|
+
| "reviews"
|
|
75
|
+
| "featuredCoaches"
|
|
76
|
+
| "coachEnrollment"
|
|
77
|
+
| "shortForm"
|
|
78
|
+
| "userTypePrompt"
|
|
79
|
+
| "teachersSlider"
|
|
80
|
+
| "externshipFormats",
|
|
81
|
+
options: { [key: string]: any, ... },
|
|
82
|
+
container?: HTMLElement,
|
|
83
|
+
...
|
|
84
|
+
};
|
|
85
|
+
declare type WidgetsInitConfig = {
|
|
86
|
+
version?: "latest" | string,
|
|
87
|
+
locale?: "ru",
|
|
88
|
+
...
|
|
89
|
+
};
|
|
90
|
+
declare type WidgetsConfig = {
|
|
91
|
+
analyticContext?: {
|
|
92
|
+
prefix: string,
|
|
93
|
+
module: string,
|
|
94
|
+
payload?: { [key: any]: any, ... },
|
|
95
|
+
...
|
|
96
|
+
},
|
|
97
|
+
rootColors?: boolean,
|
|
98
|
+
loadFonts?: boolean,
|
|
99
|
+
widgets: Array<Widget>,
|
|
100
|
+
...
|
|
101
|
+
} & WidgetsInitConfig;
|
|
102
|
+
declare class Widgets {
|
|
103
|
+
static ENTRY: string[];
|
|
104
|
+
static DEFAULT_CONFIG: WidgetsInitConfig;
|
|
105
|
+
constructor(config: WidgetsInitConfig | void, apiInstance: ApiInstance): this;
|
|
106
|
+
create(config: WidgetsConfig): Promise<void>;
|
|
107
|
+
update(name: string, config: Widget): Promise<void>;
|
|
108
|
+
static appendScript(src: string): Promise<mixed>;
|
|
109
|
+
}
|
|
110
|
+
declare type ProductTypeItem = {
|
|
111
|
+
type: string,
|
|
112
|
+
id: number,
|
|
113
|
+
description: string,
|
|
114
|
+
title: string,
|
|
115
|
+
discipline: {
|
|
116
|
+
id: number,
|
|
117
|
+
name: string,
|
|
118
|
+
...
|
|
119
|
+
},
|
|
120
|
+
teacher: {
|
|
121
|
+
id: number,
|
|
122
|
+
long_name: string,
|
|
123
|
+
description: string,
|
|
124
|
+
experience: number,
|
|
125
|
+
photo_url: string,
|
|
126
|
+
photo_large_url: string,
|
|
127
|
+
...
|
|
128
|
+
},
|
|
129
|
+
levels: Array<{
|
|
130
|
+
id: number,
|
|
131
|
+
name: string,
|
|
132
|
+
...
|
|
133
|
+
}>,
|
|
134
|
+
...
|
|
135
|
+
};
|
|
136
|
+
declare type ProductPack = {
|
|
137
|
+
name: string,
|
|
138
|
+
description: string,
|
|
139
|
+
meta_title: string,
|
|
140
|
+
meta_description: string,
|
|
141
|
+
published: true,
|
|
142
|
+
content_description: string,
|
|
143
|
+
disciplines_scope: string,
|
|
144
|
+
guaranteed_admission: true,
|
|
145
|
+
grade_names: string,
|
|
146
|
+
is_purchased: false,
|
|
147
|
+
learning_flow: {
|
|
148
|
+
title: string,
|
|
149
|
+
steps: Array<{
|
|
150
|
+
header: string,
|
|
151
|
+
description: string,
|
|
152
|
+
...
|
|
153
|
+
}>,
|
|
154
|
+
...
|
|
155
|
+
},
|
|
156
|
+
offers: {
|
|
157
|
+
intro: string,
|
|
158
|
+
items: Array<{
|
|
159
|
+
title: string,
|
|
160
|
+
description: string,
|
|
161
|
+
...
|
|
162
|
+
}>,
|
|
163
|
+
...
|
|
164
|
+
},
|
|
165
|
+
price_block: {
|
|
166
|
+
price: number,
|
|
167
|
+
initial_price: number,
|
|
168
|
+
title: string,
|
|
169
|
+
description: string,
|
|
170
|
+
points: Array<string>,
|
|
171
|
+
price_per_month: number,
|
|
172
|
+
initial_price_per_month: number,
|
|
173
|
+
...
|
|
174
|
+
},
|
|
175
|
+
product_pack_items: Array<ProductTypeItem>,
|
|
176
|
+
faq_items: Array<{
|
|
177
|
+
question: string,
|
|
178
|
+
answer: string,
|
|
179
|
+
...
|
|
180
|
+
}>,
|
|
181
|
+
landing_image_urls: Array<string>,
|
|
182
|
+
...
|
|
183
|
+
};
|
|
184
|
+
declare interface CartItemDTO {
|
|
185
|
+
cart_item_type: CartItemResourceType;
|
|
186
|
+
resource_id: number;
|
|
187
|
+
}
|
|
188
|
+
declare type FoxfordConfig = {
|
|
189
|
+
host?: string,
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @deprecated
|
|
193
|
+
*/
|
|
194
|
+
widgetsVersion?: "latest" | string,
|
|
195
|
+
antibot?: boolean,
|
|
196
|
+
antibotConfig?: FoxfordAntibotConfig,
|
|
197
|
+
api?: ApiConfig,
|
|
198
|
+
captchaConfig?: () => CaptchaConfig,
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @deprecated Не используйте инициализацию виджетов через SDK
|
|
202
|
+
*/
|
|
203
|
+
widgetsConfig?: WidgetsInitConfig,
|
|
204
|
+
...
|
|
205
|
+
};
|
|
206
|
+
declare type Reasons =
|
|
207
|
+
| "additional_education_free_period_started"
|
|
208
|
+
| "announcement_clicked"
|
|
209
|
+
| "catalog_filtered"
|
|
210
|
+
| "coach_intro_lesson_scheduled"
|
|
211
|
+
| "coach_landing_visited"
|
|
212
|
+
| "course_conspect_visited"
|
|
213
|
+
| "course_landing_visited"
|
|
214
|
+
| "event_scheduled"
|
|
215
|
+
| "event_visited"
|
|
216
|
+
| "exam_rehearsal_page_visited"
|
|
217
|
+
| "exam_rehearsal_passed"
|
|
218
|
+
| "externship_contract_draft_created"
|
|
219
|
+
| "externship_demo_access"
|
|
220
|
+
| "externship_iep_selected"
|
|
221
|
+
| "externship_intendance_expressed"
|
|
222
|
+
| "interactive_training_course_visited"
|
|
223
|
+
| "externship_landing_visited"
|
|
224
|
+
| "externship_lead_request"
|
|
225
|
+
| "mini_group_landing_visited"
|
|
226
|
+
| "olympiad_page_visited"
|
|
227
|
+
| "onboarding"
|
|
228
|
+
| "onboarding_finished"
|
|
229
|
+
| "product_pack_landing_visited"
|
|
230
|
+
| "promos_coach_recommendation_clicked"
|
|
231
|
+
| "promos_course_recommendation_clicked"
|
|
232
|
+
| "promos_results_filtered"
|
|
233
|
+
| "subscription_landing_visited"
|
|
234
|
+
| "teacher_course_visited"
|
|
235
|
+
| "training_page_visited"
|
|
236
|
+
| "training_passed"
|
|
237
|
+
| "wiki_visited"
|
|
238
|
+
| "project_landing_cta_clicked";
|
|
239
|
+
declare type ProductFormats =
|
|
240
|
+
| "coach_course"
|
|
241
|
+
| "course"
|
|
242
|
+
| "event"
|
|
243
|
+
| "exam_rehearsal"
|
|
244
|
+
| "externship"
|
|
245
|
+
| "game"
|
|
246
|
+
| "interactive_trainings"
|
|
247
|
+
| "mini_group"
|
|
248
|
+
| "olympiad"
|
|
249
|
+
| "product_pack"
|
|
250
|
+
| "teacher_course"
|
|
251
|
+
| "trainings";
|
|
252
|
+
declare type UserInterests = {
|
|
253
|
+
businessUnitAbbrs?: BusinessUnitAbbreviation[] | null,
|
|
254
|
+
disciplineId?: number | number[] | null,
|
|
255
|
+
gradeId?: number | number[] | null,
|
|
256
|
+
levelId?: number | number[] | null,
|
|
257
|
+
productId?: number | null,
|
|
258
|
+
productFormat?: ProductFormats | null,
|
|
259
|
+
reason?: Reasons | null,
|
|
260
|
+
...
|
|
261
|
+
};
|
|
262
|
+
declare interface CommunicationSubscriptions {
|
|
263
|
+
subscriptionNews?: boolean;
|
|
264
|
+
subscriptionMaterials?: boolean;
|
|
265
|
+
subscriptionEvents?: boolean;
|
|
266
|
+
subscriptionPromos?: boolean;
|
|
267
|
+
subscriptionReminders?: boolean;
|
|
268
|
+
subscriptionMedia?: boolean;
|
|
269
|
+
subscriptionExternship?: boolean;
|
|
270
|
+
subscriptionExternal?: boolean;
|
|
271
|
+
}
|
|
272
|
+
declare interface LoginByPhoneParams {
|
|
273
|
+
onEmailRequest: (phoneCheckResponse: {
|
|
274
|
+
email?: string,
|
|
275
|
+
fakeEmail?: boolean,
|
|
276
|
+
state: "new" | "confirmed" | "not_confirmed",
|
|
277
|
+
...
|
|
278
|
+
}) => Promise<string>;
|
|
279
|
+
onCodeRequest: () => Promise<string>;
|
|
280
|
+
onNameRequest: () => Promise<{
|
|
281
|
+
first_name: string,
|
|
282
|
+
last_name: string,
|
|
283
|
+
...
|
|
284
|
+
}>;
|
|
285
|
+
onConfirmationCodeResponse: (confirmationCodeResponse: {
|
|
286
|
+
nextDeliveryAt: string,
|
|
287
|
+
...
|
|
288
|
+
}) => void;
|
|
289
|
+
onConfirmationCodeError: (error: Error) => void;
|
|
290
|
+
}
|
|
291
|
+
declare interface LoginOrRegistrationResponse {
|
|
292
|
+
redirectUrl?: string;
|
|
293
|
+
registered?: boolean;
|
|
294
|
+
type?: string;
|
|
295
|
+
}
|
|
50
296
|
declare type PupilRole =
|
|
51
297
|
| "11 класс"
|
|
52
298
|
| "10 класс"
|
|
@@ -67,6 +313,21 @@ declare type UserRole =
|
|
|
67
313
|
| "Выпускник"
|
|
68
314
|
| "Дошкольник"
|
|
69
315
|
| PupilRole;
|
|
316
|
+
declare type LeaderboardAccessState =
|
|
317
|
+
| "unavailable"
|
|
318
|
+
| "available"
|
|
319
|
+
| "vacation"
|
|
320
|
+
| "disabled";
|
|
321
|
+
declare type LeaderboardReadinessState =
|
|
322
|
+
| "changeable_course_selection"
|
|
323
|
+
| "ready"
|
|
324
|
+
| "unready"
|
|
325
|
+
| "waiting_course_selection";
|
|
326
|
+
declare type LearningGoalsAccessState =
|
|
327
|
+
| "enabled"
|
|
328
|
+
| "disabled"
|
|
329
|
+
| "optional"
|
|
330
|
+
| "required";
|
|
70
331
|
declare interface UserDTO {
|
|
71
332
|
id: null | number;
|
|
72
333
|
email: string;
|
|
@@ -194,127 +455,679 @@ declare interface UserDTO {
|
|
|
194
455
|
yearName: string,
|
|
195
456
|
...
|
|
196
457
|
} | null;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Текущий интерес посетителя — та же форма, что у `GET /api/user/user_interest`, но из профиля.
|
|
461
|
+
*/
|
|
462
|
+
currentInterest: UserInterests | null;
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* До какой даты открыт приём в домашнюю школу.
|
|
466
|
+
*/
|
|
467
|
+
admissionFinishesOn: null | string;
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Посетитель пришёл из Алгоритмики.
|
|
471
|
+
*/
|
|
472
|
+
algoritmika: boolean;
|
|
473
|
+
bonusesPageVisited: boolean;
|
|
474
|
+
canChangeSchoolInfo: boolean;
|
|
475
|
+
externshipDemoAccessActive: boolean;
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Экстернат ждёт оплаты: когда закроется доступ и по какому договору.
|
|
479
|
+
*/
|
|
480
|
+
externshipPaymentRequired: {
|
|
481
|
+
accessClosingDate: string,
|
|
482
|
+
contractId: number,
|
|
483
|
+
...
|
|
484
|
+
} | null;
|
|
485
|
+
externshipPromoHeaderOn: boolean;
|
|
486
|
+
hasExamProgressAccess: boolean;
|
|
487
|
+
hasYearlyRecapAccess: boolean;
|
|
488
|
+
isAttestationSchoolManager: null | boolean;
|
|
489
|
+
isMentor: boolean;
|
|
490
|
+
isXpStreakAvailable: boolean;
|
|
491
|
+
leaderboard: {
|
|
492
|
+
accessState: LeaderboardAccessState,
|
|
493
|
+
readinessState: LeaderboardReadinessState,
|
|
494
|
+
...
|
|
495
|
+
} | null;
|
|
496
|
+
leaderboardAccessState: LeaderboardAccessState;
|
|
497
|
+
learningGoalsAccessState: LearningGoalsAccessState;
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Мессенджеры, на которые подписан посетитель; `null` — бэкенд не считал.
|
|
501
|
+
*/
|
|
502
|
+
messengerSubscriptions: null | string[];
|
|
503
|
+
needToPromoteRenewalWithCoach: boolean;
|
|
504
|
+
nextYearCoursesBannerAvailable: boolean;
|
|
505
|
+
passwordSet: null | boolean;
|
|
506
|
+
referralCode: null | string;
|
|
507
|
+
targetActionsOnboardingAvailable: boolean;
|
|
508
|
+
}
|
|
509
|
+
declare class User {
|
|
510
|
+
constructor(): this;
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Идентификатор посетителя на бэкенде.
|
|
514
|
+
* @returns Число либо `null` у гостя.
|
|
515
|
+
*/
|
|
516
|
+
id: $PropertyType<UserDTO, "id">;
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Почта посетителя.
|
|
520
|
+
* @returns Строка; пустая, если почты нет.
|
|
521
|
+
*/
|
|
522
|
+
email: $PropertyType<UserDTO, "email">;
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Имя.
|
|
526
|
+
* @returns Строка; пустая, если не заполнено.
|
|
527
|
+
*/
|
|
528
|
+
firstName: $PropertyType<UserDTO, "firstName">;
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Отчество.
|
|
532
|
+
* @returns Строка; пустая, если не заполнено.
|
|
533
|
+
*/
|
|
534
|
+
middleName: $PropertyType<UserDTO, "middleName">;
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* Фамилия.
|
|
538
|
+
* @returns Строка; пустая, если не заполнено.
|
|
539
|
+
*/
|
|
540
|
+
lastName: $PropertyType<UserDTO, "lastName">;
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* Полное имя, каким его собрал бэкенд.
|
|
544
|
+
* @returns Строка; пустая у гостя.
|
|
545
|
+
*/
|
|
205
546
|
fullName: $PropertyType<UserDTO, "fullName">;
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Короткое имя для обращения в интерфейсе.
|
|
550
|
+
* @returns Строка; пустая у гостя.
|
|
551
|
+
*/
|
|
206
552
|
shortName: $PropertyType<UserDTO, "shortName">;
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Когда заведён профиль.
|
|
556
|
+
* @returns Дата ISO либо `null` у гостя.
|
|
557
|
+
*/
|
|
207
558
|
createdAt: $PropertyType<UserDTO, "createdAt">;
|
|
559
|
+
|
|
560
|
+
/**
|
|
561
|
+
* Часовой пояс посетителя.
|
|
562
|
+
* @returns Имя пояса либо `null`, если не задан.
|
|
563
|
+
*/
|
|
208
564
|
timezone: $PropertyType<UserDTO, "timezone">;
|
|
565
|
+
|
|
566
|
+
/**
|
|
567
|
+
* Локаль интерфейса.
|
|
568
|
+
* @returns Код локали либо `null`, если не задана.
|
|
569
|
+
*/
|
|
209
570
|
locale: $PropertyType<UserDTO, "locale">;
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* Класс посетителя: id, порядковый номер, имя и транслит.
|
|
574
|
+
* @returns Объект класса; у гостя поля `null` и пустые строки.
|
|
575
|
+
*/
|
|
210
576
|
grade: $PropertyType<UserDTO, "grade">;
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Телефон посетителя.
|
|
580
|
+
* @returns Строка либо `null`, если не указан.
|
|
581
|
+
*/
|
|
211
582
|
phone: $PropertyType<UserDTO, "phone">;
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Адрес аватара.
|
|
586
|
+
* @returns Строка; пустая, если аватара нет.
|
|
587
|
+
*/
|
|
212
588
|
avatarUrl: $PropertyType<UserDTO, "avatarUrl">;
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Посетитель — родитель.
|
|
592
|
+
* @returns `true`, если роль родительская.
|
|
593
|
+
*/
|
|
213
594
|
isParent: $PropertyType<UserDTO, "isParent">;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Посетитель — выпускник.
|
|
598
|
+
* @returns `true`, если школу закончил.
|
|
599
|
+
*/
|
|
214
600
|
isGraduated: $PropertyType<UserDTO, "isGraduated">;
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* Класс подтверждён посетителем.
|
|
604
|
+
* @returns `true`, если класс проверен.
|
|
605
|
+
*/
|
|
215
606
|
gradeChecked: $PropertyType<UserDTO, "gradeChecked">;
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Тип учётной записи на бэкенде.
|
|
610
|
+
* @returns `pupil`, `agent` либо `null` у гостя.
|
|
611
|
+
*/
|
|
216
612
|
type: $PropertyType<UserDTO, "type">;
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* Посетитель — репетитор.
|
|
616
|
+
* @returns `true`, если роль репетитора.
|
|
617
|
+
*/
|
|
217
618
|
isCoach: $PropertyType<UserDTO, "isCoach">;
|
|
619
|
+
|
|
620
|
+
/**
|
|
621
|
+
* Ведёт мини-группы.
|
|
622
|
+
* @returns `true`, если ведёт.
|
|
623
|
+
*/
|
|
218
624
|
isMiniGroupTeacher: $PropertyType<UserDTO, "isMiniGroupTeacher">;
|
|
625
|
+
|
|
626
|
+
/**
|
|
627
|
+
* Репетитор экстерната.
|
|
628
|
+
* @returns `true`, если ведёт экстернат.
|
|
629
|
+
*/
|
|
219
630
|
isExternshipCoach: $PropertyType<UserDTO, "isExternshipCoach">;
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Посетитель — учитель.
|
|
634
|
+
* @returns `true`, если роль учителя.
|
|
635
|
+
*/
|
|
220
636
|
isAgent: $PropertyType<UserDTO, "isAgent">;
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* Посетитель — методист.
|
|
640
|
+
* @returns `true`, если методист.
|
|
641
|
+
*/
|
|
221
642
|
methodist: $PropertyType<UserDTO, "methodist">;
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Почтовый адрес: страна, регион, город, улица, дом.
|
|
646
|
+
* @returns Объект адреса либо `null`, если не заполнен.
|
|
647
|
+
*/
|
|
222
648
|
address: $PropertyType<UserDTO, "address">;
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Привязанные соцсети.
|
|
652
|
+
* @returns Список провайдеров с идентификаторами; пустой, если привязок нет.
|
|
653
|
+
*/
|
|
223
654
|
socialNets: $PropertyType<UserDTO, "socialNets">;
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Логин в Skype.
|
|
658
|
+
* @returns Строка либо `null`.
|
|
659
|
+
*/
|
|
224
660
|
skype: $PropertyType<UserDTO, "skype">;
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* Настройки интерфейса: показанные подсказки и скрытые баннеры.
|
|
664
|
+
* @returns Объект флагов либо `undefined`, если бэкенд их не прислал.
|
|
665
|
+
*/
|
|
225
666
|
settings: $PropertyType<UserDTO, "settings">;
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Бонусный счёт: подарочные и реальные бонусы.
|
|
670
|
+
* @returns Объект с суммами.
|
|
671
|
+
*/
|
|
226
672
|
bonus: $PropertyType<UserDTO, "bonus">;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* Сумма бонусов на счёте.
|
|
676
|
+
* @returns Число.
|
|
677
|
+
*/
|
|
227
678
|
bonusAmount: $PropertyType<UserDTO, "bonusAmount">;
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Есть действующие покупки.
|
|
682
|
+
* @returns `true`, если есть.
|
|
683
|
+
*/
|
|
228
684
|
hasActivePurchases: $PropertyType<UserDTO, "hasActivePurchases">;
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Остались попытки пробных экзаменов.
|
|
688
|
+
* @returns `true`, если остались.
|
|
689
|
+
*/
|
|
229
690
|
hasAttemptsSolveExamRehearsals: $PropertyType<
|
|
230
691
|
UserDTO,
|
|
231
692
|
"hasAttemptsSolveExamRehearsals"
|
|
232
693
|
>;
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* Есть закладки.
|
|
697
|
+
* @returns `true`, если есть.
|
|
698
|
+
*/
|
|
233
699
|
hasBookmarks: $PropertyType<UserDTO, "hasBookmarks">;
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* Метки посетителя на бэкенде.
|
|
703
|
+
* @returns Список строк либо `null`.
|
|
704
|
+
*/
|
|
234
705
|
tags: $PropertyType<UserDTO, "tags">;
|
|
706
|
+
|
|
707
|
+
/**
|
|
708
|
+
* Шаблон корзины.
|
|
709
|
+
* @returns Число либо `null`.
|
|
710
|
+
*/
|
|
235
711
|
cartTemplateId: $PropertyType<UserDTO, "cartTemplateId">;
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Сколько позиций в корзине.
|
|
715
|
+
* @returns Число.
|
|
716
|
+
*/
|
|
236
717
|
cartItemsCount: $PropertyType<UserDTO, "cartItemsCount">;
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* Онбординг пройден.
|
|
721
|
+
* @returns `true`, если пройден.
|
|
722
|
+
*/
|
|
237
723
|
onboardingFinished: $PropertyType<UserDTO, "onboardingFinished">;
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* Когда пройден онбординг.
|
|
727
|
+
* @returns Дата ISO либо `null`, пока не пройден.
|
|
728
|
+
*/
|
|
238
729
|
onboardingFinishedAt: $PropertyType<UserDTO, "onboardingFinishedAt">;
|
|
730
|
+
|
|
731
|
+
/**
|
|
732
|
+
* Почта подтверждена.
|
|
733
|
+
* @returns `true`, если подтверждена.
|
|
734
|
+
*/
|
|
239
735
|
emailConfirmed: $PropertyType<UserDTO, "emailConfirmed">;
|
|
736
|
+
|
|
737
|
+
/**
|
|
738
|
+
* Телефон подтверждён.
|
|
739
|
+
* @returns `true`, если подтверждён.
|
|
740
|
+
*/
|
|
240
741
|
phoneConfirmed: $PropertyType<UserDTO, "phoneConfirmed">;
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* Почта выдумана бэкендом при регистрации без почты.
|
|
745
|
+
* @returns `true`, если почта ненастоящая.
|
|
746
|
+
*/
|
|
241
747
|
fakeEmail: $PropertyType<UserDTO, "fakeEmail">;
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* Посетитель заведён бэкендом без его участия (например, по заявке).
|
|
751
|
+
* @returns `true`, если учётная запись ненастоящая.
|
|
752
|
+
*/
|
|
242
753
|
fakeUser: $PropertyType<UserDTO, "fakeUser">;
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* Профиль дополнен данными после регистрации.
|
|
757
|
+
* @returns `true`, если дополнен.
|
|
758
|
+
*/
|
|
243
759
|
profileEnriched: $PropertyType<UserDTO, "profileEnriched">;
|
|
760
|
+
|
|
761
|
+
/**
|
|
762
|
+
* Идентификатор итогов года.
|
|
763
|
+
* @returns Строка либо `null`, если итогов нет.
|
|
764
|
+
*/
|
|
244
765
|
recapUuid: $PropertyType<UserDTO, "recapUuid">;
|
|
766
|
+
|
|
767
|
+
/**
|
|
768
|
+
* Дисциплины, которые изучает посетитель.
|
|
769
|
+
* @returns Список id; пустой, если не выбраны.
|
|
770
|
+
*/
|
|
245
771
|
disciplineIds: $PropertyType<UserDTO, "disciplineIds">;
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* Настройки приватности.
|
|
775
|
+
* @returns Объект с флагом публичного профиля.
|
|
776
|
+
*/
|
|
246
777
|
privacy: $PropertyType<UserDTO, "privacy">;
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* Телефон родителя.
|
|
781
|
+
* @returns Строка либо `null`.
|
|
782
|
+
*/
|
|
247
783
|
parentPhone: $PropertyType<UserDTO, "parentPhone">;
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Телефон родителя подтверждён.
|
|
787
|
+
* @returns `true`, если подтверждён.
|
|
788
|
+
*/
|
|
248
789
|
parentPhoneConfirmed: $PropertyType<UserDTO, "parentPhoneConfirmed">;
|
|
790
|
+
|
|
791
|
+
/**
|
|
792
|
+
* Посетитель что-то покупал.
|
|
793
|
+
* @returns `true`, `false` либо `null`, если бэкенд не считал.
|
|
794
|
+
*/
|
|
249
795
|
isCustomer: $PropertyType<UserDTO, "isCustomer">;
|
|
796
|
+
|
|
797
|
+
/**
|
|
798
|
+
* Доступны многодневные серии занятий.
|
|
799
|
+
* @returns `true`, если доступны.
|
|
800
|
+
*/
|
|
250
801
|
hasAccessToMultiDaysStreaks: $PropertyType<
|
|
251
802
|
UserDTO,
|
|
252
803
|
"hasAccessToMultiDaysStreaks"
|
|
253
804
|
>;
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* Ученик начальной школы.
|
|
808
|
+
* @returns `true`, если начальная школа.
|
|
809
|
+
*/
|
|
254
810
|
isElementaryPupil: $PropertyType<UserDTO, "isElementaryPupil">;
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Токен для канала уведомлений по WebSocket.
|
|
814
|
+
* @returns Строка либо `null`, если канала нет.
|
|
815
|
+
*/
|
|
255
816
|
webSocketNotificationsJwt: $PropertyType<
|
|
256
817
|
UserDTO,
|
|
257
818
|
"webSocketNotificationsJwt"
|
|
258
819
|
>;
|
|
820
|
+
|
|
821
|
+
/**
|
|
822
|
+
* Доступны аттестационные листы.
|
|
823
|
+
* @returns `true`, если доступны.
|
|
824
|
+
*/
|
|
259
825
|
hasAccessToAttestationSheets: $PropertyType<
|
|
260
826
|
UserDTO,
|
|
261
827
|
"hasAccessToAttestationSheets"
|
|
262
828
|
>;
|
|
829
|
+
|
|
830
|
+
/**
|
|
831
|
+
* Посетитель учится в экстернате.
|
|
832
|
+
* @returns `true`, если экстернат.
|
|
833
|
+
*/
|
|
263
834
|
externshipUser: $PropertyType<UserDTO, "externshipUser">;
|
|
835
|
+
|
|
836
|
+
/**
|
|
837
|
+
* Есть оплаченные договоры экстерната.
|
|
838
|
+
* @returns `true`, если есть.
|
|
839
|
+
*/
|
|
264
840
|
hasPurchasedExternshipContracts: $PropertyType<
|
|
265
841
|
UserDTO,
|
|
266
842
|
"hasPurchasedExternshipContracts"
|
|
267
843
|
>;
|
|
844
|
+
|
|
845
|
+
/**
|
|
846
|
+
* Доступна аттестация экстерната.
|
|
847
|
+
* @returns `true`, если доступна.
|
|
848
|
+
*/
|
|
268
849
|
hasExternshipAttestationAccess: $PropertyType<
|
|
269
850
|
UserDTO,
|
|
270
851
|
"hasExternshipAttestationAccess"
|
|
271
852
|
>;
|
|
853
|
+
|
|
854
|
+
/**
|
|
855
|
+
* Профиль в разделе социализации.
|
|
856
|
+
* @returns Объект с id и состоянием либо `null`, если профиля нет.
|
|
857
|
+
*/
|
|
272
858
|
socializationProfile: $PropertyType<UserDTO, "socializationProfile">;
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Когда заканчивается бесплатный доступ.
|
|
862
|
+
* @returns Дата ISO либо `null`, если доступа нет.
|
|
863
|
+
*/
|
|
273
864
|
freeAccessFinishesAt: $PropertyType<UserDTO, "freeAccessFinishesAt">;
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* В комнате начальной школы есть непросмотренные новинки.
|
|
868
|
+
* @returns `true`, если есть; `undefined`, если бэкенд не прислал.
|
|
869
|
+
*/
|
|
274
870
|
hasUnseenRoomFeatures: $PropertyType<UserDTO, "hasUnseenRoomFeatures">;
|
|
871
|
+
|
|
872
|
+
/**
|
|
873
|
+
* Покупал договоры экстерната.
|
|
874
|
+
* @returns `true`, если покупал.
|
|
875
|
+
*/
|
|
275
876
|
purchaseAnyExternshipContracts: $PropertyType<
|
|
276
877
|
UserDTO,
|
|
277
878
|
"purchaseAnyExternshipContracts"
|
|
278
879
|
>;
|
|
880
|
+
|
|
881
|
+
/**
|
|
882
|
+
* Связан с экстернатом: ученик, родитель либо репетитор.
|
|
883
|
+
* @returns `true`, если связан; `undefined`, если бэкенд не прислал.
|
|
884
|
+
*/
|
|
279
885
|
hasExternshipRelation: $PropertyType<UserDTO, "hasExternshipRelation">;
|
|
886
|
+
|
|
887
|
+
/**
|
|
888
|
+
* Есть действующий договор экстерната.
|
|
889
|
+
* @returns `true`, если есть; `undefined`, если бэкенд не прислал.
|
|
890
|
+
*/
|
|
280
891
|
hasExternshipActiveContract: $PropertyType<
|
|
281
892
|
UserDTO,
|
|
282
893
|
"hasExternshipActiveContract"
|
|
283
894
|
>;
|
|
895
|
+
|
|
896
|
+
/**
|
|
897
|
+
* Можно продлить договор домашней школы.
|
|
898
|
+
* @returns `true`, если можно; `undefined`, если бэкенд не прислал.
|
|
899
|
+
*/
|
|
284
900
|
canProlongateContract: $PropertyType<UserDTO, "canProlongateContract">;
|
|
901
|
+
|
|
902
|
+
/**
|
|
903
|
+
* Окно пролонгации договора: даты, скидка, заголовок следующего года.
|
|
904
|
+
* @returns Объект окна, `null` либо `undefined`, если окна нет.
|
|
905
|
+
*/
|
|
285
906
|
prolongation: $PropertyType<UserDTO, "prolongation">;
|
|
286
907
|
|
|
908
|
+
/**
|
|
909
|
+
* Текущий интерес посетителя: класс, дисциплина, уровень, формат и причина. Та же форма, что у `GET /api/user/user_interest`, но из профиля, без похода.
|
|
910
|
+
* @returns Объект интереса либо `null`, если бэкенд не считал.
|
|
911
|
+
*/
|
|
912
|
+
currentInterest: $PropertyType<UserDTO, "currentInterest">;
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* До какой даты открыт приём в домашнюю школу.
|
|
916
|
+
* @returns Дата либо `null`, если приём не идёт.
|
|
917
|
+
*/
|
|
918
|
+
admissionFinishesOn: $PropertyType<UserDTO, "admissionFinishesOn">;
|
|
919
|
+
|
|
920
|
+
/**
|
|
921
|
+
* Посетитель пришёл из Алгоритмики — партнёрский вход с другой площадки.
|
|
922
|
+
* @returns `true`, если из Алгоритмики.
|
|
923
|
+
*/
|
|
924
|
+
algoritmika: $PropertyType<UserDTO, "algoritmika">;
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* Страница бонусов уже открывалась — подсказки на ней больше не показываются.
|
|
928
|
+
* @returns `true`, если открывалась.
|
|
929
|
+
*/
|
|
930
|
+
bonusesPageVisited: $PropertyType<UserDTO, "bonusesPageVisited">;
|
|
931
|
+
|
|
932
|
+
/**
|
|
933
|
+
* Посетителю разрешено менять школу и класс в профиле.
|
|
934
|
+
* @returns `true`, если разрешено.
|
|
935
|
+
*/
|
|
936
|
+
canChangeSchoolInfo: $PropertyType<UserDTO, "canChangeSchoolInfo">;
|
|
937
|
+
|
|
938
|
+
/**
|
|
939
|
+
* Идёт демо-доступ к экстернату.
|
|
940
|
+
* @returns `true`, пока демо активно.
|
|
941
|
+
*/
|
|
942
|
+
externshipDemoAccessActive: $PropertyType<
|
|
943
|
+
UserDTO,
|
|
944
|
+
"externshipDemoAccessActive"
|
|
945
|
+
>;
|
|
946
|
+
|
|
947
|
+
/**
|
|
948
|
+
* Экстернат ждёт оплаты: когда закроется доступ и по какому договору.
|
|
949
|
+
* @returns Объект с датой и id договора либо `null`, если долга нет.
|
|
950
|
+
*/
|
|
951
|
+
externshipPaymentRequired: $PropertyType<
|
|
952
|
+
UserDTO,
|
|
953
|
+
"externshipPaymentRequired"
|
|
954
|
+
>;
|
|
955
|
+
|
|
956
|
+
/**
|
|
957
|
+
* Показывать промо-шапку экстерната.
|
|
958
|
+
* @returns `true`, если показывать.
|
|
959
|
+
*/
|
|
960
|
+
externshipPromoHeaderOn: $PropertyType<UserDTO, "externshipPromoHeaderOn">;
|
|
961
|
+
|
|
962
|
+
/**
|
|
963
|
+
* Доступен раздел прогресса подготовки к экзаменам.
|
|
964
|
+
* @returns `true`, если доступен.
|
|
965
|
+
*/
|
|
966
|
+
hasExamProgressAccess: $PropertyType<UserDTO, "hasExamProgressAccess">;
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Доступны итоги года; их адрес — `recapUuid`.
|
|
970
|
+
* @returns `true`, если доступны.
|
|
971
|
+
*/
|
|
972
|
+
hasYearlyRecapAccess: $PropertyType<UserDTO, "hasYearlyRecapAccess">;
|
|
973
|
+
|
|
974
|
+
/**
|
|
975
|
+
* Управляет аттестационной школой.
|
|
976
|
+
* @returns `true`, `false` либо `null`, если бэкенд не считал.
|
|
977
|
+
*/
|
|
978
|
+
isAttestationSchoolManager: $PropertyType<
|
|
979
|
+
UserDTO,
|
|
980
|
+
"isAttestationSchoolManager"
|
|
981
|
+
>;
|
|
982
|
+
|
|
983
|
+
/**
|
|
984
|
+
* Посетитель — наставник.
|
|
985
|
+
* @returns `true`, если наставник.
|
|
986
|
+
*/
|
|
987
|
+
isMentor: $PropertyType<UserDTO, "isMentor">;
|
|
988
|
+
|
|
989
|
+
/**
|
|
990
|
+
* Доступна серия ежедневных занятий с опытом (XP-стрик).
|
|
991
|
+
* @returns `true`, если доступна.
|
|
992
|
+
*/
|
|
993
|
+
isXpStreakAvailable: $PropertyType<UserDTO, "isXpStreakAvailable">;
|
|
994
|
+
|
|
995
|
+
/**
|
|
996
|
+
* Таблица лидеров: доступна ли посетителю и готов ли он к ней (выбор курса).
|
|
997
|
+
* @returns Объект состояний либо `null`, если посетитель вне программы.
|
|
998
|
+
*/
|
|
999
|
+
leaderboard: $PropertyType<UserDTO, "leaderboard">;
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* Состояние доступа к таблице лидеров.
|
|
1003
|
+
* @returns `unavailable`, `available`, `vacation` либо `disabled`.
|
|
1004
|
+
*/
|
|
1005
|
+
leaderboardAccessState: $PropertyType<UserDTO, "leaderboardAccessState">;
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* Как устроены учебные цели у посетителя.
|
|
1009
|
+
* @returns `enabled`, `disabled`, `optional` либо `required`.
|
|
1010
|
+
*/
|
|
1011
|
+
learningGoalsAccessState: $PropertyType<UserDTO, "learningGoalsAccessState">;
|
|
1012
|
+
|
|
1013
|
+
/**
|
|
1014
|
+
* Мессенджеры, на которые посетитель подписан на уведомления.
|
|
1015
|
+
* @returns Список либо `null`, если бэкенд не считал.
|
|
1016
|
+
*/
|
|
1017
|
+
messengerSubscriptions: $PropertyType<UserDTO, "messengerSubscriptions">;
|
|
1018
|
+
|
|
1019
|
+
/**
|
|
1020
|
+
* Пора предлагать продление занятий с репетитором.
|
|
1021
|
+
* @returns `true`, если пора.
|
|
1022
|
+
*/
|
|
1023
|
+
needToPromoteRenewalWithCoach: $PropertyType<
|
|
1024
|
+
UserDTO,
|
|
1025
|
+
"needToPromoteRenewalWithCoach"
|
|
1026
|
+
>;
|
|
1027
|
+
|
|
1028
|
+
/**
|
|
1029
|
+
* Показывать баннер курсов следующего учебного года.
|
|
1030
|
+
* @returns `true`, если показывать.
|
|
1031
|
+
*/
|
|
1032
|
+
nextYearCoursesBannerAvailable: $PropertyType<
|
|
1033
|
+
UserDTO,
|
|
1034
|
+
"nextYearCoursesBannerAvailable"
|
|
1035
|
+
>;
|
|
1036
|
+
|
|
1037
|
+
/**
|
|
1038
|
+
* Пароль задан — вход не только через код или соцсеть.
|
|
1039
|
+
* @returns `true`, `false` либо `null`, если бэкенд не считал.
|
|
1040
|
+
*/
|
|
1041
|
+
passwordSet: $PropertyType<UserDTO, "passwordSet">;
|
|
1042
|
+
|
|
1043
|
+
/**
|
|
1044
|
+
* Реферальный код для программы «приведи друга».
|
|
1045
|
+
* @returns Строка либо `null`, если код не выдан.
|
|
1046
|
+
*/
|
|
1047
|
+
referralCode: $PropertyType<UserDTO, "referralCode">;
|
|
1048
|
+
|
|
1049
|
+
/**
|
|
1050
|
+
* Доступен онбординг целевых действий.
|
|
1051
|
+
* @returns `true`, если доступен.
|
|
1052
|
+
*/
|
|
1053
|
+
targetActionsOnboardingAvailable: $PropertyType<
|
|
1054
|
+
UserDTO,
|
|
1055
|
+
"targetActionsOnboardingAvailable"
|
|
1056
|
+
>;
|
|
1057
|
+
|
|
287
1058
|
/**
|
|
288
1059
|
* Идёт ли сейчас окно пролонгации договора домашней школы.
|
|
289
1060
|
*
|
|
290
1061
|
* Границы включаются: последний день окна ещё считается пролонгацией. Не заданная граница
|
|
291
1062
|
* означает, что окна нет вовсе, а не что оно бесконечно.
|
|
1063
|
+
* @returns `true`, если сегодня внутри окна включительно
|
|
292
1064
|
*/
|
|
293
1065
|
isProlongationBetweenDates(): boolean;
|
|
1066
|
+
|
|
1067
|
+
/**
|
|
1068
|
+
* Гость — сущность с умолчаниями всех полей и признаком `isDefaultUser()`.
|
|
1069
|
+
* @returns Новая сущность на каждый вызов: умолчания общие на процесс, копия своя.
|
|
1070
|
+
*/
|
|
294
1071
|
static createDefault(): User;
|
|
1072
|
+
|
|
1073
|
+
/**
|
|
1074
|
+
* Форма посетителя по умолчанию ДАННЫМИ — гость со всеми полями: тому, кто отдаёт `UserDTO`
|
|
1075
|
+
* наружу (хост — приложениям), нужна полная форма, а не сущность с методами. Своя копия на
|
|
1076
|
+
* вызов: умолчания общие на процесс, и правка чужой копии их не тронет.
|
|
1077
|
+
* @returns Новая копия умолчаний на каждый вызов
|
|
1078
|
+
*/
|
|
1079
|
+
static defaultDto(): UserDTO;
|
|
1080
|
+
|
|
1081
|
+
/**
|
|
1082
|
+
* Сущность из профиля бэкенда (`UserDTO` в camelCase): строковые поля чистятся от null-байтов
|
|
1083
|
+
* и пробелов по краям, остальное берётся как есть.
|
|
1084
|
+
* @param input - Профиль в форме `UserDTO`
|
|
1085
|
+
* @returns Сущность над копией профиля: исходный объект не трогается
|
|
1086
|
+
*/
|
|
295
1087
|
static fromApi(input: mixed): User;
|
|
1088
|
+
|
|
1089
|
+
/**
|
|
1090
|
+
* Сущность собрана из умолчаний (`createDefault`), а не из профиля бэкенда.
|
|
1091
|
+
* @returns `true` у гостя по умолчанию
|
|
1092
|
+
*/
|
|
296
1093
|
isDefaultUser(): boolean;
|
|
1094
|
+
|
|
1095
|
+
/**
|
|
1096
|
+
* Посетитель вошёл — у него есть идентификатор на бэкенде.
|
|
1097
|
+
* @returns `true`, если `id` задан и положителен
|
|
1098
|
+
*/
|
|
297
1099
|
isLoggedIn(): boolean;
|
|
298
1100
|
|
|
299
1101
|
/**
|
|
300
|
-
*
|
|
301
|
-
* @returns
|
|
1102
|
+
* Роль либо класс словом — для подписи в интерфейсе.
|
|
1103
|
+
* @returns «Дошкольник» для нулевого класса, «Выпускник» без класса, иначе класс («5 класс»)
|
|
302
1104
|
*/
|
|
303
1105
|
getPupilRole(): UserRole;
|
|
304
1106
|
|
|
305
1107
|
/**
|
|
306
|
-
*
|
|
307
|
-
* @returns
|
|
1108
|
+
* Роль словом — по флагам профиля, первый совпавший: репетитор, учитель, родитель.
|
|
1109
|
+
* @returns «Репетитор», «Учитель», «Родитель», иначе роль ученика из `getPupilRole()`
|
|
308
1110
|
*/
|
|
309
1111
|
getRole: () => UserRole;
|
|
310
1112
|
|
|
311
1113
|
/**
|
|
312
|
-
*
|
|
313
|
-
* @
|
|
314
|
-
* @return {string} 'Пупкин В.'
|
|
1114
|
+
* Фамилия с инициалами имени и отчества — подпись в списках.
|
|
1115
|
+
* @returns Строка вида «Пупкин В. И.»; без отчества — «Пупкин В.»
|
|
315
1116
|
*/
|
|
316
1117
|
getInitials: () => string;
|
|
1118
|
+
|
|
1119
|
+
/**
|
|
1120
|
+
* Профиль строкой JSON — для печати в документ и передачи по сети.
|
|
1121
|
+
* @returns JSON полей сущности
|
|
1122
|
+
*/
|
|
317
1123
|
toJson(): string;
|
|
1124
|
+
|
|
1125
|
+
/**
|
|
1126
|
+
* Посетитель данными — то, что едет по сети и в состояние: сущность с методами не
|
|
1127
|
+
* сериализуется. Своя копия на вызов: сущность неизменяема, и правка копии её не тронет.
|
|
1128
|
+
* @returns Копия полей сущности данными
|
|
1129
|
+
*/
|
|
1130
|
+
toDto(): UserDTO;
|
|
318
1131
|
}
|
|
319
1132
|
declare type AppOptions = {
|
|
320
1133
|
activePromoBanner?: number,
|
|
@@ -428,252 +1241,6 @@ declare class AppOptionsService {
|
|
|
428
1241
|
*/
|
|
429
1242
|
getAppOptions(): Promise<AppOptions>;
|
|
430
1243
|
}
|
|
431
|
-
declare interface FoxfordAntibotConfig {
|
|
432
|
-
antibotFrameSrc?: string;
|
|
433
|
-
antibotOnload?: (e: Event) => void;
|
|
434
|
-
antibotOnerror?: () => void;
|
|
435
|
-
debug?: boolean;
|
|
436
|
-
}
|
|
437
|
-
declare class FoxfordAntibot {
|
|
438
|
-
static FOXFORD_ANTIBOT_URL: string;
|
|
439
|
-
static DEFAULT_CONFIG: {
|
|
440
|
-
antibotFrameSrc: string,
|
|
441
|
-
...
|
|
442
|
-
};
|
|
443
|
-
static FRAME_CLASSNAME: string;
|
|
444
|
-
constructor(config?: FoxfordAntibotConfig): this;
|
|
445
|
-
createAntibotFrame: (params: {
|
|
446
|
-
src: string,
|
|
447
|
-
onload?: (_e: Event) => void,
|
|
448
|
-
onerror?: () => void,
|
|
449
|
-
...
|
|
450
|
-
}) => void;
|
|
451
|
-
}
|
|
452
|
-
declare type Widget = {
|
|
453
|
-
name:
|
|
454
|
-
| "menu"
|
|
455
|
-
| "reviews"
|
|
456
|
-
| "featuredCoaches"
|
|
457
|
-
| "coachEnrollment"
|
|
458
|
-
| "shortForm"
|
|
459
|
-
| "userTypePrompt"
|
|
460
|
-
| "teachersSlider"
|
|
461
|
-
| "externshipFormats",
|
|
462
|
-
options: { [key: string]: any, ... },
|
|
463
|
-
container?: HTMLElement,
|
|
464
|
-
...
|
|
465
|
-
};
|
|
466
|
-
declare type WidgetsInitConfig = {
|
|
467
|
-
version?: "latest" | string,
|
|
468
|
-
locale?: "ru",
|
|
469
|
-
...
|
|
470
|
-
};
|
|
471
|
-
declare type WidgetsConfig = {
|
|
472
|
-
analyticContext?: {
|
|
473
|
-
prefix: string,
|
|
474
|
-
module: string,
|
|
475
|
-
payload?: { [key: any]: any, ... },
|
|
476
|
-
...
|
|
477
|
-
},
|
|
478
|
-
rootColors?: boolean,
|
|
479
|
-
loadFonts?: boolean,
|
|
480
|
-
widgets: Array<Widget>,
|
|
481
|
-
...
|
|
482
|
-
} & WidgetsInitConfig;
|
|
483
|
-
declare class Widgets {
|
|
484
|
-
static ENTRY: string[];
|
|
485
|
-
static DEFAULT_CONFIG: WidgetsInitConfig;
|
|
486
|
-
constructor(config: WidgetsInitConfig | void, apiInstance: ApiInstance): this;
|
|
487
|
-
create(config: WidgetsConfig): Promise<void>;
|
|
488
|
-
update(name: string, config: Widget): Promise<void>;
|
|
489
|
-
static appendScript(src: string): Promise<mixed>;
|
|
490
|
-
}
|
|
491
|
-
declare type ProductTypeItem = {
|
|
492
|
-
type: string,
|
|
493
|
-
id: number,
|
|
494
|
-
description: string,
|
|
495
|
-
title: string,
|
|
496
|
-
discipline: {
|
|
497
|
-
id: number,
|
|
498
|
-
name: string,
|
|
499
|
-
...
|
|
500
|
-
},
|
|
501
|
-
teacher: {
|
|
502
|
-
id: number,
|
|
503
|
-
long_name: string,
|
|
504
|
-
description: string,
|
|
505
|
-
experience: number,
|
|
506
|
-
photo_url: string,
|
|
507
|
-
photo_large_url: string,
|
|
508
|
-
...
|
|
509
|
-
},
|
|
510
|
-
levels: Array<{
|
|
511
|
-
id: number,
|
|
512
|
-
name: string,
|
|
513
|
-
...
|
|
514
|
-
}>,
|
|
515
|
-
...
|
|
516
|
-
};
|
|
517
|
-
declare type ProductPack = {
|
|
518
|
-
name: string,
|
|
519
|
-
description: string,
|
|
520
|
-
meta_title: string,
|
|
521
|
-
meta_description: string,
|
|
522
|
-
published: true,
|
|
523
|
-
content_description: string,
|
|
524
|
-
disciplines_scope: string,
|
|
525
|
-
guaranteed_admission: true,
|
|
526
|
-
grade_names: string,
|
|
527
|
-
is_purchased: false,
|
|
528
|
-
learning_flow: {
|
|
529
|
-
title: string,
|
|
530
|
-
steps: Array<{
|
|
531
|
-
header: string,
|
|
532
|
-
description: string,
|
|
533
|
-
...
|
|
534
|
-
}>,
|
|
535
|
-
...
|
|
536
|
-
},
|
|
537
|
-
offers: {
|
|
538
|
-
intro: string,
|
|
539
|
-
items: Array<{
|
|
540
|
-
title: string,
|
|
541
|
-
description: string,
|
|
542
|
-
...
|
|
543
|
-
}>,
|
|
544
|
-
...
|
|
545
|
-
},
|
|
546
|
-
price_block: {
|
|
547
|
-
price: number,
|
|
548
|
-
initial_price: number,
|
|
549
|
-
title: string,
|
|
550
|
-
description: string,
|
|
551
|
-
points: Array<string>,
|
|
552
|
-
price_per_month: number,
|
|
553
|
-
initial_price_per_month: number,
|
|
554
|
-
...
|
|
555
|
-
},
|
|
556
|
-
product_pack_items: Array<ProductTypeItem>,
|
|
557
|
-
faq_items: Array<{
|
|
558
|
-
question: string,
|
|
559
|
-
answer: string,
|
|
560
|
-
...
|
|
561
|
-
}>,
|
|
562
|
-
landing_image_urls: Array<string>,
|
|
563
|
-
...
|
|
564
|
-
};
|
|
565
|
-
declare interface CartItemDTO {
|
|
566
|
-
cart_item_type: CartItemResourceType;
|
|
567
|
-
resource_id: number;
|
|
568
|
-
}
|
|
569
|
-
declare type FoxfordConfig = {
|
|
570
|
-
host?: string,
|
|
571
|
-
|
|
572
|
-
/**
|
|
573
|
-
* @deprecated
|
|
574
|
-
*/
|
|
575
|
-
widgetsVersion?: "latest" | string,
|
|
576
|
-
antibot?: boolean,
|
|
577
|
-
antibotConfig?: FoxfordAntibotConfig,
|
|
578
|
-
api?: ApiConfig,
|
|
579
|
-
captchaConfig?: () => CaptchaConfig,
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* @deprecated Не используйте инициализацию виджетов через SDK
|
|
583
|
-
*/
|
|
584
|
-
widgetsConfig?: WidgetsInitConfig,
|
|
585
|
-
...
|
|
586
|
-
};
|
|
587
|
-
declare type Reasons =
|
|
588
|
-
| "additional_education_free_period_started"
|
|
589
|
-
| "announcement_clicked"
|
|
590
|
-
| "catalog_filtered"
|
|
591
|
-
| "coach_intro_lesson_scheduled"
|
|
592
|
-
| "coach_landing_visited"
|
|
593
|
-
| "course_conspect_visited"
|
|
594
|
-
| "course_landing_visited"
|
|
595
|
-
| "event_scheduled"
|
|
596
|
-
| "event_visited"
|
|
597
|
-
| "exam_rehearsal_page_visited"
|
|
598
|
-
| "exam_rehearsal_passed"
|
|
599
|
-
| "externship_contract_draft_created"
|
|
600
|
-
| "externship_demo_access"
|
|
601
|
-
| "externship_iep_selected"
|
|
602
|
-
| "externship_intendance_expressed"
|
|
603
|
-
| "interactive_training_course_visited"
|
|
604
|
-
| "externship_landing_visited"
|
|
605
|
-
| "externship_lead_request"
|
|
606
|
-
| "mini_group_landing_visited"
|
|
607
|
-
| "olympiad_page_visited"
|
|
608
|
-
| "onboarding"
|
|
609
|
-
| "onboarding_finished"
|
|
610
|
-
| "product_pack_landing_visited"
|
|
611
|
-
| "promos_coach_recommendation_clicked"
|
|
612
|
-
| "promos_course_recommendation_clicked"
|
|
613
|
-
| "promos_results_filtered"
|
|
614
|
-
| "subscription_landing_visited"
|
|
615
|
-
| "teacher_course_visited"
|
|
616
|
-
| "training_page_visited"
|
|
617
|
-
| "training_passed"
|
|
618
|
-
| "wiki_visited"
|
|
619
|
-
| "project_landing_cta_clicked";
|
|
620
|
-
declare type ProductFormats =
|
|
621
|
-
| "coach_course"
|
|
622
|
-
| "course"
|
|
623
|
-
| "event"
|
|
624
|
-
| "exam_rehearsal"
|
|
625
|
-
| "externship"
|
|
626
|
-
| "game"
|
|
627
|
-
| "interactive_trainings"
|
|
628
|
-
| "mini_group"
|
|
629
|
-
| "olympiad"
|
|
630
|
-
| "product_pack"
|
|
631
|
-
| "teacher_course"
|
|
632
|
-
| "trainings";
|
|
633
|
-
declare type UserInterests = {
|
|
634
|
-
businessUnitAbbrs?: BusinessUnitAbbreviation[] | null,
|
|
635
|
-
disciplineId?: number | number[] | null,
|
|
636
|
-
gradeId?: number | number[] | null,
|
|
637
|
-
levelId?: number | number[] | null,
|
|
638
|
-
productId?: number | null,
|
|
639
|
-
productFormat?: ProductFormats | null,
|
|
640
|
-
reason?: Reasons | null,
|
|
641
|
-
...
|
|
642
|
-
};
|
|
643
|
-
declare interface CommunicationSubscriptions {
|
|
644
|
-
subscriptionNews?: boolean;
|
|
645
|
-
subscriptionMaterials?: boolean;
|
|
646
|
-
subscriptionEvents?: boolean;
|
|
647
|
-
subscriptionPromos?: boolean;
|
|
648
|
-
subscriptionReminders?: boolean;
|
|
649
|
-
subscriptionMedia?: boolean;
|
|
650
|
-
subscriptionExternship?: boolean;
|
|
651
|
-
subscriptionExternal?: boolean;
|
|
652
|
-
}
|
|
653
|
-
declare interface LoginByPhoneParams {
|
|
654
|
-
onEmailRequest: (phoneCheckResponse: {
|
|
655
|
-
email?: string,
|
|
656
|
-
fakeEmail?: boolean,
|
|
657
|
-
state: "new" | "confirmed" | "not_confirmed",
|
|
658
|
-
...
|
|
659
|
-
}) => Promise<string>;
|
|
660
|
-
onCodeRequest: () => Promise<string>;
|
|
661
|
-
onNameRequest: () => Promise<{
|
|
662
|
-
first_name: string,
|
|
663
|
-
last_name: string,
|
|
664
|
-
...
|
|
665
|
-
}>;
|
|
666
|
-
onConfirmationCodeResponse: (confirmationCodeResponse: {
|
|
667
|
-
nextDeliveryAt: string,
|
|
668
|
-
...
|
|
669
|
-
}) => void;
|
|
670
|
-
onConfirmationCodeError: (error: Error) => void;
|
|
671
|
-
}
|
|
672
|
-
declare interface LoginOrRegistrationResponse {
|
|
673
|
-
redirectUrl?: string;
|
|
674
|
-
registered?: boolean;
|
|
675
|
-
type?: string;
|
|
676
|
-
}
|
|
677
1244
|
declare class CartService {
|
|
678
1245
|
constructor(apiInstance: ApiInstance): this;
|
|
679
1246
|
createCartItem(id: number, type: CartItemResourceType): CartItemDTO;
|