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
@@ -1,347 +0,0 @@
1
- from enum import Enum
2
- from logging import getLogger
3
- import logging
4
- from typing import List, Optional, Union, Literal
5
-
6
- from eth_typing import ChecksumAddress, HexAddress, HexStr, BlockNumber, Hash32
7
- from hexbytes import HexBytes
8
- from web3 import Web3
9
- from web3.types import TxParams, StateOverrideParams
10
- from .enums import SafeOperationEnum
11
-
12
- from .safe_contracts.utils import (
13
- get_multi_send_contract,
14
- )
15
- from .typing import EthereumData
16
- from .utils import (
17
- fast_bytes_to_checksum_address,
18
- fast_is_checksum_address,
19
- get_empty_tx_params,
20
- )
21
-
22
- logger = getLogger(__name__)
23
-
24
-
25
- class MultiSendOperation(Enum):
26
- CALL = 0
27
- DELEGATE_CALL = 1
28
-
29
-
30
- class MultiSendTx:
31
- """
32
- Wrapper for a single MultiSendTx
33
- """
34
-
35
- def __init__(
36
- self,
37
- operation: MultiSendOperation,
38
- to: ChecksumAddress,
39
- value: int,
40
- data: EthereumData,
41
- old_encoding: bool = False,
42
- ):
43
- """
44
- :param operation: MultisendOperation, CALL or DELEGATE_CALL
45
- :param to: Address
46
- :param value: Value in Wei
47
- :param data: data as hex string or bytes
48
- :param old_encoding: True if using old multisend ABI Encoded data, False otherwise
49
- """
50
- self.operation = operation
51
- self.to = to
52
- self.value = value
53
- self.data = HexBytes(data) if data else b""
54
- self.old_encoding = old_encoding
55
-
56
- def __eq__(self, other):
57
- if not isinstance(other, MultiSendTx):
58
- return NotImplemented
59
-
60
- return (
61
- self.operation == other.operation
62
- and self.to == other.to
63
- and self.value == other.value
64
- and self.data == other.data
65
- )
66
-
67
- def __len__(self):
68
- """
69
- :return: Size on bytes of the tx
70
- """
71
- return 21 + 32 * 2 + self.data_length
72
-
73
- def __repr__(self):
74
- data = self.data[:4].hex() + ("..." if len(self.data) > 4 else "")
75
- return (
76
- f"MultisendTx operation={self.operation.name} to={self.to} value={self.value} "
77
- f"data={data}"
78
- )
79
-
80
- @property
81
- def data_length(self) -> int:
82
- return len(self.data)
83
-
84
- @property
85
- def encoded_data(self):
86
- operation = HexBytes("{:0>2x}".format(self.operation)) # Operation 1 byte
87
- to = HexBytes("{:0>40x}".format(int(self.to, 16))) # Address 20 bytes
88
- value = HexBytes("{:0>64x}".format(self.value)) # Value 32 bytes
89
- data_length = HexBytes(
90
- "{:0>64x}".format(self.data_length)
91
- ) # Data length 32 bytes
92
- return operation + to + value + data_length + self.data
93
-
94
- @classmethod
95
- def from_bytes(cls, encoded_multisend_tx: Union[str, bytes]) -> "MultiSendTx":
96
- """
97
- Decoded one MultiSend transaction. ABI must be used to get the `transactions` parameter and use that data
98
- for this function
99
- :param encoded_multisend_tx:
100
- :return:
101
- """
102
- encoded_multisend_tx = HexBytes(encoded_multisend_tx)
103
- try:
104
- return cls._decode_multisend_data(encoded_multisend_tx)
105
- except ValueError:
106
- # Try using the old decoding method
107
- return cls._decode_multisend_old_transaction(encoded_multisend_tx)
108
-
109
- @classmethod
110
- def _decode_multisend_data(cls, encoded_multisend_tx: Union[str, bytes]):
111
- """
112
- Decodes one Multisend transaction. If there's more data after `data` it's ignored. Fallbacks to the old
113
- multisend structure if this structure cannot be decoded.
114
- https://etherscan.io/address/0x8D29bE29923b68abfDD21e541b9374737B49cdAD#code
115
- Structure:
116
- - operation -> MultiSendOperation 1 byte
117
- - to -> ethereum address 20 bytes
118
- - value -> tx value 32 bytes
119
- - data_length -> 32 bytes
120
- - data -> `data_length` bytes
121
- :param encoded_multisend_tx: 1 multisend transaction encoded
122
- :return: Tx as a MultisendTx
123
- """
124
- encoded_multisend_tx = HexBytes(encoded_multisend_tx)
125
- operation = MultiSendOperation(encoded_multisend_tx[0])
126
- to = fast_bytes_to_checksum_address(encoded_multisend_tx[1 : 1 + 20])
127
- value = int.from_bytes(encoded_multisend_tx[21 : 21 + 32], byteorder="big")
128
- data_length = int.from_bytes(
129
- encoded_multisend_tx[21 + 32 : 21 + 32 * 2], byteorder="big"
130
- )
131
- data = encoded_multisend_tx[21 + 32 * 2 : 21 + 32 * 2 + data_length]
132
- len_data = len(data)
133
- if len_data != data_length:
134
- raise ValueError(
135
- f"Data length {data_length} is different from len(data) {len_data}"
136
- )
137
- return cls(operation, to, value, data, old_encoding=False)
138
-
139
- @classmethod
140
- def _decode_multisend_old_transaction(
141
- cls, encoded_multisend_tx: Union[str, bytes]
142
- ) -> "MultiSendTx":
143
- """
144
- Decodes one old multisend transaction. If there's more data after `data` it's ignored. The difference with
145
- the new MultiSend is that every value but `data` is padded to 32 bytes, wasting a lot of bytes.
146
- https://etherscan.io/address/0xE74d6AF1670FB6560dd61EE29eB57C7Bc027Ce4E#code
147
- Structure:
148
- - operation -> MultiSendOperation 32 byte
149
- - to -> ethereum address 32 bytes
150
- - value -> tx value 32 bytes
151
- - data_length -> 32 bytes
152
- - data -> `data_length` bytes
153
- :param encoded_multisend_tx: 1 multisend transaction encoded
154
- :return: Tx as a MultisendTx
155
- """
156
- encoded_multisend_tx = HexBytes(encoded_multisend_tx)
157
- operation = MultiSendOperation(
158
- int.from_bytes(encoded_multisend_tx[:32], byteorder="big")
159
- )
160
- to = fast_bytes_to_checksum_address(encoded_multisend_tx[32:64][-20:])
161
- value = int.from_bytes(encoded_multisend_tx[64:96], byteorder="big")
162
- data_length = int.from_bytes(encoded_multisend_tx[128:160], byteorder="big")
163
- data = encoded_multisend_tx[160 : 160 + data_length]
164
- len_data = len(data)
165
- if len_data != data_length:
166
- raise ValueError(
167
- f"Data length {data_length} is different from len(data) {len_data}"
168
- )
169
- return cls(operation, to, value, data, old_encoding=True)
170
-
171
-
172
- class MultiSend:
173
- dummy_w3 = Web3()
174
- MULTISEND_ADDRESSES = (
175
- "0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761", # MultiSend v1.3.0
176
- "0x998739BFdAAdde7C933B942a68053933098f9EDa", # MultiSend v1.3.0 (EIP-155)
177
- )
178
- MULTISEND_CALL_ONLY_ADDRESSES = (
179
- "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", # MultiSend Call Only v1.3.0
180
- "0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B", # MultiSend Call Only v1.3.0 (EIP-155)
181
- )
182
-
183
- def __init__(
184
- self,
185
- w3: Optional[Web3] = None,
186
- address: Optional[ChecksumAddress] = None,
187
- call_only: bool = True,
188
- ):
189
- """
190
- :param w3: Required for detecting the address in the network.
191
- :param address: If not provided, will try to detect it from the hardcoded addresses using `ethereum_client`.
192
- :param call_only: If `True` use `call only` MultiSend, otherwise use regular one.
193
- Only if `address` not provided
194
- """
195
-
196
- self.address = address
197
- self.w3 = w3 if w3 is not None else self.dummy_w3
198
- self.call_only = call_only
199
- multi_send_addresses = (
200
- self.MULTISEND_CALL_ONLY_ADDRESSES
201
- if call_only
202
- else self.MULTISEND_ADDRESSES
203
- )
204
-
205
- if address:
206
- assert fast_is_checksum_address(address), (
207
- "%s proxy factory address not valid" % address
208
- )
209
- elif w3:
210
- # Try to detect MultiSend address if not provided
211
- for multi_send_address in multi_send_addresses:
212
- multi_send_address_checksum = ChecksumAddress(
213
- HexAddress(HexStr(multi_send_address))
214
- )
215
-
216
- # Check if the address is contract
217
- if len(w3.eth.get_code(multi_send_address_checksum)) != 0:
218
- self.address = multi_send_address_checksum
219
- break
220
- else:
221
- self.address = ChecksumAddress(HexAddress(HexStr(multi_send_addresses[0])))
222
-
223
- if not self.address:
224
- chain_id = (
225
- self.w3.eth.chain_id if self.w3 != self.dummy_w3 else "N/A"
226
- )
227
- raise ValueError(f"Cannot find a MultiSend contract for chainId={chain_id}")
228
-
229
- @classmethod
230
- def from_bytes(cls, encoded_multisend_txs: Union[str, bytes]) -> List[MultiSendTx]:
231
- """
232
- Decodes one or more multisend transactions from `bytes transactions` (Abi decoded)
233
-
234
- :param encoded_multisend_txs:
235
- :return: List of MultiSendTxs
236
- """
237
- if not encoded_multisend_txs:
238
- return []
239
-
240
- encoded_multisend_txs = HexBytes(encoded_multisend_txs)
241
- multisend_tx = MultiSendTx.from_bytes(encoded_multisend_txs)
242
- multisend_tx_size = len(multisend_tx)
243
-
244
- assert (
245
- multisend_tx_size > 0
246
- ), "Multisend tx cannot be empty" # This should never happen, just in case
247
- if multisend_tx.old_encoding:
248
- next_data_position = (
249
- (multisend_tx.data_length + 0x1F) // 0x20 * 0x20
250
- ) + 0xA0
251
- else:
252
- next_data_position = multisend_tx_size
253
- remaining_data = encoded_multisend_txs[next_data_position:]
254
-
255
- return [multisend_tx] + cls.from_bytes(remaining_data)
256
-
257
- @classmethod
258
- def from_transaction_data(
259
- cls, multisend_data: Union[str, bytes]
260
- ) -> List[MultiSendTx]:
261
- """
262
- Decodes multisend transactions from transaction data (ABI encoded with selector)
263
-
264
- :return:
265
- """
266
- try:
267
- _, data = get_multi_send_contract(cls.dummy_w3).decode_function_input(
268
- multisend_data
269
- )
270
- return cls.from_bytes(data["transactions"])
271
- except ValueError:
272
- return []
273
-
274
- def get_contract(self):
275
- return get_multi_send_contract(self.w3, self.address)
276
-
277
- def build_tx(
278
- self, multi_send_txs: List[MultiSendTx], tx_params: Optional[TxParams] = None
279
- ) -> TxParams:
280
- """
281
- Txs don't need to be valid to get through
282
-
283
- :param multi_send_txs:
284
- :param tx_params:
285
- :return:
286
- """
287
- multisend_contract = self.get_contract()
288
- encoded_multisend_data = b"".join([x.encoded_data for x in multi_send_txs])
289
- return multisend_contract.functions.multiSend(
290
- encoded_multisend_data
291
- ).build_transaction(tx_params or {})
292
-
293
- def build_tx_data(self, multi_send_txs: List[MultiSendTx]) -> HexBytes:
294
- """
295
- Txs don't need to be valid to get through
296
-
297
- :param multi_send_txs:
298
- :return:
299
- """
300
- return HexBytes(
301
- self.build_tx(multi_send_txs, tx_params=get_empty_tx_params())["data"]
302
- )
303
-
304
- def estimate_gas(
305
- self,
306
- multi_send_txs: List[MultiSendTx],
307
- safe_address: ChecksumAddress,
308
- safe_operation=SafeOperationEnum.DELEGATE_CALL.value,
309
- block_identifier: Union[Literal["latest", "earliest", "pending", "safe", "finalized"], BlockNumber, Hash32, HexStr, HexBytes, int, None] = None,
310
- state_override: Optional[dict[ChecksumAddress, StateOverrideParams]] = None
311
- ) -> int:
312
- """
313
- Only support safe_operation == DELEGATE_CALL and multisend_operation == CALL for now.
314
- :param multi_send_txs:
315
- :param safe_address:
316
- :param safe_operation:
317
- :param block_identifier:
318
- :param state_override:
319
- :return:
320
- """
321
- if self.w3 == self.dummy_w3:
322
- raise Exception("invalid web3 instance")
323
- if safe_operation is not SafeOperationEnum.DELEGATE_CALL.value:
324
- raise NotImplemented
325
-
326
- from_address = safe_address
327
-
328
- safe_gas = 0
329
- for tx in multi_send_txs:
330
- if tx.operation == MultiSendOperation.DELEGATE_CALL:
331
- raise NotImplemented
332
-
333
- tx_params = {
334
- "from": from_address,
335
- "to": tx.to,
336
- "value": tx.value,
337
- "data": '0x'+tx.data.hex(),
338
- }
339
-
340
- logging.debug(f'multisend.estimate_gas, tx_params: {tx_params}')
341
- gas = self.w3.eth.estimate_gas(tx_params, block_identifier=block_identifier, state_override=state_override)
342
- safe_gas += gas
343
-
344
- # To protect safe transaction execution from network gas volatility
345
- safe_gas *= 1.5
346
-
347
- return safe_gas
@@ -1,141 +0,0 @@
1
- from eth_account import Account
2
- from web3 import Web3
3
- from eth_typing import ChecksumAddress, HexStr
4
- from typing import Any, Callable, Dict, List, Optional, Type, Union
5
- import logging
6
-
7
- from web3.middleware import SignAndSendRawMiddlewareBuilder
8
-
9
- from .enums import SafeOperationEnum
10
- from .constants import NULL_ADDRESS
11
- from .safe_tx import SafeTx
12
- from functools import cached_property
13
- from web3.types import BlockIdentifier, TxParams, Wei
14
-
15
- from .multisend import MultiSendTx, MultiSend
16
- from .safe_contracts.utils import get_safe_contract
17
-
18
- VERSION = 'v1.3.0'
19
-
20
-
21
- class Safe:
22
- def __init__(
23
- self,
24
- w3: Web3,
25
- private_key: HexStr,
26
- address: ChecksumAddress,
27
- multisend_address: ChecksumAddress
28
- ):
29
- account = Account.from_key(private_key)
30
- w3.middleware_onion.inject(SignAndSendRawMiddlewareBuilder.build(account), layer=0)
31
- self.w3 = w3
32
-
33
- self.private_key = private_key
34
- self.address = address
35
- self.multisend_address = multisend_address
36
- self.multisend = MultiSend(self.w3, self.multisend_address, False)
37
- self.contract = get_safe_contract(self.w3, self.address)
38
-
39
- @cached_property
40
- def chain_id(self) -> int:
41
- return self.w3.eth.chain_id
42
-
43
- def get_version(self) -> str:
44
- """
45
- :return: String with Safe Master Copy semantic version, must match `retrieve_version()`
46
- """
47
- return VERSION
48
-
49
- def retrieve_nonce(
50
- self, block_identifier: Optional[BlockIdentifier] = "latest"
51
- ) -> int:
52
- return self.contract.functions.nonce().call(
53
- block_identifier=block_identifier or "latest"
54
- )
55
-
56
- def build_multisend_tx(self,
57
- multi_send_txs: List[MultiSendTx],
58
- safe_nonce: Optional[int] = None,
59
- ) -> SafeTx:
60
- safe_gas = self.multisend.estimate_gas(multi_send_txs, self.address)
61
- data = self.multisend.build_tx_data(multi_send_txs)
62
- safe_tx = self.build_multisig_tx(
63
- to=self.multisend_address,
64
- value=0,
65
- data=data,
66
- operation=SafeOperationEnum.DELEGATE_CALL.value,
67
- safe_tx_gas=safe_gas,
68
- safe_nonce=safe_nonce,
69
- )
70
-
71
- return safe_tx
72
-
73
- def execute_multisend(self, multi_send_txs: List[MultiSendTx], safe_nonce: Optional[int] = None):
74
- safe_tx = self.build_multisend_tx(multi_send_txs, safe_nonce)
75
- safe_tx.sign(self.private_key)
76
- safe_tx_gas = safe_tx.recommended_gas()
77
- tx_params = {
78
- "from": Account.from_key(self.private_key).address,
79
- "gas": round(safe_tx_gas*1.2),
80
- }
81
- logging.debug(f'execute_multisend call with params: {tx_params}')
82
-
83
- return_value = safe_tx.w3_tx.call(tx_params)
84
- # return_value = None
85
- logging.debug(f'execute_multisend return value: {return_value} for safe_nonce {safe_tx.safe_nonce}, w3_tx: {safe_tx.w3_tx}')
86
- tx_hash = safe_tx.w3_tx.transact(tx_params)
87
-
88
- return tx_hash, safe_tx.safe_tx_hash, return_value
89
-
90
- def build_multisig_tx(
91
- self,
92
- to: ChecksumAddress,
93
- value: int,
94
- data: bytes,
95
- operation: int = SafeOperationEnum.CALL.value,
96
- safe_tx_gas: int = 0,
97
- base_gas: int = 0,
98
- gas_price: int = 0,
99
- gas_token: ChecksumAddress = NULL_ADDRESS,
100
- refund_receiver: ChecksumAddress = NULL_ADDRESS,
101
- signatures: bytes = b"",
102
- safe_nonce: Optional[int] = None,
103
- ) -> SafeTx:
104
- """
105
- Allows to execute a Safe transaction confirmed by required number of owners and then pays the account
106
- that submitted the transaction. The fees are always transfered, even if the user transaction fails
107
-
108
- :param to: Destination address of Safe transaction
109
- :param value: Ether value of Safe transaction
110
- :param data: Data payload of Safe transaction
111
- :param operation: Operation type of Safe transaction
112
- :param safe_tx_gas: Gas that should be used for the Safe transaction
113
- :param base_gas: Gas costs for that are independent of the transaction execution
114
- (e.g. base transaction fee, signature check, payment of the refund)
115
- :param gas_price: Gas price that should be used for the payment calculation
116
- :param gas_token: Token address (or `0x000..000` if ETH) that is used for the payment
117
- :param refund_receiver: Address of receiver of gas payment (or `0x000..000` if tx.origin).
118
- :param signatures: Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})
119
- :param safe_nonce: Nonce of the safe (to calculate hash)
120
- :return: SafeTx
121
- """
122
-
123
- if safe_nonce is None:
124
- safe_nonce = self.retrieve_nonce()
125
- return SafeTx(
126
- self.w3,
127
- self.address,
128
- to,
129
- value,
130
- data,
131
- operation,
132
- safe_tx_gas,
133
- base_gas,
134
- gas_price,
135
- gas_token,
136
- refund_receiver,
137
- signatures=signatures,
138
- safe_nonce=safe_nonce,
139
- safe_version=self.get_version(),
140
- chain_id=self.chain_id,
141
- )