from libcrypto import Wallet


def main() -> None:
    wallet = Wallet.generate()

    private_key = wallet.private_key
    public_key_compressed = private_key.get_public_key(compressed=True)
    public_key_uncompressed = private_key.get_public_key(compressed=False)

    print("Private key hex:")
    print(private_key.hex)

    print("\nWIF compressed:")
    print(private_key.to_wif(compressed=True))

    print("\nPublic key compressed:")
    print(public_key_compressed.hex)

    print("\nPublic key uncompressed:")
    print(public_key_uncompressed.hex)

    print("\nBitcoin P2PKH:")
    print(wallet.get_address("bitcoin", "p2pkh"))

    print("\nBitcoin P2WPKH:")
    print(wallet.get_address("bitcoin", "p2wpkh"))

    print("\nBitcoin Taproot:")
    print(wallet.get_address("bitcoin", "p2tr"))

    print("\nEthereum:")
    print(wallet.get_address("ethereum"))

    print("\nTRON:")
    print(wallet.get_address("tron"))

    print("\nSecurity notice:")
    print("Never log, upload, or share real private keys in production systems.")


if __name__ == "__main__":
    main()