zdu-student-api 1.1.4 → 1.1.6

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/README.md CHANGED
@@ -4,17 +4,28 @@ API для **Житомирського державного університ
4
4
 
5
5
  Бібліотека надає програмний доступ до відкритих сервісів університету, зокрема:
6
6
 
7
- * 📅 розклад занять студентів / викладачів / аудиторій
8
- * 🚪 зайняті / вільні аудиторії
9
- * 🏫 списки аудиторій
10
- * 👥 списки груп
11
- * 👨‍🏫 списки викладачів
7
+ - 📅 розклад занять студентів / викладачів / аудиторій
8
+ - 🚪 зайняті / вільні аудиторії
9
+ - 🏫 списки аудиторій
10
+ - 👥 списки груп
11
+ - 👨‍🏫 списки викладачів
12
+
13
+ #### BETA API:
14
+
15
+ - 🔑 Авторизація в кабінеті студента
16
+ - 📝 Отримання анкетних данних студента
17
+ - 📚 Отримання дисциплін студента
18
+ - 📊 Отримання оцінок з окремого предмета
19
+ - 👨‍💻 Клас кабінету для спрощеного керування функціями, який включає:
20
+ - - 🔐 Авторизація
21
+ - - 📂 Отримання всіх данних
22
+ - - ✅ Перевірка сесії
23
+ - - 📈 Отримання всіх оцінок з усіх дисциплін
12
24
 
13
25
  ### 🔮 У планах
14
26
 
15
- * API кабінету студента
16
- * оцінки
17
- * рейтинги
27
+ - стабільне API кабінету студента
28
+ - Отримання історії оцінок з усіх предметів
18
29
 
19
30
  > ⚠️ Проєкт **не є офіційним** API університету.
20
31
 
@@ -42,11 +53,11 @@ schedule.rosText = true;
42
53
  schedule.allStreamComponents = true;
43
54
 
44
55
  try {
45
- const sc = await schedule.getSchedule();
46
- console.log('Розклад:', sc);
56
+ const sc = await schedule.getSchedule();
57
+ console.log('Розклад:', sc);
47
58
  } catch (err: any) {
48
- console.error(err.message);
49
- console.error(scheduleErrors[JSON.parse(err.message).errorcode]);
59
+ console.error(err.message);
60
+ console.error(scheduleErrors[JSON.parse(err.message).errorcode]);
50
61
  }
51
62
  ```
52
63
 
@@ -1,68 +1,68 @@
1
- import { AudienceRoom, Blocks } from './types';
1
+ import { AudienceRoom, Blocks } from './types.js';
2
2
  /**
3
3
  * Клас розкладу
4
4
  * @category Audience
5
5
  */
6
6
  export declare class Audience {
7
7
  /**
8
- * Назва корпусу
9
- */
8
+ * Назва корпусу
9
+ */
10
10
  blockName?: Blocks;
11
11
  /**
12
- * Номер пари
13
- */
12
+ * Номер пари
13
+ */
14
14
  lesson: number;
15
15
  /**
16
- * Тип аудиторій який є в даному корпусі
17
- */
16
+ * Тип аудиторій який є в даному корпусі
17
+ */
18
18
  roomType?: string;
19
19
  /**
20
- * Кількість місць не менше ніж
21
- */
20
+ * Кількість місць не менше ніж
21
+ */
22
22
  size_min?: number;
23
23
  /**
24
- * Кількість місць не більше ніж
25
- */
24
+ * Кількість місць не більше ніж
25
+ */
26
26
  size_max?: number;
27
27
  /**
28
- * Дата аудиторії
29
- */
28
+ * Дата аудиторії
29
+ */
30
30
  roomsDate: Date;
31
31
  /**
32
- * Наявніть доп. обладнання типу 1, 2, 3, 4, 5, 6, 7, 8
33
- */
32
+ * Наявніть доп. обладнання типу 1, 2, 3, 4, 5, 6, 7, 8
33
+ */
34
34
  dops: number[];
35
35
  /**
36
- * Повертає список аудиторій
37
- *
38
- * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
39
- *
40
- * @example
41
- * ```ts
42
- * import { Audience } from "./audience.ts";
43
- * const audience = new Audience();
44
- * try {
45
- * const audiences = await audience.getAudience();
46
- * console.log("Аудиторії:", audiences); // Поверне список аудиторій
47
- * } catch (err: any) {
48
- * console.error(err.message);
49
- * }
50
- * ```
51
- *
52
- * @remarks
53
- * У `err.message` може повертатися простий текст помилки,
54
- * або об’єкт у форматі:
55
- * ```JSON
56
- * {
57
- * "error_message": "Текст помилки",
58
- * "errorcode": "Код помилки"
59
- * }
60
- * ```
61
- *
62
- * Де:
63
- * - `error_message` - текст помилки відповідно до {@link scheduleErrors}
64
- * - `errorcode` - код помилки відповідно до {@link scheduleErrors}
65
- */
36
+ * Повертає список аудиторій
37
+ *
38
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * import { Audience } from "./audience.ts";
43
+ * const audience = new Audience();
44
+ * try {
45
+ * const audiences = await audience.getAudience();
46
+ * console.log("Аудиторії:", audiences); // Поверне список аудиторій
47
+ * } catch (err: any) {
48
+ * console.error(err.message);
49
+ * }
50
+ * ```
51
+ *
52
+ * @remarks
53
+ * У `err.message` може повертатися простий текст помилки,
54
+ * або об’єкт у форматі:
55
+ * ```JSON
56
+ * {
57
+ * "error_message": "Текст помилки",
58
+ * "errorcode": "Код помилки"
59
+ * }
60
+ * ```
61
+ *
62
+ * Де:
63
+ * - `error_message` - текст помилки відповідно до {@link scheduleErrors}
64
+ * - `errorcode` - код помилки відповідно до {@link scheduleErrors}
65
+ */
66
66
  getAudience(): Promise<AudienceRoom[]>;
