opinion-clob-sdk 0.1.9__py3-none-any.whl → 0.4.2__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.
Files changed (361) hide show
  1. opinion_clob_sdk/__init__.py +3 -3
  2. opinion_clob_sdk/chain/contract_caller.py +56 -2
  3. opinion_clob_sdk/chain/contracts/erc20.py +21 -0
  4. opinion_clob_sdk/chain/py_order_utils/abi/Exchange.json +1851 -0
  5. opinion_clob_sdk/chain/py_order_utils/abi/FeeManager.json +4416 -0
  6. opinion_clob_sdk/chain/py_order_utils/abi/FeeManager.py +9 -0
  7. opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +1 -1
  8. opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +1 -1
  9. opinion_clob_sdk/chain/py_order_utils/utils.py +100 -35
  10. opinion_clob_sdk/chain/safe/safe_test.py +1 -1
  11. opinion_clob_sdk/config.py +16 -1
  12. opinion_clob_sdk/model.py +26 -2
  13. opinion_clob_sdk/sdk.py +240 -102
  14. opinion_clob_sdk/verify_checksum_addresses.py +63 -0
  15. {opinion_clob_sdk-0.1.9.dist-info → opinion_clob_sdk-0.4.2.dist-info}/METADATA +12 -10
  16. opinion_clob_sdk-0.4.2.dist-info/RECORD +51 -0
  17. opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  18. opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  19. opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  20. opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  21. opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  22. opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  23. opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  24. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
  25. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
  26. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +0 -41
  27. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +0 -2
  28. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +0 -90
  29. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +0 -40
  30. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  31. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
  32. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +0 -254
  33. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +0 -9
  34. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +0 -8
  35. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +0 -8
  36. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  37. opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  38. opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  39. opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  40. opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  41. opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  42. opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  43. opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  44. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  45. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
  46. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py +0 -327
  47. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +0 -22
  48. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +0 -1035
  49. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  50. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  51. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  52. opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  53. opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  54. opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  55. opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  56. opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  57. opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  58. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  59. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  60. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  61. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  62. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  63. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  64. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  65. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
  66. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
  67. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +0 -41
  68. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +0 -2
  69. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +0 -90
  70. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +0 -40
  71. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  72. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
  73. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +0 -254
  74. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +0 -9
  75. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +0 -8
  76. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +0 -8
  77. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  78. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  79. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  80. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  81. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  82. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  83. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  84. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  85. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  86. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
  87. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py +0 -327
  88. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +0 -22
  89. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +0 -1035
  90. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  91. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  92. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  93. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  94. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  95. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  96. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  97. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  98. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  99. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  100. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  101. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  102. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  103. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  104. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  105. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  106. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
  107. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
  108. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +0 -41
  109. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +0 -2
  110. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +0 -90
  111. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +0 -40
  112. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  113. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
  114. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +0 -254
  115. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +0 -9
  116. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +0 -8
  117. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +0 -8
  118. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  119. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  120. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  121. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  122. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  123. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  124. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  125. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  126. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  127. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
  128. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/compatibility_fallback_handler_v1_3_0.py +0 -327
  129. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +0 -22
  130. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +0 -1035
  131. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  132. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  133. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  134. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  135. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  136. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  137. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  138. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  139. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  140. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  141. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  142. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  143. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  144. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  145. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  146. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  147. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/__init__.py +0 -0
  148. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/__init__.py +0 -0
  149. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/base_builder.py +0 -41
  150. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/exception.py +0 -2
  151. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder.py +0 -90
  152. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/builders/order_builder_test.py +0 -40
  153. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  154. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/__init__.py +0 -0
  155. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order.py +0 -254
  156. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/order_type.py +0 -9
  157. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/sides.py +0 -8
  158. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/model/signatures.py +0 -8
  159. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  160. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  161. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  162. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  163. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  164. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  165. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  166. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  167. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  168. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/__init__.py +0 -0
  169. 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 +0 -327
  170. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/multisend_v1_3_0.py +0 -22
  171. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/safe_v1_3_0.py +0 -1035
  172. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  173. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  174. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  175. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  176. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  177. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  178. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  179. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  180. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  181. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  182. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  183. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  184. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  185. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  186. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  187. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  188. 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
  189. 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
  190. 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 +0 -41
  191. 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 +0 -2
  192. 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 +0 -90
  193. 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 +0 -40
  194. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  195. 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
  196. 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 +0 -254
  197. 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 +0 -9
  198. 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 +0 -8
  199. 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 +0 -8
  200. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  201. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  202. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  203. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  204. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  205. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  206. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  207. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  208. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  209. 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
  210. 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 +0 -327
  211. 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 +0 -22
  212. 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 +0 -1035
  213. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  214. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  215. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  216. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  217. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  218. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  219. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  220. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  221. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  222. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  223. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  224. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  225. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  226. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  227. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  228. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  229. opinion_clob_sdk/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
  230. opinion_clob_sdk/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
  231. opinion_clob_sdk/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 +0 -41
  232. opinion_clob_sdk/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 +0 -2
  233. opinion_clob_sdk/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 +0 -90
  234. opinion_clob_sdk/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 +0 -40
  235. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  236. opinion_clob_sdk/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
  237. opinion_clob_sdk/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 +0 -254
  238. opinion_clob_sdk/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 +0 -9
  239. opinion_clob_sdk/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 +0 -8
  240. opinion_clob_sdk/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 +0 -8
  241. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  242. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  243. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  244. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  245. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  246. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  247. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  248. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  249. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  250. opinion_clob_sdk/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
  251. opinion_clob_sdk/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 +0 -327
  252. opinion_clob_sdk/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 +0 -22
  253. opinion_clob_sdk/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 +0 -1035
  254. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  255. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  256. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  257. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  258. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  259. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  260. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  261. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  262. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  263. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  264. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  265. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  266. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  267. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  268. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  269. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  270. opinion_clob_sdk/opinion_clob_sdk/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
  271. opinion_clob_sdk/opinion_clob_sdk/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
  272. opinion_clob_sdk/opinion_clob_sdk/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 +0 -41
  273. opinion_clob_sdk/opinion_clob_sdk/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 +0 -2
  274. opinion_clob_sdk/opinion_clob_sdk/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 +0 -90
  275. opinion_clob_sdk/opinion_clob_sdk/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 +0 -40
  276. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  277. opinion_clob_sdk/opinion_clob_sdk/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
  278. opinion_clob_sdk/opinion_clob_sdk/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 +0 -254
  279. opinion_clob_sdk/opinion_clob_sdk/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 +0 -9
  280. opinion_clob_sdk/opinion_clob_sdk/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 +0 -8
  281. opinion_clob_sdk/opinion_clob_sdk/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 +0 -8
  282. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  283. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  284. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  285. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  286. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  287. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  288. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  289. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  290. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  291. opinion_clob_sdk/opinion_clob_sdk/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
  292. opinion_clob_sdk/opinion_clob_sdk/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 +0 -327
  293. opinion_clob_sdk/opinion_clob_sdk/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 +0 -22
  294. opinion_clob_sdk/opinion_clob_sdk/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 +0 -1035
  295. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  296. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  297. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  298. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  299. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  300. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  301. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  302. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  303. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  304. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/__init__.py +0 -26
  305. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/__init__.py +0 -0
  306. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contract_caller.py +0 -390
  307. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/__init__.py +0 -0
  308. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/conditional_tokens.py +0 -707
  309. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/contracts/erc20.py +0 -111
  310. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/exception.py +0 -11
  311. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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
  312. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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
  313. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -41
  314. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -2
  315. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -90
  316. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -40
  317. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/constants.py +0 -2
  318. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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
  319. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -254
  320. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -9
  321. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -8
  322. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -8
  323. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/signer.py +0 -20
  324. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/py_order_utils/utils.py +0 -115
  325. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/__init__.py +0 -0
  326. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/constants.py +0 -19
  327. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/eip712/__init__.py +0 -176
  328. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/enums.py +0 -6
  329. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/exceptions.py +0 -94
  330. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/multisend.py +0 -347
  331. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe.py +0 -141
  332. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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
  333. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -327
  334. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -22
  335. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/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 +0 -1035
  336. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_contracts/utils.py +0 -26
  337. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_signature.py +0 -364
  338. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_test.py +0 -37
  339. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/safe_tx.py +0 -437
  340. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/signatures.py +0 -63
  341. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/typing.py +0 -17
  342. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/chain/safe/utils.py +0 -218
  343. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/config.py +0 -4
  344. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/model.py +0 -19
  345. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  346. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  347. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  348. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +0 -135
  349. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  350. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +0 -135
  351. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  352. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +0 -135
  353. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  354. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +0 -135
  355. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  356. opinion_clob_sdk/opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +0 -135
  357. opinion_clob_sdk/opinion_clob_sdk/sdk.py +0 -957
  358. opinion_clob_sdk/opinion_clob_sdk/verify_api_calls.py +0 -135
  359. opinion_clob_sdk-0.1.9.dist-info/RECORD +0 -389
  360. {opinion_clob_sdk-0.1.9.dist-info → opinion_clob_sdk-0.4.2.dist-info}/WHEEL +0 -0
  361. {opinion_clob_sdk-0.1.9.dist-info → opinion_clob_sdk-0.4.2.dist-info}/top_level.txt +0 -0
