from libcrypto import PrivateKey, PublicKey


def main() -> None:
    private_key = PrivateKey(
        "0000000000000000000000000000000000000000000000000000000000000001"
    )

    compressed_public_key = private_key.get_public_key(compressed=True)
    uncompressed_public_key = private_key.get_public_key(compressed=False)

    public_key_from_compressed = PublicKey(compressed_public_key.hex)
    public_key_from_uncompressed = PublicKey(uncompressed_public_key.hex)

    print("Compressed public key:")
    print(public_key_from_compressed.hex)

    print("\nUncompressed public key:")
    print(public_key_from_uncompressed.hex)

    print("\nBitcoin P2PKH from compressed public key:")
    print(public_key_from_compressed.get_address("p2pkh", "bitcoin"))

    print("\nBitcoin P2WPKH from compressed public key:")
    print(public_key_from_compressed.get_address("p2wpkh", "bitcoin"))

    print("\nEthereum from uncompressed public key:")
    print(public_key_from_uncompressed.get_address("default", "ethereum"))

    print("\nTRON from uncompressed public key:")
    print(public_key_from_uncompressed.get_address("default", "tron"))


if __name__ == "__main__":
    main()