import { z } from "zod"; /** Research modes supported by the platform. Mixed-mode studies list a primary mode plus secondary modes. */ export const ResearchMode = z.enum([ "empirical", "computational", "theoretical", "review", "experimental", "humanities", ]); export type ResearchMode = z.infer; export const RESEARCH_MODE_LABELS: Record = { empirical: "Empirical", computational: "Computational", theoretical: "Theoretical", review: "Review", experimental: "Experimental", humanities: "Humanities", }; export const Discipline = z.enum([ "economics", "finance", "mathematics", "statistics", "computer-science", "physics", "chemistry", "biology", "medicine", "engineering", "earth-sciences", "social-sciences", "psychology", "humanities", "law", "education", "interdisciplinary", ]); export type Discipline = z.infer; export const DISCIPLINE_LABELS: Record = { economics: "Economics", finance: "Finance", mathematics: "Mathematics", statistics: "Statistics", "computer-science": "Computer Science", physics: "Physics", chemistry: "Chemistry", biology: "Biology", medicine: "Medicine & Health", engineering: "Engineering", "earth-sciences": "Earth & Environmental Sciences", "social-sciences": "Social Sciences", psychology: "Psychology", humanities: "Humanities", law: "Law", education: "Education", interdisciplinary: "Interdisciplinary", }; /** Research-mode profile: what evidence the artifact contract requires before publication. */ export const ModeProfile = z.object({ mode: ResearchMode, requiredArtifacts: z.array(z.string()), requiredEvidence: z.array(z.string()), autoPublishAllowed: z.boolean(), humanReviewRequired: z.boolean(), description: z.string(), }); export type ModeProfile = z.infer;