import { LaboratoryOperation } from './operations';
export interface LaboratoryTestTaskBase {
    id: string;
    next: string | null;
}
export interface LaboratoryTestTaskOperation extends LaboratoryTestTaskBase {
    type: 'operation';
    data: Pick<LaboratoryOperation, 'id'>;
}
export interface LaboratoryTestTaskUtlity extends LaboratoryTestTaskBase {
    type: 'utility';
    data: unknown;
}
export type LaboratoryTestTask = LaboratoryTestTaskOperation | LaboratoryTestTaskUtlity;
export interface LaboratoryTest {
    id: string;
    name: string;
    description?: string;
    createdAt: string;
    tasks: LaboratoryTestTask[];
}
export interface LaboratoryTestState {
    tests: LaboratoryTest[];
}
export interface LaboratoryTestActions {
    addTest: (test: Omit<LaboratoryTest, 'id' | 'createdAt' | 'tasks'>) => LaboratoryTest;
    addTaskToTest: (testId: string, task: Pick<LaboratoryTestTask, 'type' | 'data'>) => void;
    deleteTaskFromTest: (testId: string, taskId: string) => void;
    deleteTest: (testId: string) => void;
}
export declare const useTests: (props: {
    defaultTests?: LaboratoryTest[];
    onTestsChange?: (test: LaboratoryTest[]) => void;
}) => LaboratoryTestState & LaboratoryTestActions;
