@speakableio/core 0.1.67 → 0.1.68

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.
@@ -0,0 +1,2734 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import * as _tanstack_react_query from '@tanstack/react-query';
4
+ import { QueryClient } from '@tanstack/react-query';
5
+ import { FirebaseFirestoreTypes, Timestamp } from '@react-native-firebase/firestore';
6
+ import { Firestore, getDoc, getDocs, addDoc, setDoc, updateDoc, deleteDoc, runTransaction, writeBatch, doc, collection, query, serverTimestamp, orderBy, limit, startAt, startAfter, endAt, endBefore, where, increment, Timestamp as Timestamp$1, FieldValue } from 'firebase/firestore';
7
+
8
+ type FirebaseInstance = FirebaseFirestoreTypes.Module | Firestore;
9
+ interface FirestoreHelpers {
10
+ getDoc: typeof getDoc;
11
+ getDocs: typeof getDocs;
12
+ addDoc: typeof addDoc;
13
+ setDoc: typeof setDoc;
14
+ updateDoc: typeof updateDoc;
15
+ deleteDoc: typeof deleteDoc;
16
+ runTransaction: typeof runTransaction;
17
+ writeBatch: typeof writeBatch;
18
+ doc: typeof doc;
19
+ collection: typeof collection;
20
+ query: typeof query;
21
+ serverTimestamp: typeof serverTimestamp;
22
+ orderBy: typeof orderBy;
23
+ limit: typeof limit;
24
+ startAt: typeof startAt;
25
+ startAfter: typeof startAfter;
26
+ endAt: typeof endAt;
27
+ endBefore: typeof endBefore;
28
+ where: typeof where;
29
+ increment: typeof increment;
30
+ }
31
+ type CustomTimestamp = Timestamp | Timestamp$1;
32
+ type CallableFunction<T = any, R = any> = (data: T) => Promise<R>;
33
+
34
+ declare const enum FeedbackTypesCard {
35
+ SuggestedResponse = "suggested_response",
36
+ Wida = "wida",
37
+ GrammarInsights = "grammar_insights",
38
+ Actfl = "actfl",
39
+ ProficiencyLevel = "proficiency_level"
40
+ }
41
+ declare const enum LeniencyCard {
42
+ CONFIDENCE = "confidence",
43
+ EASY = "easy",
44
+ NORMAL = "normal",
45
+ HARD = "hard"
46
+ }
47
+ declare const LENIENCY_OPTIONS: {
48
+ label: string;
49
+ value: LeniencyCard;
50
+ }[];
51
+ declare const STUDENT_LEVELS_OPTIONS: {
52
+ label: string;
53
+ description: string;
54
+ value: string;
55
+ }[];
56
+ declare const BASE_RESPOND_FIELD_VALUES: {
57
+ title: string;
58
+ allowRetries: boolean;
59
+ respondTime: number;
60
+ maxCharacters: number;
61
+ };
62
+ declare const BASE_REPEAT_FIELD_VALUES: {
63
+ repeat: number;
64
+ };
65
+ declare const BASE_MULTIPLE_CHOICE_FIELD_VALUES: {
66
+ MCQType: string;
67
+ answer: string[];
68
+ choices: {
69
+ option: string;
70
+ value: string;
71
+ }[];
72
+ };
73
+ declare const enum VerificationCardStatus {
74
+ VERIFIED = "VERIFIED",
75
+ WARNING = "WARNING",
76
+ NOT_RECOMMENDED = "NOT_RECOMMENDED",
77
+ NOT_WORKING = "NOT_WORKING",
78
+ NOT_CHECKED = "NOT_CHECKED"
79
+ }
80
+ declare const CARDS_COLLECTION = "flashcards";
81
+ type RefsCardsFiresotre = `${typeof CARDS_COLLECTION}/${string}`;
82
+ declare const refsCardsFiresotre: {
83
+ allCards: string;
84
+ card: (id: string) => `flashcards/${string}`;
85
+ };
86
+
87
+ interface PageActivityWithId extends PageActivity {
88
+ id: string;
89
+ }
90
+ interface PageActivity {
91
+ owners: string[];
92
+ checked?: boolean;
93
+ completed?: boolean;
94
+ media_area_id?: string | null;
95
+ media_area_layout?: 'left' | 'right' | null;
96
+ score?: number;
97
+ verificationStatus?: VerificationCardStatus;
98
+ native_text?: string;
99
+ repeat?: number;
100
+ language?: string | null;
101
+ image?: {
102
+ path?: string | null;
103
+ url?: string;
104
+ };
105
+ audio?: {
106
+ path?: string | null;
107
+ url?: string;
108
+ } | null;
109
+ notes?: string;
110
+ difficulty?: string;
111
+ default_language?: string;
112
+ target_text?: string;
113
+ type: ActivityPageType;
114
+ grading_criteria?: string;
115
+ scoring_type?: string;
116
+ grading_method?: 'simple' | 'rubric' | 'manual' | 'standards_based';
117
+ feedback_types?: string[];
118
+ rubricId?: string;
119
+ prompt?: string;
120
+ title?: string;
121
+ passing_score?: number;
122
+ maxCharacters?: number;
123
+ answer?: string[];
124
+ choices?: {
125
+ value: string;
126
+ option: string;
127
+ }[];
128
+ MCQType?: string;
129
+ multipleAttemptsAllowed?: boolean;
130
+ allowRetries?: boolean;
131
+ question?: string;
132
+ respondTime?: number;
133
+ hidePrompt?: boolean;
134
+ videoUrl?: string;
135
+ link?: string;
136
+ text?: string;
137
+ isListenAloud?: boolean;
138
+ embedCode?: string;
139
+ attempt?: number;
140
+ correct?: number;
141
+ autoGrade?: boolean;
142
+ points?: number;
143
+ shuffle?: boolean;
144
+ translation?: string;
145
+ includeAIContext?: boolean;
146
+ media_area_context_ref?: string | null;
147
+ standardId?: string;
148
+ target_proficiency_level?: string;
149
+ allowTTS?: boolean;
150
+ }
151
+ declare const enum ActivityPageType {
152
+ READ_REPEAT = "READ_REPEAT",
153
+ VIDEO = "VIDEO",
154
+ TEXT = "TEXT",
155
+ READ_RESPOND = "READ_RESPOND",
156
+ FREE_RESPONSE = "FREE_RESPONSE",
157
+ REPEAT = "REPEAT",
158
+ RESPOND = "RESPOND",
159
+ RESPOND_WRITE = "RESPOND_WRITE",
160
+ TEXT_TO_SPEECH = "TEXT_TO_SPEECH",
161
+ MULTIPLE_CHOICE = "MULTIPLE_CHOICE",
162
+ PODCAST = "PODCAST",
163
+ MEDIA_PAGE = "MEDIA_PAGE",
164
+ WRITE = "WRITE",
165
+ SHORT_ANSWER = "SHORT_ANSWER",
166
+ SHORT_STORY = "SHORT_STORY",
167
+ SPEAK = "SPEAK",
168
+ CONVERSATION = "CONVERSATION",
169
+ CONVERSATION_WRITE = "CONVERSATION_WRITE",
170
+ DIALOGUE = "DIALOGUE",
171
+ INSTRUCTION = "INSTRUCTION",
172
+ LISTEN = "LISTEN",
173
+ READ = "READ",
174
+ ANSWER = "ANSWER"
175
+ }
176
+ declare const RESPOND_PAGE_ACTIVITY_TYPES: ActivityPageType[];
177
+ declare const MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES: ActivityPageType[];
178
+ declare const REPEAT_PAGE_ACTIVITY_TYPES: ActivityPageType[];
179
+ declare const RESPOND_WRITE_PAGE_ACTIVITY_TYPES: ActivityPageType[];
180
+ declare const RESPOND_AUDIO_PAGE_ACTIVITY_TYPES: ActivityPageType[];
181
+
182
+ declare const cardsQueryKeys: {
183
+ all: string[];
184
+ one: (params: {
185
+ cardId: string;
186
+ }) => string[];
187
+ };
188
+ declare function useCards({ cardIds, enabled, asObject, }: {
189
+ cardIds: string[];
190
+ enabled: boolean;
191
+ asObject?: boolean;
192
+ }): {
193
+ cards: PageActivityWithId[];
194
+ cardsObject: Record<string, PageActivityWithId> | null;
195
+ cardsQueries: _tanstack_react_query.UseQueryResult<PageActivityWithId | null, Error>[];
196
+ };
197
+ declare function useCreateCard(): {
198
+ mutationCreateCard: _tanstack_react_query.UseMutationResult<{
199
+ id: string;
200
+ } & Partial<PageActivity>, Error, {
201
+ data: Partial<PageActivity>;
202
+ }, unknown>;
203
+ };
204
+ declare function useCreateCards(): {
205
+ mutationCreateCards: _tanstack_react_query.UseMutationResult<{
206
+ id: string;
207
+ owners: string[];
208
+ checked?: boolean;
209
+ completed?: boolean;
210
+ media_area_id?: string | null;
211
+ media_area_layout?: "left" | "right" | null;
212
+ score?: number;
213
+ verificationStatus?: VerificationCardStatus;
214
+ native_text?: string;
215
+ repeat?: number;
216
+ language?: string | null;
217
+ image?: {
218
+ path?: string | null;
219
+ url?: string;
220
+ };
221
+ audio?: {
222
+ path?: string | null;
223
+ url?: string;
224
+ } | null;
225
+ notes?: string;
226
+ difficulty?: string;
227
+ default_language?: string;
228
+ target_text?: string;
229
+ type: ActivityPageType;
230
+ grading_criteria?: string;
231
+ scoring_type?: string;
232
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
233
+ feedback_types?: string[];
234
+ rubricId?: string;
235
+ prompt?: string;
236
+ title?: string;
237
+ passing_score?: number;
238
+ maxCharacters?: number;
239
+ answer?: string[];
240
+ choices?: {
241
+ value: string;
242
+ option: string;
243
+ }[];
244
+ MCQType?: string;
245
+ multipleAttemptsAllowed?: boolean;
246
+ allowRetries?: boolean;
247
+ question?: string;
248
+ respondTime?: number;
249
+ hidePrompt?: boolean;
250
+ videoUrl?: string;
251
+ link?: string;
252
+ text?: string;
253
+ isListenAloud?: boolean;
254
+ embedCode?: string;
255
+ attempt?: number;
256
+ correct?: number;
257
+ autoGrade?: boolean;
258
+ points?: number;
259
+ shuffle?: boolean;
260
+ translation?: string;
261
+ includeAIContext?: boolean;
262
+ media_area_context_ref?: string | null;
263
+ standardId?: string;
264
+ target_proficiency_level?: string;
265
+ allowTTS?: boolean;
266
+ }[], Error, {
267
+ cards: PageActivity[];
268
+ }, unknown>;
269
+ };
270
+ declare function getCardFromCache({ cardId, queryClient, }: {
271
+ cardId: string;
272
+ queryClient: QueryClient;
273
+ }): PageActivityWithId | undefined;
274
+ declare function updateCardInCache({ cardId, card, queryClient, }: {
275
+ cardId: string;
276
+ card: PageActivityWithId | null;
277
+ queryClient: QueryClient;
278
+ }): void;
279
+ declare function useGetCard({ cardId, enabled }: {
280
+ cardId: string;
281
+ enabled?: boolean;
282
+ }): _tanstack_react_query.UseQueryResult<PageActivityWithId | null, Error>;
283
+
284
+ declare const createCardRepo: () => {
285
+ createCard: (args_0: {
286
+ data: Partial<PageActivity>;
287
+ }) => Promise<{
288
+ id: string;
289
+ } & Partial<PageActivity>>;
290
+ createCards: (args_0: {
291
+ cards: PageActivity[];
292
+ }) => Promise<{
293
+ id: string;
294
+ owners: string[];
295
+ checked?: boolean;
296
+ completed?: boolean;
297
+ media_area_id?: string | null;
298
+ media_area_layout?: "left" | "right" | null;
299
+ score?: number;
300
+ verificationStatus?: VerificationCardStatus;
301
+ native_text?: string;
302
+ repeat?: number;
303
+ language?: string | null;
304
+ image?: {
305
+ path?: string | null;
306
+ url?: string;
307
+ };
308
+ audio?: {
309
+ path?: string | null;
310
+ url?: string;
311
+ } | null;
312
+ notes?: string;
313
+ difficulty?: string;
314
+ default_language?: string;
315
+ target_text?: string;
316
+ type: ActivityPageType;
317
+ grading_criteria?: string;
318
+ scoring_type?: string;
319
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
320
+ feedback_types?: string[];
321
+ rubricId?: string;
322
+ prompt?: string;
323
+ title?: string;
324
+ passing_score?: number;
325
+ maxCharacters?: number;
326
+ answer?: string[];
327
+ choices?: {
328
+ value: string;
329
+ option: string;
330
+ }[];
331
+ MCQType?: string;
332
+ multipleAttemptsAllowed?: boolean;
333
+ allowRetries?: boolean;
334
+ question?: string;
335
+ respondTime?: number;
336
+ hidePrompt?: boolean;
337
+ videoUrl?: string;
338
+ link?: string;
339
+ text?: string;
340
+ isListenAloud?: boolean;
341
+ embedCode?: string;
342
+ attempt?: number;
343
+ correct?: number;
344
+ autoGrade?: boolean;
345
+ points?: number;
346
+ shuffle?: boolean;
347
+ translation?: string;
348
+ includeAIContext?: boolean;
349
+ media_area_context_ref?: string | null;
350
+ standardId?: string;
351
+ target_proficiency_level?: string;
352
+ allowTTS?: boolean;
353
+ }[]>;
354
+ getCard: (params: {
355
+ cardId: string;
356
+ }) => Promise<PageActivityWithId | null>;
357
+ };
358
+
359
+ declare function checkIsRepeatPage(cardType: ActivityPageType | undefined): boolean;
360
+ declare function checkIsMCPage(cardType: ActivityPageType | undefined): boolean;
361
+ declare function checkIsRespondPage(cardType: ActivityPageType | undefined): boolean;
362
+ declare function checkIsRespondWrittenPage(cardType: ActivityPageType | undefined): boolean;
363
+ declare function checkIsRespondAudioPage(cardType: ActivityPageType | undefined): boolean;
364
+ declare const checkIsMediaPage: (cardType: ActivityPageType | undefined) => boolean;
365
+ declare const checkIsShortAnswerPage: (cardType: ActivityPageType | undefined) => boolean;
366
+ declare const checkTypePageActivity: (cardType: ActivityPageType | undefined) => {
367
+ isRespondAudio: boolean;
368
+ isRespondWritten: boolean;
369
+ isRespond: boolean;
370
+ isMC: boolean;
371
+ isRepeat: boolean;
372
+ isMediaPage: boolean;
373
+ isShortAnswer: boolean;
374
+ };
375
+
376
+ declare function getPagePrompt(card: PageActivityWithId | undefined): {
377
+ has: boolean;
378
+ text: string | undefined;
379
+ };
380
+
381
+ interface Assignment {
382
+ name: string;
383
+ description: string;
384
+ scheduledTime?: string | null;
385
+ dueTime?: {
386
+ hours: number;
387
+ minutes: number;
388
+ nanos: number;
389
+ };
390
+ speakableio: boolean;
391
+ owners: string[];
392
+ image: {
393
+ path: string | null;
394
+ url: string;
395
+ };
396
+ dueDate: {
397
+ day: number;
398
+ month: number;
399
+ year: number;
400
+ };
401
+ teacherName: string;
402
+ courseWorkId: string | null;
403
+ dueDateTimestamp: CustomTimestamp;
404
+ scheduledTimeTimestamp: number;
405
+ active: boolean;
406
+ voice: string | null;
407
+ setId: string;
408
+ dateMade: {
409
+ seconds: number;
410
+ nanoseconds: number;
411
+ };
412
+ maxPoints: number;
413
+ courseId: string;
414
+ isAssessment: boolean;
415
+ isAvailable: boolean;
416
+ ltiDeeplink?: string;
417
+ content?: string[];
418
+ weights?: Record<string, number>;
419
+ language?: string;
420
+ types?: {
421
+ [key in ActivityPageType]?: number;
422
+ };
423
+ }
424
+ interface AssignmentWithId extends Assignment {
425
+ id: string;
426
+ isAvailable: boolean;
427
+ scores?: unknown;
428
+ }
429
+ interface Score {
430
+ userId: string;
431
+ owners: string[];
432
+ progress: number;
433
+ score: number;
434
+ cards?: {
435
+ [cardId: string]: PageScore;
436
+ };
437
+ courseId?: string;
438
+ firstLoad?: boolean;
439
+ googleClassroomUserId?: string;
440
+ skippedCards?: number;
441
+ lastPlayed?: CustomTimestamp;
442
+ startDate?: CustomTimestamp;
443
+ submissionDate?: CustomTimestamp;
444
+ status?: 'SUBMITTED' | 'PENDING_REVIEW' | 'IN_PROGRESS' | 'FINALIZED';
445
+ submitted?: boolean;
446
+ successfulCards?: number;
447
+ total_voiceSuccess?: number;
448
+ total_voice_attempts?: number;
449
+ total_words_spoken?: number;
450
+ history?: PageScore[];
451
+ attempts?: number;
452
+ assignmentId?: string;
453
+ setId?: string;
454
+ }
455
+ interface ScoreWithId extends Score {
456
+ id: string;
457
+ }
458
+ interface PageScore {
459
+ voiceSuccess?: number;
460
+ voiceAttempts?: number;
461
+ voiceFail?: number;
462
+ completed?: boolean;
463
+ attempts?: number;
464
+ correct?: number;
465
+ success?: boolean;
466
+ aiSuccess?: boolean;
467
+ grading_method?: 'simple' | 'rubric' | 'manual' | 'standards_based';
468
+ grammar_insights?: {
469
+ type?: string;
470
+ justification?: string;
471
+ error?: boolean;
472
+ correction?: string;
473
+ }[];
474
+ promptSuccess?: boolean;
475
+ score?: number;
476
+ simple_grading?: {
477
+ justification?: string;
478
+ success?: boolean;
479
+ };
480
+ suggested_response?: string;
481
+ summary?: string;
482
+ transcript?: string;
483
+ errors?: any;
484
+ improvedResponse?: string;
485
+ audio?: string;
486
+ actfl?: {
487
+ justification: string;
488
+ level: string;
489
+ };
490
+ wida?: {
491
+ justification: string;
492
+ level: string;
493
+ };
494
+ earned_points?: number;
495
+ fileName?: string;
496
+ max_points?: number;
497
+ passing_score?: number;
498
+ rubric?: {
499
+ description: string;
500
+ justification: string;
501
+ maxPoints: number;
502
+ score: number;
503
+ score_title: string;
504
+ title: string;
505
+ }[];
506
+ scoring_type?: string;
507
+ history?: PageScore[];
508
+ media_area_opened?: boolean;
509
+ noFeedbackAvailable?: boolean;
510
+ proficiency_level?: {
511
+ standardId: string;
512
+ level: string;
513
+ justification: string;
514
+ key_indicators?: string[];
515
+ };
516
+ status?: string;
517
+ }
518
+
519
+ declare const enum AssignmentAnalyticsType {
520
+ Macro = "macro",
521
+ Gradebook = "gradebook",
522
+ Cards = "cards",
523
+ Student = "student",
524
+ StudentSummary = "student_summary",
525
+ All = "all"
526
+ }
527
+
528
+ declare const createAssignmentRepo: () => {
529
+ getAssignment: (params: {
530
+ assignmentId: string;
531
+ currentUserId: string;
532
+ analyticType?: AssignmentAnalyticsType;
533
+ studentId?: string;
534
+ }) => Promise<AssignmentWithId | {
535
+ scores: any;
536
+ id: string;
537
+ isAvailable: boolean;
538
+ name: string;
539
+ description: string;
540
+ scheduledTime?: string | null;
541
+ dueTime?: {
542
+ hours: number;
543
+ minutes: number;
544
+ nanos: number;
545
+ };
546
+ speakableio: boolean;
547
+ owners: string[];
548
+ image: {
549
+ path: string | null;
550
+ url: string;
551
+ };
552
+ dueDate: {
553
+ day: number;
554
+ month: number;
555
+ year: number;
556
+ };
557
+ teacherName: string;
558
+ courseWorkId: string | null;
559
+ dueDateTimestamp: CustomTimestamp;
560
+ scheduledTimeTimestamp: number;
561
+ active: boolean;
562
+ voice: string | null;
563
+ setId: string;
564
+ dateMade: {
565
+ seconds: number;
566
+ nanoseconds: number;
567
+ };
568
+ maxPoints: number;
569
+ courseId: string;
570
+ isAssessment: boolean;
571
+ ltiDeeplink?: string;
572
+ content?: string[];
573
+ weights?: Record<string, number>;
574
+ language?: string;
575
+ types?: { [key in ActivityPageType]?: number; };
576
+ } | null>;
577
+ attachScoresAssignment: (args_0: {
578
+ assignments: AssignmentWithId[];
579
+ analyticType: AssignmentAnalyticsType;
580
+ studentId?: string;
581
+ currentUserId: string;
582
+ }) => Promise<{
583
+ scores: any;
584
+ id: string;
585
+ isAvailable: boolean;
586
+ name: string;
587
+ description: string;
588
+ scheduledTime?: string | null;
589
+ dueTime?: {
590
+ hours: number;
591
+ minutes: number;
592
+ nanos: number;
593
+ };
594
+ speakableio: boolean;
595
+ owners: string[];
596
+ image: {
597
+ path: string | null;
598
+ url: string;
599
+ };
600
+ dueDate: {
601
+ day: number;
602
+ month: number;
603
+ year: number;
604
+ };
605
+ teacherName: string;
606
+ courseWorkId: string | null;
607
+ dueDateTimestamp: CustomTimestamp;
608
+ scheduledTimeTimestamp: number;
609
+ active: boolean;
610
+ voice: string | null;
611
+ setId: string;
612
+ dateMade: {
613
+ seconds: number;
614
+ nanoseconds: number;
615
+ };
616
+ maxPoints: number;
617
+ courseId: string;
618
+ isAssessment: boolean;
619
+ ltiDeeplink?: string;
620
+ content?: string[];
621
+ weights?: Record<string, number>;
622
+ language?: string;
623
+ types?: { [key in ActivityPageType]?: number; };
624
+ }[]>;
625
+ getAssignmentScores: (args_0: {
626
+ assignmentId: string;
627
+ currentUserId: string;
628
+ analyticType?: AssignmentAnalyticsType;
629
+ studentId?: string;
630
+ }) => Promise<{
631
+ scores: unknown;
632
+ id: string;
633
+ } | undefined>;
634
+ getAllAssignments: () => Promise<(AssignmentWithId & {
635
+ id: string;
636
+ })[]>;
637
+ };
638
+
639
+ declare const assignmentQueryKeys: {
640
+ all: readonly ["assignments"];
641
+ byId: (id: string) => readonly ["assignments", string];
642
+ list: () => readonly ["assignments", "list"];
643
+ };
644
+ declare function useAssignment({ assignmentId, enabled, analyticType, userId, }: {
645
+ assignmentId: string;
646
+ enabled?: boolean;
647
+ analyticType?: AssignmentAnalyticsType;
648
+ userId: string;
649
+ }): _tanstack_react_query.UseQueryResult<AssignmentWithId | {
650
+ scores: any;
651
+ id: string;
652
+ isAvailable: boolean;
653
+ name: string;
654
+ description: string;
655
+ scheduledTime?: string | null;
656
+ dueTime?: {
657
+ hours: number;
658
+ minutes: number;
659
+ nanos: number;
660
+ };
661
+ speakableio: boolean;
662
+ owners: string[];
663
+ image: {
664
+ path: string | null;
665
+ url: string;
666
+ };
667
+ dueDate: {
668
+ day: number;
669
+ month: number;
670
+ year: number;
671
+ };
672
+ teacherName: string;
673
+ courseWorkId: string | null;
674
+ dueDateTimestamp: CustomTimestamp;
675
+ scheduledTimeTimestamp: number;
676
+ active: boolean;
677
+ voice: string | null;
678
+ setId: string;
679
+ dateMade: {
680
+ seconds: number;
681
+ nanoseconds: number;
682
+ };
683
+ maxPoints: number;
684
+ courseId: string;
685
+ isAssessment: boolean;
686
+ ltiDeeplink?: string;
687
+ content?: string[];
688
+ weights?: Record<string, number>;
689
+ language?: string;
690
+ types?: { [key in ActivityPageType]?: number; };
691
+ } | null, Error>;
692
+
693
+ declare const scoreQueryKeys: {
694
+ all: readonly ["scores"];
695
+ byId: (id: string) => readonly ["scores", string];
696
+ list: () => readonly ["scores", "list"];
697
+ };
698
+ declare function useScore({ isAssignment, activityId, userId, courseId, enabled, googleClassroomUserId, }: {
699
+ userId: string;
700
+ isAssignment: boolean;
701
+ activityId: string;
702
+ courseId?: string;
703
+ enabled?: boolean;
704
+ googleClassroomUserId?: string;
705
+ }): _tanstack_react_query.UseQueryResult<ScoreWithId, Error>;
706
+ declare function useUpdateScore(): {
707
+ mutationUpdateScore: _tanstack_react_query.UseMutationResult<Promise<void>, Error, {
708
+ userId: string;
709
+ data: Partial<Score>;
710
+ isAssignment: boolean;
711
+ activityId: string;
712
+ }, {
713
+ previousData: Partial<Score> | undefined;
714
+ }>;
715
+ };
716
+ declare function useUpdateCardScore({ isAssignment, activityId, userId, cardIds, weights, }: {
717
+ isAssignment: boolean;
718
+ userId: string;
719
+ activityId: string;
720
+ cardIds: string[];
721
+ weights: Record<string, number>;
722
+ }): {
723
+ mutationUpdateCardScore: _tanstack_react_query.UseMutationResult<{
724
+ cardId: string;
725
+ scoresUpdated: Score;
726
+ }, Error, {
727
+ cardId: string;
728
+ cardScore: PageScore;
729
+ }, void>;
730
+ };
731
+ declare function useClearScore(): {
732
+ mutationClearScore: _tanstack_react_query.UseMutationResult<{
733
+ update: Partial<Score>;
734
+ activityId: string;
735
+ }, Error, {
736
+ isAssignment: boolean;
737
+ cardId: string;
738
+ cardScores: PageScore;
739
+ userId: string;
740
+ activityId: string;
741
+ }, unknown>;
742
+ };
743
+ declare function useSubmitAssignmentScore({ onAssignmentSubmitted, studentName, }: {
744
+ onAssignmentSubmitted: (assignmentId: string) => void;
745
+ studentName: string;
746
+ }): {
747
+ submitAssignmentScore: _tanstack_react_query.UseMutateAsyncFunction<{
748
+ success: boolean;
749
+ message: string;
750
+ error?: undefined;
751
+ } | {
752
+ success: boolean;
753
+ error: unknown;
754
+ message?: undefined;
755
+ }, Error, {
756
+ assignment: AssignmentWithId;
757
+ userId: string;
758
+ cardIds: string[];
759
+ weights: Record<string, number>;
760
+ scores: Score;
761
+ status: "FINALIZED" | "IN_PROGRESS" | "PENDING_REVIEW";
762
+ }, unknown>;
763
+ isLoading: boolean;
764
+ };
765
+ declare function useSubmitPracticeScore(): {
766
+ submitPracticeScore: _tanstack_react_query.UseMutateAsyncFunction<{
767
+ success: boolean;
768
+ message: string;
769
+ error?: undefined;
770
+ } | {
771
+ success: boolean;
772
+ error: unknown;
773
+ message?: undefined;
774
+ }, Error, {
775
+ setId: string;
776
+ userId: string;
777
+ scores: Score;
778
+ }, unknown>;
779
+ isLoading: boolean;
780
+ };
781
+
782
+ interface SetWithId extends Set {
783
+ id: string;
784
+ }
785
+ interface Set {
786
+ id: string;
787
+ language: string;
788
+ ownerName: string;
789
+ weights: Record<string, number>;
790
+ repeat?: number;
791
+ voice?: string;
792
+ averagePhraseLength?: number;
793
+ passing_score?: number;
794
+ organizations?: string[];
795
+ description: string;
796
+ image: {
797
+ url: string;
798
+ path: null | string;
799
+ };
800
+ additionalLanguages?: string[];
801
+ owners: string[];
802
+ name: string;
803
+ content: string[];
804
+ types: {
805
+ [key in ActivityPageType]?: number;
806
+ };
807
+ defaultLanguage: string;
808
+ createdAt: FieldValue;
809
+ public: boolean;
810
+ defaultRubricId?: string;
811
+ difficulty?: string;
812
+ end_screen?: {
813
+ variant: 0 | 1 | 2;
814
+ title: string;
815
+ description: string;
816
+ };
817
+ mcAllowRetries?: boolean;
818
+ welcome_screen?: {
819
+ variant: 'colored' | 'blank';
820
+ };
821
+ poorFunctionalityWarning?: boolean;
822
+ status?: 'draft' | 'published';
823
+ subjects?: any[];
824
+ respondAllowRetries?: boolean;
825
+ respondAllowTTS?: boolean;
826
+ feedbackLanguage?: string;
827
+ respondMaxCharacters?: number;
828
+ respondMaxTime?: number;
829
+ }
830
+
831
+ declare const setsQueryKeys: {
832
+ all: string[];
833
+ one: (params: {
834
+ setId: string;
835
+ }) => string[];
836
+ };
837
+ declare const useSet: ({ setId, enabled }: {
838
+ setId: string;
839
+ enabled?: boolean;
840
+ }) => _tanstack_react_query.UseQueryResult<SetWithId | null, Error>;
841
+ declare function getSetFromCache({ setId, queryClient, }: {
842
+ setId: string | undefined;
843
+ queryClient: QueryClient;
844
+ }): SetWithId | null | undefined;
845
+ declare function updateSetInCache({ set, queryClient, }: {
846
+ set: SetWithId;
847
+ queryClient: QueryClient;
848
+ }): void;
849
+
850
+ declare const SETS_COLLECTION = "sets";
851
+ type RefsSetsFirestore = `${typeof SETS_COLLECTION}/${string}`;
852
+ declare const refsSetsFirestore: {
853
+ allSets: string;
854
+ set: (id: string) => `sets/${string}`;
855
+ };
856
+
857
+ declare const createSetRepo: () => {
858
+ getSet: (args_0: {
859
+ setId: string;
860
+ }) => Promise<SetWithId | null>;
861
+ };
862
+
863
+ declare const SPEAKABLE_NOTIFICATIONS: {
864
+ readonly NEW_ASSIGNMENT: "new_assignment";
865
+ readonly ASSESSMENT_SUBMITTED: "assessment_submitted";
866
+ readonly ASSESSMENT_SCORED: "assessment_scored";
867
+ readonly NEW_COMMENT: "NEW_COMMENT";
868
+ };
869
+ type SpeakableNotificationType = (typeof SPEAKABLE_NOTIFICATIONS)[keyof typeof SPEAKABLE_NOTIFICATIONS];
870
+ declare const SpeakableNotificationTypes: {
871
+ NEW_ASSIGNMENT: string;
872
+ FEEDBACK_FROM_TEACHER: string;
873
+ MESSAGE_FROM_STUDENT: string;
874
+ PHRASE_MARKED_CORRECT: string;
875
+ STUDENT_PROGRESS: string;
876
+ PLAYLIST_FOLLOWERS: string;
877
+ PLAYLIST_PLAYS: string;
878
+ ASSESSMENT_SUBMITTED: string;
879
+ ASSESSMENT_SCORED: string;
880
+ NEW_COMMENT: string;
881
+ };
882
+
883
+ declare const useCreateNotification: () => {
884
+ createNotification: (type: SpeakableNotificationType, data: any) => Promise<any>;
885
+ };
886
+
887
+ type FsClient = ReturnType<typeof createFsClientBase>;
888
+ type FsClientParams = Omit<Parameters<typeof createFsClientBase>[0], 'helpers'>;
889
+ declare function createFsClientBase({ db, helpers, httpsCallable, logEvent, }: {
890
+ db: FirebaseInstance;
891
+ helpers: FirestoreHelpers;
892
+ httpsCallable: (name: string) => CallableFunction;
893
+ logEvent: (name: string, data: any) => void;
894
+ }): {
895
+ assignmentRepo: {
896
+ getAssignment: (params: {
897
+ assignmentId: string;
898
+ currentUserId: string;
899
+ analyticType?: AssignmentAnalyticsType;
900
+ studentId?: string;
901
+ }) => Promise<AssignmentWithId | {
902
+ scores: any;
903
+ id: string;
904
+ isAvailable: boolean;
905
+ name: string;
906
+ description: string;
907
+ scheduledTime?: string | null;
908
+ dueTime?: {
909
+ hours: number;
910
+ minutes: number;
911
+ nanos: number;
912
+ };
913
+ speakableio: boolean;
914
+ owners: string[];
915
+ image: {
916
+ path: string | null;
917
+ url: string;
918
+ };
919
+ dueDate: {
920
+ day: number;
921
+ month: number;
922
+ year: number;
923
+ };
924
+ teacherName: string;
925
+ courseWorkId: string | null;
926
+ dueDateTimestamp: CustomTimestamp;
927
+ scheduledTimeTimestamp: number;
928
+ active: boolean;
929
+ voice: string | null;
930
+ setId: string;
931
+ dateMade: {
932
+ seconds: number;
933
+ nanoseconds: number;
934
+ };
935
+ maxPoints: number;
936
+ courseId: string;
937
+ isAssessment: boolean;
938
+ ltiDeeplink?: string;
939
+ content?: string[];
940
+ weights?: Record<string, number>;
941
+ language?: string;
942
+ types?: { [key in ActivityPageType]?: number; };
943
+ } | null>;
944
+ attachScoresAssignment: (args_0: {
945
+ assignments: AssignmentWithId[];
946
+ analyticType: AssignmentAnalyticsType;
947
+ studentId?: string;
948
+ currentUserId: string;
949
+ }) => Promise<{
950
+ scores: any;
951
+ id: string;
952
+ isAvailable: boolean;
953
+ name: string;
954
+ description: string;
955
+ scheduledTime?: string | null;
956
+ dueTime?: {
957
+ hours: number;
958
+ minutes: number;
959
+ nanos: number;
960
+ };
961
+ speakableio: boolean;
962
+ owners: string[];
963
+ image: {
964
+ path: string | null;
965
+ url: string;
966
+ };
967
+ dueDate: {
968
+ day: number;
969
+ month: number;
970
+ year: number;
971
+ };
972
+ teacherName: string;
973
+ courseWorkId: string | null;
974
+ dueDateTimestamp: CustomTimestamp;
975
+ scheduledTimeTimestamp: number;
976
+ active: boolean;
977
+ voice: string | null;
978
+ setId: string;
979
+ dateMade: {
980
+ seconds: number;
981
+ nanoseconds: number;
982
+ };
983
+ maxPoints: number;
984
+ courseId: string;
985
+ isAssessment: boolean;
986
+ ltiDeeplink?: string;
987
+ content?: string[];
988
+ weights?: Record<string, number>;
989
+ language?: string;
990
+ types?: { [key in ActivityPageType]?: number; };
991
+ }[]>;
992
+ getAssignmentScores: (args_0: {
993
+ assignmentId: string;
994
+ currentUserId: string;
995
+ analyticType?: AssignmentAnalyticsType;
996
+ studentId?: string;
997
+ }) => Promise<{
998
+ scores: unknown;
999
+ id: string;
1000
+ } | undefined>;
1001
+ getAllAssignments: () => Promise<(AssignmentWithId & {
1002
+ id: string;
1003
+ })[]>;
1004
+ };
1005
+ cardRepo: {
1006
+ createCard: (args_0: {
1007
+ data: Partial<PageActivity>;
1008
+ }) => Promise<{
1009
+ id: string;
1010
+ } & Partial<PageActivity>>;
1011
+ createCards: (args_0: {
1012
+ cards: PageActivity[];
1013
+ }) => Promise<{
1014
+ id: string;
1015
+ owners: string[];
1016
+ checked?: boolean;
1017
+ completed?: boolean;
1018
+ media_area_id?: string | null;
1019
+ media_area_layout?: "left" | "right" | null;
1020
+ score?: number;
1021
+ verificationStatus?: VerificationCardStatus;
1022
+ native_text?: string;
1023
+ repeat?: number;
1024
+ language?: string | null;
1025
+ image?: {
1026
+ path?: string | null;
1027
+ url?: string;
1028
+ };
1029
+ audio?: {
1030
+ path?: string | null;
1031
+ url?: string;
1032
+ } | null;
1033
+ notes?: string;
1034
+ difficulty?: string;
1035
+ default_language?: string;
1036
+ target_text?: string;
1037
+ type: ActivityPageType;
1038
+ grading_criteria?: string;
1039
+ scoring_type?: string;
1040
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
1041
+ feedback_types?: string[];
1042
+ rubricId?: string;
1043
+ prompt?: string;
1044
+ title?: string;
1045
+ passing_score?: number;
1046
+ maxCharacters?: number;
1047
+ answer?: string[];
1048
+ choices?: {
1049
+ value: string;
1050
+ option: string;
1051
+ }[];
1052
+ MCQType?: string;
1053
+ multipleAttemptsAllowed?: boolean;
1054
+ allowRetries?: boolean;
1055
+ question?: string;
1056
+ respondTime?: number;
1057
+ hidePrompt?: boolean;
1058
+ videoUrl?: string;
1059
+ link?: string;
1060
+ text?: string;
1061
+ isListenAloud?: boolean;
1062
+ embedCode?: string;
1063
+ attempt?: number;
1064
+ correct?: number;
1065
+ autoGrade?: boolean;
1066
+ points?: number;
1067
+ shuffle?: boolean;
1068
+ translation?: string;
1069
+ includeAIContext?: boolean;
1070
+ media_area_context_ref?: string | null;
1071
+ standardId?: string;
1072
+ target_proficiency_level?: string;
1073
+ allowTTS?: boolean;
1074
+ }[]>;
1075
+ getCard: (params: {
1076
+ cardId: string;
1077
+ }) => Promise<PageActivityWithId | null>;
1078
+ };
1079
+ };
1080
+
1081
+ interface UserProfile {
1082
+ googleClassroomUserId: string;
1083
+ image: {
1084
+ url: string;
1085
+ path: string;
1086
+ };
1087
+ displayName: string;
1088
+ isTeacher?: boolean;
1089
+ isStudent?: boolean;
1090
+ roles?: string[];
1091
+ }
1092
+ interface UserAuth {
1093
+ uid: string;
1094
+ email: string;
1095
+ displayName: string | null;
1096
+ }
1097
+ interface Lti {
1098
+ data: {
1099
+ services: {
1100
+ serviceKey: string;
1101
+ };
1102
+ };
1103
+ }
1104
+ interface User {
1105
+ profile: UserProfile;
1106
+ auth: UserAuth;
1107
+ lti: Lti;
1108
+ roles: string[];
1109
+ }
1110
+
1111
+ declare const SpeakablePlanTypes: {
1112
+ readonly basic: "basic";
1113
+ readonly teacher_pro: "teacher_pro";
1114
+ readonly school_starter: "school_starter";
1115
+ readonly organization: "organization";
1116
+ readonly starter: "starter";
1117
+ readonly growth: "growth";
1118
+ readonly professional: "professional";
1119
+ };
1120
+
1121
+ interface Permissions {
1122
+ loaded: boolean;
1123
+ loading: boolean;
1124
+ permissions: string[];
1125
+ plan: keyof typeof SpeakablePlanTypes;
1126
+ subscriptionId: string;
1127
+ isInstitutionPlan: boolean;
1128
+ type: string;
1129
+ contact: string;
1130
+ hasStudentPortfolios?: boolean;
1131
+ refreshDate: string;
1132
+ isStripePlan: boolean;
1133
+ freeOrgTrialExpired?: boolean;
1134
+ }
1135
+
1136
+ interface FsContext {
1137
+ speakableApi: Awaited<FsClient>;
1138
+ queryClient: QueryClient;
1139
+ user: User;
1140
+ permissions: Permissions;
1141
+ }
1142
+ declare const FsCtx: React.Context<FsContext | null>;
1143
+ declare function SpeakableProvider({ user, children, queryClient, permissions, fsClient, }: {
1144
+ children: React.ReactNode;
1145
+ fsClient: FsClient;
1146
+ permissions: Permissions;
1147
+ queryClient: QueryClient;
1148
+ user: User;
1149
+ }): react_jsx_runtime.JSX.Element | null;
1150
+ declare function useSpeakableApi(): FsContext;
1151
+
1152
+ declare const getRespondCardTool: ({ language, standard, }: {
1153
+ language: string;
1154
+ standard: string;
1155
+ }) => {
1156
+ tool_choice: {
1157
+ type: string;
1158
+ function: {
1159
+ name: string;
1160
+ };
1161
+ };
1162
+ tools: {
1163
+ type: string;
1164
+ function: {
1165
+ name: string;
1166
+ description: string;
1167
+ parameters: {
1168
+ type: string;
1169
+ required: string[];
1170
+ properties: {
1171
+ success: {
1172
+ type: string;
1173
+ description: string;
1174
+ };
1175
+ errors: {
1176
+ type: string;
1177
+ items: {
1178
+ type: string;
1179
+ required: string[];
1180
+ properties: {
1181
+ error: {
1182
+ type: string;
1183
+ description: string;
1184
+ };
1185
+ correction: {
1186
+ type: string;
1187
+ description: string;
1188
+ };
1189
+ justification: {
1190
+ type: string;
1191
+ description: string;
1192
+ };
1193
+ grammar_error_type: {
1194
+ type: string;
1195
+ enum: string[];
1196
+ description: string;
1197
+ };
1198
+ };
1199
+ };
1200
+ description: string;
1201
+ };
1202
+ compliments: {
1203
+ type: string;
1204
+ items: {
1205
+ type: string;
1206
+ };
1207
+ description: string;
1208
+ };
1209
+ improvedResponse: {
1210
+ type: string;
1211
+ description: string;
1212
+ };
1213
+ score: {
1214
+ type: string;
1215
+ description: string;
1216
+ };
1217
+ score_justification: {
1218
+ type: string;
1219
+ description: string;
1220
+ };
1221
+ };
1222
+ };
1223
+ };
1224
+ }[];
1225
+ };
1226
+
1227
+ declare function debounce<T extends (...args: any[]) => Promise<any>>(func: T, waitFor: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
1228
+
1229
+ declare const purify: (word: string) => string;
1230
+ declare const cleanString: (words: string) => string | string[];
1231
+ declare const getWordHash: (word: string, language: string) => string;
1232
+ declare function getPhraseLength(phrase: string, input?: string): number;
1233
+
1234
+ declare function useActivity({ id, isAssignment, onAssignmentSubmitted, ltiData, }: {
1235
+ id: string;
1236
+ isAssignment: boolean;
1237
+ onAssignmentSubmitted: (assignmentId: string) => void;
1238
+ ltiData?: {
1239
+ lineItemId?: string;
1240
+ lti_id?: string;
1241
+ serviceKey?: string;
1242
+ };
1243
+ }): {
1244
+ set: {
1245
+ data: SetWithId | null | undefined;
1246
+ query: _tanstack_react_query.UseQueryResult<SetWithId | null, Error>;
1247
+ };
1248
+ cards: {
1249
+ data: Record<string, PageActivityWithId> | null;
1250
+ query: _tanstack_react_query.UseQueryResult<PageActivityWithId | null, Error>[];
1251
+ cardsArray: PageActivityWithId[];
1252
+ };
1253
+ assignment: {
1254
+ data: AssignmentWithId | {
1255
+ scores: any;
1256
+ id: string;
1257
+ isAvailable: boolean;
1258
+ name: string;
1259
+ description: string;
1260
+ scheduledTime?: string | null;
1261
+ dueTime?: {
1262
+ hours: number;
1263
+ minutes: number;
1264
+ nanos: number;
1265
+ };
1266
+ speakableio: boolean;
1267
+ owners: string[];
1268
+ image: {
1269
+ path: string | null;
1270
+ url: string;
1271
+ };
1272
+ dueDate: {
1273
+ day: number;
1274
+ month: number;
1275
+ year: number;
1276
+ };
1277
+ teacherName: string;
1278
+ courseWorkId: string | null;
1279
+ dueDateTimestamp: CustomTimestamp;
1280
+ scheduledTimeTimestamp: number;
1281
+ active: boolean;
1282
+ voice: string | null;
1283
+ setId: string;
1284
+ dateMade: {
1285
+ seconds: number;
1286
+ nanoseconds: number;
1287
+ };
1288
+ maxPoints: number;
1289
+ courseId: string;
1290
+ isAssessment: boolean;
1291
+ ltiDeeplink?: string;
1292
+ content?: string[];
1293
+ weights?: Record<string, number>;
1294
+ language?: string;
1295
+ types?: { [key in ActivityPageType]?: number; };
1296
+ } | null | undefined;
1297
+ query: _tanstack_react_query.UseQueryResult<AssignmentWithId | {
1298
+ scores: any;
1299
+ id: string;
1300
+ isAvailable: boolean;
1301
+ name: string;
1302
+ description: string;
1303
+ scheduledTime?: string | null;
1304
+ dueTime?: {
1305
+ hours: number;
1306
+ minutes: number;
1307
+ nanos: number;
1308
+ };
1309
+ speakableio: boolean;
1310
+ owners: string[];
1311
+ image: {
1312
+ path: string | null;
1313
+ url: string;
1314
+ };
1315
+ dueDate: {
1316
+ day: number;
1317
+ month: number;
1318
+ year: number;
1319
+ };
1320
+ teacherName: string;
1321
+ courseWorkId: string | null;
1322
+ dueDateTimestamp: CustomTimestamp;
1323
+ scheduledTimeTimestamp: number;
1324
+ active: boolean;
1325
+ voice: string | null;
1326
+ setId: string;
1327
+ dateMade: {
1328
+ seconds: number;
1329
+ nanoseconds: number;
1330
+ };
1331
+ maxPoints: number;
1332
+ courseId: string;
1333
+ isAssessment: boolean;
1334
+ ltiDeeplink?: string;
1335
+ content?: string[];
1336
+ weights?: Record<string, number>;
1337
+ language?: string;
1338
+ types?: { [key in ActivityPageType]?: number; };
1339
+ } | null, Error>;
1340
+ };
1341
+ scores: {
1342
+ data: ScoreWithId | undefined;
1343
+ query: _tanstack_react_query.UseQueryResult<ScoreWithId, Error>;
1344
+ actions: {
1345
+ update: (data: Partial<Score>) => void;
1346
+ clear: ({ cardId, wasCompleted, }: {
1347
+ cardId: string;
1348
+ wasCompleted?: boolean;
1349
+ }) => void;
1350
+ submit: () => Promise<{
1351
+ success: boolean;
1352
+ message: string;
1353
+ error?: undefined;
1354
+ } | {
1355
+ success: boolean;
1356
+ error: unknown;
1357
+ message?: undefined;
1358
+ }>;
1359
+ updateCard: (cardId: string, cardScore: PageScore) => void;
1360
+ logGradingStandardEntry: ({ cardId, gradingStandard, type, }: {
1361
+ cardId: string;
1362
+ gradingStandard: {
1363
+ level: string;
1364
+ justification: string;
1365
+ };
1366
+ type: "actfl" | "wida" | "custom";
1367
+ }) => void;
1368
+ };
1369
+ };
1370
+ };
1371
+
1372
+ interface CreditContract {
1373
+ allocationSource: string;
1374
+ createdAt: string;
1375
+ creditsAllocatedThisPeriod: number;
1376
+ effectivePlanId: string;
1377
+ email: string;
1378
+ isUnlimited: boolean;
1379
+ lastUpdatedAt: string;
1380
+ ownerType: string;
1381
+ periodStart: string;
1382
+ periodEnd: string;
1383
+ planTermEndTimestamp: string | null;
1384
+ sourceDetails: Record<string, unknown>;
1385
+ creditsAvailable?: number;
1386
+ topOffCreditsAvailable?: number;
1387
+ }
1388
+ declare const creditQueryKeys: {
1389
+ userCredits: (uid: string) => readonly ["userCredits", string];
1390
+ };
1391
+ declare const useUserCredits: () => {
1392
+ data: {
1393
+ id: string;
1394
+ userId: string;
1395
+ email: string;
1396
+ effectivePlanId: string;
1397
+ status: string;
1398
+ isUnlimited: boolean;
1399
+ creditsAvailable: number;
1400
+ creditsAllocatedThisPeriod: number;
1401
+ topOffCreditsAvailable: number;
1402
+ topOffCreditsTotal: number;
1403
+ allocationSource: string;
1404
+ sourceDetails: {};
1405
+ periodStart: null;
1406
+ periodEnd: null;
1407
+ planTermEndTimestamp: null;
1408
+ ownerType: string;
1409
+ createdAt: string;
1410
+ lastUpdatedAt: string;
1411
+ } | {
1412
+ totalCreditsAvailable: number;
1413
+ allocationSource: string;
1414
+ createdAt: string;
1415
+ creditsAllocatedThisPeriod: number;
1416
+ effectivePlanId: string;
1417
+ email: string;
1418
+ isUnlimited: boolean;
1419
+ lastUpdatedAt: string;
1420
+ ownerType: string;
1421
+ periodStart: string;
1422
+ periodEnd: string;
1423
+ planTermEndTimestamp: string | null;
1424
+ sourceDetails: Record<string, unknown>;
1425
+ creditsAvailable?: number;
1426
+ topOffCreditsAvailable?: number;
1427
+ id: string;
1428
+ userId?: undefined;
1429
+ status?: undefined;
1430
+ topOffCreditsTotal?: undefined;
1431
+ };
1432
+ error: Error;
1433
+ isError: true;
1434
+ isPending: false;
1435
+ isLoading: false;
1436
+ isLoadingError: false;
1437
+ isRefetchError: true;
1438
+ isSuccess: false;
1439
+ isPlaceholderData: false;
1440
+ status: "error";
1441
+ dataUpdatedAt: number;
1442
+ errorUpdatedAt: number;
1443
+ failureCount: number;
1444
+ failureReason: Error | null;
1445
+ errorUpdateCount: number;
1446
+ isFetched: boolean;
1447
+ isFetchedAfterMount: boolean;
1448
+ isFetching: boolean;
1449
+ isInitialLoading: boolean;
1450
+ isPaused: boolean;
1451
+ isRefetching: boolean;
1452
+ isStale: boolean;
1453
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
1454
+ id: string;
1455
+ userId: string;
1456
+ email: string;
1457
+ effectivePlanId: string;
1458
+ status: string;
1459
+ isUnlimited: boolean;
1460
+ creditsAvailable: number;
1461
+ creditsAllocatedThisPeriod: number;
1462
+ topOffCreditsAvailable: number;
1463
+ topOffCreditsTotal: number;
1464
+ allocationSource: string;
1465
+ sourceDetails: {};
1466
+ periodStart: null;
1467
+ periodEnd: null;
1468
+ planTermEndTimestamp: null;
1469
+ ownerType: string;
1470
+ createdAt: string;
1471
+ lastUpdatedAt: string;
1472
+ } | {
1473
+ totalCreditsAvailable: number;
1474
+ allocationSource: string;
1475
+ createdAt: string;
1476
+ creditsAllocatedThisPeriod: number;
1477
+ effectivePlanId: string;
1478
+ email: string;
1479
+ isUnlimited: boolean;
1480
+ lastUpdatedAt: string;
1481
+ ownerType: string;
1482
+ periodStart: string;
1483
+ periodEnd: string;
1484
+ planTermEndTimestamp: string | null;
1485
+ sourceDetails: Record<string, unknown>;
1486
+ creditsAvailable?: number;
1487
+ topOffCreditsAvailable?: number;
1488
+ id: string;
1489
+ userId?: undefined;
1490
+ status?: undefined;
1491
+ topOffCreditsTotal?: undefined;
1492
+ }, Error>>;
1493
+ fetchStatus: _tanstack_react_query.FetchStatus;
1494
+ promise: Promise<{
1495
+ id: string;
1496
+ userId: string;
1497
+ email: string;
1498
+ effectivePlanId: string;
1499
+ status: string;
1500
+ isUnlimited: boolean;
1501
+ creditsAvailable: number;
1502
+ creditsAllocatedThisPeriod: number;
1503
+ topOffCreditsAvailable: number;
1504
+ topOffCreditsTotal: number;
1505
+ allocationSource: string;
1506
+ sourceDetails: {};
1507
+ periodStart: null;
1508
+ periodEnd: null;
1509
+ planTermEndTimestamp: null;
1510
+ ownerType: string;
1511
+ createdAt: string;
1512
+ lastUpdatedAt: string;
1513
+ } | {
1514
+ totalCreditsAvailable: number;
1515
+ allocationSource: string;
1516
+ createdAt: string;
1517
+ creditsAllocatedThisPeriod: number;
1518
+ effectivePlanId: string;
1519
+ email: string;
1520
+ isUnlimited: boolean;
1521
+ lastUpdatedAt: string;
1522
+ ownerType: string;
1523
+ periodStart: string;
1524
+ periodEnd: string;
1525
+ planTermEndTimestamp: string | null;
1526
+ sourceDetails: Record<string, unknown>;
1527
+ creditsAvailable?: number;
1528
+ topOffCreditsAvailable?: number;
1529
+ id: string;
1530
+ userId?: undefined;
1531
+ status?: undefined;
1532
+ topOffCreditsTotal?: undefined;
1533
+ }>;
1534
+ } | {
1535
+ data: {
1536
+ id: string;
1537
+ userId: string;
1538
+ email: string;
1539
+ effectivePlanId: string;
1540
+ status: string;
1541
+ isUnlimited: boolean;
1542
+ creditsAvailable: number;
1543
+ creditsAllocatedThisPeriod: number;
1544
+ topOffCreditsAvailable: number;
1545
+ topOffCreditsTotal: number;
1546
+ allocationSource: string;
1547
+ sourceDetails: {};
1548
+ periodStart: null;
1549
+ periodEnd: null;
1550
+ planTermEndTimestamp: null;
1551
+ ownerType: string;
1552
+ createdAt: string;
1553
+ lastUpdatedAt: string;
1554
+ } | {
1555
+ totalCreditsAvailable: number;
1556
+ allocationSource: string;
1557
+ createdAt: string;
1558
+ creditsAllocatedThisPeriod: number;
1559
+ effectivePlanId: string;
1560
+ email: string;
1561
+ isUnlimited: boolean;
1562
+ lastUpdatedAt: string;
1563
+ ownerType: string;
1564
+ periodStart: string;
1565
+ periodEnd: string;
1566
+ planTermEndTimestamp: string | null;
1567
+ sourceDetails: Record<string, unknown>;
1568
+ creditsAvailable?: number;
1569
+ topOffCreditsAvailable?: number;
1570
+ id: string;
1571
+ userId?: undefined;
1572
+ status?: undefined;
1573
+ topOffCreditsTotal?: undefined;
1574
+ };
1575
+ error: null;
1576
+ isError: false;
1577
+ isPending: false;
1578
+ isLoading: false;
1579
+ isLoadingError: false;
1580
+ isRefetchError: false;
1581
+ isSuccess: true;
1582
+ isPlaceholderData: false;
1583
+ status: "success";
1584
+ dataUpdatedAt: number;
1585
+ errorUpdatedAt: number;
1586
+ failureCount: number;
1587
+ failureReason: Error | null;
1588
+ errorUpdateCount: number;
1589
+ isFetched: boolean;
1590
+ isFetchedAfterMount: boolean;
1591
+ isFetching: boolean;
1592
+ isInitialLoading: boolean;
1593
+ isPaused: boolean;
1594
+ isRefetching: boolean;
1595
+ isStale: boolean;
1596
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
1597
+ id: string;
1598
+ userId: string;
1599
+ email: string;
1600
+ effectivePlanId: string;
1601
+ status: string;
1602
+ isUnlimited: boolean;
1603
+ creditsAvailable: number;
1604
+ creditsAllocatedThisPeriod: number;
1605
+ topOffCreditsAvailable: number;
1606
+ topOffCreditsTotal: number;
1607
+ allocationSource: string;
1608
+ sourceDetails: {};
1609
+ periodStart: null;
1610
+ periodEnd: null;
1611
+ planTermEndTimestamp: null;
1612
+ ownerType: string;
1613
+ createdAt: string;
1614
+ lastUpdatedAt: string;
1615
+ } | {
1616
+ totalCreditsAvailable: number;
1617
+ allocationSource: string;
1618
+ createdAt: string;
1619
+ creditsAllocatedThisPeriod: number;
1620
+ effectivePlanId: string;
1621
+ email: string;
1622
+ isUnlimited: boolean;
1623
+ lastUpdatedAt: string;
1624
+ ownerType: string;
1625
+ periodStart: string;
1626
+ periodEnd: string;
1627
+ planTermEndTimestamp: string | null;
1628
+ sourceDetails: Record<string, unknown>;
1629
+ creditsAvailable?: number;
1630
+ topOffCreditsAvailable?: number;
1631
+ id: string;
1632
+ userId?: undefined;
1633
+ status?: undefined;
1634
+ topOffCreditsTotal?: undefined;
1635
+ }, Error>>;
1636
+ fetchStatus: _tanstack_react_query.FetchStatus;
1637
+ promise: Promise<{
1638
+ id: string;
1639
+ userId: string;
1640
+ email: string;
1641
+ effectivePlanId: string;
1642
+ status: string;
1643
+ isUnlimited: boolean;
1644
+ creditsAvailable: number;
1645
+ creditsAllocatedThisPeriod: number;
1646
+ topOffCreditsAvailable: number;
1647
+ topOffCreditsTotal: number;
1648
+ allocationSource: string;
1649
+ sourceDetails: {};
1650
+ periodStart: null;
1651
+ periodEnd: null;
1652
+ planTermEndTimestamp: null;
1653
+ ownerType: string;
1654
+ createdAt: string;
1655
+ lastUpdatedAt: string;
1656
+ } | {
1657
+ totalCreditsAvailable: number;
1658
+ allocationSource: string;
1659
+ createdAt: string;
1660
+ creditsAllocatedThisPeriod: number;
1661
+ effectivePlanId: string;
1662
+ email: string;
1663
+ isUnlimited: boolean;
1664
+ lastUpdatedAt: string;
1665
+ ownerType: string;
1666
+ periodStart: string;
1667
+ periodEnd: string;
1668
+ planTermEndTimestamp: string | null;
1669
+ sourceDetails: Record<string, unknown>;
1670
+ creditsAvailable?: number;
1671
+ topOffCreditsAvailable?: number;
1672
+ id: string;
1673
+ userId?: undefined;
1674
+ status?: undefined;
1675
+ topOffCreditsTotal?: undefined;
1676
+ }>;
1677
+ } | {
1678
+ data: undefined;
1679
+ error: Error;
1680
+ isError: true;
1681
+ isPending: false;
1682
+ isLoading: false;
1683
+ isLoadingError: true;
1684
+ isRefetchError: false;
1685
+ isSuccess: false;
1686
+ isPlaceholderData: false;
1687
+ status: "error";
1688
+ dataUpdatedAt: number;
1689
+ errorUpdatedAt: number;
1690
+ failureCount: number;
1691
+ failureReason: Error | null;
1692
+ errorUpdateCount: number;
1693
+ isFetched: boolean;
1694
+ isFetchedAfterMount: boolean;
1695
+ isFetching: boolean;
1696
+ isInitialLoading: boolean;
1697
+ isPaused: boolean;
1698
+ isRefetching: boolean;
1699
+ isStale: boolean;
1700
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
1701
+ id: string;
1702
+ userId: string;
1703
+ email: string;
1704
+ effectivePlanId: string;
1705
+ status: string;
1706
+ isUnlimited: boolean;
1707
+ creditsAvailable: number;
1708
+ creditsAllocatedThisPeriod: number;
1709
+ topOffCreditsAvailable: number;
1710
+ topOffCreditsTotal: number;
1711
+ allocationSource: string;
1712
+ sourceDetails: {};
1713
+ periodStart: null;
1714
+ periodEnd: null;
1715
+ planTermEndTimestamp: null;
1716
+ ownerType: string;
1717
+ createdAt: string;
1718
+ lastUpdatedAt: string;
1719
+ } | {
1720
+ totalCreditsAvailable: number;
1721
+ allocationSource: string;
1722
+ createdAt: string;
1723
+ creditsAllocatedThisPeriod: number;
1724
+ effectivePlanId: string;
1725
+ email: string;
1726
+ isUnlimited: boolean;
1727
+ lastUpdatedAt: string;
1728
+ ownerType: string;
1729
+ periodStart: string;
1730
+ periodEnd: string;
1731
+ planTermEndTimestamp: string | null;
1732
+ sourceDetails: Record<string, unknown>;
1733
+ creditsAvailable?: number;
1734
+ topOffCreditsAvailable?: number;
1735
+ id: string;
1736
+ userId?: undefined;
1737
+ status?: undefined;
1738
+ topOffCreditsTotal?: undefined;
1739
+ }, Error>>;
1740
+ fetchStatus: _tanstack_react_query.FetchStatus;
1741
+ promise: Promise<{
1742
+ id: string;
1743
+ userId: string;
1744
+ email: string;
1745
+ effectivePlanId: string;
1746
+ status: string;
1747
+ isUnlimited: boolean;
1748
+ creditsAvailable: number;
1749
+ creditsAllocatedThisPeriod: number;
1750
+ topOffCreditsAvailable: number;
1751
+ topOffCreditsTotal: number;
1752
+ allocationSource: string;
1753
+ sourceDetails: {};
1754
+ periodStart: null;
1755
+ periodEnd: null;
1756
+ planTermEndTimestamp: null;
1757
+ ownerType: string;
1758
+ createdAt: string;
1759
+ lastUpdatedAt: string;
1760
+ } | {
1761
+ totalCreditsAvailable: number;
1762
+ allocationSource: string;
1763
+ createdAt: string;
1764
+ creditsAllocatedThisPeriod: number;
1765
+ effectivePlanId: string;
1766
+ email: string;
1767
+ isUnlimited: boolean;
1768
+ lastUpdatedAt: string;
1769
+ ownerType: string;
1770
+ periodStart: string;
1771
+ periodEnd: string;
1772
+ planTermEndTimestamp: string | null;
1773
+ sourceDetails: Record<string, unknown>;
1774
+ creditsAvailable?: number;
1775
+ topOffCreditsAvailable?: number;
1776
+ id: string;
1777
+ userId?: undefined;
1778
+ status?: undefined;
1779
+ topOffCreditsTotal?: undefined;
1780
+ }>;
1781
+ } | {
1782
+ data: undefined;
1783
+ error: null;
1784
+ isError: false;
1785
+ isPending: true;
1786
+ isLoading: true;
1787
+ isLoadingError: false;
1788
+ isRefetchError: false;
1789
+ isSuccess: false;
1790
+ isPlaceholderData: false;
1791
+ status: "pending";
1792
+ dataUpdatedAt: number;
1793
+ errorUpdatedAt: number;
1794
+ failureCount: number;
1795
+ failureReason: Error | null;
1796
+ errorUpdateCount: number;
1797
+ isFetched: boolean;
1798
+ isFetchedAfterMount: boolean;
1799
+ isFetching: boolean;
1800
+ isInitialLoading: boolean;
1801
+ isPaused: boolean;
1802
+ isRefetching: boolean;
1803
+ isStale: boolean;
1804
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
1805
+ id: string;
1806
+ userId: string;
1807
+ email: string;
1808
+ effectivePlanId: string;
1809
+ status: string;
1810
+ isUnlimited: boolean;
1811
+ creditsAvailable: number;
1812
+ creditsAllocatedThisPeriod: number;
1813
+ topOffCreditsAvailable: number;
1814
+ topOffCreditsTotal: number;
1815
+ allocationSource: string;
1816
+ sourceDetails: {};
1817
+ periodStart: null;
1818
+ periodEnd: null;
1819
+ planTermEndTimestamp: null;
1820
+ ownerType: string;
1821
+ createdAt: string;
1822
+ lastUpdatedAt: string;
1823
+ } | {
1824
+ totalCreditsAvailable: number;
1825
+ allocationSource: string;
1826
+ createdAt: string;
1827
+ creditsAllocatedThisPeriod: number;
1828
+ effectivePlanId: string;
1829
+ email: string;
1830
+ isUnlimited: boolean;
1831
+ lastUpdatedAt: string;
1832
+ ownerType: string;
1833
+ periodStart: string;
1834
+ periodEnd: string;
1835
+ planTermEndTimestamp: string | null;
1836
+ sourceDetails: Record<string, unknown>;
1837
+ creditsAvailable?: number;
1838
+ topOffCreditsAvailable?: number;
1839
+ id: string;
1840
+ userId?: undefined;
1841
+ status?: undefined;
1842
+ topOffCreditsTotal?: undefined;
1843
+ }, Error>>;
1844
+ fetchStatus: _tanstack_react_query.FetchStatus;
1845
+ promise: Promise<{
1846
+ id: string;
1847
+ userId: string;
1848
+ email: string;
1849
+ effectivePlanId: string;
1850
+ status: string;
1851
+ isUnlimited: boolean;
1852
+ creditsAvailable: number;
1853
+ creditsAllocatedThisPeriod: number;
1854
+ topOffCreditsAvailable: number;
1855
+ topOffCreditsTotal: number;
1856
+ allocationSource: string;
1857
+ sourceDetails: {};
1858
+ periodStart: null;
1859
+ periodEnd: null;
1860
+ planTermEndTimestamp: null;
1861
+ ownerType: string;
1862
+ createdAt: string;
1863
+ lastUpdatedAt: string;
1864
+ } | {
1865
+ totalCreditsAvailable: number;
1866
+ allocationSource: string;
1867
+ createdAt: string;
1868
+ creditsAllocatedThisPeriod: number;
1869
+ effectivePlanId: string;
1870
+ email: string;
1871
+ isUnlimited: boolean;
1872
+ lastUpdatedAt: string;
1873
+ ownerType: string;
1874
+ periodStart: string;
1875
+ periodEnd: string;
1876
+ planTermEndTimestamp: string | null;
1877
+ sourceDetails: Record<string, unknown>;
1878
+ creditsAvailable?: number;
1879
+ topOffCreditsAvailable?: number;
1880
+ id: string;
1881
+ userId?: undefined;
1882
+ status?: undefined;
1883
+ topOffCreditsTotal?: undefined;
1884
+ }>;
1885
+ } | {
1886
+ data: undefined;
1887
+ error: null;
1888
+ isError: false;
1889
+ isPending: true;
1890
+ isLoadingError: false;
1891
+ isRefetchError: false;
1892
+ isSuccess: false;
1893
+ isPlaceholderData: false;
1894
+ status: "pending";
1895
+ dataUpdatedAt: number;
1896
+ errorUpdatedAt: number;
1897
+ failureCount: number;
1898
+ failureReason: Error | null;
1899
+ errorUpdateCount: number;
1900
+ isFetched: boolean;
1901
+ isFetchedAfterMount: boolean;
1902
+ isFetching: boolean;
1903
+ isLoading: boolean;
1904
+ isInitialLoading: boolean;
1905
+ isPaused: boolean;
1906
+ isRefetching: boolean;
1907
+ isStale: boolean;
1908
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
1909
+ id: string;
1910
+ userId: string;
1911
+ email: string;
1912
+ effectivePlanId: string;
1913
+ status: string;
1914
+ isUnlimited: boolean;
1915
+ creditsAvailable: number;
1916
+ creditsAllocatedThisPeriod: number;
1917
+ topOffCreditsAvailable: number;
1918
+ topOffCreditsTotal: number;
1919
+ allocationSource: string;
1920
+ sourceDetails: {};
1921
+ periodStart: null;
1922
+ periodEnd: null;
1923
+ planTermEndTimestamp: null;
1924
+ ownerType: string;
1925
+ createdAt: string;
1926
+ lastUpdatedAt: string;
1927
+ } | {
1928
+ totalCreditsAvailable: number;
1929
+ allocationSource: string;
1930
+ createdAt: string;
1931
+ creditsAllocatedThisPeriod: number;
1932
+ effectivePlanId: string;
1933
+ email: string;
1934
+ isUnlimited: boolean;
1935
+ lastUpdatedAt: string;
1936
+ ownerType: string;
1937
+ periodStart: string;
1938
+ periodEnd: string;
1939
+ planTermEndTimestamp: string | null;
1940
+ sourceDetails: Record<string, unknown>;
1941
+ creditsAvailable?: number;
1942
+ topOffCreditsAvailable?: number;
1943
+ id: string;
1944
+ userId?: undefined;
1945
+ status?: undefined;
1946
+ topOffCreditsTotal?: undefined;
1947
+ }, Error>>;
1948
+ fetchStatus: _tanstack_react_query.FetchStatus;
1949
+ promise: Promise<{
1950
+ id: string;
1951
+ userId: string;
1952
+ email: string;
1953
+ effectivePlanId: string;
1954
+ status: string;
1955
+ isUnlimited: boolean;
1956
+ creditsAvailable: number;
1957
+ creditsAllocatedThisPeriod: number;
1958
+ topOffCreditsAvailable: number;
1959
+ topOffCreditsTotal: number;
1960
+ allocationSource: string;
1961
+ sourceDetails: {};
1962
+ periodStart: null;
1963
+ periodEnd: null;
1964
+ planTermEndTimestamp: null;
1965
+ ownerType: string;
1966
+ createdAt: string;
1967
+ lastUpdatedAt: string;
1968
+ } | {
1969
+ totalCreditsAvailable: number;
1970
+ allocationSource: string;
1971
+ createdAt: string;
1972
+ creditsAllocatedThisPeriod: number;
1973
+ effectivePlanId: string;
1974
+ email: string;
1975
+ isUnlimited: boolean;
1976
+ lastUpdatedAt: string;
1977
+ ownerType: string;
1978
+ periodStart: string;
1979
+ periodEnd: string;
1980
+ planTermEndTimestamp: string | null;
1981
+ sourceDetails: Record<string, unknown>;
1982
+ creditsAvailable?: number;
1983
+ topOffCreditsAvailable?: number;
1984
+ id: string;
1985
+ userId?: undefined;
1986
+ status?: undefined;
1987
+ topOffCreditsTotal?: undefined;
1988
+ }>;
1989
+ } | {
1990
+ data: {
1991
+ id: string;
1992
+ userId: string;
1993
+ email: string;
1994
+ effectivePlanId: string;
1995
+ status: string;
1996
+ isUnlimited: boolean;
1997
+ creditsAvailable: number;
1998
+ creditsAllocatedThisPeriod: number;
1999
+ topOffCreditsAvailable: number;
2000
+ topOffCreditsTotal: number;
2001
+ allocationSource: string;
2002
+ sourceDetails: {};
2003
+ periodStart: null;
2004
+ periodEnd: null;
2005
+ planTermEndTimestamp: null;
2006
+ ownerType: string;
2007
+ createdAt: string;
2008
+ lastUpdatedAt: string;
2009
+ } | {
2010
+ totalCreditsAvailable: number;
2011
+ allocationSource: string;
2012
+ createdAt: string;
2013
+ creditsAllocatedThisPeriod: number;
2014
+ effectivePlanId: string;
2015
+ email: string;
2016
+ isUnlimited: boolean;
2017
+ lastUpdatedAt: string;
2018
+ ownerType: string;
2019
+ periodStart: string;
2020
+ periodEnd: string;
2021
+ planTermEndTimestamp: string | null;
2022
+ sourceDetails: Record<string, unknown>;
2023
+ creditsAvailable?: number;
2024
+ topOffCreditsAvailable?: number;
2025
+ id: string;
2026
+ userId?: undefined;
2027
+ status?: undefined;
2028
+ topOffCreditsTotal?: undefined;
2029
+ };
2030
+ isError: false;
2031
+ error: null;
2032
+ isPending: false;
2033
+ isLoading: false;
2034
+ isLoadingError: false;
2035
+ isRefetchError: false;
2036
+ isSuccess: true;
2037
+ isPlaceholderData: true;
2038
+ status: "success";
2039
+ dataUpdatedAt: number;
2040
+ errorUpdatedAt: number;
2041
+ failureCount: number;
2042
+ failureReason: Error | null;
2043
+ errorUpdateCount: number;
2044
+ isFetched: boolean;
2045
+ isFetchedAfterMount: boolean;
2046
+ isFetching: boolean;
2047
+ isInitialLoading: boolean;
2048
+ isPaused: boolean;
2049
+ isRefetching: boolean;
2050
+ isStale: boolean;
2051
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2052
+ id: string;
2053
+ userId: string;
2054
+ email: string;
2055
+ effectivePlanId: string;
2056
+ status: string;
2057
+ isUnlimited: boolean;
2058
+ creditsAvailable: number;
2059
+ creditsAllocatedThisPeriod: number;
2060
+ topOffCreditsAvailable: number;
2061
+ topOffCreditsTotal: number;
2062
+ allocationSource: string;
2063
+ sourceDetails: {};
2064
+ periodStart: null;
2065
+ periodEnd: null;
2066
+ planTermEndTimestamp: null;
2067
+ ownerType: string;
2068
+ createdAt: string;
2069
+ lastUpdatedAt: string;
2070
+ } | {
2071
+ totalCreditsAvailable: number;
2072
+ allocationSource: string;
2073
+ createdAt: string;
2074
+ creditsAllocatedThisPeriod: number;
2075
+ effectivePlanId: string;
2076
+ email: string;
2077
+ isUnlimited: boolean;
2078
+ lastUpdatedAt: string;
2079
+ ownerType: string;
2080
+ periodStart: string;
2081
+ periodEnd: string;
2082
+ planTermEndTimestamp: string | null;
2083
+ sourceDetails: Record<string, unknown>;
2084
+ creditsAvailable?: number;
2085
+ topOffCreditsAvailable?: number;
2086
+ id: string;
2087
+ userId?: undefined;
2088
+ status?: undefined;
2089
+ topOffCreditsTotal?: undefined;
2090
+ }, Error>>;
2091
+ fetchStatus: _tanstack_react_query.FetchStatus;
2092
+ promise: Promise<{
2093
+ id: string;
2094
+ userId: string;
2095
+ email: string;
2096
+ effectivePlanId: string;
2097
+ status: string;
2098
+ isUnlimited: boolean;
2099
+ creditsAvailable: number;
2100
+ creditsAllocatedThisPeriod: number;
2101
+ topOffCreditsAvailable: number;
2102
+ topOffCreditsTotal: number;
2103
+ allocationSource: string;
2104
+ sourceDetails: {};
2105
+ periodStart: null;
2106
+ periodEnd: null;
2107
+ planTermEndTimestamp: null;
2108
+ ownerType: string;
2109
+ createdAt: string;
2110
+ lastUpdatedAt: string;
2111
+ } | {
2112
+ totalCreditsAvailable: number;
2113
+ allocationSource: string;
2114
+ createdAt: string;
2115
+ creditsAllocatedThisPeriod: number;
2116
+ effectivePlanId: string;
2117
+ email: string;
2118
+ isUnlimited: boolean;
2119
+ lastUpdatedAt: string;
2120
+ ownerType: string;
2121
+ periodStart: string;
2122
+ periodEnd: string;
2123
+ planTermEndTimestamp: string | null;
2124
+ sourceDetails: Record<string, unknown>;
2125
+ creditsAvailable?: number;
2126
+ topOffCreditsAvailable?: number;
2127
+ id: string;
2128
+ userId?: undefined;
2129
+ status?: undefined;
2130
+ topOffCreditsTotal?: undefined;
2131
+ }>;
2132
+ };
2133
+
2134
+ interface OrganizationAccess {
2135
+ hasUnlimitedAccess: boolean;
2136
+ subscriptionId: string | null;
2137
+ organizationId: string | null;
2138
+ organizationName: string | null;
2139
+ subscriptionEndDate: Date | null;
2140
+ accessType: 'organization' | 'individual' | 'institution_subscriptions';
2141
+ }
2142
+ interface InstitutionSubscription {
2143
+ id: string;
2144
+ institutionId: string;
2145
+ name: string;
2146
+ plan: string;
2147
+ endDate: Date;
2148
+ }
2149
+ interface Organization {
2150
+ id: string;
2151
+ name: string;
2152
+ members: string[];
2153
+ masterSubscriptionStatus: string;
2154
+ masterSubscriptionId: string;
2155
+ masterSubscriptionEndDate: Date;
2156
+ }
2157
+ declare const useOrganizationAccess: () => {
2158
+ data: OrganizationAccess;
2159
+ error: Error;
2160
+ isError: true;
2161
+ isPending: false;
2162
+ isLoading: false;
2163
+ isLoadingError: false;
2164
+ isRefetchError: true;
2165
+ isSuccess: false;
2166
+ isPlaceholderData: false;
2167
+ status: "error";
2168
+ dataUpdatedAt: number;
2169
+ errorUpdatedAt: number;
2170
+ failureCount: number;
2171
+ failureReason: Error | null;
2172
+ errorUpdateCount: number;
2173
+ isFetched: boolean;
2174
+ isFetchedAfterMount: boolean;
2175
+ isFetching: boolean;
2176
+ isInitialLoading: boolean;
2177
+ isPaused: boolean;
2178
+ isRefetching: boolean;
2179
+ isStale: boolean;
2180
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2181
+ fetchStatus: _tanstack_react_query.FetchStatus;
2182
+ promise: Promise<OrganizationAccess>;
2183
+ } | {
2184
+ data: OrganizationAccess;
2185
+ error: null;
2186
+ isError: false;
2187
+ isPending: false;
2188
+ isLoading: false;
2189
+ isLoadingError: false;
2190
+ isRefetchError: false;
2191
+ isSuccess: true;
2192
+ isPlaceholderData: false;
2193
+ status: "success";
2194
+ dataUpdatedAt: number;
2195
+ errorUpdatedAt: number;
2196
+ failureCount: number;
2197
+ failureReason: Error | null;
2198
+ errorUpdateCount: number;
2199
+ isFetched: boolean;
2200
+ isFetchedAfterMount: boolean;
2201
+ isFetching: boolean;
2202
+ isInitialLoading: boolean;
2203
+ isPaused: boolean;
2204
+ isRefetching: boolean;
2205
+ isStale: boolean;
2206
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2207
+ fetchStatus: _tanstack_react_query.FetchStatus;
2208
+ promise: Promise<OrganizationAccess>;
2209
+ } | {
2210
+ data: undefined;
2211
+ error: Error;
2212
+ isError: true;
2213
+ isPending: false;
2214
+ isLoading: false;
2215
+ isLoadingError: true;
2216
+ isRefetchError: false;
2217
+ isSuccess: false;
2218
+ isPlaceholderData: false;
2219
+ status: "error";
2220
+ dataUpdatedAt: number;
2221
+ errorUpdatedAt: number;
2222
+ failureCount: number;
2223
+ failureReason: Error | null;
2224
+ errorUpdateCount: number;
2225
+ isFetched: boolean;
2226
+ isFetchedAfterMount: boolean;
2227
+ isFetching: boolean;
2228
+ isInitialLoading: boolean;
2229
+ isPaused: boolean;
2230
+ isRefetching: boolean;
2231
+ isStale: boolean;
2232
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2233
+ fetchStatus: _tanstack_react_query.FetchStatus;
2234
+ promise: Promise<OrganizationAccess>;
2235
+ } | {
2236
+ data: undefined;
2237
+ error: null;
2238
+ isError: false;
2239
+ isPending: true;
2240
+ isLoading: true;
2241
+ isLoadingError: false;
2242
+ isRefetchError: false;
2243
+ isSuccess: false;
2244
+ isPlaceholderData: false;
2245
+ status: "pending";
2246
+ dataUpdatedAt: number;
2247
+ errorUpdatedAt: number;
2248
+ failureCount: number;
2249
+ failureReason: Error | null;
2250
+ errorUpdateCount: number;
2251
+ isFetched: boolean;
2252
+ isFetchedAfterMount: boolean;
2253
+ isFetching: boolean;
2254
+ isInitialLoading: boolean;
2255
+ isPaused: boolean;
2256
+ isRefetching: boolean;
2257
+ isStale: boolean;
2258
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2259
+ fetchStatus: _tanstack_react_query.FetchStatus;
2260
+ promise: Promise<OrganizationAccess>;
2261
+ } | {
2262
+ data: undefined;
2263
+ error: null;
2264
+ isError: false;
2265
+ isPending: true;
2266
+ isLoadingError: false;
2267
+ isRefetchError: false;
2268
+ isSuccess: false;
2269
+ isPlaceholderData: false;
2270
+ status: "pending";
2271
+ dataUpdatedAt: number;
2272
+ errorUpdatedAt: number;
2273
+ failureCount: number;
2274
+ failureReason: Error | null;
2275
+ errorUpdateCount: number;
2276
+ isFetched: boolean;
2277
+ isFetchedAfterMount: boolean;
2278
+ isFetching: boolean;
2279
+ isLoading: boolean;
2280
+ isInitialLoading: boolean;
2281
+ isPaused: boolean;
2282
+ isRefetching: boolean;
2283
+ isStale: boolean;
2284
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2285
+ fetchStatus: _tanstack_react_query.FetchStatus;
2286
+ promise: Promise<OrganizationAccess>;
2287
+ } | {
2288
+ data: OrganizationAccess;
2289
+ isError: false;
2290
+ error: null;
2291
+ isPending: false;
2292
+ isLoading: false;
2293
+ isLoadingError: false;
2294
+ isRefetchError: false;
2295
+ isSuccess: true;
2296
+ isPlaceholderData: true;
2297
+ status: "success";
2298
+ dataUpdatedAt: number;
2299
+ errorUpdatedAt: number;
2300
+ failureCount: number;
2301
+ failureReason: Error | null;
2302
+ errorUpdateCount: number;
2303
+ isFetched: boolean;
2304
+ isFetchedAfterMount: boolean;
2305
+ isFetching: boolean;
2306
+ isInitialLoading: boolean;
2307
+ isPaused: boolean;
2308
+ isRefetching: boolean;
2309
+ isStale: boolean;
2310
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2311
+ fetchStatus: _tanstack_react_query.FetchStatus;
2312
+ promise: Promise<OrganizationAccess>;
2313
+ };
2314
+
2315
+ declare const useUpdateStudentVocab: (page: PageActivityWithId | null) => {
2316
+ studentVocabMarkVoiceSuccess: undefined;
2317
+ studentVocabMarkVoiceFail: undefined;
2318
+ } | {
2319
+ studentVocabMarkVoiceSuccess: () => Promise<void>;
2320
+ studentVocabMarkVoiceFail: () => Promise<void>;
2321
+ };
2322
+
2323
+ declare const useBaseOpenAI: ({ onTranscriptSuccess, onTranscriptError, onCompletionSuccess, onCompletionError, aiEnabled, submitAudioResponse, uploadAudioAndGetTranscript, }: {
2324
+ onTranscriptSuccess: (transcript: string) => void;
2325
+ onTranscriptError: ({ type, message }: {
2326
+ type: string;
2327
+ message: string;
2328
+ }) => void;
2329
+ onCompletionSuccess: (completion: any) => void;
2330
+ onCompletionError: ({ type, message }: {
2331
+ type: string;
2332
+ message: string;
2333
+ }) => void;
2334
+ aiEnabled: boolean;
2335
+ submitAudioResponse: (audio: string) => Promise<{
2336
+ url: string;
2337
+ fileName: string;
2338
+ }>;
2339
+ uploadAudioAndGetTranscript: (audio: string, language: string) => Promise<string>;
2340
+ }) => {
2341
+ submitAudioResponse: (audio: string) => Promise<{
2342
+ url: string;
2343
+ fileName: string;
2344
+ }>;
2345
+ uploadAudioAndGetTranscript: (audio: string, language: string) => Promise<string>;
2346
+ getTranscript: (audioUrl: string, language: string) => Promise<string>;
2347
+ getFreeResponseCompletion: (messages: string[], isFreeResponse: boolean, feedbackLanguage: string, gradingStandard?: string) => Promise<any>;
2348
+ getFeedback: ({ cardId, language, writtenResponse, audio, autoGrade, file, }: {
2349
+ cardId: string;
2350
+ language: string;
2351
+ writtenResponse: string | null;
2352
+ audio: string | null;
2353
+ autoGrade: boolean;
2354
+ file: string | null;
2355
+ }) => Promise<{
2356
+ noFeedbackAvailable: boolean;
2357
+ success: boolean;
2358
+ reason: string;
2359
+ accessType: "ai_enabled" | "teacher_preview" | "student_with_teacher_plan" | "none";
2360
+ } | {
2361
+ noFeedbackAvailable: boolean;
2362
+ success: boolean;
2363
+ reason: string;
2364
+ accessType: string;
2365
+ aiSuccess: boolean;
2366
+ }>;
2367
+ };
2368
+
2369
+ interface ActivityFeedbackAccess {
2370
+ canAccessFeedback: boolean;
2371
+ reason?: string;
2372
+ isUnlimited: boolean;
2373
+ accessType: 'ai_enabled' | 'teacher_preview' | 'student_with_teacher_plan' | 'none';
2374
+ }
2375
+ /**
2376
+ * Hook to check feedback permissions for both students and teachers
2377
+ *
2378
+ * Permission Logic:
2379
+ * 1. aiEnabled: true → Allow feedback access always (highest priority)
2380
+ * 2. Teachers on /activity route → Always allowed (ADMIN role)
2381
+ * 3. Students on /activity route → Need teacher with active plan (team/org)
2382
+ *
2383
+ * @param params - Parameters for permission checking
2384
+ * @returns Feedback permissions information
2385
+ */
2386
+ declare const useActivityFeedbackAccess: ({ aiEnabled, isActivityRoute, }: {
2387
+ aiEnabled?: boolean;
2388
+ isActivityRoute?: boolean;
2389
+ }) => {
2390
+ data: ActivityFeedbackAccess;
2391
+ error: Error;
2392
+ isError: true;
2393
+ isPending: false;
2394
+ isLoading: false;
2395
+ isLoadingError: false;
2396
+ isRefetchError: true;
2397
+ isSuccess: false;
2398
+ isPlaceholderData: false;
2399
+ status: "error";
2400
+ dataUpdatedAt: number;
2401
+ errorUpdatedAt: number;
2402
+ failureCount: number;
2403
+ failureReason: Error | null;
2404
+ errorUpdateCount: number;
2405
+ isFetched: boolean;
2406
+ isFetchedAfterMount: boolean;
2407
+ isFetching: boolean;
2408
+ isInitialLoading: boolean;
2409
+ isPaused: boolean;
2410
+ isRefetching: boolean;
2411
+ isStale: boolean;
2412
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
2413
+ fetchStatus: _tanstack_react_query.FetchStatus;
2414
+ promise: Promise<ActivityFeedbackAccess>;
2415
+ } | {
2416
+ data: ActivityFeedbackAccess;
2417
+ error: null;
2418
+ isError: false;
2419
+ isPending: false;
2420
+ isLoading: false;
2421
+ isLoadingError: false;
2422
+ isRefetchError: false;
2423
+ isSuccess: true;
2424
+ isPlaceholderData: false;
2425
+ status: "success";
2426
+ dataUpdatedAt: number;
2427
+ errorUpdatedAt: number;
2428
+ failureCount: number;
2429
+ failureReason: Error | null;
2430
+ errorUpdateCount: number;
2431
+ isFetched: boolean;
2432
+ isFetchedAfterMount: boolean;
2433
+ isFetching: boolean;
2434
+ isInitialLoading: boolean;
2435
+ isPaused: boolean;
2436
+ isRefetching: boolean;
2437
+ isStale: boolean;
2438
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
2439
+ fetchStatus: _tanstack_react_query.FetchStatus;
2440
+ promise: Promise<ActivityFeedbackAccess>;
2441
+ } | {
2442
+ data: undefined;
2443
+ error: Error;
2444
+ isError: true;
2445
+ isPending: false;
2446
+ isLoading: false;
2447
+ isLoadingError: true;
2448
+ isRefetchError: false;
2449
+ isSuccess: false;
2450
+ isPlaceholderData: false;
2451
+ status: "error";
2452
+ dataUpdatedAt: number;
2453
+ errorUpdatedAt: number;
2454
+ failureCount: number;
2455
+ failureReason: Error | null;
2456
+ errorUpdateCount: number;
2457
+ isFetched: boolean;
2458
+ isFetchedAfterMount: boolean;
2459
+ isFetching: boolean;
2460
+ isInitialLoading: boolean;
2461
+ isPaused: boolean;
2462
+ isRefetching: boolean;
2463
+ isStale: boolean;
2464
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
2465
+ fetchStatus: _tanstack_react_query.FetchStatus;
2466
+ promise: Promise<ActivityFeedbackAccess>;
2467
+ } | {
2468
+ data: undefined;
2469
+ error: null;
2470
+ isError: false;
2471
+ isPending: true;
2472
+ isLoading: true;
2473
+ isLoadingError: false;
2474
+ isRefetchError: false;
2475
+ isSuccess: false;
2476
+ isPlaceholderData: false;
2477
+ status: "pending";
2478
+ dataUpdatedAt: number;
2479
+ errorUpdatedAt: number;
2480
+ failureCount: number;
2481
+ failureReason: Error | null;
2482
+ errorUpdateCount: number;
2483
+ isFetched: boolean;
2484
+ isFetchedAfterMount: boolean;
2485
+ isFetching: boolean;
2486
+ isInitialLoading: boolean;
2487
+ isPaused: boolean;
2488
+ isRefetching: boolean;
2489
+ isStale: boolean;
2490
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
2491
+ fetchStatus: _tanstack_react_query.FetchStatus;
2492
+ promise: Promise<ActivityFeedbackAccess>;
2493
+ } | {
2494
+ data: undefined;
2495
+ error: null;
2496
+ isError: false;
2497
+ isPending: true;
2498
+ isLoadingError: false;
2499
+ isRefetchError: false;
2500
+ isSuccess: false;
2501
+ isPlaceholderData: false;
2502
+ status: "pending";
2503
+ dataUpdatedAt: number;
2504
+ errorUpdatedAt: number;
2505
+ failureCount: number;
2506
+ failureReason: Error | null;
2507
+ errorUpdateCount: number;
2508
+ isFetched: boolean;
2509
+ isFetchedAfterMount: boolean;
2510
+ isFetching: boolean;
2511
+ isLoading: boolean;
2512
+ isInitialLoading: boolean;
2513
+ isPaused: boolean;
2514
+ isRefetching: boolean;
2515
+ isStale: boolean;
2516
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
2517
+ fetchStatus: _tanstack_react_query.FetchStatus;
2518
+ promise: Promise<ActivityFeedbackAccess>;
2519
+ } | {
2520
+ data: ActivityFeedbackAccess;
2521
+ isError: false;
2522
+ error: null;
2523
+ isPending: false;
2524
+ isLoading: false;
2525
+ isLoadingError: false;
2526
+ isRefetchError: false;
2527
+ isSuccess: true;
2528
+ isPlaceholderData: true;
2529
+ status: "success";
2530
+ dataUpdatedAt: number;
2531
+ errorUpdatedAt: number;
2532
+ failureCount: number;
2533
+ failureReason: Error | null;
2534
+ errorUpdateCount: number;
2535
+ isFetched: boolean;
2536
+ isFetchedAfterMount: boolean;
2537
+ isFetching: boolean;
2538
+ isInitialLoading: boolean;
2539
+ isPaused: boolean;
2540
+ isRefetching: boolean;
2541
+ isStale: boolean;
2542
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
2543
+ fetchStatus: _tanstack_react_query.FetchStatus;
2544
+ promise: Promise<ActivityFeedbackAccess>;
2545
+ };
2546
+
2547
+ declare const createFsClientWeb: ({ db, httpsCallable, logEvent }: FsClientParams) => {
2548
+ assignmentRepo: {
2549
+ getAssignment: (params: {
2550
+ assignmentId: string;
2551
+ currentUserId: string;
2552
+ analyticType?: AssignmentAnalyticsType;
2553
+ studentId?: string;
2554
+ }) => Promise<AssignmentWithId | {
2555
+ scores: any;
2556
+ id: string;
2557
+ isAvailable: boolean;
2558
+ name: string;
2559
+ description: string;
2560
+ scheduledTime?: string | null;
2561
+ dueTime?: {
2562
+ hours: number;
2563
+ minutes: number;
2564
+ nanos: number;
2565
+ };
2566
+ speakableio: boolean;
2567
+ owners: string[];
2568
+ image: {
2569
+ path: string | null;
2570
+ url: string;
2571
+ };
2572
+ dueDate: {
2573
+ day: number;
2574
+ month: number;
2575
+ year: number;
2576
+ };
2577
+ teacherName: string;
2578
+ courseWorkId: string | null;
2579
+ dueDateTimestamp: CustomTimestamp;
2580
+ scheduledTimeTimestamp: number;
2581
+ active: boolean;
2582
+ voice: string | null;
2583
+ setId: string;
2584
+ dateMade: {
2585
+ seconds: number;
2586
+ nanoseconds: number;
2587
+ };
2588
+ maxPoints: number;
2589
+ courseId: string;
2590
+ isAssessment: boolean;
2591
+ ltiDeeplink?: string;
2592
+ content?: string[];
2593
+ weights?: Record<string, number>;
2594
+ language?: string;
2595
+ types?: { [key in ActivityPageType]?: number; };
2596
+ } | null>;
2597
+ attachScoresAssignment: (args_0: {
2598
+ assignments: AssignmentWithId[];
2599
+ analyticType: AssignmentAnalyticsType;
2600
+ studentId?: string;
2601
+ currentUserId: string;
2602
+ }) => Promise<{
2603
+ scores: any;
2604
+ id: string;
2605
+ isAvailable: boolean;
2606
+ name: string;
2607
+ description: string;
2608
+ scheduledTime?: string | null;
2609
+ dueTime?: {
2610
+ hours: number;
2611
+ minutes: number;
2612
+ nanos: number;
2613
+ };
2614
+ speakableio: boolean;
2615
+ owners: string[];
2616
+ image: {
2617
+ path: string | null;
2618
+ url: string;
2619
+ };
2620
+ dueDate: {
2621
+ day: number;
2622
+ month: number;
2623
+ year: number;
2624
+ };
2625
+ teacherName: string;
2626
+ courseWorkId: string | null;
2627
+ dueDateTimestamp: CustomTimestamp;
2628
+ scheduledTimeTimestamp: number;
2629
+ active: boolean;
2630
+ voice: string | null;
2631
+ setId: string;
2632
+ dateMade: {
2633
+ seconds: number;
2634
+ nanoseconds: number;
2635
+ };
2636
+ maxPoints: number;
2637
+ courseId: string;
2638
+ isAssessment: boolean;
2639
+ ltiDeeplink?: string;
2640
+ content?: string[];
2641
+ weights?: Record<string, number>;
2642
+ language?: string;
2643
+ types?: { [key in ActivityPageType]?: number; };
2644
+ }[]>;
2645
+ getAssignmentScores: (args_0: {
2646
+ assignmentId: string;
2647
+ currentUserId: string;
2648
+ analyticType?: AssignmentAnalyticsType;
2649
+ studentId?: string;
2650
+ }) => Promise<{
2651
+ scores: unknown;
2652
+ id: string;
2653
+ } | undefined>;
2654
+ getAllAssignments: () => Promise<(AssignmentWithId & {
2655
+ id: string;
2656
+ })[]>;
2657
+ };
2658
+ cardRepo: {
2659
+ createCard: (args_0: {
2660
+ data: Partial<PageActivity>;
2661
+ }) => Promise<{
2662
+ id: string;
2663
+ } & Partial<PageActivity>>;
2664
+ createCards: (args_0: {
2665
+ cards: PageActivity[];
2666
+ }) => Promise<{
2667
+ id: string;
2668
+ owners: string[];
2669
+ checked?: boolean;
2670
+ completed?: boolean;
2671
+ media_area_id?: string | null;
2672
+ media_area_layout?: "left" | "right" | null;
2673
+ score?: number;
2674
+ verificationStatus?: VerificationCardStatus;
2675
+ native_text?: string;
2676
+ repeat?: number;
2677
+ language?: string | null;
2678
+ image?: {
2679
+ path?: string | null;
2680
+ url?: string;
2681
+ };
2682
+ audio?: {
2683
+ path?: string | null;
2684
+ url?: string;
2685
+ } | null;
2686
+ notes?: string;
2687
+ difficulty?: string;
2688
+ default_language?: string;
2689
+ target_text?: string;
2690
+ type: ActivityPageType;
2691
+ grading_criteria?: string;
2692
+ scoring_type?: string;
2693
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
2694
+ feedback_types?: string[];
2695
+ rubricId?: string;
2696
+ prompt?: string;
2697
+ title?: string;
2698
+ passing_score?: number;
2699
+ maxCharacters?: number;
2700
+ answer?: string[];
2701
+ choices?: {
2702
+ value: string;
2703
+ option: string;
2704
+ }[];
2705
+ MCQType?: string;
2706
+ multipleAttemptsAllowed?: boolean;
2707
+ allowRetries?: boolean;
2708
+ question?: string;
2709
+ respondTime?: number;
2710
+ hidePrompt?: boolean;
2711
+ videoUrl?: string;
2712
+ link?: string;
2713
+ text?: string;
2714
+ isListenAloud?: boolean;
2715
+ embedCode?: string;
2716
+ attempt?: number;
2717
+ correct?: number;
2718
+ autoGrade?: boolean;
2719
+ points?: number;
2720
+ shuffle?: boolean;
2721
+ translation?: string;
2722
+ includeAIContext?: boolean;
2723
+ media_area_context_ref?: string | null;
2724
+ standardId?: string;
2725
+ target_proficiency_level?: string;
2726
+ allowTTS?: boolean;
2727
+ }[]>;
2728
+ getCard: (params: {
2729
+ cardId: string;
2730
+ }) => Promise<PageActivityWithId | null>;
2731
+ };
2732
+ };
2733
+
2734
+ export { ActivityPageType, type Assignment, type AssignmentWithId, BASE_MULTIPLE_CHOICE_FIELD_VALUES, BASE_REPEAT_FIELD_VALUES, BASE_RESPOND_FIELD_VALUES, type CreditContract, FeedbackTypesCard, FsCtx, type InstitutionSubscription, LENIENCY_OPTIONS, LeniencyCard, MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES, type Organization, type OrganizationAccess, type PageActivity, type PageActivityWithId, type PageScore, REPEAT_PAGE_ACTIVITY_TYPES, RESPOND_AUDIO_PAGE_ACTIVITY_TYPES, RESPOND_PAGE_ACTIVITY_TYPES, RESPOND_WRITE_PAGE_ACTIVITY_TYPES, type RefsCardsFiresotre, type RefsSetsFirestore, SPEAKABLE_NOTIFICATIONS, STUDENT_LEVELS_OPTIONS, type Score, type ScoreWithId, type Set, type SetWithId, type SpeakableNotificationType, SpeakableNotificationTypes, SpeakableProvider, VerificationCardStatus, assignmentQueryKeys, cardsQueryKeys, checkIsMCPage, checkIsMediaPage, checkIsRepeatPage, checkIsRespondAudioPage, checkIsRespondPage, checkIsRespondWrittenPage, checkIsShortAnswerPage, checkTypePageActivity, cleanString, createAssignmentRepo, createCardRepo, createFsClientWeb as createFsClient, createSetRepo, creditQueryKeys, debounce, getCardFromCache, getPagePrompt, getPhraseLength, getRespondCardTool, getSetFromCache, getWordHash, purify, refsCardsFiresotre, refsSetsFirestore, scoreQueryKeys, setsQueryKeys, updateCardInCache, updateSetInCache, useActivity, useActivityFeedbackAccess, useAssignment, useBaseOpenAI, useCards, useClearScore, useCreateCard, useCreateCards, useCreateNotification, useGetCard, useOrganizationAccess, useScore, useSet, useSpeakableApi, useSubmitAssignmentScore, useSubmitPracticeScore, useUpdateCardScore, useUpdateScore, useUpdateStudentVocab, useUserCredits };