import type { PlateMap, ProtocolStep, Reagent, SampleType, Well, } from '../types' import type { QpcrPlateTemplate } from './templateQpcrTypes' export type TemplateKind = 'experiment-design' export type TemplateId = | 'plate-map' | 'sample-sheet' | 'sample-prep' | 'dose-response' | 'calibration-curve' | 'time-course' | 'protocol-steps' | 'assay-matrix' | 'reagent-list' | 'flow-cytometry-panel' | 'instrument-run' | 'qpcr-plate' export type TemplatePresetId = | 'wellplate-screen' | 'qpcr-expression' | 'lcms-batch' | 'targeted-metabolomics' | 'elisa-assay' | 'flow-cytometry-assay' | 'western-blot-assay' export type TemplatePackId = | 'cell-culture-screen' | 'omics-assay' | 'longitudinal-study' | 'molecular-assay' export interface BioTemplateEnvelope> { template_id: TemplateId | string template_version: string kind: TemplateKind | string data: TData metadata: Record } export type TemplateCollection = Record> export interface TemplateCollectionEnvelope { templates: TemplateCollection metadata?: Record } export type TemplateWell = Well export type TemplatePlateMap = PlateMap export type TemplateSample = SampleType export interface PlateMapTemplateData { plates: TemplatePlateMap[] samples: TemplateSample[] activePlateId?: string selectedWells?: string[] activeSampleId?: string } export type PlateMapTemplate = BioTemplateEnvelope export type SampleColumnType = 'string' | 'number' | 'integer' | 'boolean' | 'date' | 'category' | 'unknown' export interface SampleColumn { id: string label: string type: SampleColumnType required: boolean groupable: boolean } export interface SampleRecord { sampleId: string name?: string group?: string batch?: string replicate?: number | string plateId?: string wellId?: string metadata?: Record } export interface SampleGroupDefinition { name: string color: string samples: string[] } export interface SampleSheetTemplateData { samples: SampleRecord[] columns: SampleColumn[] groups: SampleGroupDefinition[] } export type SampleSheetTemplate = BioTemplateEnvelope export type SamplePrepStepType = | 'extraction' | 'dilution' | 'normalization' | 'transfer' | 'incubation' | 'centrifugation' | 'cleanup' | 'digestion' | 'labeling' | 'other' export type SamplePrepStatus = 'planned' | 'in-progress' | 'completed' | 'failed' | 'skipped' export interface SamplePrepStep { id: string order: number type: SamplePrepStepType name: string sourceSampleId?: string sourcePlateId?: string sourceWellId?: string destinationSampleId?: string destinationPlateId?: string destinationWellId?: string reagentId?: string inputVolume?: number outputVolume?: number volumeUnit: string durationMin?: number status: SamplePrepStatus metadata?: Record } export interface SamplePrepTemplateData { protocolName: string steps: SamplePrepStep[] metadata: Record } export type SamplePrepTemplate = BioTemplateEnvelope export type SamplePrepStepInput = Partial & { name?: string; sourceSampleId?: string } export interface CompoundDoseSeries { id: string name: string concentrations: number[] metadata?: Record } export type ControlRole = 'vehicle' | 'positive' | 'negative' | 'blank' | 'baseline' | 'other' export interface ControlDefinition { id: string name: string role: ControlRole vehicle?: string metadata?: Record } export interface DoseResponseTemplateData { compounds: CompoundDoseSeries[] unit: string replicates: number controls: ControlDefinition[] layout?: PlateMapTemplateData metadata: Record } export type DoseResponseTemplate = BioTemplateEnvelope export type CalibrationModel = | 'linear' | 'linear-weighted-1-x' | 'linear-weighted-1-x2' | 'quadratic' | 'four-parameter-logistic' export type CalibrationPointRole = 'blank' | 'standard' | 'qc' | 'unknown' export type CalibrationPointStatus = 'planned' | 'accepted' | 'rejected' | 'warning' export interface CalibrationAcceptance { minRSquared: number standardTolerancePercent: number qcTolerancePercent: number requireBlank: boolean metadata?: Record } export interface CalibrationPoint { id: string order: number role: CalibrationPointRole level: string concentration: number unit: string expectedResponse?: number response?: number replicate: number include: boolean status: CalibrationPointStatus metadata?: Record } export interface CalibrationCurveTemplateData { analyte: string model: CalibrationModel xUnit: string responseUnit: string points: CalibrationPoint[] acceptance: CalibrationAcceptance metadata: Record } export type CalibrationCurveTemplate = BioTemplateEnvelope export type CalibrationAcceptanceInput = Partial export type CalibrationPointInput = Partial & { concentration?: number; level?: string } export type TimeUnit = 'second' | 'minute' | 'hour' | 'day' | 'week' export interface TimePoint { id: string label: string value: number unit: TimeUnit metadata?: Record } export interface TimeCourseCondition { id: string name: string color?: string description?: string metadata?: Record } export interface TimeCourseSample { sampleId: string conditionId: string timepointId: string replicate: number metadata?: Record } export interface TimeCourseTemplateData { timepoints: TimePoint[] conditions: TimeCourseCondition[] samples: TimeCourseSample[] metadata: Record } export type TimeCourseTemplate = BioTemplateEnvelope export type AssayFeatureType = 'metabolite' | 'protein' | 'gene' | 'cell' | 'compound' | 'readout' | 'other' export interface AssaySample { sampleId: string name?: string group?: string metadata?: Record } export interface AssayFeature { id: string name: string type: AssayFeatureType unit?: string metadata?: Record } export interface AssayMeasurement { sampleId: string featureId: string value?: number | null metadata?: Record } export interface AssayMatrixTemplateData { samples: AssaySample[] features: AssayFeature[] measurements: AssayMeasurement[] metadata: Record } export type AssayMatrixTemplate = BioTemplateEnvelope export type ProtocolStepRecord = ProtocolStep & { metadata?: Record } export interface ProtocolStepsTemplateData { steps: ProtocolStepRecord[] metadata: Record } export type ProtocolStepsTemplate = BioTemplateEnvelope export type ReagentKind = | 'compound' | 'antibody' | 'primer' | 'enzyme' | 'buffer' | 'media' | 'kit' | 'reagent' | 'other' export type ReagentTemplateInput = Omit & { expiryDate?: Date | string | null kind?: ReagentKind concentration?: string metadata?: Record } export interface ReagentRecord extends Omit { expiryDate?: string kind?: ReagentKind concentration?: string metadata?: Record } export interface ReagentListTemplateData { reagents: ReagentRecord[] metadata: Record } export type ReagentListTemplate = BioTemplateEnvelope export type FlowMarkerPurpose = 'phenotype' | 'viability' | 'activation' | 'sorting' | 'control' | 'other' export type FlowControlKind = 'unstained' | 'single-stain' | 'fmo' | 'isotype' | 'viability' | 'beads' | 'other' export interface FlowPanelMarker { id: string marker: string fluorophore: string detector?: string clone?: string reagentId?: string purpose: FlowMarkerPurpose compensationRequired: boolean metadata?: Record } export interface FlowPanelControl { id: string name: string kind: FlowControlKind markerId?: string required: boolean metadata?: Record } export interface FlowCytometryPanelTemplateData { markers: FlowPanelMarker[] controls: FlowPanelControl[] instrument?: string metadata: Record } export type FlowCytometryPanelTemplate = BioTemplateEnvelope export type InstrumentRunItemKind = 'sample' | 'blank' | 'qc' | 'standard' | 'calibration' | 'wash' | 'other' export type InstrumentRunStatus = 'planned' | 'queued' | 'running' | 'completed' | 'failed' | 'skipped' export interface InstrumentMethod { id: string name: string instrument?: string acquisitionMode?: string metadata?: Record } export interface InstrumentRunItem { id: string order: number kind: InstrumentRunItemKind sampleId?: string name?: string methodId: string vial?: string plateId?: string wellId?: string injectionVolume?: number expectedDurationMin?: number status: InstrumentRunStatus metadata?: Record } export interface InstrumentRunTemplateData { runId: string instrument?: string methods: InstrumentMethod[] items: InstrumentRunItem[] metadata: Record } export type InstrumentRunTemplate = BioTemplateEnvelope export type InstrumentMethodInput = Partial & { name?: string } export type InstrumentRunItemInput = Partial & { name?: string; sampleId?: string } export type DataFrameTemplate = | SampleSheetTemplate | SamplePrepTemplate | CalibrationCurveTemplate | TimeCourseTemplate | ProtocolStepsTemplate | AssayMatrixTemplate | ReagentListTemplate | FlowCytometryPanelTemplate | InstrumentRunTemplate | QpcrPlateTemplate export type { QpcrChemistry, QpcrControlKind, QpcrPlateTemplate, QpcrPlateTemplateData, QpcrReaction, QpcrSample, QpcrTarget, } from './templateQpcrTypes' export type { CreateAssayMatrixTemplateOptions, CreateBioTemplatePackCollectionOptions, CreateCalibrationCurveTemplateOptions, CreateDoseResponseTemplateOptions, CreateElisaAssayCollectionOptions, CreateFlowCytometryAssayCollectionOptions, CreateFlowCytometryPanelTemplateOptions, CreateInstrumentRunTemplateOptions, CreateLcmsBatchCollectionOptions, CreatePlateMapTemplateOptions, CreateProtocolStepsTemplateOptions, CreateQpcrExpressionCollectionOptions, CreateQpcrPlateTemplateOptions, CreateReagentListTemplateOptions, CreateSamplePrepTemplateOptions, CreateSampleSheetTemplateOptions, CreateTargetedMetabolomicsCollectionOptions, CreateTimeCourseTemplateOptions, CreateWellPlateScreenCollectionOptions, CreateWesternBlotAssayCollectionOptions, } from './templateCreateOptions' export type { AssayMatrixColumnsAdapterResult, AssayMatrixDataFrameAdapterResult, AssayMatrixRowsAdapterResult, AssayMatrixSampleOptionsAdapterResult, CalibrationCurveColumnsAdapterResult, CalibrationCurveDataFrameAdapterResult, CalibrationCurveRowsAdapterResult, DataFrameAdapterResult, DoseConditionsAdapterResult, FlowPanelColumnsAdapterResult, FlowPanelDataFrameAdapterResult, FlowPanelRowsAdapterResult, InstrumentRunColumnsAdapterResult, InstrumentRunDataFrameAdapterResult, InstrumentRunRowsAdapterResult, InstrumentRunScheduleEventsAdapterResult, InstrumentRunStepsAdapterResult, PlateMapEditorAdapterResult, ProtocolColumnsAdapterResult, ProtocolDataFrameAdapterResult, ProtocolRowsAdapterResult, ProtocolStepsAdapterResult, QpcrColumnsAdapterResult, QpcrDataFrameAdapterResult, QpcrRowsAdapterResult, QpcrWellMapAdapterResult, ReagentColumnsAdapterResult, ReagentDataFrameAdapterResult, ReagentListItemsAdapterResult, ReagentRowsAdapterResult, SampleColumnsAdapterResult, SampleDataFrameAdapterResult, SampleOptionsAdapterResult, SamplePrepColumnsAdapterResult, SamplePrepDataFrameAdapterResult, SamplePrepRowsAdapterResult, SampleRowsAdapterResult, TemplateDataFrameAdapterResult, TimeCourseColumnsAdapterResult, TimeCourseDataFrameAdapterResult, TimeCourseRowsAdapterResult, TimeCourseStepsAdapterResult, WellMapAdapterResult, } from './templateAdapterTypes'