opinion_clob_sdk/sdk.py CHANGED
@@ -17,8 +17,9 @@ from .chain.py_order_utils.constants import ZERO_ADDRESS, ZX
17
17
  from .chain.py_order_utils.model.signatures import POLY_GNOSIS_SAFE
18
18
  from .chain.py_order_utils.model.sides import BUY, SELL, OrderSide
19
19
  from .chain.py_order_utils.model.order_type import LIMIT_ORDER, MARKET_ORDER
20
- from .model import TopicStatus, TopicStatusFilter, TopicType
20
+ from .model import TopicStatus, TopicStatusFilter, TopicType, TopicSortType
21
21
  from .chain.py_order_utils.utils import calculate_order_amounts
22
+ from .config import DEFAULT_CONTRACT_ADDRESSES
22
23
 
23
24
  API_INTERNAL_ERROR_MSG = "Unable to process your request. Please contact technical support."
24
25
  MISSING_MARKET_ID_MSG = "market_id is required."
@@ -26,8 +27,8 @@ MISSING_TOKEN_ID_MSG = "token_id is required."
26
27
  MAX_DECIMALS = 18 # Standard maximum for ERC20 tokens (ETH, DAI, etc.)
27
28
 
28
29
  # Supported blockchain chain IDs
29
- CHAIN_ID_BASE_MAINNET = 8453 # Base mainnet
30
- SUPPORTED_CHAIN_IDS = [CHAIN_ID_BASE_MAINNET]
30
+ CHAIN_ID_BNB_MAINNET = 56 # BNB Chain (BSC) mainnet
31
+ SUPPORTED_CHAIN_IDS = [CHAIN_ID_BNB_MAINNET]
31
32
 
