import { CirclesSdk, SdkConfig } 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";
import { SortOrder } from "@ingocollatz/sdk-interfaces";

(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 hubTransfers = await circlesSdk.findHubTransfers({
  // });

  // console.log(`Hub Transfers for ${SAFE_ADDRESS_USER}: `, hubTransfers);

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

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

  const abiEncoder = new Web3AbiEncoder(web3);

  const circlesSdk = new CirclesSdk(safe, abiEncoder);

  const hubTransfers = await circlesSdk.getTransferByTxHash(
    "0x3988c05b70ff95c7c3b9663678d5016ed6510fe87af213e9c4bfab6b0da76111"
  )

  console.log(`Hub Transfers for ${SAFE_ADDRESS_USER}: `, hubTransfers);
})();
