@oaknational/google-classroom-addon 1.31.0 → 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import t from"zod";var n,i=t.object({courseId:t.string(),itemId:t.string(),addOnToken:t.string(),title:t.string(),lessonSlug:t.string(),programmeSlug:t.string(),unitSlug:t.string(),maxPoints:t.number().optional(),teacherLoginHint:t.string().optional()}),o=t.object({courseId:t.string(),postId:t.string(),id:t.string(),title:t.string(),teacherViewUri:t.object({uri:t.string()}),studentViewUri:t.object({uri:t.string()}),studentWorkReviewUri:t.object({uri:t.string()}).optional(),itemId:t.string(),maxPoints:t.number().nullish()}),e=t.string(),r=t.object({accessToken:t.string(),loginHint:t.string(),refreshToken:t.string().optional(),profilePictureUrl:t.string().optional(),email:t.string().optional()}),s=t.object({token:t.string()}),a=t.tuple([i,t.string().min(1),t.string().min(1)]),l=o.extend({attachmentId:t.string(),createdAt:t.string(),teacherLoginHint:t.string().optional()}),g=t.object({loginHint:t.string(),refreshToken:t.string().optional(),profilePictureUrl:t.string().optional()}),u=["NEW","CREATED","RECLAIMED_BY_STUDENT"],p=t.enum(["correct","incorrect"]),c=t.union([t.string(),t.number(),t.array(t.union([t.string(),t.number()]).nullable()),t.null()]),d=t.object({mode:t.enum(["init","incomplete","input","grading","feedback"]),grade:t.number(),pupilAnswer:c.optional().nullable(),feedback:t.union([p,t.array(p)]).optional(),isPartiallyCorrect:t.boolean().optional(),correctAnswer:t.union([t.string(),t.array(t.union([t.string(),t.undefined()]))]).optional(),usedHint:t.boolean().optional()}),b=t.object({grade:t.number(),numQuestions:t.number(),isComplete:t.boolean(),questionResults:t.array(d).optional()}),m=t.object({played:t.boolean(),duration:t.number(),timeElapsed:t.number(),isComplete:t.boolean()}),E=t.object({worksheetAvailable:t.boolean().optional(),worksheetDownloaded:t.boolean().optional(),isComplete:t.boolean()});!function(t){t.SUBMISSION_STATE_UNSPECIFIED="SUBMISSION_STATE_UNSPECIFIED",t.NEW="NEW",t.CREATED="CREATED",t.RECLAIMED_BY_STUDENT="RECLAIMED_BY_STUDENT",t.TURNED_IN="TURNED_IN",t.RETURNED="RETURNED"}(n||(n={}));var I=t.enum(n),T=t.object({postSubmissionState:I,submissionId:t.string(),attachmentId:t.string(),courseId:t.string(),itemId:t.string(),pupilLoginHint:t.string(),starterQuiz:b.optional(),exitQuiz:b.optional(),video:m.optional(),intro:E.optional(),updatedAt:t.string(),createdAt:t.string()}),S=t.object({submissionId:t.string(),attachmentId:t.string(),courseId:t.string(),itemId:t.string(),pupilLoginHint:t.string(),starterQuiz:b.optional(),exitQuiz:b.optional(),video:m.optional(),intro:E.optional()});export{a as CreateAttachmentCallSchema,n as PostSubmissionState,u as UPDATABLE_SUBMISSION_STATES,l as classroomAttachmentEntitySchema,o as classroomAttachmentSchema,e as codeSchema,i as createAnnouncementAttachmentArgsSchema,r as googleOAuthUserSchema,E as introProgressSchema,I as postSubmissionStateSchema,T as pupilLessonProgressSchema,d as questionResultSchema,b as quizProgressSchema,s as tokenPayloadSchema,S as upsertPupilLessonProgressArgsSchema,g as userCredentialsEntitySchema,m as videoProgressSchema};
1
+ import n from"zod";var t,i=n.object({courseId:n.string(),itemId:n.string(),addOnToken:n.string(),title:n.string(),lessonSlug:n.string(),programmeSlug:n.string(),unitSlug:n.string(),maxPoints:n.number().optional(),teacherLoginHint:n.string().optional()}),e=n.object({courseId:n.string(),postId:n.string(),id:n.string(),title:n.string(),teacherViewUri:n.object({uri:n.string()}),studentViewUri:n.object({uri:n.string()}),studentWorkReviewUri:n.object({uri:n.string()}).optional(),itemId:n.string(),maxPoints:n.number().nullish()}),o=n.object({title:n.string(),description:n.string().optional(),lessonUrl:n.string(),maxPoints:n.number().int().positive()}),r=n.object({courseWorkId:n.string(),courseId:n.string(),alternateLink:n.string().optional(),title:n.string()}),s=n.object({id:n.string(),name:n.string(),section:n.string().optional()}),g=n.string(),a=n.object({accessToken:n.string(),loginHint:n.string(),refreshToken:n.string().optional(),profilePictureUrl:n.string().optional(),email:n.string().optional()}),l=n.object({token:n.string()}),u=n.tuple([i,n.string().min(1),n.string().min(1)]),d=e.extend({attachmentId:n.string(),createdAt:n.string(),teacherLoginHint:n.string().optional()}),c=n.object({loginHint:n.string(),refreshToken:n.string().optional(),profilePictureUrl:n.string().optional()}),p=n.object({assignmentToken:n.string(),courseWorkId:n.string(),courseId:n.string(),teacherLoginHint:n.string(),lessonSlug:n.string(),programmeSlug:n.string(),unitSlug:n.string(),maxPoints:n.number().int().positive(),createdAt:n.string()}),m=n.enum(["correct","incorrect"]),b=n.union([n.string(),n.number(),n.array(n.union([n.string(),n.number()]).nullable()),n.null()]),I=n.object({mode:n.enum(["init","incomplete","input","grading","feedback"]),grade:n.number(),pupilAnswer:b.optional().nullable(),feedback:n.union([m,n.array(m)]).optional(),isPartiallyCorrect:n.boolean().optional(),correctAnswer:n.union([n.string(),n.array(n.union([n.string(),n.undefined()]))]).optional(),usedHint:n.boolean().optional()}),E=n.object({grade:n.number().int().min(0),numQuestions:n.number().int().positive(),isComplete:n.boolean(),questionResults:n.array(I).optional()}),T=n.object({played:n.boolean(),duration:n.number(),timeElapsed:n.number(),isComplete:n.boolean()}),S=n.object({worksheetAvailable:n.boolean().optional(),worksheetDownloaded:n.boolean().optional(),isComplete:n.boolean()});!function(n){n.SUBMISSION_STATE_UNSPECIFIED="SUBMISSION_STATE_UNSPECIFIED",n.NEW="NEW",n.CREATED="CREATED",n.RECLAIMED_BY_STUDENT="RECLAIMED_BY_STUDENT",n.TURNED_IN="TURNED_IN",n.RETURNED="RETURNED"}(t||(t={}));var k=n.enum(t),j=[t.NEW,t.CREATED,t.RECLAIMED_BY_STUDENT],U=n.object({starterQuiz:E.optional(),exitQuiz:E.optional(),video:T.optional(),intro:S.optional()}),D=U.extend({updatedAt:n.string(),createdAt:n.string()}),N=D.extend({postSubmissionState:k,submissionId:n.string(),attachmentId:n.string(),courseId:n.string(),itemId:n.string(),pupilLoginHint:n.string()}),A=U.extend({submissionId:n.string(),attachmentId:n.string(),courseId:n.string(),itemId:n.string(),pupilLoginHint:n.string()}),R=D.extend({submissionId:n.string(),assignmentToken:n.string(),courseWorkId:n.string(),courseId:n.string(),pupilLoginHint:n.string(),gradeSubmitted:n.boolean().optional()}),h=U.extend({submissionId:n.string(),assignmentToken:n.string(),courseWorkId:n.string(),courseId:n.string(),pupilLoginHint:n.string()});export{u as CreateAttachmentCallSchema,t as PostSubmissionState,j as UPDATABLE_SUBMISSION_STATES,d as classroomAttachmentEntitySchema,e as classroomAttachmentSchema,p as classroomCourseWorkEntitySchema,g as codeSchema,s as courseListItemSchema,r as courseWorkCreatedResultSchema,R as courseWorkPupilProgressSchema,i as createAnnouncementAttachmentArgsSchema,o as createCourseWorkArgsSchema,a as googleOAuthUserSchema,S as introProgressSchema,k as postSubmissionStateSchema,N as pupilLessonProgressSchema,I as questionResultSchema,E as quizProgressSchema,l as tokenPayloadSchema,h as upsertCourseWorkPupilProgressArgsSchema,A as upsertPupilLessonProgressArgsSchema,c as userCredentialsEntitySchema,T as videoProgressSchema};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/types/services/GoogleClassroomClientTypes.ts","../../../src/types/services/PupilLessonProgressTypes.ts","../../../src/types/services/GoogleOAuthClientTypes.ts","../../../src/types/services/FirestoreClientTypes.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const createAnnouncementAttachmentArgsSchema = z.object({\n courseId: z.string(),\n itemId: z.string(),\n addOnToken: z.string(),\n title: z.string(),\n lessonSlug: z.string(),\n programmeSlug: z.string(),\n unitSlug: z.string(),\n maxPoints: z.number().optional(),\n teacherLoginHint: z.string().optional(),\n});\n\nexport type CreateAnnouncementAttachmentArgs = z.infer<\n typeof createAnnouncementAttachmentArgsSchema\n>;\n\nexport const classroomAttachmentSchema = z.object({\n courseId: z.string(),\n postId: z.string(),\n id: z.string(),\n title: z.string(),\n teacherViewUri: z.object({\n uri: z.string(),\n }),\n studentViewUri: z.object({\n uri: z.string(),\n }),\n studentWorkReviewUri: z\n .object({\n uri: z.string(),\n })\n .optional(),\n itemId: z.string(),\n maxPoints: z.number().nullish(),\n});\n\nexport type ClassroomAttachment = z.infer<typeof classroomAttachmentSchema>;\n","import z from \"zod\";\n\nexport const UPDATABLE_SUBMISSION_STATES = [\n \"NEW\",\n \"CREATED\",\n \"RECLAIMED_BY_STUDENT\",\n] as const;\n\nexport type UpdatableSubmissionState =\n (typeof UPDATABLE_SUBMISSION_STATES)[number];\n\nconst questionFeedbackSchema = z.enum([\"correct\", \"incorrect\"]);\n\nconst pupilAnswerSchema = z.union([\n z.string(),\n z.number(),\n z.array(z.union([z.string(), z.number()]).nullable()),\n z.null(),\n]);\n\nexport const questionResultSchema = z.object({\n mode: z.enum([\"init\", \"incomplete\", \"input\", \"grading\", \"feedback\"]),\n grade: z.number(),\n pupilAnswer: pupilAnswerSchema.optional().nullable(),\n feedback: z\n .union([questionFeedbackSchema, z.array(questionFeedbackSchema)])\n .optional(),\n isPartiallyCorrect: z.boolean().optional(),\n correctAnswer: z\n .union([z.string(), z.array(z.union([z.string(), z.undefined()]))])\n .optional(),\n usedHint: z.boolean().optional(),\n});\n\nexport const quizProgressSchema = z.object({\n grade: z.number(),\n numQuestions: z.number(),\n isComplete: z.boolean(),\n questionResults: z.array(questionResultSchema).optional(),\n});\n\nexport const videoProgressSchema = z.object({\n played: z.boolean(),\n duration: z.number(),\n timeElapsed: z.number(),\n isComplete: z.boolean(),\n});\n\nexport const introProgressSchema = z.object({\n worksheetAvailable: z.boolean().optional(),\n worksheetDownloaded: z.boolean().optional(),\n isComplete: z.boolean(),\n});\n\nexport enum PostSubmissionState {\n SUBMISSION_STATE_UNSPECIFIED = \"SUBMISSION_STATE_UNSPECIFIED\",\n NEW = \"NEW\",\n CREATED = \"CREATED\",\n RECLAIMED_BY_STUDENT = \"RECLAIMED_BY_STUDENT\",\n TURNED_IN = \"TURNED_IN\",\n RETURNED = \"RETURNED\",\n}\n\nexport const postSubmissionStateSchema = z.enum(PostSubmissionState);\n\nexport const pupilLessonProgressSchema = z.object({\n postSubmissionState: postSubmissionStateSchema,\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n\n starterQuiz: quizProgressSchema.optional(),\n exitQuiz: quizProgressSchema.optional(),\n video: videoProgressSchema.optional(),\n intro: introProgressSchema.optional(),\n\n updatedAt: z.string(),\n createdAt: z.string(),\n});\n\nexport type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;\n\nexport const upsertPupilLessonProgressArgsSchema = z.object({\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n starterQuiz: quizProgressSchema.optional(),\n exitQuiz: quizProgressSchema.optional(),\n video: videoProgressSchema.optional(),\n intro: introProgressSchema.optional(),\n});\n\nexport type UpsertPupilLessonProgressArgs = z.infer<\n typeof upsertPupilLessonProgressArgsSchema\n>;\n","import z from \"zod\";\n\nimport { createAnnouncementAttachmentArgsSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const codeSchema = z.string();\nexport type Code = z.infer<typeof codeSchema>;\n\nexport const googleOAuthUserSchema = z.object({\n accessToken: z.string(),\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n email: z.string().optional(),\n});\n\nexport type GoogleOAuthUser = z.infer<typeof googleOAuthUserSchema>;\n\nexport const tokenPayloadSchema = z.object({\n token: z.string(),\n});\n\nexport type TokenPayload = z.infer<typeof tokenPayloadSchema>;\n\nexport const CreateAttachmentCallSchema = z.tuple([\n createAnnouncementAttachmentArgsSchema,\n z.string().min(1), // accessToken\n z.string().min(1), // session\n]);\n\nexport type CreateAttachmentCall = z.infer<typeof CreateAttachmentCallSchema>;\n","import z from \"zod\";\n\nimport { classroomAttachmentSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const classroomAttachmentEntitySchema = classroomAttachmentSchema.extend(\n {\n attachmentId: z.string(),\n createdAt: z.string(),\n teacherLoginHint: z.string().optional(),\n },\n);\n\nexport type ClassroomAttachmentEntity = z.infer<\n typeof classroomAttachmentEntitySchema\n>;\n\nexport const userCredentialsEntitySchema = z.object({\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n});\n\nexport type UserCredentialsEntity = z.infer<typeof userCredentialsEntitySchema>;\n"],"names":["PostSubmissionState","createAnnouncementAttachmentArgsSchema","z","object","courseId","string","itemId","addOnToken","title","lessonSlug","programmeSlug","unitSlug","maxPoints","number","optional","teacherLoginHint","classroomAttachmentSchema","postId","id","teacherViewUri","uri","studentViewUri","studentWorkReviewUri","nullish","codeSchema","googleOAuthUserSchema","accessToken","loginHint","refreshToken","profilePictureUrl","email","tokenPayloadSchema","token","CreateAttachmentCallSchema","tuple","min","classroomAttachmentEntitySchema","extend","attachmentId","createdAt","userCredentialsEntitySchema","UPDATABLE_SUBMISSION_STATES","questionFeedbackSchema","enum","pupilAnswerSchema","union","array","nullable","null","questionResultSchema","mode","grade","pupilAnswer","feedback","isPartiallyCorrect","boolean","correctAnswer","undefined","usedHint","quizProgressSchema","numQuestions","isComplete","questionResults","videoProgressSchema","played","duration","timeElapsed","introProgressSchema","worksheetAvailable","worksheetDownloaded","postSubmissionStateSchema","pupilLessonProgressSchema","postSubmissionState","submissionId","pupilLoginHint","starterQuiz","exitQuiz","video","intro","updatedAt","upsertPupilLessonProgressArgsSchema"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/types/services/GoogleClassroomClientTypes.ts","../../../src/types/services/PupilLessonProgressTypes.ts","../../../src/types/services/GoogleOAuthClientTypes.ts","../../../src/types/services/FirestoreClientTypes.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const createAnnouncementAttachmentArgsSchema = z.object({\n courseId: z.string(),\n itemId: z.string(),\n addOnToken: z.string(),\n title: z.string(),\n lessonSlug: z.string(),\n programmeSlug: z.string(),\n unitSlug: z.string(),\n maxPoints: z.number().optional(),\n teacherLoginHint: z.string().optional(),\n});\n\nexport type CreateAnnouncementAttachmentArgs = z.infer<\n typeof createAnnouncementAttachmentArgsSchema\n>;\n\nexport const classroomAttachmentSchema = z.object({\n courseId: z.string(),\n postId: z.string(),\n id: z.string(),\n title: z.string(),\n teacherViewUri: z.object({\n uri: z.string(),\n }),\n studentViewUri: z.object({\n uri: z.string(),\n }),\n studentWorkReviewUri: z\n .object({\n uri: z.string(),\n })\n .optional(),\n itemId: z.string(),\n maxPoints: z.number().nullish(),\n});\n\nexport type ClassroomAttachment = z.infer<typeof classroomAttachmentSchema>;\n\nexport const createCourseWorkArgsSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n lessonUrl: z.string(),\n maxPoints: z.number().int().positive(),\n});\n\nexport type CreateCourseWorkArgs = z.infer<typeof createCourseWorkArgsSchema>;\n\nexport const courseWorkCreatedResultSchema = z.object({\n courseWorkId: z.string(),\n courseId: z.string(),\n alternateLink: z.string().optional(),\n title: z.string(),\n});\n\nexport type CourseWorkCreatedResult = z.infer<\n typeof courseWorkCreatedResultSchema\n>;\n\nexport const courseListItemSchema = z.object({\n id: z.string(),\n name: z.string(),\n section: z.string().optional(),\n});\n\nexport type CourseListItem = z.infer<typeof courseListItemSchema>;\n","import z from \"zod\";\n\nconst questionFeedbackSchema = z.enum([\"correct\", \"incorrect\"]);\n\nconst pupilAnswerSchema = z.union([\n z.string(),\n z.number(),\n z.array(z.union([z.string(), z.number()]).nullable()),\n z.null(),\n]);\n\nexport const questionResultSchema = z.object({\n mode: z.enum([\"init\", \"incomplete\", \"input\", \"grading\", \"feedback\"]),\n grade: z.number(),\n pupilAnswer: pupilAnswerSchema.optional().nullable(),\n feedback: z\n .union([questionFeedbackSchema, z.array(questionFeedbackSchema)])\n .optional(),\n isPartiallyCorrect: z.boolean().optional(),\n correctAnswer: z\n .union([z.string(), z.array(z.union([z.string(), z.undefined()]))])\n .optional(),\n usedHint: z.boolean().optional(),\n});\n\nexport const quizProgressSchema = z.object({\n grade: z.number().int().min(0),\n numQuestions: z.number().int().positive(),\n isComplete: z.boolean(),\n questionResults: z.array(questionResultSchema).optional(),\n});\n\nexport const videoProgressSchema = z.object({\n played: z.boolean(),\n duration: z.number(),\n timeElapsed: z.number(),\n isComplete: z.boolean(),\n});\n\nexport const introProgressSchema = z.object({\n worksheetAvailable: z.boolean().optional(),\n worksheetDownloaded: z.boolean().optional(),\n isComplete: z.boolean(),\n});\n\nexport enum PostSubmissionState {\n SUBMISSION_STATE_UNSPECIFIED = \"SUBMISSION_STATE_UNSPECIFIED\",\n NEW = \"NEW\",\n CREATED = \"CREATED\",\n RECLAIMED_BY_STUDENT = \"RECLAIMED_BY_STUDENT\",\n TURNED_IN = \"TURNED_IN\",\n RETURNED = \"RETURNED\",\n}\n\nexport const postSubmissionStateSchema = z.enum(PostSubmissionState);\n\n// TurnedIn and Returned states are not updatable by our system, as they indicate that the student has turned in the assignment or the teacher has returned it, so we exclude those from the upsert options. Submission_State_Unspecified is also excluded as it's not a valid state for a submission.\nexport const UPDATABLE_SUBMISSION_STATES: PostSubmissionState[] = [\n PostSubmissionState.NEW,\n PostSubmissionState.CREATED,\n PostSubmissionState.RECLAIMED_BY_STUDENT,\n];\n\nconst lessonProgressInputSchema = z.object({\n starterQuiz: quizProgressSchema.optional(),\n exitQuiz: quizProgressSchema.optional(),\n video: videoProgressSchema.optional(),\n intro: introProgressSchema.optional(),\n});\n\nconst lessonProgressSchema = lessonProgressInputSchema.extend({\n updatedAt: z.string(),\n createdAt: z.string(),\n});\n\nexport const pupilLessonProgressSchema = lessonProgressSchema.extend({\n postSubmissionState: postSubmissionStateSchema,\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n});\n\nexport type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;\n\nexport const upsertPupilLessonProgressArgsSchema =\n lessonProgressInputSchema.extend({\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n });\n\nexport type UpsertPupilLessonProgressArgs = z.infer<\n typeof upsertPupilLessonProgressArgsSchema\n>;\n\nexport const courseWorkPupilProgressSchema = lessonProgressSchema.extend({\n submissionId: z.string(),\n assignmentToken: z.string(),\n courseWorkId: z.string(),\n courseId: z.string(),\n pupilLoginHint: z.string(),\n gradeSubmitted: z.boolean().optional(),\n});\n\nexport type CourseWorkPupilProgress = z.infer<\n typeof courseWorkPupilProgressSchema\n>;\n\nexport const upsertCourseWorkPupilProgressArgsSchema =\n lessonProgressInputSchema.extend({\n submissionId: z.string(),\n assignmentToken: z.string(),\n courseWorkId: z.string(),\n courseId: z.string(),\n pupilLoginHint: z.string(),\n });\n\nexport type UpsertCourseWorkPupilProgressArgs = z.infer<\n typeof upsertCourseWorkPupilProgressArgsSchema\n>;\n\nexport type CreateCourseWorkServiceArgs = {\n courseId: string;\n title: string;\n description?: string;\n lessonSlug: string;\n programmeSlug: string;\n unitSlug: string;\n maxPoints: number;\n teacherLoginHint: string;\n};\n","import z from \"zod\";\n\nimport { createAnnouncementAttachmentArgsSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const codeSchema = z.string();\nexport type Code = z.infer<typeof codeSchema>;\n\nexport const googleOAuthUserSchema = z.object({\n accessToken: z.string(),\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n email: z.string().optional(),\n});\n\nexport type GoogleOAuthUser = z.infer<typeof googleOAuthUserSchema>;\n\nexport const tokenPayloadSchema = z.object({\n token: z.string(),\n});\n\nexport type TokenPayload = z.infer<typeof tokenPayloadSchema>;\n\nexport const CreateAttachmentCallSchema = z.tuple([\n createAnnouncementAttachmentArgsSchema,\n z.string().min(1), // accessToken\n z.string().min(1), // session\n]);\n\nexport type CreateAttachmentCall = z.infer<typeof CreateAttachmentCallSchema>;\n","import z from \"zod\";\n\nimport { classroomAttachmentSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const classroomAttachmentEntitySchema = classroomAttachmentSchema.extend(\n {\n attachmentId: z.string(),\n createdAt: z.string(),\n teacherLoginHint: z.string().optional(),\n },\n);\n\nexport type ClassroomAttachmentEntity = z.infer<\n typeof classroomAttachmentEntitySchema\n>;\n\nexport const userCredentialsEntitySchema = z.object({\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n});\n\nexport type UserCredentialsEntity = z.infer<typeof userCredentialsEntitySchema>;\n\nexport const classroomCourseWorkEntitySchema = z.object({\n assignmentToken: z.string(),\n courseWorkId: z.string(),\n courseId: z.string(),\n teacherLoginHint: z.string(),\n lessonSlug: z.string(),\n programmeSlug: z.string(),\n unitSlug: z.string(),\n maxPoints: z.number().int().positive(),\n createdAt: z.string(),\n});\n\nexport type ClassroomCourseWorkEntity = z.infer<\n typeof classroomCourseWorkEntitySchema\n>;\n"],"names":["PostSubmissionState","createAnnouncementAttachmentArgsSchema","z","object","courseId","string","itemId","addOnToken","title","lessonSlug","programmeSlug","unitSlug","maxPoints","number","optional","teacherLoginHint","classroomAttachmentSchema","postId","id","teacherViewUri","uri","studentViewUri","studentWorkReviewUri","nullish","createCourseWorkArgsSchema","description","lessonUrl","int","positive","courseWorkCreatedResultSchema","courseWorkId","alternateLink","courseListItemSchema","name","section","codeSchema","googleOAuthUserSchema","accessToken","loginHint","refreshToken","profilePictureUrl","email","tokenPayloadSchema","token","CreateAttachmentCallSchema","tuple","min","classroomAttachmentEntitySchema","extend","attachmentId","createdAt","userCredentialsEntitySchema","classroomCourseWorkEntitySchema","assignmentToken","questionFeedbackSchema","enum","pupilAnswerSchema","union","array","nullable","null","questionResultSchema","mode","grade","pupilAnswer","feedback","isPartiallyCorrect","boolean","correctAnswer","undefined","usedHint","quizProgressSchema","numQuestions","isComplete","questionResults","videoProgressSchema","played","duration","timeElapsed","introProgressSchema","worksheetAvailable","worksheetDownloaded","postSubmissionStateSchema","UPDATABLE_SUBMISSION_STATES","NEW","CREATED","RECLAIMED_BY_STUDENT","lessonProgressInputSchema","starterQuiz","exitQuiz","video","intro","lessonProgressSchema","updatedAt","pupilLessonProgressSchema","postSubmissionState","submissionId","pupilLoginHint","upsertPupilLessonProgressArgsSchema","courseWorkPupilProgressSchema","gradeSubmitted","upsertCourseWorkPupilProgressArgsSchema"],"mappings":"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"}
@@ -26,6 +26,18 @@ declare const classroomAttachmentEntitySchema: z.ZodObject<{
26
26
  teacherLoginHint: z.ZodOptional<z.ZodString>;
27
27
  }, z.core.$strip>;
