@speakableio/core 1.0.59 → 1.0.61

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,3566 @@
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 { Timestamp, FirebaseFirestoreTypes } from '@react-native-firebase/firestore';
6
+ import { Timestamp as Timestamp$1, Firestore, getDoc, getDocs, addDoc, setDoc, updateDoc, deleteDoc, runTransaction, writeBatch, doc, collection, query, serverTimestamp, orderBy, limit, startAt, startAfter, endAt, endBefore, where, increment, 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 enum FeedbackTypesCard {
35
+ SuggestedResponse = "suggested_response",
36
+ Wida = "wida",
37
+ GrammarInsights = "grammar_insights",
38
+ Actfl = "actfl",
39
+ ProficiencyLevel = "proficiency_level"
40
+ }
41
+ declare 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 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 MediaPageActivity {
91
+ type: 'image' | 'video' | 'link' | 'audio' | 'embed' | 'document';
92
+ url: string;
93
+ transcript?: string | null;
94
+ }
95
+ declare enum ConversationPageMode {
96
+ VoiceAndText = "voice_and_text",
97
+ PhoneCall = "phone_call"
98
+ }
99
+ interface PageActivity {
100
+ owners: string[];
101
+ checked?: boolean;
102
+ completed?: boolean;
103
+ media_area_id?: string | null;
104
+ media_area_layout?: 'left' | 'right' | null;
105
+ media?: MediaPageActivity | null;
106
+ score?: number;
107
+ verificationStatus?: VerificationCardStatus;
108
+ native_text?: string;
109
+ repeat?: number;
110
+ language?: string | null;
111
+ image?: {
112
+ path?: string | null;
113
+ url?: string;
114
+ };
115
+ audio?: {
116
+ path?: string | null;
117
+ url?: string;
118
+ } | null;
119
+ notes?: string;
120
+ difficulty?: string;
121
+ default_language?: string;
122
+ target_text?: string;
123
+ type: ActivityPageType;
124
+ grading_criteria?: string;
125
+ grading_criteria_title?: string;
126
+ scoring_type?: string;
127
+ grading_method?: 'simple' | 'rubric' | 'manual' | 'standards_based';
128
+ feedback_types?: FeedbackTypesCard[];
129
+ rubricId?: string;
130
+ prompt?: string;
131
+ title?: string;
132
+ passing_score?: number;
133
+ maxCharacters?: number;
134
+ answer?: string[];
135
+ choices?: {
136
+ value: string;
137
+ option: string;
138
+ }[];
139
+ MCQType?: string;
140
+ multipleAttemptsAllowed?: boolean;
141
+ allowRetries?: boolean;
142
+ question?: string;
143
+ respondTime?: number;
144
+ hidePrompt?: boolean;
145
+ videoUrl?: string;
146
+ link?: string;
147
+ text?: string;
148
+ isListenAloud?: boolean;
149
+ embedCode?: string;
150
+ attempt?: number;
151
+ correct?: number;
152
+ autoGrade?: boolean;
153
+ points?: number;
154
+ shuffle?: boolean;
155
+ translation?: string;
156
+ includeAIContext?: boolean;
157
+ media_area_context_ref?: string | null;
158
+ standardId?: string;
159
+ target_proficiency_level?: string;
160
+ allowTTS?: boolean;
161
+ feedback_language?: string | null;
162
+ correct_answer?: string | null;
163
+ limit_attempts?: boolean;
164
+ max_attempts?: number;
165
+ rich_text?: string;
166
+ feedbackOff?: boolean;
167
+ correct_answer_exact_match?: boolean;
168
+ ai_context_block_ids?: string[];
169
+ resolvedContext?: string;
170
+ goal?: string;
171
+ mode?: ConversationPageMode;
172
+ personality?: string;
173
+ voice?: string;
174
+ topic?: string;
175
+ vocab?: string[];
176
+ questions?: string[];
177
+ showHints?: boolean;
178
+ }
179
+ declare const enum ActivityPageType {
180
+ READ_REPEAT = "READ_REPEAT",
181
+ READ_RESPOND = "READ_RESPOND",
182
+ FREE_RESPONSE = "FREE_RESPONSE",
183
+ REPEAT = "REPEAT",
184
+ RESPOND = "RESPOND",
185
+ RESPOND_WRITE = "RESPOND_WRITE",
186
+ MULTIPLE_CHOICE = "MULTIPLE_CHOICE",
187
+ MEDIA_PAGE = "MEDIA_PAGE",
188
+ SHORT_ANSWER = "SHORT_ANSWER",
189
+ CONVERSATION = "CONVERSATION"
190
+ }
191
+ declare const RESPOND_PAGE_ACTIVITY_TYPES: ActivityPageType[];
192
+ declare const MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES: ActivityPageType[];
193
+ declare const REPEAT_PAGE_ACTIVITY_TYPES: ActivityPageType[];
194
+ declare const RESPOND_WRITE_PAGE_ACTIVITY_TYPES: ActivityPageType[];
195
+ declare const RESPOND_AUDIO_PAGE_ACTIVITY_TYPES: ActivityPageType[];
196
+ declare const CONVERSATION_PAGE_ACTIVITY_TYPES: ActivityPageType[];
197
+
198
+ declare const cardsQueryKeys: {
199
+ all: string[];
200
+ one: (params: {
201
+ cardId: string;
202
+ }) => string[];
203
+ };
204
+ declare function useCards({ cardIds, enabled, asObject, }: {
205
+ cardIds: string[];
206
+ enabled: boolean;
207
+ asObject?: boolean;
208
+ }): {
209
+ cards: PageActivityWithId[];
210
+ cardsObject: Record<string, PageActivityWithId> | null;
211
+ cardsQueries: _tanstack_react_query.UseQueryResult<{
212
+ type: ActivityPageType;
213
+ id: string;
214
+ owners: string[];
215
+ checked?: boolean;
216
+ completed?: boolean;
217
+ media_area_id?: string | null;
218
+ media_area_layout?: "left" | "right" | null;
219
+ media?: MediaPageActivity | null;
220
+ score?: number;
221
+ verificationStatus?: VerificationCardStatus;
222
+ native_text?: string;
223
+ repeat?: number;
224
+ language?: string | null;
225
+ image?: {
226
+ path?: string | null;
227
+ url?: string;
228
+ };
229
+ audio?: {
230
+ path?: string | null;
231
+ url?: string;
232
+ } | null;
233
+ notes?: string;
234
+ difficulty?: string;
235
+ default_language?: string;
236
+ target_text?: string;
237
+ grading_criteria?: string;
238
+ grading_criteria_title?: string;
239
+ scoring_type?: string;
240
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
241
+ feedback_types?: FeedbackTypesCard[];
242
+ rubricId?: string;
243
+ prompt?: string;
244
+ title?: string;
245
+ passing_score?: number;
246
+ maxCharacters?: number;
247
+ answer?: string[];
248
+ choices?: {
249
+ value: string;
250
+ option: string;
251
+ }[];
252
+ MCQType?: string;
253
+ multipleAttemptsAllowed?: boolean;
254
+ allowRetries?: boolean;
255
+ question?: string;
256
+ respondTime?: number;
257
+ hidePrompt?: boolean;
258
+ videoUrl?: string;
259
+ link?: string;
260
+ text?: string;
261
+ isListenAloud?: boolean;
262
+ embedCode?: string;
263
+ attempt?: number;
264
+ correct?: number;
265
+ autoGrade?: boolean;
266
+ points?: number;
267
+ shuffle?: boolean;
268
+ translation?: string;
269
+ includeAIContext?: boolean;
270
+ media_area_context_ref?: string | null;
271
+ standardId?: string;
272
+ target_proficiency_level?: string;
273
+ allowTTS?: boolean;
274
+ feedback_language?: string | null;
275
+ correct_answer?: string | null;
276
+ limit_attempts?: boolean;
277
+ max_attempts?: number;
278
+ rich_text?: string;
279
+ feedbackOff?: boolean;
280
+ correct_answer_exact_match?: boolean;
281
+ ai_context_block_ids?: string[];
282
+ resolvedContext?: string;
283
+ goal?: string;
284
+ mode?: ConversationPageMode;
285
+ personality?: string;
286
+ voice?: string;
287
+ topic?: string;
288
+ vocab?: string[];
289
+ questions?: string[];
290
+ showHints?: boolean;
291
+ } | null, Error>[];
292
+ };
293
+ declare function useCreateCard(): {
294
+ mutationCreateCard: _tanstack_react_query.UseMutationResult<{
295
+ id: string;
296
+ } & Partial<PageActivity>, Error, {
297
+ data: Partial<PageActivity>;
298
+ }, unknown>;
299
+ };
300
+ declare function useCreateCards(): {
301
+ mutationCreateCards: _tanstack_react_query.UseMutationResult<{
302
+ id: string;
303
+ owners: string[];
304
+ checked?: boolean;
305
+ completed?: boolean;
306
+ media_area_id?: string | null;
307
+ media_area_layout?: "left" | "right" | null;
308
+ media?: MediaPageActivity | null;
309
+ score?: number;
310
+ verificationStatus?: VerificationCardStatus;
311
+ native_text?: string;
312
+ repeat?: number;
313
+ language?: string | null;
314
+ image?: {
315
+ path?: string | null;
316
+ url?: string;
317
+ };
318
+ audio?: {
319
+ path?: string | null;
320
+ url?: string;
321
+ } | null;
322
+ notes?: string;
323
+ difficulty?: string;
324
+ default_language?: string;
325
+ target_text?: string;
326
+ type: ActivityPageType;
327
+ grading_criteria?: string;
328
+ grading_criteria_title?: string;
329
+ scoring_type?: string;
330
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
331
+ feedback_types?: FeedbackTypesCard[];
332
+ rubricId?: string;
333
+ prompt?: string;
334
+ title?: string;
335
+ passing_score?: number;
336
+ maxCharacters?: number;
337
+ answer?: string[];
338
+ choices?: {
339
+ value: string;
340
+ option: string;
341
+ }[];
342
+ MCQType?: string;
343
+ multipleAttemptsAllowed?: boolean;
344
+ allowRetries?: boolean;
345
+ question?: string;
346
+ respondTime?: number;
347
+ hidePrompt?: boolean;
348
+ videoUrl?: string;
349
+ link?: string;
350
+ text?: string;
351
+ isListenAloud?: boolean;
352
+ embedCode?: string;
353
+ attempt?: number;
354
+ correct?: number;
355
+ autoGrade?: boolean;
356
+ points?: number;
357
+ shuffle?: boolean;
358
+ translation?: string;
359
+ includeAIContext?: boolean;
360
+ media_area_context_ref?: string | null;
361
+ standardId?: string;
362
+ target_proficiency_level?: string;
363
+ allowTTS?: boolean;
364
+ feedback_language?: string | null;
365
+ correct_answer?: string | null;
366
+ limit_attempts?: boolean;
367
+ max_attempts?: number;
368
+ rich_text?: string;
369
+ feedbackOff?: boolean;
370
+ correct_answer_exact_match?: boolean;
371
+ ai_context_block_ids?: string[];
372
+ resolvedContext?: string;
373
+ goal?: string;
374
+ mode?: ConversationPageMode;
375
+ personality?: string;
376
+ voice?: string;
377
+ topic?: string;
378
+ vocab?: string[];
379
+ questions?: string[];
380
+ showHints?: boolean;
381
+ }[], Error, {
382
+ cards: PageActivity[];
383
+ }, unknown>;
384
+ };
385
+ declare function getCardFromCache({ cardId, queryClient, }: {
386
+ cardId: string;
387
+ queryClient: QueryClient;
388
+ }): PageActivityWithId | undefined;
389
+ declare function updateCardInCache({ cardId, card, queryClient, }: {
390
+ cardId: string;
391
+ card: PageActivityWithId | null;
392
+ queryClient: QueryClient;
393
+ }): void;
394
+ declare function useGetCard({ cardId, enabled }: {
395
+ cardId: string;
396
+ enabled?: boolean;
397
+ }): _tanstack_react_query.UseQueryResult<{
398
+ type: ActivityPageType;
399
+ id: string;
400
+ owners: string[];
401
+ checked?: boolean;
402
+ completed?: boolean;
403
+ media_area_id?: string | null;
404
+ media_area_layout?: "left" | "right" | null;
405
+ media?: MediaPageActivity | null;
406
+ score?: number;
407
+ verificationStatus?: VerificationCardStatus;
408
+ native_text?: string;
409
+ repeat?: number;
410
+ language?: string | null;
411
+ image?: {
412
+ path?: string | null;
413
+ url?: string;
414
+ };
415
+ audio?: {
416
+ path?: string | null;
417
+ url?: string;
418
+ } | null;
419
+ notes?: string;
420
+ difficulty?: string;
421
+ default_language?: string;
422
+ target_text?: string;
423
+ grading_criteria?: string;
424
+ grading_criteria_title?: string;
425
+ scoring_type?: string;
426
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
427
+ feedback_types?: FeedbackTypesCard[];
428
+ rubricId?: string;
429
+ prompt?: string;
430
+ title?: string;
431
+ passing_score?: number;
432
+ maxCharacters?: number;
433
+ answer?: string[];
434
+ choices?: {
435
+ value: string;
436
+ option: string;
437
+ }[];
438
+ MCQType?: string;
439
+ multipleAttemptsAllowed?: boolean;
440
+ allowRetries?: boolean;
441
+ question?: string;
442
+ respondTime?: number;
443
+ hidePrompt?: boolean;
444
+ videoUrl?: string;
445
+ link?: string;
446
+ text?: string;
447
+ isListenAloud?: boolean;
448
+ embedCode?: string;
449
+ attempt?: number;
450
+ correct?: number;
451
+ autoGrade?: boolean;
452
+ points?: number;
453
+ shuffle?: boolean;
454
+ translation?: string;
455
+ includeAIContext?: boolean;
456
+ media_area_context_ref?: string | null;
457
+ standardId?: string;
458
+ target_proficiency_level?: string;
459
+ allowTTS?: boolean;
460
+ feedback_language?: string | null;
461
+ correct_answer?: string | null;
462
+ limit_attempts?: boolean;
463
+ max_attempts?: number;
464
+ rich_text?: string;
465
+ feedbackOff?: boolean;
466
+ correct_answer_exact_match?: boolean;
467
+ ai_context_block_ids?: string[];
468
+ resolvedContext?: string;
469
+ goal?: string;
470
+ mode?: ConversationPageMode;
471
+ personality?: string;
472
+ voice?: string;
473
+ topic?: string;
474
+ vocab?: string[];
475
+ questions?: string[];
476
+ showHints?: boolean;
477
+ } | null, Error>;
478
+
479
+ declare const createCardRepo: () => {
480
+ createCard: (args_0: {
481
+ data: Partial<PageActivity>;
482
+ }) => Promise<{
483
+ id: string;
484
+ } & Partial<PageActivity>>;
485
+ createCards: (args_0: {
486
+ cards: PageActivity[];
487
+ }) => Promise<{
488
+ id: string;
489
+ owners: string[];
490
+ checked?: boolean;
491
+ completed?: boolean;
492
+ media_area_id?: string | null;
493
+ media_area_layout?: "left" | "right" | null;
494
+ media?: MediaPageActivity | null;
495
+ score?: number;
496
+ verificationStatus?: VerificationCardStatus;
497
+ native_text?: string;
498
+ repeat?: number;
499
+ language?: string | null;
500
+ image?: {
501
+ path?: string | null;
502
+ url?: string;
503
+ };
504
+ audio?: {
505
+ path?: string | null;
506
+ url?: string;
507
+ } | null;
508
+ notes?: string;
509
+ difficulty?: string;
510
+ default_language?: string;
511
+ target_text?: string;
512
+ type: ActivityPageType;
513
+ grading_criteria?: string;
514
+ grading_criteria_title?: string;
515
+ scoring_type?: string;
516
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
517
+ feedback_types?: FeedbackTypesCard[];
518
+ rubricId?: string;
519
+ prompt?: string;
520
+ title?: string;
521
+ passing_score?: number;
522
+ maxCharacters?: number;
523
+ answer?: string[];
524
+ choices?: {
525
+ value: string;
526
+ option: string;
527
+ }[];
528
+ MCQType?: string;
529
+ multipleAttemptsAllowed?: boolean;
530
+ allowRetries?: boolean;
531
+ question?: string;
532
+ respondTime?: number;
533
+ hidePrompt?: boolean;
534
+ videoUrl?: string;
535
+ link?: string;
536
+ text?: string;
537
+ isListenAloud?: boolean;
538
+ embedCode?: string;
539
+ attempt?: number;
540
+ correct?: number;
541
+ autoGrade?: boolean;
542
+ points?: number;
543
+ shuffle?: boolean;
544
+ translation?: string;
545
+ includeAIContext?: boolean;
546
+ media_area_context_ref?: string | null;
547
+ standardId?: string;
548
+ target_proficiency_level?: string;
549
+ allowTTS?: boolean;
550
+ feedback_language?: string | null;
551
+ correct_answer?: string | null;
552
+ limit_attempts?: boolean;
553
+ max_attempts?: number;
554
+ rich_text?: string;
555
+ feedbackOff?: boolean;
556
+ correct_answer_exact_match?: boolean;
557
+ ai_context_block_ids?: string[];
558
+ resolvedContext?: string;
559
+ goal?: string;
560
+ mode?: ConversationPageMode;
561
+ personality?: string;
562
+ voice?: string;
563
+ topic?: string;
564
+ vocab?: string[];
565
+ questions?: string[];
566
+ showHints?: boolean;
567
+ }[]>;
568
+ getCard: (params: {
569
+ cardId: string;
570
+ }) => Promise<{
571
+ type: ActivityPageType;
572
+ id: string;
573
+ owners: string[];
574
+ checked?: boolean;
575
+ completed?: boolean;
576
+ media_area_id?: string | null;
577
+ media_area_layout?: "left" | "right" | null;
578
+ media?: MediaPageActivity | null;
579
+ score?: number;
580
+ verificationStatus?: VerificationCardStatus;
581
+ native_text?: string;
582
+ repeat?: number;
583
+ language?: string | null;
584
+ image?: {
585
+ path?: string | null;
586
+ url?: string;
587
+ };
588
+ audio?: {
589
+ path?: string | null;
590
+ url?: string;
591
+ } | null;
592
+ notes?: string;
593
+ difficulty?: string;
594
+ default_language?: string;
595
+ target_text?: string;
596
+ grading_criteria?: string;
597
+ grading_criteria_title?: string;
598
+ scoring_type?: string;
599
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
600
+ feedback_types?: FeedbackTypesCard[];
601
+ rubricId?: string;
602
+ prompt?: string;
603
+ title?: string;
604
+ passing_score?: number;
605
+ maxCharacters?: number;
606
+ answer?: string[];
607
+ choices?: {
608
+ value: string;
609
+ option: string;
610
+ }[];
611
+ MCQType?: string;
612
+ multipleAttemptsAllowed?: boolean;
613
+ allowRetries?: boolean;
614
+ question?: string;
615
+ respondTime?: number;
616
+ hidePrompt?: boolean;
617
+ videoUrl?: string;
618
+ link?: string;
619
+ text?: string;
620
+ isListenAloud?: boolean;
621
+ embedCode?: string;
622
+ attempt?: number;
623
+ correct?: number;
624
+ autoGrade?: boolean;
625
+ points?: number;
626
+ shuffle?: boolean;
627
+ translation?: string;
628
+ includeAIContext?: boolean;
629
+ media_area_context_ref?: string | null;
630
+ standardId?: string;
631
+ target_proficiency_level?: string;
632
+ allowTTS?: boolean;
633
+ feedback_language?: string | null;
634
+ correct_answer?: string | null;
635
+ limit_attempts?: boolean;
636
+ max_attempts?: number;
637
+ rich_text?: string;
638
+ feedbackOff?: boolean;
639
+ correct_answer_exact_match?: boolean;
640
+ ai_context_block_ids?: string[];
641
+ resolvedContext?: string;
642
+ goal?: string;
643
+ mode?: ConversationPageMode;
644
+ personality?: string;
645
+ voice?: string;
646
+ topic?: string;
647
+ vocab?: string[];
648
+ questions?: string[];
649
+ showHints?: boolean;
650
+ } | null>;
651
+ };
652
+
653
+ declare function checkIsRepeatPage(cardType: ActivityPageType | undefined): boolean;
654
+ declare function checkIsMCPage(cardType: ActivityPageType | undefined): boolean;
655
+ declare function checkIsRespondPage(cardType: ActivityPageType | undefined): boolean;
656
+ declare function checkIsRespondWrittenPage(cardType: ActivityPageType | undefined): boolean;
657
+ declare function checkIsRespondAudioPage(cardType: ActivityPageType | undefined): boolean;
658
+ declare const checkIsMediaPage: (cardType: ActivityPageType | undefined) => boolean;
659
+ declare const checkIsShortAnswerPage: (cardType: ActivityPageType | undefined) => boolean;
660
+ declare const checkIsConversationPage: (cardType: ActivityPageType | undefined) => boolean;
661
+ declare const checkTypePageActivity: (cardType: ActivityPageType | undefined) => {
662
+ isRespondAudio: boolean;
663
+ isRespondWritten: boolean;
664
+ isRespond: boolean;
665
+ isMC: boolean;
666
+ isRepeat: boolean;
667
+ isMediaPage: boolean;
668
+ isShortAnswer: boolean;
669
+ hasSomeType: boolean;
670
+ isConversation: boolean;
671
+ };
672
+
673
+ declare function getPagePrompt(card: PageActivityWithId | undefined): {
674
+ has: boolean;
675
+ text: string;
676
+ rich_text: string;
677
+ isTextEqualToRichText: boolean;
678
+ extraText: string;
679
+ } | {
680
+ has: boolean;
681
+ text: string;
682
+ rich_text: string;
683
+ isTextEqualToRichText: boolean;
684
+ };
685
+
686
+ declare const getTotalCompletedCards: (pageScores: Score["cards"] | undefined) => number;
687
+
688
+ declare const getLabelPage: (pageType: ActivityPageType | undefined) => {
689
+ short: string;
690
+ long: string;
691
+ };
692
+
693
+ declare function getPageMediaData(page: PageActivityWithId): {
694
+ isMediaPage: boolean;
695
+ resource: {
696
+ id: string | undefined;
697
+ shouldRender: boolean;
698
+ };
699
+ promptMedia: {
700
+ direction: "left" | "right";
701
+ content: {
702
+ rawObject: MediaPageActivity;
703
+ type: "document" | "image" | "video" | "link" | "audio" | "embed";
704
+ content: string;
705
+ } | undefined;
706
+ shouldRender: boolean;
707
+ };
708
+ };
709
+ declare function getSingleMediaPageData(page: PageActivityWithId): {
710
+ rawObject: MediaPageActivity;
711
+ type: "document" | "image" | "video" | "link" | "audio" | "embed";
712
+ content: string;
713
+ } | undefined;
714
+
715
+ interface Assignment {
716
+ name: string;
717
+ description: string;
718
+ scheduledTime?: string | null;
719
+ dueTime?: {
720
+ hours: number;
721
+ minutes: number;
722
+ nanos: number;
723
+ };
724
+ speakableio: boolean;
725
+ owners: string[];
726
+ image: {
727
+ path: string | null;
728
+ url: string;
729
+ };
730
+ dueDate: {
731
+ day: number;
732
+ month: number;
733
+ year: number;
734
+ };
735
+ teacherName: string;
736
+ courseWorkId: string | null;
737
+ dueDateTimestamp: CustomTimestamp;
738
+ scheduledTimeTimestamp: number;
739
+ active: boolean;
740
+ voice: string | null;
741
+ setId: string;
742
+ dateMade: {
743
+ seconds: number;
744
+ nanoseconds: number;
745
+ };
746
+ maxPoints: number;
747
+ courseId: string;
748
+ isAssessment: boolean;
749
+ isAvailable: boolean;
750
+ ltiDeeplink?: string;
751
+ content?: string[];
752
+ weights?: Record<string, number>;
753
+ language?: string;
754
+ types?: {
755
+ [key in ActivityPageType]?: number;
756
+ };
757
+ aiEnabled?: boolean;
758
+ chat_experience?: boolean;
759
+ showScores?: boolean;
760
+ }
761
+ type AssignmentAnalyticsType$1 = 'macro' | 'gradebook' | 'cards' | 'student' | 'student_summary';
762
+ interface AssignmentWithId extends Assignment {
763
+ id: string;
764
+ isAvailable: boolean;
765
+ scores?: unknown;
766
+ }
767
+ interface Score {
768
+ userId: string;
769
+ owners: string[];
770
+ progress: number;
771
+ score: number;
772
+ cards?: {
773
+ [cardId: string]: PageScore;
774
+ };
775
+ courseId?: string;
776
+ firstLoad?: boolean;
777
+ googleClassroomUserId?: string;
778
+ skippedCards?: number;
779
+ lastPlayed?: CustomTimestamp;
780
+ startDate?: CustomTimestamp;
781
+ submissionDate?: CustomTimestamp;
782
+ status?: 'SUBMITTED' | 'PENDING_REVIEW' | 'IN_PROGRESS' | 'FINALIZED';
783
+ submitted?: boolean;
784
+ successfulCards?: number;
785
+ total_voiceSuccess?: number;
786
+ total_voice_attempts?: number;
787
+ total_words_spoken?: number;
788
+ history?: PageScore[];
789
+ attempts?: number;
790
+ assignmentId?: string;
791
+ setId?: string;
792
+ score_is_overridden?: boolean;
793
+ reviewed?: boolean;
794
+ triage?: {
795
+ version?: string;
796
+ improvements?: string[];
797
+ reasons?: string[];
798
+ updatedAt?: CustomTimestamp;
799
+ confidence?: number;
800
+ category?: 'excellent' | 'doing_ok' | 'needs_attention' | 'unknown';
801
+ by?: string;
802
+ summary?: string;
803
+ strengths?: string[];
804
+ };
805
+ }
806
+ interface ScoreWithId extends Score {
807
+ id: string;
808
+ }
809
+ interface PageScore {
810
+ voiceSuccess?: number;
811
+ voiceAttempts?: number;
812
+ voiceFail?: number;
813
+ completed?: boolean;
814
+ attempts?: number;
815
+ correct?: number;
816
+ success?: boolean;
817
+ aiSuccess?: boolean;
818
+ grading_method?: 'simple' | 'rubric' | 'manual' | 'standards_based' | null;
819
+ grammar_insights?: {
820
+ type?: string;
821
+ justification?: string;
822
+ error?: boolean;
823
+ correction?: string;
824
+ }[];
825
+ promptSuccess?: boolean;
826
+ score?: number;
827
+ simple_grading?: {
828
+ justification?: string;
829
+ success?: boolean;
830
+ };
831
+ suggested_response?: string;
832
+ summary?: string;
833
+ transcript?: string | null;
834
+ errors?: any;
835
+ improvedResponse?: string;
836
+ audio?: string | null;
837
+ actfl?: {
838
+ justification: string;
839
+ level: string;
840
+ key_indicators?: string[];
841
+ };
842
+ wida?: {
843
+ justification: string;
844
+ level: string;
845
+ key_indicators?: string[];
846
+ };
847
+ earned_points?: number;
848
+ fileName?: string | null;
849
+ max_points?: number;
850
+ passing_score?: number;
851
+ rubric?: {
852
+ description: string;
853
+ justification: string;
854
+ maxPoints: number;
855
+ score: number;
856
+ score_title: string;
857
+ title: string;
858
+ }[] | null;
859
+ scoring_type?: string;
860
+ history?: PageScore[];
861
+ media_area_opened?: boolean;
862
+ noFeedbackAvailable?: boolean;
863
+ proficiency_level?: {
864
+ standardId: string;
865
+ level: string;
866
+ justification: string;
867
+ key_indicators?: string[];
868
+ };
869
+ status?: string | null;
870
+ transcriptError?: boolean;
871
+ feedbackError?: boolean;
872
+ totalTrys?: {
873
+ markedCorrect?: boolean;
874
+ selectedOption?: string | string[];
875
+ attemptedAt?: CustomTimestamp;
876
+ messageAttemptId?: string;
877
+ }[];
878
+ tryAgain?: boolean;
879
+ updatedAt?: CustomTimestamp;
880
+ messageAttemptId?: string;
881
+ unmetCriteria?: {
882
+ criterion: string;
883
+ suggestion: string;
884
+ explanation: string;
885
+ }[];
886
+ meetsCriteria?: boolean;
887
+ actionableSteps?: string[];
888
+ rubric_results?: {
889
+ title: string;
890
+ score: number;
891
+ score_title: string;
892
+ justification: string;
893
+ maxPoints: number;
894
+ description: string;
895
+ }[];
896
+ target_proficiency_level?: string;
897
+ hint?: string[];
898
+ reviewed?: boolean;
899
+ error?: ('feedback_error' | 'transcript_error' | 'summary_error' | 'audio_upload_error' | 'unknown' | null)[];
900
+ stagedResponse?: {
901
+ audio?: string | null;
902
+ fileName?: string | null;
903
+ transcript?: string | null;
904
+ } | null;
905
+ transcriptModel?: 'gemini' | 'assemblyai' | 'whisper';
906
+ createdAt?: CustomTimestamp;
907
+ completedAt?: CustomTimestamp;
908
+ startedAt?: CustomTimestamp;
909
+ chatMessages?: {
910
+ sender: 'student' | 'teacher' | 'ai';
911
+ content: string;
912
+ timestamp: CustomTimestamp;
913
+ attemptId: string;
914
+ messageId: string;
915
+ audioUrl: string;
916
+ }[] | null;
917
+ }
918
+
919
+ declare enum AssignmentAnalyticsType {
920
+ Macro = "macro",
921
+ Gradebook = "gradebook",
922
+ Cards = "cards",
923
+ Student = "student",
924
+ StudentSummary = "student_summary",
925
+ All = "all"
926
+ }
927
+
928
+ declare const createAssignmentRepo: () => {
929
+ getAssignment: (params: {
930
+ assignmentId: string;
931
+ currentUserId: string;
932
+ analyticType?: AssignmentAnalyticsType;
933
+ studentId?: string;
934
+ }) => Promise<AssignmentWithId | {
935
+ scores: any;
936
+ id: string;
937
+ isAvailable: boolean;
938
+ name: string;
939
+ description: string;
940
+ scheduledTime?: string | null;
941
+ dueTime?: {
942
+ hours: number;
943
+ minutes: number;
944
+ nanos: number;
945
+ };
946
+ speakableio: boolean;
947
+ owners: string[];
948
+ image: {
949
+ path: string | null;
950
+ url: string;
951
+ };
952
+ dueDate: {
953
+ day: number;
954
+ month: number;
955
+ year: number;
956
+ };
957
+ teacherName: string;
958
+ courseWorkId: string | null;
959
+ dueDateTimestamp: CustomTimestamp;
960
+ scheduledTimeTimestamp: number;
961
+ active: boolean;
962
+ voice: string | null;
963
+ setId: string;
964
+ dateMade: {
965
+ seconds: number;
966
+ nanoseconds: number;
967
+ };
968
+ maxPoints: number;
969
+ courseId: string;
970
+ isAssessment: boolean;
971
+ ltiDeeplink?: string;
972
+ content?: string[];
973
+ weights?: Record<string, number>;
974
+ language?: string;
975
+ types?: { [key in ActivityPageType]?: number; };
976
+ aiEnabled?: boolean;
977
+ chat_experience?: boolean;
978
+ showScores?: boolean;
979
+ } | null>;
980
+ attachScoresAssignment: (args_0: {
981
+ assignments: AssignmentWithId[];
982
+ analyticType: AssignmentAnalyticsType;
983
+ studentId?: string;
984
+ currentUserId: string;
985
+ }) => Promise<{
986
+ scores: any;
987
+ id: string;
988
+ isAvailable: boolean;
989
+ name: string;
990
+ description: string;
991
+ scheduledTime?: string | null;
992
+ dueTime?: {
993
+ hours: number;
994
+ minutes: number;
995
+ nanos: number;
996
+ };
997
+ speakableio: boolean;
998
+ owners: string[];
999
+ image: {
1000
+ path: string | null;
1001
+ url: string;
1002
+ };
1003
+ dueDate: {
1004
+ day: number;
1005
+ month: number;
1006
+ year: number;
1007
+ };
1008
+ teacherName: string;
1009
+ courseWorkId: string | null;
1010
+ dueDateTimestamp: CustomTimestamp;
1011
+ scheduledTimeTimestamp: number;
1012
+ active: boolean;
1013
+ voice: string | null;
1014
+ setId: string;
1015
+ dateMade: {
1016
+ seconds: number;
1017
+ nanoseconds: number;
1018
+ };
1019
+ maxPoints: number;
1020
+ courseId: string;
1021
+ isAssessment: boolean;
1022
+ ltiDeeplink?: string;
1023
+ content?: string[];
1024
+ weights?: Record<string, number>;
1025
+ language?: string;
1026
+ types?: { [key in ActivityPageType]?: number; };
1027
+ aiEnabled?: boolean;
1028
+ chat_experience?: boolean;
1029
+ showScores?: boolean;
1030
+ }[]>;
1031
+ getAssignmentScores: (args_0: {
1032
+ assignmentId: string;
1033
+ currentUserId: string;
1034
+ analyticType?: AssignmentAnalyticsType;
1035
+ studentId?: string;
1036
+ }) => Promise<{
1037
+ scores: unknown;
1038
+ id: string;
1039
+ } | undefined>;
1040
+ getAllAssignments: () => Promise<(AssignmentWithId & {
1041
+ id: string;
1042
+ })[]>;
1043
+ };
1044
+
1045
+ declare const assignmentQueryKeys: {
1046
+ all: readonly ["assignments"];
1047
+ byId: (id: string) => readonly ["assignments", string];
1048
+ list: () => readonly ["assignments", "list"];
1049
+ };
1050
+ declare function useAssignment({ assignmentId, enabled, analyticType, userId, }: {
1051
+ assignmentId: string;
1052
+ enabled?: boolean;
1053
+ analyticType?: AssignmentAnalyticsType;
1054
+ userId: string;
1055
+ }): _tanstack_react_query.UseQueryResult<AssignmentWithId | {
1056
+ scores: any;
1057
+ id: string;
1058
+ isAvailable: boolean;
1059
+ name: string;
1060
+ description: string;
1061
+ scheduledTime?: string | null;
1062
+ dueTime?: {
1063
+ hours: number;
1064
+ minutes: number;
1065
+ nanos: number;
1066
+ };
1067
+ speakableio: boolean;
1068
+ owners: string[];
1069
+ image: {
1070
+ path: string | null;
1071
+ url: string;
1072
+ };
1073
+ dueDate: {
1074
+ day: number;
1075
+ month: number;
1076
+ year: number;
1077
+ };
1078
+ teacherName: string;
1079
+ courseWorkId: string | null;
1080
+ dueDateTimestamp: CustomTimestamp;
1081
+ scheduledTimeTimestamp: number;
1082
+ active: boolean;
1083
+ voice: string | null;
1084
+ setId: string;
1085
+ dateMade: {
1086
+ seconds: number;
1087
+ nanoseconds: number;
1088
+ };
1089
+ maxPoints: number;
1090
+ courseId: string;
1091
+ isAssessment: boolean;
1092
+ ltiDeeplink?: string;
1093
+ content?: string[];
1094
+ weights?: Record<string, number>;
1095
+ language?: string;
1096
+ types?: { [key in ActivityPageType]?: number; };
1097
+ aiEnabled?: boolean;
1098
+ chat_experience?: boolean;
1099
+ showScores?: boolean;
1100
+ } | null, Error>;
1101
+
1102
+ declare const scoreQueryKeys: {
1103
+ all: readonly ["scores"];
1104
+ byId: (id: string) => readonly ["scores", string];
1105
+ list: () => readonly ["scores", "list"];
1106
+ };
1107
+ declare function useScore({ isAssignment, activityId, userId, courseId, enabled, googleClassroomUserId, }: {
1108
+ userId: string;
1109
+ isAssignment: boolean;
1110
+ activityId: string;
1111
+ courseId?: string;
1112
+ enabled?: boolean;
1113
+ googleClassroomUserId?: string;
1114
+ }): _tanstack_react_query.UseQueryResult<ScoreWithId, Error>;
1115
+ declare function useUpdateScore(): {
1116
+ mutationUpdateScore: _tanstack_react_query.UseMutationResult<Promise<void>, Error, {
1117
+ userId: string;
1118
+ data: Partial<Score>;
1119
+ isAssignment: boolean;
1120
+ activityId: string;
1121
+ }, {
1122
+ previousData: Partial<Score> | undefined;
1123
+ }>;
1124
+ };
1125
+ declare function useUpdateCardScore({ isAssignment, activityId, userId, cardIds, weights, }: {
1126
+ isAssignment: boolean;
1127
+ userId: string;
1128
+ activityId: string;
1129
+ cardIds: string[];
1130
+ weights: Record<string, number>;
1131
+ }): {
1132
+ mutationUpdateCardScore: _tanstack_react_query.UseMutationResult<{
1133
+ cardId: string;
1134
+ scoresUpdated: Score;
1135
+ }, Error, {
1136
+ cardId: string;
1137
+ cardScore: PageScore;
1138
+ }, {
1139
+ previousData: Score | undefined;
1140
+ }>;
1141
+ };
1142
+ declare function useClearScore(): {
1143
+ mutationClearScore: _tanstack_react_query.UseMutationResult<{
1144
+ update: Partial<Score>;
1145
+ activityId: string;
1146
+ }, Error, {
1147
+ isAssignment: boolean;
1148
+ cardId: string;
1149
+ cardScores: PageScore;
1150
+ userId: string;
1151
+ activityId: string;
1152
+ }, unknown>;
1153
+ };
1154
+ declare function useClearScoreV2(): {
1155
+ mutationClearScore: _tanstack_react_query.UseMutationResult<{
1156
+ update: Partial<Score>;
1157
+ activityId: string;
1158
+ }, Error, {
1159
+ isAssignment: boolean;
1160
+ cardId: string;
1161
+ cardScores: PageScore;
1162
+ userId: string;
1163
+ activityId: string;
1164
+ }, unknown>;
1165
+ };
1166
+ declare function useSubmitAssignmentScore({ onAssignmentSubmitted, studentName, }: {
1167
+ onAssignmentSubmitted: (assignmentId: string) => void;
1168
+ studentName: string;
1169
+ }): {
1170
+ submitAssignmentScore: _tanstack_react_query.UseMutateAsyncFunction<{
1171
+ success: boolean;
1172
+ message: string;
1173
+ error?: undefined;
1174
+ } | {
1175
+ success: boolean;
1176
+ error: unknown;
1177
+ message?: undefined;
1178
+ }, Error, {
1179
+ assignment: {
1180
+ id: string;
1181
+ name: string;
1182
+ owners: string[];
1183
+ courseId: string;
1184
+ courseWorkId: string;
1185
+ isAssessment: boolean;
1186
+ maxPoints: number;
1187
+ };
1188
+ userId: string;
1189
+ scores: Score;
1190
+ status: Score["status"];
1191
+ }, unknown>;
1192
+ isLoading: boolean;
1193
+ };
1194
+ declare function useSubmitPracticeScore(): {
1195
+ submitPracticeScore: _tanstack_react_query.UseMutateAsyncFunction<{
1196
+ success: boolean;
1197
+ message: string;
1198
+ error?: undefined;
1199
+ } | {
1200
+ success: boolean;
1201
+ error: unknown;
1202
+ message?: undefined;
1203
+ }, Error, {
1204
+ setId: string;
1205
+ userId: string;
1206
+ scores: Score;
1207
+ }, unknown>;
1208
+ isLoading: boolean;
1209
+ };
1210
+
1211
+ interface SetWithId extends Set {
1212
+ id: string;
1213
+ }
1214
+ interface Set {
1215
+ id: string;
1216
+ language: string;
1217
+ ownerName: string;
1218
+ weights: Record<string, number>;
1219
+ repeat?: number;
1220
+ voice?: string;
1221
+ averagePhraseLength?: number;
1222
+ passing_score?: number;
1223
+ organizations?: string[];
1224
+ description: string;
1225
+ image: {
1226
+ url: string;
1227
+ path: null | string;
1228
+ };
1229
+ additionalLanguages?: string[];
1230
+ owners: string[];
1231
+ name: string;
1232
+ content: string[];
1233
+ types: {
1234
+ [key in ActivityPageType]?: number;
1235
+ };
1236
+ defaultLanguage: string;
1237
+ createdAt: FieldValue;
1238
+ public: boolean;
1239
+ defaultRubricId?: string;
1240
+ difficulty?: string;
1241
+ end_screen?: {
1242
+ variant: 0 | 1 | 2;
1243
+ title: string;
1244
+ description: string;
1245
+ };
1246
+ mcAllowRetries?: boolean;
1247
+ welcome_screen?: {
1248
+ variant: 'colored' | 'blank';
1249
+ };
1250
+ poorFunctionalityWarning?: boolean;
1251
+ status?: 'draft' | 'published';
1252
+ subjects?: any[];
1253
+ respondAllowRetries?: boolean;
1254
+ respondAllowTTS?: boolean;
1255
+ feedbackLanguage?: string;
1256
+ respondMaxCharacters?: number;
1257
+ respondMaxTime?: number;
1258
+ respondLimitAttempts?: boolean;
1259
+ respondMaxAttempts?: number;
1260
+ mcLimitAttempts?: boolean;
1261
+ mcMaxAttempts?: number;
1262
+ shortAnswerLimitAttempts?: boolean;
1263
+ shortAnswerMaxAttempts?: number;
1264
+ isTemplate?: boolean;
1265
+ }
1266
+
1267
+ declare const setsQueryKeys: {
1268
+ all: string[];
1269
+ one: (params: {
1270
+ setId: string;
1271
+ }) => string[];
1272
+ };
1273
+ declare const useSet: ({ setId, enabled }: {
1274
+ setId: string;
1275
+ enabled?: boolean;
1276
+ }) => _tanstack_react_query.UseQueryResult<SetWithId | null, Error>;
1277
+ declare function getSetFromCache({ setId, queryClient, }: {
1278
+ setId: string | undefined;
1279
+ queryClient: QueryClient;
1280
+ }): SetWithId | null | undefined;
1281
+ declare function updateSetInCache({ set, queryClient, }: {
1282
+ set: SetWithId;
1283
+ queryClient: QueryClient;
1284
+ }): void;
1285
+
1286
+ declare const SETS_COLLECTION = "sets";
1287
+ type RefsSetsFirestore = `${typeof SETS_COLLECTION}/${string}`;
1288
+ declare const refsSetsFirestore: {
1289
+ allSets: string;
1290
+ set: (id: string) => `sets/${string}`;
1291
+ };
1292
+
1293
+ declare const createSetRepo: () => {
1294
+ getSet: (args_0: {
1295
+ setId: string;
1296
+ }) => Promise<SetWithId | null>;
1297
+ };
1298
+
1299
+ declare const SPEAKABLE_NOTIFICATIONS: {
1300
+ readonly NEW_ASSIGNMENT: "new_assignment";
1301
+ readonly ASSESSMENT_SUBMITTED: "assessment_submitted";
1302
+ readonly ASSESSMENT_SCORED: "assessment_scored";
1303
+ readonly NEW_COMMENT: "NEW_COMMENT";
1304
+ };
1305
+ type SpeakableNotificationType = (typeof SPEAKABLE_NOTIFICATIONS)[keyof typeof SPEAKABLE_NOTIFICATIONS];
1306
+ declare const SpeakableNotificationTypes: {
1307
+ NEW_ASSIGNMENT: string;
1308
+ FEEDBACK_FROM_TEACHER: string;
1309
+ MESSAGE_FROM_STUDENT: string;
1310
+ PHRASE_MARKED_CORRECT: string;
1311
+ STUDENT_PROGRESS: string;
1312
+ PLAYLIST_FOLLOWERS: string;
1313
+ PLAYLIST_PLAYS: string;
1314
+ ASSESSMENT_SUBMITTED: string;
1315
+ ASSESSMENT_SCORED: string;
1316
+ NEW_COMMENT: string;
1317
+ };
1318
+
1319
+ declare const useCreateNotification: () => {
1320
+ createNotification: (type: SpeakableNotificationType, data: any) => Promise<any>;
1321
+ };
1322
+
1323
+ type FsClient = ReturnType<typeof createFsClientBase>;
1324
+ type FsClientParams = Omit<Parameters<typeof createFsClientBase>[0], 'helpers'>;
1325
+ declare function createFsClientBase({ db, helpers, httpsCallable, logEvent, }: {
1326
+ db: FirebaseInstance;
1327
+ helpers: FirestoreHelpers;
1328
+ httpsCallable: (name: string) => CallableFunction;
1329
+ logEvent: (name: string, data: any) => void;
1330
+ }): {
1331
+ assignmentRepo: {
1332
+ getAssignment: (params: {
1333
+ assignmentId: string;
1334
+ currentUserId: string;
1335
+ analyticType?: AssignmentAnalyticsType;
1336
+ studentId?: string;
1337
+ }) => Promise<AssignmentWithId | {
1338
+ scores: any;
1339
+ id: string;
1340
+ isAvailable: boolean;
1341
+ name: string;
1342
+ description: string;
1343
+ scheduledTime?: string | null;
1344
+ dueTime?: {
1345
+ hours: number;
1346
+ minutes: number;
1347
+ nanos: number;
1348
+ };
1349
+ speakableio: boolean;
1350
+ owners: string[];
1351
+ image: {
1352
+ path: string | null;
1353
+ url: string;
1354
+ };
1355
+ dueDate: {
1356
+ day: number;
1357
+ month: number;
1358
+ year: number;
1359
+ };
1360
+ teacherName: string;
1361
+ courseWorkId: string | null;
1362
+ dueDateTimestamp: CustomTimestamp;
1363
+ scheduledTimeTimestamp: number;
1364
+ active: boolean;
1365
+ voice: string | null;
1366
+ setId: string;
1367
+ dateMade: {
1368
+ seconds: number;
1369
+ nanoseconds: number;
1370
+ };
1371
+ maxPoints: number;
1372
+ courseId: string;
1373
+ isAssessment: boolean;
1374
+ ltiDeeplink?: string;
1375
+ content?: string[];
1376
+ weights?: Record<string, number>;
1377
+ language?: string;
1378
+ types?: { [key in ActivityPageType]?: number; };
1379
+ aiEnabled?: boolean;
1380
+ chat_experience?: boolean;
1381
+ showScores?: boolean;
1382
+ } | null>;
1383
+ attachScoresAssignment: (args_0: {
1384
+ assignments: AssignmentWithId[];
1385
+ analyticType: AssignmentAnalyticsType;
1386
+ studentId?: string;
1387
+ currentUserId: string;
1388
+ }) => Promise<{
1389
+ scores: any;
1390
+ id: string;
1391
+ isAvailable: boolean;
1392
+ name: string;
1393
+ description: string;
1394
+ scheduledTime?: string | null;
1395
+ dueTime?: {
1396
+ hours: number;
1397
+ minutes: number;
1398
+ nanos: number;
1399
+ };
1400
+ speakableio: boolean;
1401
+ owners: string[];
1402
+ image: {
1403
+ path: string | null;
1404
+ url: string;
1405
+ };
1406
+ dueDate: {
1407
+ day: number;
1408
+ month: number;
1409
+ year: number;
1410
+ };
1411
+ teacherName: string;
1412
+ courseWorkId: string | null;
1413
+ dueDateTimestamp: CustomTimestamp;
1414
+ scheduledTimeTimestamp: number;
1415
+ active: boolean;
1416
+ voice: string | null;
1417
+ setId: string;
1418
+ dateMade: {
1419
+ seconds: number;
1420
+ nanoseconds: number;
1421
+ };
1422
+ maxPoints: number;
1423
+ courseId: string;
1424
+ isAssessment: boolean;
1425
+ ltiDeeplink?: string;
1426
+ content?: string[];
1427
+ weights?: Record<string, number>;
1428
+ language?: string;
1429
+ types?: { [key in ActivityPageType]?: number; };
1430
+ aiEnabled?: boolean;
1431
+ chat_experience?: boolean;
1432
+ showScores?: boolean;
1433
+ }[]>;
1434
+ getAssignmentScores: (args_0: {
1435
+ assignmentId: string;
1436
+ currentUserId: string;
1437
+ analyticType?: AssignmentAnalyticsType;
1438
+ studentId?: string;
1439
+ }) => Promise<{
1440
+ scores: unknown;
1441
+ id: string;
1442
+ } | undefined>;
1443
+ getAllAssignments: () => Promise<(AssignmentWithId & {
1444
+ id: string;
1445
+ })[]>;
1446
+ };
1447
+ cardRepo: {
1448
+ createCard: (args_0: {
1449
+ data: Partial<PageActivity>;
1450
+ }) => Promise<{
1451
+ id: string;
1452
+ } & Partial<PageActivity>>;
1453
+ createCards: (args_0: {
1454
+ cards: PageActivity[];
1455
+ }) => Promise<{
1456
+ id: string;
1457
+ owners: string[];
1458
+ checked?: boolean;
1459
+ completed?: boolean;
1460
+ media_area_id?: string | null;
1461
+ media_area_layout?: "left" | "right" | null;
1462
+ media?: MediaPageActivity | null;
1463
+ score?: number;
1464
+ verificationStatus?: VerificationCardStatus;
1465
+ native_text?: string;
1466
+ repeat?: number;
1467
+ language?: string | null;
1468
+ image?: {
1469
+ path?: string | null;
1470
+ url?: string;
1471
+ };
1472
+ audio?: {
1473
+ path?: string | null;
1474
+ url?: string;
1475
+ } | null;
1476
+ notes?: string;
1477
+ difficulty?: string;
1478
+ default_language?: string;
1479
+ target_text?: string;
1480
+ type: ActivityPageType;
1481
+ grading_criteria?: string;
1482
+ grading_criteria_title?: string;
1483
+ scoring_type?: string;
1484
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
1485
+ feedback_types?: FeedbackTypesCard[];
1486
+ rubricId?: string;
1487
+ prompt?: string;
1488
+ title?: string;
1489
+ passing_score?: number;
1490
+ maxCharacters?: number;
1491
+ answer?: string[];
1492
+ choices?: {
1493
+ value: string;
1494
+ option: string;
1495
+ }[];
1496
+ MCQType?: string;
1497
+ multipleAttemptsAllowed?: boolean;
1498
+ allowRetries?: boolean;
1499
+ question?: string;
1500
+ respondTime?: number;
1501
+ hidePrompt?: boolean;
1502
+ videoUrl?: string;
1503
+ link?: string;
1504
+ text?: string;
1505
+ isListenAloud?: boolean;
1506
+ embedCode?: string;
1507
+ attempt?: number;
1508
+ correct?: number;
1509
+ autoGrade?: boolean;
1510
+ points?: number;
1511
+ shuffle?: boolean;
1512
+ translation?: string;
1513
+ includeAIContext?: boolean;
1514
+ media_area_context_ref?: string | null;
1515
+ standardId?: string;
1516
+ target_proficiency_level?: string;
1517
+ allowTTS?: boolean;
1518
+ feedback_language?: string | null;
1519
+ correct_answer?: string | null;
1520
+ limit_attempts?: boolean;
1521
+ max_attempts?: number;
1522
+ rich_text?: string;
1523
+ feedbackOff?: boolean;
1524
+ correct_answer_exact_match?: boolean;
1525
+ ai_context_block_ids?: string[];
1526
+ resolvedContext?: string;
1527
+ goal?: string;
1528
+ mode?: ConversationPageMode;
1529
+ personality?: string;
1530
+ voice?: string;
1531
+ topic?: string;
1532
+ vocab?: string[];
1533
+ questions?: string[];
1534
+ showHints?: boolean;
1535
+ }[]>;
1536
+ getCard: (params: {
1537
+ cardId: string;
1538
+ }) => Promise<{
1539
+ type: ActivityPageType;
1540
+ id: string;
1541
+ owners: string[];
1542
+ checked?: boolean;
1543
+ completed?: boolean;
1544
+ media_area_id?: string | null;
1545
+ media_area_layout?: "left" | "right" | null;
1546
+ media?: MediaPageActivity | null;
1547
+ score?: number;
1548
+ verificationStatus?: VerificationCardStatus;
1549
+ native_text?: string;
1550
+ repeat?: number;
1551
+ language?: string | null;
1552
+ image?: {
1553
+ path?: string | null;
1554
+ url?: string;
1555
+ };
1556
+ audio?: {
1557
+ path?: string | null;
1558
+ url?: string;
1559
+ } | null;
1560
+ notes?: string;
1561
+ difficulty?: string;
1562
+ default_language?: string;
1563
+ target_text?: string;
1564
+ grading_criteria?: string;
1565
+ grading_criteria_title?: string;
1566
+ scoring_type?: string;
1567
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
1568
+ feedback_types?: FeedbackTypesCard[];
1569
+ rubricId?: string;
1570
+ prompt?: string;
1571
+ title?: string;
1572
+ passing_score?: number;
1573
+ maxCharacters?: number;
1574
+ answer?: string[];
1575
+ choices?: {
1576
+ value: string;
1577
+ option: string;
1578
+ }[];
1579
+ MCQType?: string;
1580
+ multipleAttemptsAllowed?: boolean;
1581
+ allowRetries?: boolean;
1582
+ question?: string;
1583
+ respondTime?: number;
1584
+ hidePrompt?: boolean;
1585
+ videoUrl?: string;
1586
+ link?: string;
1587
+ text?: string;
1588
+ isListenAloud?: boolean;
1589
+ embedCode?: string;
1590
+ attempt?: number;
1591
+ correct?: number;
1592
+ autoGrade?: boolean;
1593
+ points?: number;
1594
+ shuffle?: boolean;
1595
+ translation?: string;
1596
+ includeAIContext?: boolean;
1597
+ media_area_context_ref?: string | null;
1598
+ standardId?: string;
1599
+ target_proficiency_level?: string;
1600
+ allowTTS?: boolean;
1601
+ feedback_language?: string | null;
1602
+ correct_answer?: string | null;
1603
+ limit_attempts?: boolean;
1604
+ max_attempts?: number;
1605
+ rich_text?: string;
1606
+ feedbackOff?: boolean;
1607
+ correct_answer_exact_match?: boolean;
1608
+ ai_context_block_ids?: string[];
1609
+ resolvedContext?: string;
1610
+ goal?: string;
1611
+ mode?: ConversationPageMode;
1612
+ personality?: string;
1613
+ voice?: string;
1614
+ topic?: string;
1615
+ vocab?: string[];
1616
+ questions?: string[];
1617
+ showHints?: boolean;
1618
+ } | null>;
1619
+ };
1620
+ };
1621
+
1622
+ interface UserProfile {
1623
+ googleClassroomUserId: string;
1624
+ image: {
1625
+ url: string;
1626
+ path: string;
1627
+ };
1628
+ displayName: string;
1629
+ isTeacher?: boolean;
1630
+ isStudent?: boolean;
1631
+ roles?: string[];
1632
+ }
1633
+ interface UserAuth {
1634
+ uid: string;
1635
+ email: string;
1636
+ displayName: string | null;
1637
+ }
1638
+ interface Lti {
1639
+ data: {
1640
+ services: {
1641
+ serviceKey: string;
1642
+ };
1643
+ };
1644
+ }
1645
+ interface User {
1646
+ profile: UserProfile;
1647
+ auth: UserAuth;
1648
+ lti: Lti;
1649
+ roles: string[];
1650
+ }
1651
+
1652
+ declare const SpeakablePlanTypes: {
1653
+ readonly basic: "basic";
1654
+ readonly teacher_pro: "teacher_pro";
1655
+ readonly school_starter: "school_starter";
1656
+ readonly organization: "organization";
1657
+ readonly starter: "starter";
1658
+ readonly growth: "growth";
1659
+ readonly professional: "professional";
1660
+ };
1661
+
1662
+ interface Permissions {
1663
+ loaded: boolean;
1664
+ loading: boolean;
1665
+ permissions: string[];
1666
+ plan: keyof typeof SpeakablePlanTypes;
1667
+ subscriptionId: string;
1668
+ isInstitutionPlan: boolean;
1669
+ type: string;
1670
+ contact: string;
1671
+ hasStudentPortfolios?: boolean;
1672
+ refreshDate: string;
1673
+ isStripePlan: boolean;
1674
+ freeOrgTrialExpired?: boolean;
1675
+ }
1676
+
1677
+ interface FsContext {
1678
+ speakableApi: Awaited<FsClient>;
1679
+ queryClient: QueryClient;
1680
+ user: User;
1681
+ permissions: Permissions;
1682
+ }
1683
+ declare const FsCtx: React.Context<FsContext | null>;
1684
+ declare function SpeakableProvider({ user, children, queryClient, permissions, fsClient, }: {
1685
+ children: React.ReactNode;
1686
+ fsClient: FsClient;
1687
+ permissions: Permissions;
1688
+ queryClient: QueryClient;
1689
+ user: User;
1690
+ }): react_jsx_runtime.JSX.Element | null;
1691
+ declare function useSpeakableApi(): FsContext;
1692
+
1693
+ declare function getTranscript(model: 'gemini' | 'assemblyai' | 'whisper', args: {
1694
+ language: string;
1695
+ audioUrl: string;
1696
+ prompt?: string;
1697
+ }, cleanHallucinations?: boolean): Promise<string | null>;
1698
+ declare function getTranscriptCycle(args: {
1699
+ audioUrl: string;
1700
+ language: string;
1701
+ prompt?: string;
1702
+ }): Promise<{
1703
+ transcript: string;
1704
+ success: boolean;
1705
+ }>;
1706
+
1707
+ declare const getRespondCardTool: ({ language, standard, }: {
1708
+ language: string;
1709
+ standard: string;
1710
+ }) => {
1711
+ tool_choice: {
1712
+ type: string;
1713
+ function: {
1714
+ name: string;
1715
+ };
1716
+ };
1717
+ tools: {
1718
+ type: string;
1719
+ function: {
1720
+ name: string;
1721
+ description: string;
1722
+ parameters: {
1723
+ type: string;
1724
+ required: string[];
1725
+ properties: {
1726
+ success: {
1727
+ type: string;
1728
+ description: string;
1729
+ };
1730
+ errors: {
1731
+ type: string;
1732
+ items: {
1733
+ type: string;
1734
+ required: string[];
1735
+ properties: {
1736
+ error: {
1737
+ type: string;
1738
+ description: string;
1739
+ };
1740
+ correction: {
1741
+ type: string;
1742
+ description: string;
1743
+ };
1744
+ justification: {
1745
+ type: string;
1746
+ description: string;
1747
+ };
1748
+ grammar_error_type: {
1749
+ type: string;
1750
+ enum: string[];
1751
+ description: string;
1752
+ };
1753
+ };
1754
+ };
1755
+ description: string;
1756
+ };
1757
+ compliments: {
1758
+ type: string;
1759
+ items: {
1760
+ type: string;
1761
+ };
1762
+ description: string;
1763
+ };
1764
+ improvedResponse: {
1765
+ type: string;
1766
+ description: string;
1767
+ };
1768
+ score: {
1769
+ type: string;
1770
+ description: string;
1771
+ };
1772
+ score_justification: {
1773
+ type: string;
1774
+ description: string;
1775
+ };
1776
+ };
1777
+ };
1778
+ };
1779
+ }[];
1780
+ };
1781
+
1782
+ declare function debounce<T extends (...args: any[]) => Promise<any>>(func: T, waitFor: number): (...args: Parameters<T>) => Promise<ReturnType<T>>;
1783
+
1784
+ declare const purify: (word: string) => string;
1785
+ declare const cleanString: (words: string) => string | string[];
1786
+ declare const getWordHash: (word: string, language: string) => string;
1787
+ declare function getPhraseLength(phrase: string, input?: string): number;
1788
+
1789
+ declare function useActivity({ id, isAssignment, onAssignmentSubmitted, ltiData, }: {
1790
+ id: string;
1791
+ isAssignment: boolean;
1792
+ onAssignmentSubmitted: (assignmentId: string) => void;
1793
+ ltiData?: {
1794
+ lineItemId?: string;
1795
+ lti_id?: string;
1796
+ serviceKey?: string;
1797
+ };
1798
+ }): {
1799
+ set: {
1800
+ data: SetWithId | null | undefined;
1801
+ query: _tanstack_react_query.UseQueryResult<SetWithId | null, Error>;
1802
+ };
1803
+ cards: {
1804
+ data: Record<string, PageActivityWithId> | null;
1805
+ query: _tanstack_react_query.UseQueryResult<{
1806
+ type: ActivityPageType;
1807
+ id: string;
1808
+ owners: string[];
1809
+ checked?: boolean;
1810
+ completed?: boolean;
1811
+ media_area_id?: string | null;
1812
+ media_area_layout?: "left" | "right" | null;
1813
+ media?: MediaPageActivity | null;
1814
+ score?: number;
1815
+ verificationStatus?: VerificationCardStatus;
1816
+ native_text?: string;
1817
+ repeat?: number;
1818
+ language?: string | null;
1819
+ image?: {
1820
+ path?: string | null;
1821
+ url?: string;
1822
+ };
1823
+ audio?: {
1824
+ path?: string | null;
1825
+ url?: string;
1826
+ } | null;
1827
+ notes?: string;
1828
+ difficulty?: string;
1829
+ default_language?: string;
1830
+ target_text?: string;
1831
+ grading_criteria?: string;
1832
+ grading_criteria_title?: string;
1833
+ scoring_type?: string;
1834
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
1835
+ feedback_types?: FeedbackTypesCard[];
1836
+ rubricId?: string;
1837
+ prompt?: string;
1838
+ title?: string;
1839
+ passing_score?: number;
1840
+ maxCharacters?: number;
1841
+ answer?: string[];
1842
+ choices?: {
1843
+ value: string;
1844
+ option: string;
1845
+ }[];
1846
+ MCQType?: string;
1847
+ multipleAttemptsAllowed?: boolean;
1848
+ allowRetries?: boolean;
1849
+ question?: string;
1850
+ respondTime?: number;
1851
+ hidePrompt?: boolean;
1852
+ videoUrl?: string;
1853
+ link?: string;
1854
+ text?: string;
1855
+ isListenAloud?: boolean;
1856
+ embedCode?: string;
1857
+ attempt?: number;
1858
+ correct?: number;
1859
+ autoGrade?: boolean;
1860
+ points?: number;
1861
+ shuffle?: boolean;
1862
+ translation?: string;
1863
+ includeAIContext?: boolean;
1864
+ media_area_context_ref?: string | null;
1865
+ standardId?: string;
1866
+ target_proficiency_level?: string;
1867
+ allowTTS?: boolean;
1868
+ feedback_language?: string | null;
1869
+ correct_answer?: string | null;
1870
+ limit_attempts?: boolean;
1871
+ max_attempts?: number;
1872
+ rich_text?: string;
1873
+ feedbackOff?: boolean;
1874
+ correct_answer_exact_match?: boolean;
1875
+ ai_context_block_ids?: string[];
1876
+ resolvedContext?: string;
1877
+ goal?: string;
1878
+ mode?: ConversationPageMode;
1879
+ personality?: string;
1880
+ voice?: string;
1881
+ topic?: string;
1882
+ vocab?: string[];
1883
+ questions?: string[];
1884
+ showHints?: boolean;
1885
+ } | null, Error>[];
1886
+ cardsArray: PageActivityWithId[];
1887
+ };
1888
+ assignment: {
1889
+ data: AssignmentWithId | {
1890
+ scores: any;
1891
+ id: string;
1892
+ isAvailable: boolean;
1893
+ name: string;
1894
+ description: string;
1895
+ scheduledTime?: string | null;
1896
+ dueTime?: {
1897
+ hours: number;
1898
+ minutes: number;
1899
+ nanos: number;
1900
+ };
1901
+ speakableio: boolean;
1902
+ owners: string[];
1903
+ image: {
1904
+ path: string | null;
1905
+ url: string;
1906
+ };
1907
+ dueDate: {
1908
+ day: number;
1909
+ month: number;
1910
+ year: number;
1911
+ };
1912
+ teacherName: string;
1913
+ courseWorkId: string | null;
1914
+ dueDateTimestamp: CustomTimestamp;
1915
+ scheduledTimeTimestamp: number;
1916
+ active: boolean;
1917
+ voice: string | null;
1918
+ setId: string;
1919
+ dateMade: {
1920
+ seconds: number;
1921
+ nanoseconds: number;
1922
+ };
1923
+ maxPoints: number;
1924
+ courseId: string;
1925
+ isAssessment: boolean;
1926
+ ltiDeeplink?: string;
1927
+ content?: string[];
1928
+ weights?: Record<string, number>;
1929
+ language?: string;
1930
+ types?: { [key in ActivityPageType]?: number; };
1931
+ aiEnabled?: boolean;
1932
+ chat_experience?: boolean;
1933
+ showScores?: boolean;
1934
+ } | null | undefined;
1935
+ query: _tanstack_react_query.UseQueryResult<AssignmentWithId | {
1936
+ scores: any;
1937
+ id: string;
1938
+ isAvailable: boolean;
1939
+ name: string;
1940
+ description: string;
1941
+ scheduledTime?: string | null;
1942
+ dueTime?: {
1943
+ hours: number;
1944
+ minutes: number;
1945
+ nanos: number;
1946
+ };
1947
+ speakableio: boolean;
1948
+ owners: string[];
1949
+ image: {
1950
+ path: string | null;
1951
+ url: string;
1952
+ };
1953
+ dueDate: {
1954
+ day: number;
1955
+ month: number;
1956
+ year: number;
1957
+ };
1958
+ teacherName: string;
1959
+ courseWorkId: string | null;
1960
+ dueDateTimestamp: CustomTimestamp;
1961
+ scheduledTimeTimestamp: number;
1962
+ active: boolean;
1963
+ voice: string | null;
1964
+ setId: string;
1965
+ dateMade: {
1966
+ seconds: number;
1967
+ nanoseconds: number;
1968
+ };
1969
+ maxPoints: number;
1970
+ courseId: string;
1971
+ isAssessment: boolean;
1972
+ ltiDeeplink?: string;
1973
+ content?: string[];
1974
+ weights?: Record<string, number>;
1975
+ language?: string;
1976
+ types?: { [key in ActivityPageType]?: number; };
1977
+ aiEnabled?: boolean;
1978
+ chat_experience?: boolean;
1979
+ showScores?: boolean;
1980
+ } | null, Error>;
1981
+ };
1982
+ scores: {
1983
+ data: ScoreWithId | undefined;
1984
+ query: _tanstack_react_query.UseQueryResult<ScoreWithId, Error>;
1985
+ actions: {
1986
+ update: (data: Partial<Score>) => void;
1987
+ clear: ({ cardId, wasCompleted, }: {
1988
+ cardId: string;
1989
+ wasCompleted?: boolean;
1990
+ }) => void;
1991
+ submit: () => Promise<{
1992
+ success: boolean;
1993
+ message: string;
1994
+ error?: undefined;
1995
+ } | {
1996
+ success: boolean;
1997
+ error: unknown;
1998
+ message?: undefined;
1999
+ }>;
2000
+ updateCard: (cardId: string, cardScore: PageScore) => void;
2001
+ logGradingStandardEntry: ({ cardId, gradingStandard, type, }: {
2002
+ cardId: string;
2003
+ gradingStandard: {
2004
+ level: string;
2005
+ justification: string;
2006
+ };
2007
+ type: "actfl" | "wida" | "custom";
2008
+ }) => void;
2009
+ };
2010
+ };
2011
+ };
2012
+
2013
+ interface CreditContract {
2014
+ allocationSource: string;
2015
+ createdAt: string;
2016
+ creditsAllocatedThisPeriod: number;
2017
+ effectivePlanId: string;
2018
+ email: string;
2019
+ isUnlimited: boolean;
2020
+ lastUpdatedAt: string;
2021
+ ownerType: string;
2022
+ periodStart: string;
2023
+ periodEnd: string;
2024
+ planTermEndTimestamp: string | null;
2025
+ sourceDetails: Record<string, unknown>;
2026
+ creditsAvailable?: number;
2027
+ topOffCreditsAvailable?: number;
2028
+ }
2029
+ declare const creditQueryKeys: {
2030
+ userCredits: (uid: string) => readonly ["userCredits", string];
2031
+ };
2032
+ declare const useUserCredits: () => {
2033
+ data: {
2034
+ id: string;
2035
+ userId: string;
2036
+ email: string;
2037
+ effectivePlanId: string;
2038
+ status: string;
2039
+ isUnlimited: boolean;
2040
+ creditsAvailable: number;
2041
+ creditsAllocatedThisPeriod: number;
2042
+ topOffCreditsAvailable: number;
2043
+ topOffCreditsTotal: number;
2044
+ allocationSource: string;
2045
+ sourceDetails: {};
2046
+ periodStart: null;
2047
+ periodEnd: null;
2048
+ planTermEndTimestamp: null;
2049
+ ownerType: string;
2050
+ createdAt: string;
2051
+ lastUpdatedAt: string;
2052
+ } | {
2053
+ totalCreditsAvailable: number;
2054
+ allocationSource: string;
2055
+ createdAt: string;
2056
+ creditsAllocatedThisPeriod: number;
2057
+ effectivePlanId: string;
2058
+ email: string;
2059
+ isUnlimited: boolean;
2060
+ lastUpdatedAt: string;
2061
+ ownerType: string;
2062
+ periodStart: string;
2063
+ periodEnd: string;
2064
+ planTermEndTimestamp: string | null;
2065
+ sourceDetails: Record<string, unknown>;
2066
+ creditsAvailable?: number;
2067
+ topOffCreditsAvailable?: number;
2068
+ id: string;
2069
+ userId?: undefined;
2070
+ status?: undefined;
2071
+ topOffCreditsTotal?: undefined;
2072
+ };
2073
+ error: Error;
2074
+ isError: true;
2075
+ isPending: false;
2076
+ isLoading: false;
2077
+ isLoadingError: false;
2078
+ isRefetchError: true;
2079
+ isSuccess: false;
2080
+ isPlaceholderData: false;
2081
+ status: "error";
2082
+ dataUpdatedAt: number;
2083
+ errorUpdatedAt: number;
2084
+ failureCount: number;
2085
+ failureReason: Error | null;
2086
+ errorUpdateCount: number;
2087
+ isFetched: boolean;
2088
+ isFetchedAfterMount: boolean;
2089
+ isFetching: boolean;
2090
+ isInitialLoading: boolean;
2091
+ isPaused: boolean;
2092
+ isRefetching: boolean;
2093
+ isStale: boolean;
2094
+ isEnabled: boolean;
2095
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2096
+ id: string;
2097
+ userId: string;
2098
+ email: string;
2099
+ effectivePlanId: string;
2100
+ status: string;
2101
+ isUnlimited: boolean;
2102
+ creditsAvailable: number;
2103
+ creditsAllocatedThisPeriod: number;
2104
+ topOffCreditsAvailable: number;
2105
+ topOffCreditsTotal: number;
2106
+ allocationSource: string;
2107
+ sourceDetails: {};
2108
+ periodStart: null;
2109
+ periodEnd: null;
2110
+ planTermEndTimestamp: null;
2111
+ ownerType: string;
2112
+ createdAt: string;
2113
+ lastUpdatedAt: string;
2114
+ } | {
2115
+ totalCreditsAvailable: number;
2116
+ allocationSource: string;
2117
+ createdAt: string;
2118
+ creditsAllocatedThisPeriod: number;
2119
+ effectivePlanId: string;
2120
+ email: string;
2121
+ isUnlimited: boolean;
2122
+ lastUpdatedAt: string;
2123
+ ownerType: string;
2124
+ periodStart: string;
2125
+ periodEnd: string;
2126
+ planTermEndTimestamp: string | null;
2127
+ sourceDetails: Record<string, unknown>;
2128
+ creditsAvailable?: number;
2129
+ topOffCreditsAvailable?: number;
2130
+ id: string;
2131
+ userId?: undefined;
2132
+ status?: undefined;
2133
+ topOffCreditsTotal?: undefined;
2134
+ }, Error>>;
2135
+ fetchStatus: _tanstack_react_query.FetchStatus;
2136
+ promise: Promise<{
2137
+ id: string;
2138
+ userId: string;
2139
+ email: string;
2140
+ effectivePlanId: string;
2141
+ status: string;
2142
+ isUnlimited: boolean;
2143
+ creditsAvailable: number;
2144
+ creditsAllocatedThisPeriod: number;
2145
+ topOffCreditsAvailable: number;
2146
+ topOffCreditsTotal: number;
2147
+ allocationSource: string;
2148
+ sourceDetails: {};
2149
+ periodStart: null;
2150
+ periodEnd: null;
2151
+ planTermEndTimestamp: null;
2152
+ ownerType: string;
2153
+ createdAt: string;
2154
+ lastUpdatedAt: string;
2155
+ } | {
2156
+ totalCreditsAvailable: number;
2157
+ allocationSource: string;
2158
+ createdAt: string;
2159
+ creditsAllocatedThisPeriod: number;
2160
+ effectivePlanId: string;
2161
+ email: string;
2162
+ isUnlimited: boolean;
2163
+ lastUpdatedAt: string;
2164
+ ownerType: string;
2165
+ periodStart: string;
2166
+ periodEnd: string;
2167
+ planTermEndTimestamp: string | null;
2168
+ sourceDetails: Record<string, unknown>;
2169
+ creditsAvailable?: number;
2170
+ topOffCreditsAvailable?: number;
2171
+ id: string;
2172
+ userId?: undefined;
2173
+ status?: undefined;
2174
+ topOffCreditsTotal?: undefined;
2175
+ }>;
2176
+ } | {
2177
+ data: {
2178
+ id: string;
2179
+ userId: string;
2180
+ email: string;
2181
+ effectivePlanId: string;
2182
+ status: string;
2183
+ isUnlimited: boolean;
2184
+ creditsAvailable: number;
2185
+ creditsAllocatedThisPeriod: number;
2186
+ topOffCreditsAvailable: number;
2187
+ topOffCreditsTotal: number;
2188
+ allocationSource: string;
2189
+ sourceDetails: {};
2190
+ periodStart: null;
2191
+ periodEnd: null;
2192
+ planTermEndTimestamp: null;
2193
+ ownerType: string;
2194
+ createdAt: string;
2195
+ lastUpdatedAt: string;
2196
+ } | {
2197
+ totalCreditsAvailable: number;
2198
+ allocationSource: string;
2199
+ createdAt: string;
2200
+ creditsAllocatedThisPeriod: number;
2201
+ effectivePlanId: string;
2202
+ email: string;
2203
+ isUnlimited: boolean;
2204
+ lastUpdatedAt: string;
2205
+ ownerType: string;
2206
+ periodStart: string;
2207
+ periodEnd: string;
2208
+ planTermEndTimestamp: string | null;
2209
+ sourceDetails: Record<string, unknown>;
2210
+ creditsAvailable?: number;
2211
+ topOffCreditsAvailable?: number;
2212
+ id: string;
2213
+ userId?: undefined;
2214
+ status?: undefined;
2215
+ topOffCreditsTotal?: undefined;
2216
+ };
2217
+ error: null;
2218
+ isError: false;
2219
+ isPending: false;
2220
+ isLoading: false;
2221
+ isLoadingError: false;
2222
+ isRefetchError: false;
2223
+ isSuccess: true;
2224
+ isPlaceholderData: false;
2225
+ status: "success";
2226
+ dataUpdatedAt: number;
2227
+ errorUpdatedAt: number;
2228
+ failureCount: number;
2229
+ failureReason: Error | null;
2230
+ errorUpdateCount: number;
2231
+ isFetched: boolean;
2232
+ isFetchedAfterMount: boolean;
2233
+ isFetching: boolean;
2234
+ isInitialLoading: boolean;
2235
+ isPaused: boolean;
2236
+ isRefetching: boolean;
2237
+ isStale: boolean;
2238
+ isEnabled: boolean;
2239
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2240
+ id: string;
2241
+ userId: string;
2242
+ email: string;
2243
+ effectivePlanId: string;
2244
+ status: string;
2245
+ isUnlimited: boolean;
2246
+ creditsAvailable: number;
2247
+ creditsAllocatedThisPeriod: number;
2248
+ topOffCreditsAvailable: number;
2249
+ topOffCreditsTotal: number;
2250
+ allocationSource: string;
2251
+ sourceDetails: {};
2252
+ periodStart: null;
2253
+ periodEnd: null;
2254
+ planTermEndTimestamp: null;
2255
+ ownerType: string;
2256
+ createdAt: string;
2257
+ lastUpdatedAt: string;
2258
+ } | {
2259
+ totalCreditsAvailable: number;
2260
+ allocationSource: string;
2261
+ createdAt: string;
2262
+ creditsAllocatedThisPeriod: number;
2263
+ effectivePlanId: string;
2264
+ email: string;
2265
+ isUnlimited: boolean;
2266
+ lastUpdatedAt: string;
2267
+ ownerType: string;
2268
+ periodStart: string;
2269
+ periodEnd: string;
2270
+ planTermEndTimestamp: string | null;
2271
+ sourceDetails: Record<string, unknown>;
2272
+ creditsAvailable?: number;
2273
+ topOffCreditsAvailable?: number;
2274
+ id: string;
2275
+ userId?: undefined;
2276
+ status?: undefined;
2277
+ topOffCreditsTotal?: undefined;
2278
+ }, Error>>;
2279
+ fetchStatus: _tanstack_react_query.FetchStatus;
2280
+ promise: Promise<{
2281
+ id: string;
2282
+ userId: string;
2283
+ email: string;
2284
+ effectivePlanId: string;
2285
+ status: string;
2286
+ isUnlimited: boolean;
2287
+ creditsAvailable: number;
2288
+ creditsAllocatedThisPeriod: number;
2289
+ topOffCreditsAvailable: number;
2290
+ topOffCreditsTotal: number;
2291
+ allocationSource: string;
2292
+ sourceDetails: {};
2293
+ periodStart: null;
2294
+ periodEnd: null;
2295
+ planTermEndTimestamp: null;
2296
+ ownerType: string;
2297
+ createdAt: string;
2298
+ lastUpdatedAt: string;
2299
+ } | {
2300
+ totalCreditsAvailable: number;
2301
+ allocationSource: string;
2302
+ createdAt: string;
2303
+ creditsAllocatedThisPeriod: number;
2304
+ effectivePlanId: string;
2305
+ email: string;
2306
+ isUnlimited: boolean;
2307
+ lastUpdatedAt: string;
2308
+ ownerType: string;
2309
+ periodStart: string;
2310
+ periodEnd: string;
2311
+ planTermEndTimestamp: string | null;
2312
+ sourceDetails: Record<string, unknown>;
2313
+ creditsAvailable?: number;
2314
+ topOffCreditsAvailable?: number;
2315
+ id: string;
2316
+ userId?: undefined;
2317
+ status?: undefined;
2318
+ topOffCreditsTotal?: undefined;
2319
+ }>;
2320
+ } | {
2321
+ data: undefined;
2322
+ error: Error;
2323
+ isError: true;
2324
+ isPending: false;
2325
+ isLoading: false;
2326
+ isLoadingError: true;
2327
+ isRefetchError: false;
2328
+ isSuccess: false;
2329
+ isPlaceholderData: false;
2330
+ status: "error";
2331
+ dataUpdatedAt: number;
2332
+ errorUpdatedAt: number;
2333
+ failureCount: number;
2334
+ failureReason: Error | null;
2335
+ errorUpdateCount: number;
2336
+ isFetched: boolean;
2337
+ isFetchedAfterMount: boolean;
2338
+ isFetching: boolean;
2339
+ isInitialLoading: boolean;
2340
+ isPaused: boolean;
2341
+ isRefetching: boolean;
2342
+ isStale: boolean;
2343
+ isEnabled: boolean;
2344
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2345
+ id: string;
2346
+ userId: string;
2347
+ email: string;
2348
+ effectivePlanId: string;
2349
+ status: string;
2350
+ isUnlimited: boolean;
2351
+ creditsAvailable: number;
2352
+ creditsAllocatedThisPeriod: number;
2353
+ topOffCreditsAvailable: number;
2354
+ topOffCreditsTotal: number;
2355
+ allocationSource: string;
2356
+ sourceDetails: {};
2357
+ periodStart: null;
2358
+ periodEnd: null;
2359
+ planTermEndTimestamp: null;
2360
+ ownerType: string;
2361
+ createdAt: string;
2362
+ lastUpdatedAt: string;
2363
+ } | {
2364
+ totalCreditsAvailable: number;
2365
+ allocationSource: string;
2366
+ createdAt: string;
2367
+ creditsAllocatedThisPeriod: number;
2368
+ effectivePlanId: string;
2369
+ email: string;
2370
+ isUnlimited: boolean;
2371
+ lastUpdatedAt: string;
2372
+ ownerType: string;
2373
+ periodStart: string;
2374
+ periodEnd: string;
2375
+ planTermEndTimestamp: string | null;
2376
+ sourceDetails: Record<string, unknown>;
2377
+ creditsAvailable?: number;
2378
+ topOffCreditsAvailable?: number;
2379
+ id: string;
2380
+ userId?: undefined;
2381
+ status?: undefined;
2382
+ topOffCreditsTotal?: undefined;
2383
+ }, Error>>;
2384
+ fetchStatus: _tanstack_react_query.FetchStatus;
2385
+ promise: Promise<{
2386
+ id: string;
2387
+ userId: string;
2388
+ email: string;
2389
+ effectivePlanId: string;
2390
+ status: string;
2391
+ isUnlimited: boolean;
2392
+ creditsAvailable: number;
2393
+ creditsAllocatedThisPeriod: number;
2394
+ topOffCreditsAvailable: number;
2395
+ topOffCreditsTotal: number;
2396
+ allocationSource: string;
2397
+ sourceDetails: {};
2398
+ periodStart: null;
2399
+ periodEnd: null;
2400
+ planTermEndTimestamp: null;
2401
+ ownerType: string;
2402
+ createdAt: string;
2403
+ lastUpdatedAt: string;
2404
+ } | {
2405
+ totalCreditsAvailable: number;
2406
+ allocationSource: string;
2407
+ createdAt: string;
2408
+ creditsAllocatedThisPeriod: number;
2409
+ effectivePlanId: string;
2410
+ email: string;
2411
+ isUnlimited: boolean;
2412
+ lastUpdatedAt: string;
2413
+ ownerType: string;
2414
+ periodStart: string;
2415
+ periodEnd: string;
2416
+ planTermEndTimestamp: string | null;
2417
+ sourceDetails: Record<string, unknown>;
2418
+ creditsAvailable?: number;
2419
+ topOffCreditsAvailable?: number;
2420
+ id: string;
2421
+ userId?: undefined;
2422
+ status?: undefined;
2423
+ topOffCreditsTotal?: undefined;
2424
+ }>;
2425
+ } | {
2426
+ data: undefined;
2427
+ error: null;
2428
+ isError: false;
2429
+ isPending: true;
2430
+ isLoading: true;
2431
+ isLoadingError: false;
2432
+ isRefetchError: false;
2433
+ isSuccess: false;
2434
+ isPlaceholderData: false;
2435
+ status: "pending";
2436
+ dataUpdatedAt: number;
2437
+ errorUpdatedAt: number;
2438
+ failureCount: number;
2439
+ failureReason: Error | null;
2440
+ errorUpdateCount: number;
2441
+ isFetched: boolean;
2442
+ isFetchedAfterMount: boolean;
2443
+ isFetching: boolean;
2444
+ isInitialLoading: boolean;
2445
+ isPaused: boolean;
2446
+ isRefetching: boolean;
2447
+ isStale: boolean;
2448
+ isEnabled: boolean;
2449
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2450
+ id: string;
2451
+ userId: string;
2452
+ email: string;
2453
+ effectivePlanId: string;
2454
+ status: string;
2455
+ isUnlimited: boolean;
2456
+ creditsAvailable: number;
2457
+ creditsAllocatedThisPeriod: number;
2458
+ topOffCreditsAvailable: number;
2459
+ topOffCreditsTotal: number;
2460
+ allocationSource: string;
2461
+ sourceDetails: {};
2462
+ periodStart: null;
2463
+ periodEnd: null;
2464
+ planTermEndTimestamp: null;
2465
+ ownerType: string;
2466
+ createdAt: string;
2467
+ lastUpdatedAt: string;
2468
+ } | {
2469
+ totalCreditsAvailable: number;
2470
+ allocationSource: string;
2471
+ createdAt: string;
2472
+ creditsAllocatedThisPeriod: number;
2473
+ effectivePlanId: string;
2474
+ email: string;
2475
+ isUnlimited: boolean;
2476
+ lastUpdatedAt: string;
2477
+ ownerType: string;
2478
+ periodStart: string;
2479
+ periodEnd: string;
2480
+ planTermEndTimestamp: string | null;
2481
+ sourceDetails: Record<string, unknown>;
2482
+ creditsAvailable?: number;
2483
+ topOffCreditsAvailable?: number;
2484
+ id: string;
2485
+ userId?: undefined;
2486
+ status?: undefined;
2487
+ topOffCreditsTotal?: undefined;
2488
+ }, Error>>;
2489
+ fetchStatus: _tanstack_react_query.FetchStatus;
2490
+ promise: Promise<{
2491
+ id: string;
2492
+ userId: string;
2493
+ email: string;
2494
+ effectivePlanId: string;
2495
+ status: string;
2496
+ isUnlimited: boolean;
2497
+ creditsAvailable: number;
2498
+ creditsAllocatedThisPeriod: number;
2499
+ topOffCreditsAvailable: number;
2500
+ topOffCreditsTotal: number;
2501
+ allocationSource: string;
2502
+ sourceDetails: {};
2503
+ periodStart: null;
2504
+ periodEnd: null;
2505
+ planTermEndTimestamp: null;
2506
+ ownerType: string;
2507
+ createdAt: string;
2508
+ lastUpdatedAt: string;
2509
+ } | {
2510
+ totalCreditsAvailable: number;
2511
+ allocationSource: string;
2512
+ createdAt: string;
2513
+ creditsAllocatedThisPeriod: number;
2514
+ effectivePlanId: string;
2515
+ email: string;
2516
+ isUnlimited: boolean;
2517
+ lastUpdatedAt: string;
2518
+ ownerType: string;
2519
+ periodStart: string;
2520
+ periodEnd: string;
2521
+ planTermEndTimestamp: string | null;
2522
+ sourceDetails: Record<string, unknown>;
2523
+ creditsAvailable?: number;
2524
+ topOffCreditsAvailable?: number;
2525
+ id: string;
2526
+ userId?: undefined;
2527
+ status?: undefined;
2528
+ topOffCreditsTotal?: undefined;
2529
+ }>;
2530
+ } | {
2531
+ data: undefined;
2532
+ error: null;
2533
+ isError: false;
2534
+ isPending: true;
2535
+ isLoadingError: false;
2536
+ isRefetchError: false;
2537
+ isSuccess: false;
2538
+ isPlaceholderData: false;
2539
+ status: "pending";
2540
+ dataUpdatedAt: number;
2541
+ errorUpdatedAt: number;
2542
+ failureCount: number;
2543
+ failureReason: Error | null;
2544
+ errorUpdateCount: number;
2545
+ isFetched: boolean;
2546
+ isFetchedAfterMount: boolean;
2547
+ isFetching: boolean;
2548
+ isLoading: boolean;
2549
+ isInitialLoading: boolean;
2550
+ isPaused: boolean;
2551
+ isRefetching: boolean;
2552
+ isStale: boolean;
2553
+ isEnabled: boolean;
2554
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2555
+ id: string;
2556
+ userId: string;
2557
+ email: string;
2558
+ effectivePlanId: string;
2559
+ status: string;
2560
+ isUnlimited: boolean;
2561
+ creditsAvailable: number;
2562
+ creditsAllocatedThisPeriod: number;
2563
+ topOffCreditsAvailable: number;
2564
+ topOffCreditsTotal: number;
2565
+ allocationSource: string;
2566
+ sourceDetails: {};
2567
+ periodStart: null;
2568
+ periodEnd: null;
2569
+ planTermEndTimestamp: null;
2570
+ ownerType: string;
2571
+ createdAt: string;
2572
+ lastUpdatedAt: string;
2573
+ } | {
2574
+ totalCreditsAvailable: number;
2575
+ allocationSource: string;
2576
+ createdAt: string;
2577
+ creditsAllocatedThisPeriod: number;
2578
+ effectivePlanId: string;
2579
+ email: string;
2580
+ isUnlimited: boolean;
2581
+ lastUpdatedAt: string;
2582
+ ownerType: string;
2583
+ periodStart: string;
2584
+ periodEnd: string;
2585
+ planTermEndTimestamp: string | null;
2586
+ sourceDetails: Record<string, unknown>;
2587
+ creditsAvailable?: number;
2588
+ topOffCreditsAvailable?: number;
2589
+ id: string;
2590
+ userId?: undefined;
2591
+ status?: undefined;
2592
+ topOffCreditsTotal?: undefined;
2593
+ }, Error>>;
2594
+ fetchStatus: _tanstack_react_query.FetchStatus;
2595
+ promise: Promise<{
2596
+ id: string;
2597
+ userId: string;
2598
+ email: string;
2599
+ effectivePlanId: string;
2600
+ status: string;
2601
+ isUnlimited: boolean;
2602
+ creditsAvailable: number;
2603
+ creditsAllocatedThisPeriod: number;
2604
+ topOffCreditsAvailable: number;
2605
+ topOffCreditsTotal: number;
2606
+ allocationSource: string;
2607
+ sourceDetails: {};
2608
+ periodStart: null;
2609
+ periodEnd: null;
2610
+ planTermEndTimestamp: null;
2611
+ ownerType: string;
2612
+ createdAt: string;
2613
+ lastUpdatedAt: string;
2614
+ } | {
2615
+ totalCreditsAvailable: number;
2616
+ allocationSource: string;
2617
+ createdAt: string;
2618
+ creditsAllocatedThisPeriod: number;
2619
+ effectivePlanId: string;
2620
+ email: string;
2621
+ isUnlimited: boolean;
2622
+ lastUpdatedAt: string;
2623
+ ownerType: string;
2624
+ periodStart: string;
2625
+ periodEnd: string;
2626
+ planTermEndTimestamp: string | null;
2627
+ sourceDetails: Record<string, unknown>;
2628
+ creditsAvailable?: number;
2629
+ topOffCreditsAvailable?: number;
2630
+ id: string;
2631
+ userId?: undefined;
2632
+ status?: undefined;
2633
+ topOffCreditsTotal?: undefined;
2634
+ }>;
2635
+ } | {
2636
+ data: {
2637
+ id: string;
2638
+ userId: string;
2639
+ email: string;
2640
+ effectivePlanId: string;
2641
+ status: string;
2642
+ isUnlimited: boolean;
2643
+ creditsAvailable: number;
2644
+ creditsAllocatedThisPeriod: number;
2645
+ topOffCreditsAvailable: number;
2646
+ topOffCreditsTotal: number;
2647
+ allocationSource: string;
2648
+ sourceDetails: {};
2649
+ periodStart: null;
2650
+ periodEnd: null;
2651
+ planTermEndTimestamp: null;
2652
+ ownerType: string;
2653
+ createdAt: string;
2654
+ lastUpdatedAt: string;
2655
+ } | {
2656
+ totalCreditsAvailable: number;
2657
+ allocationSource: string;
2658
+ createdAt: string;
2659
+ creditsAllocatedThisPeriod: number;
2660
+ effectivePlanId: string;
2661
+ email: string;
2662
+ isUnlimited: boolean;
2663
+ lastUpdatedAt: string;
2664
+ ownerType: string;
2665
+ periodStart: string;
2666
+ periodEnd: string;
2667
+ planTermEndTimestamp: string | null;
2668
+ sourceDetails: Record<string, unknown>;
2669
+ creditsAvailable?: number;
2670
+ topOffCreditsAvailable?: number;
2671
+ id: string;
2672
+ userId?: undefined;
2673
+ status?: undefined;
2674
+ topOffCreditsTotal?: undefined;
2675
+ };
2676
+ isError: false;
2677
+ error: null;
2678
+ isPending: false;
2679
+ isLoading: false;
2680
+ isLoadingError: false;
2681
+ isRefetchError: false;
2682
+ isSuccess: true;
2683
+ isPlaceholderData: true;
2684
+ status: "success";
2685
+ dataUpdatedAt: number;
2686
+ errorUpdatedAt: number;
2687
+ failureCount: number;
2688
+ failureReason: Error | null;
2689
+ errorUpdateCount: number;
2690
+ isFetched: boolean;
2691
+ isFetchedAfterMount: boolean;
2692
+ isFetching: boolean;
2693
+ isInitialLoading: boolean;
2694
+ isPaused: boolean;
2695
+ isRefetching: boolean;
2696
+ isStale: boolean;
2697
+ isEnabled: boolean;
2698
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<{
2699
+ id: string;
2700
+ userId: string;
2701
+ email: string;
2702
+ effectivePlanId: string;
2703
+ status: string;
2704
+ isUnlimited: boolean;
2705
+ creditsAvailable: number;
2706
+ creditsAllocatedThisPeriod: number;
2707
+ topOffCreditsAvailable: number;
2708
+ topOffCreditsTotal: number;
2709
+ allocationSource: string;
2710
+ sourceDetails: {};
2711
+ periodStart: null;
2712
+ periodEnd: null;
2713
+ planTermEndTimestamp: null;
2714
+ ownerType: string;
2715
+ createdAt: string;
2716
+ lastUpdatedAt: string;
2717
+ } | {
2718
+ totalCreditsAvailable: number;
2719
+ allocationSource: string;
2720
+ createdAt: string;
2721
+ creditsAllocatedThisPeriod: number;
2722
+ effectivePlanId: string;
2723
+ email: string;
2724
+ isUnlimited: boolean;
2725
+ lastUpdatedAt: string;
2726
+ ownerType: string;
2727
+ periodStart: string;
2728
+ periodEnd: string;
2729
+ planTermEndTimestamp: string | null;
2730
+ sourceDetails: Record<string, unknown>;
2731
+ creditsAvailable?: number;
2732
+ topOffCreditsAvailable?: number;
2733
+ id: string;
2734
+ userId?: undefined;
2735
+ status?: undefined;
2736
+ topOffCreditsTotal?: undefined;
2737
+ }, Error>>;
2738
+ fetchStatus: _tanstack_react_query.FetchStatus;
2739
+ promise: Promise<{
2740
+ id: string;
2741
+ userId: string;
2742
+ email: string;
2743
+ effectivePlanId: string;
2744
+ status: string;
2745
+ isUnlimited: boolean;
2746
+ creditsAvailable: number;
2747
+ creditsAllocatedThisPeriod: number;
2748
+ topOffCreditsAvailable: number;
2749
+ topOffCreditsTotal: number;
2750
+ allocationSource: string;
2751
+ sourceDetails: {};
2752
+ periodStart: null;
2753
+ periodEnd: null;
2754
+ planTermEndTimestamp: null;
2755
+ ownerType: string;
2756
+ createdAt: string;
2757
+ lastUpdatedAt: string;
2758
+ } | {
2759
+ totalCreditsAvailable: number;
2760
+ allocationSource: string;
2761
+ createdAt: string;
2762
+ creditsAllocatedThisPeriod: number;
2763
+ effectivePlanId: string;
2764
+ email: string;
2765
+ isUnlimited: boolean;
2766
+ lastUpdatedAt: string;
2767
+ ownerType: string;
2768
+ periodStart: string;
2769
+ periodEnd: string;
2770
+ planTermEndTimestamp: string | null;
2771
+ sourceDetails: Record<string, unknown>;
2772
+ creditsAvailable?: number;
2773
+ topOffCreditsAvailable?: number;
2774
+ id: string;
2775
+ userId?: undefined;
2776
+ status?: undefined;
2777
+ topOffCreditsTotal?: undefined;
2778
+ }>;
2779
+ };
2780
+
2781
+ interface OrganizationAccess {
2782
+ hasUnlimitedAccess: boolean;
2783
+ subscriptionId: string | null;
2784
+ organizationId: string | null;
2785
+ organizationName: string | null;
2786
+ subscriptionEndDate: Date | null;
2787
+ accessType: 'organization' | 'individual' | 'institution_subscriptions';
2788
+ }
2789
+ interface InstitutionSubscription {
2790
+ id: string;
2791
+ institutionId: string;
2792
+ name: string;
2793
+ plan: string;
2794
+ endDate: Date;
2795
+ }
2796
+ interface Organization {
2797
+ id: string;
2798
+ name: string;
2799
+ members: string[];
2800
+ masterSubscriptionStatus: string;
2801
+ masterSubscriptionId: string;
2802
+ masterSubscriptionEndDate: Date;
2803
+ }
2804
+ declare const useOrganizationAccess: () => {
2805
+ data: OrganizationAccess;
2806
+ error: Error;
2807
+ isError: true;
2808
+ isPending: false;
2809
+ isLoading: false;
2810
+ isLoadingError: false;
2811
+ isRefetchError: true;
2812
+ isSuccess: false;
2813
+ isPlaceholderData: false;
2814
+ status: "error";
2815
+ dataUpdatedAt: number;
2816
+ errorUpdatedAt: number;
2817
+ failureCount: number;
2818
+ failureReason: Error | null;
2819
+ errorUpdateCount: number;
2820
+ isFetched: boolean;
2821
+ isFetchedAfterMount: boolean;
2822
+ isFetching: boolean;
2823
+ isInitialLoading: boolean;
2824
+ isPaused: boolean;
2825
+ isRefetching: boolean;
2826
+ isStale: boolean;
2827
+ isEnabled: boolean;
2828
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2829
+ fetchStatus: _tanstack_react_query.FetchStatus;
2830
+ promise: Promise<OrganizationAccess>;
2831
+ } | {
2832
+ data: OrganizationAccess;
2833
+ error: null;
2834
+ isError: false;
2835
+ isPending: false;
2836
+ isLoading: false;
2837
+ isLoadingError: false;
2838
+ isRefetchError: false;
2839
+ isSuccess: true;
2840
+ isPlaceholderData: false;
2841
+ status: "success";
2842
+ dataUpdatedAt: number;
2843
+ errorUpdatedAt: number;
2844
+ failureCount: number;
2845
+ failureReason: Error | null;
2846
+ errorUpdateCount: number;
2847
+ isFetched: boolean;
2848
+ isFetchedAfterMount: boolean;
2849
+ isFetching: boolean;
2850
+ isInitialLoading: boolean;
2851
+ isPaused: boolean;
2852
+ isRefetching: boolean;
2853
+ isStale: boolean;
2854
+ isEnabled: boolean;
2855
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2856
+ fetchStatus: _tanstack_react_query.FetchStatus;
2857
+ promise: Promise<OrganizationAccess>;
2858
+ } | {
2859
+ data: undefined;
2860
+ error: Error;
2861
+ isError: true;
2862
+ isPending: false;
2863
+ isLoading: false;
2864
+ isLoadingError: true;
2865
+ isRefetchError: false;
2866
+ isSuccess: false;
2867
+ isPlaceholderData: false;
2868
+ status: "error";
2869
+ dataUpdatedAt: number;
2870
+ errorUpdatedAt: number;
2871
+ failureCount: number;
2872
+ failureReason: Error | null;
2873
+ errorUpdateCount: number;
2874
+ isFetched: boolean;
2875
+ isFetchedAfterMount: boolean;
2876
+ isFetching: boolean;
2877
+ isInitialLoading: boolean;
2878
+ isPaused: boolean;
2879
+ isRefetching: boolean;
2880
+ isStale: boolean;
2881
+ isEnabled: boolean;
2882
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2883
+ fetchStatus: _tanstack_react_query.FetchStatus;
2884
+ promise: Promise<OrganizationAccess>;
2885
+ } | {
2886
+ data: undefined;
2887
+ error: null;
2888
+ isError: false;
2889
+ isPending: true;
2890
+ isLoading: true;
2891
+ isLoadingError: false;
2892
+ isRefetchError: false;
2893
+ isSuccess: false;
2894
+ isPlaceholderData: false;
2895
+ status: "pending";
2896
+ dataUpdatedAt: number;
2897
+ errorUpdatedAt: number;
2898
+ failureCount: number;
2899
+ failureReason: Error | null;
2900
+ errorUpdateCount: number;
2901
+ isFetched: boolean;
2902
+ isFetchedAfterMount: boolean;
2903
+ isFetching: boolean;
2904
+ isInitialLoading: boolean;
2905
+ isPaused: boolean;
2906
+ isRefetching: boolean;
2907
+ isStale: boolean;
2908
+ isEnabled: boolean;
2909
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2910
+ fetchStatus: _tanstack_react_query.FetchStatus;
2911
+ promise: Promise<OrganizationAccess>;
2912
+ } | {
2913
+ data: undefined;
2914
+ error: null;
2915
+ isError: false;
2916
+ isPending: true;
2917
+ isLoadingError: false;
2918
+ isRefetchError: false;
2919
+ isSuccess: false;
2920
+ isPlaceholderData: false;
2921
+ status: "pending";
2922
+ dataUpdatedAt: number;
2923
+ errorUpdatedAt: number;
2924
+ failureCount: number;
2925
+ failureReason: Error | null;
2926
+ errorUpdateCount: number;
2927
+ isFetched: boolean;
2928
+ isFetchedAfterMount: boolean;
2929
+ isFetching: boolean;
2930
+ isLoading: boolean;
2931
+ isInitialLoading: boolean;
2932
+ isPaused: boolean;
2933
+ isRefetching: boolean;
2934
+ isStale: boolean;
2935
+ isEnabled: boolean;
2936
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2937
+ fetchStatus: _tanstack_react_query.FetchStatus;
2938
+ promise: Promise<OrganizationAccess>;
2939
+ } | {
2940
+ data: OrganizationAccess;
2941
+ isError: false;
2942
+ error: null;
2943
+ isPending: false;
2944
+ isLoading: false;
2945
+ isLoadingError: false;
2946
+ isRefetchError: false;
2947
+ isSuccess: true;
2948
+ isPlaceholderData: true;
2949
+ status: "success";
2950
+ dataUpdatedAt: number;
2951
+ errorUpdatedAt: number;
2952
+ failureCount: number;
2953
+ failureReason: Error | null;
2954
+ errorUpdateCount: number;
2955
+ isFetched: boolean;
2956
+ isFetchedAfterMount: boolean;
2957
+ isFetching: boolean;
2958
+ isInitialLoading: boolean;
2959
+ isPaused: boolean;
2960
+ isRefetching: boolean;
2961
+ isStale: boolean;
2962
+ isEnabled: boolean;
2963
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<OrganizationAccess, Error>>;
2964
+ fetchStatus: _tanstack_react_query.FetchStatus;
2965
+ promise: Promise<OrganizationAccess>;
2966
+ };
2967
+
2968
+ declare function useSpeakableTranscript(): {
2969
+ mutation: _tanstack_react_query.UseMutationResult<string | null, Error, {
2970
+ model: "gemini" | "assemblyai" | "whisper";
2971
+ audioUrl: string;
2972
+ language: string;
2973
+ prompt?: string;
2974
+ }, unknown>;
2975
+ };
2976
+ declare function useSpeakableTranscriptCycle(): {
2977
+ mutationTranscriptCycle: _tanstack_react_query.UseMutationResult<{
2978
+ transcript: string;
2979
+ success: boolean;
2980
+ }, Error, {
2981
+ audioUrl: string;
2982
+ language: string;
2983
+ prompt: string;
2984
+ }, unknown>;
2985
+ };
2986
+
2987
+ declare const useUpdateStudentVocab: (page: PageActivityWithId | null) => {
2988
+ studentVocabMarkVoiceSuccess: undefined;
2989
+ studentVocabMarkVoiceFail: undefined;
2990
+ } | {
2991
+ studentVocabMarkVoiceSuccess: () => Promise<void>;
2992
+ studentVocabMarkVoiceFail: () => Promise<void>;
2993
+ };
2994
+
2995
+ declare const SPEAKABLE_ANALYTICS: {
2996
+ readonly VOICE_SUCCESS: "voice_success";
2997
+ readonly VOICE_FALLBACK_SUCCESS: "voice_fallback_success";
2998
+ readonly VOICE_FALLBACK_FAIL: "voice_fallback_fail";
2999
+ readonly VOICE_FAIL: "voice_fail";
3000
+ readonly RESPOND_CARD_SUCCESS: "respond_card_success";
3001
+ readonly RESPOND_CARD_FAIL: "respond_card_fail";
3002
+ readonly RESPOND_WRITE_CARD_SUCCESS: "respond_write_card_success";
3003
+ readonly RESPOND_WRITE_CARD_FAIL: "respond_write_card_fail";
3004
+ readonly RESPOND_WRITE_CARD_SUBMITTED: "respond_write_card_submitted";
3005
+ readonly RESPOND_WRITE_CARD_ERROR: "respond_write_card_error";
3006
+ readonly RESPOND_CARD_ERROR: "respond_card_error";
3007
+ readonly RESPOND_CARD_SUBMITTED: "respond_card_submitted";
3008
+ readonly RESPOND_FREE_PLAN: "respond_free_plan";
3009
+ readonly RESPOND_WRITE_FREE_PLAN: "respond_write_free_plan";
3010
+ readonly SUBMISSION: "assignment_submitted";
3011
+ readonly ASSIGNMENT_STARTED: "assignment_started";
3012
+ readonly CREATE_ASSIGNMENT: "create_assignment";
3013
+ readonly MC_SUCCESS: "multiple_choice_success";
3014
+ readonly MC_FAIL: "multiple_choice_fail";
3015
+ readonly MC_ERROR: "multiple_choice_error";
3016
+ readonly ACTFL_LEVEL: "actfl_level";
3017
+ readonly WIDA_LEVEL: "wida_level";
3018
+ readonly VIEW_SCORES_MODAL: "view_scores_modal";
3019
+ readonly SHORT_ANSWER_SUCCESS: "short_answer_success";
3020
+ readonly SHORT_ANSWER_FAIL: "short_answer_fail";
3021
+ readonly SHORT_ANSWER_ERROR: "short_answer_error";
3022
+ readonly RETRY: "retry";
3023
+ readonly MESSAGE_SENT: "message_sent";
3024
+ readonly MESSAGE_ERROR: "message_error";
3025
+ readonly VIEW_DETAILS_CLICK: "view_details_click";
3026
+ readonly TABS_CLICK: "tabs_click";
3027
+ readonly VIEW_MEDIA: "view_media";
3028
+ readonly VIEW_SCORES: "view_scores";
3029
+ readonly VIEW_GRADING_METHOD: "view_grading_method";
3030
+ readonly VIEW_FEEDBACK: "view_feedback";
3031
+ };
3032
+
3033
+ declare const useBaseOpenAI: ({ onTranscriptSuccess, onTranscriptError, onCompletionSuccess, onCompletionError, aiEnabled, submitAudioResponse, uploadAudioAndGetTranscript, onGetAudioUrlAndTranscript, }: {
3034
+ onTranscriptSuccess: (transcript: string) => void;
3035
+ onTranscriptError: ({ type, message }: {
3036
+ type: string;
3037
+ message: string;
3038
+ }) => void;
3039
+ onCompletionSuccess: (completion: any) => void;
3040
+ onCompletionError: ({ type, message }: {
3041
+ type: string;
3042
+ message: string;
3043
+ }) => void;
3044
+ aiEnabled: boolean;
3045
+ submitAudioResponse: (audio: string) => Promise<{
3046
+ url: string;
3047
+ fileName: string;
3048
+ }>;
3049
+ uploadAudioAndGetTranscript: (audio: string, language: string, pagePrompt: string | null) => Promise<{
3050
+ transcript: string;
3051
+ audioUrl: string;
3052
+ }>;
3053
+ onGetAudioUrlAndTranscript?: (args: {
3054
+ transcript?: string;
3055
+ audioUrl?: string;
3056
+ }) => void;
3057
+ }) => {
3058
+ submitAudioResponse: (audio: string) => Promise<{
3059
+ url: string;
3060
+ fileName: string;
3061
+ }>;
3062
+ uploadAudioAndGetTranscript: (audio: string, language: string, pagePrompt: string | null) => Promise<{
3063
+ transcript: string;
3064
+ audioUrl: string;
3065
+ }>;
3066
+ getTranscript: (audioUrl: string, language: string, prompt?: string) => Promise<any>;
3067
+ getFreeResponseCompletion: (messages: string[], isFreeResponse: boolean, feedbackLanguage: string, gradingStandard?: string) => Promise<any>;
3068
+ getFeedback: ({ cardId, language, writtenResponse, audio, autoGrade, file, pagePrompt, }: {
3069
+ cardId: string;
3070
+ language: string;
3071
+ writtenResponse: string | null;
3072
+ audio: string | null;
3073
+ autoGrade: boolean;
3074
+ file: string | null;
3075
+ pagePrompt: string | null;
3076
+ }) => Promise<{
3077
+ noFeedbackAvailable: boolean;
3078
+ success: boolean;
3079
+ reason: string;
3080
+ accessType: "ai_enabled" | "teacher_preview" | "student_with_teacher_plan" | "none";
3081
+ } | {
3082
+ noFeedbackAvailable: boolean;
3083
+ success: boolean;
3084
+ reason: string;
3085
+ accessType: string;
3086
+ aiSuccess: boolean;
3087
+ }>;
3088
+ };
3089
+
3090
+ interface ActivityFeedbackAccess {
3091
+ canAccessFeedback: boolean;
3092
+ reason?: string;
3093
+ isUnlimited: boolean;
3094
+ accessType: 'ai_enabled' | 'teacher_preview' | 'student_with_teacher_plan' | 'none';
3095
+ }
3096
+ /**
3097
+ * Hook to check feedback permissions for both students and teachers
3098
+ *
3099
+ * Permission Logic:
3100
+ * 1. aiEnabled: true → Allow feedback access always (highest priority)
3101
+ * 2. Teachers on /activity route → Always allowed (ADMIN role)
3102
+ * 3. Students on /activity route → Need teacher with active plan (team/org)
3103
+ *
3104
+ * @param params - Parameters for permission checking
3105
+ * @returns Feedback permissions information
3106
+ */
3107
+ declare const useActivityFeedbackAccess: ({ aiEnabled, isActivityRoute, }: {
3108
+ aiEnabled?: boolean;
3109
+ isActivityRoute?: boolean;
3110
+ }) => {
3111
+ data: ActivityFeedbackAccess;
3112
+ error: Error;
3113
+ isError: true;
3114
+ isPending: false;
3115
+ isLoading: false;
3116
+ isLoadingError: false;
3117
+ isRefetchError: true;
3118
+ isSuccess: false;
3119
+ isPlaceholderData: false;
3120
+ status: "error";
3121
+ dataUpdatedAt: number;
3122
+ errorUpdatedAt: number;
3123
+ failureCount: number;
3124
+ failureReason: Error | null;
3125
+ errorUpdateCount: number;
3126
+ isFetched: boolean;
3127
+ isFetchedAfterMount: boolean;
3128
+ isFetching: boolean;
3129
+ isInitialLoading: boolean;
3130
+ isPaused: boolean;
3131
+ isRefetching: boolean;
3132
+ isStale: boolean;
3133
+ isEnabled: boolean;
3134
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
3135
+ fetchStatus: _tanstack_react_query.FetchStatus;
3136
+ promise: Promise<ActivityFeedbackAccess>;
3137
+ } | {
3138
+ data: ActivityFeedbackAccess;
3139
+ error: null;
3140
+ isError: false;
3141
+ isPending: false;
3142
+ isLoading: false;
3143
+ isLoadingError: false;
3144
+ isRefetchError: false;
3145
+ isSuccess: true;
3146
+ isPlaceholderData: false;
3147
+ status: "success";
3148
+ dataUpdatedAt: number;
3149
+ errorUpdatedAt: number;
3150
+ failureCount: number;
3151
+ failureReason: Error | null;
3152
+ errorUpdateCount: number;
3153
+ isFetched: boolean;
3154
+ isFetchedAfterMount: boolean;
3155
+ isFetching: boolean;
3156
+ isInitialLoading: boolean;
3157
+ isPaused: boolean;
3158
+ isRefetching: boolean;
3159
+ isStale: boolean;
3160
+ isEnabled: boolean;
3161
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
3162
+ fetchStatus: _tanstack_react_query.FetchStatus;
3163
+ promise: Promise<ActivityFeedbackAccess>;
3164
+ } | {
3165
+ data: undefined;
3166
+ error: Error;
3167
+ isError: true;
3168
+ isPending: false;
3169
+ isLoading: false;
3170
+ isLoadingError: true;
3171
+ isRefetchError: false;
3172
+ isSuccess: false;
3173
+ isPlaceholderData: false;
3174
+ status: "error";
3175
+ dataUpdatedAt: number;
3176
+ errorUpdatedAt: number;
3177
+ failureCount: number;
3178
+ failureReason: Error | null;
3179
+ errorUpdateCount: number;
3180
+ isFetched: boolean;
3181
+ isFetchedAfterMount: boolean;
3182
+ isFetching: boolean;
3183
+ isInitialLoading: boolean;
3184
+ isPaused: boolean;
3185
+ isRefetching: boolean;
3186
+ isStale: boolean;
3187
+ isEnabled: boolean;
3188
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
3189
+ fetchStatus: _tanstack_react_query.FetchStatus;
3190
+ promise: Promise<ActivityFeedbackAccess>;
3191
+ } | {
3192
+ data: undefined;
3193
+ error: null;
3194
+ isError: false;
3195
+ isPending: true;
3196
+ isLoading: true;
3197
+ isLoadingError: false;
3198
+ isRefetchError: false;
3199
+ isSuccess: false;
3200
+ isPlaceholderData: false;
3201
+ status: "pending";
3202
+ dataUpdatedAt: number;
3203
+ errorUpdatedAt: number;
3204
+ failureCount: number;
3205
+ failureReason: Error | null;
3206
+ errorUpdateCount: number;
3207
+ isFetched: boolean;
3208
+ isFetchedAfterMount: boolean;
3209
+ isFetching: boolean;
3210
+ isInitialLoading: boolean;
3211
+ isPaused: boolean;
3212
+ isRefetching: boolean;
3213
+ isStale: boolean;
3214
+ isEnabled: boolean;
3215
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
3216
+ fetchStatus: _tanstack_react_query.FetchStatus;
3217
+ promise: Promise<ActivityFeedbackAccess>;
3218
+ } | {
3219
+ data: undefined;
3220
+ error: null;
3221
+ isError: false;
3222
+ isPending: true;
3223
+ isLoadingError: false;
3224
+ isRefetchError: false;
3225
+ isSuccess: false;
3226
+ isPlaceholderData: false;
3227
+ status: "pending";
3228
+ dataUpdatedAt: number;
3229
+ errorUpdatedAt: number;
3230
+ failureCount: number;
3231
+ failureReason: Error | null;
3232
+ errorUpdateCount: number;
3233
+ isFetched: boolean;
3234
+ isFetchedAfterMount: boolean;
3235
+ isFetching: boolean;
3236
+ isLoading: boolean;
3237
+ isInitialLoading: boolean;
3238
+ isPaused: boolean;
3239
+ isRefetching: boolean;
3240
+ isStale: boolean;
3241
+ isEnabled: boolean;
3242
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
3243
+ fetchStatus: _tanstack_react_query.FetchStatus;
3244
+ promise: Promise<ActivityFeedbackAccess>;
3245
+ } | {
3246
+ data: ActivityFeedbackAccess;
3247
+ isError: false;
3248
+ error: null;
3249
+ isPending: false;
3250
+ isLoading: false;
3251
+ isLoadingError: false;
3252
+ isRefetchError: false;
3253
+ isSuccess: true;
3254
+ isPlaceholderData: true;
3255
+ status: "success";
3256
+ dataUpdatedAt: number;
3257
+ errorUpdatedAt: number;
3258
+ failureCount: number;
3259
+ failureReason: Error | null;
3260
+ errorUpdateCount: number;
3261
+ isFetched: boolean;
3262
+ isFetchedAfterMount: boolean;
3263
+ isFetching: boolean;
3264
+ isInitialLoading: boolean;
3265
+ isPaused: boolean;
3266
+ isRefetching: boolean;
3267
+ isStale: boolean;
3268
+ isEnabled: boolean;
3269
+ refetch: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<ActivityFeedbackAccess, Error>>;
3270
+ fetchStatus: _tanstack_react_query.FetchStatus;
3271
+ promise: Promise<ActivityFeedbackAccess>;
3272
+ };
3273
+
3274
+ declare const createFsClientNative: ({ db, httpsCallable, logEvent }: FsClientParams) => {
3275
+ assignmentRepo: {
3276
+ getAssignment: (params: {
3277
+ assignmentId: string;
3278
+ currentUserId: string;
3279
+ analyticType?: AssignmentAnalyticsType;
3280
+ studentId?: string;
3281
+ }) => Promise<AssignmentWithId | {
3282
+ scores: any;
3283
+ id: string;
3284
+ isAvailable: boolean;
3285
+ name: string;
3286
+ description: string;
3287
+ scheduledTime?: string | null;
3288
+ dueTime?: {
3289
+ hours: number;
3290
+ minutes: number;
3291
+ nanos: number;
3292
+ };
3293
+ speakableio: boolean;
3294
+ owners: string[];
3295
+ image: {
3296
+ path: string | null;
3297
+ url: string;
3298
+ };
3299
+ dueDate: {
3300
+ day: number;
3301
+ month: number;
3302
+ year: number;
3303
+ };
3304
+ teacherName: string;
3305
+ courseWorkId: string | null;
3306
+ dueDateTimestamp: CustomTimestamp;
3307
+ scheduledTimeTimestamp: number;
3308
+ active: boolean;
3309
+ voice: string | null;
3310
+ setId: string;
3311
+ dateMade: {
3312
+ seconds: number;
3313
+ nanoseconds: number;
3314
+ };
3315
+ maxPoints: number;
3316
+ courseId: string;
3317
+ isAssessment: boolean;
3318
+ ltiDeeplink?: string;
3319
+ content?: string[];
3320
+ weights?: Record<string, number>;
3321
+ language?: string;
3322
+ types?: { [key in ActivityPageType]?: number; };
3323
+ aiEnabled?: boolean;
3324
+ chat_experience?: boolean;
3325
+ showScores?: boolean;
3326
+ } | null>;
3327
+ attachScoresAssignment: (args_0: {
3328
+ assignments: AssignmentWithId[];
3329
+ analyticType: AssignmentAnalyticsType;
3330
+ studentId?: string;
3331
+ currentUserId: string;
3332
+ }) => Promise<{
3333
+ scores: any;
3334
+ id: string;
3335
+ isAvailable: boolean;
3336
+ name: string;
3337
+ description: string;
3338
+ scheduledTime?: string | null;
3339
+ dueTime?: {
3340
+ hours: number;
3341
+ minutes: number;
3342
+ nanos: number;
3343
+ };
3344
+ speakableio: boolean;
3345
+ owners: string[];
3346
+ image: {
3347
+ path: string | null;
3348
+ url: string;
3349
+ };
3350
+ dueDate: {
3351
+ day: number;
3352
+ month: number;
3353
+ year: number;
3354
+ };
3355
+ teacherName: string;
3356
+ courseWorkId: string | null;
3357
+ dueDateTimestamp: CustomTimestamp;
3358
+ scheduledTimeTimestamp: number;
3359
+ active: boolean;
3360
+ voice: string | null;
3361
+ setId: string;
3362
+ dateMade: {
3363
+ seconds: number;
3364
+ nanoseconds: number;
3365
+ };
3366
+ maxPoints: number;
3367
+ courseId: string;
3368
+ isAssessment: boolean;
3369
+ ltiDeeplink?: string;
3370
+ content?: string[];
3371
+ weights?: Record<string, number>;
3372
+ language?: string;
3373
+ types?: { [key in ActivityPageType]?: number; };
3374
+ aiEnabled?: boolean;
3375
+ chat_experience?: boolean;
3376
+ showScores?: boolean;
3377
+ }[]>;
3378
+ getAssignmentScores: (args_0: {
3379
+ assignmentId: string;
3380
+ currentUserId: string;
3381
+ analyticType?: AssignmentAnalyticsType;
3382
+ studentId?: string;
3383
+ }) => Promise<{
3384
+ scores: unknown;
3385
+ id: string;
3386
+ } | undefined>;
3387
+ getAllAssignments: () => Promise<(AssignmentWithId & {
3388
+ id: string;
3389
+ })[]>;
3390
+ };
3391
+ cardRepo: {
3392
+ createCard: (args_0: {
3393
+ data: Partial<PageActivity>;
3394
+ }) => Promise<{
3395
+ id: string;
3396
+ } & Partial<PageActivity>>;
3397
+ createCards: (args_0: {
3398
+ cards: PageActivity[];
3399
+ }) => Promise<{
3400
+ id: string;
3401
+ owners: string[];
3402
+ checked?: boolean;
3403
+ completed?: boolean;
3404
+ media_area_id?: string | null;
3405
+ media_area_layout?: "left" | "right" | null;
3406
+ media?: MediaPageActivity | null;
3407
+ score?: number;
3408
+ verificationStatus?: VerificationCardStatus;
3409
+ native_text?: string;
3410
+ repeat?: number;
3411
+ language?: string | null;
3412
+ image?: {
3413
+ path?: string | null;
3414
+ url?: string;
3415
+ };
3416
+ audio?: {
3417
+ path?: string | null;
3418
+ url?: string;
3419
+ } | null;
3420
+ notes?: string;
3421
+ difficulty?: string;
3422
+ default_language?: string;
3423
+ target_text?: string;
3424
+ type: ActivityPageType;
3425
+ grading_criteria?: string;
3426
+ grading_criteria_title?: string;
3427
+ scoring_type?: string;
3428
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
3429
+ feedback_types?: FeedbackTypesCard[];
3430
+ rubricId?: string;
3431
+ prompt?: string;
3432
+ title?: string;
3433
+ passing_score?: number;
3434
+ maxCharacters?: number;
3435
+ answer?: string[];
3436
+ choices?: {
3437
+ value: string;
3438
+ option: string;
3439
+ }[];
3440
+ MCQType?: string;
3441
+ multipleAttemptsAllowed?: boolean;
3442
+ allowRetries?: boolean;
3443
+ question?: string;
3444
+ respondTime?: number;
3445
+ hidePrompt?: boolean;
3446
+ videoUrl?: string;
3447
+ link?: string;
3448
+ text?: string;
3449
+ isListenAloud?: boolean;
3450
+ embedCode?: string;
3451
+ attempt?: number;
3452
+ correct?: number;
3453
+ autoGrade?: boolean;
3454
+ points?: number;
3455
+ shuffle?: boolean;
3456
+ translation?: string;
3457
+ includeAIContext?: boolean;
3458
+ media_area_context_ref?: string | null;
3459
+ standardId?: string;
3460
+ target_proficiency_level?: string;
3461
+ allowTTS?: boolean;
3462
+ feedback_language?: string | null;
3463
+ correct_answer?: string | null;
3464
+ limit_attempts?: boolean;
3465
+ max_attempts?: number;
3466
+ rich_text?: string;
3467
+ feedbackOff?: boolean;
3468
+ correct_answer_exact_match?: boolean;
3469
+ ai_context_block_ids?: string[];
3470
+ resolvedContext?: string;
3471
+ goal?: string;
3472
+ mode?: ConversationPageMode;
3473
+ personality?: string;
3474
+ voice?: string;
3475
+ topic?: string;
3476
+ vocab?: string[];
3477
+ questions?: string[];
3478
+ showHints?: boolean;
3479
+ }[]>;
3480
+ getCard: (params: {
3481
+ cardId: string;
3482
+ }) => Promise<{
3483
+ type: ActivityPageType;
3484
+ id: string;
3485
+ owners: string[];
3486
+ checked?: boolean;
3487
+ completed?: boolean;
3488
+ media_area_id?: string | null;
3489
+ media_area_layout?: "left" | "right" | null;
3490
+ media?: MediaPageActivity | null;
3491
+ score?: number;
3492
+ verificationStatus?: VerificationCardStatus;
3493
+ native_text?: string;
3494
+ repeat?: number;
3495
+ language?: string | null;
3496
+ image?: {
3497
+ path?: string | null;
3498
+ url?: string;
3499
+ };
3500
+ audio?: {
3501
+ path?: string | null;
3502
+ url?: string;
3503
+ } | null;
3504
+ notes?: string;
3505
+ difficulty?: string;
3506
+ default_language?: string;
3507
+ target_text?: string;
3508
+ grading_criteria?: string;
3509
+ grading_criteria_title?: string;
3510
+ scoring_type?: string;
3511
+ grading_method?: "simple" | "rubric" | "manual" | "standards_based";
3512
+ feedback_types?: FeedbackTypesCard[];
3513
+ rubricId?: string;
3514
+ prompt?: string;
3515
+ title?: string;
3516
+ passing_score?: number;
3517
+ maxCharacters?: number;
3518
+ answer?: string[];
3519
+ choices?: {
3520
+ value: string;
3521
+ option: string;
3522
+ }[];
3523
+ MCQType?: string;
3524
+ multipleAttemptsAllowed?: boolean;
3525
+ allowRetries?: boolean;
3526
+ question?: string;
3527
+ respondTime?: number;
3528
+ hidePrompt?: boolean;
3529
+ videoUrl?: string;
3530
+ link?: string;
3531
+ text?: string;
3532
+ isListenAloud?: boolean;
3533
+ embedCode?: string;
3534
+ attempt?: number;
3535
+ correct?: number;
3536
+ autoGrade?: boolean;
3537
+ points?: number;
3538
+ shuffle?: boolean;
3539
+ translation?: string;
3540
+ includeAIContext?: boolean;
3541
+ media_area_context_ref?: string | null;
3542
+ standardId?: string;
3543
+ target_proficiency_level?: string;
3544
+ allowTTS?: boolean;
3545
+ feedback_language?: string | null;
3546
+ correct_answer?: string | null;
3547
+ limit_attempts?: boolean;
3548
+ max_attempts?: number;
3549
+ rich_text?: string;
3550
+ feedbackOff?: boolean;
3551
+ correct_answer_exact_match?: boolean;
3552
+ ai_context_block_ids?: string[];
3553
+ resolvedContext?: string;
3554
+ goal?: string;
3555
+ mode?: ConversationPageMode;
3556
+ personality?: string;
3557
+ voice?: string;
3558
+ topic?: string;
3559
+ vocab?: string[];
3560
+ questions?: string[];
3561
+ showHints?: boolean;
3562
+ } | null>;
3563
+ };
3564
+ };
3565
+
3566
+ export { ActivityPageType, type Assignment, type AssignmentAnalyticsType$1 as AssignmentAnalyticsType, type AssignmentWithId, BASE_MULTIPLE_CHOICE_FIELD_VALUES, BASE_REPEAT_FIELD_VALUES, BASE_RESPOND_FIELD_VALUES, CONVERSATION_PAGE_ACTIVITY_TYPES, ConversationPageMode, type CreditContract, FeedbackTypesCard, FsCtx, type InstitutionSubscription, LENIENCY_OPTIONS, LeniencyCard, MULTIPLE_CHOICE_PAGE_ACTIVITY_TYPES, type MediaPageActivity, 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_ANALYTICS, SPEAKABLE_NOTIFICATIONS, STUDENT_LEVELS_OPTIONS, type Score, type ScoreWithId, type Set, type SetWithId, type SpeakableNotificationType, SpeakableNotificationTypes, SpeakableProvider, VerificationCardStatus, assignmentQueryKeys, cardsQueryKeys, checkIsConversationPage, checkIsMCPage, checkIsMediaPage, checkIsRepeatPage, checkIsRespondAudioPage, checkIsRespondPage, checkIsRespondWrittenPage, checkIsShortAnswerPage, checkTypePageActivity, cleanString, createAssignmentRepo, createCardRepo, createFsClientNative as createFsClient, createSetRepo, creditQueryKeys, debounce, getCardFromCache, getLabelPage, getPageMediaData, getPagePrompt, getPhraseLength, getRespondCardTool, getSetFromCache, getSingleMediaPageData, getTotalCompletedCards, getTranscript, getTranscriptCycle, getWordHash, purify, refsCardsFiresotre, refsSetsFirestore, scoreQueryKeys, setsQueryKeys, updateCardInCache, updateSetInCache, useActivity, useActivityFeedbackAccess, useAssignment, useBaseOpenAI, useCards, useClearScore, useClearScoreV2, useCreateCard, useCreateCards, useCreateNotification, useGetCard, useOrganizationAccess, useScore, useSet, useSpeakableApi, useSpeakableTranscript, useSpeakableTranscriptCycle, useSubmitAssignmentScore, useSubmitPracticeScore, useUpdateCardScore, useUpdateScore, useUpdateStudentVocab, useUserCredits };