@polyester/sdk 0.27.1 → 0.27.3
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.
- package/CHANGELOG.md +16 -0
- package/dist/catalogs/readers.js +6 -6
- package/dist/catalogs/readers.js.map +1 -1
- package/dist/catalogs/snapshot-validation.js +3 -1
- package/dist/catalogs/snapshot-validation.js.map +1 -1
- package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts +3 -3
- package/dist/gen/ledger/read/v1/ledger_read_pb.js.map +1 -1
- package/dist/gen/marketdata/v1/heatmap_pb.d.ts +6 -6
- package/dist/gen/marketdata/v1/heatmap_pb.js.map +1 -1
- package/dist/gen/marketdata/v1/marketdata_pb.d.ts +48 -28
- package/dist/gen/marketdata/v1/marketdata_pb.d.ts.map +1 -1
- package/dist/gen/marketdata/v1/marketdata_pb.js +1 -1
- package/dist/gen/marketdata/v1/marketdata_pb.js.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +11 -10
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
- package/dist/gen/orderbook/v1/orderbook_pb.d.ts +1 -1
- package/dist/gen/orderbook/v1/orderbook_pb.js.map +1 -1
- package/dist/gen/orders/v1/orders_pb.d.ts +38 -24
- package/dist/gen/orders/v1/orders_pb.d.ts.map +1 -1
- package/dist/gen/orders/v1/orders_pb.js +3 -3
- package/dist/gen/orders/v1/orders_pb.js.map +1 -1
- package/dist/gen/orders/v1/orders_read_pb.d.ts +17 -10
- package/dist/gen/orders/v1/orders_read_pb.d.ts.map +1 -1
- package/dist/gen/orders/v1/orders_read_pb.js +3 -3
- package/dist/gen/orders/v1/orders_read_pb.js.map +1 -1
- package/dist/gen/triggers/v1/triggers_pb.d.ts +40 -26
- package/dist/gen/triggers/v1/triggers_pb.d.ts.map +1 -1
- package/dist/gen/triggers/v1/triggers_pb.js +7 -1
- package/dist/gen/triggers/v1/triggers_pb.js.map +1 -1
- package/dist/services/candles/candles.schemas.d.ts.map +1 -1
- package/dist/services/candles/candles.schemas.js +13 -11
- package/dist/services/candles/candles.schemas.js.map +1 -1
- package/dist/services/heatmap/heatmap.schemas.d.ts +4 -4
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
- package/dist/services/market-data/market-data.schemas.js +14 -2
- package/dist/services/market-data/market-data.schemas.js.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.js +2 -1
- package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.d.ts +1 -1
- package/dist/services/orders/orders-batch.schemas.d.ts +17 -0
- package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-batch.schemas.js +3 -1
- package/dist/services/orders/orders-batch.schemas.js.map +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +6 -6
- package/dist/services/orders/orders.d.ts +4 -4
- package/dist/services/orders/orders.js +4 -4
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +4 -4
- package/dist/services/triggers/triggers-output.schemas.d.ts +22 -18
- package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.js +4 -2
- package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
- package/dist/services/triggers/triggers.codecs.js +6 -3
- package/dist/services/triggers/triggers.codecs.js.map +1 -1
- package/dist/shared/catalog-config.d.ts +4 -0
- package/dist/shared/catalog-config.d.ts.map +1 -1
- package/dist/shared/catalog-config.js.map +1 -1
- package/dist/shared/decimal-surface.d.ts +4 -0
- package/dist/shared/decimal-surface.d.ts.map +1 -1
- package/dist/shared/decimal-surface.js +6 -1
- package/dist/shared/decimal-surface.js.map +1 -1
- package/dist/utils/numbers.js.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger_read_pb.js","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file ledger/read/v1/ledger_read.proto (package ledger.read.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { AccountCode, TransferCode } from \"../../v1/catalog_pb.js\";\nimport { file_ledger_v1_catalog } from \"../../v1/catalog_pb.js\";\nimport { file_polyester_api_options } from \"../../../polyester/api/options_pb.js\";\nimport type { U128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport { file_polyester_type_v1_u128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ledger/read/v1/ledger_read.proto.\n */\nexport const file_ledger_read_v1_ledger_read: GenFile = /*@__PURE__*/\n fileDesc(\"CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAkiVQoYUG9ydGZvbGlvQWNjb3VudEdyb3VwaW5nEhcKCmFjY291bnRfaWQYASABKAZIAIgBARIRCglyZW1haW5pbmcYAiABKAhCDQoLX2FjY291bnRfaWQi3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkItcBCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEkUKEXBvcnRmb2xpb19hY2NvdW50GAQgASgLMigubGVkZ2VyLnJlYWQudjEuUG9ydGZvbGlvQWNjb3VudEdyb3VwaW5nSAASEAoIZXF1aXR5X3EYAiADKBJCCgoIZ3JvdXBpbmci8AEKHkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZRIrCgVyYW5nZRgBIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZRIOCgZidWNrZXQYAiABKAkSFAoMc3RhcnRfdHNfc2VjGAMgASgHEhIKCmVuZF90c19zZWMYBCABKAcSEwoLcXVvdGVfYXNzZXQYBiABKAkSDgoGcG9pbnRzGAcgASgNEiwKBnNlcmllcxgIIAMoCzIcLmxlZGdlci5yZWFkLnYxLkVxdWl0eVNlcmllcxIUCgxidGNfcHJpY2VzX3EYCiADKAMiVwomR2V0UG9ydGZvbGlvRXF1aXR5SGlzdG9yeVNlcmllc1JlcXVlc3QSLQoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2VCACL5AQonR2V0UG9ydGZvbGlvRXF1aXR5SGlzdG9yeVNlcmllc1Jlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxITCgtxdW90ZV9hc3NldBgFIAEoCRIOCgZwb2ludHMYBiABKA0SLAoGc2VyaWVzGAcgAygLMhwubGVkZ2VyLnJlYWQudjEuRXF1aXR5U2VyaWVzEhQKDGJ0Y19wcmljZXNfcRgIIAMoAyJXChZQb3J0Zm9saW9BY2NvdW50RXF1aXR5EhIKCmFjY291bnRfaWQYASABKAYSEAoIZXF1aXR5X3EYAiABKBISFwoNdG9wX2Fzc2V0X2lkcxgDIAMoDUIAIk0KFFBvcnRmb2xpb0Fzc2V0RXF1aXR5EhAKCGFzc2V0X2lkGAEgASgNEhEKCWJhbGFuY2VfcRgCIAEoBBIQCghlcXVpdHlfcRgDIAEoEiIjCiFHZXRQb3J0Zm9saW9FcXVpdHlTbmFwc2hvdFJlcXVlc3Qi1gEKIkdldFBvcnRmb2xpb0VxdWl0eVNuYXBzaG90UmVzcG9uc2USEwoLcXVvdGVfYXNzZXQYASABKAkSFgoOdG90YWxfZXF1aXR5X3EYAiABKBISOAoIYWNjb3VudHMYAyADKAsyJi5sZWRnZXIucmVhZC52MS5Qb3J0Zm9saW9BY2NvdW50RXF1aXR5EjQKBmFzc2V0cxgEIAMoCzIkLmxlZGdlci5yZWFkLnYxLlBvcnRmb2xpb0Fzc2V0RXF1aXR5EhMKC2J0Y19wcmljZV9xGAUgASgDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIpsBCgxUcmFuc2ZlclNpZGUSLgoEa2luZBgBIAEoDjIgLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZUtpbmQSFwoKYWNjb3VudF9pZBgCIAEoBkgAiAEBEg8KB2FkZHJlc3MYAyABKAkSFQoIY2hhaW5faWQYBCABKA1IAYgBAUINCgtfYWNjb3VudF9pZEILCglfY2hhaW5faWQiggMKC1RyYW5zZmVyUm93EhAKCGFzc2V0X2lkGAEgASgNEisKCmFtb3VudF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4Ei4KDXRyYW5zZmVyX2NvZGUYAyABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlEiwKDGFjY291bnRfY29kZRgEIAEoDjIWLmxlZGdlci52MS5BY2NvdW50Q29kZRINCgV0c191cxgFIAEoBBIyChFiYWxhbmNlX2FmdGVyX2UxOBgJIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIaXNfZGViaXQYCiABKAgSDwoHbGlua19pZBgLIAEoBBIPCgdmbG93X2lkGAwgASgJEiwKBnNvdXJjZRgNIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZRIxCgtkZXN0aW5hdGlvbhgOIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZSJiChVMaXN0VHJhbnNmZXJzUmVzcG9uc2USLgoJdHJhbnNmZXJzGAEgAygLMhsubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAMgASgJQgAieQoQTGlzdEhvbGRzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIUCgpwYWdlX3Rva2VuGAQgASgJQgBCEAoOX3N1YmFjY291bnRfaWQieQoHSG9sZFJvdxIPCgdob2xkX2lkGAEgASgGEjQKE2Ftb3VudF9yZXNlcnZlZF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhAKCGFzc2V0X2lkGAMgASgNEhUKDWV4cGlyZXNfYXRfbnMYBCABKAQiVgoRTGlzdEhvbGRzUmVzcG9uc2USJgoFaG9sZHMYASADKAsyFy5sZWRnZXIucmVhZC52MS5Ib2xkUm93EhkKD25leHRfcGFnZV90b2tlbhgCIAEoCUIAIjYKC0Vycm9yRGV0YWlsEicKBGNvZGUYASABKA4yGS5sZWRnZXIucmVhZC52MS5FcnJvckNvZGUqbQoMQmFsYW5jZVJhbmdlEhUKEVJBTkdFX1VOU1BFQ0lGSUVEEAASCQoFREFZXzEQARIJCgVEQVlfNxACEgoKBkRBWV8zMBADEgoKBkRBWV85MBAEEgsKB0RBWV8xODAQBRILCgdEQVlfMzY1EAYqUwoNRXF1aXR5R3JvdXBCeRIYChRHUk9VUF9CWV9VTlNQRUNJRklFRBAAEhQKEEdST1VQX0JZX0FDQ09VTlQQARISCg5HUk9VUF9CWV9BU1NFVBACKrUBChBUcmFuc2ZlclNpZGVLaW5kEiIKHlRSQU5TRkVSX1NJREVfS0lORF9VTlNQRUNJRklFRBAAEhMKD0ZVTkRJTkdfQUNDT1VOVBABEhMKD1RSQURJTkdfQUNDT1VOVBACEhQKEEVYVEVSTkFMX0FERFJFU1MQAxIYChRQUklWQVRFX0NPVU5URVJQQVJUWRAEEg8KC0ZFRV9BQ0NPVU5UEAUSEgoOU1lTVEVNX0FDQ09VTlQQBiryAgoJRXJyb3JDb2RlEhoKFkVSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIaChZFUlJPUl9DT0RFX0JBRF9SRVFVRVNUEAESHgoaRVJST1JfQ09ERV9VTkFVVEhFTlRJQ0FURUQQAhIgChxFUlJPUl9DT0RFX1BFUk1JU1NJT05fREVOSUVEEAMSGAoURVJST1JfQ09ERV9OT1RfRk9VTkQQBBIhCh1FUlJPUl9DT0RFX01JU1NJTkdfQUNDT1VOVF9JRBAFEiEKHUVSUk9SX0NPREVfSU5WQUxJRF9BQ0NPVU5UX0lEEAYSHQoZRVJST1JfQ09ERV9NSVNTSU5HX1dBTExFVBAHEiwKKEVSUk9SX0NPREVfV0FMTEVUX1JFU09MVVRJT05fVU5BVkFJTEFCTEUQCBIfChtFUlJPUl9DT0RFX1dBTExFVF9OT1RfRk9VTkQQCRIdChlFUlJPUl9DT0RFX1VQU1RSRUFNX0VSUk9SEAoypwYKEUxlZGdlclJlYWRTZXJ2aWNlEmoKEUdldEJhbGFuY2VIaXN0b3J5EigubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXF1ZXN0GikubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXNwb25zZSIAEnkKFkdldEVxdWl0eUhpc3RvcnlTZXJpZXMSLS5sZWRnZXIucmVhZC52MS5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVxdWVzdBouLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZSIAEpQBCh9HZXRQb3J0Zm9saW9FcXVpdHlIaXN0b3J5U2VyaWVzEjYubGVkZ2VyLnJlYWQudjEuR2V0UG9ydGZvbGlvRXF1aXR5SGlzdG9yeVNlcmllc1JlcXVlc3QaNy5sZWRnZXIucmVhZC52MS5HZXRQb3J0Zm9saW9FcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2UiABKFAQoaR2V0UG9ydGZvbGlvRXF1aXR5U25hcHNob3QSMS5sZWRnZXIucmVhZC52MS5HZXRQb3J0Zm9saW9FcXVpdHlTbmFwc2hvdFJlcXVlc3QaMi5sZWRnZXIucmVhZC52MS5HZXRQb3J0Zm9saW9FcXVpdHlTbmFwc2hvdFJlc3BvbnNlIgASXgoNTGlzdFRyYW5zZmVycxIkLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXF1ZXN0GiUubGVkZ2VyLnJlYWQudjEuTGlzdFRyYW5zZmVyc1Jlc3BvbnNlIgASUgoJTGlzdEhvbGRzEiAubGVkZ2VyLnJlYWQudjEuTGlzdEhvbGRzUmVxdWVzdBohLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1Jlc3BvbnNlIgASWAoLR2V0QmFsYW5jZXMSIi5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1JlcXVlc3QaIy5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1Jlc3BvbnNlIgBCR1pFZ2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9sZWRnZXIvcmVhZC92MTtsZWRnZXJyZHYxYgZwcm90bzM=\", [file_ledger_v1_catalog, file_polyester_api_options, file_polyester_type_v1_u128]);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesRequest\n */\nexport type GetBalancesRequest = Message<\"ledger.read.v1.GetBalancesRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesRequest.\n * Use `create(GetBalancesRequestSchema)` to create a new message.\n */\nexport const GetBalancesRequestSchema: GenMessage<GetBalancesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * Fixed-size representation for balances (for Protobuf/WS clients).\n * Uses common U128 messages for amounts to keep schema tidy and consistent.\n *\n * @generated from message ledger.read.v1.AssetBalance\n */\nexport type AssetBalance = Message<\"ledger.read.v1.AssetBalance\"> & {\n /**\n * Public unified asset id. Resolve symbol from SpotConfig; U128 amounts in\n * this message always use fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Trading balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 trading = 2;\n */\n trading?: U128 | undefined;\n\n /**\n * Funding balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 funding = 3;\n */\n funding?: U128 | undefined;\n\n /**\n * Reserved amount in the trading bucket at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 reserved = 4;\n */\n reserved?: U128 | undefined;\n\n /**\n * Amount currently available for new trading activity at fixed 18-decimal\n * ledger scale. This value already accounts for active reservations.\n *\n * @generated from field: polyester.type.v1.U128 available = 5;\n */\n available?: U128 | undefined;\n\n /**\n * Opaque monotonic revision for the atomic trading, reserved, and available\n * values. Higher means newer; zero means no trading state has been observed.\n *\n * @generated from field: uint64 trading_revision = 6;\n */\n tradingRevision: bigint;\n\n /**\n * Opaque monotonic revision for the funding value. Higher means newer; zero\n * means no funding state has been observed.\n *\n * @generated from field: uint64 funding_revision = 7;\n */\n fundingRevision: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetBalance.\n * Use `create(AssetBalanceSchema)` to create a new message.\n */\nexport const AssetBalanceSchema: GenMessage<AssetBalance> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesResponse\n */\nexport type GetBalancesResponse = Message<\"ledger.read.v1.GetBalancesResponse\"> & {\n /**\n * One entry for every supported unified asset, including assets with zero\n * balances. Sorted by available trading amount (highest first), then by\n * asset symbol alphabetically.\n *\n * @generated from field: repeated ledger.read.v1.AssetBalance balances = 1;\n */\n balances: AssetBalance[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesResponse.\n * Use `create(GetBalancesResponseSchema)` to create a new message.\n */\nexport const GetBalancesResponseSchema: GenMessage<GetBalancesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * @generated from message ledger.read.v1.GetBalanceHistoryRequest\n */\nexport type GetBalanceHistoryRequest = Message<\"ledger.read.v1.GetBalanceHistoryRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional public asset filter. When unset/0, returns all assets.\n *\n * @generated from field: uint32 ledger = 3;\n */\n ledger: number;\n\n /**\n * Optional subset of account buckets to return. When empty, returns all\n * account buckets.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryRequest.\n * Use `create(GetBalanceHistoryRequestSchema)` to create a new message.\n */\nexport const GetBalanceHistoryRequestSchema: GenMessage<GetBalanceHistoryRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * Columnar balance series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.BalanceSeries\n */\nexport type BalanceSeries = Message<\"ledger.read.v1.BalanceSeries\"> & {\n /**\n * public unified asset id\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * account bucket\n *\n * @generated from field: ledger.v1.AccountCode account_code = 2;\n */\n accountCode: AccountCode;\n\n /**\n * Chart balance in asset units scaled by 1e7 (7 decimals).\n * Values are downscaled from 18-decimal ledger balances for compact charting\n * and align 1:1 with implicit timestamps.\n *\n * @generated from field: repeated uint64 balance_q = 3;\n */\n balanceQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.BalanceSeries.\n * Use `create(BalanceSeriesSchema)` to create a new message.\n */\nexport const BalanceSeriesSchema: GenMessage<BalanceSeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 4);\n\n/**\n * GetBalanceHistoryResponse returns aligned balance chart series.\n *\n * @generated from message ledger.read.v1.GetBalanceHistoryResponse\n */\nexport type GetBalanceHistoryResponse = Message<\"ledger.read.v1.GetBalanceHistoryResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 5;\n */\n points: number;\n\n /**\n * Balance series ordered by asset ID, then account bucket.\n *\n * @generated from field: repeated ledger.read.v1.BalanceSeries series = 6;\n */\n series: BalanceSeries[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryResponse.\n * Use `create(GetBalanceHistoryResponseSchema)` to create a new message.\n */\nexport const GetBalanceHistoryResponseSchema: GenMessage<GetBalanceHistoryResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 5);\n\n/**\n * Account grouping metadata (used when group_by = ACCOUNT).\n *\n * @generated from message ledger.read.v1.AccountGrouping\n */\nexport type AccountGrouping = Message<\"ledger.read.v1.AccountGrouping\"> & {\n /**\n * account bucket code\n *\n * @generated from field: uint32 account_code = 1;\n */\n accountCode: number;\n\n /**\n * human-readable name (\"funding\", \"trading\")\n *\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AccountGrouping.\n * Use `create(AccountGroupingSchema)` to create a new message.\n */\nexport const AccountGroupingSchema: GenMessage<AccountGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 6);\n\n/**\n * Asset grouping metadata (used when group_by = ASSET).\n *\n * @generated from message ledger.read.v1.AssetGrouping\n */\nexport type AssetGrouping = Message<\"ledger.read.v1.AssetGrouping\"> & {\n /**\n * public asset id (0 for \"OTHER\" bucket)\n *\n * @generated from field: uint32 id = 1;\n */\n id: number;\n\n /**\n * asset symbol (\"BTC\", \"ETH\", \"OTHER\")\n *\n * @generated from field: string symbol = 2;\n */\n symbol: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetGrouping.\n * Use `create(AssetGroupingSchema)` to create a new message.\n */\nexport const AssetGroupingSchema: GenMessage<AssetGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 7);\n\n/**\n * Logical account grouping used by root portfolio equity history.\n *\n * @generated from message ledger.read.v1.PortfolioAccountGrouping\n */\nexport type PortfolioAccountGrouping = Message<\"ledger.read.v1.PortfolioAccountGrouping\"> & {\n /**\n * Public account or subaccount ID. Its encoded entity type distinguishes\n * the master account from an owned subaccount. Omitted for Remaining.\n *\n * @generated from field: optional fixed64 account_id = 1;\n */\n accountId?: bigint | undefined;\n\n /**\n * True when this series combines all non-selected owned subaccounts.\n *\n * @generated from field: bool remaining = 2;\n */\n remaining: boolean;\n};\n\n/**\n * Describes the message ledger.read.v1.PortfolioAccountGrouping.\n * Use `create(PortfolioAccountGroupingSchema)` to create a new message.\n */\nexport const PortfolioAccountGroupingSchema: GenMessage<PortfolioAccountGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 8);\n\n/**\n * Equity history in USDT (or BTC via client-side conversion using btc_prices).\n * Values are derived from per-asset balances and market prices (close ticks).\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesRequest\n */\nexport type GetEquityHistorySeriesRequest = Message<\"ledger.read.v1.GetEquityHistorySeriesRequest\"> & {\n /**\n * Optional sub-account to scope equity to. If omitted, equity is returned for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional subset of account buckets.\n * When empty, server returns both funding and trading.\n * Only used when group_by = ACCOUNT.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n\n /**\n * How to group the equity series. Defaults to ACCOUNT if unspecified.\n *\n * @generated from field: ledger.read.v1.EquityGroupBy group_by = 5;\n */\n groupBy: EquityGroupBy;\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesRequest.\n * Use `create(GetEquityHistorySeriesRequestSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesRequestSchema: GenMessage<GetEquityHistorySeriesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 9);\n\n/**\n * Columnar equity series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.EquitySeries\n */\nexport type EquitySeries = Message<\"ledger.read.v1.EquitySeries\"> & {\n /**\n * Grouping identifier. The serving RPC documents which grouping is returned.\n *\n * @generated from oneof ledger.read.v1.EquitySeries.grouping\n */\n grouping: {\n /**\n * set when group_by = ACCOUNT\n *\n * @generated from field: ledger.read.v1.AccountGrouping account = 1;\n */\n value: AccountGrouping;\n case: \"account\";\n } | {\n /**\n * set when group_by = ASSET\n *\n * @generated from field: ledger.read.v1.AssetGrouping asset = 3;\n */\n value: AssetGrouping;\n case: \"asset\";\n } | {\n /**\n * set for root portfolio history\n *\n * @generated from field: ledger.read.v1.PortfolioAccountGrouping portfolio_account = 4;\n */\n value: PortfolioAccountGrouping;\n case: \"portfolioAccount\";\n } | { case: undefined; value?: undefined };\n\n /**\n * Equity in quote currency (USDT) scaled by 1e4 (4 decimals).\n * Values align 1:1 with timestamps.\n *\n * @generated from field: repeated sint64 equity_q = 2;\n */\n equityQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.EquitySeries.\n * Use `create(EquitySeriesSchema)` to create a new message.\n */\nexport const EquitySeriesSchema: GenMessage<EquitySeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 10);\n\n/**\n * GetEquityHistorySeriesResponse returns aligned equity chart series.\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesResponse\n */\nexport type GetEquityHistorySeriesResponse = Message<\"ledger.read.v1.GetEquityHistorySeriesResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 6;\n */\n quoteAsset: string;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 7;\n */\n points: number;\n\n /**\n * Equity series ordered by grouping identifier ascending.\n *\n * @generated from field: repeated ledger.read.v1.EquitySeries series = 8;\n */\n series: EquitySeries[];\n\n /**\n * BTC-USDT close price at each timestamp, scaled by 1e6 (same as price_ticks).\n * Enables client-side conversion to BTC denomination without refetch.\n *\n * @generated from field: repeated int64 btc_prices_q = 10;\n */\n btcPricesQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesResponse.\n * Use `create(GetEquityHistorySeriesResponseSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesResponseSchema: GenMessage<GetEquityHistorySeriesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 11);\n\n/**\n * Requests root portfolio equity history.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquityHistorySeriesRequest\n */\nexport type GetPortfolioEquityHistorySeriesRequest = Message<\"ledger.read.v1.GetPortfolioEquityHistorySeriesRequest\"> & {\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquityHistorySeriesRequest.\n * Use `create(GetPortfolioEquityHistorySeriesRequestSchema)` to create a new message.\n */\nexport const GetPortfolioEquityHistorySeriesRequestSchema: GenMessage<GetPortfolioEquityHistorySeriesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 12);\n\n/**\n * Root portfolio equity history with aligned, implicit timestamps.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquityHistorySeriesResponse\n */\nexport type GetPortfolioEquityHistorySeriesResponse = Message<\"ledger.read.v1.GetPortfolioEquityHistorySeriesResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 5;\n */\n quoteAsset: string;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 6;\n */\n points: number;\n\n /**\n * Master account first, followed by up to nine owned subaccounts ordered by\n * current equity descending, then Remaining when other subaccounts exist.\n *\n * @generated from field: repeated ledger.read.v1.EquitySeries series = 7;\n */\n series: EquitySeries[];\n\n /**\n * BTC-USDT close price at each timestamp, scaled by 1e6 (same as price_ticks).\n * Enables client-side conversion to BTC denomination without refetch.\n *\n * @generated from field: repeated int64 btc_prices_q = 8;\n */\n btcPricesQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquityHistorySeriesResponse.\n * Use `create(GetPortfolioEquityHistorySeriesResponseSchema)` to create a new message.\n */\nexport const GetPortfolioEquityHistorySeriesResponseSchema: GenMessage<GetPortfolioEquityHistorySeriesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 13);\n\n/**\n * Current equity for one logical account in the root portfolio.\n *\n * @generated from message ledger.read.v1.PortfolioAccountEquity\n */\nexport type PortfolioAccountEquity = Message<\"ledger.read.v1.PortfolioAccountEquity\"> & {\n /**\n * Public master-account or subaccount ID.\n *\n * @generated from field: fixed64 account_id = 1;\n */\n accountId: bigint;\n\n /**\n * Current equity in USDT scaled by 1e4 (4 decimals).\n *\n * @generated from field: sint64 equity_q = 2;\n */\n equityQ: bigint;\n\n /**\n * Up to three assets with the highest current equity value, ordered highest\n * first. Assets without a current value are omitted.\n *\n * @generated from field: repeated uint32 top_asset_ids = 3;\n */\n topAssetIds: number[];\n};\n\n/**\n * Describes the message ledger.read.v1.PortfolioAccountEquity.\n * Use `create(PortfolioAccountEquitySchema)` to create a new message.\n */\nexport const PortfolioAccountEquitySchema: GenMessage<PortfolioAccountEquity> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 14);\n\n/**\n * Current aggregate balance and equity for one asset in the root portfolio.\n *\n * @generated from message ledger.read.v1.PortfolioAssetEquity\n */\nexport type PortfolioAssetEquity = Message<\"ledger.read.v1.PortfolioAssetEquity\"> & {\n /**\n * Public unified asset ID.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Combined Funding and Trading balance in asset units scaled by 1e7\n * (7 decimals).\n *\n * @generated from field: uint64 balance_q = 2;\n */\n balanceQ: bigint;\n\n /**\n * Current equity in USDT scaled by 1e4 (4 decimals).\n *\n * @generated from field: sint64 equity_q = 3;\n */\n equityQ: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.PortfolioAssetEquity.\n * Use `create(PortfolioAssetEquitySchema)` to create a new message.\n */\nexport const PortfolioAssetEquitySchema: GenMessage<PortfolioAssetEquity> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 15);\n\n/**\n * Requests a current root portfolio equity snapshot.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquitySnapshotRequest\n */\nexport type GetPortfolioEquitySnapshotRequest = Message<\"ledger.read.v1.GetPortfolioEquitySnapshotRequest\"> & {\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquitySnapshotRequest.\n * Use `create(GetPortfolioEquitySnapshotRequestSchema)` to create a new message.\n */\nexport const GetPortfolioEquitySnapshotRequestSchema: GenMessage<GetPortfolioEquitySnapshotRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 16);\n\n/**\n * Current root portfolio equity, grouped by logical account and asset.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquitySnapshotResponse\n */\nexport type GetPortfolioEquitySnapshotResponse = Message<\"ledger.read.v1.GetPortfolioEquitySnapshotResponse\"> & {\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 1;\n */\n quoteAsset: string;\n\n /**\n * Current equity across the master account and all owned subaccounts in USDT,\n * scaled by 1e4 (4 decimals).\n *\n * @generated from field: sint64 total_equity_q = 2;\n */\n totalEquityQ: bigint;\n\n /**\n * Master account first, followed by every owned subaccount ordered by current\n * equity descending and public ID ascending for ties.\n *\n * @generated from field: repeated ledger.read.v1.PortfolioAccountEquity accounts = 3;\n */\n accounts: PortfolioAccountEquity[];\n\n /**\n * Non-zero asset balances ordered by current equity descending and public\n * asset ID ascending for ties.\n *\n * @generated from field: repeated ledger.read.v1.PortfolioAssetEquity assets = 4;\n */\n assets: PortfolioAssetEquity[];\n\n /**\n * Current BTC-USDT price scaled by 1e6. Zero when unavailable.\n *\n * @generated from field: int64 btc_price_q = 5;\n */\n btcPriceQ: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquitySnapshotResponse.\n * Use `create(GetPortfolioEquitySnapshotResponseSchema)` to create a new message.\n */\nexport const GetPortfolioEquitySnapshotResponseSchema: GenMessage<GetPortfolioEquitySnapshotResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 17);\n\n/**\n * @generated from message ledger.read.v1.ListTransfersRequest\n */\nexport type ListTransfersRequest = Message<\"ledger.read.v1.ListTransfersRequest\"> & {\n /**\n * Optional sub-account to scope transfers to. If omitted, transfers are\n * listed for the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of transfer rows to return. Defaults to 100 when omitted;\n * maximum is 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * Sort direction. When true, rows are returned newest first; when false,\n * rows are returned oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Optional lower transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_min_us = 4;\n */\n tsMinUs: bigint;\n\n /**\n * Optional upper transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_max_us = 5;\n */\n tsMaxUs: bigint;\n\n /**\n * Optional filter by transfer reason.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 6;\n */\n transferCode: TransferCode;\n\n /**\n * Optional filter by asset ledger.\n *\n * @generated from field: uint32 ledger = 7;\n */\n ledger: number;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to the authenticated account, sub-account scope, filters, timestamp\n * bounds, and sort direction.\n *\n * @generated from field: string page_token = 9;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersRequest.\n * Use `create(ListTransfersRequestSchema)` to create a new message.\n */\nexport const ListTransfersRequestSchema: GenMessage<ListTransfersRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 18);\n\n/**\n * TransferSide describes one side of a ledger transfer for display.\n *\n * @generated from message ledger.read.v1.TransferSide\n */\nexport type TransferSide = Message<\"ledger.read.v1.TransferSide\"> & {\n /**\n * Display classification for this transfer side.\n *\n * @generated from field: ledger.read.v1.TransferSideKind kind = 1;\n */\n kind: TransferSideKind;\n\n /**\n * Public root account or subaccount ID when this side is safe to identify. Never\n * populated for private counterparties or non-user ledger accounts.\n *\n * @generated from field: optional fixed64 account_id = 2;\n */\n accountId?: bigint | undefined;\n\n /**\n * Address for this side when known. For EXTERNAL_ADDRESS this is an\n * external-chain wallet address from lifecycle correlation; for identifiable\n * Polyester accounts this is a Polyester smart-account address.\n * May be empty until the corresponding lifecycle details are available.\n *\n * @generated from field: string address = 3;\n */\n address: string;\n\n /**\n * PolyChain-registered external network identifier for EXTERNAL_ADDRESS.\n * This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's\n * native identifier (for example, an EIP-155 id) or the Polyester chain id.\n *\n * @generated from field: optional uint32 chain_id = 4;\n */\n chainId?: number | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferSide.\n * Use `create(TransferSideSchema)` to create a new message.\n */\nexport const TransferSideSchema: GenMessage<TransferSide> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 19);\n\n/**\n * TransferRow describes one debit or credit leg of a ledger transfer.\n *\n * @generated from message ledger.read.v1.TransferRow\n */\nexport type TransferRow = Message<\"ledger.read.v1.TransferRow\"> & {\n /**\n * Public unified asset ID. Resolve its symbol through the spot configuration\n * API. U128 amounts in this row always use a fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Transfer amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_e18 = 2;\n */\n amountE18?: U128 | undefined;\n\n /**\n * Product reason for this transfer.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 3;\n */\n transferCode: TransferCode;\n\n /**\n * Account bucket affected by this transfer.\n *\n * @generated from field: ledger.v1.AccountCode account_code = 4;\n */\n accountCode: AccountCode;\n\n /**\n * Transfer timestamp in microseconds since epoch (UTC).\n *\n * @generated from field: uint64 ts_us = 5;\n */\n tsUs: bigint;\n\n /**\n * Post-transfer balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 balance_after_e18 = 9;\n */\n balanceAfterE18?: U128 | undefined;\n\n /**\n * True when this row is the debit leg; false when it is the credit leg.\n *\n * @generated from field: bool is_debit = 10;\n */\n isDebit: boolean;\n\n /**\n * Correlation ID used to group related transfer legs. Zero when unavailable.\n *\n * @generated from field: uint64 link_id = 11;\n */\n linkId: bigint;\n\n /**\n * Public lifecycle flow ID when this transfer belongs to a chain lifecycle flow.\n *\n * @generated from field: string flow_id = 12;\n */\n flowId: string;\n\n /**\n * Debit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the debit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide source = 13;\n */\n source?: TransferSide | undefined;\n\n /**\n * Credit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the credit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide destination = 14;\n */\n destination?: TransferSide | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferRow.\n * Use `create(TransferRowSchema)` to create a new message.\n */\nexport const TransferRowSchema: GenMessage<TransferRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 20);\n\n/**\n * ListTransfersResponse contains transfer rows and an optional continuation cursor.\n *\n * @generated from message ledger.read.v1.ListTransfersResponse\n */\nexport type ListTransfersResponse = Message<\"ledger.read.v1.ListTransfersResponse\"> & {\n /**\n * Transfer rows in requested order.\n *\n * @generated from field: repeated ledger.read.v1.TransferRow transfers = 1;\n */\n transfers: TransferRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 3;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersResponse.\n * Use `create(ListTransfersResponseSchema)` to create a new message.\n */\nexport const ListTransfersResponseSchema: GenMessage<ListTransfersResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 21);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsRequest\n */\nexport type ListHoldsRequest = Message<\"ledger.read.v1.ListHoldsRequest\"> & {\n /**\n * Optional sub-account to scope holds to. If omitted, holds are listed for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of holds to return. Defaults to 100 when omitted; maximum is\n * 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * true=newest first; false=oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to account, sub-account scope, and sort direction.\n *\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsRequest.\n * Use `create(ListHoldsRequestSchema)` to create a new message.\n */\nexport const ListHoldsRequestSchema: GenMessage<ListHoldsRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 22);\n\n/**\n * Hold row with compact integers and client-side resolution.\n *\n * @generated from message ledger.read.v1.HoldRow\n */\nexport type HoldRow = Message<\"ledger.read.v1.HoldRow\"> & {\n /**\n * pending transfer id (numeric)\n *\n * @generated from field: fixed64 hold_id = 1;\n */\n holdId: bigint;\n\n /**\n * Reserved amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_reserved_e18 = 2;\n */\n amountReservedE18?: U128 | undefined;\n\n /**\n * Public unified asset id.\n *\n * @generated from field: uint32 asset_id = 3;\n */\n assetId: number;\n\n /**\n * Expiration time in nanoseconds since epoch (UTC).\n *\n * @generated from field: uint64 expires_at_ns = 4;\n */\n expiresAtNs: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.HoldRow.\n * Use `create(HoldRowSchema)` to create a new message.\n */\nexport const HoldRowSchema: GenMessage<HoldRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 23);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsResponse\n */\nexport type ListHoldsResponse = Message<\"ledger.read.v1.ListHoldsResponse\"> & {\n /**\n * Hold rows in the sort direction requested by the caller.\n *\n * @generated from field: repeated ledger.read.v1.HoldRow holds = 1;\n */\n holds: HoldRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsResponse.\n * Use `create(ListHoldsResponseSchema)` to create a new message.\n */\nexport const ListHoldsResponseSchema: GenMessage<ListHoldsResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 24);\n\n/**\n * ErrorDetail is attached to ConnectRPC errors for structured error handling.\n * Clients can inspect this to get a stable machine-readable error code.\n *\n * @generated from message ledger.read.v1.ErrorDetail\n */\nexport type ErrorDetail = Message<\"ledger.read.v1.ErrorDetail\"> & {\n /**\n * Stable error code matching the REST problem+json \"code\" field.\n *\n * @generated from field: ledger.read.v1.ErrorCode code = 1;\n */\n code: ErrorCode;\n};\n\n/**\n * Describes the message ledger.read.v1.ErrorDetail.\n * Use `create(ErrorDetailSchema)` to create a new message.\n */\nexport const ErrorDetailSchema: GenMessage<ErrorDetail> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 25);\n\n/**\n * Supported history windows for balance charts.\n *\n * @generated from enum ledger.read.v1.BalanceRange\n */\nexport enum BalanceRange {\n /**\n * @generated from enum value: RANGE_UNSPECIFIED = 0;\n */\n RANGE_UNSPECIFIED = 0,\n\n /**\n * 1 day\n *\n * @generated from enum value: DAY_1 = 1;\n */\n DAY_1 = 1,\n\n /**\n * 7 days\n *\n * @generated from enum value: DAY_7 = 2;\n */\n DAY_7 = 2,\n\n /**\n * 30 days\n *\n * @generated from enum value: DAY_30 = 3;\n */\n DAY_30 = 3,\n\n /**\n * 90 days\n *\n * @generated from enum value: DAY_90 = 4;\n */\n DAY_90 = 4,\n\n /**\n * 180 days\n *\n * @generated from enum value: DAY_180 = 5;\n */\n DAY_180 = 5,\n\n /**\n * 365 days\n *\n * @generated from enum value: DAY_365 = 6;\n */\n DAY_365 = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.BalanceRange.\n */\nexport const BalanceRangeSchema: GenEnum<BalanceRange> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * How to group equity series data.\n *\n * @generated from enum ledger.read.v1.EquityGroupBy\n */\nexport enum EquityGroupBy {\n /**\n * defaults to ACCOUNT\n *\n * @generated from enum value: GROUP_BY_UNSPECIFIED = 0;\n */\n GROUP_BY_UNSPECIFIED = 0,\n\n /**\n * group by account bucket\n *\n * @generated from enum value: GROUP_BY_ACCOUNT = 1;\n */\n GROUP_BY_ACCOUNT = 1,\n\n /**\n * group by asset (BTC, ETH, etc.)\n *\n * @generated from enum value: GROUP_BY_ASSET = 2;\n */\n GROUP_BY_ASSET = 2,\n}\n\n/**\n * Describes the enum ledger.read.v1.EquityGroupBy.\n */\nexport const EquityGroupBySchema: GenEnum<EquityGroupBy> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * TransferSideKind identifies the display class for one side of a transfer.\n *\n * @generated from enum ledger.read.v1.TransferSideKind\n */\nexport enum TransferSideKind {\n /**\n * Transfer side type was not specified.\n *\n * @generated from enum value: TRANSFER_SIDE_KIND_UNSPECIFIED = 0;\n */\n TRANSFER_SIDE_KIND_UNSPECIFIED = 0,\n\n /**\n * Polyester funding account.\n *\n * @generated from enum value: FUNDING_ACCOUNT = 1;\n */\n FUNDING_ACCOUNT = 1,\n\n /**\n * Polyester trading account.\n *\n * @generated from enum value: TRADING_ACCOUNT = 2;\n */\n TRADING_ACCOUNT = 2,\n\n /**\n * External wallet or chain address. The address is lifecycle-derived and may\n * be empty until ledger-to-lifecycle correlation is projected.\n *\n * @generated from enum value: EXTERNAL_ADDRESS = 3;\n */\n EXTERNAL_ADDRESS = 3,\n\n /**\n * Private off-chain counterparty that must not be identified to the caller.\n * account_id and address are intentionally omitted.\n *\n * @generated from enum value: PRIVATE_COUNTERPARTY = 4;\n */\n PRIVATE_COUNTERPARTY = 4,\n\n /**\n * Fee ledger side, for example spot or perp trading fees.\n *\n * @generated from enum value: FEE_ACCOUNT = 5;\n */\n FEE_ACCOUNT = 5,\n\n /**\n * System, operator, clearing, or other non-user side.\n *\n * @generated from enum value: SYSTEM_ACCOUNT = 6;\n */\n SYSTEM_ACCOUNT = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.TransferSideKind.\n */\nexport const TransferSideKindSchema: GenEnum<TransferSideKind> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * ErrorCode enumerates stable machine-readable error codes for the Ledger Read\n * API. These mirror the REST problem+json \"code\" field for parity between REST\n * and ConnectRPC clients.\n *\n * @generated from enum ledger.read.v1.ErrorCode\n */\nexport enum ErrorCode {\n /**\n * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ERROR_CODE_BAD_REQUEST = 1;\n */\n BAD_REQUEST = 1,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 2;\n */\n UNAUTHENTICATED = 2,\n\n /**\n * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 3;\n */\n PERMISSION_DENIED = 3,\n\n /**\n * @generated from enum value: ERROR_CODE_NOT_FOUND = 4;\n */\n NOT_FOUND = 4,\n\n /**\n * Missing or invalid account identifier (legacy; used by older endpoints).\n *\n * @generated from enum value: ERROR_CODE_MISSING_ACCOUNT_ID = 5;\n */\n MISSING_ACCOUNT_ID = 5,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_ACCOUNT_ID = 6;\n */\n INVALID_ACCOUNT_ID = 6,\n\n /**\n * Wallet-specific errors for balance lookups by wallet.\n *\n * @generated from enum value: ERROR_CODE_MISSING_WALLET = 7;\n */\n MISSING_WALLET = 7,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_RESOLUTION_UNAVAILABLE = 8;\n */\n WALLET_RESOLUTION_UNAVAILABLE = 8,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_NOT_FOUND = 9;\n */\n WALLET_NOT_FOUND = 9,\n\n /**\n * Upstream dependency error (e.g., transfers store, wallet resolver).\n *\n * @generated from enum value: ERROR_CODE_UPSTREAM_ERROR = 10;\n */\n UPSTREAM_ERROR = 10,\n}\n\n/**\n * Describes the enum ledger.read.v1.ErrorCode.\n */\nexport const ErrorCodeSchema: GenEnum<ErrorCode> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * LedgerReadService exposes read-only ledger endpoints (balances, history, transfers, holds).\n *\n * @generated from service ledger.read.v1.LedgerReadService\n */\nexport const LedgerReadService: GenService<{\n /**\n * Retrieve balance history buckets for an account.\n * Supports optional subaccount, range, asset, and account-code filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalanceHistory\n */\n getBalanceHistory: {\n methodKind: \"unary\";\n input: typeof GetBalanceHistoryRequestSchema;\n output: typeof GetBalanceHistoryResponseSchema;\n },\n /**\n * Retrieve equity history as columnar series data.\n * Supports optional subaccount, range, account-code filtering, and grouping by account or asset.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetEquityHistorySeries\n */\n getEquityHistorySeries: {\n methodKind: \"unary\";\n input: typeof GetEquityHistorySeriesRequestSchema;\n output: typeof GetEquityHistorySeriesResponseSchema;\n },\n /**\n * Retrieve root portfolio equity history as master, top owned subaccounts,\n * and an aggregate of the remaining owned subaccounts. Requires an\n * interactive root-account session; API keys are not supported.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetPortfolioEquityHistorySeries\n */\n getPortfolioEquityHistorySeries: {\n methodKind: \"unary\";\n input: typeof GetPortfolioEquityHistorySeriesRequestSchema;\n output: typeof GetPortfolioEquityHistorySeriesResponseSchema;\n },\n /**\n * Retrieve current root portfolio equity grouped by logical account and\n * asset. Requires an interactive root-account session; API keys are not\n * supported.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetPortfolioEquitySnapshot\n */\n getPortfolioEquitySnapshot: {\n methodKind: \"unary\";\n input: typeof GetPortfolioEquitySnapshotRequestSchema;\n output: typeof GetPortfolioEquitySnapshotResponseSchema;\n },\n /**\n * List finalized transfer history for an account.\n * Supports optional subaccount, asset, ordering, and cursor filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListTransfers\n */\n listTransfers: {\n methodKind: \"unary\";\n input: typeof ListTransfersRequestSchema;\n output: typeof ListTransfersResponseSchema;\n },\n /**\n * ListHolds returns pending holds with integer amounts (u128) and asset ids.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListHolds\n */\n listHolds: {\n methodKind: \"unary\";\n input: typeof ListHoldsRequestSchema;\n output: typeof ListHoldsResponseSchema;\n },\n /**\n * Retrieve the latest balances for an account.\n * Supports optional subaccount scoping and returns asset symbols with decimal amounts on REST.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalances\n */\n getBalances: {\n methodKind: \"unary\";\n input: typeof GetBalancesRequestSchema;\n output: typeof GetBalancesResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_ledger_read_v1_ledger_read, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,kCACX,uBAAS,4oOAA4oO;CAAC;CAAwB;CAA4B;AAA2B,CAAC;;;;;AAqBxuO,MAAa,2BACX,0BAAY,iCAAiC,CAAC;;;;;AAmEhD,MAAa,qBACX,0BAAY,iCAAiC,CAAC;;;;;AAoBhD,MAAa,4BACX,0BAAY,iCAAiC,CAAC;;;;;AA2ChD,MAAa,iCACX,0BAAY,iCAAiC,CAAC;;;;;AAqChD,MAAa,sBACX,0BAAY,iCAAiC,CAAC;;;;;AAuDhD,MAAa,kCACX,0BAAY,iCAAiC,CAAC;;;;;AA2BhD,MAAa,wBACX,0BAAY,iCAAiC,CAAC;;;;;AA2BhD,MAAa,sBACX,0BAAY,iCAAiC,CAAC;;;;;AA4BhD,MAAa,iCACX,0BAAY,iCAAiC,CAAC;;;;;AA6ChD,MAAa,sCACX,0BAAY,iCAAiC,CAAC;;;;;AAqDhD,MAAa,qBACX,0BAAY,iCAAiC,EAAE;;;;;AAsEjD,MAAa,uCACX,0BAAY,iCAAiC,EAAE;;;;;AAoBjD,MAAa,+CACX,0BAAY,iCAAiC,EAAE;;;;;AAuEjD,MAAa,gDACX,0BAAY,iCAAiC,EAAE;;;;;AAmCjD,MAAa,+BACX,0BAAY,iCAAiC,EAAE;;;;;AAmCjD,MAAa,6BACX,0BAAY,iCAAiC,EAAE;;;;;AAcjD,MAAa,0CACX,0BAAY,iCAAiC,EAAE;;;;;AAmDjD,MAAa,2CACX,0BAAY,iCAAiC,EAAE;;;;;AA0EjD,MAAa,6BACX,0BAAY,iCAAiC,EAAE;;;;;AA+CjD,MAAa,qBACX,0BAAY,iCAAiC,EAAE;;;;;AA6FjD,MAAa,oBACX,0BAAY,iCAAiC,EAAE;;;;;AA2BjD,MAAa,8BACX,0BAAY,iCAAiC,EAAE;;;;;AA0CjD,MAAa,yBACX,0BAAY,iCAAiC,EAAE;;;;;AAyCjD,MAAa,gBACX,0BAAY,iCAAiC,EAAE;;;;;AAyBjD,MAAa,0BACX,0BAAY,iCAAiC,EAAE;;;;;AAqBjD,MAAa,oBACX,0BAAY,iCAAiC,EAAE;;;;;;AAOjD,IAAY,eAAL,yBAAA,cAAA;;;;CAIL,aAAA,aAAA,uBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,WAAA,KAAA;;;;;;CAOA,aAAA,aAAA,WAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,IAAY,gBAAL,yBAAA,eAAA;;;;;;CAML,cAAA,cAAA,0BAAA,KAAA;;;;;;CAOA,cAAA,cAAA,sBAAA,KAAA;;;;;;CAOA,cAAA,cAAA,oBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,sBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,IAAY,mBAAL,yBAAA,kBAAA;;;;;;CAML,iBAAA,iBAAA,oCAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,qBAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,qBAAA,KAAA;;;;;;;CAQA,iBAAA,iBAAA,sBAAA,KAAA;;;;;;;CAQA,iBAAA,iBAAA,0BAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,iBAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,oBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,yBACX,uBAAS,iCAAiC,CAAC;;;;;;;;AAS7C,IAAY,YAAL,yBAAA,WAAA;;;;CAIL,UAAA,UAAA,iBAAA,KAAA;;;;CAKA,UAAA,UAAA,iBAAA,KAAA;;;;CAKA,UAAA,UAAA,qBAAA,KAAA;;;;CAKA,UAAA,UAAA,uBAAA,KAAA;;;;CAKA,UAAA,UAAA,eAAA,KAAA;;;;;;CAOA,UAAA,UAAA,wBAAA,KAAA;;;;CAKA,UAAA,UAAA,wBAAA,KAAA;;;;;;CAOA,UAAA,UAAA,oBAAA,KAAA;;;;CAKA,UAAA,UAAA,mCAAA,KAAA;;;;CAKA,UAAA,UAAA,sBAAA,KAAA;;;;;;CAOA,UAAA,UAAA,oBAAA,MAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,kBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,MAAa,oBAgFX,0BAAY,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ledger_read_pb.js","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file ledger/read/v1/ledger_read.proto (package ledger.read.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { AccountCode, TransferCode } from \"../../v1/catalog_pb.js\";\nimport { file_ledger_v1_catalog } from \"../../v1/catalog_pb.js\";\nimport { file_polyester_api_options } from \"../../../polyester/api/options_pb.js\";\nimport type { U128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport { file_polyester_type_v1_u128 } from \"../../../polyester/type/v1/u128_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file ledger/read/v1/ledger_read.proto.\n */\nexport const file_ledger_read_v1_ledger_read: GenFile = /*@__PURE__*/\n fileDesc(\"CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAkiVQoYUG9ydGZvbGlvQWNjb3VudEdyb3VwaW5nEhcKCmFjY291bnRfaWQYASABKAZIAIgBARIRCglyZW1haW5pbmcYAiABKAhCDQoLX2FjY291bnRfaWQi3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkItcBCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEkUKEXBvcnRmb2xpb19hY2NvdW50GAQgASgLMigubGVkZ2VyLnJlYWQudjEuUG9ydGZvbGlvQWNjb3VudEdyb3VwaW5nSAASEAoIZXF1aXR5X3EYAiADKBJCCgoIZ3JvdXBpbmci8AEKHkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZRIrCgVyYW5nZRgBIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZRIOCgZidWNrZXQYAiABKAkSFAoMc3RhcnRfdHNfc2VjGAMgASgHEhIKCmVuZF90c19zZWMYBCABKAcSEwoLcXVvdGVfYXNzZXQYBiABKAkSDgoGcG9pbnRzGAcgASgNEiwKBnNlcmllcxgIIAMoCzIcLmxlZGdlci5yZWFkLnYxLkVxdWl0eVNlcmllcxIUCgxidGNfcHJpY2VzX3EYCiADKAMiVwomR2V0UG9ydGZvbGlvRXF1aXR5SGlzdG9yeVNlcmllc1JlcXVlc3QSLQoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2VCACL5AQonR2V0UG9ydGZvbGlvRXF1aXR5SGlzdG9yeVNlcmllc1Jlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxITCgtxdW90ZV9hc3NldBgFIAEoCRIOCgZwb2ludHMYBiABKA0SLAoGc2VyaWVzGAcgAygLMhwubGVkZ2VyLnJlYWQudjEuRXF1aXR5U2VyaWVzEhQKDGJ0Y19wcmljZXNfcRgIIAMoAyJXChZQb3J0Zm9saW9BY2NvdW50RXF1aXR5EhIKCmFjY291bnRfaWQYASABKAYSEAoIZXF1aXR5X3EYAiABKBISFwoNdG9wX2Fzc2V0X2lkcxgDIAMoDUIAIk0KFFBvcnRmb2xpb0Fzc2V0RXF1aXR5EhAKCGFzc2V0X2lkGAEgASgNEhEKCWJhbGFuY2VfcRgCIAEoBBIQCghlcXVpdHlfcRgDIAEoEiIjCiFHZXRQb3J0Zm9saW9FcXVpdHlTbmFwc2hvdFJlcXVlc3Qi1gEKIkdldFBvcnRmb2xpb0VxdWl0eVNuYXBzaG90UmVzcG9uc2USEwoLcXVvdGVfYXNzZXQYASABKAkSFgoOdG90YWxfZXF1aXR5X3EYAiABKBISOAoIYWNjb3VudHMYAyADKAsyJi5sZWRnZXIucmVhZC52MS5Qb3J0Zm9saW9BY2NvdW50RXF1aXR5EjQKBmFzc2V0cxgEIAMoCzIkLmxlZGdlci5yZWFkLnYxLlBvcnRmb2xpb0Fzc2V0RXF1aXR5EhMKC2J0Y19wcmljZV9xGAUgASgDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIpsBCgxUcmFuc2ZlclNpZGUSLgoEa2luZBgBIAEoDjIgLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZUtpbmQSFwoKYWNjb3VudF9pZBgCIAEoBkgAiAEBEg8KB2FkZHJlc3MYAyABKAkSFQoIY2hhaW5faWQYBCABKA1IAYgBAUINCgtfYWNjb3VudF9pZEILCglfY2hhaW5faWQiggMKC1RyYW5zZmVyUm93EhAKCGFzc2V0X2lkGAEgASgNEisKCmFtb3VudF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4Ei4KDXRyYW5zZmVyX2NvZGUYAyABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlEiwKDGFjY291bnRfY29kZRgEIAEoDjIWLmxlZGdlci52MS5BY2NvdW50Q29kZRINCgV0c191cxgFIAEoBBIyChFiYWxhbmNlX2FmdGVyX2UxOBgJIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIaXNfZGViaXQYCiABKAgSDwoHbGlua19pZBgLIAEoBBIPCgdmbG93X2lkGAwgASgJEiwKBnNvdXJjZRgNIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZRIxCgtkZXN0aW5hdGlvbhgOIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZSJiChVMaXN0VHJhbnNmZXJzUmVzcG9uc2USLgoJdHJhbnNmZXJzGAEgAygLMhsubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAMgASgJQgAieQoQTGlzdEhvbGRzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIUCgpwYWdlX3Rva2VuGAQgASgJQgBCEAoOX3N1YmFjY291bnRfaWQieQoHSG9sZFJvdxIPCgdob2xkX2lkGAEgASgGEjQKE2Ftb3VudF9yZXNlcnZlZF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhAKCGFzc2V0X2lkGAMgASgNEhUKDWV4cGlyZXNfYXRfbnMYBCABKAQiVgoRTGlzdEhvbGRzUmVzcG9uc2USJgoFaG9sZHMYASADKAsyFy5sZWRnZXIucmVhZC52MS5Ib2xkUm93EhkKD25leHRfcGFnZV90b2tlbhgCIAEoCUIAIjYKC0Vycm9yRGV0YWlsEicKBGNvZGUYASABKA4yGS5sZWRnZXIucmVhZC52MS5FcnJvckNvZGUqbQoMQmFsYW5jZVJhbmdlEhUKEVJBTkdFX1VOU1BFQ0lGSUVEEAASCQoFREFZXzEQARIJCgVEQVlfNxACEgoKBkRBWV8zMBADEgoKBkRBWV85MBAEEgsKB0RBWV8xODAQBRILCgdEQVlfMzY1EAYqUwoNRXF1aXR5R3JvdXBCeRIYChRHUk9VUF9CWV9VTlNQRUNJRklFRBAAEhQKEEdST1VQX0JZX0FDQ09VTlQQARISCg5HUk9VUF9CWV9BU1NFVBACKrUBChBUcmFuc2ZlclNpZGVLaW5kEiIKHlRSQU5TRkVSX1NJREVfS0lORF9VTlNQRUNJRklFRBAAEhMKD0ZVTkRJTkdfQUNDT1VOVBABEhMKD1RSQURJTkdfQUNDT1VOVBACEhQKEEVYVEVSTkFMX0FERFJFU1MQAxIYChRQUklWQVRFX0NPVU5URVJQQVJUWRAEEg8KC0ZFRV9BQ0NPVU5UEAUSEgoOU1lTVEVNX0FDQ09VTlQQBiryAgoJRXJyb3JDb2RlEhoKFkVSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIaChZFUlJPUl9DT0RFX0JBRF9SRVFVRVNUEAESHgoaRVJST1JfQ09ERV9VTkFVVEhFTlRJQ0FURUQQAhIgChxFUlJPUl9DT0RFX1BFUk1JU1NJT05fREVOSUVEEAMSGAoURVJST1JfQ09ERV9OT1RfRk9VTkQQBBIhCh1FUlJPUl9DT0RFX01JU1NJTkdfQUNDT1VOVF9JRBAFEiEKHUVSUk9SX0NPREVfSU5WQUxJRF9BQ0NPVU5UX0lEEAYSHQoZRVJST1JfQ09ERV9NSVNTSU5HX1dBTExFVBAHEiwKKEVSUk9SX0NPREVfV0FMTEVUX1JFU09MVVRJT05fVU5BVkFJTEFCTEUQCBIfChtFUlJPUl9DT0RFX1dBTExFVF9OT1RfRk9VTkQQCRIdChlFUlJPUl9DT0RFX1VQU1RSRUFNX0VSUk9SEAoypwYKEUxlZGdlclJlYWRTZXJ2aWNlEmoKEUdldEJhbGFuY2VIaXN0b3J5EigubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXF1ZXN0GikubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXNwb25zZSIAEnkKFkdldEVxdWl0eUhpc3RvcnlTZXJpZXMSLS5sZWRnZXIucmVhZC52MS5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVxdWVzdBouLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZSIAEpQBCh9HZXRQb3J0Zm9saW9FcXVpdHlIaXN0b3J5U2VyaWVzEjYubGVkZ2VyLnJlYWQudjEuR2V0UG9ydGZvbGlvRXF1aXR5SGlzdG9yeVNlcmllc1JlcXVlc3QaNy5sZWRnZXIucmVhZC52MS5HZXRQb3J0Zm9saW9FcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2UiABKFAQoaR2V0UG9ydGZvbGlvRXF1aXR5U25hcHNob3QSMS5sZWRnZXIucmVhZC52MS5HZXRQb3J0Zm9saW9FcXVpdHlTbmFwc2hvdFJlcXVlc3QaMi5sZWRnZXIucmVhZC52MS5HZXRQb3J0Zm9saW9FcXVpdHlTbmFwc2hvdFJlc3BvbnNlIgASXgoNTGlzdFRyYW5zZmVycxIkLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXF1ZXN0GiUubGVkZ2VyLnJlYWQudjEuTGlzdFRyYW5zZmVyc1Jlc3BvbnNlIgASUgoJTGlzdEhvbGRzEiAubGVkZ2VyLnJlYWQudjEuTGlzdEhvbGRzUmVxdWVzdBohLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1Jlc3BvbnNlIgASWAoLR2V0QmFsYW5jZXMSIi5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1JlcXVlc3QaIy5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1Jlc3BvbnNlIgBCR1pFZ2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9sZWRnZXIvcmVhZC92MTtsZWRnZXJyZHYxYgZwcm90bzM=\", [file_ledger_v1_catalog, file_polyester_api_options, file_polyester_type_v1_u128]);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesRequest\n */\nexport type GetBalancesRequest = Message<\"ledger.read.v1.GetBalancesRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesRequest.\n * Use `create(GetBalancesRequestSchema)` to create a new message.\n */\nexport const GetBalancesRequestSchema: GenMessage<GetBalancesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * Fixed-size representation for balances (for Protobuf/WS clients).\n * Uses common U128 messages for amounts to keep schema tidy and consistent.\n *\n * @generated from message ledger.read.v1.AssetBalance\n */\nexport type AssetBalance = Message<\"ledger.read.v1.AssetBalance\"> & {\n /**\n * Public unified asset id. Resolve symbol from SpotConfig; U128 amounts in\n * this message always use fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Trading balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 trading = 2;\n */\n trading?: U128 | undefined;\n\n /**\n * Funding balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 funding = 3;\n */\n funding?: U128 | undefined;\n\n /**\n * Reserved amount in the trading bucket at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 reserved = 4;\n */\n reserved?: U128 | undefined;\n\n /**\n * Amount currently available for new trading activity at fixed 18-decimal\n * ledger scale. This value already accounts for active reservations.\n *\n * @generated from field: polyester.type.v1.U128 available = 5;\n */\n available?: U128 | undefined;\n\n /**\n * Opaque monotonic revision for the atomic trading, reserved, and available\n * values. Higher means newer; zero means no trading state has been observed.\n *\n * @generated from field: uint64 trading_revision = 6;\n */\n tradingRevision: bigint;\n\n /**\n * Opaque monotonic revision for the funding value. Higher means newer; zero\n * means no funding state has been observed.\n *\n * @generated from field: uint64 funding_revision = 7;\n */\n fundingRevision: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetBalance.\n * Use `create(AssetBalanceSchema)` to create a new message.\n */\nexport const AssetBalanceSchema: GenMessage<AssetBalance> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * @generated from message ledger.read.v1.GetBalancesResponse\n */\nexport type GetBalancesResponse = Message<\"ledger.read.v1.GetBalancesResponse\"> & {\n /**\n * One entry for every supported unified asset, including assets with zero\n * balances. Sorted by available trading amount (highest first), then by\n * asset symbol alphabetically.\n *\n * @generated from field: repeated ledger.read.v1.AssetBalance balances = 1;\n */\n balances: AssetBalance[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalancesResponse.\n * Use `create(GetBalancesResponseSchema)` to create a new message.\n */\nexport const GetBalancesResponseSchema: GenMessage<GetBalancesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * @generated from message ledger.read.v1.GetBalanceHistoryRequest\n */\nexport type GetBalanceHistoryRequest = Message<\"ledger.read.v1.GetBalanceHistoryRequest\"> & {\n /**\n * Optional sub-account to scope balances to. If omitted, balances are\n * returned for the authenticated root account derived from the JWT or API\n * key. The logical account id itself is always derived from the caller's JWT\n * or API key, not from this payload.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional public asset filter. When unset/0, returns all assets.\n *\n * @generated from field: uint32 ledger = 3;\n */\n ledger: number;\n\n /**\n * Optional subset of account buckets to return. When empty, returns all\n * account buckets.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryRequest.\n * Use `create(GetBalanceHistoryRequestSchema)` to create a new message.\n */\nexport const GetBalanceHistoryRequestSchema: GenMessage<GetBalanceHistoryRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * Columnar balance series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.BalanceSeries\n */\nexport type BalanceSeries = Message<\"ledger.read.v1.BalanceSeries\"> & {\n /**\n * public unified asset id\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * account bucket\n *\n * @generated from field: ledger.v1.AccountCode account_code = 2;\n */\n accountCode: AccountCode;\n\n /**\n * Chart balance in asset units scaled by 1e7 (7 decimals).\n * Values are downscaled from 18-decimal ledger balances for compact charting\n * and align 1:1 with implicit timestamps.\n *\n * @generated from field: repeated uint64 balance_q = 3;\n */\n balanceQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.BalanceSeries.\n * Use `create(BalanceSeriesSchema)` to create a new message.\n */\nexport const BalanceSeriesSchema: GenMessage<BalanceSeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 4);\n\n/**\n * GetBalanceHistoryResponse returns aligned balance chart series.\n *\n * @generated from message ledger.read.v1.GetBalanceHistoryResponse\n */\nexport type GetBalanceHistoryResponse = Message<\"ledger.read.v1.GetBalanceHistoryResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 5;\n */\n points: number;\n\n /**\n * Balance series ordered by asset ID, then account bucket.\n *\n * @generated from field: repeated ledger.read.v1.BalanceSeries series = 6;\n */\n series: BalanceSeries[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetBalanceHistoryResponse.\n * Use `create(GetBalanceHistoryResponseSchema)` to create a new message.\n */\nexport const GetBalanceHistoryResponseSchema: GenMessage<GetBalanceHistoryResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 5);\n\n/**\n * Account grouping metadata (used when group_by = ACCOUNT).\n *\n * @generated from message ledger.read.v1.AccountGrouping\n */\nexport type AccountGrouping = Message<\"ledger.read.v1.AccountGrouping\"> & {\n /**\n * account bucket code\n *\n * @generated from field: uint32 account_code = 1;\n */\n accountCode: number;\n\n /**\n * human-readable name (\"funding\", \"trading\")\n *\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AccountGrouping.\n * Use `create(AccountGroupingSchema)` to create a new message.\n */\nexport const AccountGroupingSchema: GenMessage<AccountGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 6);\n\n/**\n * Asset grouping metadata (used when group_by = ASSET).\n *\n * @generated from message ledger.read.v1.AssetGrouping\n */\nexport type AssetGrouping = Message<\"ledger.read.v1.AssetGrouping\"> & {\n /**\n * public asset id (0 for \"OTHER\" bucket)\n *\n * @generated from field: uint32 id = 1;\n */\n id: number;\n\n /**\n * asset symbol (\"BTC\", \"ETH\", \"OTHER\")\n *\n * @generated from field: string symbol = 2;\n */\n symbol: string;\n};\n\n/**\n * Describes the message ledger.read.v1.AssetGrouping.\n * Use `create(AssetGroupingSchema)` to create a new message.\n */\nexport const AssetGroupingSchema: GenMessage<AssetGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 7);\n\n/**\n * Logical account grouping used by root portfolio equity history.\n *\n * @generated from message ledger.read.v1.PortfolioAccountGrouping\n */\nexport type PortfolioAccountGrouping = Message<\"ledger.read.v1.PortfolioAccountGrouping\"> & {\n /**\n * Public account or subaccount ID. Its encoded entity type distinguishes\n * the master account from an owned subaccount. Omitted for Remaining.\n *\n * @generated from field: optional fixed64 account_id = 1;\n */\n accountId?: bigint | undefined;\n\n /**\n * True when this series combines all non-selected owned subaccounts.\n *\n * @generated from field: bool remaining = 2;\n */\n remaining: boolean;\n};\n\n/**\n * Describes the message ledger.read.v1.PortfolioAccountGrouping.\n * Use `create(PortfolioAccountGroupingSchema)` to create a new message.\n */\nexport const PortfolioAccountGroupingSchema: GenMessage<PortfolioAccountGrouping> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 8);\n\n/**\n * Equity history in USDT (or BTC via client-side conversion using btc_prices).\n * Values are derived from per-asset balances and market prices (close ticks).\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesRequest\n */\nexport type GetEquityHistorySeriesRequest = Message<\"ledger.read.v1.GetEquityHistorySeriesRequest\"> & {\n /**\n * Optional sub-account to scope equity to. If omitted, equity is returned for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 2;\n */\n range: BalanceRange;\n\n /**\n * Optional subset of account buckets.\n * When empty, server returns both funding and trading.\n * Only used when group_by = ACCOUNT.\n *\n * @generated from field: repeated ledger.v1.AccountCode account_codes = 4;\n */\n accountCodes: AccountCode[];\n\n /**\n * How to group the equity series. Defaults to ACCOUNT if unspecified.\n *\n * @generated from field: ledger.read.v1.EquityGroupBy group_by = 5;\n */\n groupBy: EquityGroupBy;\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesRequest.\n * Use `create(GetEquityHistorySeriesRequestSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesRequestSchema: GenMessage<GetEquityHistorySeriesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 9);\n\n/**\n * Columnar equity series payload (scaled integers).\n * REST renders decimal strings from these values.\n *\n * @generated from message ledger.read.v1.EquitySeries\n */\nexport type EquitySeries = Message<\"ledger.read.v1.EquitySeries\"> & {\n /**\n * Grouping identifier. The serving RPC documents which grouping is returned.\n *\n * @generated from oneof ledger.read.v1.EquitySeries.grouping\n */\n grouping: {\n /**\n * set when group_by = ACCOUNT\n *\n * @generated from field: ledger.read.v1.AccountGrouping account = 1;\n */\n value: AccountGrouping;\n case: \"account\";\n } | {\n /**\n * set when group_by = ASSET\n *\n * @generated from field: ledger.read.v1.AssetGrouping asset = 3;\n */\n value: AssetGrouping;\n case: \"asset\";\n } | {\n /**\n * set for root portfolio history\n *\n * @generated from field: ledger.read.v1.PortfolioAccountGrouping portfolio_account = 4;\n */\n value: PortfolioAccountGrouping;\n case: \"portfolioAccount\";\n } | { case: undefined; value?: undefined };\n\n /**\n * Equity in quote currency (USDT) scaled by 1e4 (4 decimals).\n * Values align 1:1 with timestamps.\n *\n * @generated from field: repeated sint64 equity_q = 2;\n */\n equityQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.EquitySeries.\n * Use `create(EquitySeriesSchema)` to create a new message.\n */\nexport const EquitySeriesSchema: GenMessage<EquitySeries> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 10);\n\n/**\n * GetEquityHistorySeriesResponse returns aligned equity chart series.\n *\n * @generated from message ledger.read.v1.GetEquityHistorySeriesResponse\n */\nexport type GetEquityHistorySeriesResponse = Message<\"ledger.read.v1.GetEquityHistorySeriesResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 6;\n */\n quoteAsset: string;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 7;\n */\n points: number;\n\n /**\n * Equity series ordered by grouping identifier ascending.\n *\n * @generated from field: repeated ledger.read.v1.EquitySeries series = 8;\n */\n series: EquitySeries[];\n\n /**\n * BTC-USDT close price at each timestamp, scaled by 1e9 (same as price_ticks).\n * Enables client-side conversion to BTC denomination without refetch.\n *\n * @generated from field: repeated int64 btc_prices_q = 10;\n */\n btcPricesQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetEquityHistorySeriesResponse.\n * Use `create(GetEquityHistorySeriesResponseSchema)` to create a new message.\n */\nexport const GetEquityHistorySeriesResponseSchema: GenMessage<GetEquityHistorySeriesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 11);\n\n/**\n * Requests root portfolio equity history.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquityHistorySeriesRequest\n */\nexport type GetPortfolioEquityHistorySeriesRequest = Message<\"ledger.read.v1.GetPortfolioEquityHistorySeriesRequest\"> & {\n /**\n * History window to return. When unset/UNSPECIFIED, defaults to 1D.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquityHistorySeriesRequest.\n * Use `create(GetPortfolioEquityHistorySeriesRequestSchema)` to create a new message.\n */\nexport const GetPortfolioEquityHistorySeriesRequestSchema: GenMessage<GetPortfolioEquityHistorySeriesRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 12);\n\n/**\n * Root portfolio equity history with aligned, implicit timestamps.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquityHistorySeriesResponse\n */\nexport type GetPortfolioEquityHistorySeriesResponse = Message<\"ledger.read.v1.GetPortfolioEquityHistorySeriesResponse\"> & {\n /**\n * Resolved history window.\n *\n * @generated from field: ledger.read.v1.BalanceRange range = 1;\n */\n range: BalanceRange;\n\n /**\n * Sampling interval between points, such as \"5m\" or \"1h\".\n *\n * @generated from field: string bucket = 2;\n */\n bucket: string;\n\n /**\n * First point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 start_ts_sec = 3;\n */\n startTsSec: number;\n\n /**\n * Last point timestamp in seconds since epoch (UTC).\n *\n * @generated from field: fixed32 end_ts_sec = 4;\n */\n endTsSec: number;\n\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 5;\n */\n quoteAsset: string;\n\n /**\n * Number of aligned points in each returned series.\n *\n * @generated from field: uint32 points = 6;\n */\n points: number;\n\n /**\n * Master account first, followed by up to nine owned subaccounts ordered by\n * current equity descending, then Remaining when other subaccounts exist.\n *\n * @generated from field: repeated ledger.read.v1.EquitySeries series = 7;\n */\n series: EquitySeries[];\n\n /**\n * BTC-USDT close price at each timestamp, scaled by 1e9 (same as price_ticks).\n * Enables client-side conversion to BTC denomination without refetch.\n *\n * @generated from field: repeated int64 btc_prices_q = 8;\n */\n btcPricesQ: bigint[];\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquityHistorySeriesResponse.\n * Use `create(GetPortfolioEquityHistorySeriesResponseSchema)` to create a new message.\n */\nexport const GetPortfolioEquityHistorySeriesResponseSchema: GenMessage<GetPortfolioEquityHistorySeriesResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 13);\n\n/**\n * Current equity for one logical account in the root portfolio.\n *\n * @generated from message ledger.read.v1.PortfolioAccountEquity\n */\nexport type PortfolioAccountEquity = Message<\"ledger.read.v1.PortfolioAccountEquity\"> & {\n /**\n * Public master-account or subaccount ID.\n *\n * @generated from field: fixed64 account_id = 1;\n */\n accountId: bigint;\n\n /**\n * Current equity in USDT scaled by 1e4 (4 decimals).\n *\n * @generated from field: sint64 equity_q = 2;\n */\n equityQ: bigint;\n\n /**\n * Up to three assets with the highest current equity value, ordered highest\n * first. Assets without a current value are omitted.\n *\n * @generated from field: repeated uint32 top_asset_ids = 3;\n */\n topAssetIds: number[];\n};\n\n/**\n * Describes the message ledger.read.v1.PortfolioAccountEquity.\n * Use `create(PortfolioAccountEquitySchema)` to create a new message.\n */\nexport const PortfolioAccountEquitySchema: GenMessage<PortfolioAccountEquity> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 14);\n\n/**\n * Current aggregate balance and equity for one asset in the root portfolio.\n *\n * @generated from message ledger.read.v1.PortfolioAssetEquity\n */\nexport type PortfolioAssetEquity = Message<\"ledger.read.v1.PortfolioAssetEquity\"> & {\n /**\n * Public unified asset ID.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Combined Funding and Trading balance in asset units scaled by 1e7\n * (7 decimals).\n *\n * @generated from field: uint64 balance_q = 2;\n */\n balanceQ: bigint;\n\n /**\n * Current equity in USDT scaled by 1e4 (4 decimals).\n *\n * @generated from field: sint64 equity_q = 3;\n */\n equityQ: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.PortfolioAssetEquity.\n * Use `create(PortfolioAssetEquitySchema)` to create a new message.\n */\nexport const PortfolioAssetEquitySchema: GenMessage<PortfolioAssetEquity> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 15);\n\n/**\n * Requests a current root portfolio equity snapshot.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquitySnapshotRequest\n */\nexport type GetPortfolioEquitySnapshotRequest = Message<\"ledger.read.v1.GetPortfolioEquitySnapshotRequest\"> & {\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquitySnapshotRequest.\n * Use `create(GetPortfolioEquitySnapshotRequestSchema)` to create a new message.\n */\nexport const GetPortfolioEquitySnapshotRequestSchema: GenMessage<GetPortfolioEquitySnapshotRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 16);\n\n/**\n * Current root portfolio equity, grouped by logical account and asset.\n *\n * @generated from message ledger.read.v1.GetPortfolioEquitySnapshotResponse\n */\nexport type GetPortfolioEquitySnapshotResponse = Message<\"ledger.read.v1.GetPortfolioEquitySnapshotResponse\"> & {\n /**\n * Human-readable quote asset symbol (always \"USDT\").\n *\n * @generated from field: string quote_asset = 1;\n */\n quoteAsset: string;\n\n /**\n * Current equity across the master account and all owned subaccounts in USDT,\n * scaled by 1e4 (4 decimals).\n *\n * @generated from field: sint64 total_equity_q = 2;\n */\n totalEquityQ: bigint;\n\n /**\n * Master account first, followed by every owned subaccount ordered by current\n * equity descending and public ID ascending for ties.\n *\n * @generated from field: repeated ledger.read.v1.PortfolioAccountEquity accounts = 3;\n */\n accounts: PortfolioAccountEquity[];\n\n /**\n * Non-zero asset balances ordered by current equity descending and public\n * asset ID ascending for ties.\n *\n * @generated from field: repeated ledger.read.v1.PortfolioAssetEquity assets = 4;\n */\n assets: PortfolioAssetEquity[];\n\n /**\n * Current BTC-USDT price scaled by 1e9. Zero when unavailable.\n *\n * @generated from field: int64 btc_price_q = 5;\n */\n btcPriceQ: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.GetPortfolioEquitySnapshotResponse.\n * Use `create(GetPortfolioEquitySnapshotResponseSchema)` to create a new message.\n */\nexport const GetPortfolioEquitySnapshotResponseSchema: GenMessage<GetPortfolioEquitySnapshotResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 17);\n\n/**\n * @generated from message ledger.read.v1.ListTransfersRequest\n */\nexport type ListTransfersRequest = Message<\"ledger.read.v1.ListTransfersRequest\"> & {\n /**\n * Optional sub-account to scope transfers to. If omitted, transfers are\n * listed for the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of transfer rows to return. Defaults to 100 when omitted;\n * maximum is 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * Sort direction. When true, rows are returned newest first; when false,\n * rows are returned oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Optional lower transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_min_us = 4;\n */\n tsMinUs: bigint;\n\n /**\n * Optional upper transfer timestamp bound in microseconds since epoch (UTC),\n * inclusive.\n *\n * @generated from field: uint64 ts_max_us = 5;\n */\n tsMaxUs: bigint;\n\n /**\n * Optional filter by transfer reason.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 6;\n */\n transferCode: TransferCode;\n\n /**\n * Optional filter by asset ledger.\n *\n * @generated from field: uint32 ledger = 7;\n */\n ledger: number;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to the authenticated account, sub-account scope, filters, timestamp\n * bounds, and sort direction.\n *\n * @generated from field: string page_token = 9;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersRequest.\n * Use `create(ListTransfersRequestSchema)` to create a new message.\n */\nexport const ListTransfersRequestSchema: GenMessage<ListTransfersRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 18);\n\n/**\n * TransferSide describes one side of a ledger transfer for display.\n *\n * @generated from message ledger.read.v1.TransferSide\n */\nexport type TransferSide = Message<\"ledger.read.v1.TransferSide\"> & {\n /**\n * Display classification for this transfer side.\n *\n * @generated from field: ledger.read.v1.TransferSideKind kind = 1;\n */\n kind: TransferSideKind;\n\n /**\n * Public root account or subaccount ID when this side is safe to identify. Never\n * populated for private counterparties or non-user ledger accounts.\n *\n * @generated from field: optional fixed64 account_id = 2;\n */\n accountId?: bigint | undefined;\n\n /**\n * Address for this side when known. For EXTERNAL_ADDRESS this is an\n * external-chain wallet address from lifecycle correlation; for identifiable\n * Polyester accounts this is a Polyester smart-account address.\n * May be empty until the corresponding lifecycle details are available.\n *\n * @generated from field: string address = 3;\n */\n address: string;\n\n /**\n * PolyChain-registered external network identifier for EXTERNAL_ADDRESS.\n * This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's\n * native identifier (for example, an EIP-155 id) or the Polyester chain id.\n *\n * @generated from field: optional uint32 chain_id = 4;\n */\n chainId?: number | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferSide.\n * Use `create(TransferSideSchema)` to create a new message.\n */\nexport const TransferSideSchema: GenMessage<TransferSide> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 19);\n\n/**\n * TransferRow describes one debit or credit leg of a ledger transfer.\n *\n * @generated from message ledger.read.v1.TransferRow\n */\nexport type TransferRow = Message<\"ledger.read.v1.TransferRow\"> & {\n /**\n * Public unified asset ID. Resolve its symbol through the spot configuration\n * API. U128 amounts in this row always use a fixed 18-decimal ledger scale.\n *\n * @generated from field: uint32 asset_id = 1;\n */\n assetId: number;\n\n /**\n * Transfer amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_e18 = 2;\n */\n amountE18?: U128 | undefined;\n\n /**\n * Product reason for this transfer.\n *\n * @generated from field: ledger.v1.TransferCode transfer_code = 3;\n */\n transferCode: TransferCode;\n\n /**\n * Account bucket affected by this transfer.\n *\n * @generated from field: ledger.v1.AccountCode account_code = 4;\n */\n accountCode: AccountCode;\n\n /**\n * Transfer timestamp in microseconds since epoch (UTC).\n *\n * @generated from field: uint64 ts_us = 5;\n */\n tsUs: bigint;\n\n /**\n * Post-transfer balance at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 balance_after_e18 = 9;\n */\n balanceAfterE18?: U128 | undefined;\n\n /**\n * True when this row is the debit leg; false when it is the credit leg.\n *\n * @generated from field: bool is_debit = 10;\n */\n isDebit: boolean;\n\n /**\n * Correlation ID used to group related transfer legs. Zero when unavailable.\n *\n * @generated from field: uint64 link_id = 11;\n */\n linkId: bigint;\n\n /**\n * Public lifecycle flow ID when this transfer belongs to a chain lifecycle flow.\n *\n * @generated from field: string flow_id = 12;\n */\n flowId: string;\n\n /**\n * Debit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the debit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide source = 13;\n */\n source?: TransferSide | undefined;\n\n /**\n * Credit side of the transfer. This relationship is debit-to-credit rather\n * than row-relative; use is_debit to determine whether this row is the credit leg.\n *\n * @generated from field: ledger.read.v1.TransferSide destination = 14;\n */\n destination?: TransferSide | undefined;\n};\n\n/**\n * Describes the message ledger.read.v1.TransferRow.\n * Use `create(TransferRowSchema)` to create a new message.\n */\nexport const TransferRowSchema: GenMessage<TransferRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 20);\n\n/**\n * ListTransfersResponse contains transfer rows and an optional continuation cursor.\n *\n * @generated from message ledger.read.v1.ListTransfersResponse\n */\nexport type ListTransfersResponse = Message<\"ledger.read.v1.ListTransfersResponse\"> & {\n /**\n * Transfer rows in requested order.\n *\n * @generated from field: repeated ledger.read.v1.TransferRow transfers = 1;\n */\n transfers: TransferRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 3;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListTransfersResponse.\n * Use `create(ListTransfersResponseSchema)` to create a new message.\n */\nexport const ListTransfersResponseSchema: GenMessage<ListTransfersResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 21);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsRequest\n */\nexport type ListHoldsRequest = Message<\"ledger.read.v1.ListHoldsRequest\"> & {\n /**\n * Optional sub-account to scope holds to. If omitted, holds are listed for\n * the authenticated root account derived from the JWT or API key.\n *\n * @generated from field: optional fixed64 subaccount_id = 1;\n */\n subaccountId?: bigint | undefined;\n\n /**\n * Maximum number of holds to return. Defaults to 100 when omitted; maximum is\n * 1000.\n *\n * @generated from field: uint32 limit = 2;\n */\n limit: number;\n\n /**\n * true=newest first; false=oldest first.\n *\n * @generated from field: bool reversed = 3;\n */\n reversed: boolean;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to account, sub-account scope, and sort direction.\n *\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsRequest.\n * Use `create(ListHoldsRequestSchema)` to create a new message.\n */\nexport const ListHoldsRequestSchema: GenMessage<ListHoldsRequest> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 22);\n\n/**\n * Hold row with compact integers and client-side resolution.\n *\n * @generated from message ledger.read.v1.HoldRow\n */\nexport type HoldRow = Message<\"ledger.read.v1.HoldRow\"> & {\n /**\n * pending transfer id (numeric)\n *\n * @generated from field: fixed64 hold_id = 1;\n */\n holdId: bigint;\n\n /**\n * Reserved amount at fixed 18-decimal ledger scale.\n *\n * @generated from field: polyester.type.v1.U128 amount_reserved_e18 = 2;\n */\n amountReservedE18?: U128 | undefined;\n\n /**\n * Public unified asset id.\n *\n * @generated from field: uint32 asset_id = 3;\n */\n assetId: number;\n\n /**\n * Expiration time in nanoseconds since epoch (UTC).\n *\n * @generated from field: uint64 expires_at_ns = 4;\n */\n expiresAtNs: bigint;\n};\n\n/**\n * Describes the message ledger.read.v1.HoldRow.\n * Use `create(HoldRowSchema)` to create a new message.\n */\nexport const HoldRowSchema: GenMessage<HoldRow> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 23);\n\n/**\n * @generated from message ledger.read.v1.ListHoldsResponse\n */\nexport type ListHoldsResponse = Message<\"ledger.read.v1.ListHoldsResponse\"> & {\n /**\n * Hold rows in the sort direction requested by the caller.\n *\n * @generated from field: repeated ledger.read.v1.HoldRow holds = 1;\n */\n holds: HoldRow[];\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message ledger.read.v1.ListHoldsResponse.\n * Use `create(ListHoldsResponseSchema)` to create a new message.\n */\nexport const ListHoldsResponseSchema: GenMessage<ListHoldsResponse> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 24);\n\n/**\n * ErrorDetail is attached to ConnectRPC errors for structured error handling.\n * Clients can inspect this to get a stable machine-readable error code.\n *\n * @generated from message ledger.read.v1.ErrorDetail\n */\nexport type ErrorDetail = Message<\"ledger.read.v1.ErrorDetail\"> & {\n /**\n * Stable error code matching the REST problem+json \"code\" field.\n *\n * @generated from field: ledger.read.v1.ErrorCode code = 1;\n */\n code: ErrorCode;\n};\n\n/**\n * Describes the message ledger.read.v1.ErrorDetail.\n * Use `create(ErrorDetailSchema)` to create a new message.\n */\nexport const ErrorDetailSchema: GenMessage<ErrorDetail> = /*@__PURE__*/\n messageDesc(file_ledger_read_v1_ledger_read, 25);\n\n/**\n * Supported history windows for balance charts.\n *\n * @generated from enum ledger.read.v1.BalanceRange\n */\nexport enum BalanceRange {\n /**\n * @generated from enum value: RANGE_UNSPECIFIED = 0;\n */\n RANGE_UNSPECIFIED = 0,\n\n /**\n * 1 day\n *\n * @generated from enum value: DAY_1 = 1;\n */\n DAY_1 = 1,\n\n /**\n * 7 days\n *\n * @generated from enum value: DAY_7 = 2;\n */\n DAY_7 = 2,\n\n /**\n * 30 days\n *\n * @generated from enum value: DAY_30 = 3;\n */\n DAY_30 = 3,\n\n /**\n * 90 days\n *\n * @generated from enum value: DAY_90 = 4;\n */\n DAY_90 = 4,\n\n /**\n * 180 days\n *\n * @generated from enum value: DAY_180 = 5;\n */\n DAY_180 = 5,\n\n /**\n * 365 days\n *\n * @generated from enum value: DAY_365 = 6;\n */\n DAY_365 = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.BalanceRange.\n */\nexport const BalanceRangeSchema: GenEnum<BalanceRange> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 0);\n\n/**\n * How to group equity series data.\n *\n * @generated from enum ledger.read.v1.EquityGroupBy\n */\nexport enum EquityGroupBy {\n /**\n * defaults to ACCOUNT\n *\n * @generated from enum value: GROUP_BY_UNSPECIFIED = 0;\n */\n GROUP_BY_UNSPECIFIED = 0,\n\n /**\n * group by account bucket\n *\n * @generated from enum value: GROUP_BY_ACCOUNT = 1;\n */\n GROUP_BY_ACCOUNT = 1,\n\n /**\n * group by asset (BTC, ETH, etc.)\n *\n * @generated from enum value: GROUP_BY_ASSET = 2;\n */\n GROUP_BY_ASSET = 2,\n}\n\n/**\n * Describes the enum ledger.read.v1.EquityGroupBy.\n */\nexport const EquityGroupBySchema: GenEnum<EquityGroupBy> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 1);\n\n/**\n * TransferSideKind identifies the display class for one side of a transfer.\n *\n * @generated from enum ledger.read.v1.TransferSideKind\n */\nexport enum TransferSideKind {\n /**\n * Transfer side type was not specified.\n *\n * @generated from enum value: TRANSFER_SIDE_KIND_UNSPECIFIED = 0;\n */\n TRANSFER_SIDE_KIND_UNSPECIFIED = 0,\n\n /**\n * Polyester funding account.\n *\n * @generated from enum value: FUNDING_ACCOUNT = 1;\n */\n FUNDING_ACCOUNT = 1,\n\n /**\n * Polyester trading account.\n *\n * @generated from enum value: TRADING_ACCOUNT = 2;\n */\n TRADING_ACCOUNT = 2,\n\n /**\n * External wallet or chain address. The address is lifecycle-derived and may\n * be empty until ledger-to-lifecycle correlation is projected.\n *\n * @generated from enum value: EXTERNAL_ADDRESS = 3;\n */\n EXTERNAL_ADDRESS = 3,\n\n /**\n * Private off-chain counterparty that must not be identified to the caller.\n * account_id and address are intentionally omitted.\n *\n * @generated from enum value: PRIVATE_COUNTERPARTY = 4;\n */\n PRIVATE_COUNTERPARTY = 4,\n\n /**\n * Fee ledger side, for example spot or perp trading fees.\n *\n * @generated from enum value: FEE_ACCOUNT = 5;\n */\n FEE_ACCOUNT = 5,\n\n /**\n * System, operator, clearing, or other non-user side.\n *\n * @generated from enum value: SYSTEM_ACCOUNT = 6;\n */\n SYSTEM_ACCOUNT = 6,\n}\n\n/**\n * Describes the enum ledger.read.v1.TransferSideKind.\n */\nexport const TransferSideKindSchema: GenEnum<TransferSideKind> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 2);\n\n/**\n * ErrorCode enumerates stable machine-readable error codes for the Ledger Read\n * API. These mirror the REST problem+json \"code\" field for parity between REST\n * and ConnectRPC clients.\n *\n * @generated from enum ledger.read.v1.ErrorCode\n */\nexport enum ErrorCode {\n /**\n * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: ERROR_CODE_BAD_REQUEST = 1;\n */\n BAD_REQUEST = 1,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 2;\n */\n UNAUTHENTICATED = 2,\n\n /**\n * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 3;\n */\n PERMISSION_DENIED = 3,\n\n /**\n * @generated from enum value: ERROR_CODE_NOT_FOUND = 4;\n */\n NOT_FOUND = 4,\n\n /**\n * Missing or invalid account identifier (legacy; used by older endpoints).\n *\n * @generated from enum value: ERROR_CODE_MISSING_ACCOUNT_ID = 5;\n */\n MISSING_ACCOUNT_ID = 5,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_ACCOUNT_ID = 6;\n */\n INVALID_ACCOUNT_ID = 6,\n\n /**\n * Wallet-specific errors for balance lookups by wallet.\n *\n * @generated from enum value: ERROR_CODE_MISSING_WALLET = 7;\n */\n MISSING_WALLET = 7,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_RESOLUTION_UNAVAILABLE = 8;\n */\n WALLET_RESOLUTION_UNAVAILABLE = 8,\n\n /**\n * @generated from enum value: ERROR_CODE_WALLET_NOT_FOUND = 9;\n */\n WALLET_NOT_FOUND = 9,\n\n /**\n * Upstream dependency error (e.g., transfers store, wallet resolver).\n *\n * @generated from enum value: ERROR_CODE_UPSTREAM_ERROR = 10;\n */\n UPSTREAM_ERROR = 10,\n}\n\n/**\n * Describes the enum ledger.read.v1.ErrorCode.\n */\nexport const ErrorCodeSchema: GenEnum<ErrorCode> = /*@__PURE__*/\n enumDesc(file_ledger_read_v1_ledger_read, 3);\n\n/**\n * LedgerReadService exposes read-only ledger endpoints (balances, history, transfers, holds).\n *\n * @generated from service ledger.read.v1.LedgerReadService\n */\nexport const LedgerReadService: GenService<{\n /**\n * Retrieve balance history buckets for an account.\n * Supports optional subaccount, range, asset, and account-code filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalanceHistory\n */\n getBalanceHistory: {\n methodKind: \"unary\";\n input: typeof GetBalanceHistoryRequestSchema;\n output: typeof GetBalanceHistoryResponseSchema;\n },\n /**\n * Retrieve equity history as columnar series data.\n * Supports optional subaccount, range, account-code filtering, and grouping by account or asset.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetEquityHistorySeries\n */\n getEquityHistorySeries: {\n methodKind: \"unary\";\n input: typeof GetEquityHistorySeriesRequestSchema;\n output: typeof GetEquityHistorySeriesResponseSchema;\n },\n /**\n * Retrieve root portfolio equity history as master, top owned subaccounts,\n * and an aggregate of the remaining owned subaccounts. Requires an\n * interactive root-account session; API keys are not supported.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetPortfolioEquityHistorySeries\n */\n getPortfolioEquityHistorySeries: {\n methodKind: \"unary\";\n input: typeof GetPortfolioEquityHistorySeriesRequestSchema;\n output: typeof GetPortfolioEquityHistorySeriesResponseSchema;\n },\n /**\n * Retrieve current root portfolio equity grouped by logical account and\n * asset. Requires an interactive root-account session; API keys are not\n * supported.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetPortfolioEquitySnapshot\n */\n getPortfolioEquitySnapshot: {\n methodKind: \"unary\";\n input: typeof GetPortfolioEquitySnapshotRequestSchema;\n output: typeof GetPortfolioEquitySnapshotResponseSchema;\n },\n /**\n * List finalized transfer history for an account.\n * Supports optional subaccount, asset, ordering, and cursor filters.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListTransfers\n */\n listTransfers: {\n methodKind: \"unary\";\n input: typeof ListTransfersRequestSchema;\n output: typeof ListTransfersResponseSchema;\n },\n /**\n * ListHolds returns pending holds with integer amounts (u128) and asset ids.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.ListHolds\n */\n listHolds: {\n methodKind: \"unary\";\n input: typeof ListHoldsRequestSchema;\n output: typeof ListHoldsResponseSchema;\n },\n /**\n * Retrieve the latest balances for an account.\n * Supports optional subaccount scoping and returns asset symbols with decimal amounts on REST.\n *\n * @generated from rpc ledger.read.v1.LedgerReadService.GetBalances\n */\n getBalances: {\n methodKind: \"unary\";\n input: typeof GetBalancesRequestSchema;\n output: typeof GetBalancesResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_ledger_read_v1_ledger_read, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAa,kCACX,uBAAS,4oOAA4oO;CAAC;CAAwB;CAA4B;AAA2B,CAAC;;;;;AAqBxuO,MAAa,2BACX,0BAAY,iCAAiC,CAAC;;;;;AAmEhD,MAAa,qBACX,0BAAY,iCAAiC,CAAC;;;;;AAoBhD,MAAa,4BACX,0BAAY,iCAAiC,CAAC;;;;;AA2ChD,MAAa,iCACX,0BAAY,iCAAiC,CAAC;;;;;AAqChD,MAAa,sBACX,0BAAY,iCAAiC,CAAC;;;;;AAuDhD,MAAa,kCACX,0BAAY,iCAAiC,CAAC;;;;;AA2BhD,MAAa,wBACX,0BAAY,iCAAiC,CAAC;;;;;AA2BhD,MAAa,sBACX,0BAAY,iCAAiC,CAAC;;;;;AA4BhD,MAAa,iCACX,0BAAY,iCAAiC,CAAC;;;;;AA6ChD,MAAa,sCACX,0BAAY,iCAAiC,CAAC;;;;;AAqDhD,MAAa,qBACX,0BAAY,iCAAiC,EAAE;;;;;AAsEjD,MAAa,uCACX,0BAAY,iCAAiC,EAAE;;;;;AAoBjD,MAAa,+CACX,0BAAY,iCAAiC,EAAE;;;;;AAuEjD,MAAa,gDACX,0BAAY,iCAAiC,EAAE;;;;;AAmCjD,MAAa,+BACX,0BAAY,iCAAiC,EAAE;;;;;AAmCjD,MAAa,6BACX,0BAAY,iCAAiC,EAAE;;;;;AAcjD,MAAa,0CACX,0BAAY,iCAAiC,EAAE;;;;;AAmDjD,MAAa,2CACX,0BAAY,iCAAiC,EAAE;;;;;AA0EjD,MAAa,6BACX,0BAAY,iCAAiC,EAAE;;;;;AA+CjD,MAAa,qBACX,0BAAY,iCAAiC,EAAE;;;;;AA6FjD,MAAa,oBACX,0BAAY,iCAAiC,EAAE;;;;;AA2BjD,MAAa,8BACX,0BAAY,iCAAiC,EAAE;;;;;AA0CjD,MAAa,yBACX,0BAAY,iCAAiC,EAAE;;;;;AAyCjD,MAAa,gBACX,0BAAY,iCAAiC,EAAE;;;;;AAyBjD,MAAa,0BACX,0BAAY,iCAAiC,EAAE;;;;;AAqBjD,MAAa,oBACX,0BAAY,iCAAiC,EAAE;;;;;;AAOjD,IAAY,eAAL,yBAAA,cAAA;;;;CAIL,aAAA,aAAA,uBAAA,KAAA;;;;;;CAOA,aAAA,aAAA,WAAA,KAAA;;;;;;CAOA,aAAA,aAAA,WAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,YAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;;;;;CAOA,aAAA,aAAA,aAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,IAAY,gBAAL,yBAAA,eAAA;;;;;;CAML,cAAA,cAAA,0BAAA,KAAA;;;;;;CAOA,cAAA,cAAA,sBAAA,KAAA;;;;;;CAOA,cAAA,cAAA,oBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,sBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,IAAY,mBAAL,yBAAA,kBAAA;;;;;;CAML,iBAAA,iBAAA,oCAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,qBAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,qBAAA,KAAA;;;;;;;CAQA,iBAAA,iBAAA,sBAAA,KAAA;;;;;;;CAQA,iBAAA,iBAAA,0BAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,iBAAA,KAAA;;;;;;CAOA,iBAAA,iBAAA,oBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,yBACX,uBAAS,iCAAiC,CAAC;;;;;;;;AAS7C,IAAY,YAAL,yBAAA,WAAA;;;;CAIL,UAAA,UAAA,iBAAA,KAAA;;;;CAKA,UAAA,UAAA,iBAAA,KAAA;;;;CAKA,UAAA,UAAA,qBAAA,KAAA;;;;CAKA,UAAA,UAAA,uBAAA,KAAA;;;;CAKA,UAAA,UAAA,eAAA,KAAA;;;;;;CAOA,UAAA,UAAA,wBAAA,KAAA;;;;CAKA,UAAA,UAAA,wBAAA,KAAA;;;;;;CAOA,UAAA,UAAA,oBAAA,KAAA;;;;CAKA,UAAA,UAAA,mCAAA,KAAA;;;;CAKA,UAAA,UAAA,sBAAA,KAAA;;;;;;CAOA,UAAA,UAAA,oBAAA,MAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,kBACX,uBAAS,iCAAiC,CAAC;;;;;;AAO7C,MAAa,oBAgFX,0BAAY,iCAAiC,CAAC"}
|
|
@@ -102,7 +102,7 @@ declare const GetOrderbookHeatmapRequestSchema: GenMessage<GetOrderbookHeatmapRe
|
|
|
102
102
|
*/
|
|
103
103
|
type HeatmapLevels = Message<"marketdata.v1.HeatmapLevels"> & {
|
|
104
104
|
/**
|
|
105
|
-
* Price levels in quote units scaled by
|
|
105
|
+
* Price levels in quote units scaled by 1e9.
|
|
106
106
|
*
|
|
107
107
|
* @generated from field: repeated int64 price_ticks = 1;
|
|
108
108
|
*/
|
|
@@ -130,7 +130,7 @@ declare const HeatmapLevelsSchema: GenMessage<HeatmapLevels>;
|
|
|
130
130
|
*/
|
|
131
131
|
type HeatmapDeltaLevels = Message<"marketdata.v1.HeatmapDeltaLevels"> & {
|
|
132
132
|
/**
|
|
133
|
-
* Price levels in quote units scaled by
|
|
133
|
+
* Price levels in quote units scaled by 1e9.
|
|
134
134
|
*
|
|
135
135
|
* @generated from field: repeated int64 price_ticks = 1;
|
|
136
136
|
*/
|
|
@@ -162,19 +162,19 @@ type HeatmapKeyframe = Message<"marketdata.v1.HeatmapKeyframe"> & {
|
|
|
162
162
|
*/
|
|
163
163
|
tsSec: bigint;
|
|
164
164
|
/**
|
|
165
|
-
* Best bid price in quote units scaled by
|
|
165
|
+
* Best bid price in quote units scaled by 1e9.
|
|
166
166
|
*
|
|
167
167
|
* @generated from field: int64 best_bid_ticks = 2;
|
|
168
168
|
*/
|
|
169
169
|
bestBidTicks: bigint;
|
|
170
170
|
/**
|
|
171
|
-
* Best ask price in quote units scaled by
|
|
171
|
+
* Best ask price in quote units scaled by 1e9.
|
|
172
172
|
*
|
|
173
173
|
* @generated from field: int64 best_ask_ticks = 3;
|
|
174
174
|
*/
|
|
175
175
|
bestAskTicks: bigint;
|
|
176
176
|
/**
|
|
177
|
-
* Mid price in quote units scaled by
|
|
177
|
+
* Mid price in quote units scaled by 1e9.
|
|
178
178
|
*
|
|
179
179
|
* @generated from field: int64 mid_ticks = 4;
|
|
180
180
|
*/
|
|
@@ -320,7 +320,7 @@ type HeatmapLiveBucket = Message<"marketdata.v1.HeatmapLiveBucket"> & {
|
|
|
320
320
|
*/
|
|
321
321
|
quantityMode: HeatmapQuantityMode;
|
|
322
322
|
/**
|
|
323
|
-
* Effective bin stride for this symbol as a price delta in 1e-
|
|
323
|
+
* Effective bin stride for this symbol as a price delta in 1e-9 quote-unit
|
|
324
324
|
* ticks.
|
|
325
325
|
*
|
|
326
326
|
* @generated from field: uint64 effective_bin_ticks = 11;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heatmap_pb.js","names":[],"sources":["../../../../src/gen/marketdata/v1/heatmap_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file marketdata/v1/heatmap.proto (package marketdata.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_polyester_api_options } from \"../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file marketdata/v1/heatmap.proto.\n */\nexport const file_marketdata_v1_heatmap: GenFile = /*@__PURE__*/\n fileDesc(\"ChttYXJrZXRkYXRhL3YxL2hlYXRtYXAucHJvdG8SDW1hcmtldGRhdGEudjEicgoQSGVhdG1hcFRpbWVSYW5nZRIuCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXA6ACKuAgoaR2V0T3JkZXJib29rSGVhdG1hcFJlcXVlc3QSEwoJc3ltYm9sX2lkGAEgASgNQgASMgoIaW50ZXJ2YWwYAiABKA4yHi5tYXJrZXRkYXRhLnYxLkhlYXRtYXBJbnRlcnZhbEIAEiwKBWRlcHRoGAMgASgOMhsubWFya2V0ZGF0YS52MS5IZWF0bWFwRGVwdGhCABIzCgp0aW1lX3JhbmdlGAQgASgLMh8ubWFya2V0ZGF0YS52MS5IZWF0bWFwVGltZVJhbmdlEhQKCnBhZ2VfdG9rZW4YBSABKAlCABIPCgVsaW1pdBgGIAEoDUIAEjsKDXF1YW50aXR5X21vZGUYByABKA4yIi5tYXJrZXRkYXRhLnYxLkhlYXRtYXBRdWFudGl0eU1vZGVCADoAIjoKDUhlYXRtYXBMZXZlbHMSEwoLcHJpY2VfdGlja3MYASADKAMSEgoKcXR5X3NjYWxlZBgCIAMoAzoAIj8KEkhlYXRtYXBEZWx0YUxldmVscxITCgtwcmljZV90aWNrcxgBIAMoAxISCgpxdHlfc2NhbGVkGAIgAygDOgAizgEKD0hlYXRtYXBLZXlmcmFtZRIOCgZ0c19zZWMYASABKAQSFgoOYmVzdF9iaWRfdGlja3MYAiABKAMSFgoOYmVzdF9hc2tfdGlja3MYAyABKAMSEQoJbWlkX3RpY2tzGAQgASgDEioKBGJpZHMYBSABKAsyHC5tYXJrZXRkYXRhLnYxLkhlYXRtYXBMZXZlbHMSKgoEYXNrcxgGIAEoCzIcLm1hcmtldGRhdGEudjEuSGVhdG1hcExldmVscxIQCghib29rX3NlcRgHIAEoBCLPAQoSSGVhdG1hcERlbHRhQnVja2V0Eg4KBnRzX3NlYxgBIAEoBBIvCgRiaWRzGAIgASgLMiEubWFya2V0ZGF0YS52MS5IZWF0bWFwRGVsdGFMZXZlbHMSLwoEYXNrcxgDIAEoCzIhLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhTGV2ZWxzEhkKEXVwZGF0ZXNfaW5fYnVja2V0GAQgASgNEhYKDmJvb2tfc2VxX3N0YXJ0GAUgASgEEhQKDGJvb2tfc2VxX2VuZBgGIAEoBCKBAwoRSGVhdG1hcExpdmVCdWNrZXQSEQoJc3ltYm9sX2lkGAEgASgNEjIKCGludGVydmFsGAIgASgOMh4ubWFya2V0ZGF0YS52MS5IZWF0bWFwSW50ZXJ2YWxCABIOCgZ0c19zZWMYAyABKAQSEAoIaXNfZmluYWwYBCABKAgSLwoEYmlkcxgFIAEoCzIhLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhTGV2ZWxzEi8KBGFza3MYBiABKAsyIS5tYXJrZXRkYXRhLnYxLkhlYXRtYXBEZWx0YUxldmVscxIZChF1cGRhdGVzX2luX2J1Y2tldBgHIAEoDRIWCg5ib29rX3NlcV9zdGFydBgIIAEoBBIUCgxib29rX3NlcV9lbmQYCSABKAQSOwoNcXVhbnRpdHlfbW9kZRgKIAEoDjIiLm1hcmtldGRhdGEudjEuSGVhdG1hcFF1YW50aXR5TW9kZUIAEhsKE2VmZmVjdGl2ZV9iaW5fdGlja3MYCyABKAQifQoRSGVhdG1hcERlbHRhQ2hhaW4SNQoNYmFzZV9rZXlmcmFtZRgBIAEoCzIeLm1hcmtldGRhdGEudjEuSGVhdG1hcEtleWZyYW1lEjEKBmRlbHRhcxgCIAMoCzIhLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhQnVja2V0Ir0DChtHZXRPcmRlcmJvb2tIZWF0bWFwUmVzcG9uc2USEQoJc3ltYm9sX2lkGAEgASgNEjAKCGludGVydmFsGAIgASgOMh4ubWFya2V0ZGF0YS52MS5IZWF0bWFwSW50ZXJ2YWwSKgoFZGVwdGgYAyABKA4yGy5tYXJrZXRkYXRhLnYxLkhlYXRtYXBEZXB0aBIvCgVjaGFpbhgEIAEoCzIgLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhQ2hhaW4SHQoVbGFzdF9wZXJzaXN0ZWRfdHNfc2VjGAUgASgEEh4KFmxpdmVfZnJvbV9ib29rX3NlcV9lbmQYBiABKAQSFwoPaGFzX2xpdmVfYW5jaG9yGAcgASgIEhkKD25leHRfcGFnZV90b2tlbhgIIAEoCUIAEhcKD3NlcnZlcl90aW1lX3NlYxgKIAEoBBI5Cg1xdWFudGl0eV9tb2RlGAsgASgOMiIubWFya2V0ZGF0YS52MS5IZWF0bWFwUXVhbnRpdHlNb2RlEjUKC2xpdmVfYnVja2V0GAwgASgLMiAubWFya2V0ZGF0YS52MS5IZWF0bWFwTGl2ZUJ1Y2tldCpvCg9IZWF0bWFwSW50ZXJ2YWwSGAoUSU5URVJWQUxfVU5TUEVDSUZJRUQQABIPCgtJTlRFUlZBTF8xUxABEg8KC0lOVEVSVkFMXzFNEAISDwoLSU5URVJWQUxfNU0QAxIPCgtJTlRFUlZBTF8xSBAEKqYBCgxIZWF0bWFwRGVwdGgSFQoRREVQVEhfVU5TUEVDSUZJRUQQABILCgdERVBUSF8xEAESCwoHREVQVEhfNRACEgwKCERFUFRIXzEwEAMSDAoIREVQVEhfMjAQBBIMCghERVBUSF81MBAFEg0KCURFUFRIXzEwMBAGEg0KCURFUFRIXzIwMBAHEg0KCURFUFRIXzUwMBAIEg4KCkRFUFRIXzEwMDAQCSpEChNIZWF0bWFwUXVhbnRpdHlNb2RlEhgKFFFUWV9NT0RFX1VOU1BFQ0lGSUVEEAASCQoFQ0xPU0UQARIICgRQRUFLEAIygAEKDkhlYXRtYXBTZXJ2aWNlEm4KE0dldE9yZGVyYm9va0hlYXRtYXASKS5tYXJrZXRkYXRhLnYxLkdldE9yZGVyYm9va0hlYXRtYXBSZXF1ZXN0GioubWFya2V0ZGF0YS52MS5HZXRPcmRlcmJvb2tIZWF0bWFwUmVzcG9uc2UiAEJIWkZnaXRodWIuY29tL0ZhYnJpYy1MYWJzL3BvbHllc3Rlci1zZGstZ28vZ2VuL21hcmtldGRhdGEvdjE7bWFya2V0ZGF0YXYxYgZwcm90bzM=\", [file_google_protobuf_timestamp, file_polyester_api_options]);\n\n/**\n * HeatmapTimeRange selects historical buckets by [start_time, end_time] (UTC).\n * At least one bound is required.\n *\n * @generated from message marketdata.v1.HeatmapTimeRange\n */\nexport type HeatmapTimeRange = Message<\"marketdata.v1.HeatmapTimeRange\"> & {\n /**\n * Inclusive lower bound in UTC. Omit to leave the lower bound open.\n *\n * @generated from field: google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * Inclusive upper bound in UTC. Omit to leave the upper bound open.\n *\n * @generated from field: google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapTimeRange.\n * Use `create(HeatmapTimeRangeSchema)` to create a new message.\n */\nexport const HeatmapTimeRangeSchema: GenMessage<HeatmapTimeRange> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 0);\n\n/**\n * GetOrderbookHeatmapRequest fetches historical heatmap buckets.\n *\n * @generated from message marketdata.v1.GetOrderbookHeatmapRequest\n */\nexport type GetOrderbookHeatmapRequest = Message<\"marketdata.v1.GetOrderbookHeatmapRequest\"> & {\n /**\n * Numeric spot market identifier.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n\n /**\n * Heatmap bucket interval.\n *\n * @generated from field: marketdata.v1.HeatmapInterval interval = 2;\n */\n interval: HeatmapInterval;\n\n /**\n * Top-N levels per side included in each bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDepth depth = 3;\n */\n depth: HeatmapDepth;\n\n /**\n * Absolute time range for the first page. Reuse the same request filters and\n * pass page_token from the prior response to continue older buckets.\n *\n * @generated from field: marketdata.v1.HeatmapTimeRange time_range = 4;\n */\n timeRange?: HeatmapTimeRange | undefined;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to symbol, interval, depth, quantity mode, and the original time\n * range.\n *\n * @generated from field: string page_token = 5;\n */\n pageToken: string;\n\n /**\n * Maximum number of delta buckets returned (min 1, max 20000).\n * This limit counts only `chain.deltas`; `chain.base_keyframe` is not counted.\n *\n * @generated from field: uint32 limit = 6;\n */\n limit: number;\n\n /**\n * Quantity mode used for qty_scaled in snapshot/delta levels:\n * - CLOSE: end-of-bucket quantity\n * - PEAK: intra-bucket peak quantity\n *\n * @generated from field: marketdata.v1.HeatmapQuantityMode quantity_mode = 7;\n */\n quantityMode: HeatmapQuantityMode;\n};\n\n/**\n * Describes the message marketdata.v1.GetOrderbookHeatmapRequest.\n * Use `create(GetOrderbookHeatmapRequestSchema)` to create a new message.\n */\nexport const GetOrderbookHeatmapRequestSchema: GenMessage<GetOrderbookHeatmapRequest> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 1);\n\n/**\n * HeatmapLevels represents one side of the orderbook for snapshots.\n * Arrays are aligned by index and prices are sorted ascending for both sides:\n * - price_ticks[i] <-> qty_scaled[i]\n *\n * @generated from message marketdata.v1.HeatmapLevels\n */\nexport type HeatmapLevels = Message<\"marketdata.v1.HeatmapLevels\"> & {\n /**\n * Price levels in quote units scaled by 1e6.\n *\n * @generated from field: repeated int64 price_ticks = 1;\n */\n priceTicks: bigint[];\n\n /**\n * Quantity at each price level according to quantity_mode, scaled by the\n * pair's base_quantity_scale from GetSpotConfig.\n *\n * @generated from field: repeated int64 qty_scaled = 2;\n */\n qtyScaled: bigint[];\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapLevels.\n * Use `create(HeatmapLevelsSchema)` to create a new message.\n */\nexport const HeatmapLevelsSchema: GenMessage<HeatmapLevels> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 2);\n\n/**\n * HeatmapDeltaLevels represents sparse per-bucket level changes for one side.\n * Arrays are aligned by index and prices are sorted ascending for both sides:\n * - price_ticks[i] <-> qty_scaled[i]\n * Delete semantics: qty_scaled[i] = 0 means delete level at price_ticks[i].\n *\n * @generated from message marketdata.v1.HeatmapDeltaLevels\n */\nexport type HeatmapDeltaLevels = Message<\"marketdata.v1.HeatmapDeltaLevels\"> & {\n /**\n * Price levels in quote units scaled by 1e6.\n *\n * @generated from field: repeated int64 price_ticks = 1;\n */\n priceTicks: bigint[];\n\n /**\n * Quantity at each price level, scaled by the pair's base_quantity_scale from\n * GetSpotConfig. A zero value deletes the level at the matching price_ticks\n * index.\n *\n * @generated from field: repeated int64 qty_scaled = 2;\n */\n qtyScaled: bigint[];\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapDeltaLevels.\n * Use `create(HeatmapDeltaLevelsSchema)` to create a new message.\n */\nexport const HeatmapDeltaLevelsSchema: GenMessage<HeatmapDeltaLevels> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 3);\n\n/**\n * HeatmapKeyframe is a full-book snapshot anchor.\n *\n * @generated from message marketdata.v1.HeatmapKeyframe\n */\nexport type HeatmapKeyframe = Message<\"marketdata.v1.HeatmapKeyframe\"> & {\n /**\n * Snapshot timestamp (seconds since epoch, UTC).\n *\n * @generated from field: uint64 ts_sec = 1;\n */\n tsSec: bigint;\n\n /**\n * Best bid price in quote units scaled by 1e6.\n *\n * @generated from field: int64 best_bid_ticks = 2;\n */\n bestBidTicks: bigint;\n\n /**\n * Best ask price in quote units scaled by 1e6.\n *\n * @generated from field: int64 best_ask_ticks = 3;\n */\n bestAskTicks: bigint;\n\n /**\n * Mid price in quote units scaled by 1e6.\n *\n * @generated from field: int64 mid_ticks = 4;\n */\n midTicks: bigint;\n\n /**\n * Complete bid-side levels at the snapshot.\n *\n * @generated from field: marketdata.v1.HeatmapLevels bids = 5;\n */\n bids?: HeatmapLevels | undefined;\n\n /**\n * Complete ask-side levels at the snapshot.\n *\n * @generated from field: marketdata.v1.HeatmapLevels asks = 6;\n */\n asks?: HeatmapLevels | undefined;\n\n /**\n * Monotonic order book sequence at the snapshot.\n *\n * @generated from field: uint64 book_seq = 7;\n */\n bookSeq: bigint;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapKeyframe.\n * Use `create(HeatmapKeyframeSchema)` to create a new message.\n */\nexport const HeatmapKeyframeSchema: GenMessage<HeatmapKeyframe> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 4);\n\n/**\n * HeatmapDeltaBucket is one sparse update bucket containing both sides.\n *\n * @generated from message marketdata.v1.HeatmapDeltaBucket\n */\nexport type HeatmapDeltaBucket = Message<\"marketdata.v1.HeatmapDeltaBucket\"> & {\n /**\n * Bucket start timestamp (seconds since epoch, UTC), aligned to `interval`.\n *\n * @generated from field: uint64 ts_sec = 1;\n */\n tsSec: bigint;\n\n /**\n * Sparse bid-side level changes in this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels bids = 2;\n */\n bids?: HeatmapDeltaLevels | undefined;\n\n /**\n * Sparse ask-side level changes in this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels asks = 3;\n */\n asks?: HeatmapDeltaLevels | undefined;\n\n /**\n * Number of upstream L2 updates aggregated into this interval bucket.\n *\n * @generated from field: uint32 updates_in_bucket = 4;\n */\n updatesInBucket: number;\n\n /**\n * Earliest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_start = 5;\n */\n bookSeqStart: bigint;\n\n /**\n * Latest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_end = 6;\n */\n bookSeqEnd: bigint;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapDeltaBucket.\n * Use `create(HeatmapDeltaBucketSchema)` to create a new message.\n */\nexport const HeatmapDeltaBucketSchema: GenMessage<HeatmapDeltaBucket> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 5);\n\n/**\n * HeatmapLiveBucket is the canonical live payload for real-time heatmap updates.\n * It represents the latest state of one bucket (open or finalized).\n *\n * @generated from message marketdata.v1.HeatmapLiveBucket\n */\nexport type HeatmapLiveBucket = Message<\"marketdata.v1.HeatmapLiveBucket\"> & {\n /**\n * Numeric spot market identifier.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n\n /**\n * Bucket interval for this payload.\n *\n * @generated from field: marketdata.v1.HeatmapInterval interval = 2;\n */\n interval: HeatmapInterval;\n\n /**\n * Bucket start timestamp (seconds since epoch, UTC), aligned to `interval`.\n *\n * @generated from field: uint64 ts_sec = 3;\n */\n tsSec: bigint;\n\n /**\n * True when this bucket is finalized; false for provisional updates to an\n * open bucket.\n *\n * @generated from field: bool is_final = 4;\n */\n isFinal: boolean;\n\n /**\n * Sparse bid-side level changes represented by this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels bids = 5;\n */\n bids?: HeatmapDeltaLevels | undefined;\n\n /**\n * Sparse ask-side level changes represented by this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels asks = 6;\n */\n asks?: HeatmapDeltaLevels | undefined;\n\n /**\n * Number of upstream L2 updates aggregated into this interval bucket.\n *\n * @generated from field: uint32 updates_in_bucket = 7;\n */\n updatesInBucket: number;\n\n /**\n * Earliest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_start = 8;\n */\n bookSeqStart: bigint;\n\n /**\n * Latest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_end = 9;\n */\n bookSeqEnd: bigint;\n\n /**\n * Quantity semantics for qty_scaled in bids and asks.\n *\n * @generated from field: marketdata.v1.HeatmapQuantityMode quantity_mode = 10;\n */\n quantityMode: HeatmapQuantityMode;\n\n /**\n * Effective bin stride for this symbol as a price delta in 1e-6 quote-unit\n * ticks.\n *\n * @generated from field: uint64 effective_bin_ticks = 11;\n */\n effectiveBinTicks: bigint;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapLiveBucket.\n * Use `create(HeatmapLiveBucketSchema)` to create a new message.\n */\nexport const HeatmapLiveBucketSchema: GenMessage<HeatmapLiveBucket> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 6);\n\n/**\n * HeatmapDeltaChain is the historical payload for all intervals.\n * Reconstruct by applying deltas over base_keyframe.\n * Deltas are ordered oldest-first by ts_sec.\n *\n * @generated from message marketdata.v1.HeatmapDeltaChain\n */\nexport type HeatmapDeltaChain = Message<\"marketdata.v1.HeatmapDeltaChain\"> & {\n /**\n * Full-book snapshot from which to apply the returned deltas.\n *\n * @generated from field: marketdata.v1.HeatmapKeyframe base_keyframe = 1;\n */\n baseKeyframe?: HeatmapKeyframe | undefined;\n\n /**\n * Sparse update buckets ordered oldest-first by timestamp.\n *\n * @generated from field: repeated marketdata.v1.HeatmapDeltaBucket deltas = 2;\n */\n deltas: HeatmapDeltaBucket[];\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapDeltaChain.\n * Use `create(HeatmapDeltaChainSchema)` to create a new message.\n */\nexport const HeatmapDeltaChainSchema: GenMessage<HeatmapDeltaChain> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 7);\n\n/**\n * GetOrderbookHeatmapResponse returns a historical replay chain plus optional\n * live bucket state for explicit realtime stitching.\n *\n * @generated from message marketdata.v1.GetOrderbookHeatmapResponse\n */\nexport type GetOrderbookHeatmapResponse = Message<\"marketdata.v1.GetOrderbookHeatmapResponse\"> & {\n /**\n * Numeric spot market identifier returned for the requested market.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n\n /**\n * Bucket interval used for the returned chain.\n *\n * @generated from field: marketdata.v1.HeatmapInterval interval = 2;\n */\n interval: HeatmapInterval;\n\n /**\n * Top-N depth requested per side.\n *\n * @generated from field: marketdata.v1.HeatmapDepth depth = 3;\n */\n depth: HeatmapDepth;\n\n /**\n * Always returned as snapshot + sparse deltas for the requested interval.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaChain chain = 4;\n */\n chain?: HeatmapDeltaChain | undefined;\n\n /**\n * Latest finalized historical bucket timestamp in seconds since epoch (UTC).\n *\n * @generated from field: uint64 last_persisted_ts_sec = 5;\n */\n lastPersistedTsSec: bigint;\n\n /**\n * Book sequence anchor for realtime continuation; apply live updates where book_seq_end is greater than this value.\n *\n * @generated from field: uint64 live_from_book_seq_end = 6;\n */\n liveFromBookSeqEnd: bigint;\n\n /**\n * True when live_from_book_seq_end is available and can be used as a realtime continuation anchor.\n *\n * @generated from field: bool has_live_anchor = 7;\n */\n hasLiveAnchor: boolean;\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 8;\n */\n nextPageToken: string;\n\n /**\n * Server response time in seconds since epoch (UTC).\n *\n * @generated from field: uint64 server_time_sec = 10;\n */\n serverTimeSec: bigint;\n\n /**\n * Quantity mode used for all qty_scaled values in the response.\n *\n * @generated from field: marketdata.v1.HeatmapQuantityMode quantity_mode = 11;\n */\n quantityMode: HeatmapQuantityMode;\n\n /**\n * Optional latest live bucket for the requested interval and depth.\n * Present only when it is newer than the historical anchor and its quantity semantics match quantity_mode.\n *\n * @generated from field: marketdata.v1.HeatmapLiveBucket live_bucket = 12;\n */\n liveBucket?: HeatmapLiveBucket | undefined;\n};\n\n/**\n * Describes the message marketdata.v1.GetOrderbookHeatmapResponse.\n * Use `create(GetOrderbookHeatmapResponseSchema)` to create a new message.\n */\nexport const GetOrderbookHeatmapResponseSchema: GenMessage<GetOrderbookHeatmapResponse> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 8);\n\n/**\n * HeatmapInterval controls bucket resolution for historical orderbook heatmap.\n *\n * @generated from enum marketdata.v1.HeatmapInterval\n */\nexport enum HeatmapInterval {\n /**\n * @generated from enum value: INTERVAL_UNSPECIFIED = 0;\n */\n INTERVAL_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: INTERVAL_1S = 1;\n */\n INTERVAL_1S = 1,\n\n /**\n * @generated from enum value: INTERVAL_1M = 2;\n */\n INTERVAL_1M = 2,\n\n /**\n * @generated from enum value: INTERVAL_5M = 3;\n */\n INTERVAL_5M = 3,\n\n /**\n * @generated from enum value: INTERVAL_1H = 4;\n */\n INTERVAL_1H = 4,\n}\n\n/**\n * Describes the enum marketdata.v1.HeatmapInterval.\n */\nexport const HeatmapIntervalSchema: GenEnum<HeatmapInterval> = /*@__PURE__*/\n enumDesc(file_marketdata_v1_heatmap, 0);\n\n/**\n * HeatmapDepth controls top-N levels included per side in each heatmap bucket.\n *\n * Values intentionally mirror orderbook.v1.Depth for FE ergonomics, while\n * keeping this contract decoupled from orderbook service protos.\n *\n * @generated from enum marketdata.v1.HeatmapDepth\n */\nexport enum HeatmapDepth {\n /**\n * @generated from enum value: DEPTH_UNSPECIFIED = 0;\n */\n DEPTH_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: DEPTH_1 = 1;\n */\n DEPTH_1 = 1,\n\n /**\n * @generated from enum value: DEPTH_5 = 2;\n */\n DEPTH_5 = 2,\n\n /**\n * @generated from enum value: DEPTH_10 = 3;\n */\n DEPTH_10 = 3,\n\n /**\n * @generated from enum value: DEPTH_20 = 4;\n */\n DEPTH_20 = 4,\n\n /**\n * @generated from enum value: DEPTH_50 = 5;\n */\n DEPTH_50 = 5,\n\n /**\n * @generated from enum value: DEPTH_100 = 6;\n */\n DEPTH_100 = 6,\n\n /**\n * @generated from enum value: DEPTH_200 = 7;\n */\n DEPTH_200 = 7,\n\n /**\n * @generated from enum value: DEPTH_500 = 8;\n */\n DEPTH_500 = 8,\n\n /**\n * @generated from enum value: DEPTH_1000 = 9;\n */\n DEPTH_1000 = 9,\n}\n\n/**\n * Describes the enum marketdata.v1.HeatmapDepth.\n */\nexport const HeatmapDepthSchema: GenEnum<HeatmapDepth> = /*@__PURE__*/\n enumDesc(file_marketdata_v1_heatmap, 1);\n\n/**\n * HeatmapQuantityMode controls what qty_scaled means in returned levels.\n *\n * @generated from enum marketdata.v1.HeatmapQuantityMode\n */\nexport enum HeatmapQuantityMode {\n /**\n * @generated from enum value: QTY_MODE_UNSPECIFIED = 0;\n */\n QTY_MODE_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: CLOSE = 1;\n */\n CLOSE = 1,\n\n /**\n * @generated from enum value: PEAK = 2;\n */\n PEAK = 2,\n}\n\n/**\n * Describes the enum marketdata.v1.HeatmapQuantityMode.\n */\nexport const HeatmapQuantityModeSchema: GenEnum<HeatmapQuantityMode> = /*@__PURE__*/\n enumDesc(file_marketdata_v1_heatmap, 2);\n\n/**\n * HeatmapService serves historical orderbook heatmap chains.\n *\n * @generated from service marketdata.v1.HeatmapService\n */\nexport const HeatmapService: GenService<{\n /**\n * Retrieve historical orderbook heatmap data for a spot symbol.\n * - All intervals (1s/1m/5m/1h) return snapshot + sparse delta chain.\n * - Response may also include the latest live bucket state when available.\n * Response always includes realtime stitching anchors.\n *\n * @generated from rpc marketdata.v1.HeatmapService.GetOrderbookHeatmap\n */\n getOrderbookHeatmap: {\n methodKind: \"unary\";\n input: typeof GetOrderbookHeatmapRequestSchema;\n output: typeof GetOrderbookHeatmapResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_marketdata_v1_heatmap, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,6BACX,uBAAS,4zGAA4zG,CAAC,gCAAgC,0BAA0B,CAAC;;;;;AA4Bn4G,MAAa,yBACX,0BAAY,4BAA4B,CAAC;;;;;AAoE3C,MAAa,mCACX,0BAAY,4BAA4B,CAAC;;;;;AA8B3C,MAAa,sBACX,0BAAY,4BAA4B,CAAC;;;;;AAgC3C,MAAa,2BACX,0BAAY,4BAA4B,CAAC;;;;;AA8D3C,MAAa,wBACX,0BAAY,4BAA4B,CAAC;;;;;AAuD3C,MAAa,2BACX,0BAAY,4BAA4B,CAAC;;;;;AA6F3C,MAAa,0BACX,0BAAY,4BAA4B,CAAC;;;;;AA6B3C,MAAa,0BACX,0BAAY,4BAA4B,CAAC;;;;;AA4F3C,MAAa,oCACX,0BAAY,4BAA4B,CAAC;;;;;;AAO3C,IAAY,kBAAL,yBAAA,iBAAA;;;;CAIL,gBAAA,gBAAA,0BAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,wBACX,uBAAS,4BAA4B,CAAC;;;;;;;;;AAUxC,IAAY,eAAL,yBAAA,cAAA;;;;CAIL,aAAA,aAAA,uBAAA,KAAA;;;;CAKA,aAAA,aAAA,aAAA,KAAA;;;;CAKA,aAAA,aAAA,aAAA,KAAA;;;;CAKA,aAAA,aAAA,cAAA,KAAA;;;;CAKA,aAAA,aAAA,cAAA,KAAA;;;;CAKA,aAAA,aAAA,cAAA,KAAA;;;;CAKA,aAAA,aAAA,eAAA,KAAA;;;;CAKA,aAAA,aAAA,eAAA,KAAA;;;;CAKA,aAAA,aAAA,eAAA,KAAA;;;;CAKA,aAAA,aAAA,gBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,4BAA4B,CAAC;;;;;;AAOxC,IAAY,sBAAL,yBAAA,qBAAA;;;;CAIL,oBAAA,oBAAA,0BAAA,KAAA;;;;CAKA,oBAAA,oBAAA,WAAA,KAAA;;;;CAKA,oBAAA,oBAAA,UAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,4BACX,uBAAS,4BAA4B,CAAC;;;;;;AAOxC,MAAa,iBAeX,0BAAY,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"heatmap_pb.js","names":[],"sources":["../../../../src/gen/marketdata/v1/heatmap_pb.ts"],"sourcesContent":["// @generated by protoc-gen-es v2.13.0 with parameter \"target=ts,import_extension=js\"\n// @generated from file marketdata/v1/heatmap.proto (package marketdata.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_polyester_api_options } from \"../../polyester/api/options_pb.js\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file marketdata/v1/heatmap.proto.\n */\nexport const file_marketdata_v1_heatmap: GenFile = /*@__PURE__*/\n fileDesc(\"ChttYXJrZXRkYXRhL3YxL2hlYXRtYXAucHJvdG8SDW1hcmtldGRhdGEudjEicgoQSGVhdG1hcFRpbWVSYW5nZRIuCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXA6ACKuAgoaR2V0T3JkZXJib29rSGVhdG1hcFJlcXVlc3QSEwoJc3ltYm9sX2lkGAEgASgNQgASMgoIaW50ZXJ2YWwYAiABKA4yHi5tYXJrZXRkYXRhLnYxLkhlYXRtYXBJbnRlcnZhbEIAEiwKBWRlcHRoGAMgASgOMhsubWFya2V0ZGF0YS52MS5IZWF0bWFwRGVwdGhCABIzCgp0aW1lX3JhbmdlGAQgASgLMh8ubWFya2V0ZGF0YS52MS5IZWF0bWFwVGltZVJhbmdlEhQKCnBhZ2VfdG9rZW4YBSABKAlCABIPCgVsaW1pdBgGIAEoDUIAEjsKDXF1YW50aXR5X21vZGUYByABKA4yIi5tYXJrZXRkYXRhLnYxLkhlYXRtYXBRdWFudGl0eU1vZGVCADoAIjoKDUhlYXRtYXBMZXZlbHMSEwoLcHJpY2VfdGlja3MYASADKAMSEgoKcXR5X3NjYWxlZBgCIAMoAzoAIj8KEkhlYXRtYXBEZWx0YUxldmVscxITCgtwcmljZV90aWNrcxgBIAMoAxISCgpxdHlfc2NhbGVkGAIgAygDOgAizgEKD0hlYXRtYXBLZXlmcmFtZRIOCgZ0c19zZWMYASABKAQSFgoOYmVzdF9iaWRfdGlja3MYAiABKAMSFgoOYmVzdF9hc2tfdGlja3MYAyABKAMSEQoJbWlkX3RpY2tzGAQgASgDEioKBGJpZHMYBSABKAsyHC5tYXJrZXRkYXRhLnYxLkhlYXRtYXBMZXZlbHMSKgoEYXNrcxgGIAEoCzIcLm1hcmtldGRhdGEudjEuSGVhdG1hcExldmVscxIQCghib29rX3NlcRgHIAEoBCLPAQoSSGVhdG1hcERlbHRhQnVja2V0Eg4KBnRzX3NlYxgBIAEoBBIvCgRiaWRzGAIgASgLMiEubWFya2V0ZGF0YS52MS5IZWF0bWFwRGVsdGFMZXZlbHMSLwoEYXNrcxgDIAEoCzIhLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhTGV2ZWxzEhkKEXVwZGF0ZXNfaW5fYnVja2V0GAQgASgNEhYKDmJvb2tfc2VxX3N0YXJ0GAUgASgEEhQKDGJvb2tfc2VxX2VuZBgGIAEoBCKBAwoRSGVhdG1hcExpdmVCdWNrZXQSEQoJc3ltYm9sX2lkGAEgASgNEjIKCGludGVydmFsGAIgASgOMh4ubWFya2V0ZGF0YS52MS5IZWF0bWFwSW50ZXJ2YWxCABIOCgZ0c19zZWMYAyABKAQSEAoIaXNfZmluYWwYBCABKAgSLwoEYmlkcxgFIAEoCzIhLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhTGV2ZWxzEi8KBGFza3MYBiABKAsyIS5tYXJrZXRkYXRhLnYxLkhlYXRtYXBEZWx0YUxldmVscxIZChF1cGRhdGVzX2luX2J1Y2tldBgHIAEoDRIWCg5ib29rX3NlcV9zdGFydBgIIAEoBBIUCgxib29rX3NlcV9lbmQYCSABKAQSOwoNcXVhbnRpdHlfbW9kZRgKIAEoDjIiLm1hcmtldGRhdGEudjEuSGVhdG1hcFF1YW50aXR5TW9kZUIAEhsKE2VmZmVjdGl2ZV9iaW5fdGlja3MYCyABKAQifQoRSGVhdG1hcERlbHRhQ2hhaW4SNQoNYmFzZV9rZXlmcmFtZRgBIAEoCzIeLm1hcmtldGRhdGEudjEuSGVhdG1hcEtleWZyYW1lEjEKBmRlbHRhcxgCIAMoCzIhLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhQnVja2V0Ir0DChtHZXRPcmRlcmJvb2tIZWF0bWFwUmVzcG9uc2USEQoJc3ltYm9sX2lkGAEgASgNEjAKCGludGVydmFsGAIgASgOMh4ubWFya2V0ZGF0YS52MS5IZWF0bWFwSW50ZXJ2YWwSKgoFZGVwdGgYAyABKA4yGy5tYXJrZXRkYXRhLnYxLkhlYXRtYXBEZXB0aBIvCgVjaGFpbhgEIAEoCzIgLm1hcmtldGRhdGEudjEuSGVhdG1hcERlbHRhQ2hhaW4SHQoVbGFzdF9wZXJzaXN0ZWRfdHNfc2VjGAUgASgEEh4KFmxpdmVfZnJvbV9ib29rX3NlcV9lbmQYBiABKAQSFwoPaGFzX2xpdmVfYW5jaG9yGAcgASgIEhkKD25leHRfcGFnZV90b2tlbhgIIAEoCUIAEhcKD3NlcnZlcl90aW1lX3NlYxgKIAEoBBI5Cg1xdWFudGl0eV9tb2RlGAsgASgOMiIubWFya2V0ZGF0YS52MS5IZWF0bWFwUXVhbnRpdHlNb2RlEjUKC2xpdmVfYnVja2V0GAwgASgLMiAubWFya2V0ZGF0YS52MS5IZWF0bWFwTGl2ZUJ1Y2tldCpvCg9IZWF0bWFwSW50ZXJ2YWwSGAoUSU5URVJWQUxfVU5TUEVDSUZJRUQQABIPCgtJTlRFUlZBTF8xUxABEg8KC0lOVEVSVkFMXzFNEAISDwoLSU5URVJWQUxfNU0QAxIPCgtJTlRFUlZBTF8xSBAEKqYBCgxIZWF0bWFwRGVwdGgSFQoRREVQVEhfVU5TUEVDSUZJRUQQABILCgdERVBUSF8xEAESCwoHREVQVEhfNRACEgwKCERFUFRIXzEwEAMSDAoIREVQVEhfMjAQBBIMCghERVBUSF81MBAFEg0KCURFUFRIXzEwMBAGEg0KCURFUFRIXzIwMBAHEg0KCURFUFRIXzUwMBAIEg4KCkRFUFRIXzEwMDAQCSpEChNIZWF0bWFwUXVhbnRpdHlNb2RlEhgKFFFUWV9NT0RFX1VOU1BFQ0lGSUVEEAASCQoFQ0xPU0UQARIICgRQRUFLEAIygAEKDkhlYXRtYXBTZXJ2aWNlEm4KE0dldE9yZGVyYm9va0hlYXRtYXASKS5tYXJrZXRkYXRhLnYxLkdldE9yZGVyYm9va0hlYXRtYXBSZXF1ZXN0GioubWFya2V0ZGF0YS52MS5HZXRPcmRlcmJvb2tIZWF0bWFwUmVzcG9uc2UiAEJIWkZnaXRodWIuY29tL0ZhYnJpYy1MYWJzL3BvbHllc3Rlci1zZGstZ28vZ2VuL21hcmtldGRhdGEvdjE7bWFya2V0ZGF0YXYxYgZwcm90bzM=\", [file_google_protobuf_timestamp, file_polyester_api_options]);\n\n/**\n * HeatmapTimeRange selects historical buckets by [start_time, end_time] (UTC).\n * At least one bound is required.\n *\n * @generated from message marketdata.v1.HeatmapTimeRange\n */\nexport type HeatmapTimeRange = Message<\"marketdata.v1.HeatmapTimeRange\"> & {\n /**\n * Inclusive lower bound in UTC. Omit to leave the lower bound open.\n *\n * @generated from field: google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * Inclusive upper bound in UTC. Omit to leave the upper bound open.\n *\n * @generated from field: google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapTimeRange.\n * Use `create(HeatmapTimeRangeSchema)` to create a new message.\n */\nexport const HeatmapTimeRangeSchema: GenMessage<HeatmapTimeRange> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 0);\n\n/**\n * GetOrderbookHeatmapRequest fetches historical heatmap buckets.\n *\n * @generated from message marketdata.v1.GetOrderbookHeatmapRequest\n */\nexport type GetOrderbookHeatmapRequest = Message<\"marketdata.v1.GetOrderbookHeatmapRequest\"> & {\n /**\n * Numeric spot market identifier.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n\n /**\n * Heatmap bucket interval.\n *\n * @generated from field: marketdata.v1.HeatmapInterval interval = 2;\n */\n interval: HeatmapInterval;\n\n /**\n * Top-N levels per side included in each bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDepth depth = 3;\n */\n depth: HeatmapDepth;\n\n /**\n * Absolute time range for the first page. Reuse the same request filters and\n * pass page_token from the prior response to continue older buckets.\n *\n * @generated from field: marketdata.v1.HeatmapTimeRange time_range = 4;\n */\n timeRange?: HeatmapTimeRange | undefined;\n\n /**\n * Opaque keyset cursor from a previous response. The cursor is exclusive and\n * bound to symbol, interval, depth, quantity mode, and the original time\n * range.\n *\n * @generated from field: string page_token = 5;\n */\n pageToken: string;\n\n /**\n * Maximum number of delta buckets returned (min 1, max 20000).\n * This limit counts only `chain.deltas`; `chain.base_keyframe` is not counted.\n *\n * @generated from field: uint32 limit = 6;\n */\n limit: number;\n\n /**\n * Quantity mode used for qty_scaled in snapshot/delta levels:\n * - CLOSE: end-of-bucket quantity\n * - PEAK: intra-bucket peak quantity\n *\n * @generated from field: marketdata.v1.HeatmapQuantityMode quantity_mode = 7;\n */\n quantityMode: HeatmapQuantityMode;\n};\n\n/**\n * Describes the message marketdata.v1.GetOrderbookHeatmapRequest.\n * Use `create(GetOrderbookHeatmapRequestSchema)` to create a new message.\n */\nexport const GetOrderbookHeatmapRequestSchema: GenMessage<GetOrderbookHeatmapRequest> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 1);\n\n/**\n * HeatmapLevels represents one side of the orderbook for snapshots.\n * Arrays are aligned by index and prices are sorted ascending for both sides:\n * - price_ticks[i] <-> qty_scaled[i]\n *\n * @generated from message marketdata.v1.HeatmapLevels\n */\nexport type HeatmapLevels = Message<\"marketdata.v1.HeatmapLevels\"> & {\n /**\n * Price levels in quote units scaled by 1e9.\n *\n * @generated from field: repeated int64 price_ticks = 1;\n */\n priceTicks: bigint[];\n\n /**\n * Quantity at each price level according to quantity_mode, scaled by the\n * pair's base_quantity_scale from GetSpotConfig.\n *\n * @generated from field: repeated int64 qty_scaled = 2;\n */\n qtyScaled: bigint[];\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapLevels.\n * Use `create(HeatmapLevelsSchema)` to create a new message.\n */\nexport const HeatmapLevelsSchema: GenMessage<HeatmapLevels> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 2);\n\n/**\n * HeatmapDeltaLevels represents sparse per-bucket level changes for one side.\n * Arrays are aligned by index and prices are sorted ascending for both sides:\n * - price_ticks[i] <-> qty_scaled[i]\n * Delete semantics: qty_scaled[i] = 0 means delete level at price_ticks[i].\n *\n * @generated from message marketdata.v1.HeatmapDeltaLevels\n */\nexport type HeatmapDeltaLevels = Message<\"marketdata.v1.HeatmapDeltaLevels\"> & {\n /**\n * Price levels in quote units scaled by 1e9.\n *\n * @generated from field: repeated int64 price_ticks = 1;\n */\n priceTicks: bigint[];\n\n /**\n * Quantity at each price level, scaled by the pair's base_quantity_scale from\n * GetSpotConfig. A zero value deletes the level at the matching price_ticks\n * index.\n *\n * @generated from field: repeated int64 qty_scaled = 2;\n */\n qtyScaled: bigint[];\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapDeltaLevels.\n * Use `create(HeatmapDeltaLevelsSchema)` to create a new message.\n */\nexport const HeatmapDeltaLevelsSchema: GenMessage<HeatmapDeltaLevels> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 3);\n\n/**\n * HeatmapKeyframe is a full-book snapshot anchor.\n *\n * @generated from message marketdata.v1.HeatmapKeyframe\n */\nexport type HeatmapKeyframe = Message<\"marketdata.v1.HeatmapKeyframe\"> & {\n /**\n * Snapshot timestamp (seconds since epoch, UTC).\n *\n * @generated from field: uint64 ts_sec = 1;\n */\n tsSec: bigint;\n\n /**\n * Best bid price in quote units scaled by 1e9.\n *\n * @generated from field: int64 best_bid_ticks = 2;\n */\n bestBidTicks: bigint;\n\n /**\n * Best ask price in quote units scaled by 1e9.\n *\n * @generated from field: int64 best_ask_ticks = 3;\n */\n bestAskTicks: bigint;\n\n /**\n * Mid price in quote units scaled by 1e9.\n *\n * @generated from field: int64 mid_ticks = 4;\n */\n midTicks: bigint;\n\n /**\n * Complete bid-side levels at the snapshot.\n *\n * @generated from field: marketdata.v1.HeatmapLevels bids = 5;\n */\n bids?: HeatmapLevels | undefined;\n\n /**\n * Complete ask-side levels at the snapshot.\n *\n * @generated from field: marketdata.v1.HeatmapLevels asks = 6;\n */\n asks?: HeatmapLevels | undefined;\n\n /**\n * Monotonic order book sequence at the snapshot.\n *\n * @generated from field: uint64 book_seq = 7;\n */\n bookSeq: bigint;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapKeyframe.\n * Use `create(HeatmapKeyframeSchema)` to create a new message.\n */\nexport const HeatmapKeyframeSchema: GenMessage<HeatmapKeyframe> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 4);\n\n/**\n * HeatmapDeltaBucket is one sparse update bucket containing both sides.\n *\n * @generated from message marketdata.v1.HeatmapDeltaBucket\n */\nexport type HeatmapDeltaBucket = Message<\"marketdata.v1.HeatmapDeltaBucket\"> & {\n /**\n * Bucket start timestamp (seconds since epoch, UTC), aligned to `interval`.\n *\n * @generated from field: uint64 ts_sec = 1;\n */\n tsSec: bigint;\n\n /**\n * Sparse bid-side level changes in this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels bids = 2;\n */\n bids?: HeatmapDeltaLevels | undefined;\n\n /**\n * Sparse ask-side level changes in this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels asks = 3;\n */\n asks?: HeatmapDeltaLevels | undefined;\n\n /**\n * Number of upstream L2 updates aggregated into this interval bucket.\n *\n * @generated from field: uint32 updates_in_bucket = 4;\n */\n updatesInBucket: number;\n\n /**\n * Earliest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_start = 5;\n */\n bookSeqStart: bigint;\n\n /**\n * Latest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_end = 6;\n */\n bookSeqEnd: bigint;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapDeltaBucket.\n * Use `create(HeatmapDeltaBucketSchema)` to create a new message.\n */\nexport const HeatmapDeltaBucketSchema: GenMessage<HeatmapDeltaBucket> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 5);\n\n/**\n * HeatmapLiveBucket is the canonical live payload for real-time heatmap updates.\n * It represents the latest state of one bucket (open or finalized).\n *\n * @generated from message marketdata.v1.HeatmapLiveBucket\n */\nexport type HeatmapLiveBucket = Message<\"marketdata.v1.HeatmapLiveBucket\"> & {\n /**\n * Numeric spot market identifier.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n\n /**\n * Bucket interval for this payload.\n *\n * @generated from field: marketdata.v1.HeatmapInterval interval = 2;\n */\n interval: HeatmapInterval;\n\n /**\n * Bucket start timestamp (seconds since epoch, UTC), aligned to `interval`.\n *\n * @generated from field: uint64 ts_sec = 3;\n */\n tsSec: bigint;\n\n /**\n * True when this bucket is finalized; false for provisional updates to an\n * open bucket.\n *\n * @generated from field: bool is_final = 4;\n */\n isFinal: boolean;\n\n /**\n * Sparse bid-side level changes represented by this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels bids = 5;\n */\n bids?: HeatmapDeltaLevels | undefined;\n\n /**\n * Sparse ask-side level changes represented by this bucket.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaLevels asks = 6;\n */\n asks?: HeatmapDeltaLevels | undefined;\n\n /**\n * Number of upstream L2 updates aggregated into this interval bucket.\n *\n * @generated from field: uint32 updates_in_bucket = 7;\n */\n updatesInBucket: number;\n\n /**\n * Earliest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_start = 8;\n */\n bookSeqStart: bigint;\n\n /**\n * Latest monotonic order book sequence represented by this bucket.\n *\n * @generated from field: uint64 book_seq_end = 9;\n */\n bookSeqEnd: bigint;\n\n /**\n * Quantity semantics for qty_scaled in bids and asks.\n *\n * @generated from field: marketdata.v1.HeatmapQuantityMode quantity_mode = 10;\n */\n quantityMode: HeatmapQuantityMode;\n\n /**\n * Effective bin stride for this symbol as a price delta in 1e-9 quote-unit\n * ticks.\n *\n * @generated from field: uint64 effective_bin_ticks = 11;\n */\n effectiveBinTicks: bigint;\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapLiveBucket.\n * Use `create(HeatmapLiveBucketSchema)` to create a new message.\n */\nexport const HeatmapLiveBucketSchema: GenMessage<HeatmapLiveBucket> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 6);\n\n/**\n * HeatmapDeltaChain is the historical payload for all intervals.\n * Reconstruct by applying deltas over base_keyframe.\n * Deltas are ordered oldest-first by ts_sec.\n *\n * @generated from message marketdata.v1.HeatmapDeltaChain\n */\nexport type HeatmapDeltaChain = Message<\"marketdata.v1.HeatmapDeltaChain\"> & {\n /**\n * Full-book snapshot from which to apply the returned deltas.\n *\n * @generated from field: marketdata.v1.HeatmapKeyframe base_keyframe = 1;\n */\n baseKeyframe?: HeatmapKeyframe | undefined;\n\n /**\n * Sparse update buckets ordered oldest-first by timestamp.\n *\n * @generated from field: repeated marketdata.v1.HeatmapDeltaBucket deltas = 2;\n */\n deltas: HeatmapDeltaBucket[];\n};\n\n/**\n * Describes the message marketdata.v1.HeatmapDeltaChain.\n * Use `create(HeatmapDeltaChainSchema)` to create a new message.\n */\nexport const HeatmapDeltaChainSchema: GenMessage<HeatmapDeltaChain> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 7);\n\n/**\n * GetOrderbookHeatmapResponse returns a historical replay chain plus optional\n * live bucket state for explicit realtime stitching.\n *\n * @generated from message marketdata.v1.GetOrderbookHeatmapResponse\n */\nexport type GetOrderbookHeatmapResponse = Message<\"marketdata.v1.GetOrderbookHeatmapResponse\"> & {\n /**\n * Numeric spot market identifier returned for the requested market.\n *\n * @generated from field: uint32 symbol_id = 1;\n */\n symbolId: number;\n\n /**\n * Bucket interval used for the returned chain.\n *\n * @generated from field: marketdata.v1.HeatmapInterval interval = 2;\n */\n interval: HeatmapInterval;\n\n /**\n * Top-N depth requested per side.\n *\n * @generated from field: marketdata.v1.HeatmapDepth depth = 3;\n */\n depth: HeatmapDepth;\n\n /**\n * Always returned as snapshot + sparse deltas for the requested interval.\n *\n * @generated from field: marketdata.v1.HeatmapDeltaChain chain = 4;\n */\n chain?: HeatmapDeltaChain | undefined;\n\n /**\n * Latest finalized historical bucket timestamp in seconds since epoch (UTC).\n *\n * @generated from field: uint64 last_persisted_ts_sec = 5;\n */\n lastPersistedTsSec: bigint;\n\n /**\n * Book sequence anchor for realtime continuation; apply live updates where book_seq_end is greater than this value.\n *\n * @generated from field: uint64 live_from_book_seq_end = 6;\n */\n liveFromBookSeqEnd: bigint;\n\n /**\n * True when live_from_book_seq_end is available and can be used as a realtime continuation anchor.\n *\n * @generated from field: bool has_live_anchor = 7;\n */\n hasLiveAnchor: boolean;\n\n /**\n * Opaque cursor for the next page. Empty when no more results exist.\n *\n * @generated from field: string next_page_token = 8;\n */\n nextPageToken: string;\n\n /**\n * Server response time in seconds since epoch (UTC).\n *\n * @generated from field: uint64 server_time_sec = 10;\n */\n serverTimeSec: bigint;\n\n /**\n * Quantity mode used for all qty_scaled values in the response.\n *\n * @generated from field: marketdata.v1.HeatmapQuantityMode quantity_mode = 11;\n */\n quantityMode: HeatmapQuantityMode;\n\n /**\n * Optional latest live bucket for the requested interval and depth.\n * Present only when it is newer than the historical anchor and its quantity semantics match quantity_mode.\n *\n * @generated from field: marketdata.v1.HeatmapLiveBucket live_bucket = 12;\n */\n liveBucket?: HeatmapLiveBucket | undefined;\n};\n\n/**\n * Describes the message marketdata.v1.GetOrderbookHeatmapResponse.\n * Use `create(GetOrderbookHeatmapResponseSchema)` to create a new message.\n */\nexport const GetOrderbookHeatmapResponseSchema: GenMessage<GetOrderbookHeatmapResponse> = /*@__PURE__*/\n messageDesc(file_marketdata_v1_heatmap, 8);\n\n/**\n * HeatmapInterval controls bucket resolution for historical orderbook heatmap.\n *\n * @generated from enum marketdata.v1.HeatmapInterval\n */\nexport enum HeatmapInterval {\n /**\n * @generated from enum value: INTERVAL_UNSPECIFIED = 0;\n */\n INTERVAL_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: INTERVAL_1S = 1;\n */\n INTERVAL_1S = 1,\n\n /**\n * @generated from enum value: INTERVAL_1M = 2;\n */\n INTERVAL_1M = 2,\n\n /**\n * @generated from enum value: INTERVAL_5M = 3;\n */\n INTERVAL_5M = 3,\n\n /**\n * @generated from enum value: INTERVAL_1H = 4;\n */\n INTERVAL_1H = 4,\n}\n\n/**\n * Describes the enum marketdata.v1.HeatmapInterval.\n */\nexport const HeatmapIntervalSchema: GenEnum<HeatmapInterval> = /*@__PURE__*/\n enumDesc(file_marketdata_v1_heatmap, 0);\n\n/**\n * HeatmapDepth controls top-N levels included per side in each heatmap bucket.\n *\n * Values intentionally mirror orderbook.v1.Depth for FE ergonomics, while\n * keeping this contract decoupled from orderbook service protos.\n *\n * @generated from enum marketdata.v1.HeatmapDepth\n */\nexport enum HeatmapDepth {\n /**\n * @generated from enum value: DEPTH_UNSPECIFIED = 0;\n */\n DEPTH_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: DEPTH_1 = 1;\n */\n DEPTH_1 = 1,\n\n /**\n * @generated from enum value: DEPTH_5 = 2;\n */\n DEPTH_5 = 2,\n\n /**\n * @generated from enum value: DEPTH_10 = 3;\n */\n DEPTH_10 = 3,\n\n /**\n * @generated from enum value: DEPTH_20 = 4;\n */\n DEPTH_20 = 4,\n\n /**\n * @generated from enum value: DEPTH_50 = 5;\n */\n DEPTH_50 = 5,\n\n /**\n * @generated from enum value: DEPTH_100 = 6;\n */\n DEPTH_100 = 6,\n\n /**\n * @generated from enum value: DEPTH_200 = 7;\n */\n DEPTH_200 = 7,\n\n /**\n * @generated from enum value: DEPTH_500 = 8;\n */\n DEPTH_500 = 8,\n\n /**\n * @generated from enum value: DEPTH_1000 = 9;\n */\n DEPTH_1000 = 9,\n}\n\n/**\n * Describes the enum marketdata.v1.HeatmapDepth.\n */\nexport const HeatmapDepthSchema: GenEnum<HeatmapDepth> = /*@__PURE__*/\n enumDesc(file_marketdata_v1_heatmap, 1);\n\n/**\n * HeatmapQuantityMode controls what qty_scaled means in returned levels.\n *\n * @generated from enum marketdata.v1.HeatmapQuantityMode\n */\nexport enum HeatmapQuantityMode {\n /**\n * @generated from enum value: QTY_MODE_UNSPECIFIED = 0;\n */\n QTY_MODE_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: CLOSE = 1;\n */\n CLOSE = 1,\n\n /**\n * @generated from enum value: PEAK = 2;\n */\n PEAK = 2,\n}\n\n/**\n * Describes the enum marketdata.v1.HeatmapQuantityMode.\n */\nexport const HeatmapQuantityModeSchema: GenEnum<HeatmapQuantityMode> = /*@__PURE__*/\n enumDesc(file_marketdata_v1_heatmap, 2);\n\n/**\n * HeatmapService serves historical orderbook heatmap chains.\n *\n * @generated from service marketdata.v1.HeatmapService\n */\nexport const HeatmapService: GenService<{\n /**\n * Retrieve historical orderbook heatmap data for a spot symbol.\n * - All intervals (1s/1m/5m/1h) return snapshot + sparse delta chain.\n * - Response may also include the latest live bucket state when available.\n * Response always includes realtime stitching anchors.\n *\n * @generated from rpc marketdata.v1.HeatmapService.GetOrderbookHeatmap\n */\n getOrderbookHeatmap: {\n methodKind: \"unary\";\n input: typeof GetOrderbookHeatmapRequestSchema;\n output: typeof GetOrderbookHeatmapResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_marketdata_v1_heatmap, 0);\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAa,6BACX,uBAAS,4zGAA4zG,CAAC,gCAAgC,0BAA0B,CAAC;;;;;AA4Bn4G,MAAa,yBACX,0BAAY,4BAA4B,CAAC;;;;;AAoE3C,MAAa,mCACX,0BAAY,4BAA4B,CAAC;;;;;AA8B3C,MAAa,sBACX,0BAAY,4BAA4B,CAAC;;;;;AAgC3C,MAAa,2BACX,0BAAY,4BAA4B,CAAC;;;;;AA8D3C,MAAa,wBACX,0BAAY,4BAA4B,CAAC;;;;;AAuD3C,MAAa,2BACX,0BAAY,4BAA4B,CAAC;;;;;AA6F3C,MAAa,0BACX,0BAAY,4BAA4B,CAAC;;;;;AA6B3C,MAAa,0BACX,0BAAY,4BAA4B,CAAC;;;;;AA4F3C,MAAa,oCACX,0BAAY,4BAA4B,CAAC;;;;;;AAO3C,IAAY,kBAAL,yBAAA,iBAAA;;;;CAIL,gBAAA,gBAAA,0BAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;;;CAKA,gBAAA,gBAAA,iBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,wBACX,uBAAS,4BAA4B,CAAC;;;;;;;;;AAUxC,IAAY,eAAL,yBAAA,cAAA;;;;CAIL,aAAA,aAAA,uBAAA,KAAA;;;;CAKA,aAAA,aAAA,aAAA,KAAA;;;;CAKA,aAAA,aAAA,aAAA,KAAA;;;;CAKA,aAAA,aAAA,cAAA,KAAA;;;;CAKA,aAAA,aAAA,cAAA,KAAA;;;;CAKA,aAAA,aAAA,cAAA,KAAA;;;;CAKA,aAAA,aAAA,eAAA,KAAA;;;;CAKA,aAAA,aAAA,eAAA,KAAA;;;;CAKA,aAAA,aAAA,eAAA,KAAA;;;;CAKA,aAAA,aAAA,gBAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,qBACX,uBAAS,4BAA4B,CAAC;;;;;;AAOxC,IAAY,sBAAL,yBAAA,qBAAA;;;;CAIL,oBAAA,oBAAA,0BAAA,KAAA;;;;CAKA,oBAAA,oBAAA,WAAA,KAAA;;;;CAKA,oBAAA,oBAAA,UAAA,KAAA;;AACF,EAAA,CAAA,CAAA;;;;AAKA,MAAa,4BACX,uBAAS,4BAA4B,CAAC;;;;;;AAOxC,MAAa,iBAeX,0BAAY,4BAA4B,CAAC"}
|