28
28
  type ClassroomAttachmentEntity = z.infer<typeof classroomAttachmentEntitySchema>;
29
+ declare const classroomCourseWorkEntitySchema: z.ZodObject<{
30
+ assignmentToken: z.ZodString;
31
+ courseWorkId: z.ZodString;
32
+ courseId: z.ZodString;
33
+ teacherLoginHint: z.ZodString;
34
+ lessonSlug: z.ZodString;
35
+ programmeSlug: z.ZodString;
36
+ unitSlug: z.ZodString;
37
+ maxPoints: z.ZodNumber;
38
+ createdAt: z.ZodString;
39
+ }, z.core.$strip>;
40
+ type ClassroomCourseWorkEntity = z.infer<typeof classroomCourseWorkEntitySchema>;
29
41
 
30
42
  declare const createAnnouncementAttachmentArgsSchema: z.ZodObject<{
31
43
  courseId: z.ZodString;
@@ -39,6 +51,19 @@ declare const createAnnouncementAttachmentArgsSchema: z.ZodObject<{
39
51
  teacherLoginHint: z.ZodOptional<z.ZodString>;
40
52
  }, z.core.$strip>;
41
53
  type CreateAnnouncementAttachmentArgs = z.infer<typeof createAnnouncementAttachmentArgsSchema>;
54
+ declare const courseWorkCreatedResultSchema: z.ZodObject<{
55
+ courseWorkId: z.ZodString;
56
+ courseId: z.ZodString;
57
+ alternateLink: z.ZodOptional<z.ZodString>;
58
+ title: z.ZodString;
59
+ }, z.core.$strip>;
60
+ type CourseWorkCreatedResult = z.infer<typeof courseWorkCreatedResultSchema>;
61
+ declare const courseListItemSchema: z.ZodObject<{
62
+ id: z.ZodString;
63
+ name: z.ZodString;
64
+ section: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$strip>;
66
+ type CourseListItem = z.infer<typeof courseListItemSchema>;
42
67
 
43
68
  declare enum PostSubmissionState {
44
69
  SUBMISSION_STATE_UNSPECIFIED = "SUBMISSION_STATE_UNSPECIFIED",
@@ -49,12 +74,80 @@ declare enum PostSubmissionState {
49
74
  RETURNED = "RETURNED"
50
75
  }
51
76
  declare const pupilLessonProgressSchema: z.ZodObject<{
77
+ starterQuiz: z.ZodOptional<z.ZodObject<{
78
+ grade: z.ZodNumber;
79
+ numQuestions: z.ZodNumber;
80
+ isComplete: z.ZodBoolean;
81
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
82
+ mode: z.ZodEnum<{
83
+ init: "init";
84
+ incomplete: "incomplete";
85
+ input: "input";
86
+ grading: "grading";
87
+ feedback: "feedback";
88
+ }>;
89
+ grade: z.ZodNumber;
90
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
91
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
92
+ correct: "correct";
93
+ incorrect: "incorrect";
94
+ }>, z.ZodArray<z.ZodEnum<{
95
+ correct: "correct";
96
+ incorrect: "incorrect";
97
+ }>>]>>;
98
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
99
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
100
+ usedHint: z.ZodOptional<z.ZodBoolean>;
101
+ }, z.core.$strip>>>;
102
+ }, z.core.$strip>>;
103
+ exitQuiz: z.ZodOptional<z.ZodObject<{
104
+ grade: z.ZodNumber;
105
+ numQuestions: z.ZodNumber;
106
+ isComplete: z.ZodBoolean;
107
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
108
+ mode: z.ZodEnum<{
109
+ init: "init";
110
+ incomplete: "incomplete";
111
+ input: "input";
112
+ grading: "grading";
113
+ feedback: "feedback";
114
+ }>;
115
+ grade: z.ZodNumber;
116
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
117
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
118
+ correct: "correct";
119
+ incorrect: "incorrect";
120
+ }>, z.ZodArray<z.ZodEnum<{
121
+ correct: "correct";
122
+ incorrect: "incorrect";
123
+ }>>]>>;
124
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
125
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
126
+ usedHint: z.ZodOptional<z.ZodBoolean>;
127
+ }, z.core.$strip>>>;
128
+ }, z.core.$strip>>;
129
+ video: z.ZodOptional<z.ZodObject<{
130
+ played: z.ZodBoolean;
131
+ duration: z.ZodNumber;
132
+ timeElapsed: z.ZodNumber;
133
+ isComplete: z.ZodBoolean;
134
+ }, z.core.$strip>>;
135
+ intro: z.ZodOptional<z.ZodObject<{
136
+ worksheetAvailable: z.ZodOptional<z.ZodBoolean>;
137
+ worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
138
+ isComplete: z.ZodBoolean;
139
+ }, z.core.$strip>>;
140
+ updatedAt: z.ZodString;
141
+ createdAt: z.ZodString;
52
142
  postSubmissionState: z.ZodEnum<typeof PostSubmissionState>;
