using Nethereum.ABI.FunctionEncoding; using Nethereum.Contracts.MessageEncodingServices; using Nethereum.Hex.HexConvertors.Extensions; using Nethereum.RPC.Eth.DTOs; namespace Nethereum.Contracts { public static class DeploymentMessageExtensions { public static DeploymentMessageEncodingService GetEncodingService(this TContractMessage contractMessage) where TContractMessage : ContractDeploymentMessage { return new DeploymentMessageEncodingService(); } public static CallInput CreateCallInput(this TContractMessage contractMessage) where TContractMessage : ContractDeploymentMessage { return GetEncodingService(contractMessage).CreateCallInput(contractMessage); } public static TransactionInput CreateTransactionInput(this TContractMessage contractMessage) where TContractMessage : ContractDeploymentMessage { return GetEncodingService(contractMessage).CreateTransactionInput(contractMessage); } public static TContractMessage DecodeTransaction(this TContractMessage contractMessage, Transaction transaction) where TContractMessage : ContractDeploymentMessage { return GetEncodingService(contractMessage).DecodeTransaction(contractMessage, transaction); } public static TContractMessage DecodeTransactionToDeploymentMessage(this Transaction transaction) where TContractMessage : ContractDeploymentMessage, new() { var contractMessage = new TContractMessage(); return GetEncodingService(contractMessage).DecodeTransaction(contractMessage, transaction); } public static string GetSwarmAddressFromByteCode(this TContractMessage contractMessage) where TContractMessage : ContractDeploymentMessage { return GetEncodingService(contractMessage).GetSwarmAddressFromByteCode(contractMessage); } public static bool HasASwarmAddressTheByteCode(this TContractMessage contractMessage) where TContractMessage : ContractDeploymentMessage { return GetEncodingService(contractMessage).HasASwarmAddressTheByteCode(contractMessage); } public static void LinkLibraries(this TContractMessage contractMessage, params ByteCodeLibrary[] byteCodeLibraries) where TContractMessage : ContractDeploymentMessage, new() { var libraryLinker = new ByteCodeLibraryLinker(); contractMessage.ByteCode = libraryLinker.LinkByteCode(contractMessage.ByteCode, byteCodeLibraries); } public static byte[] GetDeploymentData(this TContractMessage contractMessage ) where TContractMessage : ContractDeploymentMessage, new() { return GetEncodingService(contractMessage).GetDeploymentData(contractMessage).HexToByteArray(); } public static byte[] GetDeploymentDataHash(this TContractMessage contractMessage) where TContractMessage : ContractDeploymentMessage, new() { return GetEncodingService(contractMessage).GetDeploymentDataHash(contractMessage); } } }