opinion-clob-sdk 0.1.5__py3-none-any.whl → 0.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of opinion-clob-sdk might be problematic. Click here for more details.

Files changed (57) hide show
  1. opinion_clob_sdk/__init__.py +1 -1
  2. opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
  3. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
  4. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
  5. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +1 -1
  6. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +26 -0
  7. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  8. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +390 -0
  9. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  10. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +707 -0
  11. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +111 -0
  12. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +11 -0
  13. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
  14. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
  15. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +41 -0
  16. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +2 -0
  17. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +90 -0
  18. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +40 -0
  19. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +2 -0
  20. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
  21. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +254 -0
  22. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +9 -0
  23. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +8 -0
  24. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +8 -0
  25. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +20 -0
  26. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +109 -0
  27. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  28. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +19 -0
  29. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +176 -0
  30. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +6 -0
  31. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +94 -0
  32. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +347 -0
  33. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +141 -0
  34. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
  35. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py +327 -0
  36. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +22 -0
  37. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +1035 -0
  38. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +26 -0
  39. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +364 -0
  40. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +37 -0
  41. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +437 -0
  42. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +63 -0
  43. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +17 -0
  44. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +218 -0
  45. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +4 -0
  46. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +19 -0
  47. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +950 -0
  48. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +14 -11
  49. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +14 -11
  50. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +135 -0
  51. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +14 -11
  52. opinion_clob_sdk/opinion_clob_sdk/sdk.py +14 -11
  53. opinion_clob_sdk/sdk.py +14 -11
  54. {opinion_clob_sdk-0.1.5.dist-info → opinion_clob_sdk-0.1.6.dist-info}/METADATA +1 -1
  55. {opinion_clob_sdk-0.1.5.dist-info → opinion_clob_sdk-0.1.6.dist-info}/RECORD +57 -14
  56. {opinion_clob_sdk-0.1.5.dist-info → opinion_clob_sdk-0.1.6.dist-info}/WHEEL +0 -0
  57. {opinion_clob_sdk-0.1.5.dist-info → opinion_clob_sdk-0.1.6.dist-info}/top_level.txt +0 -0
@@ -314,7 +314,7 @@ class Client:
314
314
 
315
315
  result = self.market_api.openapi_market_get(
316
316
  apikey=self.api_key,
317
- topic_type=topic_type.value if topic_type else None,
317
+ market_type=topic_type.value if topic_type else None,
318
318
  page=page,
319
319
  limit=limit,
320
320
  chain_id=str(self.chain_id),
@@ -376,8 +376,15 @@ class Client:
376
376
  logging.error(f"API error: {e}")
377
377
  raise OpenApiError(f"Failed to get categorical market: {e}")
378
378
 
379
- def get_price_history(self, token_id, interval="1hour", start_time=int(time()), bars=60):
380
- """Get price history/candlestick data for a token"""
379
+ def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
380
+ """Get price history/candlestick data for a token
381
+
382
+ Args:
383
+ token_id: Token ID
384
+ interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
385
+ start_at: Start timestamp in Unix seconds (optional)
386
+ end_at: End timestamp in Unix seconds (optional)
387
+ """
381
388
  try:
382
389
  if not token_id:
383
390
  raise InvalidParamError(MISSING_TOKEN_ID_MSG)
@@ -389,8 +396,8 @@ class Client:
389
396
  apikey=self.api_key,
390
397
  token_id=token_id,
391
398
  interval=interval,
392
- start_time=start_time,
393
- bars=bars
399
+ start_at=start_at,
400
+ end_at=end_at
394
401
  )
395
402
  return result
396
403
  except InvalidParamError as e:
@@ -901,15 +908,11 @@ class Client:
901
908
  logging.error(f"API error: {e}")
902
909
  raise OpenApiError(f"Failed to get positions: {e}")
903
910
 
904
- def get_my_balances(self, wallet_address=None):
905
- """Get user's balances"""
911
+ def get_my_balances(self):
912
+ """Get user's balances (uses authenticated user from apikey)"""
906
913
  try:
907
- if not wallet_address:
908
- wallet_address = self.contract_caller.signer.address()
909
-
910
914
  result = self.market_api.openapi_user_balance_get(
911
915
  apikey=self.api_key,
912
- wallet_address=wallet_address,
913
916
  chain_id=str(self.chain_id)
914
917
  )
