from dataclasses import dataclass, field
from multiversx_sdk.core.address import Address
from multiversx_sdk.core.config import LibraryConfig
from multiversx_sdk.core.constants import ESDT_CONTRACT_ADDRESS_HEX
[docs]
@dataclass
class TransactionsFactoryConfig:
# General-purpose configuration
chain_id: str
address_hrp: str = LibraryConfig.default_address_hrp
min_gas_limit: int = 50_000
gas_limit_per_byte: int = 1_500
# Configuration for token operations
gas_limit_issue: int = 60_000_000
gas_limit_toggle_burn_role_globally: int = 60_000_000
gas_limit_esdt_local_mint: int = 300_000
gas_limit_esdt_local_burn: int = 300_000
gas_limit_set_special_role: int = 60_000_000
gas_limit_pausing: int = 60_000_000
gas_limit_freezing: int = 60_000_000
gas_limit_wiping: int = 60_000_000
gas_limit_esdt_nft_create: int = 3_000_000
gas_limit_esdt_nft_update_attributes: int = 1_000_000
gas_limit_esdt_nft_add_quantity: int = 1_000_000
gas_limit_esdt_nft_burn: int = 1_000_000
gas_limit_store_per_byte: int = 10_000
gas_limit_esdt_modify_royalties: int = 60_000_000
gas_limit_set_new_uris: int = 60_000_000
gas_limit_esdt_modify_creator: int = 60_000_000
gas_limit_esdt_metadata_update: int = 60_000_000
gas_limit_nft_metadata_recreate: int = 60_000_000
gas_limit_nft_change_to_dynamic: int = 60_000_000
gas_limit_update_token_id: int = 60_000_000
gas_limit_register_dynamic: int = 60_000_000
issue_cost: int = 50_000_000_000_000_000
gas_limit_transfer_ownership: int = 60_000_000
gas_limit_freeze_single_nft: int = 60_000_000
gas_limit_unfreeze_single_nft: int = 60_000_000
gas_limit_change_sft_to_meta_esdt: int = 60_000_000
gas_limit_transfer_nft_create_role: int = 60_000_000
gas_limit_stop_nft_create: int = 60_000_000
gas_limit_wipe_single_nft: int = 60_000_000
gas_limit_esdt_nft_add_uri: int = 10_000_000
esdt_contract_address: Address = field(default_factory=lambda: Address.new_from_hex(value=ESDT_CONTRACT_ADDRESS_HEX))
# Configuration for delegation operations
gas_limit_stake: int = 5_000_000
gas_limit_unstake: int = 5_000_000
gas_limit_unbond: int = 5_000_000
gas_limit_create_delegation_contract: int = 50_000_000
gas_limit_delegation_operations: int = 1_000_000
additional_gas_limit_per_validator_node: int = 6_000_000
additional_gas_for_delegation_operations: int = 10_000_000
# Configuration for token transfers
gas_limit_esdt_transfer: int = 200_000
gas_limit_esdt_nft_transfer: int = 200_000
gas_limit_multi_esdt_nft_transfer: int = 200_000
# Configuration for account operations
gas_limit_save_key_value: int = 100_000
gas_limit_persist_per_byte: int = 1_000
gas_limit_set_guardian: int = 250_000
gas_limit_guard_account: int = 250_000
gas_limit_unguard_account: int = 250_000
# Configuration for smart contract operations
gas_limit_claim_developer_rewards: int = 6_000_000
gas_limit_change_owner_address: int = 6_000_000