53
143
  submissionId: z.ZodString;
54
144
  attachmentId: z.ZodString;
55
145
  courseId: z.ZodString;
56
146
  itemId: z.ZodString;
57
147
  pupilLoginHint: z.ZodString;
148
+ }, z.core.$strip>;
149
+ type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;
150
+ declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
58
151
  starterQuiz: z.ZodOptional<z.ZodObject<{
59
152
  grade: z.ZodNumber;
60
153
  numQuestions: z.ZodNumber;
@@ -118,16 +211,14 @@ declare const pupilLessonProgressSchema: z.ZodObject<{
118
211
  worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
119
212
  isComplete: z.ZodBoolean;
120
213
  }, z.core.$strip>>;
121
- updatedAt: z.ZodString;
122
- createdAt: z.ZodString;
123
- }, z.core.$strip>;
124
- type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;
125
- declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
126
214
  submissionId: z.ZodString;
127
215
  attachmentId: z.ZodString;
128
216
  courseId: z.ZodString;
129
217
  itemId: z.ZodString;
130
218
  pupilLoginHint: z.ZodString;
219
+ }, z.core.$strip>;
220
+ type UpsertPupilLessonProgressArgs = z.infer<typeof upsertPupilLessonProgressArgsSchema>;
221
+ declare const courseWorkPupilProgressSchema: z.ZodObject<{
131
222
  starterQuiz: z.ZodOptional<z.ZodObject<{
132
223
  grade: z.ZodNumber;
133
224
  numQuestions: z.ZodNumber;
@@ -191,8 +282,97 @@ declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
191
282
  worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
192
283
  isComplete: z.ZodBoolean;
193
284
  }, z.core.$strip>>;
285
+ updatedAt: z.ZodString;
286
+ createdAt: z.ZodString;
287
+ submissionId: z.ZodString;
288
+ assignmentToken: z.ZodString;
289
+ courseWorkId: z.ZodString;
290
+ courseId: z.ZodString;
291
+ pupilLoginHint: z.ZodString;
292
+ gradeSubmitted: z.ZodOptional<z.ZodBoolean>;
194
293
  }, z.core.$strip>;
