import { KeyUtil } from "./keyUtil";
import { toHex, bsv } from "./scryptlib";
import { ParkingToken } from ".";
import { privateKey } from "./privateKey";
import { loadDesc, compileContract } from "./loadContract";
import { PrivateKey } from "bsv";

(async () => {
  const privateKey1 = bsv.PrivateKey.fromRandom("testnet");
  const publicKey1 = bsv.PublicKey.fromPrivateKey(privateKey1);

  const privateKey2 = bsv.PrivateKey.fromRandom("testnet");
  const publicKey2 = bsv.PublicKey.fromPrivateKey(privateKey2);

  compileContract("token.scrypt");
  const desc = loadDesc("token_desc.json");
  

  const user = '03810e96e1e209bb0050f19a862e8a84f458984ebdace0920a867b3574764cdaf9'

  const pt = await ParkingToken.deployContract(privateKey, desc)
  await pt.addNewUser(user);
  await pt.transferTokens(user, 50);

  // pt.addNewUser(toHex(publicKey2));

    // const pt = await ParkingToken.fromTransaction(
  //   privateKey,
  //   `b4479d3b5441fc7cbfe87886cfa1d4f936245092c417f5dc67d7a98b07b9c0fb`,
  //   desc
  // );
  // console.log(pt.ledger.toString());
  // console.log(await pt.transferTokensJSON(`030394da7fad1273924c889fbc76894217b27487061a5930f061fc696d0b17498c`, 10))
  // const mnemonic = KeyUtil.generateMnemonic();
  // console.log(mnemonic);
  // const prikey = KeyUtil.getPrivateKeyFromMnemonic(mnemonic);
  // console.log(prikey);
  // const prKey = KeyUtil.getPrivateKeyFromWIF(prikey);
  // const pub = KeyUtil.getPublicKey(prKey);
  // console.log(toHex(pub));
})();
