use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct BuiltInCost {
#[serde(rename = "ChangeOwnerAddress")]
pub change_owner_address: u64,
#[serde(rename = "ClaimDeveloperRewards")]
pub claim_developer_rewards: u64,
#[serde(rename = "SaveUserName")]
pub save_user_name: u64,
#[serde(rename = "SaveKeyValue")]
pub save_key_value: u64,
#[serde(rename = "ESDTTransfer")]
pub esdt_transfer: u64,
#[serde(rename = "ESDTBurn")]
pub esdt_burn: u64,
#[serde(rename = "ESDTLocalMint")]
pub esdt_local_mint: u64,
#[serde(rename = "ESDTLocalBurn")]
pub esdt_local_burn: u64,
#[serde(rename = "ESDTNFTCreate")]
pub esdtnft_create: u64,
#[serde(rename = "ESDTNFTAddQuantity")]
pub esdtnft_add_quantity: u64,
#[serde(rename = "ESDTNFTBurn")]
pub esdtnft_burn: u64,
#[serde(rename = "ESDTNFTTransfer")]
pub esdtnft_transfer: u64,
#[serde(rename = "ESDTNFTChangeCreateOwner")]
pub esdtnft_change_create_owner: u64,
#[serde(rename = "ESDTNFTAddUri")]
pub esdtnft_add_uri: u64,
#[serde(rename = "ESDTNFTUpdateAttributes")]
pub esdtnft_update_attributes: u64,
#[serde(rename = "ESDTNFTMultiTransfer")]
pub esdtnft_multi_transfer: u64,
#[serde(rename = "MultiESDTNFTTransfer")]
pub multi_esdtnft_transfer: u64,
#[serde(rename = "ESDTModifyRoyalties")]
pub esdt_modify_royalties: u64,
#[serde(rename = "ESDTModifyCreator")]
pub esdt_modify_creator: u64,
#[serde(rename = "ESDTNFTRecreate")]
pub esdtnft_recreate: u64,
#[serde(rename = "ESDTNFTUpdate")]
pub esdtnft_update: u64,
#[serde(rename = "ESDTNFTSetNewURIs")]
pub esdtnft_set_new_ur_is: u64,
#[serde(rename = "SetGuardian")]
pub set_guardian: u64,
#[serde(rename = "GuardAccount")]
pub guard_account: u64,
#[serde(rename = "UnGuardAccount")]
pub un_guard_account: u64,
#[serde(rename = "TrieLoadPerNode")]
pub trie_load_per_node: u64,
#[serde(rename = "TrieStorePerNode")]
pub trie_store_per_node: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct MetaChainSystemSCsCost {
#[serde(rename = "Stake")]
pub stake: u64,
#[serde(rename = "UnStake")]
pub un_stake: u64,
#[serde(rename = "UnBond")]
pub un_bond: u64,
#[serde(rename = "Claim")]
pub claim: u64,
#[serde(rename = "Get")]
pub get: u64,
#[serde(rename = "ChangeRewardAddress")]
pub change_reward_address: u64,
#[serde(rename = "ChangeValidatorKeys")]
pub change_validator_keys: u64,
#[serde(rename = "UnJail")]
pub un_jail: u64,
#[serde(rename = "DelegationOps")]
pub delegation_ops: u64,
#[serde(rename = "DelegationMgrOps")]
pub delegation_mgr_ops: u64,
#[serde(rename = "ValidatorToDelegation")]
pub validator_to_delegation: u64,
#[serde(rename = "ESDTIssue")]
pub esdt_issue: u64,
#[serde(rename = "ESDTOperations")]
pub esdt_operations: u64,
#[serde(rename = "Proposal")]
pub proposal: u64,
#[serde(rename = "Vote")]
pub vote: u64,
#[serde(rename = "DelegateVote")]
pub delegate_vote: u64,
#[serde(rename = "RevokeVote")]
pub revoke_vote: u64,
#[serde(rename = "CloseProposal")]
pub close_proposal: u64,
#[serde(rename = "GetAllNodeStates")]
pub get_all_node_states: u64,
#[serde(rename = "UnstakeTokens")]
pub unstake_tokens: u64,
#[serde(rename = "UnbondTokens")]
pub unbond_tokens: u64,
#[serde(rename = "GetActiveFund")]
pub get_active_fund: u64,
#[serde(rename = "FixWaitingListSize")]
pub fix_waiting_list_size: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct BaseOperationCost {
#[serde(rename = "StorePerByte")]
pub store_per_byte: u64,
#[serde(rename = "ReleasePerByte")]
pub release_per_byte: u64,
#[serde(rename = "DataCopyPerByte")]
pub data_copy_per_byte: u64,
#[serde(rename = "PersistPerByte")]
pub persist_per_byte: u64,
#[serde(rename = "CompilePerByte")]
pub compile_per_byte: u64,
#[serde(rename = "AoTPreparePerByte")]
pub ao_t_prepare_per_byte: u64,
#[serde(rename = "GetCode")]
pub get_code: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct BaseOpsAPICost {
#[serde(rename = "GetSCAddress")]
pub get_sc_address: u64,
#[serde(rename = "GetOwnerAddress")]
pub get_owner_address: u64,
#[serde(rename = "IsSmartContract")]
pub is_smart_contract: u64,
#[serde(rename = "GetShardOfAddress")]
pub get_shard_of_address: u64,
#[serde(rename = "GetExternalBalance")]
pub get_external_balance: u64,
#[serde(rename = "GetBlockHash")]
pub get_block_hash: u64,
#[serde(rename = "TransferValue")]
pub transfer_value: u64,
#[serde(rename = "GetArgument")]
pub get_argument: u64,
#[serde(rename = "GetFunction")]
pub get_function: u64,
#[serde(rename = "GetNumArguments")]
pub get_num_arguments: u64,
#[serde(rename = "StorageStore")]
pub storage_store: u64,
#[serde(rename = "StorageLoad")]
pub storage_load: u64,
#[serde(rename = "CachedStorageLoad")]
pub cached_storage_load: u64,
#[serde(rename = "GetCaller")]
pub get_caller: u64,
#[serde(rename = "GetCallValue")]
pub get_call_value: u64,
#[serde(rename = "Log")]
pub log: u64,
#[serde(rename = "Finish")]
pub finish: u64,
#[serde(rename = "SignalError")]
pub signal_error: u64,
#[serde(rename = "GetBlockTimeStamp")]
pub get_block_time_stamp: u64,
#[serde(rename = "GetGasLeft")]
pub get_gas_left: u64,
#[serde(rename = "Int64GetArgument")]
pub int_64_get_argument: u64,
#[serde(rename = "Int64StorageStore")]
pub int_64_storage_store: u64,
#[serde(rename = "Int64StorageLoad")]
pub int_64_storage_load: u64,
#[serde(rename = "Int64Finish")]
pub int_64_finish: u64,
#[serde(rename = "GetStateRootHash")]
pub get_state_root_hash: u64,
#[serde(rename = "GetBlockNonce")]
pub get_block_nonce: u64,
#[serde(rename = "GetBlockEpoch")]
pub get_block_epoch: u64,
#[serde(rename = "GetBlockRound")]
pub get_block_round: u64,
#[serde(rename = "GetBlockRandomSeed")]
pub get_block_random_seed: u64,
#[serde(rename = "ExecuteOnSameContext")]
pub execute_on_same_context: u64,
#[serde(rename = "ExecuteOnDestContext")]
pub execute_on_dest_context: u64,
#[serde(rename = "DelegateExecution")]
pub delegate_execution: u64,
#[serde(rename = "AsyncCallStep")]
pub async_call_step: u64,
#[serde(rename = "AsyncCallbackGasLock")]
pub async_callback_gas_lock: u64,
#[serde(rename = "ExecuteReadOnly")]
pub execute_read_only: u64,
#[serde(rename = "CreateContract")]
pub create_contract: u64,
#[serde(rename = "GetReturnData")]
pub get_return_data: u64,
#[serde(rename = "GetNumReturnData")]
pub get_num_return_data: u64,
#[serde(rename = "GetReturnDataSize")]
pub get_return_data_size: u64,
#[serde(rename = "GetOriginalTxHash")]
pub get_original_tx_hash: u64,
#[serde(rename = "CleanReturnData")]
pub clean_return_data: u64,
#[serde(rename = "DeleteFromReturnData")]
pub delete_from_return_data: u64,
#[serde(rename = "GetPrevTxHash")]
pub get_prev_tx_hash: u64,
#[serde(rename = "GetCurrentTxHash")]
pub get_current_tx_hash: u64,
#[serde(rename = "CreateAsyncCall")]
pub create_async_call: u64,
#[serde(rename = "SetAsyncCallback")]
pub set_async_callback: u64,
#[serde(rename = "SetAsyncGroupCallback")]
pub set_async_group_callback: u64,
#[serde(rename = "SetAsyncContextCallback")]
pub set_async_context_callback: u64,
#[serde(rename = "GetCallbackClosure")]
pub get_callback_closure: u64,
#[serde(rename = "GetCodeMetadata")]
pub get_code_metadata: u64,
#[serde(rename = "IsBuiltinFunction")]
pub is_builtin_function: u64,
#[serde(rename = "IsReservedFunctionName")]
pub is_reserved_function_name: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct EthAPICost {
#[serde(rename = "UseGas")]
pub use_gas: u64,
#[serde(rename = "GetAddress")]
pub get_address: u64,
#[serde(rename = "GetExternalBalance")]
pub get_external_balance: u64,
#[serde(rename = "GetBlockHash")]
pub get_block_hash: u64,
#[serde(rename = "Call")]
pub call: u64,
#[serde(rename = "CallDataCopy")]
pub call_data_copy: u64,
#[serde(rename = "GetCallDataSize")]
pub get_call_data_size: u64,
#[serde(rename = "CallCode")]
pub call_code: u64,
#[serde(rename = "CallDelegate")]
pub call_delegate: u64,
#[serde(rename = "CallStatic")]
pub call_static: u64,
#[serde(rename = "StorageStore")]
pub storage_store: u64,
#[serde(rename = "StorageLoad")]
pub storage_load: u64,
#[serde(rename = "GetCaller")]
pub get_caller: u64,
#[serde(rename = "GetCallValue")]
pub get_call_value: u64,
#[serde(rename = "CodeCopy")]
pub code_copy: u64,
#[serde(rename = "GetCodeSize")]
pub get_code_size: u64,
#[serde(rename = "GetBlockCoinbase")]
pub get_block_coinbase: u64,
#[serde(rename = "Create")]
pub create: u64,
#[serde(rename = "GetBlockDifficulty")]
pub get_block_difficulty: u64,
#[serde(rename = "ExternalCodeCopy")]
pub external_code_copy: u64,
#[serde(rename = "GetExternalCodeSize")]
pub get_external_code_size: u64,
#[serde(rename = "GetGasLeft")]
pub get_gas_left: u64,
#[serde(rename = "GetBlockGasLimit")]
pub get_block_gas_limit: u64,
#[serde(rename = "GetTxGasPrice")]
pub get_tx_gas_price: u64,
#[serde(rename = "Log")]
pub log: u64,
#[serde(rename = "GetBlockNumber")]
pub get_block_number: u64,
#[serde(rename = "GetTxOrigin")]
pub get_tx_origin: u64,
#[serde(rename = "Finish")]
pub finish: u64,
#[serde(rename = "Revert")]
pub revert: u64,
#[serde(rename = "GetReturnDataSize")]
pub get_return_data_size: u64,
#[serde(rename = "ReturnDataCopy")]
pub return_data_copy: u64,
#[serde(rename = "SelfDestruct")]
pub self_destruct: u64,
#[serde(rename = "GetBlockTimeStamp")]
pub get_block_time_stamp: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct BigIntAPICost {
#[serde(rename = "BigIntNew")]
pub big_int_new: u64,
#[serde(rename = "BigIntByteLength")]
pub big_int_byte_length: u64,
#[serde(rename = "BigIntUnsignedByteLength")]
pub big_int_unsigned_byte_length: u64,
#[serde(rename = "BigIntSignedByteLength")]
pub big_int_signed_byte_length: u64,
#[serde(rename = "BigIntGetBytes")]
pub big_int_get_bytes: u64,
#[serde(rename = "BigIntGetUnsignedBytes")]
pub big_int_get_unsigned_bytes: u64,
#[serde(rename = "BigIntGetSignedBytes")]
pub big_int_get_signed_bytes: u64,
#[serde(rename = "BigIntSetBytes")]
pub big_int_set_bytes: u64,
#[serde(rename = "BigIntSetUnsignedBytes")]
pub big_int_set_unsigned_bytes: u64,
#[serde(rename = "BigIntSetSignedBytes")]
pub big_int_set_signed_bytes: u64,
#[serde(rename = "BigIntIsInt64")]
pub big_int_is_int_64: u64,
#[serde(rename = "BigIntGetInt64")]
pub big_int_get_int_64: u64,
#[serde(rename = "BigIntSetInt64")]
pub big_int_set_int_64: u64,
#[serde(rename = "BigIntAdd")]
pub big_int_add: u64,
#[serde(rename = "BigIntSub")]
pub big_int_sub: u64,
#[serde(rename = "BigIntMul")]
pub big_int_mul: u64,
#[serde(rename = "BigIntSqrt")]
pub big_int_sqrt: u64,
#[serde(rename = "BigIntPow")]
pub big_int_pow: u64,
#[serde(rename = "BigIntLog")]
pub big_int_log: u64,
#[serde(rename = "BigIntTDiv")]
pub big_int_t_div: u64,
#[serde(rename = "BigIntTMod")]
pub big_int_t_mod: u64,
#[serde(rename = "BigIntEDiv")]
pub big_int_e_div: u64,
#[serde(rename = "BigIntEMod")]
pub big_int_e_mod: u64,
#[serde(rename = "BigIntAbs")]
pub big_int_abs: u64,
#[serde(rename = "BigIntNeg")]
pub big_int_neg: u64,
#[serde(rename = "BigIntSign")]
pub big_int_sign: u64,
#[serde(rename = "BigIntCmp")]
pub big_int_cmp: u64,
#[serde(rename = "BigIntNot")]
pub big_int_not: u64,
#[serde(rename = "BigIntAnd")]
pub big_int_and: u64,
#[serde(rename = "BigIntOr")]
pub big_int_or: u64,
#[serde(rename = "BigIntXor")]
pub big_int_xor: u64,
#[serde(rename = "BigIntShr")]
pub big_int_shr: u64,
#[serde(rename = "BigIntShl")]
pub big_int_shl: u64,
#[serde(rename = "BigIntFinishUnsigned")]
pub big_int_finish_unsigned: u64,
#[serde(rename = "BigIntFinishSigned")]
pub big_int_finish_signed: u64,
#[serde(rename = "BigIntStorageLoadUnsigned")]
pub big_int_storage_load_unsigned: u64,
#[serde(rename = "BigIntStorageStoreUnsigned")]
pub big_int_storage_store_unsigned: u64,
#[serde(rename = "BigIntGetArgument")]
pub big_int_get_argument: u64,
#[serde(rename = "BigIntGetUnsignedArgument")]
pub big_int_get_unsigned_argument: u64,
#[serde(rename = "BigIntGetSignedArgument")]
pub big_int_get_signed_argument: u64,
#[serde(rename = "BigIntGetCallValue")]
pub big_int_get_call_value: u64,
#[serde(rename = "BigIntGetExternalBalance")]
pub big_int_get_external_balance: u64,
#[serde(rename = "CopyPerByteForTooBig")]
pub copy_per_byte_for_too_big: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct CryptoAPICost {
#[serde(rename = "SHA256")]
pub sha_256: u64,
#[serde(rename = "Keccak256")]
pub keccak_256: u64,
#[serde(rename = "Ripemd160")]
pub ripemd_160: u64,
#[serde(rename = "VerifyBLS")]
pub verify_bls: u64,
#[serde(rename = "VerifyEd25519")]
pub verify_ed_25519: u64,
#[serde(rename = "VerifySecp256k1")]
pub verify_secp_256_k_1: u64,
#[serde(rename = "EllipticCurveNew")]
pub elliptic_curve_new: u64,
#[serde(rename = "AddECC")]
pub add_ecc: u64,
#[serde(rename = "DoubleECC")]
pub double_ecc: u64,
#[serde(rename = "IsOnCurveECC")]
pub is_on_curve_ecc: u64,
#[serde(rename = "ScalarMultECC")]
pub scalar_mult_ecc: u64,
#[serde(rename = "MarshalECC")]
pub marshal_ecc: u64,
#[serde(rename = "MarshalCompressedECC")]
pub marshal_compressed_ecc: u64,
#[serde(rename = "UnmarshalECC")]
pub unmarshal_ecc: u64,
#[serde(rename = "UnmarshalCompressedECC")]
pub unmarshal_compressed_ecc: u64,
#[serde(rename = "GenerateKeyECC")]
pub generate_key_ecc: u64,
#[serde(rename = "EncodeDERSig")]
pub encode_der_sig: u64,
#[serde(rename = "VerifySecp256r1")]
pub verify_secp_256_r_1: u64,
#[serde(rename = "VerifyBLSSignatureShare")]
pub verify_bls_signature_share: u64,
#[serde(rename = "VerifyBLSMultiSig")]
pub verify_bls_multi_sig: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct ManagedBufferAPICost {
#[serde(rename = "MBufferNew")]
pub m_buffer_new: u64,
#[serde(rename = "MBufferNewFromBytes")]
pub m_buffer_new_from_bytes: u64,
#[serde(rename = "MBufferGetLength")]
pub m_buffer_get_length: u64,
#[serde(rename = "MBufferGetBytes")]
pub m_buffer_get_bytes: u64,
#[serde(rename = "MBufferGetByteSlice")]
pub m_buffer_get_byte_slice: u64,
#[serde(rename = "MBufferCopyByteSlice")]
pub m_buffer_copy_byte_slice: u64,
#[serde(rename = "MBufferSetBytes")]
pub m_buffer_set_bytes: u64,
#[serde(rename = "MBufferAppend")]
pub m_buffer_append: u64,
#[serde(rename = "MBufferAppendBytes")]
pub m_buffer_append_bytes: u64,
#[serde(rename = "MBufferToBigIntUnsigned")]
pub m_buffer_to_big_int_unsigned: u64,
#[serde(rename = "MBufferToBigIntSigned")]
pub m_buffer_to_big_int_signed: u64,
#[serde(rename = "MBufferFromBigIntUnsigned")]
pub m_buffer_from_big_int_unsigned: u64,
#[serde(rename = "MBufferFromBigIntSigned")]
pub m_buffer_from_big_int_signed: u64,
#[serde(rename = "MBufferStorageStore")]
pub m_buffer_storage_store: u64,
#[serde(rename = "MBufferStorageLoad")]
pub m_buffer_storage_load: u64,
#[serde(rename = "MBufferGetArgument")]
pub m_buffer_get_argument: u64,
#[serde(rename = "MBufferFinish")]
pub m_buffer_finish: u64,
#[serde(rename = "MBufferSetRandom")]
pub m_buffer_set_random: u64,
#[serde(rename = "MBufferToBigFloat")]
pub m_buffer_to_big_float: u64,
#[serde(rename = "MBufferFromBigFloat")]
pub m_buffer_from_big_float: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct BigFloatAPICost {
#[serde(rename = "BigFloatNewFromParts")]
pub big_float_new_from_parts: u64,
#[serde(rename = "BigFloatAdd")]
pub big_float_add: u64,
#[serde(rename = "BigFloatSub")]
pub big_float_sub: u64,
#[serde(rename = "BigFloatMul")]
pub big_float_mul: u64,
#[serde(rename = "BigFloatDiv")]
pub big_float_div: u64,
#[serde(rename = "BigFloatTruncate")]
pub big_float_truncate: u64,
#[serde(rename = "BigFloatNeg")]
pub big_float_neg: u64,
#[serde(rename = "BigFloatClone")]
pub big_float_clone: u64,
#[serde(rename = "BigFloatCmp")]
pub big_float_cmp: u64,
#[serde(rename = "BigFloatAbs")]
pub big_float_abs: u64,
#[serde(rename = "BigFloatSqrt")]
pub big_float_sqrt: u64,
#[serde(rename = "BigFloatPow")]
pub big_float_pow: u64,
#[serde(rename = "BigFloatFloor")]
pub big_float_floor: u64,
#[serde(rename = "BigFloatCeil")]
pub big_float_ceil: u64,
#[serde(rename = "BigFloatIsInt")]
pub big_float_is_int: u64,
#[serde(rename = "BigFloatSetBigInt")]
pub big_float_set_big_int: u64,
#[serde(rename = "BigFloatSetInt64")]
pub big_float_set_int_64: u64,
#[serde(rename = "BigFloatGetConst")]
pub big_float_get_const: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct MaxPerTransaction {
#[serde(rename = "MaxBuiltInCallsPerTx")]
pub max_built_in_calls_per_tx: u64,
#[serde(rename = "MaxNumberOfTransfersPerTx")]
pub max_number_of_transfers_per_tx: u64,
#[serde(rename = "MaxNumberOfTrieReadsPerTx")]
pub max_number_of_trie_reads_per_tx: u64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[serde(default)]
pub struct DynamicStorageLoad {
#[serde(rename = "QuadraticCoefficient")]
pub quadratic_coefficient: u64,
#[serde(rename = "SignOfQuadratic")]
pub sign_of_quadratic: u64,
#[serde(rename = "LinearCoefficient")]
pub linear_coefficient: u64,
#[serde(rename = "SignOfLinear")]
pub sign_of_linear: u64,
#[serde(rename = "ConstantCoefficient")]
pub constant_coefficient: u64,
#[serde(rename = "SignOfConstant")]
pub sign_of_constant: u64,
#[serde(rename = "MinimumGasCost")]
pub minimum_gas_cost: u64,
}