195
- type UpsertPupilLessonProgressArgs = z.infer<typeof upsertPupilLessonProgressArgsSchema>;
294
+ type CourseWorkPupilProgress = z.infer<typeof courseWorkPupilProgressSchema>;
295
+ declare const upsertCourseWorkPupilProgressArgsSchema: z.ZodObject<{
296
+ starterQuiz: z.ZodOptional<z.ZodObject<{
297
+ grade: z.ZodNumber;
298
+ numQuestions: z.ZodNumber;
299
+ isComplete: z.ZodBoolean;
300
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
301
+ mode: z.ZodEnum<{
302
+ init: "init";
303
+ incomplete: "incomplete";
304
+ input: "input";
305
+ grading: "grading";
306
+ feedback: "feedback";
307
+ }>;
308
+ grade: z.ZodNumber;
309
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
310
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
311
+ correct: "correct";
312
+ incorrect: "incorrect";
313
+ }>, z.ZodArray<z.ZodEnum<{
314
+ correct: "correct";
315
+ incorrect: "incorrect";
316
+ }>>]>>;
317
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
318
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
319
+ usedHint: z.ZodOptional<z.ZodBoolean>;
320
+ }, z.core.$strip>>>;
321
+ }, z.core.$strip>>;
322
+ exitQuiz: z.ZodOptional<z.ZodObject<{
323
+ grade: z.ZodNumber;
324
+ numQuestions: z.ZodNumber;
325
+ isComplete: z.ZodBoolean;
326
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
327
+ mode: z.ZodEnum<{
328
+ init: "init";
329
+ incomplete: "incomplete";
330
+ input: "input";
331
+ grading: "grading";
332
+ feedback: "feedback";
333
+ }>;
334
+ grade: z.ZodNumber;
335
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
336
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
337
+ correct: "correct";
338
+ incorrect: "incorrect";
339
+ }>, z.ZodArray<z.ZodEnum<{
340
+ correct: "correct";
341
+ incorrect: "incorrect";
342
+ }>>]>>;
343
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
344
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
345
+ usedHint: z.ZodOptional<z.ZodBoolean>;
346
+ }, z.core.$strip>>>;
347
+ }, z.core.$strip>>;
348
+ video: z.ZodOptional<z.ZodObject<{
349
+ played: z.ZodBoolean;
350
+ duration: z.ZodNumber;
351
+ timeElapsed: z.ZodNumber;
352
+ isComplete: z.ZodBoolean;
353
+ }, z.core.$strip>>;
354
+ intro: z.ZodOptional<z.ZodObject<{
355
+ worksheetAvailable: z.ZodOptional<z.ZodBoolean>;
356
+ worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
357
+ isComplete: z.ZodBoolean;
358
+ }, z.core.$strip>>;
359
+ submissionId: z.ZodString;
360
+ assignmentToken: z.ZodString;
361
+ courseWorkId: z.ZodString;
362
+ courseId: z.ZodString;
363
+ pupilLoginHint: z.ZodString;
364
+ }, z.core.$strip>;
365
+ type UpsertCourseWorkPupilProgressArgs = z.infer<typeof upsertCourseWorkPupilProgressArgsSchema>;
366
+ type CreateCourseWorkServiceArgs = {
367
+ courseId: string;
368
+ title: string;
369
+ description?: string;
370
+ lessonSlug: string;
371
+ programmeSlug: string;
372
+ unitSlug: string;
373
+ maxPoints: number;
374
+ teacherLoginHint: string;
375
+ };
196
376
 
