polyester-sdk 0.2.0__tar.gz → 0.4.0__tar.gz

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 (371) hide show
  1. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/CHANGELOG.md +183 -0
  2. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/PKG-INFO +140 -28
  3. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/README.md +136 -25
  4. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/pyproject.toml +4 -3
  5. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/__init__.py +6 -0
  6. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/_version.py +1 -1
  7. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/_wire.py +25 -5
  8. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/catalogs/__init__.py +28 -0
  9. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/client.py +0 -9
  10. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/bps.py +12 -2
  11. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/orderbook.py +1 -0
  12. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/orders.py +17 -0
  13. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/private_orders.py +7 -2
  14. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/transfers.py +1 -0
  15. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/triggers.py +2 -0
  16. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/vip.py +15 -1
  17. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/orders.py +15 -3
  18. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/realtime_decode.py +63 -3
  19. polyester_sdk-0.4.0/src/polyester/codecs/spot_config.py +78 -0
  20. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/triggers.py +43 -17
  21. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/errors.py +55 -6
  22. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/address_book_pb2.py +16 -16
  23. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/api_keys_pb2.py +4 -4
  24. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/auth_pb2.py +3 -3
  25. polyester_sdk-0.4.0/src/polyester/gen/auth/v1/subaccounts_pb2.py +285 -0
  26. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/subaccounts_pb2.pyi +4 -9
  27. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/analytics_read_pb2.py +23 -22
  28. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/analytics_read_pb2.pyi +1 -0
  29. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/deposit_pb2.py +16 -15
  30. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/deposit_pb2.pyi +1 -0
  31. polyester_sdk-0.4.0/src/polyester/gen/chain/guard/v1/guard_signer_pb2.py +124 -0
  32. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/v1/guard_signer_pb2.pyi +0 -1
  33. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/withdraw_pb2.py +4 -4
  34. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/fees/v1/fees_pb2.py +11 -10
  35. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/fees/v1/fees_pb2.pyi +1 -0
  36. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/read/v1/ledger_read_pb2.py +10 -2
  37. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/marketdata_pb2.py +14 -14
  38. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/marketdata_pb2.pyi +4 -2
  39. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orderbook/v1/orderbook_pb2.py +8 -8
  40. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orderbook/v1/orderbook_pb2.pyi +4 -2
  41. polyester_sdk-0.4.0/src/polyester/gen/orders/v1/orders_pb2.py +343 -0
  42. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_pb2.pyi +19 -0
  43. polyester_sdk-0.4.0/src/polyester/gen/orders/v1/orders_read_pb2.py +199 -0
  44. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_read_pb2.pyi +44 -6
  45. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/privatews/v1/private_ws_pb2.py +16 -16
  46. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/privatews/v1/private_ws_pb2.pyi +6 -4
  47. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ratelimit/v1/ratelimit_pb2.py +3 -3
  48. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/transfer/v1/internal_transfer_pb2.py +3 -3
  49. polyester_sdk-0.4.0/src/polyester/gen/triggers/v1/triggers_pb2.py +268 -0
  50. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/triggers/v1/triggers_pb2.pyi +5 -2
  51. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/__init__.py +4 -0
  52. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/common.py +41 -0
  53. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/private_orders.py +9 -3
  54. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/trading.py +38 -0
  55. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/vip.py +21 -1
  56. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/orderbook/local_book.py +2 -0
  57. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/auth.py +10 -2
  58. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/client.py +48 -13
  59. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/__init__.py +0 -6
  60. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_realtime_subscribe.py +15 -1
  61. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/market_data.py +2 -1
  62. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/market_overview.py +16 -3
  63. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/orderbook.py +5 -1
  64. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/sub_accounts.py +0 -2
  65. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/trades.py +7 -7
  66. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/transfers.py +4 -4
  67. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/triggers.py +34 -12
  68. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/transport.py +64 -1
  69. polyester_sdk-0.2.0/src/polyester/gen/auth/v1/subaccounts_pb2.py +0 -286
  70. polyester_sdk-0.2.0/src/polyester/gen/chain/guard/v1/guard_signer_pb2.py +0 -125
  71. polyester_sdk-0.2.0/src/polyester/gen/collab/v1/whiteboard_connect.py +0 -521
  72. polyester_sdk-0.2.0/src/polyester/gen/collab/v1/whiteboard_pb2.py +0 -155
  73. polyester_sdk-0.2.0/src/polyester/gen/collab/v1/whiteboard_pb2.pyi +0 -259
  74. polyester_sdk-0.2.0/src/polyester/gen/layout/v1/layout_connect.py +0 -1041
  75. polyester_sdk-0.2.0/src/polyester/gen/layout/v1/layout_pb2.py +0 -194
  76. polyester_sdk-0.2.0/src/polyester/gen/layout/v1/layout_pb2.pyi +0 -384
  77. polyester_sdk-0.2.0/src/polyester/gen/orders/v1/orders_pb2.py +0 -342
  78. polyester_sdk-0.2.0/src/polyester/gen/orders/v1/orders_read_pb2.py +0 -188
  79. polyester_sdk-0.2.0/src/polyester/gen/polychart/events/v1/polychart_events_pb2.py +0 -50
  80. polyester_sdk-0.2.0/src/polyester/gen/polychart/events/v1/polychart_events_pb2.pyi +0 -71
  81. polyester_sdk-0.2.0/src/polyester/gen/polychart/v1/polychart_connect.py +0 -1041
  82. polyester_sdk-0.2.0/src/polyester/gen/polychart/v1/polychart_pb2.py +0 -171
  83. polyester_sdk-0.2.0/src/polyester/gen/polychart/v1/polychart_pb2.pyi +0 -355
  84. polyester_sdk-0.2.0/src/polyester/gen/tradews/__init__.py +0 -0
  85. polyester_sdk-0.2.0/src/polyester/gen/tradews/v1/__init__.py +0 -0
  86. polyester_sdk-0.2.0/src/polyester/gen/transfer/__init__.py +0 -0
  87. polyester_sdk-0.2.0/src/polyester/gen/transfer/v1/__init__.py +0 -0
  88. polyester_sdk-0.2.0/src/polyester/gen/triggers/__init__.py +0 -0
  89. polyester_sdk-0.2.0/src/polyester/gen/triggers/v1/__init__.py +0 -0
  90. polyester_sdk-0.2.0/src/polyester/gen/triggers/v1/triggers_pb2.py +0 -267
  91. polyester_sdk-0.2.0/src/polyester/gen/vip/__init__.py +0 -0
  92. polyester_sdk-0.2.0/src/polyester/gen/vip/v1/__init__.py +0 -0
  93. polyester_sdk-0.2.0/src/polyester/services/layout.py +0 -200
  94. polyester_sdk-0.2.0/src/polyester/services/polychart.py +0 -208
  95. polyester_sdk-0.2.0/src/polyester/services/whiteboard.py +0 -140
  96. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/.env.example +0 -0
  97. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/.gitignore +0 -0
  98. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/LICENSE +0 -0
  99. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/SECURITY.md +0 -0
  100. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/examples/basic_bot.py +0 -0
  101. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/auth.py +0 -0
  102. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/auth_interceptor.py +0 -0
  103. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/catalogs/zipper.py +0 -0
  104. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/catalogs/zipper_supply.py +0 -0
  105. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/__init__.py +0 -0
  106. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/_deps.py +0 -0
  107. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/calldata.py +0 -0
  108. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/destination.py +0 -0
  109. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/environment.py +0 -0
  110. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/fees.py +0 -0
  111. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/rpc.py +0 -0
  112. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/safe.py +0 -0
  113. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/userop.py +0 -0
  114. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/__init__.py +0 -0
  115. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/address_book.py +0 -0
  116. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/correlation_id.py +0 -0
  117. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/__init__.py +0 -0
  118. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/address_book.py +0 -0
  119. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/api_keys.py +0 -0
  120. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/auth.py +0 -0
  121. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/balances.py +0 -0
  122. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/common.py +0 -0
  123. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/deposit.py +0 -0
  124. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/fees.py +0 -0
  125. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/guard_signer.py +0 -0
  126. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/heatmap.py +0 -0
  127. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/internal_transfers.py +0 -0
  128. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/invariants.py +0 -0
  129. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/lifecycle.py +0 -0
  130. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/market_data.py +0 -0
  131. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/market_overview.py +0 -0
  132. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/policies.py +0 -0
  133. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/ratelimit.py +0 -0
  134. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/resolve.py +0 -0
  135. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/sub_accounts.py +0 -0
  136. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/trading_rate_limits.py +0 -0
  137. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/withdraw.py +0 -0
  138. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/zipper.py +0 -0
  139. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/enums.py +0 -0
  140. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/guard_signer.py +0 -0
  141. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/heatmap.py +0 -0
  142. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/ledger.py +0 -0
  143. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/ledger_amounts.py +0 -0
  144. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/orderbook.py +0 -0
  145. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/proto_build.py +0 -0
  146. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/proto_helpers.py +0 -0
  147. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/scalars.py +0 -0
  148. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/sub_accounts.py +0 -0
  149. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/wire_decode.py +0 -0
  150. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/withdraw.py +0 -0
  151. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/environment.py +0 -0
  152. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/__init__.py +0 -0
  153. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/__init__.py +0 -0
  154. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/__init__.py +0 -0
  155. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/address_book_connect.py +0 -0
  156. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/address_book_pb2.pyi +0 -0
  157. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/api_keys_connect.py +0 -0
  158. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/api_keys_pb2.pyi +0 -0
  159. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/auth_connect.py +0 -0
  160. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/auth_pb2.pyi +0 -0
  161. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/mfa_connect.py +0 -0
  162. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/mfa_pb2.py +0 -0
  163. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/mfa_pb2.pyi +0 -0
  164. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/policies_connect.py +0 -0
  165. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/policies_pb2.py +0 -0
  166. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/policies_pb2.pyi +0 -0
  167. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/profile_connect.py +0 -0
  168. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/profile_pb2.py +0 -0
  169. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/profile_pb2.pyi +0 -0
  170. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/resolve_connect.py +0 -0
  171. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/resolve_pb2.py +0 -0
  172. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/resolve_pb2.pyi +0 -0
  173. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/social_verification_connect.py +0 -0
  174. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/social_verification_pb2.py +0 -0
  175. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/social_verification_pb2.pyi +0 -0
  176. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/subaccounts_connect.py +0 -0
  177. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/__init__.py +0 -0
  178. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/validate/__init__.py +0 -0
  179. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/validate/validate_pb2.py +0 -0
  180. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/validate/validate_pb2.pyi +0 -0
  181. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/__init__.py +0 -0
  182. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/__init__.py +0 -0
  183. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/__init__.py +0 -0
  184. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/analytics_read_connect.py +0 -0
  185. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/__init__.py +0 -0
  186. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/__init__.py +0 -0
  187. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/deposit_connect.py +0 -0
  188. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/__init__.py +0 -0
  189. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/v1/__init__.py +0 -0
  190. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/v1/guard_signer_connect.py +0 -0
  191. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/__init__.py +0 -0
  192. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/__init__.py +0 -0
  193. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_connect.py +0 -0
  194. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_pb2.py +0 -0
  195. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_pb2.pyi +0 -0
  196. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/types_pb2.py +0 -0
  197. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/types_pb2.pyi +0 -0
  198. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/__init__.py +0 -0
  199. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/__init__.py +0 -0
  200. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_connect.py +0 -0
  201. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_pb2.py +0 -0
  202. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_pb2.pyi +0 -0
  203. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/withdraw_connect.py +0 -0
  204. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/withdraw_pb2.pyi +0 -0
  205. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/__init__.py +0 -0
  206. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/__init__.py +0 -0
  207. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/reason_pb2.py +0 -0
  208. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/reason_pb2.pyi +0 -0
  209. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/zipper_connect.py +0 -0
  210. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/zipper_pb2.py +0 -0
  211. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/zipper_pb2.pyi +0 -0
  212. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/__init__.py +0 -0
  213. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/__init__.py +0 -0
  214. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/checkpoints_connect.py +0 -0
  215. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/checkpoints_pb2.py +0 -0
  216. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/checkpoints_pb2.pyi +0 -0
  217. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/__init__.py +0 -0
  218. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/__init__.py +0 -0
  219. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/claims_connect.py +0 -0
  220. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/claims_pb2.py +0 -0
  221. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/claims_pb2.pyi +0 -0
  222. {polyester_sdk-0.2.0/src/polyester/gen/collab → polyester_sdk-0.4.0/src/polyester/gen/fees}/__init__.py +0 -0
  223. {polyester_sdk-0.2.0/src/polyester/gen/collab → polyester_sdk-0.4.0/src/polyester/gen/fees}/v1/__init__.py +0 -0
  224. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/fees/v1/fees_connect.py +0 -0
  225. {polyester_sdk-0.2.0/src/polyester/gen/fees → polyester_sdk-0.4.0/src/polyester/gen/gnostic}/__init__.py +0 -0
  226. {polyester_sdk-0.2.0/src/polyester/gen/fees/v1 → polyester_sdk-0.4.0/src/polyester/gen/gnostic/openapi}/__init__.py +0 -0
  227. {polyester_sdk-0.2.0/src/polyester/gen/gnostic → polyester_sdk-0.4.0/src/polyester/gen/gnostic/openapi/v3}/__init__.py +0 -0
  228. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/annotations_pb2.py +0 -0
  229. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/annotations_pb2.pyi +0 -0
  230. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/openapiv3_pb2.py +0 -0
  231. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/openapiv3_pb2.pyi +0 -0
  232. {polyester_sdk-0.2.0/src/polyester/gen/gnostic/openapi → polyester_sdk-0.4.0/src/polyester/gen/google}/__init__.py +0 -0
  233. {polyester_sdk-0.2.0/src/polyester/gen/gnostic/openapi/v3 → polyester_sdk-0.4.0/src/polyester/gen/google/api}/__init__.py +0 -0
  234. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/annotations_pb2.py +0 -0
  235. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/annotations_pb2.pyi +0 -0
  236. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/field_behavior_pb2.py +0 -0
  237. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/field_behavior_pb2.pyi +0 -0
  238. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/http_pb2.py +0 -0
  239. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/http_pb2.pyi +0 -0
  240. {polyester_sdk-0.2.0/src/polyester/gen/google → polyester_sdk-0.4.0/src/polyester/gen/ledger}/__init__.py +0 -0
  241. {polyester_sdk-0.2.0/src/polyester/gen/google/api → polyester_sdk-0.4.0/src/polyester/gen/ledger/read}/__init__.py +0 -0
  242. {polyester_sdk-0.2.0/src/polyester/gen/layout → polyester_sdk-0.4.0/src/polyester/gen/ledger/read/v1}/__init__.py +0 -0
  243. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/read/v1/ledger_read_connect.py +0 -0
  244. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/read/v1/ledger_read_pb2.pyi +0 -0
  245. {polyester_sdk-0.2.0/src/polyester/gen/layout → polyester_sdk-0.4.0/src/polyester/gen/ledger}/v1/__init__.py +0 -0
  246. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/v1/catalog_pb2.py +0 -0
  247. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/v1/catalog_pb2.pyi +0 -0
  248. {polyester_sdk-0.2.0/src/polyester/gen/ledger → polyester_sdk-0.4.0/src/polyester/gen/marketdata}/__init__.py +0 -0
  249. {polyester_sdk-0.2.0/src/polyester/gen/ledger/read → polyester_sdk-0.4.0/src/polyester/gen/marketdata/v1}/__init__.py +0 -0
  250. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/heatmap_connect.py +0 -0
  251. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/heatmap_pb2.py +0 -0
  252. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/heatmap_pb2.pyi +0 -0
  253. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/marketdata_connect.py +0 -0
  254. {polyester_sdk-0.2.0/src/polyester/gen/ledger/read/v1 → polyester_sdk-0.4.0/src/polyester/gen/marketoverview}/__init__.py +0 -0
  255. {polyester_sdk-0.2.0/src/polyester/gen/ledger → polyester_sdk-0.4.0/src/polyester/gen/marketoverview}/v1/__init__.py +0 -0
  256. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketoverview/v1/marketoverview_connect.py +0 -0
  257. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketoverview/v1/marketoverview_pb2.py +0 -0
  258. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketoverview/v1/marketoverview_pb2.pyi +0 -0
  259. {polyester_sdk-0.2.0/src/polyester/gen/marketdata → polyester_sdk-0.4.0/src/polyester/gen/orderbook}/__init__.py +0 -0
  260. {polyester_sdk-0.2.0/src/polyester/gen/marketdata → polyester_sdk-0.4.0/src/polyester/gen/orderbook}/v1/__init__.py +0 -0
  261. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orderbook/v1/orderbook_connect.py +0 -0
  262. {polyester_sdk-0.2.0/src/polyester/gen/marketoverview → polyester_sdk-0.4.0/src/polyester/gen/orders}/__init__.py +0 -0
  263. {polyester_sdk-0.2.0/src/polyester/gen/marketoverview → polyester_sdk-0.4.0/src/polyester/gen/orders}/v1/__init__.py +0 -0
  264. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_connect.py +0 -0
  265. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_read_connect.py +0 -0
  266. {polyester_sdk-0.2.0/src/polyester/gen/orderbook → polyester_sdk-0.4.0/src/polyester/gen/polyester}/__init__.py +0 -0
  267. {polyester_sdk-0.2.0/src/polyester/gen/orderbook/v1 → polyester_sdk-0.4.0/src/polyester/gen/polyester/api}/__init__.py +0 -0
  268. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/options_pb2.py +0 -0
  269. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/options_pb2.pyi +0 -0
  270. {polyester_sdk-0.2.0/src/polyester/gen/orders → polyester_sdk-0.4.0/src/polyester/gen/polyester/api/validation}/__init__.py +0 -0
  271. {polyester_sdk-0.2.0/src/polyester/gen/orders → polyester_sdk-0.4.0/src/polyester/gen/polyester/api/validation}/v1/__init__.py +0 -0
  272. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/validation/v1/predefined_string_rules_pb2.py +0 -0
  273. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/validation/v1/predefined_string_rules_pb2.pyi +0 -0
  274. {polyester_sdk-0.2.0/src/polyester/gen/polychart → polyester_sdk-0.4.0/src/polyester/gen/polyester/ratelimit}/__init__.py +0 -0
  275. {polyester_sdk-0.2.0/src/polyester/gen/polychart/events → polyester_sdk-0.4.0/src/polyester/gen/polyester/ratelimit/v1}/__init__.py +0 -0
  276. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/ratelimit/v1/types_pb2.py +0 -0
  277. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/ratelimit/v1/types_pb2.pyi +0 -0
  278. {polyester_sdk-0.2.0/src/polyester/gen/polychart/events/v1 → polyester_sdk-0.4.0/src/polyester/gen/polyester/type}/__init__.py +0 -0
  279. {polyester_sdk-0.2.0/src/polyester/gen/polychart → polyester_sdk-0.4.0/src/polyester/gen/polyester/type}/v1/__init__.py +0 -0
  280. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/type/v1/u128_pb2.py +0 -0
  281. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/type/v1/u128_pb2.pyi +0 -0
  282. {polyester_sdk-0.2.0/src/polyester/gen/polyester → polyester_sdk-0.4.0/src/polyester/gen/privatews}/__init__.py +0 -0
  283. {polyester_sdk-0.2.0/src/polyester/gen/polyester/api → polyester_sdk-0.4.0/src/polyester/gen/privatews/v1}/__init__.py +0 -0
  284. {polyester_sdk-0.2.0/src/polyester/gen/polyester/api/validation → polyester_sdk-0.4.0/src/polyester/gen/ratelimit}/__init__.py +0 -0
  285. {polyester_sdk-0.2.0/src/polyester/gen/polyester/api/validation → polyester_sdk-0.4.0/src/polyester/gen/ratelimit}/v1/__init__.py +0 -0
  286. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ratelimit/v1/ratelimit_connect.py +0 -0
  287. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ratelimit/v1/ratelimit_pb2.pyi +0 -0
  288. {polyester_sdk-0.2.0/src/polyester/gen/polyester/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/rewards}/__init__.py +0 -0
  289. {polyester_sdk-0.2.0/src/polyester/gen/polyester/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/rewards}/v1/__init__.py +0 -0
  290. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/rewards/v1/rewards_connect.py +0 -0
  291. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/rewards/v1/rewards_pb2.py +0 -0
  292. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/rewards/v1/rewards_pb2.pyi +0 -0
  293. {polyester_sdk-0.2.0/src/polyester/gen/polyester/type → polyester_sdk-0.4.0/src/polyester/gen/swap}/__init__.py +0 -0
  294. {polyester_sdk-0.2.0/src/polyester/gen/polyester/type/v1 → polyester_sdk-0.4.0/src/polyester/gen/swap/quickswap}/__init__.py +0 -0
  295. {polyester_sdk-0.2.0/src/polyester/gen/privatews → polyester_sdk-0.4.0/src/polyester/gen/swap/quickswap/v1}/__init__.py +0 -0
  296. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_connect.py +0 -0
  297. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_pb2.py +0 -0
  298. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_pb2.pyi +0 -0
  299. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_connect.py +0 -0
  300. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_pb2.py +0 -0
  301. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_pb2.pyi +0 -0
  302. {polyester_sdk-0.2.0/src/polyester/gen/privatews → polyester_sdk-0.4.0/src/polyester/gen/swap}/v1/__init__.py +0 -0
  303. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/v1/swap_connect.py +0 -0
  304. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/v1/swap_pb2.py +0 -0
  305. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/v1/swap_pb2.pyi +0 -0
  306. {polyester_sdk-0.2.0/src/polyester/gen/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/tradews}/__init__.py +0 -0
  307. {polyester_sdk-0.2.0/src/polyester/gen/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/tradews}/v1/__init__.py +0 -0
  308. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/tradews/v1/trade_ws_pb2.py +0 -0
  309. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/tradews/v1/trade_ws_pb2.pyi +0 -0
  310. {polyester_sdk-0.2.0/src/polyester/gen/rewards → polyester_sdk-0.4.0/src/polyester/gen/transfer}/__init__.py +0 -0
  311. {polyester_sdk-0.2.0/src/polyester/gen/rewards → polyester_sdk-0.4.0/src/polyester/gen/transfer}/v1/__init__.py +0 -0
  312. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/transfer/v1/internal_transfer_connect.py +0 -0
  313. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/transfer/v1/internal_transfer_pb2.pyi +0 -0
  314. {polyester_sdk-0.2.0/src/polyester/gen/swap → polyester_sdk-0.4.0/src/polyester/gen/triggers}/__init__.py +0 -0
  315. {polyester_sdk-0.2.0/src/polyester/gen/swap/quickswap → polyester_sdk-0.4.0/src/polyester/gen/triggers/v1}/__init__.py +0 -0
  316. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/triggers/v1/triggers_connect.py +0 -0
  317. {polyester_sdk-0.2.0/src/polyester/gen/swap/quickswap/v1 → polyester_sdk-0.4.0/src/polyester/gen/vip}/__init__.py +0 -0
  318. {polyester_sdk-0.2.0/src/polyester/gen/swap → polyester_sdk-0.4.0/src/polyester/gen/vip}/v1/__init__.py +0 -0
  319. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/vip/v1/vip_connect.py +0 -0
  320. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/vip/v1/vip_pb2.py +0 -0
  321. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/vip/v1/vip_pb2.pyi +0 -0
  322. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/market_overview/__init__.py +0 -0
  323. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/market_overview/subscription.py +0 -0
  324. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/address_book.py +0 -0
  325. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/auth.py +0 -0
  326. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/fees.py +0 -0
  327. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/guard_signer.py +0 -0
  328. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/market.py +0 -0
  329. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/order_key.py +0 -0
  330. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/policies.py +0 -0
  331. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/ratelimit.py +0 -0
  332. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/realtime.py +0 -0
  333. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/sub_accounts.py +0 -0
  334. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/trading_rate_limits.py +0 -0
  335. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/zipper.py +0 -0
  336. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/orderbook/__init__.py +0 -0
  337. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/orderbook/subscription.py +0 -0
  338. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/patch.py +0 -0
  339. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/py.typed +0 -0
  340. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/__init__.py +0 -0
  341. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/private_orders.py +0 -0
  342. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/protocol.py +0 -0
  343. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/snapshot_then_stream.py +0 -0
  344. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_base.py +0 -0
  345. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_generated.py +0 -0
  346. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_scope.py +0 -0
  347. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_symbols.py +0 -0
  348. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_validation.py +0 -0
  349. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/address_book.py +0 -0
  350. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/api_keys.py +0 -0
  351. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/auth.py +0 -0
  352. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/balances.py +0 -0
  353. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/chain_analytics.py +0 -0
  354. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/deposit.py +0 -0
  355. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/fees.py +0 -0
  356. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/guard_signer.py +0 -0
  357. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/heatmap.py +0 -0
  358. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/internal_transfers.py +0 -0
  359. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/lifecycle.py +0 -0
  360. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/orders.py +0 -0
  361. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/policies.py +0 -0
  362. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/profile.py +0 -0
  363. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/rate_limits.py +0 -0
  364. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/social_verification.py +0 -0
  365. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/vip.py +0 -0
  366. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/withdraw.py +0 -0
  367. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/zipper.py +0 -0
  368. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/sync_subscribe.py +0 -0
  369. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/types/__init__.py +0 -0
  370. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/types/money.py +0 -0
  371. {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/user_agent.py +0 -0
@@ -1,5 +1,188 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ Git tag: `v0.4.0`. Released 2026-11-02.
6
+
7
+ **What a trading bot gains.** An order now says why it ended, in the same
8
+ words everywhere. A rejected order's `reject_reason` is the error code the
9
+ Orders API returns for the same refusal, and a canceled order's
10
+ `cancel_reason` says why it was canceled, on order reads and on the private
11
+ order stream alike. Before, the numeric reason used the matching engine's own
12
+ numbering, which clashed with the API's error codes. `OrderbookData.available`
13
+ tells a bot when a book's levels are unknown rather than empty, so it does not
14
+ quote into a book that is being rebuilt. `Trigger.version` picks out the
15
+ newest copy of a trigger, and nine new error codes are definite refusals: the
16
+ request did not apply, so do not resend it unchanged.
17
+
18
+ This release works on devnet now, and on testnet after testnet's next upgrade.
19
+
20
+ **Reason labels in this SDK.** `reject_reason` is the `orders.v1.ErrorCode`
21
+ name without its `ERROR_CODE_` prefix, for example `POST_ONLY_CROSS`.
22
+ `cancel_reason` is the `orders.v1.CancelReason` name without its
23
+ `CANCEL_REASON_` prefix, for example `USER_REQUEST`. The Go and Rust SDKs
24
+ format these labels differently.
25
+
26
+ **Breaking changes**
27
+ - The `whiteboard`, `polychart` and `layout` services are removed.
28
+ - The generated `orders.v1.Order` loses `terminal_reason_code` and
29
+ `terminal_reason`, and the generated `privatews.v1.OrderEvent` loses
30
+ `reason_code`. Read `Order.reject_reason` and `Order.cancel_reason` instead.
31
+ - `PrivateOrderEvent.reason_code` is replaced by `reject_reason` and
32
+ `cancel_reason`.
33
+ - `sub_accounts.get()` no longer takes `include_balances`.
34
+
35
+ ### Breaking
36
+ - The `whiteboard`, `polychart` and `layout` services are removed from the
37
+ client, because those APIs are no longer part of the public API.
38
+ - An order's terminal reason code and name are removed: the generated
39
+ `orders.v1.Order` no longer has `terminal_reason_code` or `terminal_reason`,
40
+ and the generated `privatews.v1.OrderEvent` no longer has `reason_code`.
41
+ Their numbers did not match the Orders API's error codes. Read the typed
42
+ `Order.reject_reason` and `Order.cancel_reason` instead (see Added).
43
+ - `PrivateOrderEvent.reason_code` is replaced by `reject_reason` and
44
+ `cancel_reason`. A rejected order's event names its refusal as the order
45
+ write API does (for example `POST_ONLY_CROSS`). A canceled order's event
46
+ names why it ended (for example `USER_REQUEST`), and so does the replaced
47
+ event of the order a replace ended (`REPLACED`). Both are `None` otherwise.
48
+ - `sub_accounts.get()` no longer takes `include_balances`: a sub-account read
49
+ no longer returns balances. Read them with `balances.list()` for the
50
+ sub-account.
51
+
52
+ ### Added
53
+ - `Order.reject_reason` and `Order.cancel_reason`, on order reads and on the
54
+ orders of the private order stream's snapshots and units. A rejected order
55
+ carries the error code the Orders API returns for the same refusal (for
56
+ example `INSUFFICIENT_FUNDS`); a canceled order carries why it ended (for
57
+ example `USER_REQUEST`, `IOC_REMAINDER`, `STP_EXPIRE_MAKER`, `REPLACED` or
58
+ `GTD_EXPIRED`). Both are `None` for every other status, and on servers that
59
+ do not send them yet. An unknown number reads `UNKNOWN_ERROR_CODE(n)` or
60
+ `UNKNOWN_CANCEL_REASON(n)` instead of raising.
61
+ - `OrderbookData.available`. When `False`, the book is being built or was
62
+ invalidated: its levels are unknown, not empty, so request the snapshot
63
+ again later. A subscription's book reports the value of the last snapshot
64
+ it applied; deltas, resets included, do not change it.
65
+ - `Trigger.version`: 1 for a trigger's first state, higher for every later
66
+ state change. Keep the copy with the highest version across reads and
67
+ realtime updates. It is `0` from a server that does not send it.
68
+ - Order error codes `ATTACHED_LEGS_EXCEEDED`, `FEE_ASSET_INVALID`,
69
+ `FEE_CEILING_INVALID`, `UNSUPPORTED_FIELD_SET`,
70
+ `TRIGGER_FIRE_LIMIT_REACHED`, `CONDITION_FLAGS_INVALID`,
71
+ `CONDITION_PARAMETER_SET`, `TWAP_CAPACITY_REACHED` and
72
+ `CHILD_ORDER_INCONSISTENT`. Each raises a non-retryable `PolyesterApiError`
73
+ and is a definite refusal: the request did not apply.
74
+
75
+ ## 0.3.0
76
+
77
+ Git tag: `v0.3.0`. Released 2026-10-31.
78
+
79
+ **What a trading bot gains.** `trades.subscribe()`, `transfers.subscribe()`,
80
+ `triggers.subscribe_events()` and `market_data.subscribe_trades()` now yield
81
+ every event; before, the rest of each batch was dropped or garbled. Spot
82
+ config and the catalog expose each pair's order limits, including the new cap
83
+ on one market order's notional, so a bot can size orders before it sends
84
+ them. Rejections are easier to act on: a duplicate client order ID names the
85
+ order that already holds it, a clock-skew rejection is the retryable
86
+ `PolyesterTimestampSkewError`, and a bad key or signature is a non-retryable
87
+ `PolyesterAuthError` instead of a retryable server error. Replacement orders
88
+ report the quantity they inherited, and slippage caps and trigger inputs are
89
+ checked before sending the way the API checks them. The SDK now requires
90
+ `connectrpc` 0.10.
91
+
92
+ This release works on devnet today, and on testnet after testnet's next
93
+ upgrade, which brings the new private order stream.
94
+
95
+ **Breaking changes**
96
+ - `triggers.modify()` no longer takes `limit_price`.
97
+ - `max_slippage_bps` is at most 9999 for a market order that sells, a sell
98
+ stop-loss or take-profit market child, every trailing stop and
99
+ `triggers.modify()`.
100
+ - `trigger_price_source="mark"` raises `PolyesterValidationError`.
101
+ - A buy trailing stop's `limit_price` must be at least its `activation_price`.
102
+ - API-key rejections from the API gateway raise the retryable
103
+ `PolyesterTimestampSkewError` or the non-retryable `PolyesterAuthError`
104
+ instead of a retryable `PolyesterServerError`.
105
+
106
+ ### Breaking
107
+ - `triggers.modify()` no longer takes `limit_price`: the API rejects any
108
+ change to a child's limit price. Cancel the trigger and create a new one.
109
+ - Slippage caps match the API: `max_slippage_bps` is 1–9999 for a market
110
+ order that sells, a sell stop-loss or take-profit market child, every
111
+ trailing stop (standalone or attached, either side) and `triggers.modify()`.
112
+ Buy market orders, buy stop-loss or take-profit market children and TWAP
113
+ slices still accept 10000.
114
+ - `trigger_price_source="mark"` raises `PolyesterValidationError`: spot
115
+ markets have no mark price. Use `"last"` or `"index"`.
116
+ - A buy trailing stop's `limit_price` must be at least its `activation_price`.
117
+ - API-key rejections from the API gateway are classified by their code.
118
+ `TIMESTAMP_SKEW` raises the new retryable `PolyesterTimestampSkewError`;
119
+ retrying signs the request again with a fresh timestamp, and the request
120
+ never reached a service, so `mutation_outcome_unknown()` is false. Other
121
+ codes such as `SIGNATURE_INVALID`, `KEY_DISABLED` or `IP_NOT_ALLOWED`
122
+ raise a non-retryable `PolyesterAuthError` carrying the code. Earlier
123
+ versions reported all of them as a retryable `PolyesterServerError`
124
+ without details.
125
+
126
+ ### Added
127
+ - Spot config order limits: `SpotConfig.pair_order_limits` and
128
+ `client.catalogs.order_limits_for_symbol(...)` / `order_limits_for_symbol_id(...)`
129
+ return `PairOrderLimits` with `max_limit_qty_base`, `max_market_qty_base`
130
+ and `max_order_notional_quote` (decimal strings, `None` when the pair has
131
+ no maximum) and `max_open_orders_per_pair`. `SpotConfig.max_open_orders_total`
132
+ and `client.catalogs.max_open_orders_total` give the cross-pair limit. The
133
+ open-order counts are venue defaults; an account may have a lower limit.
134
+ - `PairOrderLimits.max_market_notional_quote`: the largest notional of one
135
+ market order in quote units, valued at a buy's protection price or a sell's
136
+ reference price. A larger market order is rejected with `MAX_NOTIONAL`.
137
+ `None` means the pair has no cap. Available on `SpotConfig.pair_order_limits`
138
+ and `client.catalogs.order_limits_for_symbol(...)`.
139
+ - `Order.inherited_cum_qty`: the filled quantity a replacement order carries
140
+ over from its predecessors.
141
+ - `action_taken` on batch replace admission and status items: `"replaced"`
142
+ when a successor was admitted, `"amended"` for a cancel-only outcome.
143
+ - `existing_order_id` on a `CONFLICT_DUPLICATE_CLIENT_ORDER_ID` rejection,
144
+ when the server knows the order: `PolyesterApiError.existing_order_id` on a
145
+ single create and `BatchCreateResultItem.existing_order_id` on a batch
146
+ create item.
147
+ - `triggers.modify()` and `triggers.resume()` no longer need `symbol` or
148
+ `symbol_id`; without one they target the trigger's own market. An API key
149
+ limited to specific markets must still pass it.
150
+ - `LedgerTransfer.transfer_id`, the unsigned 128-bit decimal shared by both
151
+ legs of a transfer.
152
+ - `VIPStatus.settled_volume_quality` and `average_aop_quality`
153
+ (`VIPMetricQuality`: `status` of `complete`, `price_unavailable` or
154
+ `incomplete_history`, plus `incomplete_hours`).
155
+ - `TriggerTrailingDetails.trigger_price`, the current trailing threshold.
156
+ - `AsyncRealtimeClient.subscribe_proto_batch(...)` for channels whose
157
+ publications batch several events.
158
+ - A Connect `deadline_exceeded` raises `PolyesterTimeoutError`, a subclass of
159
+ `PolyesterTransportError`, so existing handlers still catch it.
160
+ - HTTP 501 and Connect `unimplemented` raise `PolyesterNotImplementedError`,
161
+ a `PolyesterApiError` subclass that `PolyesterRouteNotFoundError` now
162
+ extends.
163
+
164
+ ### Fixed
165
+ - `trades.subscribe()`, `transfers.subscribe()`, `triggers.subscribe_events()`
166
+ and `market_data.subscribe_trades()` decode the batched publications these
167
+ channels now send and yield each event on its own, in order. Earlier
168
+ versions decoded a batch as one event, which dropped or garbled the rest of
169
+ it. An event that fails to decode is reported through `set_on_error(...)`
170
+ without dropping the rest of its batch.
171
+ - `market_overview.create_subscription(symbols=[...])` keeps only the
172
+ requested markets in live and buffered updates; earlier versions filtered
173
+ the initial snapshot only.
174
+ - `trades.list(after_match_id=...)` rejects a value beyond the uint64 range
175
+ before sending.
176
+
177
+ ### Changed
178
+ - `connectrpc` minimum raised from 0.9.0 to 0.10.0. 0.9.0 has no
179
+ `connectrpc.codec`, so the SDK failed to import with it.
180
+ - The package description now reads "Python SDK for the Polyester API with
181
+ generated protobuf types and ConnectRPC clients."
182
+
183
+ ### Internal
184
+ - `sdk-capabilities.json` no longer carries `publicDescriptorSha256` or `generatedAt`, so a proto publication that only changes `src/polyester/gen/` and `manifest.json` no longer makes it stale; `manifest.json` stays the single source of the descriptor hash.
185
+
3
186
  ## 0.2.0
4
187
 
5
188
  Git tag: `v0.2.0`.
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: polyester-sdk
3
- Version: 0.2.0
4
- Summary: Official Python SDK for Polyester APIs.
3
+ Version: 0.4.0
4
+ Summary: Python SDK for the Polyester API with generated protobuf types and ConnectRPC clients.
5
5
  Project-URL: Homepage, https://github.com/Fabric-Labs/polyester-sdk-python
6
6
  Project-URL: Documentation, https://polyester.com/docs/sdk/python/get-started/overview
7
7
  Project-URL: Repository, https://github.com/Fabric-Labs/polyester-sdk-python
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Typing :: Typed
20
20
  Requires-Python: >=3.11
21
21
  Requires-Dist: base58>=2.1.1
22
- Requires-Dist: connectrpc<0.11,>=0.9.0
22
+ Requires-Dist: connectrpc<0.11,>=0.10.0
23
23
  Requires-Dist: cryptography>=42
24
24
  Requires-Dist: eth-abi>=5.1
25
25
  Requires-Dist: eth-account>=0.13
@@ -28,6 +28,7 @@ Requires-Dist: eth-utils>=5.0
28
28
  Requires-Dist: httpx>=0.27
29
29
  Requires-Dist: msgspec>=0.18
30
30
  Requires-Dist: protobuf>=7.35.0
31
+ Requires-Dist: pyqwest>=0.5.1
31
32
  Requires-Dist: websockets>=15
32
33
  Provides-Extra: chain
33
34
  Provides-Extra: dev
@@ -48,7 +49,7 @@ Description-Content-Type: text/markdown
48
49
  Official Python SDK for Polyester APIs, built for trading bots, backend jobs,
49
50
  research notebooks, and automation.
50
51
 
51
- **Status:** `0.2.0`, pre-1.0: a minor release may include breaking changes (see
52
+ **Status:** `0.4.0`, pre-1.0: a minor release may include breaking changes (see
52
53
  [CHANGELOG.md](CHANGELOG.md)). Proprietary license (not open source).
53
54
  API-key only; no browser login or JWT flows.
54
55
 
@@ -88,7 +89,6 @@ Requires **Python 3.11+**.
88
89
  | Zipper deposit-withdraw config | Yes |
89
90
  | Chain analytics | Yes |
90
91
  | Lifecycle flows | Yes |
91
- | Polychart / layout / whiteboard | Yes |
92
92
  | Realtime account and market streams | Yes |
93
93
  | Reference catalogs + wait-for-ready | Yes |
94
94
  | Qty / price decimal + scaled-int inputs | Yes |
@@ -103,8 +103,8 @@ Full cross-language comparison:
103
103
  <!-- sdk-capabilities:end -->
104
104
 
105
105
  Rows marked **Yes** mean that an SDK wrapper exists; deployment authorization
106
- still applies. In particular, whiteboard/social-verification and some
107
- layout/polychart routes may require a JWT session or may not be mounted.
106
+ still applies. In particular, social-verification routes may require a JWT
107
+ session or may not be mounted.
108
108
  Private streams require an Account ID and the corresponding API-key permission.
109
109
  A successful subscribe call means the token exchange and realtime handshake
110
110
  completed. Treat a structured permission denial as non-transient and update the
@@ -115,7 +115,7 @@ API-key policy before retrying.
115
115
  PyPI: https://pypi.org/project/polyester-sdk/
116
116
 
117
117
  ```bash
118
- pip install "polyester-sdk==0.2.0"
118
+ pip install "polyester-sdk==0.4.0"
119
119
  ```
120
120
 
121
121
  Realtime (Centrifugo) and on-chain Funding helpers are included by default.
@@ -294,7 +294,10 @@ first attempt admitted the order. After an unknown outcome, look up that id
294
294
  (`get` / `list_open`) before creating again. A second create with the same id
295
295
  is rejected (`CONFLICT_DUPLICATE_CLIENT_ORDER_ID`) even when the payload
296
296
  matches. Only create again with that id if reconciliation shows the first
297
- attempt did not admit.
297
+ attempt did not admit. When the server knows the order that already holds the
298
+ id, the rejection carries it: `PolyesterApiError.existing_order_id` on a
299
+ single create, `BatchCreateResultItem.existing_order_id` on a batch create
300
+ item (empty otherwise).
298
301
  Client order ids accept 1 to 36 ASCII letters, digits, `.`, `_`, `:`, `/`, and
299
302
  `-`. Batch create, cancel, and replace accept at most 20 items. `batch_create`
300
303
  always sends `request_id` (caller value or a generated `batch-create-*` key);
@@ -362,9 +365,10 @@ prerequisite for order submission.
362
365
 
363
366
  Market orders are IOC and enforce a slippage-derived execution boundary. See
364
367
  [Market Order Price Protection](https://polyester.com/docs/developer-docs/shared-concepts/market-order-price-protection)
365
- before overriding pair defaults. Set at most one of `max_slippage_bps`
366
- (1–10000) or `max_slippage_ticks`. Omit both to keep the pair default. The
367
- fields are rejected on limit orders and if both are supplied.
368
+ before overriding pair defaults. Set at most one of `max_slippage_bps` or
369
+ `max_slippage_ticks`. `max_slippage_bps` is 1–10000 for a buy and 1–9999 for a
370
+ sell. Omit both to keep the pair default. The fields are rejected on limit
371
+ orders and if both are supplied.
368
372
 
369
373
  ```python
370
374
  result = await client.orders.create(
@@ -386,6 +390,23 @@ Do **not** pass floats. `ticks` on `Price` means Polyester protocol price units
386
390
  (fixed 1e9), not market tick-size alignment (server validates tick size).
387
391
  Catalog hydration resolves `symbol` → `symbol_id` and quantity scales for
388
392
  encoding; pair admission (tick/step/min qty/notional) stays on the API.
393
+
394
+ Order limits are read from the spot config. `client.catalogs.order_limits_for_symbol("BTC-USDT")`
395
+ (or `get_spot_config().pair_order_limits`) returns `PairOrderLimits` with
396
+ decimal strings `max_limit_qty_base`, `max_market_qty_base` and
397
+ `max_order_notional_quote` (`None` when the pair has no maximum), and
398
+ `max_open_orders_per_pair`. `max_market_notional_quote` caps the notional of
399
+ one market order, valued at a buy's protection price or a sell's reference
400
+ price (`None` means no cap). `client.catalogs.max_open_orders_total` (or
401
+ `SpotConfig.max_open_orders_total`) is the cross-pair resting-order limit.
402
+ The open-order counts are the venue defaults for a typical account, `0` when
403
+ unpublished; an account may have a lower limit of its own.
404
+
405
+ ```python
406
+ limits = client.catalogs.order_limits_for_symbol("BTC-USDT")
407
+ if limits is not None and limits.max_limit_qty_base is not None:
408
+ print("largest limit order:", limits.max_limit_qty_base, "BTC")
409
+ ```
389
410
  `orders.preview_order(...)` remains the authority for balances, reservations,
390
411
  liquidity, and other stateful rules.
391
412
 
@@ -417,7 +438,31 @@ The predecessor ID can be stale after admission; reconcile the successor IDs
417
438
  and per-item phases by polling `get_batch_replace_status`. Use
418
439
  `is_batch_replace_settled(status)` only to determine that all items have moved
419
440
  to `working`, `rejected`, or `terminal`, not as a finality signal. Retry an
420
- ambiguous batch request with the same `request_id`.
441
+ ambiguous batch request with the same `request_id`. Each admission and status
442
+ item carries `action_taken`: `"replaced"` when a successor order was admitted,
443
+ `"amended"` for a cancel-only outcome with no successor (keep tracking
444
+ `old_order_id` until it is terminal).
445
+
446
+ A replacement order's `cum_qty` includes the quantity filled by its
447
+ predecessors; `Order.inherited_cum_qty` is that carried-over part (zero for an
448
+ order never replaced).
449
+
450
+ An order says why it ended. A `rejected` order's `reject_reason` is the error
451
+ code the Orders API returns for the same refusal, without the `ERROR_CODE_`
452
+ prefix (for example `POST_ONLY_CROSS` or `INSUFFICIENT_FUNDS`). A `canceled`
453
+ order's `cancel_reason` is one of `USER_REQUEST`, `IOC_REMAINDER`,
454
+ `MARKET_REMAINDER`, `STP_EXPIRE_MAKER`, `STP_EXPIRE_TAKER`, `STP_EXPIRE_BOTH`,
455
+ `REPLACED`, `GTD_EXPIRED`, `QTY_AT_OR_BELOW_FILLED`, `PAIR_DRAIN`,
456
+ `ATTACHED_RISK_REFUSED`, `CANCEL_ALL_AFTER`, `ACCOUNT_REPAIR`,
457
+ `TWAP_ROLLOVER`, `STRATEGY_CANCEL` or `SYSTEM`. Both are `None` for every other
458
+ status. A number this SDK does not know yet reads `UNKNOWN_ERROR_CODE(n)` or
459
+ `UNKNOWN_CANCEL_REASON(n)`; treat it as a generic refusal or end.
460
+
461
+ ```python
462
+ order = (await client.orders.get(key=ClientOrderId(client_order_id))).order
463
+ if order is not None and order.reject_reason == "POST_ONLY_CROSS":
464
+ ... # reprice and resend
465
+ ```
421
466
 
422
467
  `cancel_all(...)` requests cancellation of every matching order. The result
423
468
  lists up to 200 of them, oldest first, in `cancelled_orders` (each with
@@ -457,7 +502,10 @@ Public catalog reads need no credentials. Authenticated VIP status, effective sp
457
502
  account trading limits require an API key. `GetVIPStatus` has no subaccount selector: JWT and
458
503
  API-key callers receive the owning root group only. USD amounts and fee percents are decimal
459
504
  strings. Optional qualification metrics, timestamps, and next-tier thresholds stay omitted
460
- when unset. `policy_class` uses full protobuf enum names
505
+ when unset. `VIPStatus.settled_volume_quality` and `average_aop_quality` say how complete
506
+ each 30-day metric is: `status` is `complete`, `price_unavailable` (the metric is a lower
507
+ bound) or `incomplete_history`, with `incomplete_hours` out of 720. Both are `None` when the
508
+ assignment carries no qualification evidence. `policy_class` uses full protobuf enum names
461
509
  (`TRADING_RATE_LIMIT_CLASS_PLACE` / `_CANCEL`). Rate-limit rules expose
462
510
  `vip_tier` (not `tier`).
463
511
 
@@ -526,8 +574,9 @@ fields remain unset. `Order` also exposes `post_only`. Create/modify accept the
526
574
  same policy shape as a dict or `AttachedRisk`.
527
575
 
528
576
  A stop-loss or take-profit with `order_type="market"` takes an optional
529
- slippage cap, `max_slippage_ticks` (Q9 ticks) or `max_slippage_bps`, at most
530
- one; without one the pair's default market slippage applies. A limit child
577
+ slippage cap, `max_slippage_ticks` (Q9 ticks) or `max_slippage_bps` (1–10000
578
+ for a buy, 1–9999 for a sell), at most one; without one the pair's default
579
+ market slippage applies. A limit child
531
580
  takes no cap (its limit price bounds it). Either side may use either child.
532
581
  Trigger reads show the cap as `max_slippage` (ticks, as a price delta) or
533
582
  `max_slippage_bps`; both unset means the pair default.
@@ -548,7 +597,9 @@ A standalone trailing stop may sell or buy. A buy trailing stop tracks the
548
597
  lowest price and fires when the price rises the trailing distance from it.
549
598
  It requires `limit_price`, its maximum price: the most its child pays per
550
599
  unit (a 9-decimal string or `Decimal`, or `Price.from_ticks` for ticks),
551
- fixed at create. A sell trailing stop takes no `limit_price`.
600
+ fixed at create, and at least `activation_price` when that is set. A sell
601
+ trailing stop takes no `limit_price`. Every trailing stop, standalone or
602
+ attached to an order, takes `max_slippage_bps` from 1 to 9999.
552
603
 
553
604
  ```python
554
605
  await client.triggers.create(
@@ -564,15 +615,16 @@ await client.triggers.create(
564
615
  Trigger reads show a buy trailing stop with `side="buy"`,
565
616
  `order_type="limit"`, `time_in_force="ioc"` and its maximum price as
566
617
  `limit_price`; `details.trailing.trough_price` is the lowest price tracked so
567
- far (`peak_price` for a sell).
618
+ far (`peak_price` for a sell), and `details.trailing.trigger_price` is the
619
+ current threshold.
568
620
 
569
621
  Stop-loss, take-profit and trailing-stop triggers, standalone or attached to
570
622
  an order, watch the last trade price unless `trigger_price_source` names
571
- another: `"last"`, `"index"` or `"mark"`. Reads report the same label
623
+ another: `"last"` or `"index"`. Spot markets have no mark price, so `"mark"`
624
+ raises `PolyesterValidationError`. Reads report the same label
572
625
  (`Trigger.trigger_price_source`, `RiskLeg.trigger_price_source`,
573
626
  `TrailingStop.trigger_price_source`), so a leg read from an order can be
574
- passed back to create or modify unchanged. The API rejects a source the pair
575
- does not support.
627
+ passed back to create unchanged.
576
628
 
577
629
  ```python
578
630
  await client.triggers.create(
@@ -588,9 +640,20 @@ await client.triggers.create(
588
640
  When modifying a trigger, omit `activation_price` / `max_slippage_ticks` /
589
641
  `max_slippage_bps` to preserve the current values. Send an explicit zero
590
642
  (`Price.from_ticks(0)` or `0`) to clear an existing activation price or
591
- maximum-slippage cap. Create/modify `max_slippage_bps` must be 1–10000;
592
- modify still accepts `0` to clear. Trailing distance in bps uses the same
593
- 1–10000 range; trigger modify accepts `0` to clear.
643
+ maximum-slippage cap. Modify `max_slippage_bps` is 1–9999 (the patch does not
644
+ say what it modifies, so it takes the cap shared by trailing stops and
645
+ sells); `0` clears it. Trailing distance in bps is 1–10000; trigger modify
646
+ accepts `0` to clear. A child's limit price is fixed at create, so `modify`
647
+ takes no `limit_price`: cancel the trigger and create a new one instead.
648
+
649
+ `triggers.modify(...)` and `triggers.resume(...)` do not need a symbol: without
650
+ `symbol` / `symbol_id` they target the trigger's own market. When given, it
651
+ must be that market, and an API key limited to specific markets must give it.
652
+
653
+ ```python
654
+ await client.triggers.modify(trigger_id=trigger_id, trigger_price="82500")
655
+ await client.triggers.resume(trigger_id=trigger_id)
656
+ ```
594
657
 
595
658
  `orders.list_open(trigger_id=...)` / `orders.list_history(trigger_id=...)`
596
659
  return only child orders created by that trigger (TWAP/ladder slices).
@@ -598,6 +661,12 @@ Trigger-event `fire_price` is `None` for time-scheduled TWAP slice fires
598
661
  (`fire_price_ticks` is optional on the wire). Canceled and failed triggers
599
662
  expose typed `cancel_reason` / `failure_reason` labels (empty when unset).
600
663
 
664
+ `Trigger.version` is 1 for a trigger's first state and higher for every later
665
+ state change. Reads and realtime trigger updates carry the same version for
666
+ the same state; list results can lag realtime updates, and an update can
667
+ repeat after a reconnect. Keep the copy of each trigger with the highest
668
+ version and ignore any copy whose version is not higher than the one you hold.
669
+
601
670
  ## Balances: funding vs trading
602
671
 
603
672
  Ledger balances have separate **funding** and **trading** buckets per asset.
@@ -725,13 +794,27 @@ while True:
725
794
  after = page.next_after_trade_id
726
795
  ```
727
796
 
797
+ `orderbook.get(symbol=...)` returns a depth snapshot. When its `available` is
798
+ `False`, the server is building the book or invalidated it: its levels are
799
+ unknown, not empty, so do not read the empty sides as no liquidity; request
800
+ the snapshot again later. Only a snapshot carries `available`: books from
801
+ `orderbook.create_subscription(...)` report the value of the last snapshot the
802
+ subscription applied, and deltas, resets included, do not change it.
803
+
804
+ ```python
805
+ book = await client.orderbook.get(symbol="BTC-USDT", depth=10)
806
+ if not book.available:
807
+ ... # unknown book: retry later instead of quoting into an empty side
808
+ ```
809
+
728
810
  `get_candles()` returns row-oriented candles newest-first (an incomplete open
729
811
  candle, when requested, is prepended). `get_candles_columns()` normalizes its
730
812
  column response oldest-first. Sort explicitly by `ts_sec` before feeding a
731
813
  chronological indicator.
732
814
 
733
815
  Merged market overview stream (snapshot + live updates). The create call waits
734
- for the WebSocket handshake and initial snapshot:
816
+ for the WebSocket handshake and initial snapshot. With `symbols=[...]`, the
817
+ snapshot and every live or buffered update keep only those markets:
735
818
 
736
819
  ```python
737
820
  sub = await client.market_overview.create_subscription(
@@ -750,6 +833,15 @@ async with sub:
750
833
  channels; live orders use the private WebSocket (see Live orders below).
751
834
  ConnectRPC's optional JSON wire mode does not apply to realtime.
752
835
  Inbound WebSocket messages are capped at 4 MiB.
836
+ - Market trade, user fill (`trades.subscribe`), ledger transfer
837
+ (`transfers.subscribe`) and trigger event (`triggers.subscribe_events`)
838
+ channels publish batches. Each event of a batch is yielded on its own, in
839
+ order. An event that fails to decode is reported through `set_on_error(...)`
840
+ without dropping the rest of its batch. Both legs of a ledger transfer share
841
+ `LedgerTransfer.transfer_id`; with `account_code` it identifies a leg, and
842
+ a repeated leg replaces the earlier copy. A trigger event is identified by
843
+ `(trigger_id, event_type, child_seq, ts_ns)`. For your own batched channel,
844
+ use `realtime.subscribe_proto_batch(channel, decode_batch=...)`.
753
845
  - Subscription queues are bounded. If the consumer falls behind, the SDK raises
754
846
  `PolyesterRealtimeOverflowError` and faults the subscription; it does **not**
755
847
  silently drop updates.
@@ -819,6 +911,11 @@ async with subscription:
819
911
  the same `version` are identical, and a higher `version` is newer. To merge
820
912
  with a read: read `list_open()`, subscribe, wait for `PrivateOrdersReady`,
821
913
  and keep the higher version of each order.
914
+ - A `PrivateOrderEvent` says why an order ended, as the order's own fields
915
+ do: `reject_reason` on `rejected`, and `cancel_reason` on `canceled` and on
916
+ the `replaced` event of the order a replace ended (`REPLACED`). Both are
917
+ `None` otherwise, including on the `replaced` event that installs the
918
+ successor.
822
919
  - `PrivateOrdersReady` means the subscription reached the account's read
823
920
  boundary, sampled when the server received the subscribe: from then on it
824
921
  reflects every acknowledgement given before the subscribe. Wait for it
@@ -919,8 +1016,9 @@ account; those tests may cancel every open order in their selected symbol.
919
1016
 
920
1017
  CI requires every public Connect RPC in gen to be wrapped or listed in
921
1018
  `sdk-coverage.toml`. Contributors: `python scripts/check_sdk_coverage.py`.
922
- CI refreshes `sdk-capabilities.json` and the README capability table on the
923
- same branch when they drift (same-repo PRs / pushes to `main`).
1019
+ CI fails when `sdk-capabilities.json` or the README capability table is stale;
1020
+ refresh both with `python scripts/check_sdk_coverage.py --write-capabilities`
1021
+ and commit the result.
924
1022
 
925
1023
  **Pre-release checklist (realtime changes):**
926
1024
 
@@ -971,4 +1069,18 @@ Connect RPC over HTTP via generated clients in `src/polyester/gen/`. Wire format
971
1069
  defaults to **binary protobuf**; pass `wire_format="json"` for debugging.
972
1070
 
973
1071
  Some RPCs may return HTTP 404 on devnet. The SDK raises `PolyesterRouteNotFoundError`
974
- with a clearer message than `[unimplemented]: Not Found`.
1072
+ with a clearer message than `[unimplemented]: Not Found`. HTTP 501 and Connect
1073
+ `unimplemented` raise `PolyesterNotImplementedError`, the parent class of
1074
+ `PolyesterRouteNotFoundError`; neither is retryable.
1075
+
1076
+ API-key rejections from the gateway carry a code. A request whose signed
1077
+ timestamp falls outside the server's skew window raises
1078
+ `PolyesterTimestampSkewError` (`code == "TIMESTAMP_SKEW"`). It is
1079
+ retryable, and the gateway rejected it before any service saw it: a retry
1080
+ signs again with a fresh timestamp. If it persists, fix the local clock. For
1081
+ large bursts, bound concurrency so requests do not wait locally past the skew
1082
+ window. Other gateway codes (`SIGNATURE_INVALID`, `KEY_DISABLED`,
1083
+ `IP_NOT_ALLOWED`, ...) raise a non-retryable `PolyesterAuthError` whose
1084
+ message is the code. A request whose deadline expires raises `PolyesterTimeoutError`, a
1085
+ `PolyesterTransportError`: retryable, but a mutation may still have been
1086
+ applied, so reconcile first (`mutation_outcome_unknown(error)` is true).