32
33
  class InvalidParamError(Exception):
33
34
  pass
@@ -82,8 +83,9 @@ class Client:
82
83
  rpc_url: str = '',
83
84
  private_key: HexStr = HexStr(''),
84
85
  multi_sig_addr: str = '',
85
- conditional_tokens_addr: ChecksumAddress = ChecksumAddress(''),
86
- multisend_addr: ChecksumAddress = ChecksumAddress(''),
86
+ conditional_tokens_addr: Optional[ChecksumAddress] = None,
87
+ multisend_addr: Optional[ChecksumAddress] = None,
88
+ fee_manager_addr: Optional[ChecksumAddress] = None,
87
89
  enable_trading_check_interval: int = 3600,
88
90
  quote_tokens_cache_ttl: int = 3600,
89
91
  market_cache_ttl: int = 300
@@ -94,12 +96,13 @@ class Client:
94
96
  Args:
95
97
  host: API host URL
96
98
  apikey: API authentication key
97
- chain_id: Blockchain chain ID (8453 for Base mainnet)
99
+ chain_id: Blockchain chain ID (56 for BNB Chain mainnet)
98
100
  rpc_url: RPC endpoint URL
99
101
  private_key: Private key for signing transactions
100
102
  multi_sig_addr: Multi-signature wallet address
101
- conditional_tokens_addr: Conditional tokens contract address
102
- multisend_addr: Multisend contract address
103
+ conditional_tokens_addr: Conditional tokens contract address (optional, uses default if not provided)
104
+ multisend_addr: Multisend contract address (optional, uses default if not provided)
105
+ fee_manager_addr: Fee manager contract address (optional, uses default if not provided)
103
106
  enable_trading_check_interval: Time interval (in seconds) to cache enable_trading checks.
104
107
  Default is 3600 (1 hour). Set to 0 to check every time.
105
108
  This significantly improves performance for frequent operations.
@@ -108,6 +111,25 @@ class Client:
108
111
  market_cache_ttl: Time interval (in seconds) to cache market data.
109
112
  Default is 300 (5 minutes). Set to 0 to disable caching.