197
377
  type FetchPupilResponseArgs = {
198
378
  courseId: string;
@@ -217,8 +397,11 @@ declare class OakGoogleClassroomAddOn {
217
397
  private sessionService;
218
398
  private classroomAttachmentService;
219
399
  private pupilProgressService;
400
+ private courseWorkService;
401
+ private courseWorkProgressService;
220
402
  private encryptionService;
221
403
  private firestoreClient;
404
+ private baseUrl;
222
405
  constructor(encryptionSecret: string, firestore: Firestore, googleOAuthClientId: string, googleOAuthClientSecret: string, googleOAuthCallbackApiRoute: string, sessionSecret: string, baseUrl: string);
223
406
  /**
224
407
  * Generates the Google OAuth sign-in URL for user authentication.
@@ -300,6 +483,69 @@ declare class OakGoogleClassroomAddOn {
300
483
  * @param submissionId - The Google Classroom submission ID
301
484
  */
302
485
  getPupilLessonProgress(submissionId: string, attachmentId: string, itemId: string): Promise<PupilLessonProgress | null>;
486
+ /**
487
+ * Resolves a teacher OAuth client by looking up the coursework's teacherLoginHint
488
+ * from Firestore (keyed by assignmentToken) and fetching stored credentials.
489
+ */
490
+ private resolveTeacherOAuthClientForCourseWork;
491
+ private getTeacherRefreshToken;
492
+ /**
493
+ * Lists the active Google Classroom courses for the authenticated teacher.
494
+ * @param accessToken - The teacher's current OAuth access token
495
+ * @param session - The teacher's encrypted session string
496
+ */
497
+ listCourses(accessToken: string, session: string): Promise<CourseListItem[]>;
498
+ /**
499
+ * Creates a CourseWork assignment with Link material and stores the
500
+ * assignmentToken → courseWork mapping in Firestore.
501
+ * @param args - Lesson and course details
502
+ * @param accessToken - The teacher's current OAuth access token
503
+ * @param session - The teacher's encrypted session string
504
+ */
505
+ createCourseWork(args: Omit<CreateCourseWorkServiceArgs, "teacherLoginHint">, accessToken: string, session: string): Promise<CourseWorkCreatedResult & {
506
+ assignmentToken: string;
507
+ }>;
508
+ /**
509
+ * Retrieves the pupil's submissionId for a given coursework item.
510
+ * Must be called with the pupil's session (userId=me lookup).
511
+ * @param courseId - The Google Classroom course ID
512
+ * @param courseWorkId - The courseWork item ID
513
+ * @param accessToken - The pupil's current OAuth access token
514
+ * @param session - The pupil's encrypted session string
515
+ */
516
+ getStudentSubmissionId(courseId: string, courseWorkId: string, accessToken: string, session: string): Promise<string>;
517
+ /**
518
+ * Upserts pupil progress for a link-based CourseWork assignment and syncs
519
+ * the grade to Google Classroom when the exit quiz is newly completed.
520
+ * @param args - The pupil progress data
521
+ * @param accessToken - The pupil's current OAuth access token
522
+ * @param session - The pupil's encrypted session string
523
+ */
524
+ upsertCourseWorkPupilProgress(args: UpsertCourseWorkPupilProgressArgs, accessToken: string, session: string): Promise<CourseWorkPupilProgress>;
525
+ /**
526
+ * Retrieves the stored CourseWork entity for a given assignmentToken.
527
+ * Does not require Google Classroom authentication — Firestore-only lookup.
528
+ * Returns null if the token is not found (caller should treat as 404).
529
+ * @param assignmentToken - The opaque token embedded in the lesson URL
530
+ */
531
+ getClassroomCourseWork(assignmentToken: string): Promise<ClassroomCourseWorkEntity | null>;
532
+ /**
533
+ * Retrieves pupil progress for a link-based CourseWork assignment.
534
+ * Does not require Google Classroom authentication.
535
+ * @param submissionId - The Google Classroom submission ID
536
+ */
537
+ getCourseWorkPupilProgress(submissionId: string, assignmentToken: string): Promise<CourseWorkPupilProgress | null>;
538
+ /**
539
+ * Turns in a student's submission using the student's own OAuth credentials.
540
+ * Must be called after grade sync (upsertCourseWorkPupilProgress) to ensure
541
+ * the grade is patched before the submission state changes to TURNED_IN.
542
+ * @param courseId - The Google Classroom course ID
543
+ * @param courseWorkId - The courseWork item ID
544
+ * @param submissionId - The student's submission ID
545
+ * @param accessToken - The student's current OAuth access token
546
+ * @param session - The student's encrypted session string
547
+ */
548
+ turnInCourseWorkSubmission(courseId: string, courseWorkId: string, submissionId: string, assignmentToken: string, accessToken: string, session: string): Promise<void>;
303
549
  getPostSubmissionState(args: FetchPupilResponseArgs, accessToken: string, session: string): Promise<string>;
304
550
  }
305
551
 
package/dist/types.d.ts CHANGED
@@ -54,6 +54,18 @@ declare const userCredentialsEntitySchema: z.ZodObject<{
54
54
  profilePictureUrl: z.ZodOptional<z.ZodString>;
55
55
  }, z.core.$strip>;
56
56
  type UserCredentialsEntity = z.infer<typeof userCredentialsEntitySchema>;
57
+ declare const classroomCourseWorkEntitySchema: z.ZodObject<{
58
+ assignmentToken: z.ZodString;
59
+ courseWorkId: z.ZodString;
60
+ courseId: z.ZodString;
61
+ teacherLoginHint: z.ZodString;
62
+ lessonSlug: z.ZodString;
63
+ programmeSlug: z.ZodString;
64
+ unitSlug: z.ZodString;
65
+ maxPoints: z.ZodNumber;
66
+ createdAt: z.ZodString;
67
+ }, z.core.$strip>;
68
+ type ClassroomCourseWorkEntity = z.infer<typeof classroomCourseWorkEntitySchema>;
57
69
 
58
70
  declare const createAnnouncementAttachmentArgsSchema: z.ZodObject<{
59
71
  courseId: z.ZodString;
@@ -85,9 +97,27 @@ declare const classroomAttachmentSchema: z.ZodObject<{
85
97
  maxPoints: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
86
98
  }, z.core.$strip>;
87
99
  type ClassroomAttachment = z.infer<typeof classroomAttachmentSchema>;
100
+ declare const createCourseWorkArgsSchema: z.ZodObject<{
101
+ title: z.ZodString;
102
+ description: z.ZodOptional<z.ZodString>;
103
+ lessonUrl: z.ZodString;
104
+ maxPoints: z.ZodNumber;
105
+ }, z.core.$strip>;
106
+ type CreateCourseWorkArgs = z.infer<typeof createCourseWorkArgsSchema>;
107
+ declare const courseWorkCreatedResultSchema: z.ZodObject<{
108
+ courseWorkId: z.ZodString;
109
+ courseId: z.ZodString;
110
+ alternateLink: z.ZodOptional<z.ZodString>;
111
+ title: z.ZodString;
112
+ }, z.core.$strip>;
113
+ type CourseWorkCreatedResult = z.infer<typeof courseWorkCreatedResultSchema>;
114
+ declare const courseListItemSchema: z.ZodObject<{
115
+ id: z.ZodString;
116
+ name: z.ZodString;
117
+ section: z.ZodOptional<z.ZodString>;
118
+ }, z.core.$strip>;
119
+ type CourseListItem = z.infer<typeof courseListItemSchema>;
88
120
 
89
- declare const UPDATABLE_SUBMISSION_STATES: readonly ["NEW", "CREATED", "RECLAIMED_BY_STUDENT"];
90
- type UpdatableSubmissionState = (typeof UPDATABLE_SUBMISSION_STATES)[number];
91
121
  declare const questionResultSchema: z.ZodObject<{
92
122
  mode: z.ZodEnum<{
93
123
  init: "init";
@@ -155,13 +185,82 @@ declare enum PostSubmissionState {
155
185
  RETURNED = "RETURNED"
156
186
  }
157
187
  declare const postSubmissionStateSchema: z.ZodEnum<typeof PostSubmissionState>;
188
+ declare const UPDATABLE_SUBMISSION_STATES: PostSubmissionState[];
158
189
  declare const pupilLessonProgressSchema: z.ZodObject<{
190
+ starterQuiz: z.ZodOptional<z.ZodObject<{
191
+ grade: z.ZodNumber;
192
+ numQuestions: z.ZodNumber;
193
+ isComplete: z.ZodBoolean;
194
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
195
+ mode: z.ZodEnum<{
196
+ init: "init";
197
+ incomplete: "incomplete";
198
+ input: "input";
199
+ grading: "grading";
200
+ feedback: "feedback";
201
+ }>;
202
+ grade: z.ZodNumber;
203
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
204
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
205
+ correct: "correct";
206
+ incorrect: "incorrect";
207
+ }>, z.ZodArray<z.ZodEnum<{
208
+ correct: "correct";
209
+ incorrect: "incorrect";
210
+ }>>]>>;
211
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
212
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
213
+ usedHint: z.ZodOptional<z.ZodBoolean>;
214
+ }, z.core.$strip>>>;
215
+ }, z.core.$strip>>;
216
+ exitQuiz: z.ZodOptional<z.ZodObject<{
217
+ grade: z.ZodNumber;
218
+ numQuestions: z.ZodNumber;
219
+ isComplete: z.ZodBoolean;
220
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
221
+ mode: z.ZodEnum<{
222
+ init: "init";
223
+ incomplete: "incomplete";
224
+ input: "input";
225
+ grading: "grading";
226
+ feedback: "feedback";
227
+ }>;
228
+ grade: z.ZodNumber;
229
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
230
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
231
+ correct: "correct";
232
+ incorrect: "incorrect";
233
+ }>, z.ZodArray<z.ZodEnum<{
234
+ correct: "correct";
235
+ incorrect: "incorrect";
236
+ }>>]>>;
237
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
238
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
239
+ usedHint: z.ZodOptional<z.ZodBoolean>;
240
+ }, z.core.$strip>>>;
241
+ }, z.core.$strip>>;
242
+ video: z.ZodOptional<z.ZodObject<{
243
+ played: z.ZodBoolean;
244
+ duration: z.ZodNumber;
245
+ timeElapsed: z.ZodNumber;
246
+ isComplete: z.ZodBoolean;
247
+ }, z.core.$strip>>;
248
+ intro: z.ZodOptional<z.ZodObject<{
249
+ worksheetAvailable: z.ZodOptional<z.ZodBoolean>;
250
+ worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
251
+ isComplete: z.ZodBoolean;
252
+ }, z.core.$strip>>;
253
+ updatedAt: z.ZodString;
254
+ createdAt: z.ZodString;
159
255
  postSubmissionState: z.ZodEnum<typeof PostSubmissionState>;