915
918
  return result
@@ -314,7 +314,7 @@ class Client:
314
314
 
315
315
  result = self.market_api.openapi_market_get(
316
316
  apikey=self.api_key,
317
- topic_type=topic_type.value if topic_type else None,
317
+ market_type=topic_type.value if topic_type else None,
318
318
  page=page,
319
319
  limit=limit,
320
320
  chain_id=str(self.chain_id),
@@ -376,8 +376,15 @@ class Client:
376
376
  logging.error(f"API error: {e}")
377
377
  raise OpenApiError(f"Failed to get categorical market: {e}")
378
378
 
379
- def get_price_history(self, token_id, interval="1hour", start_time=int(time()), bars=60):
380
- """Get price history/candlestick data for a token"""
379
+ def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
380
+ """Get price history/candlestick data for a token
381
+
382
+ Args:
383
+ token_id: Token ID
384
+ interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
385
+ start_at: Start timestamp in Unix seconds (optional)
386
+ end_at: End timestamp in Unix seconds (optional)
387
+ """
381
388
  try:
382
389
  if not token_id:
383
390
  raise InvalidParamError(MISSING_TOKEN_ID_MSG)
@@ -389,8 +396,8 @@ class Client:
389
396
  apikey=self.api_key,
390
397
  token_id=token_id,
391
398
  interval=interval,
392
- start_time=start_time,
393
- bars=bars
399
+ start_at=start_at,
400
+ end_at=end_at
394
401
  )
395
402
  return result
396
403
  except InvalidParamError as e:
@@ -901,15 +908,11 @@ class Client:
901
908
  logging.error(f"API error: {e}")
902
909
  raise OpenApiError(f"Failed to get positions: {e}")
903
910
 
904
- def get_my_balances(self, wallet_address=None):
905
- """Get user's balances"""
911
+ def get_my_balances(self):
912
+ """Get user's balances (uses authenticated user from apikey)"""
906
913
  try:
907
- if not wallet_address:
908
- wallet_address = self.contract_caller.signer.address()
909
-
910
914
  result = self.market_api.openapi_user_balance_get(
911
915
  apikey=self.api_key,
912
- wallet_address=wallet_address,
913
916
  chain_id=str(self.chain_id)
914
917
  )
915
918
  return result