110
113
  """
114
+ # Validate and set chain_id first
115
+ if chain_id not in SUPPORTED_CHAIN_IDS:
116
+ raise InvalidParamError(f'chain_id must be one of {SUPPORTED_CHAIN_IDS}')
117
+ self.chain_id = chain_id
118
+
119
+ # Use default contract addresses if not provided
120
+ if conditional_tokens_addr is None:
121
+ conditional_tokens_addr = ChecksumAddress(
122
+ DEFAULT_CONTRACT_ADDRESSES[chain_id]["conditional_tokens"]
123
+ )
124
+ if multisend_addr is None:
125
+ multisend_addr = ChecksumAddress(
126
+ DEFAULT_CONTRACT_ADDRESSES[chain_id]["multisend"]
127
+ )
128
+ if fee_manager_addr is None:
129
+ fee_manager_addr = ChecksumAddress(
130
+ DEFAULT_CONTRACT_ADDRESSES[chain_id]["fee_manager"]
131
+ )
132
+
111
133
  self.conf = Configuration(host=host)
112
134
  self.conf.api_key['ApiKeyAuth'] = apikey
113
135
  self.api_key = apikey
@@ -115,14 +137,11 @@ class Client:
115
137
  self.contract_caller = ContractCaller(rpc_url=rpc_url, private_key=private_key, multi_sig_addr=multi_sig_addr,
116
138
  conditional_tokens_addr=conditional_tokens_addr,
117
139
  multisend_addr=multisend_addr,
140
+ fee_manager_addr=fee_manager_addr,
118
141
  enable_trading_check_interval=enable_trading_check_interval)
119
142
  self.api_client = ApiClient(self.conf)
120
143
  self.market_api = PredictionMarketApi(self.api_client)
121
144
  self.user_api = UserApi(self.api_client)
122
- # Validate and set chain_id
123
- if chain_id not in SUPPORTED_CHAIN_IDS:
124
- raise InvalidParamError(f'chain_id must be one of {SUPPORTED_CHAIN_IDS}')
125
- self.chain_id = chain_id
126
145
 
127
146
  # Cache configuration
128
147
  self.quote_tokens_cache_ttl = quote_tokens_cache_ttl
@@ -151,7 +170,40 @@ class Client:
151
170
 
152
171
  return response.result.list
153
172
 
154
- def enable_trading(self) -> Tuple[Any, Any, Any]:
173
+ def _format_transaction_result(self, tx_hash: Any, safe_tx_hash: Any, return_value: Any) -> Tuple[str, str, Optional[str]]:
174
+ """Convert transaction result to JSON-serializable format
175
+
176
+ Args:
177
+ tx_hash: Transaction hash (HexBytes or similar)
178
+ safe_tx_hash: Safe transaction hash (HexBytes or similar)
179
+ return_value: Contract call return value (bytes or similar)
180
+
181
+ Returns:
182
+ Tuple of (tx_hash_hex, safe_tx_hash_hex, return_value_hex)
183
+ where all values are hex strings or None
184
+ """
185
+ # Convert tx_hash to hex string
186
+ tx_hash_hex = tx_hash.hex() if hasattr(tx_hash, 'hex') and tx_hash else None
187
+
188
+ # Convert safe_tx_hash to hex string
189
+ safe_tx_hash_hex = safe_tx_hash.hex() if hasattr(safe_tx_hash, 'hex') and safe_tx_hash else None
190
+
191
+ # Convert return_value (bytes) to hex string
192
+ return_value_hex = None
193
+ if return_value is not None:
194
+ if hasattr(return_value, 'hex'):
195
+ return_value_hex = return_value.hex()
196
+ elif isinstance(return_value, bytes):
197
+ return_value_hex = '0x' + return_value.hex()
198
+
199
+ return tx_hash_hex, safe_tx_hash_hex, return_value_hex
200
+
201
+ def enable_trading(self) -> Tuple[Optional[str], Optional[str], Optional[str]]:
202
+ """Enable trading by approving necessary tokens.
203
+
204
+ Returns:
205
+ Tuple of (tx_hash, safe_tx_hash, return_value) as hex strings
206
+ """
155
207
  quote_token_list_response = self.get_quote_tokens()
156
208
  quote_token_list = self._parse_list_response(quote_token_list_response, "get quote tokens")
157
209
 
@@ -166,98 +218,141 @@ class Client:
166
218
  logging.info(f'Supported quote tokens: {supported_quote_tokens}')
167
219
  if len(supported_quote_tokens) == 0:
168
220
  raise OpenApiError('No supported quote tokens found')
169
- return self.contract_caller.enable_trading(supported_quote_tokens)
221
+ tx_hash, safe_tx_hash, return_value = self.contract_caller.enable_trading(supported_quote_tokens)
222
+ return self._format_transaction_result(tx_hash, safe_tx_hash, return_value)
170
223
 
171
- def split(self, market_id: int, amount: int, check_approval: bool = True) -> Tuple[Any, Any, Any]:
224
+ def split(self, market_id: int, amount: int, check_approval: bool = True) -> Tuple[Optional[str], Optional[str], Optional[str]]:
172
225
  """Split collateral into outcome tokens for a market.
173
226
 
174
227
  Args:
175
228
  market_id: The market ID to split tokens for (required)
176
229
  amount: Amount of collateral to split in wei (required)
177
230
  check_approval: Whether to check and enable trading approvals first
231
+
232
+ Returns:
233
+ Tuple of (tx_hash, safe_tx_hash, return_value) as hex strings
178
234
  """
179
- if not market_id or market_id <= 0:
180
- raise InvalidParamError("market_id must be a positive integer")
181
- if not amount or amount <= 0:
182
- raise InvalidParamError("amount must be a positive integer")
235
+ try:
236
+ if not market_id or market_id <= 0:
237
+ raise InvalidParamError("market_id must be a positive integer")
238
+ if not amount or amount <= 0:
239
+ raise InvalidParamError("amount must be a positive integer")
183
240
 
184
- # Enable trading first for all trade operations.
185
- if check_approval:
186
- self.enable_trading()
241
+ # Enable trading first for all trade operations.
242
+ if check_approval:
243
+ self.enable_trading()
187
244
 
188
- topic_detail = self.get_market(market_id)
189
- market_data = self._validate_market_response(topic_detail, "get market for split")
245
+ topic_detail = self.get_market(market_id)
246
+ market_data = self._validate_market_response(topic_detail, "get market for split")
190
247
 
191
- if int(market_data.chain_id) != self.chain_id:
192
- raise OpenApiError('Cannot split on different chain')
248
+ if int(market_data.chain_id) != self.chain_id:
249
+ raise OpenApiError('Cannot split on different chain')
193
250
 
194
- status = market_data.status
195
- if not (status == TopicStatus.ACTIVATED.value or status == TopicStatus.RESOLVED.value or status == TopicStatus.RESOLVING.value):
196
- raise OpenApiError('Cannot split on non-activated/resolving/resolved market')
197
- collateral = fast_to_checksum_address(market_data.quote_token)
198
- condition_id = market_data.condition_id
251
+ status = market_data.status
252
+ if not (status == TopicStatus.ACTIVATED.value or status == TopicStatus.RESOLVED.value or status == TopicStatus.RESOLVING.value):
253
+ raise OpenApiError('Cannot split on non-activated/resolving/resolved market')
254
+ collateral = fast_to_checksum_address(market_data.quote_token)
255
+ condition_id = market_data.condition_id
199
256
 
200
- return self.contract_caller.split(collateral_token=collateral, condition_id=bytes.fromhex(condition_id), amount=amount)
257
+ tx_hash, safe_tx_hash, return_value = self.contract_caller.split(collateral_token=collateral, condition_id=bytes.fromhex(condition_id), amount=amount)
258
+ return self._format_transaction_result(tx_hash, safe_tx_hash, return_value)
259
+ except InvalidParamError as e:
260
+ logging.error(f"Validation error in split: {e}")
261
+ raise
262
+ except OpenApiError as e:
263
+ logging.error(f"API error in split: {e}")
264
+ raise
265
+ except Exception as e:
266
+ logging.error(f"Unexpected error in split: {e}")
267
+ raise OpenApiError(f"Failed to split collateral: {e}")
201
268
 
202
- def merge(self, market_id: int, amount: int, check_approval: bool = True) -> Tuple[Any, Any, Any]:
269
+ def merge(self, market_id: int, amount: int, check_approval: bool = True) -> Tuple[Optional[str], Optional[str], Optional[str]]:
203
270
  """Merge outcome tokens back into collateral for a market.