160
256
  submissionId: z.ZodString;
161
257
  attachmentId: z.ZodString;
162
258
  courseId: z.ZodString;
163
259
  itemId: z.ZodString;
164
260
  pupilLoginHint: z.ZodString;
261
+ }, z.core.$strip>;
262
+ type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;
263
+ declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
165
264
  starterQuiz: z.ZodOptional<z.ZodObject<{
166
265
  grade: z.ZodNumber;
167
266
  numQuestions: z.ZodNumber;
@@ -225,16 +324,14 @@ declare const pupilLessonProgressSchema: z.ZodObject<{
225
324
  worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
226
325
  isComplete: z.ZodBoolean;
227
326
  }, z.core.$strip>>;
228
- updatedAt: z.ZodString;
229
- createdAt: z.ZodString;
230
- }, z.core.$strip>;
231
- type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;
232
- declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
233
327
  submissionId: z.ZodString;
234
328
  attachmentId: z.ZodString;
235
329
  courseId: z.ZodString;
236
330
  itemId: z.ZodString;
237
331
  pupilLoginHint: z.ZodString;
332
+ }, z.core.$strip>;
333
+ type UpsertPupilLessonProgressArgs = z.infer<typeof upsertPupilLessonProgressArgsSchema>;
334
+ declare const courseWorkPupilProgressSchema: z.ZodObject<{
238
335
  starterQuiz: z.ZodOptional<z.ZodObject<{
239
336
  grade: z.ZodNumber;
240
337
  numQuestions: z.ZodNumber;
@@ -298,8 +395,97 @@ declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
298
395
  worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
299
396
  isComplete: z.ZodBoolean;
300
397
  }, z.core.$strip>>;
398
+ updatedAt: z.ZodString;
399
+ createdAt: z.ZodString;
400
+ submissionId: z.ZodString;
401
+ assignmentToken: z.ZodString;
402
+ courseWorkId: z.ZodString;
403
+ courseId: z.ZodString;
404
+ pupilLoginHint: z.ZodString;
405
+ gradeSubmitted: z.ZodOptional<z.ZodBoolean>;
301
406
  }, z.core.$strip>;
