From f0f4ad70ba401f03223a40002adff203534d6ed2 Mon Sep 17 00:00:00 2001
From: kmochocki <kmochocki@syncad.com>
Date: Wed, 18 Dec 2024 13:06:45 +0000
Subject: [PATCH] Move constants to separate file

---
 python/wax/_private/core/constants.py | 13 ++++++++++++-
 python/wax/_private/transaction.py    |  6 ++++--
 python/wax/wax_options.py             | 21 +++++++++++++++------
 3 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/python/wax/_private/core/constants.py b/python/wax/_private/core/constants.py
index f5dafcbd5..ea1204f59 100644
--- a/python/wax/_private/core/constants.py
+++ b/python/wax/_private/core/constants.py
@@ -1,9 +1,20 @@
 from __future__ import annotations
 
+from datetime import timedelta
 from math import floor, log10
-from typing import Final
+from typing import TYPE_CHECKING, Final
+
+if TYPE_CHECKING:
+    from wax._private.models.basic import ChainId
+
 
 PUBLIC_KEY_ADDRESS_PREFIX: Final[str] = "STM"
 
+DEFAULT_TRANSACTION_EXPIRATION_TIME: Final[timedelta] = timedelta(minutes=1)
+MAINNET_CHAIN_ID: Final[ChainId] = "beeab0de00000000000000000000000000000000000000000000000000000000"
+DEFAULT_CHAIN_ID: Final[ChainId] = MAINNET_CHAIN_ID
+
 HIVE_PERCENT_PRECISION: Final[int] = 100
 HIVE_PERCENT_PRECISION_DOT_PLACES: Final[int] = floor(log10(HIVE_PERCENT_PRECISION))
+
+HIVE_TIME_FORMAT: Final[str] = "%Y-%m-%dT%H:%M:%S"
diff --git a/python/wax/_private/transaction.py b/python/wax/_private/transaction.py
index 97e996610..69d74dc83 100644
--- a/python/wax/_private/transaction.py
+++ b/python/wax/_private/transaction.py
@@ -2,12 +2,12 @@ from __future__ import annotations
 
 import json
 from copy import deepcopy
-from datetime import timedelta
 from typing import TYPE_CHECKING, TypeAlias
 
 from google.protobuf.json_format import MessageToJson, Parse
 from typing_extensions import Self
 
+from wax._private.core.constants import DEFAULT_TRANSACTION_EXPIRATION_TIME
 from wax._private.models.hive_date_time import HiveDateTime
 from wax._private.models.required_authorities import TransactionRequiredAuthorities
 from wax._private.result_tools import (
@@ -33,6 +33,8 @@ from wax.interfaces import ITransaction, JsonTransaction, ProtoTransaction
 from wax.proto.transaction_pb2 import transaction as proto_transaction
 
 if TYPE_CHECKING:
+    from datetime import timedelta
+
     from beekeepy._interface.abc.synchronous.wallet import UnlockedWallet
     from wax import IWaxBaseInterface
     from wax._private.models.basic import AccountName, Hex, PublicKey, SigDigest, Signature, TransactionId
@@ -47,7 +49,7 @@ class Transaction(ITransaction):
         self,
         api: IWaxBaseInterface,
         tapos_block_id: TaposBlockId | ProtoTransaction,
-        expiration_time: timedelta = timedelta(minutes=30),
+        expiration_time: timedelta = DEFAULT_TRANSACTION_EXPIRATION_TIME,
         head_block_time: HiveDateTime | None = None,
     ) -> None:
         self._api = api
diff --git a/python/wax/wax_options.py b/python/wax/wax_options.py
index 15cb96506..3a8e86568 100644
--- a/python/wax/wax_options.py
+++ b/python/wax/wax_options.py
@@ -1,12 +1,21 @@
 from __future__ import annotations
 
-from dataclasses import dataclass, field
+from typing import TYPE_CHECKING
 
-from wax._private.models.basic import ChainId
+from wax._private.core.constants import DEFAULT_CHAIN_ID
+
+if TYPE_CHECKING:
+    from wax._private.models.basic import ChainId
 
 
-@dataclass
 class WaxOptions:
-    chain_id: ChainId = field(
-        default_factory=lambda: ChainId("18dcf0a285365fc58b71f18b3d3fec954aa0c141c44e4e5cb4cf777b9eab274e")
-    )
+    """Allows configuration of wax itself."""
+
+    def __init__(self, chain_id: ChainId = DEFAULT_CHAIN_ID) -> None:
+        """
+        Constructs WaxOptions.
+
+        Args:
+            chain_id: chain id used for signing. Defaults to mainnet chain id.
+        """
+        self.chain_id = chain_id
-- 
GitLab