// This file has been generated by TauRPC. Do not edit this file manually. import { createTauRPCProxy as createProxy, type InferCommandOutput, type TauRpcResult, type UnlistenFn } from 'taurpc' /** Identifier for an exam. */ export type ExamId = number; /** AI-generated (GPT-5.3-codex). */ export type InitSolverError = /** AI-generated (GPT-5.3-codex). */ ({ LockPoison: string }) & { Recv?: never; Solver?: never } | /** AI-generated (GPT-5.3-codex). */ ({ Solver: string }) & { LockPoison?: never; Recv?: never } | /** AI-generated (GPT-5.3-codex). */ ({ Recv: string }) & { LockPoison?: never; Solver?: never }; /** AI-generated (GPT-5.3-codex). */ export type LockedTimetableSlot = { session_id: SessionId, timeslot_id: TimeslotId, }; export type NewTimetableUpdate = /** * Key: session ID * Value: timeslot ID * * (Specta doesn't like non-number/string keys) */ { Timetable: { [key in number]: TimeslotId } } | "Done"; export type Result = { ok: T, err: E, }; /** Identifier for a session. */ export type SessionId = number; /** AI-generated (GPT-5.3-codex). */ export type SolveSessionControlError = /** AI-generated (GPT-5.3-codex). */ ({ LockPoison: string }) & { InvalidSessionId?: never; Send?: never } | /** AI-generated (GPT-5.3-codex). */ ({ Send: string }) & { InvalidSessionId?: never; LockPoison?: never } | /** AI-generated (GPT-5.3-codex). */ ({ InvalidSessionId: number }) & { LockPoison?: never; Send?: never }; /** AI-generated (GPT-5.3-codex). */ export type SolveSessionStart = { session_id: number, }; export type SqlBatchQuery = { sql: string, params: SqlParam[], method: string, }; /** AI-generated (GPT-5.3-codex). */ export type SqlError = /** AI-generated (GPT-5.3-codex). */ ({ SqlProxy: string }) & { LockPoison?: never } | /** AI-generated (GPT-5.3-codex). */ ({ LockPoison: string }) & { SqlProxy?: never }; export type SqlParam = "Null" | ({ Bool: boolean }) & { Float?: never; Int?: never; Text?: never } | ({ Int: number }) & { Bool?: never; Float?: never; Text?: never } | ({ Float: number | null }) & { Bool?: never; Int?: never; Text?: never } | ({ Text: string }) & { Bool?: never; Float?: never; Int?: never }; export type SqlQueryResult = { rows: SqlValue[][], }; export type SqlValue = "Null" | ({ Bool: boolean }) & { Blob?: never; Float?: never; Int?: never; Text?: never } | ({ Int: number }) & { Blob?: never; Bool?: never; Float?: never; Text?: never } | ({ Float: number | null }) & { Blob?: never; Bool?: never; Int?: never; Text?: never } | ({ Text: string }) & { Blob?: never; Bool?: never; Float?: never; Int?: never } | ({ Blob: number[] }) & { Bool?: never; Float?: never; Int?: never; Text?: never }; /** Identifier for a timeslot. */ export type TimeslotId = number; /** Data to generate a timetable PDF */ export type TimetableData = { /** The name of the school */ schoolName: string, /** The title of the timetable */ title: string, /** The grades to include in the timetable */ grades: number[], /** The days that make up the timetable */ days: TimetableDay[], }; /** A day in the timetable */ export type TimetableDay = { /** The date of the day, in ISO 8601 format */ date: string, /** The sessions that occur on this day */ sessions: TimetableSession[], }; /** An exam entry in the timetable session */ export type TimetableExamEntry = { /** The session ID of the exam */ sessionId: number, /** The exam ID of the exam */ examId: ExamId, /** The grade of the exam */ grade: number, /** The subject of the exam */ subject: string, /** Custom name for the exam. Replaces in the display */ examName: string | null, /** The start of the exam, formatted as "hh:mm" */ startTime: string, /** The end of the exam, formatted as "hh:mm" */ endTime: string, /** The exam paper number */ paperNumber: number, locked: boolean, }; /** A session in the timetable */ export type TimetableSession = { /** The session number (currently either 1 or 2) */ sessionNumber: number, /** The timeslot ID of the session */ timeslotId: TimeslotId, /** The exams that occur in this session */ exams: TimetableExamEntry[], }; const ARGS_MAP = {"":{"generate_timetable_pdf":["data"],"pause_solve_session":["session_id"],"solve_single":["locked_slots"],"sql":["sql","params","method"],"sql_batch":["queries"],"start_solve_session":["on_new_timetable","locked_slots"],"stop_solve_session":["session_id"]}}; const RESULT_MAP = {"":{"generate_timetable_pdf":true,"pause_solve_session":true,"solve_single":true,"sql":true,"sql_batch":true,"start_solve_session":true,"stop_solve_session":true}}; export type Router = { "": { generate_timetable_pdf: (data: TimetableData) => Promise>, pause_solve_session: (sessionId: number) => Promise>, solve_single: (lockedSlots: LockedTimetableSlot[]) => Promise>, sql: (sql: string, params: SqlParam[], method: string) => Promise>, sql_batch: (queries: SqlBatchQuery[]) => Promise>, start_solve_session: (onNewTimetable: (response: NewTimetableUpdate) => void, lockedSlots: LockedTimetableSlot[]) => Promise>, stop_solve_session: (sessionId: number) => Promise>, }, }; export const createTauRPCProxy = () => createProxy({ argsMap: ARGS_MAP, resultMap: RESULT_MAP, errorHandling: "result", }) // export const createTauRPCProxy = () => createProxy(ARGS_MAP) export type { InferCommandOutput, TauRpcResult }