import { CirclesSdk } from "@ingocollatz/sdk";
import { PUBLIC_KEY_1, RPC_URL, SAFE_ADDRESS_USER } from "../config";
import Web3 from "web3";
import Safe, { Web3Adapter } from "@safe-global/protocol-kit";
import { Web3AbiEncoder } from "@ingocollatz/sdk-web3-adapter";
import { EthersAbiEncoder } from "@ingocollatz/sdk-ethers-adapter";
import { ethers } from "ethers";
import { EthersAdapter } from "@safe-global/protocol-kit";

(async (): Promise<void> => {
  // Ethers
  // const provider = new ethers.providers.JsonRpcProvider(RPC_URL);

  // const safe = await Safe.create({
  //   ethAdapter: new EthersAdapter({
  //     ethers,
  //     signerOrProvider: provider,
  //   }),
  //   safeAddress: SAFE_ADDRESS_USER,
  // });

  // const abiEncoder = new EthersAbiEncoder();

  // const circlesSdk = new CirclesSdk(safe, abiEncoder);

  // const safeBalance = await circlesSdk.getSafeBalance();

  // console.log(`Safe balance for ${SAFE_ADDRESS_USER}: `, safeBalance);

  // Web3
  const web3 = new Web3(new Web3.providers.HttpProvider(RPC_URL));

  const safe = await Safe.create({
    ethAdapter: new Web3Adapter({
      web3: new Web3(new Web3.providers.HttpProvider(RPC_URL)),
      signerAddress: PUBLIC_KEY_1,
    }),
    safeAddress: SAFE_ADDRESS_USER,
  });

  const abiEncoder = new Web3AbiEncoder(web3);

  const circlesSdk = new CirclesSdk(safe, abiEncoder);

  const safeBalance = await circlesSdk.getSafeBalance({ unit: "tc", });

  const safeBalance2 = await CirclesSdk.getSafeBalance({ safeAddress: "0xde374ece6fa50e781e81aac78e811b33d16912c7" });

  console.log(`Safe balance for ${SAFE_ADDRESS_USER}: `, safeBalance);

  console.log("bla safe balance 2", safeBalance2);
})();
