// services/Web3Service.js
const { Web3 } = require("web3");

const web3 = new Web3(process.env.ALCHEMY_API_URL);

module.exports = {
  web3,
  createWallet: () => {
    return web3.eth.accounts.create();
  },
  signMessage: (privateKey, message) => {
    return web3.eth.accounts.sign(message, privateKey);
  },
  getBalance: async (address) => {
    const balanceWei = await web3.eth.getBalance(address);
    return web3.utils.fromWei(balanceWei, "ether");
  },
  transfer: async (privateKey, to, amount) => {
    const account = web3.eth.accounts.privateKeyToAccount(privateKey);
    const from = account.address;
    const nonce = await web3.eth.getTransactionCount(from, "latest");

    const gasPrice = await web3.eth.getGasPrice();

    const tx = {
      from,
      to,
      value: web3.utils.toWei(amount, "ether"),
      gas: 21000,
      gasPrice,
      nonce,
    };

    const signed = await account.signTransaction(tx);
    return web3.eth.sendSignedTransaction(signed.rawTransaction);
  },
};