@@ -0,0 +1,135 @@
1
+ """
2
+ Verification script to check all API method signatures in opinion_clob_sdk
3
+ This script validates that all API calls pass the correct parameters to opinion_api
4
+ """
5
+
6
+ import inspect
7
+ from opinion_api.api.prediction_market_api import PredictionMarketApi
8
+ from opinion_api.api.user_api import UserApi
9
+
10
+ # Expected API calls with required parameters
11
+ EXPECTED_API_CALLS = {
12
+ # Market API calls
13
+ 'openapi_quote_token_get': ['apikey', 'chain_id'], # chain_id should be str
14
+ 'openapi_market_get': ['apikey', 'chain_id'], # chain_id should be str
15
+ 'openapi_market_market_id_get': ['apikey', 'market_id'],
16
+ 'openapi_market_categorical_market_id_get': ['apikey', 'market_id'],
17
+ 'openapi_token_price_history_get': ['apikey', 'token_id', 'interval', 'start_time', 'bars'],
18
+ 'openapi_token_orderbook_get': ['apikey', 'token_id'],
19
+ 'openapi_token_latest_price_get': ['apikey', 'token_id'],
20
+ 'openapi_token_fee_rates_get': ['apikey', 'token_id'],
21
+ 'openapi_order_post': ['apikey', 'v2_add_order_req'],
22
+ 'openapi_order_cancel_post': ['apikey', 'openapi_cancel_order_request_open_api'],
23
+ 'openapi_order_get': ['apikey', 'chain_id'], # chain_id should be str
24
+ 'openapi_order_order_id_get': ['apikey', 'order_id'],
25
+ 'openapi_positions_get': ['apikey', 'chain_id'], # chain_id should be str
26
+ 'openapi_user_balance_get': ['apikey', 'wallet_address', 'chain_id'], # chain_id should be str
27
+ 'openapi_trade_get': ['apikey', 'chain_id'], # chain_id should be str
28
+
29
+ # User API calls
30
+ 'openapi_user_auth_get': ['apikey'],
31
+ }
32
+
33
+ def verify_api_signatures():
34
+ """Verify that all API methods have the expected signatures"""
35
+ errors = []
36
+
37
+ # Check PredictionMarketApi methods
38
+ for method_name, expected_params in EXPECTED_API_CALLS.items():
39
+ if method_name == 'openapi_user_auth_get':
40
+ continue # This is in UserApi
41
+
42
+ if not hasattr(PredictionMarketApi, method_name):
43
+ errors.append(f"❌ Method {method_name} not found in PredictionMarketApi")
44
+ continue
45
+
46
+ method = getattr(PredictionMarketApi, method_name)
47
+ sig = inspect.signature(method)
48
+ params = list(sig.parameters.keys())
49
+
50
+ # Remove 'self' from params
51
+ if 'self' in params:
52
+ params.remove('self')
53
+
54
+ # Check if all expected params are in the signature
55
+ for expected_param in expected_params:
56
+ if expected_param not in params:
57
+ errors.append(f"❌ {method_name}: missing parameter '{expected_param}'")
58
+
59
+ # Check UserApi methods
60
+ if hasattr(UserApi, 'openapi_user_auth_get'):
61
+ method = getattr(UserApi, 'openapi_user_auth_get')
62
+ sig = inspect.signature(method)
63
+ params = list(sig.parameters.keys())
64
+
65
+ if 'self' in params:
66
+ params.remove('self')
67
+
68
+ if 'apikey' not in params:
69
+ errors.append("❌ openapi_user_auth_get: missing parameter 'apikey'")
70
+ else:
71
+ errors.append("❌ Method openapi_user_auth_get not found in UserApi")
72
+
73
+ return errors
74
+
75
+ def check_sdk_calls():
76
+ """Check that SDK methods call the API with correct parameters"""
77
+ import re
78
+
79
+ # Read sdk.py
80
+ with open('/Users/nikli/Work/openapi/openapi/python_sdk/opinion_clob_sdk/sdk.py', 'r') as f:
81
+ sdk_content = f.read()
82
+
83
+ issues = []
84
+
85
+ # Find all API calls in SDK
86
+ api_call_pattern = r'self\.(market_api|user_api)\.(\w+)\((.*?)\)'
87
+ matches = re.finditer(api_call_pattern, sdk_content, re.MULTILINE | re.DOTALL)
88
+
89
+ for match in matches:
90
+ api_type = match.group(1)
91
+ method_name = match.group(2)
92
+ params_str = match.group(3)
93
+
94
+ # Check for apikey parameter
95
+ if 'apikey=' not in params_str:
96
+ issues.append(f"⚠️ {method_name}: missing apikey parameter")
97
+ elif 'apikey=self.api_key' not in params_str:
98
+ issues.append(f"⚠️ {method_name}: apikey should be self.api_key")
99
+
100
+ # Check for chain_id parameter (should be str)
101
+ if 'chain_id=' in params_str:
102
+ if 'chain_id=str(self.chain_id)' not in params_str:
103
+ issues.append(f"⚠️ {method_name}: chain_id should be str(self.chain_id)")
104
+
105
+ return issues
106
+
107
+ if __name__ == '__main__':
108
+ print("=" * 70)
109
+ print("Verifying API Signatures in opinion_api")
110
+ print("=" * 70)
111
+
112
+ errors = verify_api_signatures()
113
+ if errors:
114
+ for error in errors:
115
+ print(error)
116
+ print(f"\n❌ Found {len(errors)} signature issues")
117
+ else:
118
+ print("✅ All API signatures verified successfully")
119
+
120
+ print("\n" + "=" * 70)
121
+ print("Checking SDK API Calls")
122
+ print("=" * 70)
123
+
124
+ issues = check_sdk_calls()
125
+ if issues:
126
+ for issue in issues:
127
+ print(issue)
128
+ print(f"\n⚠️ Found {len(issues)} potential issues in SDK calls")
129
+ else:
130
+ print("✅ All SDK API calls verified successfully")
131
+
132
+ if not errors and not issues:
133
+ print("\n" + "=" * 70)
134
+ print("🎉 All verifications passed!")
135
+ print("=" * 70)
@@ -314,7 +314,7 @@ class Client:
314
314
 
