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.
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/CHANGELOG.md +183 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/PKG-INFO +140 -28
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/README.md +136 -25
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/pyproject.toml +4 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/__init__.py +6 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/_version.py +1 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/_wire.py +25 -5
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/catalogs/__init__.py +28 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/client.py +0 -9
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/bps.py +12 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/orderbook.py +1 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/orders.py +17 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/private_orders.py +7 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/transfers.py +1 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/triggers.py +2 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/vip.py +15 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/orders.py +15 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/realtime_decode.py +63 -3
- polyester_sdk-0.4.0/src/polyester/codecs/spot_config.py +78 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/triggers.py +43 -17
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/errors.py +55 -6
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/address_book_pb2.py +16 -16
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/api_keys_pb2.py +4 -4
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/auth_pb2.py +3 -3
- polyester_sdk-0.4.0/src/polyester/gen/auth/v1/subaccounts_pb2.py +285 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/subaccounts_pb2.pyi +4 -9
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/analytics_read_pb2.py +23 -22
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/analytics_read_pb2.pyi +1 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/deposit_pb2.py +16 -15
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/deposit_pb2.pyi +1 -0
- polyester_sdk-0.4.0/src/polyester/gen/chain/guard/v1/guard_signer_pb2.py +124 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/v1/guard_signer_pb2.pyi +0 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/withdraw_pb2.py +4 -4
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/fees/v1/fees_pb2.py +11 -10
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/fees/v1/fees_pb2.pyi +1 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/read/v1/ledger_read_pb2.py +10 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/marketdata_pb2.py +14 -14
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/marketdata_pb2.pyi +4 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orderbook/v1/orderbook_pb2.py +8 -8
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orderbook/v1/orderbook_pb2.pyi +4 -2
- polyester_sdk-0.4.0/src/polyester/gen/orders/v1/orders_pb2.py +343 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_pb2.pyi +19 -0
- polyester_sdk-0.4.0/src/polyester/gen/orders/v1/orders_read_pb2.py +199 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_read_pb2.pyi +44 -6
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/privatews/v1/private_ws_pb2.py +16 -16
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/privatews/v1/private_ws_pb2.pyi +6 -4
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ratelimit/v1/ratelimit_pb2.py +3 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/transfer/v1/internal_transfer_pb2.py +3 -3
- polyester_sdk-0.4.0/src/polyester/gen/triggers/v1/triggers_pb2.py +268 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/triggers/v1/triggers_pb2.pyi +5 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/__init__.py +4 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/common.py +41 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/private_orders.py +9 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/trading.py +38 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/vip.py +21 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/orderbook/local_book.py +2 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/auth.py +10 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/client.py +48 -13
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/__init__.py +0 -6
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_realtime_subscribe.py +15 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/market_data.py +2 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/market_overview.py +16 -3
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/orderbook.py +5 -1
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/sub_accounts.py +0 -2
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/trades.py +7 -7
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/transfers.py +4 -4
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/triggers.py +34 -12
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/transport.py +64 -1
- polyester_sdk-0.2.0/src/polyester/gen/auth/v1/subaccounts_pb2.py +0 -286
- polyester_sdk-0.2.0/src/polyester/gen/chain/guard/v1/guard_signer_pb2.py +0 -125
- polyester_sdk-0.2.0/src/polyester/gen/collab/v1/whiteboard_connect.py +0 -521
- polyester_sdk-0.2.0/src/polyester/gen/collab/v1/whiteboard_pb2.py +0 -155
- polyester_sdk-0.2.0/src/polyester/gen/collab/v1/whiteboard_pb2.pyi +0 -259
- polyester_sdk-0.2.0/src/polyester/gen/layout/v1/layout_connect.py +0 -1041
- polyester_sdk-0.2.0/src/polyester/gen/layout/v1/layout_pb2.py +0 -194
- polyester_sdk-0.2.0/src/polyester/gen/layout/v1/layout_pb2.pyi +0 -384
- polyester_sdk-0.2.0/src/polyester/gen/orders/v1/orders_pb2.py +0 -342
- polyester_sdk-0.2.0/src/polyester/gen/orders/v1/orders_read_pb2.py +0 -188
- polyester_sdk-0.2.0/src/polyester/gen/polychart/events/v1/polychart_events_pb2.py +0 -50
- polyester_sdk-0.2.0/src/polyester/gen/polychart/events/v1/polychart_events_pb2.pyi +0 -71
- polyester_sdk-0.2.0/src/polyester/gen/polychart/v1/polychart_connect.py +0 -1041
- polyester_sdk-0.2.0/src/polyester/gen/polychart/v1/polychart_pb2.py +0 -171
- polyester_sdk-0.2.0/src/polyester/gen/polychart/v1/polychart_pb2.pyi +0 -355
- polyester_sdk-0.2.0/src/polyester/gen/tradews/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/tradews/v1/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/transfer/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/transfer/v1/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/triggers/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/triggers/v1/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/triggers/v1/triggers_pb2.py +0 -267
- polyester_sdk-0.2.0/src/polyester/gen/vip/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/gen/vip/v1/__init__.py +0 -0
- polyester_sdk-0.2.0/src/polyester/services/layout.py +0 -200
- polyester_sdk-0.2.0/src/polyester/services/polychart.py +0 -208
- polyester_sdk-0.2.0/src/polyester/services/whiteboard.py +0 -140
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/.env.example +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/.gitignore +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/LICENSE +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/SECURITY.md +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/examples/basic_bot.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/auth_interceptor.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/catalogs/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/catalogs/zipper_supply.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/_deps.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/calldata.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/destination.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/environment.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/rpc.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/safe.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/chain/userop.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/correlation_id.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/api_keys.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/balances.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/common.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/deposit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/heatmap.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/internal_transfers.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/invariants.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/lifecycle.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/market_data.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/market_overview.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/policies.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/ratelimit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/resolve.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/trading_rate_limits.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/withdraw.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/decode/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/enums.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/heatmap.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/ledger.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/ledger_amounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/orderbook.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/proto_build.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/proto_helpers.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/scalars.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/wire_decode.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/codecs/withdraw.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/environment.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/address_book_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/address_book_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/api_keys_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/api_keys_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/auth_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/auth_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/mfa_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/mfa_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/mfa_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/policies_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/policies_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/policies_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/profile_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/profile_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/profile_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/resolve_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/resolve_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/resolve_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/social_verification_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/social_verification_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/social_verification_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/auth/v1/subaccounts_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/validate/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/validate/validate_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/buf/validate/validate_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/analytics/v1/analytics_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/deposit/v1/deposit_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/guard/v1/guard_signer_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/lifecycle_read_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/types_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/lifecycle/v1/types_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/auto_withdraw_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/withdraw_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/withdraw/v1/withdraw_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/reason_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/reason_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/zipper_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/zipper_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/chain/zipper/v1/zipper_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/checkpoints_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/checkpoints_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/checkpoints/v1/checkpoints_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/claims_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/claims_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/claims/v1/claims_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/collab → polyester_sdk-0.4.0/src/polyester/gen/fees}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/collab → polyester_sdk-0.4.0/src/polyester/gen/fees}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/fees/v1/fees_connect.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/fees → polyester_sdk-0.4.0/src/polyester/gen/gnostic}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/fees/v1 → polyester_sdk-0.4.0/src/polyester/gen/gnostic/openapi}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/gnostic → polyester_sdk-0.4.0/src/polyester/gen/gnostic/openapi/v3}/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/annotations_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/annotations_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/openapiv3_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/gnostic/openapi/v3/openapiv3_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/gnostic/openapi → polyester_sdk-0.4.0/src/polyester/gen/google}/__init__.py +0 -0
- {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
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/annotations_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/annotations_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/field_behavior_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/field_behavior_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/http_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/google/api/http_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/google → polyester_sdk-0.4.0/src/polyester/gen/ledger}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/google/api → polyester_sdk-0.4.0/src/polyester/gen/ledger/read}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/layout → polyester_sdk-0.4.0/src/polyester/gen/ledger/read/v1}/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/read/v1/ledger_read_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/read/v1/ledger_read_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/layout → polyester_sdk-0.4.0/src/polyester/gen/ledger}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/v1/catalog_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ledger/v1/catalog_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/ledger → polyester_sdk-0.4.0/src/polyester/gen/marketdata}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/ledger/read → polyester_sdk-0.4.0/src/polyester/gen/marketdata/v1}/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/heatmap_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/heatmap_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/heatmap_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketdata/v1/marketdata_connect.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/ledger/read/v1 → polyester_sdk-0.4.0/src/polyester/gen/marketoverview}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/ledger → polyester_sdk-0.4.0/src/polyester/gen/marketoverview}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketoverview/v1/marketoverview_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketoverview/v1/marketoverview_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/marketoverview/v1/marketoverview_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/marketdata → polyester_sdk-0.4.0/src/polyester/gen/orderbook}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/marketdata → polyester_sdk-0.4.0/src/polyester/gen/orderbook}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orderbook/v1/orderbook_connect.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/marketoverview → polyester_sdk-0.4.0/src/polyester/gen/orders}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/marketoverview → polyester_sdk-0.4.0/src/polyester/gen/orders}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/orders/v1/orders_read_connect.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/orderbook → polyester_sdk-0.4.0/src/polyester/gen/polyester}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/orderbook/v1 → polyester_sdk-0.4.0/src/polyester/gen/polyester/api}/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/options_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/options_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/orders → polyester_sdk-0.4.0/src/polyester/gen/polyester/api/validation}/__init__.py +0 -0
- {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
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/validation/v1/predefined_string_rules_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/api/validation/v1/predefined_string_rules_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polychart → polyester_sdk-0.4.0/src/polyester/gen/polyester/ratelimit}/__init__.py +0 -0
- {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
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/ratelimit/v1/types_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/ratelimit/v1/types_pb2.pyi +0 -0
- {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
- {polyester_sdk-0.2.0/src/polyester/gen/polychart → polyester_sdk-0.4.0/src/polyester/gen/polyester/type}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/type/v1/u128_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/polyester/type/v1/u128_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polyester → polyester_sdk-0.4.0/src/polyester/gen/privatews}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polyester/api → polyester_sdk-0.4.0/src/polyester/gen/privatews/v1}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polyester/api/validation → polyester_sdk-0.4.0/src/polyester/gen/ratelimit}/__init__.py +0 -0
- {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
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ratelimit/v1/ratelimit_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/ratelimit/v1/ratelimit_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polyester/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/rewards}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polyester/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/rewards}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/rewards/v1/rewards_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/rewards/v1/rewards_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/rewards/v1/rewards_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/polyester/type → polyester_sdk-0.4.0/src/polyester/gen/swap}/__init__.py +0 -0
- {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
- {polyester_sdk-0.2.0/src/polyester/gen/privatews → polyester_sdk-0.4.0/src/polyester/gen/swap/quickswap/v1}/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_broker_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/quickswap/v1/quickswap_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/privatews → polyester_sdk-0.4.0/src/polyester/gen/swap}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/v1/swap_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/v1/swap_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/swap/v1/swap_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/tradews}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/ratelimit → polyester_sdk-0.4.0/src/polyester/gen/tradews}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/tradews/v1/trade_ws_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/tradews/v1/trade_ws_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/rewards → polyester_sdk-0.4.0/src/polyester/gen/transfer}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/rewards → polyester_sdk-0.4.0/src/polyester/gen/transfer}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/transfer/v1/internal_transfer_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/transfer/v1/internal_transfer_pb2.pyi +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/swap → polyester_sdk-0.4.0/src/polyester/gen/triggers}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/swap/quickswap → polyester_sdk-0.4.0/src/polyester/gen/triggers/v1}/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/triggers/v1/triggers_connect.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/swap/quickswap/v1 → polyester_sdk-0.4.0/src/polyester/gen/vip}/__init__.py +0 -0
- {polyester_sdk-0.2.0/src/polyester/gen/swap → polyester_sdk-0.4.0/src/polyester/gen/vip}/v1/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/vip/v1/vip_connect.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/vip/v1/vip_pb2.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/gen/vip/v1/vip_pb2.pyi +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/market_overview/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/market_overview/subscription.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/market.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/order_key.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/policies.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/ratelimit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/realtime.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/sub_accounts.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/trading_rate_limits.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/models/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/orderbook/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/orderbook/subscription.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/patch.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/py.typed +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/private_orders.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/protocol.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/realtime/snapshot_then_stream.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_base.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_generated.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_scope.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_symbols.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/_validation.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/address_book.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/api_keys.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/auth.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/balances.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/chain_analytics.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/deposit.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/fees.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/guard_signer.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/heatmap.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/internal_transfers.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/lifecycle.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/orders.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/policies.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/profile.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/rate_limits.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/social_verification.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/vip.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/withdraw.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/services/zipper.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/sync_subscribe.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/types/__init__.py +0 -0
- {polyester_sdk-0.2.0 → polyester_sdk-0.4.0}/src/polyester/types/money.py +0 -0
- {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.
|
|
4
|
-
Summary:
|
|
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.
|
|
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.
|
|
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,
|
|
107
|
-
|
|
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.
|
|
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
|
-
|
|
367
|
-
|
|
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. `
|
|
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
|
|
530
|
-
one; without one the pair's default
|
|
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
|
|
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"
|
|
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
|
|
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.
|
|
592
|
-
|
|
593
|
-
1–10000
|
|
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
|
|
923
|
-
|
|
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).
|