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,26 +0,0 @@
1
- from eth_typing import ChecksumAddress
2
- from web3 import Web3
3
-
4
-
5
- def get_safe_contract(w3: Web3, address: ChecksumAddress):
6
- from .safe_v1_3_0 import abi
7
- return w3.eth.contract(
8
- address=address,
9
- abi=abi
10
- )
11
-
12
-
13
- def get_compatibility_fallback_handler_contract(w3: Web3, address: ChecksumAddress):
14
- from .compatibility_fallback_handler_v1_3_0 import abi
15
- return w3.eth.contract(
16
- address=address,
17
- abi=abi
18
- )
19
-
20
-
21
- def get_multi_send_contract(w3: Web3, address: ChecksumAddress):
22
- from .multisend_v1_3_0 import abi
23
- return w3.eth.contract(
24
- address=address,
25
- abi=abi
26
- )
@@ -1,364 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from enum import Enum
3
- from logging import getLogger
4
- from typing import List, Optional, Sequence, Union
5
-
6
- from eth_abi import decode as decode_abi
7
- from eth_abi import encode as encode_abi
8
- from eth_abi.exceptions import DecodingError
9
- from eth_account.messages import defunct_hash_message
10
- from eth_typing import BlockIdentifier, ChecksumAddress, HexAddress, HexStr
11
- from web3 import Web3
12
-
13
- from .safe_contracts.utils import get_safe_contract, get_compatibility_fallback_handler_contract
14
- from .utils import fast_to_checksum_address
15
- from hexbytes import HexBytes
16
- from web3.exceptions import Web3Exception
17
-
18
- from .signatures import (
19
- get_signing_address,
20
- signature_split,
21
- signature_to_bytes,
22
- )
23
-
24
- logger = getLogger(__name__)
25
-
26
-
27
- EthereumBytes = Union[bytes, str]
28
-
29
-
30
- class SafeSignatureException(Exception):
31
- pass
32
-
33
-
34
- class CannotCheckEIP1271ContractSignature(SafeSignatureException):
35
- pass
36
-
37
-
38
- class SafeSignatureType(Enum):
39
- CONTRACT_SIGNATURE = 0
40
- APPROVED_HASH = 1
41
- EOA = 2
42
- ETH_SIGN = 3
43
-
44
- @staticmethod
45
- def from_v(v: int):
46
- if v == 0:
47
- return SafeSignatureType.CONTRACT_SIGNATURE
48
- elif v == 1:
49
- return SafeSignatureType.APPROVED_HASH
50
- elif v > 30:
51
- return SafeSignatureType.ETH_SIGN
52
- else:
53
- return SafeSignatureType.EOA
54
-
55
-
56
- def uint_to_address(value: int) -> ChecksumAddress:
57
- """
58
- Convert a Solidity `uint` value to a checksummed `address`, removing
59
- invalid padding bytes if present
60
-
61
- :return: Checksummed address
62
- """
63
- encoded = encode_abi(["uint"], [value])
64
- # Remove padding bytes, as Solidity will ignore it but `eth_abi` will not
65
- encoded_without_padding_bytes = b"\x00" * 12 + encoded[-20:]
66
- return fast_to_checksum_address(
67
- decode_abi(["address"], encoded_without_padding_bytes)[0]
68
- )
69
-
70
-
71
- class SafeSignature(ABC):
72
- def __init__(self, signature: EthereumBytes, safe_hash: EthereumBytes):
73
- """
74
- :param signature: Owner signature
75
- :param safe_hash: Signed hash for the Safe (message or transaction)
76
- """
77
- self.signature = HexBytes(signature)
78
- self.safe_hash = HexBytes(safe_hash)
79
- self.v, self.r, self.s = signature_split(self.signature)
80
-
81
- def __str__(self):
82
- return f"SafeSignature type={self.signature_type.name} owner={self.owner}"
83
-
84
- @classmethod
85
- def parse_signature(
86
- cls,
87
- signatures: EthereumBytes,
88
- safe_hash: EthereumBytes,
89
- safe_hash_preimage: Optional[EthereumBytes] = None,
90
- ignore_trailing: bool = True,
91
- ) -> List["SafeSignature"]:
92
- """
93
- :param signatures: One or more signatures appended. EIP1271 data at the end is supported.
94
- :param safe_hash: Signed hash for the Safe (message or transaction)
95
- :param safe_hash_preimage: ``safe_hash`` preimage for EIP1271 validation
96
- :param ignore_trailing: Ignore trailing data on the signature. Some libraries pad it and add some zeroes at
97
- the end
98
- :return: List of SafeSignatures decoded
99
- """
100
- if not signatures:
101
- return []
102
- elif isinstance(signatures, str):
103
- signatures = HexBytes(signatures)
104
-
105
- signature_size = 65 # For contract signatures there'll be some data at the end
106
- data_position = len(
107
- signatures
108
- ) # For contract signatures, to stop parsing at data position
109
-
110
- safe_signatures = []
111
- for i in range(0, len(signatures), signature_size):
112
- if (
113
- i >= data_position
114
- ): # If contract signature data position is reached, stop
115
- break
116
-
117
- signature = signatures[i : i + signature_size]
118
- if ignore_trailing and len(signature) < 65:
119
- # Trailing stuff
120
- break
121
- v, r, s = signature_split(signature)
122
- signature_type = SafeSignatureType.from_v(v)
123
- safe_signature: "SafeSignature"
124
- if signature_type == SafeSignatureType.CONTRACT_SIGNATURE:
125
- if s < data_position:
126
- data_position = s
127
- contract_signature_len = int.from_bytes(
128
- signatures[s : s + 32], "big"
129
- ) # Len size is 32 bytes
130
- contract_signature = signatures[
131
- s + 32 : s + 32 + contract_signature_len
132
- ] # Skip array size (32 bytes)
133
- safe_signature = SafeSignatureContract(
134
- signature,
135
- safe_hash,
136
- safe_hash_preimage or safe_hash,
137
- contract_signature,
138
- )
139
- elif signature_type == SafeSignatureType.APPROVED_HASH:
140
- safe_signature = SafeSignatureApprovedHash(signature, safe_hash)
141
- elif signature_type == SafeSignatureType.EOA:
142
- safe_signature = SafeSignatureEOA(signature, safe_hash)
143
- elif signature_type == SafeSignatureType.ETH_SIGN:
144
- safe_signature = SafeSignatureEthSign(signature, safe_hash)
145
-
146
- safe_signatures.append(safe_signature)
147
- return safe_signatures
148
-
149
- @classmethod
150
- def export_signatures(cls, safe_signatures: Sequence["SafeSignature"]) -> HexBytes:
151
- """
152
- Takes a list of SafeSignature objects and exports them as a valid signature for the contract
153
-
154
- :param safe_signatures:
155
- :return: Valid signature for the Safe contract
156
- """
157
-
158
- signature = b""
159
- dynamic_part = b""
160
- dynamic_offset = len(safe_signatures) * 65
161
- # Signatures must be sorted by owner
162
- for safe_signature in sorted(safe_signatures, key=lambda s: s.owner.lower()):
163
- if isinstance(safe_signature, SafeSignatureContract):
164
- signature += signature_to_bytes(
165
- safe_signature.v, safe_signature.r, dynamic_offset
166
- )
167
- # encode_abi adds {32 bytes offset}{32 bytes size}. We don't need offset
168
- contract_signature_padded = encode_abi(
169
- ["bytes"], [safe_signature.contract_signature]
170
- )[32:]
171
- contract_signature = contract_signature_padded[
172
- : 32 + len(safe_signature.contract_signature)
173
- ]
174
- dynamic_part += contract_signature
175
- dynamic_offset += len(contract_signature)
176
- else:
177
- signature += safe_signature.export_signature()
178
- return HexBytes(signature + dynamic_part)
179
-
180
- def export_signature(self) -> HexBytes:
181
- """
182
- Exports signature in a format that's valid individually. That's important for contract signatures, as it
183
- will fix the offset
184
-
185
- :return:
186
- """
187
- return self.signature
188
-
189
- @property
190
- @abstractmethod
191
- def owner(self):
192
- """
193
- :return: Decode owner from signature, without any further validation (signature can be not valid)
194
- """
195
- raise NotImplementedError
196
-
197
- @abstractmethod
198
- def is_valid(self, w3: Web3, safe_address: str) -> bool:
199
- """
200
- :param w3: Web3 instance
201
- :param safe_address: Required for Approved Hash check
202
- :return: `True` if signature is valid, `False` otherwise
203
- """
204
- raise NotImplementedError
205
-
206
- @property
207
- @abstractmethod
208
- def signature_type(self) -> SafeSignatureType:
209
- raise NotImplementedError
210
-
211
-
212
- class SafeSignatureContract(SafeSignature):
213
- EIP1271_MAGIC_VALUE = HexBytes(0x20C13B0B)
214
- EIP1271_MAGIC_VALUE_UPDATED = HexBytes(0x1626BA7E)
215
-
216
- def __init__(
217
- self,
218
- signature: EthereumBytes,
219
- safe_hash: EthereumBytes,
220
- safe_hash_preimage: EthereumBytes,
221
- contract_signature: EthereumBytes,
222
- ):
223
- """
224
- :param signature:
225
- :param safe_hash: Signed hash for the Safe (message or transaction)
226
- :param safe_hash_preimage: ``safe_hash`` preimage for EIP1271 validation
227
- :param contract_signature:
228
- """
229
- super().__init__(signature, safe_hash)
230
- self.safe_hash_preimage = HexBytes(safe_hash_preimage)
231
- self.contract_signature = HexBytes(contract_signature)
232
-
233
- @classmethod
234
- def from_values(
235
- cls,
236
- safe_owner: ChecksumAddress,
237
- safe_hash: EthereumBytes,
238
- safe_hash_preimage: EthereumBytes,
239
- contract_signature: EthereumBytes,
240
- ) -> "SafeSignatureContract":
241
- signature = signature_to_bytes(
242
- 0, int.from_bytes(HexBytes(safe_owner), byteorder="big"), 65
243
- )
244
- return cls(signature, safe_hash, safe_hash_preimage, contract_signature)
245
-
246
- @property
247
- def owner(self) -> ChecksumAddress:
248
- """
249
- :return: Address of contract signing. No further checks to get the owner are needed,
250
- but it could be a non-existing contract
251
- """
252
-
253
- return uint_to_address(self.r)
254
-
255
- @property
256
- def signature_type(self) -> SafeSignatureType:
257
- return SafeSignatureType.CONTRACT_SIGNATURE
258
-
259
- def export_signature(self) -> HexBytes:
260
- """
261
- Fix offset (s) and append `contract_signature` at the end of the signature
262
-
263
- :return:
264
- """
265
- # encode_abi adds {32 bytes offset}{32 bytes size}. We don't need offset
266
- contract_signature_padded = encode_abi(["bytes"], [self.contract_signature])[
267
- 32:
268
- ]
269
- contract_signature = contract_signature_padded[
270
- : 32 + len(self.contract_signature)
271
- ]
272
- dynamic_offset = 65
273
-
274
- return HexBytes(
275
- signature_to_bytes(self.v, self.r, dynamic_offset) + contract_signature
276
- )
277
-
278
- def is_valid(self, w3: Web3, *args) -> bool:
279
- compatibility_fallback_handler = get_compatibility_fallback_handler_contract(
280
- w3, self.owner
281
- )
282
- is_valid_signature_fn = (
283
- compatibility_fallback_handler.get_function_by_signature(
284
- "isValidSignature(bytes,bytes)"
285
- )
286
- )
287
- try:
288
- return is_valid_signature_fn(
289
- self.safe_hash_preimage, self.contract_signature
290
- ).call() in (
291
- self.EIP1271_MAGIC_VALUE,
292
- self.EIP1271_MAGIC_VALUE_UPDATED,
293
- )
294
- except (Web3Exception, DecodingError, ValueError):
295
- # Error using `pending` block identifier or contract does not exist
296
- logger.warning(
297
- "Cannot check EIP1271 signature from contract %s", self.owner
298
- )
299
- return False
300
-
301
-
302
- class SafeSignatureApprovedHash(SafeSignature):
303
- @property
304
- def owner(self):
305
- return uint_to_address(self.r)
306
-
307
- @property
308
- def signature_type(self):
309
- return SafeSignatureType.APPROVED_HASH
310
-
311
- @classmethod
312
- def build_for_owner(cls, owner: str, safe_hash: str) -> "SafeSignatureApprovedHash":
313
- r = owner.lower().replace("0x", "").rjust(64, "0")
314
- s = "0" * 64
315
- v = "01"
316
- return cls(HexBytes(r + s + v), safe_hash)
317
-
318
- def is_valid(self, w3: Web3, safe_address: str) -> bool:
319
- safe_contract = get_safe_contract(
320
- w3, ChecksumAddress(HexAddress(HexStr(safe_address)))
321
- )
322
- exception: Exception
323
-
324
- block_identifiers: List[BlockIdentifier] = ["pending", "latest"]
325
- for block_identifier in block_identifiers:
326
- try:
327
- return (
328
- safe_contract.functions.approvedHashes(
329
- self.owner, self.safe_hash
330
- ).call(block_identifier=block_identifier)
331
- == 1
332
- )
333
- except (Web3Exception, DecodingError, ValueError) as e:
334
- # Error using `pending` block identifier
335
- exception = e
336
- raise exception # This should never happen
337
-
338
-
339
- class SafeSignatureEthSign(SafeSignature):
340
- @property
341
- def owner(self):
342
- # defunct_hash_message prepends `\x19Ethereum Signed Message:\n32`
343
- message_hash = defunct_hash_message(primitive=self.safe_hash)
344
- return get_signing_address(message_hash, self.v - 4, self.r, self.s)
345
-
346
- @property
347
- def signature_type(self):
348
- return SafeSignatureType.ETH_SIGN
349
-
350
- def is_valid(self, *args) -> bool:
351
- return True
352
-
353
-
354
- class SafeSignatureEOA(SafeSignature):
355
- @property
356
- def owner(self):
357
- return get_signing_address(self.safe_hash, self.v, self.r, self.s)
358
-
359
- @property
360
- def signature_type(self):
361
- return SafeSignatureType.EOA
362
-
363
- def is_valid(self, *args) -> bool:
364
- return True
@@ -1,37 +0,0 @@
1
- import unittest
2
- from web3 import Web3
3
- from web3.providers import HTTPProvider
4
-
5
- from .constants import NULL_ADDRESS
6
- from .enums import SafeOperationEnum
7
- from .safe import Safe
8
-
9
-
10
- class TestSafeRx(unittest.TestCase):
11
- def setUp(self) -> None:
12
- self.private_key = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'
13
- self.safe_address = '0x8F58a1ab58e18Bb3f8ACf5E14c046D4F7add824a'
14
- self.compatibility_handler_address = '0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4'
15
- self.rpc_url = 'https://mainnet.base.org'
16
- self.w3 = Web3(HTTPProvider(self.rpc_url))
17
-
18
- def test_sign_multi_sig_tx(self):
19
- # self.w3.keccak(text='hash')
20
-
21
- safe = Safe(self.w3, self.private_key, self.safe_address, '')
22
- safe_tx = safe.build_multisig_tx(
23
- to='',
24
- value=0,
25
- data=b'',
26
- operation=SafeOperationEnum.CALL.value,
27
- safe_tx_gas=0,
28
- base_gas=0,
29
- gas_price=0,
30
- gas_token=NULL_ADDRESS,
31
- refund_receiver=NULL_ADDRESS,
32
- safe_nonce=0,
33
- )
34
-
35
- signatures = safe_tx.sign(self.private_key)
36
- expected_sig = '2e83d2137e103b2cd5bfbf624d796acd7aec0ca8ea007f3a8093e3844a0df12360493c35f4c49b42b55b17c2290b91ed9a9b787641f1433268552ebcb14edd2c1b'
37
- self.assertEqual(expected_sig, signatures.hex(), 'invalid signature')