/** Network interfaces and the firewall (`network.read`, `network.manage`). */
import { call } from "../transport";
import type { Payload } from "../types";

const command = (name: string, action: string) => (payload: Payload = {}) => call<Payload>(`module_network_${name}`, `plugin:network:${action}`, payload);

export const network = Object.freeze({
  inspect: command("inspect", "inspect"),
  pending: command("pending", "pending"),
  diagnose: command("diagnose", "diagnose"),
  planInterface: command("plan_interface", "planInterface"),
  planFirewall: command("plan_firewall", "planFirewall"),
  apply: command("apply", "apply"),
  verify: command("verify", "verify"),
  confirm: command("confirm", "confirm"),
  rollback: command("rollback", "rollback"),
  extend: command("extend", "extend"),
  transactionLog: command("transaction_log", "transactionLog")
});