315
315
  result = self.market_api.openapi_market_get(
316
316
  apikey=self.api_key,
317
- topic_type=topic_type.value if topic_type else None,
317
+ market_type=topic_type.value if topic_type else None,
318
318
  page=page,
319
319
  limit=limit,
320
320
  chain_id=str(self.chain_id),
@@ -376,8 +376,15 @@ class Client:
376
376
  logging.error(f"API error: {e}")
377
377
  raise OpenApiError(f"Failed to get categorical market: {e}")
378
378
 
379
- def get_price_history(self, token_id, interval="1hour", start_time=int(time()), bars=60):
380
- """Get price history/candlestick data for a token"""
379
+ def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
380
+ """Get price history/candlestick data for a token
381
+
382
+ Args:
383
+ token_id: Token ID
384
+ interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
385
+ start_at: Start timestamp in Unix seconds (optional)
386
+ end_at: End timestamp in Unix seconds (optional)
387
+ """
381
388
  try:
382
389
  if not token_id:
383
390
  raise InvalidParamError(MISSING_TOKEN_ID_MSG)
@@ -389,8 +396,8 @@ class Client:
389
396
  apikey=self.api_key,
390
397
  token_id=token_id,
391
398
  interval=interval,
392
- start_time=start_time,
393
- bars=bars
399
+ start_at=start_at,
400
+ end_at=end_at
394
401
  )
395
402
  return result
396
403
  except InvalidParamError as e:
@@ -901,15 +908,11 @@ class Client:
901
908
  logging.error(f"API error: {e}")
902
909
  raise OpenApiError(f"Failed to get positions: {e}")
903
910
 
904
- def get_my_balances(self, wallet_address=None):
905
- """Get user's balances"""
911
+ def get_my_balances(self):
912
+ """Get user's balances (uses authenticated user from apikey)"""
906
913
  try:
907
- if not wallet_address:
908
- wallet_address = self.contract_caller.signer.address()
909
-
910
914
  result = self.market_api.openapi_user_balance_get(
911
915
  apikey=self.api_key,
912
- wallet_address=wallet_address,
913
916
  chain_id=str(self.chain_id)
914
917
  )
915
918
  return result
@@ -314,7 +314,7 @@ class Client:
314
314
 
315
315
  result = self.market_api.openapi_market_get(
316
316
  apikey=self.api_key,
317
- topic_type=topic_type.value if topic_type else None,
317
+ market_type=topic_type.value if topic_type else None,
318
318
  page=page,
319
319
  limit=limit,
320
320
  chain_id=str(self.chain_id),
@@ -376,8 +376,15 @@ class Client:
376
376
  logging.error(f"API error: {e}")
377
377
  raise OpenApiError(f"Failed to get categorical market: {e}")
378
378
 
379
- def get_price_history(self, token_id, interval="1hour", start_time=int(time()), bars=60):
380
- """Get price history/candlestick data for a token"""
379
+ def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
380
+ """Get price history/candlestick data for a token
381
+
382
+ Args:
383
+ token_id: Token ID
384
+ interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
385
+ start_at: Start timestamp in Unix seconds (optional)
386
+ end_at: End timestamp in Unix seconds (optional)
387
+ """
381
388
  try:
382
389
  if not token_id:
383
390
  raise InvalidParamError(MISSING_TOKEN_ID_MSG)
@@ -389,8 +396,8 @@ class Client:
389
396
  apikey=self.api_key,
390
397
  token_id=token_id,
391
398
  interval=interval,
392
- start_time=start_time,
393
- bars=bars
399
+ start_at=start_at,
400
+ end_at=end_at
394
401
  )
395
402
  return result
396
403
  except InvalidParamError as e:
@@ -901,15 +908,11 @@ class Client:
901
908
  logging.error(f"API error: {e}")
902
909
  raise OpenApiError(f"Failed to get positions: {e}")
903
910
 
904
- def get_my_balances(self, wallet_address=None):
905
- """Get user's balances"""
911
+ def get_my_balances(self):
912
+ """Get user's balances (uses authenticated user from apikey)"""
906
913
  try:
907
- if not wallet_address:
908
- wallet_address = self.contract_caller.signer.address()
909
-
910
914
  result = self.market_api.openapi_user_balance_get(
911
915
  apikey=self.api_key,
912
- wallet_address=wallet_address,
913
916
  chain_id=str(self.chain_id)
914
917
  )
