import emitter { emitRust }
import stage1_types { Stage1Module, Stage1Operation, LoweringOutput }

// JSON belongs to this development transport, outside the lower/emit value API.
record Payload derives JSON {
  schema: string,
  irSchema: string,
  runtimeTemplate: string,
  sourceSetId: string,
  loweredModules: Array<Stage1Module>,
  loweredOperations: Array<Stage1Operation>,
}

export function main(args: Array<string>, input: string) -> Result<int, string> {
  let payload = JSON.parseAs<Payload>(input)?
  let rust = emitRust(LoweringOutput {
    modules: payload.loweredModules,
    operations: payload.loweredOperations,
    unsupported: [],
  })?
  print(rust)
  Ok(0)
}
