@iblai/data-layer 1.12.107 → 1.13.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/data-layer",
3
- "version": "1.12.106",
3
+ "version": "1.12.107",
4
4
  "description": "ibl.ai data layer",
5
5
  "main": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,10 +1,22 @@
1
- import type { UserProfile, GetUserMetadataArgs, ResetPasswordArgs, UpdateUserRoleRequest, UpdateUserAccountRequest, UploadProfileImageResponse, RemoveProfileImageResponse, UserPlatformMetadata, GetUserPlatformMetadataArgs, UpdateUserPlatformMetadataArgs } from './types';
1
+ import type { UserProfile, GetUserMetadataArgs, ResetPasswordArgs, UpdateUserRoleRequest, UpdateUserAccountRequest, UploadProfileImageResponse, RemoveProfileImageResponse, UserPlatformMetadata, GetUserPlatformMetadataArgs, UpdateUserPlatformMetadataArgs, UserRole, GetUserRolesArgs } from './types';
2
2
  export declare const userApiSlice: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, {
3
3
  getUserMetadata: import("@reduxjs/toolkit/query").QueryDefinition<GetUserMetadataArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserProfile, "userApiSlice", unknown>;
4
4
  updateUserMetadata: import("@reduxjs/toolkit/query").MutationDefinition<UserProfile, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, unknown, "userApiSlice", unknown>;
5
5
  updateUserAccount: import("@reduxjs/toolkit/query").MutationDefinition<UpdateUserAccountRequest, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, unknown, "userApiSlice", unknown>;
6
6
  resetPassword: import("@reduxjs/toolkit/query").MutationDefinition<ResetPasswordArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, void, "userApiSlice", unknown>;
7
7
  updateUserRole: import("@reduxjs/toolkit/query").MutationDefinition<UpdateUserRoleRequest, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, unknown, "userApiSlice", unknown>;
8
+ /**
9
+ * Every role assigned to a user, across all scopes — global, organization
10
+ * and individual course. A user with no roles returns `[]`.
11
+ *
12
+ * At least one of `username`, `email` or `userId` is required (400
13
+ * otherwise). Non-staff users can only look up their own roles; asking for
14
+ * someone else's returns 404.
15
+ *
16
+ * Defaults to the CMS/Studio host, where course-creation roles are fully
17
+ * resolvable; pass `useLms` to fall back to the deprecated LMS host.
18
+ */
19
+ getUserRoles: import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>;
8
20
  getUserMetadataEdx: import("@reduxjs/toolkit/query").QueryDefinition<GetUserMetadataArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, Partial<UserProfile>, "userApiSlice", unknown>;
9
21
  uploadProfileImage: import("@reduxjs/toolkit/query").MutationDefinition<{
10
22
  file: File | Blob;
@@ -926,6 +938,269 @@ export declare const useGetUserMetadataQuery: <R extends Record<string, any> = i
926
938
  } | undefined) => readonly [(arg: UpdateUserRoleRequest) => import("@reduxjs/toolkit/query").MutationActionCreatorResult<import("@reduxjs/toolkit/query").MutationDefinition<UpdateUserRoleRequest, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, unknown, "userApiSlice", unknown>>, import("@reduxjs/toolkit/query").TSHelpersNoInfer<R> & {
927
939
  originalArgs?: UpdateUserRoleRequest | undefined;
928
940
  reset: () => void;
941
+ }], useGetUserRolesQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
942
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
943
+ originalArgs?: undefined | undefined;
944
+ data?: undefined | undefined;
945
+ error?: undefined | undefined;
946
+ requestId?: undefined | undefined;
947
+ endpointName?: string | undefined;
948
+ startedTimeStamp?: undefined | undefined;
949
+ fulfilledTimeStamp?: undefined | undefined;
950
+ } & {
951
+ currentData?: UserRole[] | undefined;
952
+ isUninitialized: false;
953
+ isLoading: false;
954
+ isFetching: false;
955
+ isSuccess: false;
956
+ isError: false;
957
+ }, "isUninitialized"> & {
958
+ isUninitialized: true;
959
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
960
+ currentData?: UserRole[] | undefined;
961
+ isUninitialized: false;
962
+ isLoading: false;
963
+ isFetching: false;
964
+ isSuccess: false;
965
+ isError: false;
966
+ }, {
967
+ isLoading: true;
968
+ isFetching: boolean;
969
+ data: undefined;
970
+ } | ({
971
+ isSuccess: true;
972
+ isFetching: true;
973
+ error: undefined;
974
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
975
+ currentData?: UserRole[] | undefined;
976
+ isUninitialized: false;
977
+ isLoading: false;
978
+ isFetching: false;
979
+ isSuccess: false;
980
+ isError: false;
981
+ }, "data" | "fulfilledTimeStamp">>) | ({
982
+ isSuccess: true;
983
+ isFetching: false;
984
+ error: undefined;
985
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
986
+ currentData?: UserRole[] | undefined;
987
+ isUninitialized: false;
988
+ isLoading: false;
989
+ isFetching: false;
990
+ isSuccess: false;
991
+ isError: false;
992
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
993
+ isError: true;
994
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
995
+ currentData?: UserRole[] | undefined;
996
+ isUninitialized: false;
997
+ isLoading: false;
998
+ isFetching: false;
999
+ isSuccess: false;
1000
+ isError: false;
1001
+ }, "error">>)>> & {
1002
+ status: import("@reduxjs/toolkit/query").QueryStatus;
1003
+ }>(arg: GetUserRolesArgs | typeof import("@reduxjs/toolkit/query").skipToken, options?: (import("@reduxjs/toolkit/query").SubscriptionOptions & {
1004
+ skip?: boolean;
1005
+ refetchOnMountOrArgChange?: boolean | number;
1006
+ } & {
1007
+ skip?: boolean;
1008
+ selectFromResult?: ((state: import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
1009
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1010
+ originalArgs?: undefined | undefined;
1011
+ data?: undefined | undefined;
1012
+ error?: undefined | undefined;
1013
+ requestId?: undefined | undefined;
1014
+ endpointName?: string | undefined;
1015
+ startedTimeStamp?: undefined | undefined;
1016
+ fulfilledTimeStamp?: undefined | undefined;
1017
+ } & {
1018
+ currentData?: UserRole[] | undefined;
1019
+ isUninitialized: false;
1020
+ isLoading: false;
1021
+ isFetching: false;
1022
+ isSuccess: false;
1023
+ isError: false;
1024
+ }, "isUninitialized"> & {
1025
+ isUninitialized: true;
1026
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1027
+ currentData?: UserRole[] | undefined;
1028
+ isUninitialized: false;
1029
+ isLoading: false;
1030
+ isFetching: false;
1031
+ isSuccess: false;
1032
+ isError: false;
1033
+ }, {
1034
+ isLoading: true;
1035
+ isFetching: boolean;
1036
+ data: undefined;
1037
+ } | ({
1038
+ isSuccess: true;
1039
+ isFetching: true;
1040
+ error: undefined;
1041
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1042
+ currentData?: UserRole[] | undefined;
1043
+ isUninitialized: false;
1044
+ isLoading: false;
1045
+ isFetching: false;
1046
+ isSuccess: false;
1047
+ isError: false;
1048
+ }, "data" | "fulfilledTimeStamp">>) | ({
1049
+ isSuccess: true;
1050
+ isFetching: false;
1051
+ error: undefined;
1052
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1053
+ currentData?: UserRole[] | undefined;
1054
+ isUninitialized: false;
1055
+ isLoading: false;
1056
+ isFetching: false;
1057
+ isSuccess: false;
1058
+ isError: false;
1059
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
1060
+ isError: true;
1061
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1062
+ currentData?: UserRole[] | undefined;
1063
+ isUninitialized: false;
1064
+ isLoading: false;
1065
+ isFetching: false;
1066
+ isSuccess: false;
1067
+ isError: false;
1068
+ }, "error">>)>> & {
1069
+ status: import("@reduxjs/toolkit/query").QueryStatus;
1070
+ }) => R) | undefined;
1071
+ }) | undefined) => [R][R extends any ? 0 : never] & {
1072
+ refetch: () => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>>;
1073
+ }, useLazyGetUserRolesQuery: <R extends Record<string, any> = import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
1074
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1075
+ originalArgs?: undefined | undefined;
1076
+ data?: undefined | undefined;
1077
+ error?: undefined | undefined;
1078
+ requestId?: undefined | undefined;
1079
+ endpointName?: string | undefined;
1080
+ startedTimeStamp?: undefined | undefined;
1081
+ fulfilledTimeStamp?: undefined | undefined;
1082
+ } & {
1083
+ currentData?: UserRole[] | undefined;
1084
+ isUninitialized: false;
1085
+ isLoading: false;
1086
+ isFetching: false;
1087
+ isSuccess: false;
1088
+ isError: false;
1089
+ }, "isUninitialized"> & {
1090
+ isUninitialized: true;
1091
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1092
+ currentData?: UserRole[] | undefined;
1093
+ isUninitialized: false;
1094
+ isLoading: false;
1095
+ isFetching: false;
1096
+ isSuccess: false;
1097
+ isError: false;
1098
+ }, {
1099
+ isLoading: true;
1100
+ isFetching: boolean;
1101
+ data: undefined;
1102
+ } | ({
1103
+ isSuccess: true;
1104
+ isFetching: true;
1105
+ error: undefined;
1106
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1107
+ currentData?: UserRole[] | undefined;
1108
+ isUninitialized: false;
1109
+ isLoading: false;
1110
+ isFetching: false;
1111
+ isSuccess: false;
1112
+ isError: false;
1113
+ }, "data" | "fulfilledTimeStamp">>) | ({
1114
+ isSuccess: true;
1115
+ isFetching: false;
1116
+ error: undefined;
1117
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1118
+ currentData?: UserRole[] | undefined;
1119
+ isUninitialized: false;
1120
+ isLoading: false;
1121
+ isFetching: false;
1122
+ isSuccess: false;
1123
+ isError: false;
1124
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
1125
+ isError: true;
1126
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1127
+ currentData?: UserRole[] | undefined;
1128
+ isUninitialized: false;
1129
+ isLoading: false;
1130
+ isFetching: false;
1131
+ isSuccess: false;
1132
+ isError: false;
1133
+ }, "error">>)>> & {
1134
+ status: import("@reduxjs/toolkit/query").QueryStatus;
1135
+ }>(options?: (import("@reduxjs/toolkit/query").SubscriptionOptions & Omit<{
1136
+ skip?: boolean;
1137
+ selectFromResult?: ((state: import("@reduxjs/toolkit/query").TSHelpersId<(Omit<{
1138
+ status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
1139
+ originalArgs?: undefined | undefined;
1140
+ data?: undefined | undefined;
1141
+ error?: undefined | undefined;
1142
+ requestId?: undefined | undefined;
1143
+ endpointName?: string | undefined;
1144
+ startedTimeStamp?: undefined | undefined;
1145
+ fulfilledTimeStamp?: undefined | undefined;
1146
+ } & {
1147
+ currentData?: UserRole[] | undefined;
1148
+ isUninitialized: false;
1149
+ isLoading: false;
1150
+ isFetching: false;
1151
+ isSuccess: false;
1152
+ isError: false;
1153
+ }, "isUninitialized"> & {
1154
+ isUninitialized: true;
1155
+ }) | import("@reduxjs/toolkit/query").TSHelpersOverride<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1156
+ currentData?: UserRole[] | undefined;
1157
+ isUninitialized: false;
1158
+ isLoading: false;
1159
+ isFetching: false;
1160
+ isSuccess: false;
1161
+ isError: false;
1162
+ }, {
1163
+ isLoading: true;
1164
+ isFetching: boolean;
1165
+ data: undefined;
1166
+ } | ({
1167
+ isSuccess: true;
1168
+ isFetching: true;
1169
+ error: undefined;
1170
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1171
+ currentData?: UserRole[] | undefined;
1172
+ isUninitialized: false;
1173
+ isLoading: false;
1174
+ isFetching: false;
1175
+ isSuccess: false;
1176
+ isError: false;
1177
+ }, "data" | "fulfilledTimeStamp">>) | ({
1178
+ isSuccess: true;
1179
+ isFetching: false;
1180
+ error: undefined;
1181
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1182
+ currentData?: UserRole[] | undefined;
1183
+ isUninitialized: false;
1184
+ isLoading: false;
1185
+ isFetching: false;
1186
+ isSuccess: false;
1187
+ isError: false;
1188
+ }, "data" | "fulfilledTimeStamp" | "currentData">>) | ({
1189
+ isError: true;
1190
+ } & Required<Pick<import("@reduxjs/toolkit/query").QuerySubState<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>> & {
1191
+ currentData?: UserRole[] | undefined;
1192
+ isUninitialized: false;
1193
+ isLoading: false;
1194
+ isFetching: false;
1195
+ isSuccess: false;
1196
+ isError: false;
1197
+ }, "error">>)>> & {
1198
+ status: import("@reduxjs/toolkit/query").QueryStatus;
1199
+ }) => R) | undefined;
1200
+ }, "skip">) | undefined) => [(arg: GetUserRolesArgs, preferCacheValue?: boolean) => import("@reduxjs/toolkit/query").QueryActionCreatorResult<import("@reduxjs/toolkit/query").QueryDefinition<GetUserRolesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<import("../utils").CustomQueryArgs, unknown, import("../utils").ExtendedFetchBaseQueryError, Record<string, unknown>, import("@reduxjs/toolkit/query").FetchBaseQueryMeta>, string, UserRole[], "userApiSlice", unknown>>, [R][R extends any ? 0 : never] & {
1201
+ reset: () => void;
1202
+ }, {
1203
+ lastArg: GetUserRolesArgs;
929
1204
  }], useUploadProfileImageMutation: <R extends Record<string, any> = ({
930
1205
  requestId?: undefined;
931
1206
  status: import("@reduxjs/toolkit/query").QueryStatus.uninitialized;
@@ -12,6 +12,11 @@ export declare const USERS_ENDPOINTS: {
12
12
  service: SERVICES;
13
13
  path: () => string;
14
14
  };
15
+ GET_USER_ROLES: {
16
+ service: SERVICES;
17
+ lmsService: SERVICES;
18
+ path: () => string;
19
+ };
15
20
  UPLOAD_PROFILE_IMAGE: {
16
21
  service: SERVICES;
17
22
  path: (username: string) => string;
@@ -39,6 +44,7 @@ export declare const USERS_QUERY_KEYS: {
39
44
  GET_USER_METADATA_EDX: () => string[];
40
45
  RESET_PASSWORD: () => string[];
41
46
  UPDATE_USER_ROLES: () => string[];
47
+ GET_USER_ROLES: () => string[];
42
48
  UPLOAD_PROFILE_IMAGE: () => string[];
43
49
  EDX_UPDATE_USER_METADATA: () => string[];
44
50
  EDX_GET_USER_METADATA: () => string[];
@@ -132,3 +132,47 @@ export interface UpdateUserPlatformMetadataArgs {
132
132
  tenantKey: string;
133
133
  metadata: Record<string, unknown>;
134
134
  }
135
+ /** Global (platform-wide) role keys returned by the role-listing endpoint. */
136
+ export type GlobalUserRoleKey = 'staff' | 'support-staff' | 'course-creator';
137
+ /** Course-scoped role keys. */
138
+ export type CourseUserRoleKey = 'course-staff' | 'course-instructor' | 'course-limited-staff' | 'course-finance-admin' | 'course-sales-admin' | 'course-beta-tester' | 'course-library-user' | 'course-ccx-coach' | 'course-data-researcher';
139
+ /** Organization-scoped role keys. */
140
+ export type OrgUserRoleKey = 'org-staff' | 'org-instructor' | 'org-library-user' | 'org-data-researcher' | 'org-course-creator';
141
+ /**
142
+ * Known role keys. Widened with `(string & {})` so an unrecognised role from a
143
+ * newer platform release still type-checks while editors keep autocompletion.
144
+ */
145
+ export type UserRoleKey = GlobalUserRoleKey | CourseUserRoleKey | OrgUserRoleKey | (string & {});
146
+ /**
147
+ * A single role assignment. `org` and `course` are empty strings for scopes
148
+ * that don't apply:
149
+ * - global role — both empty (e.g. `staff`)
150
+ * - organization role — `org` set, `course` empty (e.g. `org-instructor`)
151
+ * - course role — both set (e.g. `course-instructor`)
152
+ */
153
+ export interface UserRole {
154
+ role: UserRoleKey;
155
+ org: string;
156
+ course: string;
157
+ }
158
+ /** Scope a {@link UserRole} applies to, derived from its `org`/`course` fields. */
159
+ export type UserRoleScope = 'global' | 'org' | 'course';
160
+ /**
161
+ * Lookup args for the role-listing endpoint. At least one of `userId`,
162
+ * `username` or `email` must be provided — the API returns 400 otherwise.
163
+ *
164
+ * Non-staff users may only look up their own roles; requesting another user's
165
+ * roles yields 404.
166
+ */
167
+ export interface GetUserRolesArgs {
168
+ username?: string;
169
+ email?: string;
170
+ /** User ID (primary key). */
171
+ userId?: number;
172
+ /**
173
+ * Query the deprecated LMS host instead of CMS/Studio. Only needed on
174
+ * deployments without a reachable Studio host; course-creation roles are not
175
+ * fully resolvable there.
176
+ */
177
+ useLms?: boolean;
178
+ }
@@ -0,0 +1,12 @@
1
+ import type { UserRole, UserRoleScope } from './types';
2
+ /**
3
+ * Scope a role row applies to, read off its `org`/`course` fields:
4
+ * both empty → global, `org` only → org, both set → course.
5
+ */
6
+ export declare const getUserRoleScope: (role: UserRole) => UserRoleScope;
7
+ /** Roles that apply platform-wide (e.g. `staff`). */
8
+ export declare const filterGlobalUserRoles: (roles: UserRole[]) => UserRole[];
9
+ /** Roles scoped to an organization, optionally narrowed to one org short name. */
10
+ export declare const filterOrgUserRoles: (roles: UserRole[], org?: string) => UserRole[];
11
+ /** Roles scoped to a course run, optionally narrowed to one course ID. */
12
+ export declare const filterCourseUserRoles: (roles: UserRole[], course?: string) => UserRole[];
@@ -15,6 +15,7 @@ export * from './features/training-documents/api-slice';
15
15
  export * from './features/platform/api-slice';
16
16
  export * from './features/user/api-slice';
17
17
  export * from './features/user/types';
18
+ export * from './features/user/utils';
18
19
  export * from './features/user/api-slice';
19
20
  export * from './features/core/api-slice';
20
21
  export * from './features/core/constants';