915
918
  return result
opinion_clob_sdk/sdk.py CHANGED
@@ -314,7 +314,7 @@ class Client:
314
314
 
315
315
  result = self.market_api.openapi_market_get(
316
316
  apikey=self.api_key,
317
- topic_type=topic_type.value if topic_type else None,
317
+ market_type=topic_type.value if topic_type else None,
318
318
  page=page,
319
319
  limit=limit,
320
320
  chain_id=str(self.chain_id),
@@ -376,8 +376,15 @@ class Client:
376
376
  logging.error(f"API error: {e}")
377
377
  raise OpenApiError(f"Failed to get categorical market: {e}")
378
378
 
379
- def get_price_history(self, token_id, interval="1hour", start_time=int(time()), bars=60):
380
- """Get price history/candlestick data for a token"""
379
+ def get_price_history(self, token_id, interval="1h", start_at=None, end_at=None):
380
+ """Get price history/candlestick data for a token
381
+
382
+ Args:
383
+ token_id: Token ID
384
+ interval: Price data interval: 1m, 1h, 1d, 1w, max (default: 1h)
385
+ start_at: Start timestamp in Unix seconds (optional)
386
+ end_at: End timestamp in Unix seconds (optional)
387
+ """
381
388
  try:
382
389
  if not token_id:
383
390
  raise InvalidParamError(MISSING_TOKEN_ID_MSG)
@@ -389,8 +396,8 @@ class Client:
389
396
  apikey=self.api_key,
390
397
  token_id=token_id,
391
398
  interval=interval,
392
- start_time=start_time,
393
- bars=bars
399
+ start_at=start_at,
400
+ end_at=end_at
394
401
  )
395
402
  return result
396
403
  except InvalidParamError as e:
@@ -901,15 +908,11 @@ class Client:
901
908
  logging.error(f"API error: {e}")
902
909
  raise OpenApiError(f"Failed to get positions: {e}")
903
910
 
904
- def get_my_balances(self, wallet_address=None):
905
- """Get user's balances"""
911
+ def get_my_balances(self):
912
+ """Get user's balances (uses authenticated user from apikey)"""
906
913
  try:
907
- if not wallet_address:
908
- wallet_address = self.contract_caller.signer.address()
909
-
910
914
  result = self.market_api.openapi_user_balance_get(
911
915
  apikey=self.api_key,
912
- wallet_address=wallet_address,
913
916
  chain_id=str(self.chain_id)
914
917
  )
915
918
  return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opinion_clob_sdk
3
- Version: 0.1.5
3
+ Version: 0.1.6
4
4
  Summary: Opinion CLOB SDK - Python SDK for Opinion Prediction Market Central Limit Order Book API
5
5
  Home-page: https://opinion.trade
6
6
  Author: Opinion Labs
@@ -1,7 +1,7 @@
1
- opinion_clob_sdk/__init__.py,sha256=7mokIpg-Axm-axpQxDXZlK5_vWpYGxMRPmqxTQiQ7MA,624
1
+ opinion_clob_sdk/__init__.py,sha256=6caJl3CeO_qbCcOqAAp69dE9XQR2W6sX0z5g7YSDeaU,624
2
2
  opinion_clob_sdk/config.py,sha256=JoQvyK5IAnPiwwB8YZsmUtdEr-5hW2YG6iz1pOnLvDk,139
3
3
  opinion_clob_sdk/model.py,sha256=UBrdsg3FtSV1xl3pihkXwv_frI2w2z68VI0cpv2LQh0,287
4
- opinion_clob_sdk/sdk.py,sha256=pXgbzwfcs2x2cqIwabo1Y-Ofi18lj-TPINF3jeMrm1U,39162
4
+ opinion_clob_sdk/sdk.py,sha256=u9MFg4LXdlNMo49rbkFMAzWY3m8UMDA8gZt2UQh8LJI,39276
5
5
  opinion_clob_sdk/verify_api_calls.py,sha256=MU4NEyfQ5hDmFJ0lT8g7KXVdlZ0cBtFyBTCbhhfI6a4,5031
6
6
  opinion_clob_sdk/chain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  opinion_clob_sdk/chain/contract_caller.py,sha256=AKCD1ZvLTbJX_YWFJecRtZ4Pi7L3_20Q7YOSGfAolEY,17148