204
271
 
205
272
  Args:
206
273
  market_id: The market ID to merge tokens for (required)
207
274
  amount: Amount of outcome tokens to merge in wei (required)
208
275
  check_approval: Whether to check and enable trading approvals first
209
- """
210
- if not market_id or market_id <= 0:
211
- raise InvalidParamError("market_id must be a positive integer")
212
- if not amount or amount <= 0:
213
- raise InvalidParamError("amount must be a positive integer")
214
-
215
- # Enable trading first for all trade operations.
216
- if check_approval:
217
- self.enable_trading()
218
-
219
- topic_detail = self.get_market(market_id)
220
- market_data = self._validate_market_response(topic_detail, "get market for merge")
221
-
222
- if int(market_data.chain_id) != self.chain_id:
223
- raise OpenApiError('Cannot merge on different chain')
224
-
225
- status = market_data.status
226
- if not (status == TopicStatus.ACTIVATED.value or status == TopicStatus.RESOLVED.value or status == TopicStatus.RESOLVING.value):
227
- raise OpenApiError('Cannot merge on non-activated/resolving/resolved market')
228
- collateral = fast_to_checksum_address(market_data.quote_token)
229
- condition_id = market_data.condition_id
230
276
 
231
- return self.contract_caller.merge(collateral_token=collateral, condition_id=bytes.fromhex(condition_id),
232
- amount=amount)
277
+ Returns:
278
+ Tuple of (tx_hash, safe_tx_hash, return_value) as hex strings
279
+ """
280
+ try:
281
+ if not market_id or market_id <= 0:
282
+ raise InvalidParamError("market_id must be a positive integer")
283
+ if not amount or amount <= 0:
284
+ raise InvalidParamError("amount must be a positive integer")
285
+
286
+ # Enable trading first for all trade operations.
287
+ if check_approval:
288
+ self.enable_trading()
289
+
290
+ topic_detail = self.get_market(market_id)
291
+ market_data = self._validate_market_response(topic_detail, "get market for merge")
292
+
293
+ if int(market_data.chain_id) != self.chain_id:
294
+ raise OpenApiError('Cannot merge on different chain')
295
+
296
+ status = market_data.status
297
+ if not (status == TopicStatus.ACTIVATED.value or status == TopicStatus.RESOLVED.value or status == TopicStatus.RESOLVING.value):
298
+ raise OpenApiError('Cannot merge on non-activated/resolving/resolved market')
299
+ collateral = fast_to_checksum_address(market_data.quote_token)
300
+ condition_id = market_data.condition_id
301
+
302
+ tx_hash, safe_tx_hash, return_value = self.contract_caller.merge(collateral_token=collateral, condition_id=bytes.fromhex(condition_id),
303
+ amount=amount)
304
+ return self._format_transaction_result(tx_hash, safe_tx_hash, return_value)
305
+ except InvalidParamError as e:
306
+ logging.error(f"Validation error in merge: {e}")
307
+ raise
308
+ except OpenApiError as e:
309
+ logging.error(f"API error in merge: {e}")
310
+ raise
311
+ except Exception as e:
312
+ logging.error(f"Unexpected error in merge: {e}")
313
+ raise OpenApiError(f"Failed to merge tokens: {e}")
233
314
 
234
- def redeem(self, market_id: int, check_approval: bool = True) -> Tuple[Any, Any, Any]:
315
+ def redeem(self, market_id: int, check_approval: bool = True) -> Tuple[Optional[str], Optional[str], Optional[str]]:
235
316
  """Redeem winning outcome tokens for collateral after market resolution.
236
317
 
237
318
  Args:
238
319
  market_id: The market ID to redeem tokens for (required)
239
320
  check_approval: Whether to check and enable trading approvals first
240
- """
241
- if not market_id or market_id <= 0:
242
- raise InvalidParamError("market_id must be a positive integer")
243
321
 
