#ifndef COMPILER_H
#define COMPILER_H

#include "probe.h"
#include "typecheck.h"

typedef struct {
  Arena arena;
  char** argv;
  size_t argc;
  const char* filter_complex;
  const char* shell_command;
} CompiledCommand;

bool compile_program(const Program* program, const TypedProgram* typed, ProbeCache* probes,
                     const char* output_path, CompiledCommand* out, Error* error);
void compiled_command_destroy(CompiledCommand* command);
bool execute_command(const CompiledCommand* command, int* exit_code, Error* error);

#endif