import type { DoctorReport, ExtractContext, ExtractContextRequest, ExtractProgressEvent, ExtractPublicationInput, ExtractPublicationResult, GradeSettlementInput, GradingContext, GradingResult, HealthResult, IngestContext, IngestContextRequest, LintContext, PageRecord, PublicQuizRecord, PublicSourceRecord, PublicWorkflowRecord, QuizAnswerInput, QuizContext, QuizDetailRecord, QuizEvidenceRecord, QuizEvidenceRequest, QuizPublicationInput, QuizResult, QuizSubmissionResult, SettingsRecord, SettingsUpdateRequest, SourceRemovalResult, SourceRequest, WikiChangeInput, WikiChangeResult, WikiDriftResolutionRequest, WikiIssueCreateRequest, WikiIssueRecord, WikiIssueUpdateRequest, WikiPageResult, WorkflowListResult, WorkflowRecord } from "../contracts.js"; import { type ScholarDatabase } from "../database.js"; import { type GitCheckpointResult, type GitPushResult } from "../external/git.js"; import { QuizService } from "../quiz.js"; import { type Clock, SchedulerService } from "../scheduler.js"; import { type SourceStageRequest as MechanicsSourceStageRequest, type SourceAdapters, SourceService } from "../sources/source-service.js"; import { type VaultPaths } from "../vault.js"; import { type WikiAdapters, WikiService } from "../wiki.js"; import { type WorkflowFinishOptions, type WorkflowKind, type WorkflowUpdateInput } from "../workflows.js"; export interface ApplicationMutationContext { readonly origin?: "browser" | "pi" | "cli" | "internal"; readonly developerToolsEnabled?: boolean; } export interface ApplicationAdapters { readonly sources?: SourceAdapters; readonly wiki?: WikiAdapters; } export interface ApplicationOptions { readonly paths: VaultPaths | string; readonly db?: ScholarDatabase; readonly sourceService?: SourceService; readonly wikiService?: WikiService; readonly schedulerService?: SchedulerService; readonly quizService?: QuizService; readonly adapters?: ApplicationAdapters; readonly doctor?: (explicitPath?: string) => DoctorReport; readonly commit?: (paths: VaultPaths, subject: string, excludedPaths?: readonly string[]) => GitCheckpointResult; readonly push?: (paths: VaultPaths) => GitPushResult; readonly version?: string; readonly clock?: Clock; } export interface ApplicationStatus extends HealthResult { readonly settings: SettingsRecord; readonly workflows: readonly PublicWorkflowRecord[]; } export type ExtractProgressObserver = (event: ExtractProgressEvent) => void | Promise; export interface SourceStageResult { readonly source: PublicSourceRecord; } export interface WikiSearchResult { readonly pages: readonly PageRecord[]; } export interface WikiIssueListResult { readonly issues: readonly WikiIssueRecord[]; } export interface WikiNoteInput { readonly path: string; readonly title?: string; readonly description?: string; readonly body: string; readonly pageId?: string; readonly quizWorthiness?: "eligible" | "skip" | "unknown"; } export interface WikiNoteUpdateInput { readonly body?: string; readonly title?: string; readonly description?: string; readonly quizWorthiness?: "eligible" | "skip" | "unknown"; readonly expectedDigest?: string; readonly path?: string; } export declare class ScholarApplication { readonly paths: VaultPaths; private readonly db; private readonly sources; private readonly wiki; private readonly scheduler; private readonly quiz; private readonly clock; private readonly workflows; private readonly worker; readonly version: string; private readonly ownsDatabase; private readonly doctorFn; private readonly commitFn; private readonly pushFn; private readonly extractionClaims; private readonly completedExtractions; constructor(input: ApplicationOptions); private durableDirect; private readSetting; private mutate; private assertPageMutationAllowed; private assertIngestCitation; private currentLocalDate; private pendingSourceId; private pendingSource; private sourceList; private clearExtractionClaims; getExtractContext(input?: ExtractContextRequest, observer?: ExtractProgressObserver): Promise; publishExtraction(input: ExtractPublicationInput): Promise; listSources(): Promise<{ readonly sources: readonly PublicSourceRecord[]; }>; stageSource(request: SourceRequest | MechanicsSourceStageRequest, context?: ApplicationMutationContext): Promise; removalPreview(sourceId: string): Promise<{ readonly source: PublicSourceRecord; readonly dependentPageIds: readonly string[]; readonly confirmationId: string; }>; removeSource(sourceId: string, confirmationId: string, context?: ApplicationMutationContext): Promise; private quizDetail; listWiki(): Promise<{ readonly pages: readonly PageRecord[]; }>; private wikiResult; getWiki(pageIdOrPath: string): Promise; getWikiAttachment(pageId: string, sourceId: string, attachmentDigest: string): Promise; searchWiki(query: string, options?: { readonly mode?: "semantic" | "lexical" | "exact"; readonly limit?: number; }): Promise; private exactSearch; listIssues(): Promise; reportIssue(input: WikiIssueCreateRequest, context?: ApplicationMutationContext): Promise; patchIssue(issueId: string, input: WikiIssueUpdateRequest, context?: ApplicationMutationContext): Promise; resolveDrift(pageId: string, input: WikiDriftResolutionRequest, context?: ApplicationMutationContext): Promise; createNote(input: WikiNoteInput, context?: ApplicationMutationContext): Promise; updateNote(pageId: string, input: WikiNoteUpdateInput, context?: ApplicationMutationContext): Promise; listQuizzes(): Promise<{ readonly quizzes: readonly PublicQuizRecord[]; }>; private quizRecommendations; getQuiz(date: string): Promise; saveAnswers(date: string, input: { readonly expectedRevision: number; readonly answers: readonly QuizAnswerInput[]; }, context?: ApplicationMutationContext): Promise<{ readonly revision: number; readonly savedAt: string; readonly answers: readonly QuizAnswerInput[]; }>; sealSubmission(date: string, input: { readonly expectedRevision: number; }, context?: ApplicationMutationContext): Promise; recoverAbandonedWorkflows(): Promise<{ readonly workflows: readonly WorkflowRecord[]; }>; beginWorkflow(kind: WorkflowKind, idempotencyKey?: string): Promise<{ readonly workflow: WorkflowRecord; }>; updateWorkflow(requestId: string, input?: WorkflowUpdateInput): Promise<{ readonly workflow: WorkflowRecord; }>; finishWorkflow(requestId: string, status: "succeeded" | "failed", options?: WorkflowFinishOptions): Promise<{ readonly workflow: WorkflowRecord; }>; listWorkflows(): Promise; getWorkflow(requestId: string): Promise; getSettings(): Promise<{ readonly settings: SettingsRecord; }>; updateSettings(input: SettingsUpdateRequest, context?: ApplicationMutationContext): Promise<{ readonly settings: SettingsRecord; }>; status(): Promise; health(): Promise; sync(): Promise; close(): Promise; private wikiMaintenanceContext; getIngestContext(input?: IngestContextRequest): Promise; getLintContext(input?: { readonly description?: string; }): Promise; private liveDriftDigests; private catalogDriftExclusions; private assertDriftRepairFields; private filterLiveDriftPages; private assertWikiChangeCoverage; private wikiChangePreflight; private captureWikiChangeRollback; private restoreWikiChangeRollback; private wikiChangeChecks; private applyWikiChangeDecoded; applyWikiChange(input: WikiChangeInput): Promise; applyIngestChange(input: WikiChangeInput, workflowRequestId?: string): Promise; private quizEvidence; private quizCandidates; getQuizContext(input?: { readonly date?: string; }): Promise; getQuizEvidence(input: QuizEvidenceRequest): Promise; private validateQuizEvidence; publishQuiz(input: QuizPublicationInput): Promise; private gradingContextFor; private claimGradingWorkflow; private failGradingWorkflow; getGradingContext(input?: { readonly date?: string; }, ownerToken?: string): Promise; settleGrade(input: GradeSettlementInput, ownerToken?: string): Promise; } export declare function createApplication(input: ApplicationOptions | VaultPaths | string): ScholarApplication; //# sourceMappingURL=application.d.ts.map