244
- # Enable trading first for all trade operations.
245
- if check_approval:
246
- self.enable_trading()
247
-
248
- topic_detail = self.get_market(market_id)
249
- market_data = self._validate_market_response(topic_detail, "get market for redeem")
250
-
251
- if int(market_data.chain_id) != self.chain_id:
252
- raise OpenApiError('Cannot redeem on different chain')
253
-
254
- status = market_data.status
255
- if not status == TopicStatus.RESOLVED.value:
256
- raise OpenApiError('Cannot redeem on non-resolved market')
257
- collateral = market_data.quote_token
258
- condition_id = market_data.condition_id
259
- logging.info(f'Redeem: collateral={collateral}, condition_id={condition_id}')
260
- return self.contract_caller.redeem(collateral_token=collateral, condition_id=bytes.fromhex(condition_id))
322
+ Returns:
323
+ Tuple of (tx_hash, safe_tx_hash, return_value) as hex strings
324
+ """
325
+ try:
326
+ if not market_id or market_id <= 0:
327
+ raise InvalidParamError("market_id must be a positive integer")
328
+
329
+ # Enable trading first for all trade operations.
330
+ if check_approval:
331
+ self.enable_trading()
332
+
333
+ topic_detail = self.get_market(market_id)
334
+ market_data = self._validate_market_response(topic_detail, "get market for redeem")
335
+
336
+ if int(market_data.chain_id) != self.chain_id:
337
+ raise OpenApiError('Cannot redeem on different chain')
338
+
339
+ status = market_data.status
340
+ if not status == TopicStatus.RESOLVED.value:
341
+ raise OpenApiError('Cannot redeem on non-resolved market')
342
+ collateral = fast_to_checksum_address(market_data.quote_token)
343
+ condition_id = market_data.condition_id
344
+ logging.info(f'Redeem: collateral={collateral}, condition_id={condition_id}')
345
+ tx_hash, safe_tx_hash, return_value = self.contract_caller.redeem(collateral_token=collateral, condition_id=bytes.fromhex(condition_id))
346
+ return self._format_transaction_result(tx_hash, safe_tx_hash, return_value)
347
+ except InvalidParamError as e:
348
+ logging.error(f"Validation error in redeem: {e}")
349
+ raise
350
+ except OpenApiError as e:
351
+ logging.error(f"API error in redeem: {e}")
352
+ raise
353
+ except Exception as e:
354
+ logging.error(f"Unexpected error in redeem: {e}")
355
+ raise OpenApiError(f"Failed to redeem tokens: {e}")
261
356
 
262
357
  def get_quote_tokens(self, use_cache: bool = True) -> Any:
263
358
  """Get list of supported quote tokens
@@ -294,31 +389,40 @@ class Client:
294
389
 
295
390
  def get_markets(
296
391
  self,
297
- topic_type: Optional[TopicType] = None,
392
+ topic_type: TopicType = TopicType.ALL,
298
393
  page: int = 1,
299
394
  limit: int = 20,
300
- status: Optional[TopicStatusFilter] = None
395
+ status: Optional[TopicStatusFilter] = None,
396
+ sort_by: Optional['TopicSortType'] = None
301
397
  ) -> Any:
302
398
  """Get markets with pagination support.
303
399
 
304
400
  Args:
305
- topic_type: Optional filter by topic type
401
+ topic_type: Filter by topic type. Defaults to TopicType.ALL (2).
402
+ - TopicType.ALL (2): All Markets (default)
403
+ - TopicType.CATEGORICAL (1): Categorical Market
404
+ - TopicType.BINARY (0): Binary Market
306
405
  page: Page number (>= 1)
307
406
  limit: Number of items per page (1-20)
308
407
  status: Optional filter by status
408
+ sort_by: Optional sort type (TopicSortType enum). Defaults to BY_TIME_DESC if not specified.
309
409
  """
310
410
  if page < 1:
311
411
  raise InvalidParamError("page must be >= 1")
312
412
  if not 1 <= limit <= 20:
313
413
  raise InvalidParamError("limit must be between 1 and 20")
314
414
 
415
+ # Default to BY_TIME_DESC (1) if sort_by is not specified
416
+ sort_value = sort_by.value if sort_by else TopicSortType.BY_TIME_DESC.value
417
+
315
418
  result = self.market_api.openapi_market_get(
316
419
  apikey=self.api_key,
317
420
  market_type=topic_type.value if topic_type else None,
318
421
  page=page,
319
422
  limit=limit,
320
423
  chain_id=str(self.chain_id),
321
- status=status.value if status else None
424
+ status=status.value if status else None,
425
+ sort_by=sort_value
322
426
  )
323
427
  return result
324
428
 
@@ -438,19 +542,28 @@ class Client:
438
542
  raise OpenApiError(f"Failed to get latest price: {e}")
439
543
 
440
544
  def get_fee_rates(self, token_id):
441
- """Get fee rates for a token"""
545
+ """Get fee rates for a token from FeeManager contract on-chain
546
+
547
+ Args:
548
+ token_id: Token ID to query fee rates for
549
+
550
+ Returns:
551
+ Dictionary containing:
552
+ - maker_max_fee_rate: Maker maximum fee rate as decimal (e.g., 0.02 = 2%)
553
+ - taker_max_fee_rate: Taker maximum fee rate as decimal (e.g., 0.02 = 2%)
554
+ - enabled: Whether fee is enabled
555
+ """
442
556
  try:
443
557
  if not token_id:
444
558
  raise InvalidParamError(MISSING_TOKEN_ID_MSG)
445
559
 
446
- result = self.market_api.openapi_token_fee_rates_get(apikey=self.api_key, token_id=token_id)
447
- return result
560
+ return self.contract_caller.get_fee_rate_settings(token_id)
448
561
  except InvalidParamError as e:
449
562
  logging.error(f"Validation error: {e}")
450
563
  raise
451
564
  except Exception as e:
452
- logging.error(f"API error: {e}")
453
- raise OpenApiError(f"Failed to get fee rates: {e}")
565
+ logging.error(f"Chain query error: {e}")
566
+ raise OpenApiError(f"Failed to get fee rates from chain: {e}")
454
567
 
455
568
  def _place_order(self, data: OrderDataInput, exchange_addr='', chain_id=0, currency_addr='', currency_decimal=0, check_approval=False):
456
569
  if check_approval:
@@ -652,8 +765,8 @@ class Client:
652
765
 
653
766
  from opinion_api.models.openapi_cancel_order_request_open_api import OpenapiCancelOrderRequestOpenAPI
654
767
 
655
- # Internally use trans_no for API compatibility
656
- request_body = OpenapiCancelOrderRequestOpenAPI(trans_no=order_id)
768
+ # Use order_id for API request
769
+ request_body = OpenapiCancelOrderRequestOpenAPI(order_id=order_id)
657
770
  result = self.market_api.openapi_order_cancel_post(apikey=self.api_key, cancel_order_req=request_body)
658
771
  return result
659
772
 
@@ -768,6 +881,7 @@ class Client:
768
881
  def cancel_all_orders(self, market_id: Optional[int] = None, side: Optional[OrderSide] = None) -> dict:
769
882
  """
770
883
  Cancel all open orders, optionally filtered by market and/or side.
884
+ Uses pagination to fetch all orders (max 20 per page).
771
885
 
772
886
  Args:
773
887
  market_id: Optional filter - only cancel orders for this market
@@ -781,18 +895,40 @@ class Client:
781
895
  'results': List[dict]
782
896
  }
783
897
  """
784
- # Get all open orders
785
- all_orders = self.get_my_orders(
786
- market_id=market_id if market_id else 0,
787
- status='open',
788
- limit=100, # Get up to 100 orders per page
789
- page=1
790
- )
898
+ # Collect all open orders using pagination
899
+ all_orders_list = []
900
+ page = 1
901
+ limit = 20 # Backend max page size
902
+ max_pages = 100 # Safety limit to prevent infinite loops
903
+
904
+ while page <= max_pages:
905
+ # Get orders for current page
906
+ page_orders = self.get_my_orders(
907
+ market_id=market_id if market_id else 0,
908
+ status='1', # 1 = pending/open orders
909
+ limit=limit,
910
+ page=page
911
+ )
912
+
913
+ # Parse response to get order list
914
+ orders_list = self._parse_list_response(page_orders, f"get open orders page {page}")
915
+
916
+ if not orders_list or len(orders_list) == 0:
917
+ # No more orders on this page
918
+ break
919
+
920
+ all_orders_list.extend(orders_list)
791
921
 
792
- # Parse response to get order list
793
- orders_list = self._parse_list_response(all_orders, "get open orders for cancellation")
922
+ # If we got fewer orders than the limit, we've reached the last page
923
+ if len(orders_list) < limit:
924
+ break
794
925
 
795
- if not orders_list or len(orders_list) == 0:
926
+ page += 1
927
+
928
+ if page > max_pages:
929
+ logging.warning(f"Reached maximum page limit ({max_pages}), there may be more orders")
930
+
931
+ if not all_orders_list or len(all_orders_list) == 0:
796
932
  logging.info("No open orders to cancel")
797
933
  return {
798
934
  'total_orders': 0,
@@ -803,10 +939,10 @@ class Client:
803
939
 
804
940
  # Filter by side if specified
805
941
  if side:
806
- orders_list = [order for order in orders_list if int(order.side) == int(side.value)]
942
+ all_orders_list = [order for order in all_orders_list if int(order.side) == int(side.value)]
807
943
 
808
- # Extract order IDs (internally stored as trans_no)
809
- order_ids = [order.trans_no for order in orders_list if hasattr(order, 'trans_no')]
944
+ # Extract order IDs from the response
945
+ order_ids = [order.order_id for order in all_orders_list if hasattr(order, 'order_id')]
810
946
 
811
947
  if not order_ids:
812
948
  logging.info("No orders match the filter criteria")
@@ -817,6 +953,8 @@ class Client:
817
953
  'results': []
818
954
  }
819
955
 
956
+ logging.info(f"Found {len(order_ids)} orders to cancel")
957
+
820
958
  # Cancel all orders in batch
821
959
  results = self.cancel_orders_batch(order_ids)
822
960
 
@@ -841,7 +979,7 @@ class Client:
841
979
 
