import { z } from 'zod'; import { ADMIN_OPERATION_KINDS, AdminOperationKind } from '../../../../database/entities/admin-operation-token.entity'; export { ADMIN_OPERATION_KINDS }; export type { AdminOperationKind }; export const ADMIN_SYSTEM_BACKUP_FORMAT = 'hipctf-system-backup'; export const ADMIN_SYSTEM_BACKUP_VERSION = 1; export const ADMIN_SYSTEM_OPERATIONS = ADMIN_OPERATION_KINDS; export const AdminReauthBodySchema = z.object({ operation: z.enum(ADMIN_OPERATION_KINDS), password: z.string().min(1).max(1024), stagingId: z.string().min(1).max(128).optional(), }); export const AdminDangerConfirmBodySchema = z.object({ operation: z.enum(ADMIN_OPERATION_KINDS), token: z.string().min(1).max(512), }); export const AdminRestoreCommitBodySchema = AdminDangerConfirmBodySchema; export const AdminRestoreValidateResponseSchema = z.object({ stagingId: z.string(), expiresAt: z.string(), summary: z.object({ tables: z.array(z.string()).min(1), tableCounts: z.record(z.string(), z.number().int().nonnegative()), files: z.number().int().nonnegative(), totalBytes: z.number().int().nonnegative(), }), }); export type AdminReauthBody = z.infer; export type AdminDangerConfirmBody = z.infer; export type AdminRestoreCommitBody = z.infer; export type AdminRestoreValidateResponse = z.infer; export interface ConfirmationTokenResponse { operation: AdminOperationKind; token: string; expiresAt: string; stagingId?: string; }