67
67
  private encodeCP1251;
68
68
  }
package/dist/audience.js CHANGED
@@ -6,72 +6,72 @@ import fetch from 'cross-fetch';
6
6
  */
7
7
  export class Audience {
8
8
  /**
9
- * Назва корпусу
10
- */
9
+ * Назва корпусу
10
+ */
11
11
  blockName;
12
12
  /**
13
- * Номер пари
14
- */
13
+ * Номер пари
14
+ */
15
15
  lesson = 1;
16
16
  /**
17
- * Тип аудиторій який є в даному корпусі
18
- */
17
+ * Тип аудиторій який є в даному корпусі
18
+ */
19
19
  roomType;
20
20
  /**
21
- * Кількість місць не менше ніж
22
- */
21
+ * Кількість місць не менше ніж
22
+ */
23
23
  size_min;
24
24
  /**
25
- * Кількість місць не більше ніж
26
- */
25
+ * Кількість місць не більше ніж
26
+ */
27
27
  size_max;
28
28
  /**
29
- * Дата аудиторії
30
- */
29
+ * Дата аудиторії
30
+ */
31
31
  roomsDate = new Date();
32
32
  /**
33
- * Наявніть доп. обладнання типу 1, 2, 3, 4, 5, 6, 7, 8
34
- */
33
+ * Наявніть доп. обладнання типу 1, 2, 3, 4, 5, 6, 7, 8
34
+ */
35
35
  dops = [];
36
36
  /**
37
- * Повертає список аудиторій
38
- *
39
- * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
40
- *
41
- * @example
42
- * ```ts
43
- * import { Audience } from "./audience.ts";
44
- * const audience = new Audience();
45
- * try {
46
- * const audiences = await audience.getAudience();
47
- * console.log("Аудиторії:", audiences); // Поверне список аудиторій
48
- * } catch (err: any) {
49
- * console.error(err.message);
50
- * }
51
- * ```
52
- *
53
- * @remarks
54
- * У `err.message` може повертатися простий текст помилки,
55
- * або об’єкт у форматі:
56
- * ```JSON
57
- * {
58
- * "error_message": "Текст помилки",
59
- * "errorcode": "Код помилки"
60
- * }
61
- * ```
62
- *
63
- * Де:
64
- * - `error_message` - текст помилки відповідно до {@link scheduleErrors}
65
- * - `errorcode` - код помилки відповідно до {@link scheduleErrors}
66
- */
37
+ * Повертає список аудиторій
38
+ *
39
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * import { Audience } from "./audience.ts";
44
+ * const audience = new Audience();
45
+ * try {
46
+ * const audiences = await audience.getAudience();
47
+ * console.log("Аудиторії:", audiences); // Поверне список аудиторій
48
+ * } catch (err: any) {
49
+ * console.error(err.message);
50
+ * }
51
+ * ```
52
+ *
53
+ * @remarks
54
+ * У `err.message` може повертатися простий текст помилки,
55
+ * або об’єкт у форматі:
56
+ * ```JSON
57
+ * {
58
+ * "error_message": "Текст помилки",
59
+ * "errorcode": "Код помилки"
60
+ * }
61
+ * ```
62
+ *
63
+ * Де:
64
+ * - `error_message` - текст помилки відповідно до {@link scheduleErrors}
65
+ * - `errorcode` - код помилки відповідно до {@link scheduleErrors}
66
+ */
67
67
  async getAudience() {
68
68
  const date = this.roomsDate.toLocaleDateString('uk-UA', {
69
69
  day: '2-digit',
70
70
  month: '2-digit',
71
- year: 'numeric'
71
+ year: 'numeric',
72
72
  });
73
73
  let dops = '';
74
- this.dops.forEach(dop => {
74
+ this.dops.forEach((dop) => {
75
75
  dops += `&dop_${dop}=yes`;
76
76
  });
77
77
  const response = await fetch(`https://dekanat.zu.edu.ua/cgi-bin/timetable_export.cgi?req_type=free_rooms_list&&block_name=${this.blockName !== undefined ? this.encodeCP1251(this.blockName) : ''}&size_min=${this.size_min !== undefined ? this.size_min : ''}&size_max=${this.size_max !== undefined ? this.size_max : ''}&room_type=${this.roomType !== undefined ? this.encodeCP1251(this.roomType) : ''}&begin_date=${date}&lesson=${this.lesson}${dops}&req_format=json&coding_mode=UTF8&bs=%D1%F4%EE%F0%EC%F3%E2%E0%F2%E8+%E7%E0%EF%E8%F2`);
@@ -79,12 +79,14 @@ export class Audience {
79
79
  throw new Error(`HTTP error ${response.status}: ${response.statusText}`);
80
80
  const data = await response.json();
81
81
  if (data.psrozklad_export.code !== '0') {
82
- throw new Error(JSON.stringify(data.psrozklad_export.error) || "Unknown error");
82
+ throw new Error(JSON.stringify(data.psrozklad_export.error) || 'Unknown error');
83
83
  }
84
84
  return data.psrozklad_export.free_rooms.rooms;
85
85
  }
86
86
  encodeCP1251(str) {
87
87
  const buf = iconv.encode(str, 'win1251');
88
- return Array.from(buf).map(b => '%' + b.toString(16).toUpperCase().padStart(2, '0')).join('');
88
+ return Array.from(buf)
89
+ .map((b) => '%' + b.toString(16).toUpperCase().padStart(2, '0'))
90
+ .join('');
89
91
  }
90
92
  }