302
- type UpsertPupilLessonProgressArgs = z.infer<typeof upsertPupilLessonProgressArgsSchema>;
407
+ type CourseWorkPupilProgress = z.infer<typeof courseWorkPupilProgressSchema>;
408
+ declare const upsertCourseWorkPupilProgressArgsSchema: z.ZodObject<{
409
+ starterQuiz: z.ZodOptional<z.ZodObject<{
410
+ grade: z.ZodNumber;
411
+ numQuestions: z.ZodNumber;
412
+ isComplete: z.ZodBoolean;
413
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
414
+ mode: z.ZodEnum<{
415
+ init: "init";
416
+ incomplete: "incomplete";
417
+ input: "input";
418
+ grading: "grading";
419
+ feedback: "feedback";
420
+ }>;
421
+ grade: z.ZodNumber;
422
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
423
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
424
+ correct: "correct";
425
+ incorrect: "incorrect";
426
+ }>, z.ZodArray<z.ZodEnum<{
427
+ correct: "correct";
428
+ incorrect: "incorrect";
429
+ }>>]>>;
430
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
431
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
432
+ usedHint: z.ZodOptional<z.ZodBoolean>;
433
+ }, z.core.$strip>>>;
434
+ }, z.core.$strip>>;
435
+ exitQuiz: z.ZodOptional<z.ZodObject<{
436
+ grade: z.ZodNumber;
437
+ numQuestions: z.ZodNumber;
438
+ isComplete: z.ZodBoolean;
439
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
440
+ mode: z.ZodEnum<{
441
+ init: "init";
442
+ incomplete: "incomplete";
443
+ input: "input";
444
+ grading: "grading";
445
+ feedback: "feedback";
446
+ }>;
447
+ grade: z.ZodNumber;
448
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
449
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
450
+ correct: "correct";
451
+ incorrect: "incorrect";
452
+ }>, z.ZodArray<z.ZodEnum<{
453
+ correct: "correct";
454
+ incorrect: "incorrect";
455
+ }>>]>>;
456
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
457
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
458
+ usedHint: z.ZodOptional<z.ZodBoolean>;
459
+ }, z.core.$strip>>>;
460
+ }, z.core.$strip>>;
461
+ video: z.ZodOptional<z.ZodObject<{
462
+ played: z.ZodBoolean;
463
+ duration: z.ZodNumber;
464
+ timeElapsed: z.ZodNumber;
465
+ isComplete: z.ZodBoolean;
466
+ }, z.core.$strip>>;
467
+ intro: z.ZodOptional<z.ZodObject<{
468
+ worksheetAvailable: z.ZodOptional<z.ZodBoolean>;
469
+ worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
470
+ isComplete: z.ZodBoolean;
471
+ }, z.core.$strip>>;
472
+ submissionId: z.ZodString;
473
+ assignmentToken: z.ZodString;
474
+ courseWorkId: z.ZodString;
475
+ courseId: z.ZodString;
476
+ pupilLoginHint: z.ZodString;
477
+ }, z.core.$strip>;
478
+ type UpsertCourseWorkPupilProgressArgs = z.infer<typeof upsertCourseWorkPupilProgressArgsSchema>;
479
+ type CreateCourseWorkServiceArgs = {
480
+ courseId: string;
481
+ title: string;
482
+ description?: string;
483
+ lessonSlug: string;
484
+ programmeSlug: string;
485
+ unitSlug: string;
486
+ maxPoints: number;
487
+ teacherLoginHint: string;
488
+ };
303
489
 
