import {
  PRIVATE_KEY_1,
  SAFE_ADDRESS_ORGANIZATION,
  SAFE_ADDRESS_USER,
} from "../config";
import Web3 from "web3";
import HDWalletProvider from "@truffle/hdwallet-provider";
import { CirclesSdkWeb3Factory } from "@ingocollatz/sdk-web3-adapter";
import { ethers } from "ethers";
import { CirclesSdkEthersFactory } from "@ingocollatz/sdk-ethers-adapter";
import { SdkConfig } from "@ingocollatz/sdk";

(async (): Promise<void> => {
  const address: string = SAFE_ADDRESS_USER;
  const limit: number = 100;

  // Ethers
  const provider = new ethers.providers.JsonRpcProvider(SdkConfig._rpcUrl);
  const signerAddress = new ethers.Wallet(PRIVATE_KEY_1, provider);

  const circlesSdk = await CirclesSdkEthersFactory.withExistingSafe(
    ethers,
    signerAddress,
    SAFE_ADDRESS_ORGANIZATION
  );

  circlesSdk.trust(address, limit);

  // Web3
  // const web3 = new Web3();

  // const provider = new HDWalletProvider(
  //   {
  //     privateKeys: [PRIVATE_KEY_1.slice(2)],
  //     providerOrUrl: SdkConfig._rpcUrl,
  //   },
  // );

  // web3.setProvider(<any>provider);

  // const signerAddress = provider.getAddress();

  // const circlesSdk = await CirclesSdkWeb3Factory.withExistingSafe(web3, signerAddress, SAFE_ADDRESS_ORGANIZATION);

  // circlesSdk.trust(address, limit);

  // provider.engine.stop();
})();