842
980
  result = self.market_api.openapi_order_get(
843
981
  apikey=self.api_key,
844
- topic_id=market_id if market_id > 0 else None,
982
+ market_id=market_id if market_id > 0 else None,
845
983
  status=status if status else None,
846
984
  limit=limit,
847
985
  page=page,
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Verify that the FeeManager contract address is properly formatted
4
+ and can be used with web3.py without checksum errors.
5
+ """
6
+
7
+ import sys
8
+ from web3 import Web3
9
+
10
+ # Import the addresses
11
+ from opinion_clob_sdk.config import (
12
+ BNB_CHAIN_FEE_MANAGER_ADDR,
13
+ BNB_CHAIN_CONDITIONAL_TOKENS_ADDR,
14
+ BNB_CHAIN_MULTISEND_ADDR,
15
+ )
16
+
17
+ def verify_address(name: str, address: str):
18
+ """Verify an address is in valid checksum format"""
19
+ try:
20
+ is_valid = Web3.is_checksum_address(address)
21
+ if is_valid:
22
+ print(f"✅ {name}: {address}")
23
+ print(f" Valid checksum format")
24
+ else:
25
+ print(f"❌ {name}: {address}")
26
+ print(f" Invalid checksum format")
27
+ return False
28
+ except Exception as e:
29
+ print(f"❌ {name}: {address}")
30
+ print(f" Error: {e}")
31
+ return False
32
+ return True
33
+
34
+ def main():
35
+ print("=" * 80)
36
+ print("Contract Address Checksum Verification")
37
+ print("=" * 80)
38
+ print()
39
+
40
+ addresses = {
41
+ "ConditionalTokens": BNB_CHAIN_CONDITIONAL_TOKENS_ADDR,
42
+ "Multisend": BNB_CHAIN_MULTISEND_ADDR,
43
+ "FeeManager": BNB_CHAIN_FEE_MANAGER_ADDR,
44
+ }
45
+
46
+ all_valid = True
47
+ for name, address in addresses.items():
48
+ if not verify_address(name, address):
49
+ all_valid = False
50
+ print()
51
+
52
+ print("=" * 80)
53
+ if all_valid:
54
+ print("✅ All contract addresses are in valid checksum format!")
55
+ print("\nYou can now use these addresses with web3.py without errors.")
56
+ return 0
57
+ else:
58
+ print("❌ Some addresses are not in valid checksum format!")
59
+ print("\nPlease update config.py with proper checksum addresses.")
60
+ return 1
61
+
62
+ if __name__ == "__main__":
63
+ sys.exit(main())
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opinion_clob_sdk
3
- Version: 0.1.9
4
- Summary: Opinion CLOB SDK - Python SDK for Opinion Prediction Market Central Limit Order Book API
3
+ Version: 0.4.2
4
+ Summary: Opinion CLOB SDK (Tech Preview) - Python SDK for Opinion Prediction Market Central Limit Order Book API
5
5
  Home-page: https://opinion.trade
6
6
  Author: Opinion Labs
7
7
  Author-email: support@opinion.trade
8
- Keywords: PredictionMarket,CLOB,Trading,Blockchain,Base,Opinion
9
- Classifier: Development Status :: 4 - Beta
8
+ Keywords: PredictionMarket,CLOB,Trading,Blockchain,BNBChain,BSC,Opinion
9
+ Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Intended Audience :: Developers
11
11
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
12
12
  Classifier: License :: OSI Approved :: MIT License
@@ -26,7 +26,7 @@ Requires-Dist: hexbytes>=1.2.1
26
26
  Requires-Dist: web3>=7.6.1
27
27
  Requires-Dist: eth_account>=0.13.0
28
28
  Requires-Dist: poly_eip712_structs>=0.0.1
29
- Requires-Dist: opinion_api>=0.1.0
29
+ Requires-Dist: opinion_api>=0.2.0
30
30
  Requires-Dist: pytest>=7.0.0
31
31
  Dynamic: author
32
32
  Dynamic: author-email
@@ -40,7 +40,9 @@ Dynamic: requires-python
40
40
  Dynamic: summary
41
41
 
42
42
 
43
- # Opinion CLOB SDK
43
+ # Opinion CLOB SDK (Tech Preview)
44
+
45
+ **Technology Preview Release - BNB Chain Support**
44
46
 
45
47
  Python SDK for interacting with Opinion prediction markets via the CLOB (Central Limit Order Book) API.
46
48
 
@@ -50,7 +52,7 @@ Python SDK for interacting with Opinion prediction markets via the CLOB (Central
50
52
  - Order management (place, cancel, query orders)
51
53
  - Position and balance tracking
52
54
  - Smart contract interactions (split, merge, redeem)
53
- - Support for Base mainnet (chain ID 8453)
55
+ - Support for BNB Chain mainnet (chain ID 56)
54
56
 
55
57
  ## Installation
56
58
 
@@ -64,10 +66,10 @@ pip install opinion_clob_sdk
64
66
  from opinion_clob_sdk import Client
65
67
 
66
68
  client = Client(
67
- host='https://api.opinion.trade',
69
+ host='https://proxy.opinion.trade:8443',
68
70
  apikey='your_api_key',
69
- chain_id=8453, # Base mainnet
70
- rpc_url='your_rpc_url',
71
+ chain_id=56, # BNB Chain mainnet
72
+ rpc_url='https://bsc-dataseed.binance.org',
71
73
  private_key='your_private_key',
72
74
  multi_sig_addr='your_multi_sig_address'
73
75
  )