@@ -41,10 +41,10 @@ opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0
41
41
  opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py,sha256=8oGhNkS2k2Cy5pG6YNt_BKytS3AEtPeXv4rkyXv_p0M,380
42
42
  opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py,sha256=YCUWTpf_pR44iUUkDl42f3n2YXSVGlTBcvMtReN7rlM,21922
43
43
  opinion_clob_sdk/chain/safe/safe_contracts/utils.py,sha256=xnW8JSq8tVMfvZ4lhT-L96P3Usjs2zrZ5jzrNZvFHjc,631
44
- opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=7mokIpg-Axm-axpQxDXZlK5_vWpYGxMRPmqxTQiQ7MA,624
44
+ opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=6caJl3CeO_qbCcOqAAp69dE9XQR2W6sX0z5g7YSDeaU,624
45
45
  opinion_clob_sdk/opinion_clob_sdk/config.py,sha256=JoQvyK5IAnPiwwB8YZsmUtdEr-5hW2YG6iz1pOnLvDk,139
46
46
  opinion_clob_sdk/opinion_clob_sdk/model.py,sha256=UBrdsg3FtSV1xl3pihkXwv_frI2w2z68VI0cpv2LQh0,287
47
- opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=pXgbzwfcs2x2cqIwabo1Y-Ofi18lj-TPINF3jeMrm1U,39162
47
+ opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=u9MFg4LXdlNMo49rbkFMAzWY3m8UMDA8gZt2UQh8LJI,39276
48
48
  opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py,sha256=MU4NEyfQ5hDmFJ0lT8g7KXVdlZ0cBtFyBTCbhhfI6a4,5031
49
49
  opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py,sha256=AKCD1ZvLTbJX_YWFJecRtZ4Pi7L3_20Q7YOSGfAolEY,17148
@@ -84,10 +84,10 @@ opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallba
84
84
  opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py,sha256=8oGhNkS2k2Cy5pG6YNt_BKytS3AEtPeXv4rkyXv_p0M,380
85
85
  opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py,sha256=YCUWTpf_pR44iUUkDl42f3n2YXSVGlTBcvMtReN7rlM,21922
86
86
  opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py,sha256=xnW8JSq8tVMfvZ4lhT-L96P3Usjs2zrZ5jzrNZvFHjc,631
