from libcrypto import PrivateKey, Wallet


def main() -> None:
    private_key = PrivateKey.generate(network="bitcoin")

    wif_compressed = private_key.to_wif(compressed=True)
    wif_uncompressed = private_key.to_wif(compressed=False)

    print("Private key hex:")
    print(private_key.hex)

    print("\nCompressed WIF:")
    print(wif_compressed)

    print("\nUncompressed WIF:")
    print(wif_uncompressed)

    imported_private_key = PrivateKey(wif_compressed)
    imported_wallet = Wallet(imported_private_key)

    print("\nImported Bitcoin P2PKH:")
    print(imported_wallet.get_address("bitcoin", "p2pkh"))

    print("\nImported Bitcoin Native SegWit:")
    print(imported_wallet.get_address("bitcoin", "p2wpkh"))

    print("\nImported Ethereum:")
    print(imported_wallet.get_address("ethereum"))


if __name__ == "__main__":
    main()