304
- export { CreateAttachmentCallSchema, PostSubmissionState, UPDATABLE_SUBMISSION_STATES, classroomAttachmentEntitySchema, classroomAttachmentSchema, codeSchema, createAnnouncementAttachmentArgsSchema, googleOAuthUserSchema, introProgressSchema, postSubmissionStateSchema, pupilLessonProgressSchema, questionResultSchema, quizProgressSchema, tokenPayloadSchema, upsertPupilLessonProgressArgsSchema, userCredentialsEntitySchema, videoProgressSchema };
305
- export type { ClassroomAttachment, ClassroomAttachmentEntity, Code, CreateAnnouncementAttachmentArgs, CreateAttachmentCall, GoogleOAuthUser, PupilLessonProgress, TokenPayload, UpdatableSubmissionState, UpsertPupilLessonProgressArgs, UserCredentialsEntity };
490
+ export { CreateAttachmentCallSchema, PostSubmissionState, UPDATABLE_SUBMISSION_STATES, classroomAttachmentEntitySchema, classroomAttachmentSchema, classroomCourseWorkEntitySchema, codeSchema, courseListItemSchema, courseWorkCreatedResultSchema, courseWorkPupilProgressSchema, createAnnouncementAttachmentArgsSchema, createCourseWorkArgsSchema, googleOAuthUserSchema, introProgressSchema, postSubmissionStateSchema, pupilLessonProgressSchema, questionResultSchema, quizProgressSchema, tokenPayloadSchema, upsertCourseWorkPupilProgressArgsSchema, upsertPupilLessonProgressArgsSchema, userCredentialsEntitySchema, videoProgressSchema };
491
+ export type { ClassroomAttachment, ClassroomAttachmentEntity, ClassroomCourseWorkEntity, Code, CourseListItem, CourseWorkCreatedResult, CourseWorkPupilProgress, CreateAnnouncementAttachmentArgs, CreateAttachmentCall, CreateCourseWorkArgs, CreateCourseWorkServiceArgs, GoogleOAuthUser, PupilLessonProgress, TokenPayload, UpsertCourseWorkPupilProgressArgs, UpsertPupilLessonProgressArgs, UserCredentialsEntity };