87
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=7mokIpg-Axm-axpQxDXZlK5_vWpYGxMRPmqxTQiQ7MA,624
87
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=6caJl3CeO_qbCcOqAAp69dE9XQR2W6sX0z5g7YSDeaU,624
88
88
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py,sha256=JoQvyK5IAnPiwwB8YZsmUtdEr-5hW2YG6iz1pOnLvDk,139
89
89
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py,sha256=UBrdsg3FtSV1xl3pihkXwv_frI2w2z68VI0cpv2LQh0,287
90
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=pXgbzwfcs2x2cqIwabo1Y-Ofi18lj-TPINF3jeMrm1U,39162
90
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=u9MFg4LXdlNMo49rbkFMAzWY3m8UMDA8gZt2UQh8LJI,39276
91
91
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py,sha256=MU4NEyfQ5hDmFJ0lT8g7KXVdlZ0cBtFyBTCbhhfI6a4,5031
92
92
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
93
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py,sha256=AKCD1ZvLTbJX_YWFJecRtZ4Pi7L3_20Q7YOSGfAolEY,17148
@@ -127,10 +127,11 @@ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/com
127
127
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py,sha256=8oGhNkS2k2Cy5pG6YNt_BKytS3AEtPeXv4rkyXv_p0M,380
128
128
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py,sha256=YCUWTpf_pR44iUUkDl42f3n2YXSVGlTBcvMtReN7rlM,21922
129
129
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py,sha256=xnW8JSq8tVMfvZ4lhT-L96P3Usjs2zrZ5jzrNZvFHjc,631
130
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=7mokIpg-Axm-axpQxDXZlK5_vWpYGxMRPmqxTQiQ7MA,624
130
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=6caJl3CeO_qbCcOqAAp69dE9XQR2W6sX0z5g7YSDeaU,624
131
131
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py,sha256=JoQvyK5IAnPiwwB8YZsmUtdEr-5hW2YG6iz1pOnLvDk,139
132
132
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py,sha256=UBrdsg3FtSV1xl3pihkXwv_frI2w2z68VI0cpv2LQh0,287
133
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=pXgbzwfcs2x2cqIwabo1Y-Ofi18lj-TPINF3jeMrm1U,39162
133
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=u9MFg4LXdlNMo49rbkFMAzWY3m8UMDA8gZt2UQh8LJI,39276
134
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py,sha256=MU4NEyfQ5hDmFJ0lT8g7KXVdlZ0cBtFyBTCbhhfI6a4,5031
134
135
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
136
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py,sha256=AKCD1ZvLTbJX_YWFJecRtZ4Pi7L3_20Q7YOSGfAolEY,17148
136
137
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py,sha256=6SSx4T_WZL8BxzRbfGSDp6eGD4zJ5ACeBB58DlrpmoA,234
@@ -169,10 +170,10 @@ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/s
169
170
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py,sha256=8oGhNkS2k2Cy5pG6YNt_BKytS3AEtPeXv4rkyXv_p0M,380
170
171
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py,sha256=YCUWTpf_pR44iUUkDl42f3n2YXSVGlTBcvMtReN7rlM,21922
171
172
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py,sha256=xnW8JSq8tVMfvZ4lhT-L96P3Usjs2zrZ5jzrNZvFHjc,631
172
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=7mokIpg-Axm-axpQxDXZlK5_vWpYGxMRPmqxTQiQ7MA,624
173
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=6caJl3CeO_qbCcOqAAp69dE9XQR2W6sX0z5g7YSDeaU,624
173
174
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py,sha256=JoQvyK5IAnPiwwB8YZsmUtdEr-5hW2YG6iz1pOnLvDk,139
174
175
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py,sha256=UBrdsg3FtSV1xl3pihkXwv_frI2w2z68VI0cpv2LQh0,287
175
- opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=pXgbzwfcs2x2cqIwabo1Y-Ofi18lj-TPINF3jeMrm1U,39162
176
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=u9MFg4LXdlNMo49rbkFMAzWY3m8UMDA8gZt2UQh8LJI,39276
176
177
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
178
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py,sha256=AKCD1ZvLTbJX_YWFJecRtZ4Pi7L3_20Q7YOSGfAolEY,17148
178
179
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py,sha256=6SSx4T_WZL8BxzRbfGSDp6eGD4zJ5ACeBB58DlrpmoA,234
@@ -211,7 +212,49 @@ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob
211
212
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py,sha256=8oGhNkS2k2Cy5pG6YNt_BKytS3AEtPeXv4rkyXv_p0M,380
212
213
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py,sha256=YCUWTpf_pR44iUUkDl42f3n2YXSVGlTBcvMtReN7rlM,21922
213
214
  opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py,sha256=xnW8JSq8tVMfvZ4lhT-L96P3Usjs2zrZ5jzrNZvFHjc,631
