@polyester/sdk 0.14.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/core-client.js +1 -1
  3. package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts +8 -0
  4. package/dist/gen/ledger/read/v1/ledger_read_pb.d.ts.map +1 -1
  5. package/dist/gen/ledger/read/v1/ledger_read_pb.js +1 -1
  6. package/dist/gen/ledger/read/v1/ledger_read_pb.js.map +1 -1
  7. package/dist/services/address-book/address-book.schemas.d.ts +1 -1
  8. package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
  9. package/dist/services/address-book/address-book.schemas.js +2 -1
  10. package/dist/services/address-book/address-book.schemas.js.map +1 -1
  11. package/dist/services/candles/candles.d.ts.map +1 -1
  12. package/dist/services/candles/candles.js +2 -1
  13. package/dist/services/candles/candles.js.map +1 -1
  14. package/dist/services/candles/candles.schemas.d.ts +1 -1
  15. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  16. package/dist/services/candles/candles.schemas.js +3 -2
  17. package/dist/services/candles/candles.schemas.js.map +1 -1
  18. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -1
  19. package/dist/services/chain-analytics/chain-analytics.schemas.js +5 -5
  20. package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -1
  21. package/dist/services/deposit/deposit.schemas.d.ts +3 -3
  22. package/dist/services/deposit/deposit.schemas.d.ts.map +1 -1
  23. package/dist/services/deposit/deposit.schemas.js +4 -4
  24. package/dist/services/deposit/deposit.schemas.js.map +1 -1
  25. package/dist/services/guard-signer/guard-signer.schemas.d.ts +2 -2
  26. package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -1
  27. package/dist/services/guard-signer/guard-signer.schemas.js +2 -1
  28. package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -1
  29. package/dist/services/heatmap/heatmap.d.ts.map +1 -1
  30. package/dist/services/heatmap/heatmap.js +2 -1
  31. package/dist/services/heatmap/heatmap.js.map +1 -1
  32. package/dist/services/heatmap/heatmap.schemas.d.ts +1 -1
  33. package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -1
  34. package/dist/services/heatmap/heatmap.schemas.js +2 -1
  35. package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
  36. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +2 -2
  37. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -1
  38. package/dist/services/internal-transfers/internal-transfers.schemas.js +3 -2
  39. package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
  40. package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
  41. package/dist/services/market-data/market-data.d.ts.map +1 -1
  42. package/dist/services/market-data/market-data.js +2 -1
  43. package/dist/services/market-data/market-data.js.map +1 -1
  44. package/dist/services/market-data/market-data.schemas.d.ts +1 -1
  45. package/dist/services/market-data/market-data.schemas.js +2 -2
  46. package/dist/services/market-data/market-data.schemas.js.map +1 -1
  47. package/dist/services/market-overview/market-overview.schemas.d.ts +1 -1
  48. package/dist/services/market-overview/market-overview.schemas.js +2 -2
  49. package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
  50. package/dist/services/orders/orders-input.schemas.d.ts +1 -1
  51. package/dist/services/orders/orders-modify.schemas.js +1 -1
  52. package/dist/services/orders/orders-output.schemas.d.ts +6 -6
  53. package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
  54. package/dist/services/orders/orders-risk.schemas.js +3 -4
  55. package/dist/services/orders/orders-risk.schemas.js.map +1 -1
  56. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +9 -9
  57. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -1
  58. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +17 -8
  59. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -1
  60. package/dist/services/shared.js +4 -2
  61. package/dist/services/shared.js.map +1 -1
  62. package/dist/services/subaccounts/subaccounts.schemas.d.ts +5 -5
  63. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +2 -2
  64. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
  65. package/dist/services/trading-withdraws/trading-withdraws.schemas.js +3 -2
  66. package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
  67. package/dist/services/trailing-oneof-inputs.js +3 -1
  68. package/dist/services/trailing-oneof-inputs.js.map +1 -1
  69. package/dist/services/transfers/transfers.schemas.d.ts +7 -0
  70. package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
  71. package/dist/services/transfers/transfers.schemas.js +2 -1
  72. package/dist/services/transfers/transfers.schemas.js.map +1 -1
  73. package/dist/services/triggers/trigger-input.schemas.d.ts +2 -2
  74. package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
  75. package/dist/services/triggers/trigger-input.schemas.js +3 -3
  76. package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
  77. package/dist/services/triggers/triggers-output.schemas.d.ts +18 -18
  78. package/dist/shared/decimal-surface.d.ts.map +1 -1
  79. package/dist/shared/decimal-surface.js.map +1 -1
  80. package/dist/shared/schemas.js +4 -4
  81. package/dist/shared/schemas.js.map +1 -1
  82. package/dist/utils/numbers.js +1 -10
  83. package/dist/utils/numbers.js.map +1 -1
  84. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @polyester/sdk
2
2
 
