import { toChecksumAddress } from "@zilliqa-js/crypto";
import BN from "bn.js";
import { Handler, Router } from "express";
import { WithdrawalController } from "../controllers";

const DEMO_WITHDRAWAL_ADDRESS = "444ad01a947cbae36602d920bd81b48050051dbe";

export const create = (router: Router, ctrl: WithdrawalController) => {
  router.post("/withdraw", async (req, res, next) => {
    const { amount } = req.body;
    // you would probably populate your request context with the user making
    // such an address. for convenience, we use a mock address as the
    // withdraw-to destination.
    const result = await ctrl.withdraw(
      toChecksumAddress(DEMO_WITHDRAWAL_ADDRESS),
      new BN(amount)
    );

    console.log("Created withdrawal with transaction hash: ", result.TranID);
    res.status(200).json({ txHash: result.TranID });
  });
};