@@ -0,0 +1,79 @@
1
+ import { Discipline, Disciplines, Data, Scores } from './types.js';
2
+ /**
3
+ * Клас кабінету студента
4
+ * @category Cabinet
5
+ */
6
+ export declare class Cabinet {
7
+ /**
8
+ * Прізвище користувача
9
+ */
10
+ login: string;
11
+ /**
12
+ * Пароль від кабінету студента
13
+ */
14
+ password: string;
15
+ /**
16
+ * ID сесії користувача
17
+ */
18
+ sesID?: string;
19
+ /**
20
+ * GUID сесії з cookie
21
+ */
22
+ sessGUID?: string;
23
+ /**
24
+ * Семестр для пошуку оцінок (0 - перший, 1 - другий)
25
+ */
26
+ semester: 0 | 1;
27
+ /**
28
+ * Список дисциплін {@link Discipline}
29
+ */
30
+ disciplines: Discipline[];
31
+ /**
32
+ * Данні студента {@link Data}
33
+ */
34
+ data?: Data;
35
+ /**
36
+ * Оціки з усіх предметів {@link Scores}
37
+ */
38
+ allScores?: Scores[];
39
+ /**
40
+ * Конструктор
41
+ * @param login - Прізвище користувача
42
+ * @param password - Пароль
43
+ */
44
+ constructor(login: string, password: string);
45
+ /**
46
+ * Авторизація
47
+ */
48
+ auth(login?: string, password?: string): Promise<boolean>;
49
+ /**
50
+ * Базове значення семестру
51
+ */
52
+ private setSemester;
53
+ /**
54
+ * Отримання всіх данних
55
+ */
56
+ loadData(): Promise<boolean>;
57
+ /**
58
+ * Відновлення сесії
59
+ */
60
+ setSession(sesID: string, sessGUID: string): Promise<boolean>;
61
+ /**
62
+ * Перевірка валідності сесії
63
+ */
64
+ isValidSession(): Promise<boolean>;
65
+ /**
66
+ * Отримати дисципліни поточного семестру студента
67
+ * @returns Масив дисциплін {@link Disciplines}
68
+ */
69
+ getDisciplines(): Promise<Disciplines>;
70
+ /**
71
+ * Отримати анкетні данні студента
72
+ * @returns Об'єкт {@link ata}
73
+ */
74
+ getData(): Promise<Data>;
75
+ /**
76
+ * Отримати оцінки з всіх предметів
77
+ */
78
+ getAllScores(semester?: 0 | 1): Promise<Scores[]>;
79
+ }
@@ -0,0 +1,162 @@
1
+ import { getSesId } from './sesId.js';
2
+ import { isValidSession } from './validSession.js';
3
+ import { getСurrentDisciplines } from './disciplines.js';
4
+ import { getData } from './data.js';
5
+ import { getScores } from './scores.js';
6
+ /**
7
+ * Клас кабінету студента
8
+ * @category Cabinet
9
+ */
10
+ export class Cabinet {
11
+ /**
12
+ * Прізвище користувача
13
+ */
14
+ login;
15
+ /**
16
+ * Пароль від кабінету студента
17
+ */
18
+ password;
19
+ /**
20
+ * ID сесії користувача
21
+ */
22
+ sesID;
23
+ /**
24
+ * GUID сесії з cookie
25
+ */
26
+ sessGUID;
27
+ /**
28
+ * Семестр для пошуку оцінок (0 - перший, 1 - другий)
29
+ */
30
+ semester = 0;
31
+ /**
32
+ * Список дисциплін {@link Discipline}
33
+ */
34
+ disciplines = [];
35
+ /**
36
+ * Данні студента {@link Data}
37
+ */
38
+ data;
39
+ /**
40
+ * Оціки з усіх предметів {@link Scores}
41
+ */
42
+ allScores;
43
+ /**
44
+ * Конструктор
45
+ * @param login - Прізвище користувача
46
+ * @param password - Пароль
47
+ */
48
+ constructor(login, password) {
49
+ this.login = login;
50
+ this.password = password;
51
+ }
52
+ /**
53
+ * Авторизація
54
+ */
55
+ async auth(login, password) {
56
+ const accountData = await getSesId(login ?? this.login, password ?? this.password);
57
+ this.setSemester();
58
+ if (accountData.ok) {
59
+ this.sesID = accountData.sesID;
60
+ this.sessGUID = accountData.sessGUID;
61
+ return true;
62
+ }
63
+ return false;
64
+ }
65
+ /**
66
+ * Базове значення семестру
67
+ */
68
+ setSemester() {
69
+ const year = new Date().getFullYear();
70
+ const febStart = new Date(year, 1, 1); // лютий = 1
71
+ const sepStart = new Date(year, 8, 1); // вересень = 8
72
+ const date = new Date();
73
+ if (!(date < febStart || date >= sepStart)) {
74
+ this.semester = 1;
75
+ }
76
+ }
77
+ /**
78
+ * Отримання всіх данних
79
+ */
80
+ async loadData() {
81
+ const one = (await this.getDisciplines()).ok;
82
+ const two = (await this.getData()).ok;
83
+ const three = (await this.getAllScores()).length > 0;
84
+ return one && two && three;
85
+ }
86
+ /**
87
+ * Відновлення сесії
88
+ */
89
+ async setSession(sesID, sessGUID) {
90
+ this.setSemester();
91
+ const ses = await isValidSession(sesID, sessGUID);
92
+ if (ses) {
93
+ this.sesID = sesID;
94
+ this.sessGUID = sessGUID;
95
+ }
96
+ return ses;
97
+ }
98
+ /**
99
+ * Перевірка валідності сесії
100
+ */
101
+ async isValidSession() {
102
+ if (!this.sesID || !this.sessGUID)
103
+ return false;
104
+ return await isValidSession(this.sesID, this.sessGUID);
105
+ }
106
+ /**
107
+ * Отримати дисципліни поточного семестру студента
108
+ * @returns Масив дисциплін {@link Disciplines}
109
+ */
110
+ async getDisciplines() {
111
+ if (!this.sesID || !this.sessGUID)
112
+ return { ok: false, disciplines: [] };
113
+ try {
114
+ const disciplinesData = await getСurrentDisciplines(this.sesID, this.sessGUID);
115
+ if (disciplinesData.ok) {
116
+ this.disciplines = disciplinesData.disciplines;
117
+ }
118
+ return disciplinesData;
119
+ }
120
+ catch {
121
+ return { ok: false, disciplines: [] };
122
+ }
123
+ }
124
+ /**
125
+ * Отримати анкетні данні студента
126
+ * @returns Об'єкт {@link ata}
127
+ */
128
+ async getData() {
129
+ if (!this.sesID || !this.sessGUID)
130
+ return { ok: false };
131
+ try {
132
+ const data = await getData(this.sesID, this.sessGUID);
133
+ if (data.ok) {
134
+ this.data = data;
135
+ }
136
+ return data;
137
+ }
138
+ catch {
139
+ return { ok: false };
140
+ }
141
+ }
142
+ /**
143
+ * Отримати оцінки з всіх предметів
144
+ */
145
+ async getAllScores(semester) {
146
+ if (!this.sesID || !this.sessGUID)
147
+ return [];
148
+ if (!this.disciplines?.length)
149
+ return [];
150
+ const targetSemester = semester ?? this.semester;
151
+ try {
152
+ const scorePromises = this.disciplines.map((discipline) => getScores(this.sesID, this.sessGUID, discipline.prId, targetSemester));
153
+ const results = await Promise.all(scorePromises);
154
+ const allScores = results.filter((scores) => scores.ok);
155
+ this.allScores = allScores;
156
+ return allScores;
157
+ }
158
+ catch {
159
+ return [];
160
+ }
161
+ }
162
+ }
@@ -0,0 +1,37 @@
1
+ import { Data } from './types.js';
2
+ /**
3
+ * Отримати анкетні дані студента
4
+ * @category Cabinet
5
+ * @param sesId - ID сесії користувача
6
+ * @param sessGUID - GUID сесії з cookie
7
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
8
+ * @example
9
+ * ```typescript
10
+ * const data = await getData(sesId, sessGUID);
11
+ * // {
12
+ * // ok: true,
13
+ * // fullName: 'Іванов Іван Іванович',
14
+ * // lastName: 'Іванов',
15
+ * // firstName: 'Іван',
16
+ * // middleName: 'Іванович',
17
+ * // birthDate: 'хх.хх.хххх',
18
+ * // gender: 'Чол',
19
+ * // country: 'УКРАЇНА',
20
+ * // email: 'student@example.com',
21
+ * // phones: ['+380(99)-123-45-67'],
22
+ * // faculty: 'Фізико-математичний факультет',
23
+ * // specialty: 'Середня освіта',
24
+ * // degree: 'бакалавр',
25
+ * // group: '23Бд-СОінф',
26
+ * // studyForm: 'Денна',
27
+ * // paymentForm: 'Держ.замовлення',
28
+ * // enrollmentOrder: 'ххх-К(ОС)',
29
+ * // enrollmentDate: 'хх.хх.2024',
30
+ * // studyDuration: '4 роки',
31
+ * // graduationDate: 'хх.хх.2028'
32
+ * // ...інші
33
+ * // }
34
+ * ```
35
+ * @returns Об'єкт з запарсеними даними {@link Data}
36
+ */
37
+ export declare function getData(sesId: string, sessGUID: string): Promise<Data>;
@@ -0,0 +1,69 @@
1
+ import fetch from 'cross-fetch';
2
+ import iconv from 'iconv-lite';
3
+ import { parseDataPageN3, parseDataPageN31 } from './parsers.js';
4
+ import { generateCookieString, isLoginPage } from './utils.js';
5
+ /**
6
+ * Отримати анкетні дані студента
7
+ * @category Cabinet
8
+ * @param sesId - ID сесії користувача
9
+ * @param sessGUID - GUID сесії з cookie
10
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
11
+ * @example
12
+ * ```typescript
13
+ * const data = await getData(sesId, sessGUID);
14
+ * // {
15
+ * // ok: true,
16
+ * // fullName: 'Іванов Іван Іванович',
17
+ * // lastName: 'Іванов',
18
+ * // firstName: 'Іван',
19
+ * // middleName: 'Іванович',
20
+ * // birthDate: 'хх.хх.хххх',
21
+ * // gender: 'Чол',
22
+ * // country: 'УКРАЇНА',
23
+ * // email: 'student@example.com',
24
+ * // phones: ['+380(99)-123-45-67'],
25
+ * // faculty: 'Фізико-математичний факультет',
26
+ * // specialty: 'Середня освіта',
27
+ * // degree: 'бакалавр',
28
+ * // group: '23Бд-СОінф',
29
+ * // studyForm: 'Денна',
30
+ * // paymentForm: 'Держ.замовлення',
31
+ * // enrollmentOrder: 'ххх-К(ОС)',
32
+ * // enrollmentDate: 'хх.хх.2024',
33
+ * // studyDuration: '4 роки',
34
+ * // graduationDate: 'хх.хх.2028'
35
+ * // ...інші
36
+ * // }
37
+ * ```
38
+ * @returns Об'єкт з запарсеними даними {@link Data}
39
+ */
40
+ export async function getData(sesId, sessGUID) {
41
+ try {
42
+ const result = { ok: false };
43
+ const cookieString = generateCookieString(sessGUID);
44
+ const response1 = await fetch(`https://dekanat.zu.edu.ua/cgi-bin/classman.cgi?n=31&sesID=${sesId}`, { headers: { Cookie: cookieString } });
45
+ const buffer1 = await response1.arrayBuffer();
46
+ const html1 = iconv.decode(Buffer.from(buffer1), 'windows-1251');
47
+ if (isLoginPage(html1))
48
+ return { ok: false };
49
+ const data1 = parseDataPageN31(html1);
50
+ Object.assign(result, data1);
51
+ const response2 = await fetch(`https://dekanat.zu.edu.ua/cgi-bin/classman.cgi?n=3&sesID=${sesId}`, {
52
+ headers: {
53
+ Cookie: cookieString,
54
+ },
55
+ });
56
+ const buffer2 = await response2.arrayBuffer();
57
+ const html2 = iconv.decode(Buffer.from(buffer2), 'windows-1251');
58
+ if (!isLoginPage(html2)) {
59
+ const data2 = parseDataPageN3(html2);
60
+ Object.assign(result, data2);
61
+ }
62
+ result.ok = true;
63
+ return result;
64
+ }
65
+ catch (e) {
66
+ console.error('Error in getData:', e);
67
+ throw e;
68
+ }
69
+ }
@@ -0,0 +1,19 @@
1
+ import { Disciplines } from './types.js';
2
+ /**
3
+ * Отримати всі дисципліни студента
4
+ * @category Cabinet
5
+ * @param sesId - ID сесії користувача
6
+ * @param sessGUID - GUID сесії з cookie
7
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
8
+ * @returns Масив дисциплін {@link Disciplines}
9
+ */
10
+ export declare function getDisciplines(sesId: string, sessGUID: string): Promise<Disciplines>;
11
+ /**
12
+ * Отримати поточні дисципліни студента
13
+ * @category Cabinet
14
+ * @param sesId - ID сесії користувача
15
+ * @param sessGUID - GUID сесії з cookie
16
+ * @throws {Error} Якщо виникають проблеми з запитом або дані некоректні.
17
+ * @returns Масив дисциплін {@link Disciplines}
18
+ */
19
+ export declare function getСurrentDisciplines(sesId: string, sessGUID: string): Promise<Disciplines>;