214
- opinion_clob_sdk-0.1.5.dist-info/METADATA,sha256=bvJX1PfeBe5L1pcn25Y_J9WVBWRTUJOnvoGQ_l9Ydcs,2776
215
- opinion_clob_sdk-0.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
216
- opinion_clob_sdk-0.1.5.dist-info/top_level.txt,sha256=4gH76GRX1WZSc3b146FfxE6BAxggJD8y3NMEHUOSPA0,17
217
- opinion_clob_sdk-0.1.5.dist-info/RECORD,,
215
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py,sha256=6caJl3CeO_qbCcOqAAp69dE9XQR2W6sX0z5g7YSDeaU,624
216
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py,sha256=JoQvyK5IAnPiwwB8YZsmUtdEr-5hW2YG6iz1pOnLvDk,139
217
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py,sha256=UBrdsg3FtSV1xl3pihkXwv_frI2w2z68VI0cpv2LQh0,287
218
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py,sha256=u9MFg4LXdlNMo49rbkFMAzWY3m8UMDA8gZt2UQh8LJI,39276
219
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
220
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py,sha256=AKCD1ZvLTbJX_YWFJecRtZ4Pi7L3_20Q7YOSGfAolEY,17148
221
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py,sha256=6SSx4T_WZL8BxzRbfGSDp6eGD4zJ5ACeBB58DlrpmoA,234
222
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py,sha256=P_MpetUKMNnT_hchZ0A9q7-g_ZKjkOr-BLldPXB4J7o,13998
224
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py,sha256=C56GdZeMxcgdJTmMQKSfA8xHzDdNT71SaNf6xhJIVMY,2843
225
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py,sha256=afsZ0OahGbCzNPE2rXKU1k8gQymkh4ODLKh4KPklvnA,70
227
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py,sha256=NAMHcMREbRUgrz1-28sqpPoMD8LkRJSyUn7-FLUkYsM,447
228
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py,sha256=-sf0Vq16bJ8eAc-p63r0TLqtbQkKWEQ6ccSAoQy1r7M,3837
229
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
230
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py,sha256=lw925Mz6MerqCyXNgonhNP-495gZPm_me4HtlhyhVHM,1272
231
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py,sha256=525fSH8Q241VjxdllBkWi3DiW_-6I1AmG-iHwZBTp4E,47
232
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py,sha256=NybKbNhRd1jceSjtp6lL9x1DjDzJ4ClhsAK2zS58P4c,2968
233
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py,sha256=0xPLO9rEDsw_s3UQiooquEarvFe8KneafiaY6PgkLIo,1773
234
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py,sha256=fI2NhqX_cdUmZivliki4rHXJCxQQY5ykjh8a58FFfPE,5852
236
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py,sha256=kYXJ0Ikk3Qnr00yCIfrtJibFve8DUjNSJ_xiLw7IphY,185
237
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py,sha256=FZVZnutyLmgiNCVoz-1fjxxFzhH3z24xy5BY6pkIfs8,177
238
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py,sha256=lKoqi7gVay9NjCv_2QTdelP4EFy61Ez0UeY1ytOmooM,224
239
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py,sha256=H4UKUXJxR9pvwRHU4WM1p6wZ6yGjApOpWfEMYj-W_iE,572
241
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py,sha256=aP9-PfC97ZYtX0dKOYKAyxITVrCDMIAY2_mHMdU8IJM,90
242
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py,sha256=kp0jfnP93JyEkEgwPERL6MZ9D8ozbioURcKjMwSLjgE,1498
243
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py,sha256=l-lWlb7jSzmNCyFbpAr-d8SYEKM4QRm_h0tF53T3CzE,12659
244
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py,sha256=OO-010or-qCCwCSTSh4qKGmoSwEsL2IYECW8IYmSmKQ,5216
245
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py,sha256=W1Xn73DSzE3PZ6ITyikhdWhosY3wdey-scX0Jci037I,12559
246
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py,sha256=pbCYOLa_6cQbC0KOA7t41ItunauhHfgN7uneENfMXPk,1384
247
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py,sha256=QxKzv0EA7uwjakFMDVoDLrzYlZANpEhblPBQ7ZcF9zE,17211
248
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py,sha256=8l6t6R21E9Mj4_USagIp1GiUlJmAp0Cqq9VpB7Zk960,1978
249
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py,sha256=wytgXXRbpyccM_HxpQLeDzfo40Ch_K-Z_ivORb-eNZo,419
250
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py,sha256=1u4yKwMCvfOlg9NsWbsM2WszQoO1wd6D2Z2aGAb1jjo,6469
251
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py,sha256=ge0S6t2RtFc_mLFr4D93l6WLS2EONKgkuPGkcP_nDJ4,5915
252
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
253
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py,sha256=_aENMzhiQgKSzXxn-TnVFWE84lIgDv1Iiw-VdIC1IMw,5968
254
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py,sha256=8oGhNkS2k2Cy5pG6YNt_BKytS3AEtPeXv4rkyXv_p0M,380
255
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py,sha256=YCUWTpf_pR44iUUkDl42f3n2YXSVGlTBcvMtReN7rlM,21922
256
+ opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py,sha256=xnW8JSq8tVMfvZ4lhT-L96P3Usjs2zrZ5jzrNZvFHjc,631
257
+ opinion_clob_sdk-0.1.6.dist-info/METADATA,sha256=7_Jb8Lm_licGEHAKPi0DNQE7yL48ptfadz-K7QXFTdw,2776
258
+ opinion_clob_sdk-0.1.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
259
+ opinion_clob_sdk-0.1.6.dist-info/top_level.txt,sha256=4gH76GRX1WZSc3b146FfxE6BAxggJD8y3NMEHUOSPA0,17
260
+ opinion_clob_sdk-0.1.6.dist-info/RECORD,,