3
+ ## 0.15.1
4
+
5
+ ### Patch Changes
6
+
7
+ - feat(transfers): expose external chain IDs on transfer source and destination details. ([#99](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/99))
8
+
9
+ ## 0.15.0
10
+
11
+ ### Minor Changes
12
+
13
+ - fix(policies): scale subaccount policy `maxOrderSize` to the quote microunits that `max_order_notional` expects. It is now a decimal USDT string on read and write, so a 100,000 USDT cap is `"100000"`, and `"0"` still means no cap. ([#97](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/97))
14
+
15
+ It was previously a `number` written straight to the wire, so a cap of 100000 took effect as 0.1 USDT and small orders failed with `POLICY_MAX_NOTIONAL`. Caps saved before this fix hold raw microunits and read back at their true value now, so re-set any that look a million times too small.
16
+
17
+ ### Patch Changes
18
+
19
+ - fix(services): reject inputs that overflow their protobuf `uint32` field with a validation error, instead of accepting them and failing later in the encoder. Covers deposit and address-book chain IDs, market-data, candles and heatmap symbol IDs, `limit` on market overview, and `maxOpenOrders` on subaccount policies. ([#97](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/97))
20
+
21
+ - fix(triggers): enforce the 1 to 10,000 bps `maxSlippage` cap on standalone trigger create and modify, matching attached trailing stops and market IOC orders. ([#97](https://github.com/Fabric-Labs/polyester-sdk-typescript/pull/97))
22
+
3
23
  ## 0.14.2
4
24
 
5
25
  ### Patch Changes
@@ -4,8 +4,8 @@ import { parsePolyesterEnvironment } from "./environment.js";
4
4
  import { AccountsService } from "./services/accounts/accounts.js";
5
5
  import { ApiKeysService } from "./services/api-keys/api-keys.js";
6
6
  import { AuthService } from "./services/auth/auth.js";
7
- import { SubaccountsService } from "./services/subaccounts/subaccounts.js";
8
7
  import { createCatalogSdkScales } from "./shared/decimal-surface.js";
8
+ import { SubaccountsService } from "./services/subaccounts/subaccounts.js";
9
9
  import { CandlesService } from "./services/candles/candles.js";
10
10
  import { ChainAnalyticsService } from "./services/chain-analytics/chain-analytics.js";
11
11
  import { MarketDataService } from "./services/market-data/market-data.js";
@@ -511,6 +511,14 @@ type TransferSide = Message<"ledger.read.v1.TransferSide"> & {
511
511
  * @generated from field: string address = 3;
512
512
  */
513
513
  address: string;
514
+ /**
515
+ * PolyChain-registered external network identifier for EXTERNAL_ADDRESS.
516
+ * This matches chain.zipper.v1.ChainConfig.chain_id and is not the chain's
517
+ * native identifier (for example, an EIP-155 id) or the Polyester chain id.
518
+ *
519
+ * @generated from field: optional uint32 chain_id = 4;
520
+ */
521
+ chainId?: number | undefined;
514
522
  };
515
523
  /**
516
524
  * Describes the message ledger.read.v1.TransferSide.
@@ -1 +1 @@
1
- {"version":3,"file":"ledger_read_pb.d.ts","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"mappings":"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"}
1
+ {"version":3,"file":"ledger_read_pb.d.ts","names":[],"sources":["../../../../../src/gen/ledger/read/v1/ledger_read_pb.ts"],"mappings":"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"}
@@ -37,7 +37,7 @@ var ledger_read_pb_exports = /* @__PURE__ */ __exportAll({
37
37
  /**
38
38
  * Describes the file ledger/read/v1/ledger_read.proto.
39
39
  */
40
- const file_ledger_read_v1_ledger_read = /*@__PURE__*/ fileDesc("CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIncKDFRyYW5zZmVyU2lkZRIuCgRraW5kGAEgASgOMiAubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlS2luZBIXCgphY2NvdW50X2lkGAIgASgGSACIAQESDwoHYWRkcmVzcxgDIAEoCUINCgtfYWNjb3VudF9pZCKCAwoLVHJhbnNmZXJSb3cSEAoIYXNzZXRfaWQYASABKA0SKwoKYW1vdW50X2UxOBgCIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSLgoNdHJhbnNmZXJfY29kZRgDIAEoDjIXLmxlZGdlci52MS5UcmFuc2ZlckNvZGUSLAoMYWNjb3VudF9jb2RlGAQgASgOMhYubGVkZ2VyLnYxLkFjY291bnRDb2RlEg0KBXRzX3VzGAUgASgEEjIKEWJhbGFuY2VfYWZ0ZXJfZTE4GAkgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIQCghpc19kZWJpdBgKIAEoCBIPCgdsaW5rX2lkGAsgASgEEg8KB2Zsb3dfaWQYDCABKAkSLAoGc291cmNlGA0gASgLMhwubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlEjEKC2Rlc3RpbmF0aW9uGA4gASgLMhwubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlImIKFUxpc3RUcmFuc2ZlcnNSZXNwb25zZRIuCgl0cmFuc2ZlcnMYASADKAsyGy5sZWRnZXIucmVhZC52MS5UcmFuc2ZlclJvdxIZCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAlCACJ5ChBMaXN0SG9sZHNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARIPCgVsaW1pdBgCIAEoDUIAEhAKCHJldmVyc2VkGAMgASgIEhQKCnBhZ2VfdG9rZW4YBCABKAlCAEIQCg5fc3ViYWNjb3VudF9pZCJ5CgdIb2xkUm93Eg8KB2hvbGRfaWQYASABKAYSNAoTYW1vdW50X3Jlc2VydmVkX2UxOBgCIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIYXNzZXRfaWQYAyABKA0SFQoNZXhwaXJlc19hdF9ucxgEIAEoBCJWChFMaXN0SG9sZHNSZXNwb25zZRImCgVob2xkcxgBIAMoCzIXLmxlZGdlci5yZWFkLnYxLkhvbGRSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAIgASgJQgAiNgoLRXJyb3JEZXRhaWwSJwoEY29kZRgBIAEoDjIZLmxlZGdlci5yZWFkLnYxLkVycm9yQ29kZSptCgxCYWxhbmNlUmFuZ2USFQoRUkFOR0VfVU5TUEVDSUZJRUQQABIJCgVEQVlfMRABEgkKBURBWV83EAISCgoGREFZXzMwEAMSCgoGREFZXzkwEAQSCwoHREFZXzE4MBAFEgsKB0RBWV8zNjUQBipTCg1FcXVpdHlHcm91cEJ5EhgKFEdST1VQX0JZX1VOU1BFQ0lGSUVEEAASFAoQR1JPVVBfQllfQUNDT1VOVBABEhIKDkdST1VQX0JZX0FTU0VUEAIqtQEKEFRyYW5zZmVyU2lkZUtpbmQSIgoeVFJBTlNGRVJfU0lERV9LSU5EX1VOU1BFQ0lGSUVEEAASEwoPRlVORElOR19BQ0NPVU5UEAESEwoPVFJBRElOR19BQ0NPVU5UEAISFAoQRVhURVJOQUxfQUREUkVTUxADEhgKFFBSSVZBVEVfQ09VTlRFUlBBUlRZEAQSDwoLRkVFX0FDQ09VTlQQBRISCg5TWVNURU1fQUNDT1VOVBAGKvICCglFcnJvckNvZGUSGgoWRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEhoKFkVSUk9SX0NPREVfQkFEX1JFUVVFU1QQARIeChpFUlJPUl9DT0RFX1VOQVVUSEVOVElDQVRFRBACEiAKHEVSUk9SX0NPREVfUEVSTUlTU0lPTl9ERU5JRUQQAxIYChRFUlJPUl9DT0RFX05PVF9GT1VORBAEEiEKHUVSUk9SX0NPREVfTUlTU0lOR19BQ0NPVU5UX0lEEAUSIQodRVJST1JfQ09ERV9JTlZBTElEX0FDQ09VTlRfSUQQBhIdChlFUlJPUl9DT0RFX01JU1NJTkdfV0FMTEVUEAcSLAooRVJST1JfQ09ERV9XQUxMRVRfUkVTT0xVVElPTl9VTkFWQUlMQUJMRRAIEh8KG0VSUk9SX0NPREVfV0FMTEVUX05PVF9GT1VORBAJEh0KGUVSUk9SX0NPREVfVVBTVFJFQU1fRVJST1IQCjKIBAoRTGVkZ2VyUmVhZFNlcnZpY2USagoRR2V0QmFsYW5jZUhpc3RvcnkSKC5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QaKS5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlIgASeQoWR2V0RXF1aXR5SGlzdG9yeVNlcmllcxItLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0Gi4ubGVkZ2VyLnJlYWQudjEuR2V0RXF1aXR5SGlzdG9yeVNlcmllc1Jlc3BvbnNlIgASXgoNTGlzdFRyYW5zZmVycxIkLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXF1ZXN0GiUubGVkZ2VyLnJlYWQudjEuTGlzdFRyYW5zZmVyc1Jlc3BvbnNlIgASUgoJTGlzdEhvbGRzEiAubGVkZ2VyLnJlYWQudjEuTGlzdEhvbGRzUmVxdWVzdBohLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1Jlc3BvbnNlIgASWAoLR2V0QmFsYW5jZXMSIi5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1JlcXVlc3QaIy5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1Jlc3BvbnNlIgBCR1pFZ2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9sZWRnZXIvcmVhZC92MTtsZWRnZXJyZHYxYgZwcm90bzM=", [file_ledger_v1_catalog, file_polyester_type_v1_u128]);
40
+ const file_ledger_read_v1_ledger_read = /*@__PURE__*/ fileDesc("CiBsZWRnZXIvcmVhZC92MS9sZWRnZXJfcmVhZC5wcm90bxIObGVkZ2VyLnJlYWQudjEiQgoSR2V0QmFsYW5jZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBAUIQCg5fc3ViYWNjb3VudF9pZCL/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIpsBCgxUcmFuc2ZlclNpZGUSLgoEa2luZBgBIAEoDjIgLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZUtpbmQSFwoKYWNjb3VudF9pZBgCIAEoBkgAiAEBEg8KB2FkZHJlc3MYAyABKAkSFQoIY2hhaW5faWQYBCABKA1IAYgBAUINCgtfYWNjb3VudF9pZEILCglfY2hhaW5faWQiggMKC1RyYW5zZmVyUm93EhAKCGFzc2V0X2lkGAEgASgNEisKCmFtb3VudF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4Ei4KDXRyYW5zZmVyX2NvZGUYAyABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlEiwKDGFjY291bnRfY29kZRgEIAEoDjIWLmxlZGdlci52MS5BY2NvdW50Q29kZRINCgV0c191cxgFIAEoBBIyChFiYWxhbmNlX2FmdGVyX2UxOBgJIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIaXNfZGViaXQYCiABKAgSDwoHbGlua19pZBgLIAEoBBIPCgdmbG93X2lkGAwgASgJEiwKBnNvdXJjZRgNIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZRIxCgtkZXN0aW5hdGlvbhgOIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZSJiChVMaXN0VHJhbnNmZXJzUmVzcG9uc2USLgoJdHJhbnNmZXJzGAEgAygLMhsubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAMgASgJQgAieQoQTGlzdEhvbGRzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIUCgpwYWdlX3Rva2VuGAQgASgJQgBCEAoOX3N1YmFjY291bnRfaWQieQoHSG9sZFJvdxIPCgdob2xkX2lkGAEgASgGEjQKE2Ftb3VudF9yZXNlcnZlZF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhAKCGFzc2V0X2lkGAMgASgNEhUKDWV4cGlyZXNfYXRfbnMYBCABKAQiVgoRTGlzdEhvbGRzUmVzcG9uc2USJgoFaG9sZHMYASADKAsyFy5sZWRnZXIucmVhZC52MS5Ib2xkUm93EhkKD25leHRfcGFnZV90b2tlbhgCIAEoCUIAIjYKC0Vycm9yRGV0YWlsEicKBGNvZGUYASABKA4yGS5sZWRnZXIucmVhZC52MS5FcnJvckNvZGUqbQoMQmFsYW5jZVJhbmdlEhUKEVJBTkdFX1VOU1BFQ0lGSUVEEAASCQoFREFZXzEQARIJCgVEQVlfNxACEgoKBkRBWV8zMBADEgoKBkRBWV85MBAEEgsKB0RBWV8xODAQBRILCgdEQVlfMzY1EAYqUwoNRXF1aXR5R3JvdXBCeRIYChRHUk9VUF9CWV9VTlNQRUNJRklFRBAAEhQKEEdST1VQX0JZX0FDQ09VTlQQARISCg5HUk9VUF9CWV9BU1NFVBACKrUBChBUcmFuc2ZlclNpZGVLaW5kEiIKHlRSQU5TRkVSX1NJREVfS0lORF9VTlNQRUNJRklFRBAAEhMKD0ZVTkRJTkdfQUNDT1VOVBABEhMKD1RSQURJTkdfQUNDT1VOVBACEhQKEEVYVEVSTkFMX0FERFJFU1MQAxIYChRQUklWQVRFX0NPVU5URVJQQVJUWRAEEg8KC0ZFRV9BQ0NPVU5UEAUSEgoOU1lTVEVNX0FDQ09VTlQQBiryAgoJRXJyb3JDb2RlEhoKFkVSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIaChZFUlJPUl9DT0RFX0JBRF9SRVFVRVNUEAESHgoaRVJST1JfQ09ERV9VTkFVVEhFTlRJQ0FURUQQAhIgChxFUlJPUl9DT0RFX1BFUk1JU1NJT05fREVOSUVEEAMSGAoURVJST1JfQ09ERV9OT1RfRk9VTkQQBBIhCh1FUlJPUl9DT0RFX01JU1NJTkdfQUNDT1VOVF9JRBAFEiEKHUVSUk9SX0NPREVfSU5WQUxJRF9BQ0NPVU5UX0lEEAYSHQoZRVJST1JfQ09ERV9NSVNTSU5HX1dBTExFVBAHEiwKKEVSUk9SX0NPREVfV0FMTEVUX1JFU09MVVRJT05fVU5BVkFJTEFCTEUQCBIfChtFUlJPUl9DT0RFX1dBTExFVF9OT1RfRk9VTkQQCRIdChlFUlJPUl9DT0RFX1VQU1RSRUFNX0VSUk9SEAoyiAQKEUxlZGdlclJlYWRTZXJ2aWNlEmoKEUdldEJhbGFuY2VIaXN0b3J5EigubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXF1ZXN0GikubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXNwb25zZSIAEnkKFkdldEVxdWl0eUhpc3RvcnlTZXJpZXMSLS5sZWRnZXIucmVhZC52MS5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVxdWVzdBouLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZSIAEl4KDUxpc3RUcmFuc2ZlcnMSJC5sZWRnZXIucmVhZC52MS5MaXN0VHJhbnNmZXJzUmVxdWVzdBolLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXNwb25zZSIAElIKCUxpc3RIb2xkcxIgLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1JlcXVlc3QaIS5sZWRnZXIucmVhZC52MS5MaXN0SG9sZHNSZXNwb25zZSIAElgKC0dldEJhbGFuY2VzEiIubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXF1ZXN0GiMubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXNwb25zZSIAQkdaRWdpdGh1Yi5jb20vRmFicmljLUxhYnMvcG9seWVzdGVyLXNkay1nby9nZW4vbGVkZ2VyL3JlYWQvdjE7bGVkZ2VycmR2MWIGcHJvdG8z", [file_ledger_v1_catalog, file_polyester_type_v1_u128]);
41
41
  /**
42
42
  * Describes the message ledger.read.v1.GetBalancesRequest.
43
43
  * Use `create(GetBalancesRequestSchema)` to create a new message.
@@ -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 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/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIncKDFRyYW5zZmVyU2lkZRIuCgRraW5kGAEgASgOMiAubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlS2luZBIXCgphY2NvdW50X2lkGAIgASgGSACIAQESDwoHYWRkcmVzcxgDIAEoCUINCgtfYWNjb3VudF9pZCKCAwoLVHJhbnNmZXJSb3cSEAoIYXNzZXRfaWQYASABKA0SKwoKYW1vdW50X2UxOBgCIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSLgoNdHJhbnNmZXJfY29kZRgDIAEoDjIXLmxlZGdlci52MS5UcmFuc2ZlckNvZGUSLAoMYWNjb3VudF9jb2RlGAQgASgOMhYubGVkZ2VyLnYxLkFjY291bnRDb2RlEg0KBXRzX3VzGAUgASgEEjIKEWJhbGFuY2VfYWZ0ZXJfZTE4GAkgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIQCghpc19kZWJpdBgKIAEoCBIPCgdsaW5rX2lkGAsgASgEEg8KB2Zsb3dfaWQYDCABKAkSLAoGc291cmNlGA0gASgLMhwubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlEjEKC2Rlc3RpbmF0aW9uGA4gASgLMhwubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJTaWRlImIKFUxpc3RUcmFuc2ZlcnNSZXNwb25zZRIuCgl0cmFuc2ZlcnMYASADKAsyGy5sZWRnZXIucmVhZC52MS5UcmFuc2ZlclJvdxIZCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAlCACJ5ChBMaXN0SG9sZHNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARIPCgVsaW1pdBgCIAEoDUIAEhAKCHJldmVyc2VkGAMgASgIEhQKCnBhZ2VfdG9rZW4YBCABKAlCAEIQCg5fc3ViYWNjb3VudF9pZCJ5CgdIb2xkUm93Eg8KB2hvbGRfaWQYASABKAYSNAoTYW1vdW50X3Jlc2VydmVkX2UxOBgCIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIYXNzZXRfaWQYAyABKA0SFQoNZXhwaXJlc19hdF9ucxgEIAEoBCJWChFMaXN0SG9sZHNSZXNwb25zZRImCgVob2xkcxgBIAMoCzIXLmxlZGdlci5yZWFkLnYxLkhvbGRSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAIgASgJQgAiNgoLRXJyb3JEZXRhaWwSJwoEY29kZRgBIAEoDjIZLmxlZGdlci5yZWFkLnYxLkVycm9yQ29kZSptCgxCYWxhbmNlUmFuZ2USFQoRUkFOR0VfVU5TUEVDSUZJRUQQABIJCgVEQVlfMRABEgkKBURBWV83EAISCgoGREFZXzMwEAMSCgoGREFZXzkwEAQSCwoHREFZXzE4MBAFEgsKB0RBWV8zNjUQBipTCg1FcXVpdHlHcm91cEJ5EhgKFEdST1VQX0JZX1VOU1BFQ0lGSUVEEAASFAoQR1JPVVBfQllfQUNDT1VOVBABEhIKDkdST1VQX0JZX0FTU0VUEAIqtQEKEFRyYW5zZmVyU2lkZUtpbmQSIgoeVFJBTlNGRVJfU0lERV9LSU5EX1VOU1BFQ0lGSUVEEAASEwoPRlVORElOR19BQ0NPVU5UEAESEwoPVFJBRElOR19BQ0NPVU5UEAISFAoQRVhURVJOQUxfQUREUkVTUxADEhgKFFBSSVZBVEVfQ09VTlRFUlBBUlRZEAQSDwoLRkVFX0FDQ09VTlQQBRISCg5TWVNURU1fQUNDT1VOVBAGKvICCglFcnJvckNvZGUSGgoWRVJST1JfQ09ERV9VTlNQRUNJRklFRBAAEhoKFkVSUk9SX0NPREVfQkFEX1JFUVVFU1QQARIeChpFUlJPUl9DT0RFX1VOQVVUSEVOVElDQVRFRBACEiAKHEVSUk9SX0NPREVfUEVSTUlTU0lPTl9ERU5JRUQQAxIYChRFUlJPUl9DT0RFX05PVF9GT1VORBAEEiEKHUVSUk9SX0NPREVfTUlTU0lOR19BQ0NPVU5UX0lEEAUSIQodRVJST1JfQ09ERV9JTlZBTElEX0FDQ09VTlRfSUQQBhIdChlFUlJPUl9DT0RFX01JU1NJTkdfV0FMTEVUEAcSLAooRVJST1JfQ09ERV9XQUxMRVRfUkVTT0xVVElPTl9VTkFWQUlMQUJMRRAIEh8KG0VSUk9SX0NPREVfV0FMTEVUX05PVF9GT1VORBAJEh0KGUVSUk9SX0NPREVfVVBTVFJFQU1fRVJST1IQCjKIBAoRTGVkZ2VyUmVhZFNlcnZpY2USagoRR2V0QmFsYW5jZUhpc3RvcnkSKC5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QaKS5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlIgASeQoWR2V0RXF1aXR5SGlzdG9yeVNlcmllcxItLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0Gi4ubGVkZ2VyLnJlYWQudjEuR2V0RXF1aXR5SGlzdG9yeVNlcmllc1Jlc3BvbnNlIgASXgoNTGlzdFRyYW5zZmVycxIkLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXF1ZXN0GiUubGVkZ2VyLnJlYWQudjEuTGlzdFRyYW5zZmVyc1Jlc3BvbnNlIgASUgoJTGlzdEhvbGRzEiAubGVkZ2VyLnJlYWQudjEuTGlzdEhvbGRzUmVxdWVzdBohLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1Jlc3BvbnNlIgASWAoLR2V0QmFsYW5jZXMSIi5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1JlcXVlc3QaIy5sZWRnZXIucmVhZC52MS5HZXRCYWxhbmNlc1Jlc3BvbnNlIgBCR1pFZ2l0aHViLmNvbS9GYWJyaWMtTGFicy9wb2x5ZXN0ZXItc2RrLWdvL2dlbi9sZWRnZXIvcmVhZC92MTtsZWRnZXJyZHYxYgZwcm90bzM=\", [file_ledger_v1_catalog, 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 * 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, 8);\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: either account or asset, depending on request group_by.\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 } | { 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, 9);\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, 10);\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, 11);\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/**\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, 12);\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, 13);\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, 14);\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, 15);\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, 16);\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, 17);\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, 18);\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 * 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAa,kCACX,uBAAS,ghLAAghL,CAAC,wBAAwB,2BAA2B,CAAC;;;;;AAqBhlL,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;;;;;AA6ChD,MAAa,sCACX,0BAAY,iCAAiC,CAAC;;;;;AA6ChD,MAAa,qBACX,0BAAY,iCAAiC,CAAC;;;;;AAsEhD,MAAa,uCACX,0BAAY,iCAAiC,EAAE;;;;;AA0EjD,MAAa,6BACX,0BAAY,iCAAiC,EAAE;;;;;AAsCjD,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,oBAwDX,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 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/AQoMQXNzZXRCYWxhbmNlEhAKCGFzc2V0X2lkGAEgASgNEigKB3RyYWRpbmcYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EigKB2Z1bmRpbmcYAyABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EikKCHJlc2VydmVkGAQgASgLMhcucG9seWVzdGVyLnR5cGUudjEuVTEyOBIqCglhdmFpbGFibGUYBSABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhgKEHRyYWRpbmdfcmV2aXNpb24YBiABKAQSGAoQZnVuZGluZ19yZXZpc2lvbhgHIAEoBCJFChNHZXRCYWxhbmNlc1Jlc3BvbnNlEi4KCGJhbGFuY2VzGAEgAygLMhwubGVkZ2VyLnJlYWQudjEuQXNzZXRCYWxhbmNlIrYBChhHZXRCYWxhbmNlSGlzdG9yeVJlcXVlc3QSGgoNc3ViYWNjb3VudF9pZBgBIAEoBkgAiAEBEi0KBXJhbmdlGAIgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlQgASDgoGbGVkZ2VyGAMgASgNEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGVCEAoOX3N1YmFjY291bnRfaWQiYgoNQmFsYW5jZVNlcmllcxIQCghhc3NldF9pZBgBIAEoDRIsCgxhY2NvdW50X2NvZGUYAiABKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSEQoJYmFsYW5jZV9xGAMgAygEIsEBChlHZXRCYWxhbmNlSGlzdG9yeVJlc3BvbnNlEisKBXJhbmdlGAEgASgOMhwubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVJhbmdlEg4KBmJ1Y2tldBgCIAEoCRIUCgxzdGFydF90c19zZWMYAyABKAcSEgoKZW5kX3RzX3NlYxgEIAEoBxIOCgZwb2ludHMYBSABKA0SLQoGc2VyaWVzGAYgAygLMh0ubGVkZ2VyLnJlYWQudjEuQmFsYW5jZVNlcmllcyI1Cg9BY2NvdW50R3JvdXBpbmcSFAoMYWNjb3VudF9jb2RlGAEgASgNEgwKBG5hbWUYAiABKAkiKwoNQXNzZXRHcm91cGluZxIKCgJpZBgBIAEoDRIOCgZzeW1ib2wYAiABKAki3AEKHUdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXF1ZXN0EhoKDXN1YmFjY291bnRfaWQYASABKAZIAIgBARItCgVyYW5nZRgCIAEoDjIcLmxlZGdlci5yZWFkLnYxLkJhbGFuY2VSYW5nZUIAEi0KDWFjY291bnRfY29kZXMYBCADKA4yFi5sZWRnZXIudjEuQWNjb3VudENvZGUSLwoIZ3JvdXBfYnkYBSABKA4yHS5sZWRnZXIucmVhZC52MS5FcXVpdHlHcm91cEJ5QhAKDl9zdWJhY2NvdW50X2lkIpABCgxFcXVpdHlTZXJpZXMSMgoHYWNjb3VudBgBIAEoCzIfLmxlZGdlci5yZWFkLnYxLkFjY291bnRHcm91cGluZ0gAEi4KBWFzc2V0GAMgASgLMh0ubGVkZ2VyLnJlYWQudjEuQXNzZXRHcm91cGluZ0gAEhAKCGVxdWl0eV9xGAIgAygSQgoKCGdyb3VwaW5nIvABCh5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVzcG9uc2USKwoFcmFuZ2UYASABKA4yHC5sZWRnZXIucmVhZC52MS5CYWxhbmNlUmFuZ2USDgoGYnVja2V0GAIgASgJEhQKDHN0YXJ0X3RzX3NlYxgDIAEoBxISCgplbmRfdHNfc2VjGAQgASgHEhMKC3F1b3RlX2Fzc2V0GAYgASgJEg4KBnBvaW50cxgHIAEoDRIsCgZzZXJpZXMYCCADKAsyHC5sZWRnZXIucmVhZC52MS5FcXVpdHlTZXJpZXMSFAoMYnRjX3ByaWNlc19xGAogAygDIucBChRMaXN0VHJhbnNmZXJzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIRCgl0c19taW5fdXMYBCABKAQSEQoJdHNfbWF4X3VzGAUgASgEEjAKDXRyYW5zZmVyX2NvZGUYBiABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlQgASDgoGbGVkZ2VyGAcgASgNEhQKCnBhZ2VfdG9rZW4YCSABKAlCADoAQhAKDl9zdWJhY2NvdW50X2lkIpsBCgxUcmFuc2ZlclNpZGUSLgoEa2luZBgBIAEoDjIgLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZUtpbmQSFwoKYWNjb3VudF9pZBgCIAEoBkgAiAEBEg8KB2FkZHJlc3MYAyABKAkSFQoIY2hhaW5faWQYBCABKA1IAYgBAUINCgtfYWNjb3VudF9pZEILCglfY2hhaW5faWQiggMKC1RyYW5zZmVyUm93EhAKCGFzc2V0X2lkGAEgASgNEisKCmFtb3VudF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4Ei4KDXRyYW5zZmVyX2NvZGUYAyABKA4yFy5sZWRnZXIudjEuVHJhbnNmZXJDb2RlEiwKDGFjY291bnRfY29kZRgEIAEoDjIWLmxlZGdlci52MS5BY2NvdW50Q29kZRINCgV0c191cxgFIAEoBBIyChFiYWxhbmNlX2FmdGVyX2UxOBgJIAEoCzIXLnBvbHllc3Rlci50eXBlLnYxLlUxMjgSEAoIaXNfZGViaXQYCiABKAgSDwoHbGlua19pZBgLIAEoBBIPCgdmbG93X2lkGAwgASgJEiwKBnNvdXJjZRgNIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZRIxCgtkZXN0aW5hdGlvbhgOIAEoCzIcLmxlZGdlci5yZWFkLnYxLlRyYW5zZmVyU2lkZSJiChVMaXN0VHJhbnNmZXJzUmVzcG9uc2USLgoJdHJhbnNmZXJzGAEgAygLMhsubGVkZ2VyLnJlYWQudjEuVHJhbnNmZXJSb3cSGQoPbmV4dF9wYWdlX3Rva2VuGAMgASgJQgAieQoQTGlzdEhvbGRzUmVxdWVzdBIaCg1zdWJhY2NvdW50X2lkGAEgASgGSACIAQESDwoFbGltaXQYAiABKA1CABIQCghyZXZlcnNlZBgDIAEoCBIUCgpwYWdlX3Rva2VuGAQgASgJQgBCEAoOX3N1YmFjY291bnRfaWQieQoHSG9sZFJvdxIPCgdob2xkX2lkGAEgASgGEjQKE2Ftb3VudF9yZXNlcnZlZF9lMTgYAiABKAsyFy5wb2x5ZXN0ZXIudHlwZS52MS5VMTI4EhAKCGFzc2V0X2lkGAMgASgNEhUKDWV4cGlyZXNfYXRfbnMYBCABKAQiVgoRTGlzdEhvbGRzUmVzcG9uc2USJgoFaG9sZHMYASADKAsyFy5sZWRnZXIucmVhZC52MS5Ib2xkUm93EhkKD25leHRfcGFnZV90b2tlbhgCIAEoCUIAIjYKC0Vycm9yRGV0YWlsEicKBGNvZGUYASABKA4yGS5sZWRnZXIucmVhZC52MS5FcnJvckNvZGUqbQoMQmFsYW5jZVJhbmdlEhUKEVJBTkdFX1VOU1BFQ0lGSUVEEAASCQoFREFZXzEQARIJCgVEQVlfNxACEgoKBkRBWV8zMBADEgoKBkRBWV85MBAEEgsKB0RBWV8xODAQBRILCgdEQVlfMzY1EAYqUwoNRXF1aXR5R3JvdXBCeRIYChRHUk9VUF9CWV9VTlNQRUNJRklFRBAAEhQKEEdST1VQX0JZX0FDQ09VTlQQARISCg5HUk9VUF9CWV9BU1NFVBACKrUBChBUcmFuc2ZlclNpZGVLaW5kEiIKHlRSQU5TRkVSX1NJREVfS0lORF9VTlNQRUNJRklFRBAAEhMKD0ZVTkRJTkdfQUNDT1VOVBABEhMKD1RSQURJTkdfQUNDT1VOVBACEhQKEEVYVEVSTkFMX0FERFJFU1MQAxIYChRQUklWQVRFX0NPVU5URVJQQVJUWRAEEg8KC0ZFRV9BQ0NPVU5UEAUSEgoOU1lTVEVNX0FDQ09VTlQQBiryAgoJRXJyb3JDb2RlEhoKFkVSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIaChZFUlJPUl9DT0RFX0JBRF9SRVFVRVNUEAESHgoaRVJST1JfQ09ERV9VTkFVVEhFTlRJQ0FURUQQAhIgChxFUlJPUl9DT0RFX1BFUk1JU1NJT05fREVOSUVEEAMSGAoURVJST1JfQ09ERV9OT1RfRk9VTkQQBBIhCh1FUlJPUl9DT0RFX01JU1NJTkdfQUNDT1VOVF9JRBAFEiEKHUVSUk9SX0NPREVfSU5WQUxJRF9BQ0NPVU5UX0lEEAYSHQoZRVJST1JfQ09ERV9NSVNTSU5HX1dBTExFVBAHEiwKKEVSUk9SX0NPREVfV0FMTEVUX1JFU09MVVRJT05fVU5BVkFJTEFCTEUQCBIfChtFUlJPUl9DT0RFX1dBTExFVF9OT1RfRk9VTkQQCRIdChlFUlJPUl9DT0RFX1VQU1RSRUFNX0VSUk9SEAoyiAQKEUxlZGdlclJlYWRTZXJ2aWNlEmoKEUdldEJhbGFuY2VIaXN0b3J5EigubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXF1ZXN0GikubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZUhpc3RvcnlSZXNwb25zZSIAEnkKFkdldEVxdWl0eUhpc3RvcnlTZXJpZXMSLS5sZWRnZXIucmVhZC52MS5HZXRFcXVpdHlIaXN0b3J5U2VyaWVzUmVxdWVzdBouLmxlZGdlci5yZWFkLnYxLkdldEVxdWl0eUhpc3RvcnlTZXJpZXNSZXNwb25zZSIAEl4KDUxpc3RUcmFuc2ZlcnMSJC5sZWRnZXIucmVhZC52MS5MaXN0VHJhbnNmZXJzUmVxdWVzdBolLmxlZGdlci5yZWFkLnYxLkxpc3RUcmFuc2ZlcnNSZXNwb25zZSIAElIKCUxpc3RIb2xkcxIgLmxlZGdlci5yZWFkLnYxLkxpc3RIb2xkc1JlcXVlc3QaIS5sZWRnZXIucmVhZC52MS5MaXN0SG9sZHNSZXNwb25zZSIAElgKC0dldEJhbGFuY2VzEiIubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXF1ZXN0GiMubGVkZ2VyLnJlYWQudjEuR2V0QmFsYW5jZXNSZXNwb25zZSIAQkdaRWdpdGh1Yi5jb20vRmFicmljLUxhYnMvcG9seWVzdGVyLXNkay1nby9nZW4vbGVkZ2VyL3JlYWQvdjE7bGVkZ2VycmR2MWIGcHJvdG8z\", [file_ledger_v1_catalog, 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 * 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, 8);\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: either account or asset, depending on request group_by.\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 } | { 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, 9);\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, 10);\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, 11);\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, 12);\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, 13);\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, 14);\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, 15);\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, 16);\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, 17);\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, 18);\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 * 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":"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"}
@@ -28,7 +28,7 @@ declare const CreateAddressBookEntryInputSchema: v.SchemaWithPipe<readonly [v.St
28
28
  readonly note: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, "">;
29
29
  readonly entry: v.VariantSchema<"kind", [v.StrictObjectSchema<{
30
30
  readonly kind: v.LiteralSchema<"external", undefined>;
31
- readonly polychainChainId: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>]>;
31
+ readonly polychainChainId: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>;
32
32
  readonly address: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
33
33
  }, undefined>, v.StrictObjectSchema<{
34
34
  readonly kind: v.LiteralSchema<"internal", undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"address-book.schemas.d.ts","names":[],"sources":["../../../src/services/address-book/address-book.schemas.ts"],"mappings":"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"}
1
+ {"version":3,"file":"address-book.schemas.d.ts","names":[],"sources":["../../../src/services/address-book/address-book.schemas.ts"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { requiredEnumLabel } from "../../shared/proto-enum-codec.js";
2
2
  import { BigIntStringSchema, OptionalTimestampMsSchema, PublicIdSchema, TimestampMsSchema as TimestampMsSchema$1, idInputSchema, optionalSubaccountIdInputSchema, positiveBigintStringInputSchema } from "../../shared/schemas.js";
3
3
  import { parse } from "../../shared/validation.js";
4
+ import { PositiveUint32InputSchema } from "../shared.js";
4
5
  import { buildProtoPatch, defineProtoPatchFields } from "../../utils/proto-patch.js";
5
6
  import { AccountScopeInputEntries, accountScopeToSubaccountId } from "../../shared/account-scope.js";
6
7
  import { SubaccountRole } from "../../gen/auth/v1/subaccounts_pb.js";
@@ -38,7 +39,7 @@ const CreateAddressBookEntryInputSchema = v.pipe(v.strictObject({
38
39
  note: v.optional(v.pipe(v.string(), v.trim()), ""),
39
40
  entry: v.variant("kind", [v.strictObject({
40
41
  kind: v.literal("external"),
41
- polychainChainId: v.pipe(v.number(), v.integer(), v.gtValue(0)),
42
+ polychainChainId: PositiveUint32InputSchema,
42
43
  address: v.pipe(v.string(), v.trim(), v.minLength(1))
43
44
  }), v.strictObject({
44
45
  kind: v.literal("internal"),
@@ -1 +1 @@
1
- {"version":3,"file":"address-book.schemas.js","names":["Proto.AccountScopeType","Proto.DestinationWhitelistStatus","Proto.AddressBookEntryKind","Proto.TransferCounterpartyDirection","Proto.InternalWhitelistResolutionStatus","RequiredTimestampMsSchema"],"sources":["../../../src/services/address-book/address-book.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport * as Proto from \"../../gen/auth/v1/address_book_pb.js\";\nimport { SubaccountRole } from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport {\n OptionalTimestampMsSchema,\n BigIntStringSchema,\n PublicIdSchema,\n TimestampMsSchema as RequiredTimestampMsSchema,\n idInputSchema,\n optionalSubaccountIdInputSchema,\n positiveBigintStringInputSchema,\n} from \"../../shared/schemas.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport {\n ADDRESS_BOOK_ENTRY_KIND_VALUES,\n AccountScopeTypeCodec,\n AddressBookEntryKindCodec,\n DestinationWhitelistStatusCodec,\n InternalWhitelistResolutionStatusCodec,\n TRANSFER_COUNTERPARTY_DIRECTION_VALUES,\n TransferCounterpartyDirectionCodec,\n} from \"./address-book.codecs.js\";\nimport { SubaccountRoleCodec } from \"../subaccounts/subaccounts.codecs.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../utils/proto-patch.js\";\n\nconst OptionalSubaccountIdSchema = optionalSubaccountIdInputSchema();\nconst IdSchema = idInputSchema;\n\nconst AddressBookLimitSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(500)),\n);\nconst AddressBookCounterpartyLimitSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(200)),\n);\nconst AddressBookViewLimitSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(200)),\n);\nconst PageTokenSchema = v.optional(v.pipe(v.string(), v.trim()), \"\");\n\nconst TimestampMsSchema = OptionalTimestampMsSchema;\n\nconst AddressBookTagInputSchema = v.strictObject({\n name: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(48)),\n color: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(32)), \"\"),\n});\nconst AddressBookTagInputsSchema = v.pipe(v.array(AddressBookTagInputSchema), v.maxLength(10));\n\nexport const ListAddressBookEntriesInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n kind: v.optional(v.picklist(ADDRESS_BOOK_ENTRY_KIND_VALUES)),\n limit: AddressBookLimitSchema,\n pageToken: PageTokenSchema,\n }),\n v.transform(({ account, kind, limit, pageToken }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n kind: kind ? AddressBookEntryKindCodec.inputToProto[kind] : undefined,\n limit,\n pageToken,\n })),\n);\n\nexport type ListAddressBookEntriesInput = v.InferInput<typeof ListAddressBookEntriesInputSchema>;\n\nexport const CreateAddressBookEntryInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n label: v.pipe(v.string(), v.trim(), v.minLength(1)),\n note: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n entry: v.variant(\"kind\", [\n v.strictObject({\n kind: v.literal(\"external\"),\n polychainChainId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n address: v.pipe(v.string(), v.trim(), v.minLength(1)),\n }),\n v.strictObject({\n kind: v.literal(\"internal\"),\n smartAccountAddress: v.pipe(v.string(), v.trim(), v.minLength(1)),\n }),\n ]),\n tagIds: v.optional(v.array(IdSchema(\"tagId\")), []),\n newTags: v.optional(AddressBookTagInputsSchema, []),\n }),\n v.transform(({ account, entry, ...rest }) => ({\n ...rest,\n subaccountId: accountScopeToSubaccountId(account),\n entry:\n entry.kind === \"external\"\n ? {\n case: \"external\" as const,\n value: {\n polychainChainId: entry.polychainChainId,\n address: entry.address,\n },\n }\n : {\n case: \"internal\" as const,\n value: {\n smartAccountAddress: entry.smartAccountAddress,\n },\n },\n })),\n);\n\nexport type CreateAddressBookEntryInput = v.InferInput<typeof CreateAddressBookEntryInputSchema>;\n\nexport function validateCreateAddressBookEntryInput(input: CreateAddressBookEntryInput): void {\n parse(CreateAddressBookEntryInputSchema, input);\n}\n\ntype AddressBookEntryPatch = {\n label?: string;\n note?: string;\n tagIds?: bigint[];\n newTags?: v.InferOutput<typeof AddressBookTagInputSchema>[];\n};\n\nconst ADDRESS_BOOK_ENTRY_PATCH_FIELDS = defineProtoPatchFields<AddressBookEntryPatch>()({\n label: { path: \"label\", encode: (label) => ({ label }) },\n note: { path: \"note\", encode: (note) => ({ note }) },\n tagIds: { path: \"tag_ids\", encode: (tagIds) => ({ tagIds }) },\n newTags: { path: \"new_tags\", encode: (newTags) => ({ newTags }) },\n});\n\nexport const UpdateAddressBookEntryInputSchema = v.pipe(\n v.strictObject({\n addressBookEntryId: IdSchema(\"addressBookEntryId\"),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n label: v.optional(v.pipe(v.string(), v.trim())),\n note: v.optional(v.pipe(v.string(), v.trim())),\n tagIds: v.optional(v.array(IdSchema(\"tagId\"))),\n newTags: v.optional(AddressBookTagInputsSchema),\n }),\n v.check(\n ({ label, note, tagIds, newTags }) =>\n label !== undefined ||\n note !== undefined ||\n tagIds !== undefined ||\n newTags !== undefined,\n \"At least one address-book entry field must be provided\",\n ),\n v.transform(({ addressBookEntryId, expectedRevision, ...input }) => {\n const { patch: entry, updateMask } = buildProtoPatch(\n input,\n ADDRESS_BOOK_ENTRY_PATCH_FIELDS,\n );\n return { addressBookEntryId, entry, updateMask, expectedRevision };\n }),\n);\n\nexport type UpdateAddressBookEntryInput = v.InferInput<typeof UpdateAddressBookEntryInputSchema>;\n\nexport const DeleteAddressBookEntryInputSchema = v.strictObject({\n addressBookEntryId: IdSchema(\"addressBookEntryId\"),\n});\n\nexport type DeleteAddressBookEntryInput = v.InferInput<typeof DeleteAddressBookEntryInputSchema>;\n\nexport const CopyAddressBookEntryInputSchema = v.strictObject({\n addressBookEntryId: IdSchema(\"addressBookEntryId\"),\n targetSubaccountId: OptionalSubaccountIdSchema,\n});\n\nexport type CopyAddressBookEntryInput = v.InferInput<typeof CopyAddressBookEntryInputSchema>;\n\nexport const CreateAddressBookTagInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n name: v.pipe(v.string(), v.trim(), v.minLength(1)),\n color: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform(({ account, ...input }) => ({\n ...input,\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type CreateAddressBookTagInput = v.InferInput<typeof CreateAddressBookTagInputSchema>;\n\nexport const UpdateAddressBookTagInputSchema = v.pipe(\n v.strictObject({\n tagId: IdSchema(\"tagId\"),\n name: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),\n color: v.optional(v.pipe(v.string(), v.trim())),\n }),\n v.check(\n ({ name, color }) => name !== undefined || color !== undefined,\n \"At least one address-book tag field must be provided\",\n ),\n);\n\nexport type UpdateAddressBookTagInput = v.InferInput<typeof UpdateAddressBookTagInputSchema>;\n\nexport const DeleteAddressBookTagInputSchema = v.strictObject({\n tagId: IdSchema(\"tagId\"),\n});\n\nexport type DeleteAddressBookTagInput = v.InferInput<typeof DeleteAddressBookTagInputSchema>;\n\nexport const ListTransferCounterpartiesInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n direction: v.optional(v.picklist(TRANSFER_COUNTERPARTY_DIRECTION_VALUES)),\n kind: v.optional(v.picklist(ADDRESS_BOOK_ENTRY_KIND_VALUES)),\n limit: AddressBookCounterpartyLimitSchema,\n }),\n v.transform(({ account, direction, kind, limit }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n direction: direction\n ? TransferCounterpartyDirectionCodec.inputToProto[direction]\n : undefined,\n kind: kind ? AddressBookEntryKindCodec.inputToProto[kind] : undefined,\n limit,\n })),\n);\n\nexport type ListTransferCounterpartiesInput = v.InferInput<\n typeof ListTransferCounterpartiesInputSchema\n>;\n\nexport const ListTransferDestinationsInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n kind: v.optional(v.picklist(ADDRESS_BOOK_ENTRY_KIND_VALUES)),\n limit: AddressBookLimitSchema,\n pageToken: PageTokenSchema,\n }),\n v.transform(({ account, kind, limit, pageToken }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n kind: kind ? AddressBookEntryKindCodec.inputToProto[kind] : undefined,\n limit,\n pageToken,\n })),\n);\n\nexport type ListTransferDestinationsInput = v.InferInput<\n typeof ListTransferDestinationsInputSchema\n>;\n\nexport const SubaccountScopedInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n }),\n v.transform(({ account }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type SubaccountScopedInput = v.InferInput<typeof SubaccountScopedInputSchema>;\n\nexport const ListInternalTransferWhitelistEntriesInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n limit: AddressBookLimitSchema,\n pageToken: PageTokenSchema,\n }),\n v.transform(({ account, limit, pageToken }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n limit,\n pageToken,\n })),\n);\n\nexport type ListInternalTransferWhitelistEntriesInput = v.InferInput<\n typeof ListInternalTransferWhitelistEntriesInputSchema\n>;\n\nexport const GetAddressBookViewInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n limit: AddressBookViewLimitSchema,\n /** Minimum `viewRevision` (from an invalidation event) the returned view must reach. */\n minimumViewRevision: v.optional(positiveBigintStringInputSchema(\"minimumViewRevision\")),\n }),\n v.transform(({ account, limit, minimumViewRevision }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n limit,\n minimumViewRevision,\n })),\n);\n\nexport type GetAddressBookViewInput = v.InferInput<typeof GetAddressBookViewInputSchema>;\n\nconst CountSchema = v.pipe(\n v.bigint(),\n v.transform((value) => Number(value)),\n);\n\nconst AccountScopeSchema = v.object({\n scopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.AccountScopeSchema\",\n \"scope type\",\n ),\n ),\n ),\n rootAccountId: PublicIdSchema,\n subaccountId: PublicIdSchema,\n});\n\nconst ExternalWithdrawAddressSchema = v.object({\n polychainChainId: v.pipe(v.number(), v.integer()),\n address: v.string(),\n});\n\nconst InternalTransferAccountSchema = v.object({\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.InternalTransferAccountSchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n});\n\nconst AddressBookEntryValueSchema = v.variant(\"case\", [\n v.object({ case: v.literal(\"external\"), value: ExternalWithdrawAddressSchema }),\n v.object({ case: v.literal(\"internal\"), value: InternalTransferAccountSchema }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nconst DestinationWhitelistStatusSchema = v.pipe(\n v.enum(Proto.DestinationWhitelistStatus),\n v.transform((value) =>\n requiredEnumLabel(\n DestinationWhitelistStatusCodec.protoToOutput,\n value,\n \"PolyesterClient.DestinationWhitelistStatusSchema\",\n \"whitelist status\",\n ),\n ),\n);\n\nconst AddressBookEntryKindSchema = v.pipe(\n v.enum(Proto.AddressBookEntryKind),\n v.transform((value) =>\n requiredEnumLabel(\n AddressBookEntryKindCodec.protoToOutput,\n value,\n \"PolyesterClient.AddressBookEntryKindSchema\",\n \"entry kind\",\n ),\n ),\n);\n\nconst TransferCounterpartyDirectionSchema = v.pipe(\n v.enum(Proto.TransferCounterpartyDirection),\n v.transform((value) =>\n requiredEnumLabel(\n TransferCounterpartyDirectionCodec.protoToOutput,\n value,\n \"PolyesterClient.TransferCounterpartyDirectionSchema\",\n \"direction\",\n ),\n ),\n);\n\nexport const AddressBookSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n callerRole: v.pipe(\n v.enum(SubaccountRole),\n v.transform((role) =>\n requiredEnumLabel(\n SubaccountRoleCodec.protoToOutput,\n role,\n \"AddressBookEntrySchema\",\n \"caller role\",\n ),\n ),\n ),\n label: v.string(),\n ownerUsername: v.string(),\n smartAccountAddress: v.string(),\n});\n\nexport type AddressBook = v.InferOutput<typeof AddressBookSchema>;\n\nexport const AddressBookTagSummarySchema = v.object({\n tagId: PublicIdSchema,\n name: v.string(),\n color: v.string(),\n});\n\nexport type AddressBookTagSummary = v.InferOutput<typeof AddressBookTagSummarySchema>;\n\nexport const AddressBookTagSchema = v.object({\n tagId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n name: v.string(),\n color: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n});\n\nexport type AddressBookTag = v.InferOutput<typeof AddressBookTagSchema>;\n\nexport const AddressBookEntrySchema = v.object({\n addressBookEntryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n kind: AddressBookEntryKindSchema,\n label: v.string(),\n note: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n entry: AddressBookEntryValueSchema,\n tags: v.array(AddressBookTagSchema),\n revision: BigIntStringSchema,\n});\n\nexport type AddressBookEntry = v.InferOutput<typeof AddressBookEntrySchema>;\n\nexport const AddressBookEntriesSchema = v.array(AddressBookEntrySchema);\nexport type AddressBookEntries = v.InferOutput<typeof AddressBookEntriesSchema>;\n\nexport const TransferCounterpartySchema = v.object({\n counterpartyId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n direction: TransferCounterpartyDirectionSchema,\n kind: AddressBookEntryKindSchema,\n saved: v.boolean(),\n addressBookEntryId: PublicIdSchema,\n useCount: CountSchema,\n firstSeenAt: TimestampMsSchema,\n lastSeenAt: TimestampMsSchema,\n counterparty: AddressBookEntryValueSchema,\n});\n\nexport type TransferCounterparty = v.InferOutput<typeof TransferCounterpartySchema>;\n\nexport const TransferCounterpartiesSchema = v.array(TransferCounterpartySchema);\nexport type TransferCounterparties = v.InferOutput<typeof TransferCounterpartiesSchema>;\n\nexport const TransferDestinationSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n kind: AddressBookEntryKindSchema,\n saved: v.boolean(),\n whitelisted: v.boolean(),\n whitelistStatus: DestinationWhitelistStatusSchema,\n addressBookEntry: v.optional(AddressBookEntrySchema),\n destination: AddressBookEntryValueSchema,\n whitelistEffectiveAt: TimestampMsSchema,\n whitelistUpdatedAt: TimestampMsSchema,\n});\n\nexport type TransferDestination = v.InferOutput<typeof TransferDestinationSchema>;\n\nexport const TransferDestinationsSchema = v.array(TransferDestinationSchema);\nexport type TransferDestinations = v.InferOutput<typeof TransferDestinationsSchema>;\n\nexport const InternalTransferWhitelistEntrySchema = v.object({\n entryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.InternalTransferWhitelistEntrySchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n resolutionStatus: v.pipe(\n v.enum(Proto.InternalWhitelistResolutionStatus),\n v.transform((value) =>\n requiredEnumLabel(\n InternalWhitelistResolutionStatusCodec.protoToOutput,\n value,\n \"PolyesterClient.InternalTransferWhitelistEntrySchema\",\n \"resolution status\",\n ),\n ),\n ),\n});\n\nexport type InternalTransferWhitelistEntry = v.InferOutput<\n typeof InternalTransferWhitelistEntrySchema\n>;\n\nexport const InternalTransferWhitelistEntriesSchema = v.array(InternalTransferWhitelistEntrySchema);\n\nexport type InternalTransferWhitelistEntries = v.InferOutput<\n typeof InternalTransferWhitelistEntriesSchema\n>;\n\nexport const MirroredWithdrawWhitelistEntrySchema = v.object({\n canonicalAddress: v.string(),\n rawAddressHex: v.string(),\n updatedAt: TimestampMsSchema,\n polychainChainId: v.pipe(v.number(), v.integer()),\n});\n\nexport type MirroredWithdrawWhitelistEntry = v.InferOutput<\n typeof MirroredWithdrawWhitelistEntrySchema\n>;\n\nexport const WithdrawWhitelistViewSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n externalWhitelistRequired: v.boolean(),\n internalWhitelistRequired: v.boolean(),\n activeEntries: v.optional(v.array(MirroredWithdrawWhitelistEntrySchema), []),\n});\n\nexport type WithdrawWhitelistView = v.InferOutput<typeof WithdrawWhitelistViewSchema>;\n\nexport const AddressBookEntriesViewSchema = v.object({\n external: v.optional(\n v.array(\n v.object({\n addressBookEntryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n label: v.string(),\n note: v.string(),\n tagIds: v.optional(v.array(PublicIdSchema), []),\n whitelistStatus: DestinationWhitelistStatusSchema,\n polychainChainId: v.pipe(v.number(), v.integer()),\n address: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n revision: BigIntStringSchema,\n }),\n ),\n [],\n ),\n internal: v.optional(\n v.array(\n v.object({\n addressBookEntryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n label: v.string(),\n note: v.string(),\n tagIds: v.optional(v.array(PublicIdSchema), []),\n whitelistStatus: DestinationWhitelistStatusSchema,\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.AddressBookEntriesViewSchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n revision: BigIntStringSchema,\n }),\n ),\n [],\n ),\n});\n\nexport type AddressBookEntriesView = v.InferOutput<typeof AddressBookEntriesViewSchema>;\n\nexport const AddressBookRecentDestinationsViewSchema = v.object({\n external: v.optional(\n v.array(\n v.object({\n scope: v.optional(AccountScopeSchema),\n lastDirection: TransferCounterpartyDirectionSchema,\n saved: v.boolean(),\n addressBookEntryId: PublicIdSchema,\n useCount: CountSchema,\n lastSeenAt: TimestampMsSchema,\n polychainChainId: v.pipe(v.number(), v.integer()),\n address: v.string(),\n }),\n ),\n [],\n ),\n internal: v.optional(\n v.array(\n v.object({\n scope: v.optional(AccountScopeSchema),\n lastDirection: TransferCounterpartyDirectionSchema,\n saved: v.boolean(),\n addressBookEntryId: PublicIdSchema,\n useCount: CountSchema,\n lastSeenAt: TimestampMsSchema,\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.AddressBookRecentDestinationsViewSchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n }),\n ),\n [],\n ),\n});\n\nexport type AddressBookRecentDestinationsView = v.InferOutput<\n typeof AddressBookRecentDestinationsViewSchema\n>;\n\nexport const AddressBookViewSchema = v.object({\n books: v.optional(v.array(AddressBookSchema), []),\n entries: v.optional(AddressBookEntriesViewSchema),\n recentDestinations: v.optional(AddressBookRecentDestinationsViewSchema),\n tags: v.optional(v.array(AddressBookTagSummarySchema), []),\n withdrawWhitelist: v.optional(WithdrawWhitelistViewSchema),\n recentDestinationsTruncated: v.optional(v.boolean(), false),\n viewRevision: v.optional(BigIntStringSchema, 0n),\n});\n\nexport type AddressBookView = v.InferOutput<typeof AddressBookViewSchema>;\n\nexport const AddressBookViewInvalidatedSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n invalidatedAt: RequiredTimestampMsSchema,\n viewRevision: v.optional(BigIntStringSchema, 0n),\n});\n\nexport type AddressBookViewInvalidated = v.InferOutput<typeof AddressBookViewInvalidatedSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"address-book.schemas.js","names":["Proto.AccountScopeType","Proto.DestinationWhitelistStatus","Proto.AddressBookEntryKind","Proto.TransferCounterpartyDirection","Proto.InternalWhitelistResolutionStatus","RequiredTimestampMsSchema"],"sources":["../../../src/services/address-book/address-book.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { PositiveUint32InputSchema } from \"../shared.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport * as Proto from \"../../gen/auth/v1/address_book_pb.js\";\nimport { SubaccountRole } from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport {\n OptionalTimestampMsSchema,\n BigIntStringSchema,\n PublicIdSchema,\n TimestampMsSchema as RequiredTimestampMsSchema,\n idInputSchema,\n optionalSubaccountIdInputSchema,\n positiveBigintStringInputSchema,\n} from \"../../shared/schemas.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport {\n ADDRESS_BOOK_ENTRY_KIND_VALUES,\n AccountScopeTypeCodec,\n AddressBookEntryKindCodec,\n DestinationWhitelistStatusCodec,\n InternalWhitelistResolutionStatusCodec,\n TRANSFER_COUNTERPARTY_DIRECTION_VALUES,\n TransferCounterpartyDirectionCodec,\n} from \"./address-book.codecs.js\";\nimport { SubaccountRoleCodec } from \"../subaccounts/subaccounts.codecs.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../utils/proto-patch.js\";\n\nconst OptionalSubaccountIdSchema = optionalSubaccountIdInputSchema();\nconst IdSchema = idInputSchema;\n\nconst AddressBookLimitSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(500)),\n);\nconst AddressBookCounterpartyLimitSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(200)),\n);\nconst AddressBookViewLimitSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(200)),\n);\nconst PageTokenSchema = v.optional(v.pipe(v.string(), v.trim()), \"\");\n\nconst TimestampMsSchema = OptionalTimestampMsSchema;\n\nconst AddressBookTagInputSchema = v.strictObject({\n name: v.pipe(v.string(), v.trim(), v.minLength(1), v.maxLength(48)),\n color: v.optional(v.pipe(v.string(), v.trim(), v.maxLength(32)), \"\"),\n});\nconst AddressBookTagInputsSchema = v.pipe(v.array(AddressBookTagInputSchema), v.maxLength(10));\n\nexport const ListAddressBookEntriesInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n kind: v.optional(v.picklist(ADDRESS_BOOK_ENTRY_KIND_VALUES)),\n limit: AddressBookLimitSchema,\n pageToken: PageTokenSchema,\n }),\n v.transform(({ account, kind, limit, pageToken }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n kind: kind ? AddressBookEntryKindCodec.inputToProto[kind] : undefined,\n limit,\n pageToken,\n })),\n);\n\nexport type ListAddressBookEntriesInput = v.InferInput<typeof ListAddressBookEntriesInputSchema>;\n\nexport const CreateAddressBookEntryInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n label: v.pipe(v.string(), v.trim(), v.minLength(1)),\n note: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n entry: v.variant(\"kind\", [\n v.strictObject({\n kind: v.literal(\"external\"),\n polychainChainId: PositiveUint32InputSchema,\n address: v.pipe(v.string(), v.trim(), v.minLength(1)),\n }),\n v.strictObject({\n kind: v.literal(\"internal\"),\n smartAccountAddress: v.pipe(v.string(), v.trim(), v.minLength(1)),\n }),\n ]),\n tagIds: v.optional(v.array(IdSchema(\"tagId\")), []),\n newTags: v.optional(AddressBookTagInputsSchema, []),\n }),\n v.transform(({ account, entry, ...rest }) => ({\n ...rest,\n subaccountId: accountScopeToSubaccountId(account),\n entry:\n entry.kind === \"external\"\n ? {\n case: \"external\" as const,\n value: {\n polychainChainId: entry.polychainChainId,\n address: entry.address,\n },\n }\n : {\n case: \"internal\" as const,\n value: {\n smartAccountAddress: entry.smartAccountAddress,\n },\n },\n })),\n);\n\nexport type CreateAddressBookEntryInput = v.InferInput<typeof CreateAddressBookEntryInputSchema>;\n\nexport function validateCreateAddressBookEntryInput(input: CreateAddressBookEntryInput): void {\n parse(CreateAddressBookEntryInputSchema, input);\n}\n\ntype AddressBookEntryPatch = {\n label?: string;\n note?: string;\n tagIds?: bigint[];\n newTags?: v.InferOutput<typeof AddressBookTagInputSchema>[];\n};\n\nconst ADDRESS_BOOK_ENTRY_PATCH_FIELDS = defineProtoPatchFields<AddressBookEntryPatch>()({\n label: { path: \"label\", encode: (label) => ({ label }) },\n note: { path: \"note\", encode: (note) => ({ note }) },\n tagIds: { path: \"tag_ids\", encode: (tagIds) => ({ tagIds }) },\n newTags: { path: \"new_tags\", encode: (newTags) => ({ newTags }) },\n});\n\nexport const UpdateAddressBookEntryInputSchema = v.pipe(\n v.strictObject({\n addressBookEntryId: IdSchema(\"addressBookEntryId\"),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n label: v.optional(v.pipe(v.string(), v.trim())),\n note: v.optional(v.pipe(v.string(), v.trim())),\n tagIds: v.optional(v.array(IdSchema(\"tagId\"))),\n newTags: v.optional(AddressBookTagInputsSchema),\n }),\n v.check(\n ({ label, note, tagIds, newTags }) =>\n label !== undefined ||\n note !== undefined ||\n tagIds !== undefined ||\n newTags !== undefined,\n \"At least one address-book entry field must be provided\",\n ),\n v.transform(({ addressBookEntryId, expectedRevision, ...input }) => {\n const { patch: entry, updateMask } = buildProtoPatch(\n input,\n ADDRESS_BOOK_ENTRY_PATCH_FIELDS,\n );\n return { addressBookEntryId, entry, updateMask, expectedRevision };\n }),\n);\n\nexport type UpdateAddressBookEntryInput = v.InferInput<typeof UpdateAddressBookEntryInputSchema>;\n\nexport const DeleteAddressBookEntryInputSchema = v.strictObject({\n addressBookEntryId: IdSchema(\"addressBookEntryId\"),\n});\n\nexport type DeleteAddressBookEntryInput = v.InferInput<typeof DeleteAddressBookEntryInputSchema>;\n\nexport const CopyAddressBookEntryInputSchema = v.strictObject({\n addressBookEntryId: IdSchema(\"addressBookEntryId\"),\n targetSubaccountId: OptionalSubaccountIdSchema,\n});\n\nexport type CopyAddressBookEntryInput = v.InferInput<typeof CopyAddressBookEntryInputSchema>;\n\nexport const CreateAddressBookTagInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n name: v.pipe(v.string(), v.trim(), v.minLength(1)),\n color: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform(({ account, ...input }) => ({\n ...input,\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type CreateAddressBookTagInput = v.InferInput<typeof CreateAddressBookTagInputSchema>;\n\nexport const UpdateAddressBookTagInputSchema = v.pipe(\n v.strictObject({\n tagId: IdSchema(\"tagId\"),\n name: v.optional(v.pipe(v.string(), v.trim(), v.minLength(1))),\n color: v.optional(v.pipe(v.string(), v.trim())),\n }),\n v.check(\n ({ name, color }) => name !== undefined || color !== undefined,\n \"At least one address-book tag field must be provided\",\n ),\n);\n\nexport type UpdateAddressBookTagInput = v.InferInput<typeof UpdateAddressBookTagInputSchema>;\n\nexport const DeleteAddressBookTagInputSchema = v.strictObject({\n tagId: IdSchema(\"tagId\"),\n});\n\nexport type DeleteAddressBookTagInput = v.InferInput<typeof DeleteAddressBookTagInputSchema>;\n\nexport const ListTransferCounterpartiesInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n direction: v.optional(v.picklist(TRANSFER_COUNTERPARTY_DIRECTION_VALUES)),\n kind: v.optional(v.picklist(ADDRESS_BOOK_ENTRY_KIND_VALUES)),\n limit: AddressBookCounterpartyLimitSchema,\n }),\n v.transform(({ account, direction, kind, limit }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n direction: direction\n ? TransferCounterpartyDirectionCodec.inputToProto[direction]\n : undefined,\n kind: kind ? AddressBookEntryKindCodec.inputToProto[kind] : undefined,\n limit,\n })),\n);\n\nexport type ListTransferCounterpartiesInput = v.InferInput<\n typeof ListTransferCounterpartiesInputSchema\n>;\n\nexport const ListTransferDestinationsInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n kind: v.optional(v.picklist(ADDRESS_BOOK_ENTRY_KIND_VALUES)),\n limit: AddressBookLimitSchema,\n pageToken: PageTokenSchema,\n }),\n v.transform(({ account, kind, limit, pageToken }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n kind: kind ? AddressBookEntryKindCodec.inputToProto[kind] : undefined,\n limit,\n pageToken,\n })),\n);\n\nexport type ListTransferDestinationsInput = v.InferInput<\n typeof ListTransferDestinationsInputSchema\n>;\n\nexport const SubaccountScopedInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n }),\n v.transform(({ account }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type SubaccountScopedInput = v.InferInput<typeof SubaccountScopedInputSchema>;\n\nexport const ListInternalTransferWhitelistEntriesInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n limit: AddressBookLimitSchema,\n pageToken: PageTokenSchema,\n }),\n v.transform(({ account, limit, pageToken }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n limit,\n pageToken,\n })),\n);\n\nexport type ListInternalTransferWhitelistEntriesInput = v.InferInput<\n typeof ListInternalTransferWhitelistEntriesInputSchema\n>;\n\nexport const GetAddressBookViewInputSchema = v.pipe(\n v.strictObject({\n ...AccountScopeInputEntries,\n limit: AddressBookViewLimitSchema,\n /** Minimum `viewRevision` (from an invalidation event) the returned view must reach. */\n minimumViewRevision: v.optional(positiveBigintStringInputSchema(\"minimumViewRevision\")),\n }),\n v.transform(({ account, limit, minimumViewRevision }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n limit,\n minimumViewRevision,\n })),\n);\n\nexport type GetAddressBookViewInput = v.InferInput<typeof GetAddressBookViewInputSchema>;\n\nconst CountSchema = v.pipe(\n v.bigint(),\n v.transform((value) => Number(value)),\n);\n\nconst AccountScopeSchema = v.object({\n scopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.AccountScopeSchema\",\n \"scope type\",\n ),\n ),\n ),\n rootAccountId: PublicIdSchema,\n subaccountId: PublicIdSchema,\n});\n\nconst ExternalWithdrawAddressSchema = v.object({\n polychainChainId: v.pipe(v.number(), v.integer()),\n address: v.string(),\n});\n\nconst InternalTransferAccountSchema = v.object({\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.InternalTransferAccountSchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n});\n\nconst AddressBookEntryValueSchema = v.variant(\"case\", [\n v.object({ case: v.literal(\"external\"), value: ExternalWithdrawAddressSchema }),\n v.object({ case: v.literal(\"internal\"), value: InternalTransferAccountSchema }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nconst DestinationWhitelistStatusSchema = v.pipe(\n v.enum(Proto.DestinationWhitelistStatus),\n v.transform((value) =>\n requiredEnumLabel(\n DestinationWhitelistStatusCodec.protoToOutput,\n value,\n \"PolyesterClient.DestinationWhitelistStatusSchema\",\n \"whitelist status\",\n ),\n ),\n);\n\nconst AddressBookEntryKindSchema = v.pipe(\n v.enum(Proto.AddressBookEntryKind),\n v.transform((value) =>\n requiredEnumLabel(\n AddressBookEntryKindCodec.protoToOutput,\n value,\n \"PolyesterClient.AddressBookEntryKindSchema\",\n \"entry kind\",\n ),\n ),\n);\n\nconst TransferCounterpartyDirectionSchema = v.pipe(\n v.enum(Proto.TransferCounterpartyDirection),\n v.transform((value) =>\n requiredEnumLabel(\n TransferCounterpartyDirectionCodec.protoToOutput,\n value,\n \"PolyesterClient.TransferCounterpartyDirectionSchema\",\n \"direction\",\n ),\n ),\n);\n\nexport const AddressBookSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n callerRole: v.pipe(\n v.enum(SubaccountRole),\n v.transform((role) =>\n requiredEnumLabel(\n SubaccountRoleCodec.protoToOutput,\n role,\n \"AddressBookEntrySchema\",\n \"caller role\",\n ),\n ),\n ),\n label: v.string(),\n ownerUsername: v.string(),\n smartAccountAddress: v.string(),\n});\n\nexport type AddressBook = v.InferOutput<typeof AddressBookSchema>;\n\nexport const AddressBookTagSummarySchema = v.object({\n tagId: PublicIdSchema,\n name: v.string(),\n color: v.string(),\n});\n\nexport type AddressBookTagSummary = v.InferOutput<typeof AddressBookTagSummarySchema>;\n\nexport const AddressBookTagSchema = v.object({\n tagId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n name: v.string(),\n color: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n});\n\nexport type AddressBookTag = v.InferOutput<typeof AddressBookTagSchema>;\n\nexport const AddressBookEntrySchema = v.object({\n addressBookEntryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n kind: AddressBookEntryKindSchema,\n label: v.string(),\n note: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n entry: AddressBookEntryValueSchema,\n tags: v.array(AddressBookTagSchema),\n revision: BigIntStringSchema,\n});\n\nexport type AddressBookEntry = v.InferOutput<typeof AddressBookEntrySchema>;\n\nexport const AddressBookEntriesSchema = v.array(AddressBookEntrySchema);\nexport type AddressBookEntries = v.InferOutput<typeof AddressBookEntriesSchema>;\n\nexport const TransferCounterpartySchema = v.object({\n counterpartyId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n direction: TransferCounterpartyDirectionSchema,\n kind: AddressBookEntryKindSchema,\n saved: v.boolean(),\n addressBookEntryId: PublicIdSchema,\n useCount: CountSchema,\n firstSeenAt: TimestampMsSchema,\n lastSeenAt: TimestampMsSchema,\n counterparty: AddressBookEntryValueSchema,\n});\n\nexport type TransferCounterparty = v.InferOutput<typeof TransferCounterpartySchema>;\n\nexport const TransferCounterpartiesSchema = v.array(TransferCounterpartySchema);\nexport type TransferCounterparties = v.InferOutput<typeof TransferCounterpartiesSchema>;\n\nexport const TransferDestinationSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n kind: AddressBookEntryKindSchema,\n saved: v.boolean(),\n whitelisted: v.boolean(),\n whitelistStatus: DestinationWhitelistStatusSchema,\n addressBookEntry: v.optional(AddressBookEntrySchema),\n destination: AddressBookEntryValueSchema,\n whitelistEffectiveAt: TimestampMsSchema,\n whitelistUpdatedAt: TimestampMsSchema,\n});\n\nexport type TransferDestination = v.InferOutput<typeof TransferDestinationSchema>;\n\nexport const TransferDestinationsSchema = v.array(TransferDestinationSchema);\nexport type TransferDestinations = v.InferOutput<typeof TransferDestinationsSchema>;\n\nexport const InternalTransferWhitelistEntrySchema = v.object({\n entryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.InternalTransferWhitelistEntrySchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n resolutionStatus: v.pipe(\n v.enum(Proto.InternalWhitelistResolutionStatus),\n v.transform((value) =>\n requiredEnumLabel(\n InternalWhitelistResolutionStatusCodec.protoToOutput,\n value,\n \"PolyesterClient.InternalTransferWhitelistEntrySchema\",\n \"resolution status\",\n ),\n ),\n ),\n});\n\nexport type InternalTransferWhitelistEntry = v.InferOutput<\n typeof InternalTransferWhitelistEntrySchema\n>;\n\nexport const InternalTransferWhitelistEntriesSchema = v.array(InternalTransferWhitelistEntrySchema);\n\nexport type InternalTransferWhitelistEntries = v.InferOutput<\n typeof InternalTransferWhitelistEntriesSchema\n>;\n\nexport const MirroredWithdrawWhitelistEntrySchema = v.object({\n canonicalAddress: v.string(),\n rawAddressHex: v.string(),\n updatedAt: TimestampMsSchema,\n polychainChainId: v.pipe(v.number(), v.integer()),\n});\n\nexport type MirroredWithdrawWhitelistEntry = v.InferOutput<\n typeof MirroredWithdrawWhitelistEntrySchema\n>;\n\nexport const WithdrawWhitelistViewSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n externalWhitelistRequired: v.boolean(),\n internalWhitelistRequired: v.boolean(),\n activeEntries: v.optional(v.array(MirroredWithdrawWhitelistEntrySchema), []),\n});\n\nexport type WithdrawWhitelistView = v.InferOutput<typeof WithdrawWhitelistViewSchema>;\n\nexport const AddressBookEntriesViewSchema = v.object({\n external: v.optional(\n v.array(\n v.object({\n addressBookEntryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n label: v.string(),\n note: v.string(),\n tagIds: v.optional(v.array(PublicIdSchema), []),\n whitelistStatus: DestinationWhitelistStatusSchema,\n polychainChainId: v.pipe(v.number(), v.integer()),\n address: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n revision: BigIntStringSchema,\n }),\n ),\n [],\n ),\n internal: v.optional(\n v.array(\n v.object({\n addressBookEntryId: PublicIdSchema,\n scope: v.optional(AccountScopeSchema),\n label: v.string(),\n note: v.string(),\n tagIds: v.optional(v.array(PublicIdSchema), []),\n whitelistStatus: DestinationWhitelistStatusSchema,\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.AddressBookEntriesViewSchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n createdAt: TimestampMsSchema,\n updatedAt: TimestampMsSchema,\n revision: BigIntStringSchema,\n }),\n ),\n [],\n ),\n});\n\nexport type AddressBookEntriesView = v.InferOutput<typeof AddressBookEntriesViewSchema>;\n\nexport const AddressBookRecentDestinationsViewSchema = v.object({\n external: v.optional(\n v.array(\n v.object({\n scope: v.optional(AccountScopeSchema),\n lastDirection: TransferCounterpartyDirectionSchema,\n saved: v.boolean(),\n addressBookEntryId: PublicIdSchema,\n useCount: CountSchema,\n lastSeenAt: TimestampMsSchema,\n polychainChainId: v.pipe(v.number(), v.integer()),\n address: v.string(),\n }),\n ),\n [],\n ),\n internal: v.optional(\n v.array(\n v.object({\n scope: v.optional(AccountScopeSchema),\n lastDirection: TransferCounterpartyDirectionSchema,\n saved: v.boolean(),\n addressBookEntryId: PublicIdSchema,\n useCount: CountSchema,\n lastSeenAt: TimestampMsSchema,\n rootAccountId: PublicIdSchema,\n targetAccountId: PublicIdSchema,\n targetScopeType: v.pipe(\n v.enum(Proto.AccountScopeType),\n v.transform((value) =>\n requiredEnumLabel(\n AccountScopeTypeCodec.protoToOutput,\n value,\n \"PolyesterClient.AddressBookRecentDestinationsViewSchema\",\n \"target scope type\",\n ),\n ),\n ),\n smartAccountAddress: v.string(),\n rootUsername: v.string(),\n subaccountLabel: v.string(),\n }),\n ),\n [],\n ),\n});\n\nexport type AddressBookRecentDestinationsView = v.InferOutput<\n typeof AddressBookRecentDestinationsViewSchema\n>;\n\nexport const AddressBookViewSchema = v.object({\n books: v.optional(v.array(AddressBookSchema), []),\n entries: v.optional(AddressBookEntriesViewSchema),\n recentDestinations: v.optional(AddressBookRecentDestinationsViewSchema),\n tags: v.optional(v.array(AddressBookTagSummarySchema), []),\n withdrawWhitelist: v.optional(WithdrawWhitelistViewSchema),\n recentDestinationsTruncated: v.optional(v.boolean(), false),\n viewRevision: v.optional(BigIntStringSchema, 0n),\n});\n\nexport type AddressBookView = v.InferOutput<typeof AddressBookViewSchema>;\n\nexport const AddressBookViewInvalidatedSchema = v.object({\n scope: v.optional(AccountScopeSchema),\n invalidatedAt: RequiredTimestampMsSchema,\n viewRevision: v.optional(BigIntStringSchema, 0n),\n});\n\nexport type AddressBookViewInvalidated = v.InferOutput<typeof AddressBookViewInvalidatedSchema>;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"candles.d.ts","names":[],"sources":["../../../src/services/candles/candles.ts"],"mappings":";;;;;;;UA+BU,8BAA8B,mBAAmB;EACvD;EACA,WAAW;;UAGL,kCAAkC,mBAAmB;EAC3D;EACA,WAAW;;;;;cAWF;;EASG,YAAA,YAAY,qBAAqB,UAAU,mBAAmB,QAAQ;;;;EAa5E,KAAK,OAAO,iBAAiB,UAAU,0BAA0B,QAAQ;;;;EAiBzE,aACF,OAAO,wBACP,UAAU,0BACX,QAAQ;;;;EAaL,iBACF,OAAO,wBACP,UAAU,0BACX,QAAQ;;;;EAaX,UAAU,OAAO;;;;EAOjB,cAAc,OAAO"}
1
+ {"version":3,"file":"candles.d.ts","names":[],"sources":["../../../src/services/candles/candles.ts"],"mappings":";;;;;;;UAgCU,8BAA8B,mBAAmB;EACvD;EACA,WAAW;;UAGL,kCAAkC,mBAAmB;EAC3D;EACA,WAAW;;;;;cAWF;;EASG,YAAA,YAAY,qBAAqB,UAAU,mBAAmB,QAAQ;;;;EAa5E,KAAK,OAAO,iBAAiB,UAAU,0BAA0B,QAAQ;;;;EAiBzE,aACF,OAAO,wBACP,UAAU,0BACX,QAAQ;;;;EAaL,iBACF,OAAO,wBACP,UAAU,0BACX,QAAQ;;;;EAaX,UAAU,OAAO;;;;EAOjB,cAAc,OAAO"}
@@ -1,5 +1,6 @@
1
1
  import { parse } from "../../shared/validation.js";
2
2
  import { toConnectCallOptions } from "../../shared/request-options.js";
3
+ import { SymbolIdInputSchema } from "../shared.js";
3
4
  import { CandlePointSchema, MarketDataService } from "../../gen/marketdata/v1/marketdata_pb.js";
4
5
  import { connectReadyGatedProtoChannel } from "../../realtime/ready-gated-subscription.js";
5
6
  import { TimeframeCodec } from "./candles.codecs.js";
@@ -8,7 +9,7 @@ import { createClient } from "@connectrpc/connect";
8
9
  import * as v from "valibot";
9
10
  //#region src/services/candles/candles.ts
10
11
  const SubscribeCandlesParamsSchema = v.object({
11
- symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),
12
+ symbolId: SymbolIdInputSchema,
12
13
  timeframe: TimeframeSchema
13
14
  });
14
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"candles.js","names":["#client","Proto.MarketDataService","#realtime","#scales","#rowSchema","#rowIntSchema","#columnarSchema","#columnarIntSchema","CandlePointSchema","#subscribeWithSchema","Proto.CandlePointSchema"],"sources":["../../../src/services/candles/candles.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/marketdata/v1/marketdata_pb.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport type { PublicApiTransports } from \"../../shared/transports.js\";\nimport {\n type CandleColumnar,\n createCandleRowSchema,\n createCandleRowIntSchema,\n createCandleColumnarSchema,\n createCandleColumnarIntSchema,\n CandlePointSchema,\n TimeframeSchema,\n type Candle,\n type CandleInt,\n type Timeframe,\n type CandleColumnarInt,\n type GetCandlesInput,\n type GetCandlesColumnsInput,\n ListCandlesInputSchema,\n} from \"./candles.schemas.js\";\nimport { TimeframeCodec } from \"./candles.codecs.js\";\n\ninterface SubscribeCandlesInput extends BaseSubscribeInput<Candle> {\n symbolId: number;\n timeframe: Timeframe;\n}\n\ninterface SubscribeCandlesIntsInput extends BaseSubscribeInput<CandleInt> {\n symbolId: number;\n timeframe: Timeframe;\n}\n\nconst SubscribeCandlesParamsSchema = v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n timeframe: TimeframeSchema,\n});\n\n/**\n * Reads and streams public spot OHLCV candle data in row and columnar formats.\n */\nexport class CandlesService {\n #client: Client<typeof Proto.MarketDataService>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n #rowSchema: ReturnType<typeof createCandleRowSchema>;\n #rowIntSchema: ReturnType<typeof createCandleRowIntSchema>;\n #columnarSchema: ReturnType<typeof createCandleColumnarSchema>;\n #columnarIntSchema: ReturnType<typeof createCandleColumnarIntSchema>;\n\n constructor(transports: PublicApiTransports, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(Proto.MarketDataService, transports.publicApi);\n this.#realtime = realtime;\n this.#scales = scales;\n this.#rowSchema = createCandleRowSchema(scales);\n this.#rowIntSchema = createCandleRowIntSchema(scales);\n this.#columnarSchema = createCandleColumnarSchema(scales);\n this.#columnarIntSchema = createCandleColumnarIntSchema(scales);\n }\n\n /**\n * Returns OHLCV candles for a symbol/timeframe request, mapped into row objects with symbol id and timeframe. The proto response is newest-first and may include incomplete/reference data depending on input flags.\n */\n async list(input: GetCandlesInput, options?: PolyesterRequestOptions): Promise<Candle[]> {\n const validatedInput = parse(ListCandlesInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getCandles(validatedInput, toConnectCallOptions(options));\n const candles = parse(v.optional(v.array(CandlePointSchema), []), res.candles);\n return candles.map((c) =>\n parse(this.#rowSchema, {\n ...c,\n symbolId: res.symbolId,\n timeframe: res.timeframe,\n }),\n );\n }\n\n /**\n * Returns candle data in chart-friendly column arrays ordered oldest-first by bucket start time. This preserves decimal-string SDK formatting from the columnar schema.\n */\n async listColumnar(\n input: GetCandlesColumnsInput,\n options?: PolyesterRequestOptions,\n ): Promise<CandleColumnar> {\n const validatedInput = parse(ListCandlesInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getCandlesColumns(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(this.#columnarSchema, res);\n }\n\n /**\n * Returns the same columnar candle series keyed by numeric bucket-start seconds (`tsSec`) instead of `time`.\n */\n async listColumnarInts(\n input: GetCandlesColumnsInput,\n options?: PolyesterRequestOptions,\n ): Promise<CandleColumnarInt> {\n const validatedInput = parse(ListCandlesInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getCandlesColumns(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(this.#columnarIntSchema, res);\n }\n\n /**\n * Subscribes to live candle updates on public:spot:market:candles:{timeframe}:{symbolId}:proto and emits row-form candles.\n */\n subscribe(input: SubscribeCandlesInput): () => void {\n return this.#subscribeWithSchema(input, this.#rowSchema);\n }\n\n /**\n * Subscribes to the same live candle channel as subscribe and emits row candles parsed through the row-int schema.\n */\n subscribeInts(input: SubscribeCandlesIntsInput): () => void {\n return this.#subscribeWithSchema(input, this.#rowIntSchema);\n }\n\n #subscribeWithSchema(\n input: SubscribeCandlesInput | SubscribeCandlesIntsInput,\n schema: ReturnType<typeof createCandleRowSchema>,\n ): () => void {\n const params = parse(SubscribeCandlesParamsSchema, {\n symbolId: input.symbolId,\n timeframe: input.timeframe,\n });\n const protoTimeframe = TimeframeCodec.inputToProto[params.timeframe];\n const channel = `public:spot:market:candles:${params.timeframe}:${params.symbolId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: Proto.CandlePointSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const point = parse(CandlePointSchema, data);\n const candle = parse(schema, {\n ...point,\n symbolId: params.symbolId,\n timeframe: protoTimeframe,\n });\n input.onEvent(candle);\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;AAyCA,MAAM,+BAA+B,EAAE,OAAO;CAC1C,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC;CACtD,WAAW;AACf,CAAC;;;;AAKD,IAAa,iBAAb,MAA4B;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,YAAiC,UAA6B,QAAmB;EACzF,KAAKA,UAAU,aAAaC,mBAAyB,WAAW,SAAS;EACzE,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,aAAa,sBAAsB,MAAM;EAC9C,KAAKC,gBAAgB,yBAAyB,MAAM;EACpD,KAAKC,kBAAkB,2BAA2B,MAAM;EACxD,KAAKC,qBAAqB,8BAA8B,MAAM;CAClE;;;;CAKA,MAAM,KAAK,OAAwB,SAAsD;EACrF,MAAM,iBAAiB,MAAM,wBAAwB,KAAK;EAC1D,MAAM,KAAKJ,QAAQ,MAAM;EACzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,WAAW,gBAAgB,qBAAqB,OAAO,CAAC;EAEvF,OADgB,MAAM,EAAE,SAAS,EAAE,MAAMQ,mBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI,OACzD,CAAC,CAAC,KAAK,MAChB,MAAM,KAAKJ,YAAY;GACnB,GAAG;GACH,UAAU,IAAI;GACd,WAAW,IAAI;EACnB,CAAC,CACL;CACJ;;;;CAKA,MAAM,aACF,OACA,SACuB;EACvB,MAAM,iBAAiB,MAAM,wBAAwB,KAAK;EAC1D,MAAM,KAAKD,QAAQ,MAAM;EACzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,kBAC3B,gBACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,KAAKM,iBAAiB,GAAG;CAC1C;;;;CAKA,MAAM,iBACF,OACA,SAC0B;EAC1B,MAAM,iBAAiB,MAAM,wBAAwB,KAAK;EAC1D,MAAM,KAAKH,QAAQ,MAAM;EACzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,kBAC3B,gBACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,KAAKO,oBAAoB,GAAG;CAC7C;;;;CAKA,UAAU,OAA0C;EAChD,OAAO,KAAKE,qBAAqB,OAAO,KAAKL,UAAU;CAC3D;;;;CAKA,cAAc,OAA8C;EACxD,OAAO,KAAKK,qBAAqB,OAAO,KAAKJ,aAAa;CAC9D;CAEA,qBACI,OACA,QACU;EACV,MAAM,SAAS,MAAM,8BAA8B;GAC/C,UAAU,MAAM;GAChB,WAAW,MAAM;EACrB,CAAC;EACD,MAAM,iBAAiB,eAAe,aAAa,OAAO;EAC1D,MAAM,UAAU,8BAA8B,OAAO,UAAU,GAAG,OAAO,SAAS;EAClF,OAAO,8BAA8B,KAAKH,WAAW;GACjD;GACA,QAAQQ;GACR,aAAa,KAAKP,QAAQ,MAAM;GAChC,gBAAgB,SAAS;IACrB,MAAM,QAAQ,MAAMK,qBAAmB,IAAI;IAC3C,MAAM,SAAS,MAAM,QAAQ;KACzB,GAAG;KACH,UAAU,OAAO;KACjB,WAAW;IACf,CAAC;IACD,MAAM,QAAQ,MAAM;GACxB;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
1
+ {"version":3,"file":"candles.js","names":["#client","Proto.MarketDataService","#realtime","#scales","#rowSchema","#rowIntSchema","#columnarSchema","#columnarIntSchema","CandlePointSchema","#subscribeWithSchema","Proto.CandlePointSchema"],"sources":["../../../src/services/candles/candles.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport { SymbolIdInputSchema } from \"../shared.js\";\nimport * as Proto from \"../../gen/marketdata/v1/marketdata_pb.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport type { PublicApiTransports } from \"../../shared/transports.js\";\nimport {\n type CandleColumnar,\n createCandleRowSchema,\n createCandleRowIntSchema,\n createCandleColumnarSchema,\n createCandleColumnarIntSchema,\n CandlePointSchema,\n TimeframeSchema,\n type Candle,\n type CandleInt,\n type Timeframe,\n type CandleColumnarInt,\n type GetCandlesInput,\n type GetCandlesColumnsInput,\n ListCandlesInputSchema,\n} from \"./candles.schemas.js\";\nimport { TimeframeCodec } from \"./candles.codecs.js\";\n\ninterface SubscribeCandlesInput extends BaseSubscribeInput<Candle> {\n symbolId: number;\n timeframe: Timeframe;\n}\n\ninterface SubscribeCandlesIntsInput extends BaseSubscribeInput<CandleInt> {\n symbolId: number;\n timeframe: Timeframe;\n}\n\nconst SubscribeCandlesParamsSchema = v.object({\n symbolId: SymbolIdInputSchema,\n timeframe: TimeframeSchema,\n});\n\n/**\n * Reads and streams public spot OHLCV candle data in row and columnar formats.\n */\nexport class CandlesService {\n #client: Client<typeof Proto.MarketDataService>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n #rowSchema: ReturnType<typeof createCandleRowSchema>;\n #rowIntSchema: ReturnType<typeof createCandleRowIntSchema>;\n #columnarSchema: ReturnType<typeof createCandleColumnarSchema>;\n #columnarIntSchema: ReturnType<typeof createCandleColumnarIntSchema>;\n\n constructor(transports: PublicApiTransports, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(Proto.MarketDataService, transports.publicApi);\n this.#realtime = realtime;\n this.#scales = scales;\n this.#rowSchema = createCandleRowSchema(scales);\n this.#rowIntSchema = createCandleRowIntSchema(scales);\n this.#columnarSchema = createCandleColumnarSchema(scales);\n this.#columnarIntSchema = createCandleColumnarIntSchema(scales);\n }\n\n /**\n * Returns OHLCV candles for a symbol/timeframe request, mapped into row objects with symbol id and timeframe. The proto response is newest-first and may include incomplete/reference data depending on input flags.\n */\n async list(input: GetCandlesInput, options?: PolyesterRequestOptions): Promise<Candle[]> {\n const validatedInput = parse(ListCandlesInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getCandles(validatedInput, toConnectCallOptions(options));\n const candles = parse(v.optional(v.array(CandlePointSchema), []), res.candles);\n return candles.map((c) =>\n parse(this.#rowSchema, {\n ...c,\n symbolId: res.symbolId,\n timeframe: res.timeframe,\n }),\n );\n }\n\n /**\n * Returns candle data in chart-friendly column arrays ordered oldest-first by bucket start time. This preserves decimal-string SDK formatting from the columnar schema.\n */\n async listColumnar(\n input: GetCandlesColumnsInput,\n options?: PolyesterRequestOptions,\n ): Promise<CandleColumnar> {\n const validatedInput = parse(ListCandlesInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getCandlesColumns(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(this.#columnarSchema, res);\n }\n\n /**\n * Returns the same columnar candle series keyed by numeric bucket-start seconds (`tsSec`) instead of `time`.\n */\n async listColumnarInts(\n input: GetCandlesColumnsInput,\n options?: PolyesterRequestOptions,\n ): Promise<CandleColumnarInt> {\n const validatedInput = parse(ListCandlesInputSchema, input);\n await this.#scales.ready();\n const res = await this.#client.getCandlesColumns(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(this.#columnarIntSchema, res);\n }\n\n /**\n * Subscribes to live candle updates on public:spot:market:candles:{timeframe}:{symbolId}:proto and emits row-form candles.\n */\n subscribe(input: SubscribeCandlesInput): () => void {\n return this.#subscribeWithSchema(input, this.#rowSchema);\n }\n\n /**\n * Subscribes to the same live candle channel as subscribe and emits row candles parsed through the row-int schema.\n */\n subscribeInts(input: SubscribeCandlesIntsInput): () => void {\n return this.#subscribeWithSchema(input, this.#rowIntSchema);\n }\n\n #subscribeWithSchema(\n input: SubscribeCandlesInput | SubscribeCandlesIntsInput,\n schema: ReturnType<typeof createCandleRowSchema>,\n ): () => void {\n const params = parse(SubscribeCandlesParamsSchema, {\n symbolId: input.symbolId,\n timeframe: input.timeframe,\n });\n const protoTimeframe = TimeframeCodec.inputToProto[params.timeframe];\n const channel = `public:spot:market:candles:${params.timeframe}:${params.symbolId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: Proto.CandlePointSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const point = parse(CandlePointSchema, data);\n const candle = parse(schema, {\n ...point,\n symbolId: params.symbolId,\n timeframe: protoTimeframe,\n });\n input.onEvent(candle);\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;AA0CA,MAAM,+BAA+B,EAAE,OAAO;CAC1C,UAAU;CACV,WAAW;AACf,CAAC;;;;AAKD,IAAa,iBAAb,MAA4B;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,YAAiC,UAA6B,QAAmB;EACzF,KAAKA,UAAU,aAAaC,mBAAyB,WAAW,SAAS;EACzE,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,aAAa,sBAAsB,MAAM;EAC9C,KAAKC,gBAAgB,yBAAyB,MAAM;EACpD,KAAKC,kBAAkB,2BAA2B,MAAM;EACxD,KAAKC,qBAAqB,8BAA8B,MAAM;CAClE;;;;CAKA,MAAM,KAAK,OAAwB,SAAsD;EACrF,MAAM,iBAAiB,MAAM,wBAAwB,KAAK;EAC1D,MAAM,KAAKJ,QAAQ,MAAM;EACzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,WAAW,gBAAgB,qBAAqB,OAAO,CAAC;EAEvF,OADgB,MAAM,EAAE,SAAS,EAAE,MAAMQ,mBAAiB,GAAG,CAAC,CAAC,GAAG,IAAI,OACzD,CAAC,CAAC,KAAK,MAChB,MAAM,KAAKJ,YAAY;GACnB,GAAG;GACH,UAAU,IAAI;GACd,WAAW,IAAI;EACnB,CAAC,CACL;CACJ;;;;CAKA,MAAM,aACF,OACA,SACuB;EACvB,MAAM,iBAAiB,MAAM,wBAAwB,KAAK;EAC1D,MAAM,KAAKD,QAAQ,MAAM;EACzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,kBAC3B,gBACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,KAAKM,iBAAiB,GAAG;CAC1C;;;;CAKA,MAAM,iBACF,OACA,SAC0B;EAC1B,MAAM,iBAAiB,MAAM,wBAAwB,KAAK;EAC1D,MAAM,KAAKH,QAAQ,MAAM;EACzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,kBAC3B,gBACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,KAAKO,oBAAoB,GAAG;CAC7C;;;;CAKA,UAAU,OAA0C;EAChD,OAAO,KAAKE,qBAAqB,OAAO,KAAKL,UAAU;CAC3D;;;;CAKA,cAAc,OAA8C;EACxD,OAAO,KAAKK,qBAAqB,OAAO,KAAKJ,aAAa;CAC9D;CAEA,qBACI,OACA,QACU;EACV,MAAM,SAAS,MAAM,8BAA8B;GAC/C,UAAU,MAAM;GAChB,WAAW,MAAM;EACrB,CAAC;EACD,MAAM,iBAAiB,eAAe,aAAa,OAAO;EAC1D,MAAM,UAAU,8BAA8B,OAAO,UAAU,GAAG,OAAO,SAAS;EAClF,OAAO,8BAA8B,KAAKH,WAAW;GACjD;GACA,QAAQQ;GACR,aAAa,KAAKP,QAAQ,MAAM;GAChC,gBAAgB,SAAS;IACrB,MAAM,QAAQ,MAAMK,qBAAmB,IAAI;IAC3C,MAAM,SAAS,MAAM,QAAQ;KACzB,GAAG;KACH,UAAU,OAAO;KACjB,WAAW;IACf,CAAC;IACD,MAAM,QAAQ,MAAM;GACxB;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}