@polyester/sdk 0.3.1 → 0.4.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 (189) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +63 -17
  3. package/dist/account-signer/types.d.ts.map +1 -1
  4. package/dist/account-signer/types.js +6 -3
  5. package/dist/account-signer/types.js.map +1 -1
  6. package/dist/browser-client.d.ts +4 -2
  7. package/dist/browser-client.d.ts.map +1 -1
  8. package/dist/browser-client.js +3 -4
  9. package/dist/browser-client.js.map +1 -1
  10. package/dist/catalogs/client-catalog.d.ts.map +1 -1
  11. package/dist/catalogs/client-catalog.js +11 -4
  12. package/dist/catalogs/client-catalog.js.map +1 -1
  13. package/dist/catalogs/index.js +1 -1
  14. package/dist/catalogs/readers.d.ts.map +1 -1
  15. package/dist/catalogs/readers.js +3 -1
  16. package/dist/catalogs/readers.js.map +1 -1
  17. package/dist/catalogs/snapshot-validation.js +132 -0
  18. package/dist/catalogs/snapshot-validation.js.map +1 -0
  19. package/dist/catalogs/snapshot.d.ts.map +1 -1
  20. package/dist/catalogs/snapshot.js +16 -7
  21. package/dist/catalogs/snapshot.js.map +1 -1
  22. package/dist/catalogs/zipper-supply.d.ts.map +1 -1
  23. package/dist/catalogs/zipper-supply.js +10 -7
  24. package/dist/catalogs/zipper-supply.js.map +1 -1
  25. package/dist/core-client.d.ts +24 -17
  26. package/dist/core-client.d.ts.map +1 -1
  27. package/dist/core-client.js +21 -3
  28. package/dist/core-client.js.map +1 -1
  29. package/dist/environment.d.ts.map +1 -1
  30. package/dist/environment.js +32 -1
  31. package/dist/environment.js.map +1 -1
  32. package/dist/index.js +3 -3
  33. package/dist/realtime/client.js +13 -2
  34. package/dist/realtime/client.js.map +1 -1
  35. package/dist/realtime/snapshot-then-stream.js +1 -1
  36. package/dist/realtime/snapshot-then-stream.js.map +1 -1
  37. package/dist/realtime/types.d.ts +2 -0
  38. package/dist/realtime/types.d.ts.map +1 -1
  39. package/dist/server-client.d.ts +17 -8
  40. package/dist/server-client.d.ts.map +1 -1
  41. package/dist/server-client.js +8 -11
  42. package/dist/server-client.js.map +1 -1
  43. package/dist/services/accounts/accounts.js +3 -3
  44. package/dist/services/accounts/accounts.js.map +1 -1
  45. package/dist/services/address-book/address-book.js +28 -28
  46. package/dist/services/address-book/address-book.js.map +1 -1
  47. package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
  48. package/dist/services/address-book/address-book.schemas.js +2 -1
  49. package/dist/services/address-book/address-book.schemas.js.map +1 -1
  50. package/dist/services/api-keys/api-keys.d.ts.map +1 -1
  51. package/dist/services/api-keys/api-keys.js +12 -12
  52. package/dist/services/api-keys/api-keys.js.map +1 -1
  53. package/dist/services/auth/auth.d.ts +9 -3
  54. package/dist/services/auth/auth.d.ts.map +1 -1
  55. package/dist/services/auth/auth.js +11 -7
  56. package/dist/services/auth/auth.js.map +1 -1
  57. package/dist/services/auth/profile/profile.d.ts.map +1 -1
  58. package/dist/services/auth/profile/profile.js +7 -6
  59. package/dist/services/auth/profile/profile.js.map +1 -1
  60. package/dist/services/auth/session.d.ts +1 -1
  61. package/dist/services/auth/session.d.ts.map +1 -1
  62. package/dist/services/auth/session.js +6 -2
  63. package/dist/services/auth/session.js.map +1 -1
  64. package/dist/services/auth/session.types.d.ts +3 -2
  65. package/dist/services/auth/session.types.d.ts.map +1 -1
  66. package/dist/services/balances/balances.d.ts +1 -1
  67. package/dist/services/balances/balances.d.ts.map +1 -1
  68. package/dist/services/balances/balances.js +9 -8
  69. package/dist/services/balances/balances.js.map +1 -1
  70. package/dist/services/balances/balances.schemas.d.ts +1 -1
  71. package/dist/services/balances/balances.schemas.d.ts.map +1 -1
  72. package/dist/services/balances/balances.schemas.js +1 -1
  73. package/dist/services/balances/balances.schemas.js.map +1 -1
  74. package/dist/services/candles/candles.d.ts.map +1 -1
  75. package/dist/services/candles/candles.js +10 -9
  76. package/dist/services/candles/candles.js.map +1 -1
  77. package/dist/services/candles/candles.schemas.d.ts +11 -11
  78. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  79. package/dist/services/candles/candles.schemas.js +1 -2
  80. package/dist/services/candles/candles.schemas.js.map +1 -1
  81. package/dist/services/chain-analytics/chain-analytics.js +7 -7
  82. package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
  83. package/dist/services/deposit/deposit.js +5 -5
  84. package/dist/services/deposit/deposit.js.map +1 -1
  85. package/dist/services/guard-signer/guard-signer.js +13 -13
  86. package/dist/services/guard-signer/guard-signer.js.map +1 -1
  87. package/dist/services/heatmap/heatmap.d.ts.map +1 -1
  88. package/dist/services/heatmap/heatmap.js +6 -5
  89. package/dist/services/heatmap/heatmap.js.map +1 -1
  90. package/dist/services/heatmap/heatmap.schemas.d.ts +17 -17
  91. package/dist/services/heatmap/heatmap.schemas.js +1 -1
  92. package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
  93. package/dist/services/internal-transfers/internal-transfers.js +3 -3
  94. package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
  95. package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
  96. package/dist/services/lifecycle/lifecycle.js +9 -8
  97. package/dist/services/lifecycle/lifecycle.js.map +1 -1
  98. package/dist/services/market-data/market-data.d.ts.map +1 -1
  99. package/dist/services/market-data/market-data.js +6 -5
  100. package/dist/services/market-data/market-data.js.map +1 -1
  101. package/dist/services/market-data/market-data.schemas.d.ts +2 -2
  102. package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
  103. package/dist/services/market-data/market-data.schemas.js +2 -6
  104. package/dist/services/market-data/market-data.schemas.js.map +1 -1
  105. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  106. package/dist/services/market-overview/market-overview.js +4 -3
  107. package/dist/services/market-overview/market-overview.js.map +1 -1
  108. package/dist/services/market-overview/market-overview.schemas.d.ts +3 -3
  109. package/dist/services/mfa/mfa.js +27 -27
  110. package/dist/services/mfa/mfa.js.map +1 -1
  111. package/dist/services/orderbook/orderbook.d.ts.map +1 -1
  112. package/dist/services/orderbook/orderbook.js +5 -4
  113. package/dist/services/orderbook/orderbook.js.map +1 -1
  114. package/dist/services/orderbook/orderbook.schemas.d.ts +1 -1
  115. package/dist/services/orders/orders-batch.schemas.d.ts +14 -14
  116. package/dist/services/orders/orders-batch.schemas.js +1 -1
  117. package/dist/services/orders/orders-input.schemas.d.ts +13 -4
  118. package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
  119. package/dist/services/orders/orders-input.schemas.js +8 -4
  120. package/dist/services/orders/orders-input.schemas.js.map +1 -1
  121. package/dist/services/orders/orders-modify.schemas.d.ts +22 -3
  122. package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
  123. package/dist/services/orders/orders-modify.schemas.js +7 -3
  124. package/dist/services/orders/orders-modify.schemas.js.map +1 -1
  125. package/dist/services/orders/orders-output.schemas.d.ts +12 -12
  126. package/dist/services/orders/orders.d.ts +2 -2
  127. package/dist/services/orders/orders.d.ts.map +1 -1
  128. package/dist/services/orders/orders.js +44 -31
  129. package/dist/services/orders/orders.js.map +1 -1
  130. package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
  131. package/dist/services/policies/api-key-policies/api-key-policies.js +11 -11
  132. package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
  133. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
  134. package/dist/services/policies/subaccount-policies/subaccount-policies.js +13 -12
  135. package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
  136. package/dist/services/social-verification/social-verification.d.ts.map +1 -1
  137. package/dist/services/social-verification/social-verification.js +7 -7
  138. package/dist/services/social-verification/social-verification.js.map +1 -1
  139. package/dist/services/subaccount-resolver.js +5 -3
  140. package/dist/services/subaccount-resolver.js.map +1 -1
  141. package/dist/services/subaccounts/subaccounts.d.ts +1 -1
  142. package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
  143. package/dist/services/subaccounts/subaccounts.js +34 -33
  144. package/dist/services/subaccounts/subaccounts.js.map +1 -1
  145. package/dist/services/subaccounts/subaccounts.schemas.d.ts +2 -2
  146. package/dist/services/subaccounts/subaccounts.schemas.js +1 -1
  147. package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
  148. package/dist/services/trades/trades.d.ts.map +1 -1
  149. package/dist/services/trades/trades.js +5 -4
  150. package/dist/services/trades/trades.js.map +1 -1
  151. package/dist/services/trading-withdraws/trading-withdraws.js +8 -8
  152. package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
  153. package/dist/services/transfers/transfers.d.ts +1 -1
  154. package/dist/services/transfers/transfers.d.ts.map +1 -1
  155. package/dist/services/transfers/transfers.js +5 -4
  156. package/dist/services/transfers/transfers.js.map +1 -1
  157. package/dist/services/triggers/trigger-input.schemas.d.ts +1 -1
  158. package/dist/services/triggers/triggers-output.schemas.d.ts +1 -1
  159. package/dist/services/triggers/triggers.d.ts.map +1 -1
  160. package/dist/services/triggers/triggers.js +21 -20
  161. package/dist/services/triggers/triggers.js.map +1 -1
  162. package/dist/services/whiteboard/whiteboard.js +15 -15
  163. package/dist/services/whiteboard/whiteboard.js.map +1 -1
  164. package/dist/services/zipper/zipper.js +3 -3
  165. package/dist/services/zipper/zipper.js.map +1 -1
  166. package/dist/shared/connect-error-mapping.d.ts +1 -1
  167. package/dist/shared/connect-error-mapping.js +27 -1
  168. package/dist/shared/connect-error-mapping.js.map +1 -1
  169. package/dist/shared/transports.js +7 -12
  170. package/dist/shared/transports.js.map +1 -1
  171. package/dist/shared/types.d.ts +12 -0
  172. package/dist/shared/types.d.ts.map +1 -1
  173. package/dist/shared/validation.js +19 -0
  174. package/dist/shared/validation.js.map +1 -0
  175. package/dist/utils/cookies.d.ts +8 -3
  176. package/dist/utils/cookies.d.ts.map +1 -1
  177. package/dist/utils/cookies.js +7 -1
  178. package/dist/utils/cookies.js.map +1 -1
  179. package/dist/utils/event-emitter.d.ts +1 -1
  180. package/dist/utils/event-emitter.d.ts.map +1 -1
  181. package/dist/utils/event-emitter.js +4 -2
  182. package/dist/utils/event-emitter.js.map +1 -1
  183. package/dist/utils/evm.js +2 -2
  184. package/dist/utils/evm.js.map +1 -1
  185. package/dist/utils/jwt.d.ts +2 -2
  186. package/dist/utils/jwt.d.ts.map +1 -1
  187. package/dist/utils/jwt.js +2 -2
  188. package/dist/utils/jwt.js.map +1 -1
  189. package/package.json +3 -3
@@ -11,7 +11,7 @@ type TimestampInit = {
11
11
  };
12
12
  declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
13
13
  readonly symbolId: v.NumberSchema<undefined>;
14
- readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">>]>;
14
+ readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">>]>;
15
15
  readonly tsSec: v.BigintSchema<undefined>;
16
16
  readonly open: v.BigintSchema<undefined>;
17
17
  readonly high: v.BigintSchema<undefined>;
@@ -21,7 +21,7 @@ declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<read
21
21
  readonly isClosed: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
22
22
  }, undefined>, v.TransformAction<{
23
23
  symbolId: number;
24
- timeframe: DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">;
24
+ timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
25
25
  tsSec: bigint;
26
26
  open: bigint;
27
27
  high: bigint;
@@ -31,7 +31,7 @@ declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<read
31
31
  isClosed: boolean;
32
32
  }, {
33
33
  symbolId: number;
34
- timeframe: DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">;
34
+ timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
35
35
  time: number;
36
36
  open: string;
37
37
  high: string;
@@ -43,7 +43,7 @@ declare function createCandleRowSchema(scales: SdkScales): v.SchemaWithPipe<read
43
43
  declare const createCandleRowIntSchema: typeof createCandleRowSchema;
44
44
  declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
45
45
  readonly symbolId: v.NumberSchema<undefined>;
46
- readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">>]>;
46
+ readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">>]>;
47
47
  readonly tsSec: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
48
48
  readonly open: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
49
49
  readonly high: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
@@ -59,7 +59,7 @@ declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe
59
59
  readonly nextPageToken: v.OptionalSchema<v.StringSchema<undefined>, "">;
60
60
  }, undefined>, v.TransformAction<{
61
61
  symbolId: number;
62
- timeframe: DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">;
62
+ timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
63
63
  tsSec: bigint[];
64
64
  open: bigint[];
65
65
  high: bigint[];
@@ -75,7 +75,7 @@ declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe
75
75
  nextPageToken: string;
76
76
  }, {
77
77
  symbolId: number;
78
- timeframe: DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">;
78
+ timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
79
79
  time: number[];
80
80
  open: string[];
81
81
  high: string[];
@@ -94,7 +94,7 @@ declare function createCandleColumnarSchema(scales: SdkScales): v.SchemaWithPipe
94
94
  }>]>;
95
95
  declare function createCandleColumnarIntSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
96
96
  readonly symbolId: v.NumberSchema<undefined>;
97
- readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">>]>;
97
+ readonly timeframe: v.SchemaWithPipe<readonly [v.EnumSchema<typeof Timeframe$1, undefined>, v.TransformAction<Timeframe$1, DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">>]>;
98
98
  readonly tsSec: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
99
99
  readonly open: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
100
100
  readonly high: v.ArraySchema<v.BigintSchema<undefined>, undefined>;
@@ -110,7 +110,7 @@ declare function createCandleColumnarIntSchema(scales: SdkScales): v.SchemaWithP
110
110
  readonly nextPageToken: v.OptionalSchema<v.StringSchema<undefined>, "">;
111
111
  }, undefined>, v.TransformAction<{
112
112
  symbolId: number;
113
- timeframe: DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">;
113
+ timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
114
114
  tsSec: bigint[];
115
115
  open: bigint[];
116
116
  high: bigint[];
@@ -126,7 +126,7 @@ declare function createCandleColumnarIntSchema(scales: SdkScales): v.SchemaWithP
126
126
  nextPageToken: string;
127
127
  }, {
128
128
  symbolId: number;
129
- timeframe: DecodedEnum<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo">;
129
+ timeframe: DecodedEnum<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo">;
130
130
  tsSec: number[];
131
131
  open: string[];
132
132
  high: string[];
@@ -149,8 +149,8 @@ type CandleColumnar = v.InferOutput<ReturnType<typeof createCandleColumnarSchema
149
149
  type CandleColumnarInt = v.InferOutput<ReturnType<typeof createCandleColumnarIntSchema>>;
150
150
  declare function createListCandlesInputSchema(): v.SchemaWithPipe<readonly [v.ObjectSchema<{
151
151
  readonly symbolId: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>]>;
152
- readonly timeframe: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["1s", "1m", "5m", "15m", "30m", "1h", "4h", "12h", "1d", "1w", "1mo"], undefined>, v.TransformAction<"1d" | "1s" | "1m" | "5m" | "15m" | "30m" | "1h" | "4h" | "12h" | "1w" | "1mo", Timeframe$1.SEC_1 | Timeframe$1.MIN_1 | Timeframe$1.MIN_5 | Timeframe$1.MIN_15 | Timeframe$1.MIN_30 | Timeframe$1.HOUR_1 | Timeframe$1.HOUR_4 | Timeframe$1.DAY_1 | Timeframe$1.HOUR_12 | Timeframe$1.WEEK_1 | Timeframe$1.MONTH_1>]>;
153
- readonly limit: v.SchemaWithPipe<readonly [v.OptionalSchema<v.UnionSchema<[v.StringSchema<undefined>, v.NumberSchema<undefined>], undefined>, undefined>, v.TransformAction<string | number | undefined, number | undefined>]>;
152
+ readonly timeframe: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["1s", "1m", "5m", "15m", "30m", "1h", "4h", "12h", "1d", "1w", "1mo"], undefined>, v.TransformAction<"1d" | "1h" | "1w" | "1m" | "1s" | "5m" | "15m" | "30m" | "4h" | "12h" | "1mo", Timeframe$1.SEC_1 | Timeframe$1.MIN_1 | Timeframe$1.MIN_5 | Timeframe$1.MIN_15 | Timeframe$1.MIN_30 | Timeframe$1.HOUR_1 | Timeframe$1.HOUR_4 | Timeframe$1.DAY_1 | Timeframe$1.HOUR_12 | Timeframe$1.WEEK_1 | Timeframe$1.MONTH_1>]>;
153
+ readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 10000, undefined>]>, undefined>;
154
154
  readonly includeIncomplete: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
155
155
  readonly includeReference: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
156
156
  readonly startTsSec: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, number, undefined>, v.TransformAction<number, bigint>]>, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"candles.schemas.d.ts","names":[],"sources":["../../../src/services/candles/candles.schemas.ts"],"mappings":";;;;;cASa,iBAAe,EAAA;KAEhB,YAAY,EAAE,mBAAmB;KAuBxC;EAAkB;EAAiB;;iBAqBxB,sBAAsB,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoB1C,iCAAwB;iBAqCrB,2BAA2B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC5C,8BAA8B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCnD,SAAS,EAAE,YAAY,kBAAkB;KAGzC,YAAY,EAAE,YAAY,kBAAkB;KAC5C,iBAAiB,EAAE,YAAY,kBAAkB;KAGjD,oBAAoB,EAAE,YAAY,kBAAkB;iBAyBhD,gCAA4B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAIhC,kBAAkB,EAAE,WAAW,kBAAkB;KAEjD,yBAAyB,EAAE,WAAW,kBAAkB"}
1
+ {"version":3,"file":"candles.schemas.d.ts","names":[],"sources":["../../../src/services/candles/candles.schemas.ts"],"mappings":";;;;;cAQa,iBAAe,EAAA;KAEhB,YAAY,EAAE,mBAAmB;KAsBxC;EAAkB;EAAiB;;iBAqBxB,sBAAsB,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoB1C,iCAAwB;iBAqCrB,2BAA2B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC5C,8BAA8B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCnD,SAAS,EAAE,YAAY,kBAAkB;KAGzC,YAAY,EAAE,YAAY,kBAAkB;KAC5C,iBAAiB,EAAE,YAAY,kBAAkB;KAGjD,oBAAoB,EAAE,YAAY,kBAAkB;iBAyBhD,gCAA4B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAIhC,kBAAkB,EAAE,WAAW,kBAAkB;KAEjD,yBAAyB,EAAE,WAAW,kBAAkB"}
@@ -1,5 +1,4 @@
1
1
  import { requiredEnumLabel } from "../../shared/proto-enum-codec.js";
2
- import { parseOptionalPositiveIntLike } from "../../utils/numbers.js";
3
2
  import { OptionalTimestampSecondsInputSchema } from "../../shared/schemas.js";
4
3
  import { Timeframe } from "../../gen/marketdata/v1/marketdata_pb.js";
5
4
  import { scaledToDecimalOutput } from "../../shared/decimal-surface.js";
@@ -11,7 +10,7 @@ function timeframeFromProto(value, schemaName) {
11
10
  return requiredEnumLabel(TimeframeCodec.protoToOutput, value, `CandlesService.${schemaName}`, "timeframe");
12
11
  }
13
12
  const TimeframeInputSchema = v.pipe(TimeframeSchema, v.transform((value) => TimeframeCodec.inputToProto[value]));
14
- const OptionalPositiveNumberSchema = v.pipe(v.optional(v.union([v.string(), v.number()])), v.transform((value) => parseOptionalPositiveIntLike(value)));
13
+ const OptionalPositiveNumberSchema = v.optional(v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(1e4)));
15
14
  const OptionalBooleanSchema = v.optional(v.boolean(), false);
16
15
  function timestampFromTsSec(tsSec) {
17
16
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"candles.schemas.js","names":["Proto.Timeframe"],"sources":["../../../src/services/candles/candles.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/marketdata/v1/marketdata_pb.js\";\nimport * as v from \"valibot\";\nimport { parseOptionalPositiveIntLike } from \"../../utils/numbers.js\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport { OptionalTimestampSecondsInputSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { TIMEFRAMES, TimeframeCodec } from \"./candles.codecs.js\";\n\nexport const TimeframeSchema = v.picklist(TIMEFRAMES);\n\nexport type Timeframe = v.InferOutput<typeof TimeframeSchema>;\n\nfunction timeframeFromProto(value: Proto.Timeframe, schemaName: string): DecodedEnum<Timeframe> {\n return requiredEnumLabel(\n TimeframeCodec.protoToOutput,\n value,\n `CandlesService.${schemaName}`,\n \"timeframe\",\n );\n}\n\nconst TimeframeInputSchema = v.pipe(\n TimeframeSchema,\n v.transform((value) => TimeframeCodec.inputToProto[value]),\n);\n\nconst OptionalPositiveNumberSchema = v.pipe(\n v.optional(v.union([v.string(), v.number()])),\n v.transform((value) => parseOptionalPositiveIntLike(value)),\n);\n\nconst OptionalBooleanSchema = v.optional(v.boolean(), false);\n\ntype TimestampInit = { seconds: bigint; nanos: number };\n\nfunction timestampFromTsSec(tsSec: bigint): TimestampInit {\n return { seconds: tsSec, nanos: 0 };\n}\n\nconst CandleRowRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleRowSchema\")),\n ),\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nexport function createCandleRowSchema(scales: SdkScales) {\n return v.pipe(\n CandleRowRawSchema,\n v.transform((data) => {\n const priceScale = scales.price();\n return {\n symbolId: data.symbolId,\n timeframe: data.timeframe,\n time: Number(data.tsSec),\n open: scaledToDecimalOutput(data.open, priceScale),\n high: scaledToDecimalOutput(data.high, priceScale),\n low: scaledToDecimalOutput(data.low, priceScale),\n close: scaledToDecimalOutput(data.close, priceScale),\n volume: scaledToDecimalOutput(data.volume, scales.baseQty(data.symbolId)),\n isClosed: data.isClosed,\n };\n }),\n );\n}\n\nexport const createCandleRowIntSchema = createCandleRowSchema;\n\nexport const CandlePointSchema = v.object({\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nconst CandleColumnarRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleColumnarSchema\")),\n ),\n tsSec: v.array(v.bigint()),\n open: v.array(v.bigint()),\n high: v.array(v.bigint()),\n low: v.array(v.bigint()),\n close: v.array(v.bigint()),\n volume: v.array(v.bigint()),\n referenceTsSec: v.optional(v.array(v.bigint()), []),\n referenceOpen: v.optional(v.array(v.bigint()), []),\n referenceHigh: v.optional(v.array(v.bigint()), []),\n referenceLow: v.optional(v.array(v.bigint()), []),\n referenceClose: v.optional(v.array(v.bigint()), []),\n referenceVolume: v.optional(v.array(v.bigint()), []),\n nextPageToken: v.optional(v.string(), \"\"),\n});\n\nfunction scaledArrayToDecimal(values: bigint[], scale: number): string[] {\n return values.map((value) => scaledToDecimalOutput(value, scale));\n}\n\nexport function createCandleColumnarSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n const hasReference = referenceTsSec.length > 0;\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n time: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference: hasReference\n ? {\n time: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport function createCandleColumnarIntSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n tsSec: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference:\n referenceTsSec.length > 0\n ? {\n tsSec: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport type Candle = v.InferOutput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleInput = v.InferInput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleIntInput = v.InferInput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleInt = v.InferOutput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleColumnar = v.InferOutput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarInput = v.InferInput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarIntInput = v.InferInput<ReturnType<typeof createCandleColumnarIntSchema>>;\nexport type CandleColumnarInt = v.InferOutput<ReturnType<typeof createCandleColumnarIntSchema>>;\n\nexport const ListCandlesInputSchema = v.pipe(\n v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n timeframe: TimeframeInputSchema,\n limit: OptionalPositiveNumberSchema,\n includeIncomplete: v.optional(v.boolean(), false),\n includeReference: OptionalBooleanSchema,\n startTsSec: OptionalTimestampSecondsInputSchema,\n endTsSec: OptionalTimestampSecondsInputSchema,\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform((d) => ({\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n limit: d.limit,\n includeIncomplete: d.includeIncomplete,\n includeReference: d.includeReference,\n startTime: d.startTsSec != null ? timestampFromTsSec(d.startTsSec) : undefined,\n endTime: d.endTsSec != null ? timestampFromTsSec(d.endTsSec) : undefined,\n pageToken: d.pageToken,\n })),\n);\n\nexport function createListCandlesInputSchema() {\n return ListCandlesInputSchema;\n}\n\nexport type GetCandlesInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\nexport const createGetCandlesColumnsInputSchema = createListCandlesInputSchema;\nexport type GetCandlesColumnsInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"candles.schemas.js","names":["Proto.Timeframe"],"sources":["../../../src/services/candles/candles.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/marketdata/v1/marketdata_pb.js\";\nimport * as v from \"valibot\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport { OptionalTimestampSecondsInputSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { TIMEFRAMES, TimeframeCodec } from \"./candles.codecs.js\";\n\nexport const TimeframeSchema = v.picklist(TIMEFRAMES);\n\nexport type Timeframe = v.InferOutput<typeof TimeframeSchema>;\n\nfunction timeframeFromProto(value: Proto.Timeframe, schemaName: string): DecodedEnum<Timeframe> {\n return requiredEnumLabel(\n TimeframeCodec.protoToOutput,\n value,\n `CandlesService.${schemaName}`,\n \"timeframe\",\n );\n}\n\nconst TimeframeInputSchema = v.pipe(\n TimeframeSchema,\n v.transform((value) => TimeframeCodec.inputToProto[value]),\n);\n\nconst OptionalPositiveNumberSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.gtValue(0), v.maxValue(10_000)),\n);\n\nconst OptionalBooleanSchema = v.optional(v.boolean(), false);\n\ntype TimestampInit = { seconds: bigint; nanos: number };\n\nfunction timestampFromTsSec(tsSec: bigint): TimestampInit {\n return { seconds: tsSec, nanos: 0 };\n}\n\nconst CandleRowRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleRowSchema\")),\n ),\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nexport function createCandleRowSchema(scales: SdkScales) {\n return v.pipe(\n CandleRowRawSchema,\n v.transform((data) => {\n const priceScale = scales.price();\n return {\n symbolId: data.symbolId,\n timeframe: data.timeframe,\n time: Number(data.tsSec),\n open: scaledToDecimalOutput(data.open, priceScale),\n high: scaledToDecimalOutput(data.high, priceScale),\n low: scaledToDecimalOutput(data.low, priceScale),\n close: scaledToDecimalOutput(data.close, priceScale),\n volume: scaledToDecimalOutput(data.volume, scales.baseQty(data.symbolId)),\n isClosed: data.isClosed,\n };\n }),\n );\n}\n\nexport const createCandleRowIntSchema = createCandleRowSchema;\n\nexport const CandlePointSchema = v.object({\n tsSec: v.bigint(),\n open: v.bigint(),\n high: v.bigint(),\n low: v.bigint(),\n close: v.bigint(),\n volume: v.bigint(),\n isClosed: v.optional(v.boolean(), false),\n});\n\nconst CandleColumnarRawSchema = v.object({\n symbolId: v.number(),\n timeframe: v.pipe(\n v.enum(Proto.Timeframe),\n v.transform((v) => timeframeFromProto(v, \"CandleColumnarSchema\")),\n ),\n tsSec: v.array(v.bigint()),\n open: v.array(v.bigint()),\n high: v.array(v.bigint()),\n low: v.array(v.bigint()),\n close: v.array(v.bigint()),\n volume: v.array(v.bigint()),\n referenceTsSec: v.optional(v.array(v.bigint()), []),\n referenceOpen: v.optional(v.array(v.bigint()), []),\n referenceHigh: v.optional(v.array(v.bigint()), []),\n referenceLow: v.optional(v.array(v.bigint()), []),\n referenceClose: v.optional(v.array(v.bigint()), []),\n referenceVolume: v.optional(v.array(v.bigint()), []),\n nextPageToken: v.optional(v.string(), \"\"),\n});\n\nfunction scaledArrayToDecimal(values: bigint[], scale: number): string[] {\n return values.map((value) => scaledToDecimalOutput(value, scale));\n}\n\nexport function createCandleColumnarSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n const hasReference = referenceTsSec.length > 0;\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n time: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference: hasReference\n ? {\n time: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport function createCandleColumnarIntSchema(scales: SdkScales) {\n return v.pipe(\n CandleColumnarRawSchema,\n v.transform((d) => {\n const priceScale = scales.price();\n const volumeScale = scales.baseQty(d.symbolId);\n const referenceTsSec = d.referenceTsSec ?? [];\n return {\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n tsSec: d.tsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.open, priceScale),\n high: scaledArrayToDecimal(d.high, priceScale),\n low: scaledArrayToDecimal(d.low, priceScale),\n close: scaledArrayToDecimal(d.close, priceScale),\n volume: scaledArrayToDecimal(d.volume, volumeScale),\n nextPageToken: d.nextPageToken,\n reference:\n referenceTsSec.length > 0\n ? {\n tsSec: referenceTsSec.map((t) => Number(t)),\n open: scaledArrayToDecimal(d.referenceOpen ?? [], priceScale),\n high: scaledArrayToDecimal(d.referenceHigh ?? [], priceScale),\n low: scaledArrayToDecimal(d.referenceLow ?? [], priceScale),\n close: scaledArrayToDecimal(d.referenceClose ?? [], priceScale),\n volume: scaledArrayToDecimal(d.referenceVolume ?? [], volumeScale),\n }\n : null,\n };\n }),\n );\n}\n\nexport type Candle = v.InferOutput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleInput = v.InferInput<ReturnType<typeof createCandleRowSchema>>;\nexport type CandleIntInput = v.InferInput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleInt = v.InferOutput<ReturnType<typeof createCandleRowIntSchema>>;\nexport type CandleColumnar = v.InferOutput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarInput = v.InferInput<ReturnType<typeof createCandleColumnarSchema>>;\nexport type CandleColumnarIntInput = v.InferInput<ReturnType<typeof createCandleColumnarIntSchema>>;\nexport type CandleColumnarInt = v.InferOutput<ReturnType<typeof createCandleColumnarIntSchema>>;\n\nexport const ListCandlesInputSchema = v.pipe(\n v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n timeframe: TimeframeInputSchema,\n limit: OptionalPositiveNumberSchema,\n includeIncomplete: v.optional(v.boolean(), false),\n includeReference: OptionalBooleanSchema,\n startTsSec: OptionalTimestampSecondsInputSchema,\n endTsSec: OptionalTimestampSecondsInputSchema,\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n }),\n v.transform((d) => ({\n symbolId: d.symbolId,\n timeframe: d.timeframe,\n limit: d.limit,\n includeIncomplete: d.includeIncomplete,\n includeReference: d.includeReference,\n startTime: d.startTsSec != null ? timestampFromTsSec(d.startTsSec) : undefined,\n endTime: d.endTsSec != null ? timestampFromTsSec(d.endTsSec) : undefined,\n pageToken: d.pageToken,\n })),\n);\n\nexport function createListCandlesInputSchema() {\n return ListCandlesInputSchema;\n}\n\nexport type GetCandlesInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\nexport const createGetCandlesColumnsInputSchema = createListCandlesInputSchema;\nexport type GetCandlesColumnsInput = v.InferInput<ReturnType<typeof createListCandlesInputSchema>>;\n"],"mappings":";;;;;;;AAQA,MAAa,kBAAkB,EAAE,SAAS,UAAU;AAIpD,SAAS,mBAAmB,OAAwB,YAA4C;CAC5F,OAAO,kBACH,eAAe,eACf,OACA,kBAAkB,cAClB,WACJ;AACJ;AAEA,MAAM,uBAAuB,EAAE,KAC3B,iBACA,EAAE,WAAW,UAAU,eAAe,aAAa,MAAM,CAC7D;AAEA,MAAM,+BAA+B,EAAE,SACnC,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAM,CAAC,CACpE;AAEA,MAAM,wBAAwB,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AAI3D,SAAS,mBAAmB,OAA8B;CACtD,OAAO;EAAE,SAAS;EAAO,OAAO;CAAE;AACtC;AAEA,MAAM,qBAAqB,EAAE,OAAO;CAChC,UAAU,EAAE,OAAO;CACnB,WAAW,EAAE,KACT,EAAE,KAAKA,SAAe,GACtB,EAAE,WAAW,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,CAC/D;CACA,OAAO,EAAE,OAAO;CAChB,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,KAAK,EAAE,OAAO;CACd,OAAO,EAAE,OAAO;CAChB,QAAQ,EAAE,OAAO;CACjB,UAAU,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AAC3C,CAAC;AAED,SAAgB,sBAAsB,QAAmB;CACrD,OAAO,EAAE,KACL,oBACA,EAAE,WAAW,SAAS;EAClB,MAAM,aAAa,OAAO,MAAM;EAChC,OAAO;GACH,UAAU,KAAK;GACf,WAAW,KAAK;GAChB,MAAM,OAAO,KAAK,KAAK;GACvB,MAAM,sBAAsB,KAAK,MAAM,UAAU;GACjD,MAAM,sBAAsB,KAAK,MAAM,UAAU;GACjD,KAAK,sBAAsB,KAAK,KAAK,UAAU;GAC/C,OAAO,sBAAsB,KAAK,OAAO,UAAU;GACnD,QAAQ,sBAAsB,KAAK,QAAQ,OAAO,QAAQ,KAAK,QAAQ,CAAC;GACxE,UAAU,KAAK;EACnB;CACJ,CAAC,CACL;AACJ;AAEA,MAAa,2BAA2B;AAExC,MAAa,oBAAoB,EAAE,OAAO;CACtC,OAAO,EAAE,OAAO;CAChB,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,KAAK,EAAE,OAAO;CACd,OAAO,EAAE,OAAO;CAChB,QAAQ,EAAE,OAAO;CACjB,UAAU,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;AAC3C,CAAC;AAED,MAAM,0BAA0B,EAAE,OAAO;CACrC,UAAU,EAAE,OAAO;CACnB,WAAW,EAAE,KACT,EAAE,KAAKA,SAAe,GACtB,EAAE,WAAW,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,CACpE;CACA,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;CACzB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;CACxB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;CACxB,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;CACvB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;CACzB,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;CAC1B,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CAClD,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACjD,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACjD,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CAChD,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CAClD,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;CACnD,eAAe,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE;AAC5C,CAAC;AAED,SAAS,qBAAqB,QAAkB,OAAyB;CACrE,OAAO,OAAO,KAAK,UAAU,sBAAsB,OAAO,KAAK,CAAC;AACpE;AAEA,SAAgB,2BAA2B,QAAmB;CAC1D,OAAO,EAAE,KACL,yBACA,EAAE,WAAW,MAAM;EACf,MAAM,aAAa,OAAO,MAAM;EAChC,MAAM,cAAc,OAAO,QAAQ,EAAE,QAAQ;EAC7C,MAAM,iBAAiB,EAAE,kBAAkB,CAAC;EAC5C,MAAM,eAAe,eAAe,SAAS;EAC7C,OAAO;GACH,UAAU,EAAE;GACZ,WAAW,EAAE;GACb,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,CAAC,CAAC;GAClC,MAAM,qBAAqB,EAAE,MAAM,UAAU;GAC7C,MAAM,qBAAqB,EAAE,MAAM,UAAU;GAC7C,KAAK,qBAAqB,EAAE,KAAK,UAAU;GAC3C,OAAO,qBAAqB,EAAE,OAAO,UAAU;GAC/C,QAAQ,qBAAqB,EAAE,QAAQ,WAAW;GAClD,eAAe,EAAE;GACjB,WAAW,eACL;IACI,MAAM,eAAe,KAAK,MAAM,OAAO,CAAC,CAAC;IACzC,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,GAAG,UAAU;IAC5D,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,GAAG,UAAU;IAC5D,KAAK,qBAAqB,EAAE,gBAAgB,CAAC,GAAG,UAAU;IAC1D,OAAO,qBAAqB,EAAE,kBAAkB,CAAC,GAAG,UAAU;IAC9D,QAAQ,qBAAqB,EAAE,mBAAmB,CAAC,GAAG,WAAW;GACrE,IACA;EACV;CACJ,CAAC,CACL;AACJ;AAEA,SAAgB,8BAA8B,QAAmB;CAC7D,OAAO,EAAE,KACL,yBACA,EAAE,WAAW,MAAM;EACf,MAAM,aAAa,OAAO,MAAM;EAChC,MAAM,cAAc,OAAO,QAAQ,EAAE,QAAQ;EAC7C,MAAM,iBAAiB,EAAE,kBAAkB,CAAC;EAC5C,OAAO;GACH,UAAU,EAAE;GACZ,WAAW,EAAE;GACb,OAAO,EAAE,MAAM,KAAK,MAAM,OAAO,CAAC,CAAC;GACnC,MAAM,qBAAqB,EAAE,MAAM,UAAU;GAC7C,MAAM,qBAAqB,EAAE,MAAM,UAAU;GAC7C,KAAK,qBAAqB,EAAE,KAAK,UAAU;GAC3C,OAAO,qBAAqB,EAAE,OAAO,UAAU;GAC/C,QAAQ,qBAAqB,EAAE,QAAQ,WAAW;GAClD,eAAe,EAAE;GACjB,WACI,eAAe,SAAS,IAClB;IACI,OAAO,eAAe,KAAK,MAAM,OAAO,CAAC,CAAC;IAC1C,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,GAAG,UAAU;IAC5D,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,GAAG,UAAU;IAC5D,KAAK,qBAAqB,EAAE,gBAAgB,CAAC,GAAG,UAAU;IAC1D,OAAO,qBAAqB,EAAE,kBAAkB,CAAC,GAAG,UAAU;IAC9D,QAAQ,qBAAqB,EAAE,mBAAmB,CAAC,GAAG,WAAW;GACrE,IACA;EACd;CACJ,CAAC,CACL;AACJ;AAWA,MAAa,yBAAyB,EAAE,KACpC,EAAE,OAAO;CACL,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC;CACtD,WAAW;CACX,OAAO;CACP,mBAAmB,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK;CAChD,kBAAkB;CAClB,YAAY;CACZ,UAAU;CACV,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;AAC1D,CAAC,GACD,EAAE,WAAW,OAAO;CAChB,UAAU,EAAE;CACZ,WAAW,EAAE;CACb,OAAO,EAAE;CACT,mBAAmB,EAAE;CACrB,kBAAkB,EAAE;CACpB,WAAW,EAAE,cAAc,OAAO,mBAAmB,EAAE,UAAU,IAAI,KAAA;CACrE,SAAS,EAAE,YAAY,OAAO,mBAAmB,EAAE,QAAQ,IAAI,KAAA;CAC/D,WAAW,EAAE;AACjB,EAAE,CACN"}
@@ -1,8 +1,8 @@
1
+ import { parse } from "../../shared/validation.js";
1
2
  import { toConnectCallOptions } from "../../shared/request-options.js";
2
3
  import { ChainAnalyticsService as ChainAnalyticsService$1 } from "../../gen/chain/analytics/v1/analytics_read_pb.js";
3
4
  import { GetUnifiedAssetBalancesInputSchema, GetZippedAssetSupplyGroupInputSchema, GetZippedAssetSupplyInputSchema, createUnifiedAssetBalancesResponseSchema, createZippedAssetSupplyGroupResponseSchema, createZippedAssetSupplyResponseSchema } from "./chain-analytics.schemas.js";
4
5
  import { createClient } from "@connectrpc/connect";
5
- import * as v from "valibot";
6
6
  //#region src/services/chain-analytics/chain-analytics.ts
7
7
  /**
8
8
  * Reads public chain analytics chart series.
@@ -18,28 +18,28 @@ var ChainAnalyticsService = class {
18
18
  * Returns route-scoped zToken supply chart columns for one zipped asset.
19
19
  */
20
20
  async getZippedAssetSupply(input, options) {
21
- const parsedInput = v.parse(GetZippedAssetSupplyInputSchema, input);
21
+ const parsedInput = parse(GetZippedAssetSupplyInputSchema, input);
22
22
  await this.#scales.ready();
23
23
  const response = await this.#client.getZippedAssetSupply(parsedInput, toConnectCallOptions(options));
24
- return v.parse(createZippedAssetSupplyResponseSchema(this.#scales), response);
24
+ return parse(createZippedAssetSupplyResponseSchema(this.#scales), response);
25
25
  }
26
26
  /**
27
27
  * Returns grouped zToken supply chart columns for all zipped assets in one group.
28
28
  */
29
29
  async getZippedAssetSupplyGroup(input, options) {
30
- const parsedInput = v.parse(GetZippedAssetSupplyGroupInputSchema, input);
30
+ const parsedInput = parse(GetZippedAssetSupplyGroupInputSchema, input);
31
31
  await this.#scales.ready();
32
32
  const response = await this.#client.getZippedAssetSupplyGroup(parsedInput, toConnectCallOptions(options));
33
- return v.parse(createZippedAssetSupplyGroupResponseSchema(this.#scales), response);
33
+ return parse(createZippedAssetSupplyGroupResponseSchema(this.#scales), response);
34
34
  }
35
35
  /**
36
36
  * Returns total public unified-asset balance chart columns.
37
37
  */
38
38
  async getUnifiedAssetBalances(input, options) {
39
- const parsedInput = v.parse(GetUnifiedAssetBalancesInputSchema, input);
39
+ const parsedInput = parse(GetUnifiedAssetBalancesInputSchema, input);
40
40
  await this.#scales.ready();
41
41
  const response = await this.#client.getUnifiedAssetBalances(parsedInput, toConnectCallOptions(options));
42
- return v.parse(createUnifiedAssetBalancesResponseSchema(this.#scales), response);
42
+ return parse(createUnifiedAssetBalancesResponseSchema(this.#scales), response);
43
43
  }
44
44
  };
45
45
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"chain-analytics.js","names":["#client","Proto.ChainAnalyticsService","#scales"],"sources":["../../../src/services/chain-analytics/chain-analytics.ts"],"sourcesContent":["import * as Proto from \"../../gen/chain/analytics/v1/analytics_read_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport * as v from \"valibot\";\nimport {\n GetUnifiedAssetBalancesInputSchema,\n GetZippedAssetSupplyGroupInputSchema,\n GetZippedAssetSupplyInputSchema,\n createUnifiedAssetBalancesResponseSchema,\n createZippedAssetSupplyGroupResponseSchema,\n createZippedAssetSupplyResponseSchema,\n type GetUnifiedAssetBalancesInput,\n type GetZippedAssetSupplyGroupInput,\n type GetZippedAssetSupplyInput,\n type UnifiedAssetBalancesResponse,\n type ZippedAssetSupplyGroupResponse,\n type ZippedAssetSupplyResponse,\n} from \"./chain-analytics.schemas.js\";\n\n/**\n * Reads public chain analytics chart series.\n */\nexport class ChainAnalyticsService {\n #client: Client<typeof Proto.ChainAnalyticsService>;\n #scales: SdkScales;\n\n constructor(transport: Transport, scales: SdkScales) {\n this.#client = createClient(Proto.ChainAnalyticsService, transport);\n this.#scales = scales;\n }\n\n /**\n * Returns route-scoped zToken supply chart columns for one zipped asset.\n */\n async getZippedAssetSupply(\n input: GetZippedAssetSupplyInput,\n options?: PolyesterRequestOptions,\n ): Promise<ZippedAssetSupplyResponse> {\n const parsedInput = v.parse(GetZippedAssetSupplyInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getZippedAssetSupply(\n parsedInput,\n toConnectCallOptions(options),\n );\n return v.parse(createZippedAssetSupplyResponseSchema(this.#scales), response);\n }\n\n /**\n * Returns grouped zToken supply chart columns for all zipped assets in one group.\n */\n async getZippedAssetSupplyGroup(\n input: GetZippedAssetSupplyGroupInput,\n options?: PolyesterRequestOptions,\n ): Promise<ZippedAssetSupplyGroupResponse> {\n const parsedInput = v.parse(GetZippedAssetSupplyGroupInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getZippedAssetSupplyGroup(\n parsedInput,\n toConnectCallOptions(options),\n );\n return v.parse(createZippedAssetSupplyGroupResponseSchema(this.#scales), response);\n }\n\n /**\n * Returns total public unified-asset balance chart columns.\n */\n async getUnifiedAssetBalances(\n input: GetUnifiedAssetBalancesInput,\n options?: PolyesterRequestOptions,\n ): Promise<UnifiedAssetBalancesResponse> {\n const parsedInput = v.parse(GetUnifiedAssetBalancesInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getUnifiedAssetBalances(\n parsedInput,\n toConnectCallOptions(options),\n );\n return v.parse(createUnifiedAssetBalancesResponseSchema(this.#scales), response);\n }\n}\n"],"mappings":";;;;;;;;;AA0BA,IAAa,wBAAb,MAAmC;CAC/B;CACA;CAEA,YAAY,WAAsB,QAAmB;EACjD,KAAKA,UAAU,aAAaC,yBAA6B,SAAS;EAClE,KAAKC,UAAU;CACnB;;;;CAKA,MAAM,qBACF,OACA,SACkC;EAClC,MAAM,cAAc,EAAE,MAAM,iCAAiC,KAAK;EAClE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,qBAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,sCAAsC,KAAKE,OAAO,GAAG,QAAQ;CAChF;;;;CAKA,MAAM,0BACF,OACA,SACuC;EACvC,MAAM,cAAc,EAAE,MAAM,sCAAsC,KAAK;EACvE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,0BAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,2CAA2C,KAAKE,OAAO,GAAG,QAAQ;CACrF;;;;CAKA,MAAM,wBACF,OACA,SACqC;EACrC,MAAM,cAAc,EAAE,MAAM,oCAAoC,KAAK;EACrE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,wBAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,yCAAyC,KAAKE,OAAO,GAAG,QAAQ;CACnF;AACJ"}
1
+ {"version":3,"file":"chain-analytics.js","names":["#client","Proto.ChainAnalyticsService","#scales"],"sources":["../../../src/services/chain-analytics/chain-analytics.ts"],"sourcesContent":["import * as Proto from \"../../gen/chain/analytics/v1/analytics_read_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n GetUnifiedAssetBalancesInputSchema,\n GetZippedAssetSupplyGroupInputSchema,\n GetZippedAssetSupplyInputSchema,\n createUnifiedAssetBalancesResponseSchema,\n createZippedAssetSupplyGroupResponseSchema,\n createZippedAssetSupplyResponseSchema,\n type GetUnifiedAssetBalancesInput,\n type GetZippedAssetSupplyGroupInput,\n type GetZippedAssetSupplyInput,\n type UnifiedAssetBalancesResponse,\n type ZippedAssetSupplyGroupResponse,\n type ZippedAssetSupplyResponse,\n} from \"./chain-analytics.schemas.js\";\n\n/**\n * Reads public chain analytics chart series.\n */\nexport class ChainAnalyticsService {\n #client: Client<typeof Proto.ChainAnalyticsService>;\n #scales: SdkScales;\n\n constructor(transport: Transport, scales: SdkScales) {\n this.#client = createClient(Proto.ChainAnalyticsService, transport);\n this.#scales = scales;\n }\n\n /**\n * Returns route-scoped zToken supply chart columns for one zipped asset.\n */\n async getZippedAssetSupply(\n input: GetZippedAssetSupplyInput,\n options?: PolyesterRequestOptions,\n ): Promise<ZippedAssetSupplyResponse> {\n const parsedInput = parse(GetZippedAssetSupplyInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getZippedAssetSupply(\n parsedInput,\n toConnectCallOptions(options),\n );\n return parse(createZippedAssetSupplyResponseSchema(this.#scales), response);\n }\n\n /**\n * Returns grouped zToken supply chart columns for all zipped assets in one group.\n */\n async getZippedAssetSupplyGroup(\n input: GetZippedAssetSupplyGroupInput,\n options?: PolyesterRequestOptions,\n ): Promise<ZippedAssetSupplyGroupResponse> {\n const parsedInput = parse(GetZippedAssetSupplyGroupInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getZippedAssetSupplyGroup(\n parsedInput,\n toConnectCallOptions(options),\n );\n return parse(createZippedAssetSupplyGroupResponseSchema(this.#scales), response);\n }\n\n /**\n * Returns total public unified-asset balance chart columns.\n */\n async getUnifiedAssetBalances(\n input: GetUnifiedAssetBalancesInput,\n options?: PolyesterRequestOptions,\n ): Promise<UnifiedAssetBalancesResponse> {\n const parsedInput = parse(GetUnifiedAssetBalancesInputSchema, input);\n await this.#scales.ready();\n const response = await this.#client.getUnifiedAssetBalances(\n parsedInput,\n toConnectCallOptions(options),\n );\n return parse(createUnifiedAssetBalancesResponseSchema(this.#scales), response);\n }\n}\n"],"mappings":";;;;;;;;;AA0BA,IAAa,wBAAb,MAAmC;CAC/B;CACA;CAEA,YAAY,WAAsB,QAAmB;EACjD,KAAKA,UAAU,aAAaC,yBAA6B,SAAS;EAClE,KAAKC,UAAU;CACnB;;;;CAKA,MAAM,qBACF,OACA,SACkC;EAClC,MAAM,cAAc,MAAM,iCAAiC,KAAK;EAChE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,qBAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,sCAAsC,KAAKE,OAAO,GAAG,QAAQ;CAC9E;;;;CAKA,MAAM,0BACF,OACA,SACuC;EACvC,MAAM,cAAc,MAAM,sCAAsC,KAAK;EACrE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,0BAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,2CAA2C,KAAKE,OAAO,GAAG,QAAQ;CACnF;;;;CAKA,MAAM,wBACF,OACA,SACqC;EACrC,MAAM,cAAc,MAAM,oCAAoC,KAAK;EACnE,MAAM,KAAKA,QAAQ,MAAM;EACzB,MAAM,WAAW,MAAM,KAAKF,QAAQ,wBAChC,aACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,yCAAyC,KAAKE,OAAO,GAAG,QAAQ;CACjF;AACJ"}
@@ -1,10 +1,10 @@
1
+ import { parse } from "../../shared/validation.js";
1
2
  import { toConnectCallOptions } from "../../shared/request-options.js";
2
3
  import { removeUndefined } from "../../utils/remove-undefined.js";
3
4
  import { resolveAccountScopedInput } from "../subaccount-resolver.js";
4
5
  import { DepositAddressService } from "../../gen/chain/deposit/v1/deposit_pb.js";
5
6
  import { CreateDepositAddressInputSchema, DepositAddressSchema, DepositAddressesSchema, ListDepositAddressesInputSchema } from "./deposit.schemas.js";
6
7
  import { createClient } from "@connectrpc/connect";
7
- import * as v from "valibot";
8
8
  //#region src/services/deposit/deposit.ts
9
9
  /**
10
10
  * Manages chain deposit addresses for root accounts and subaccounts.
@@ -21,19 +21,19 @@ var DepositService = class {
21
21
  */
22
22
  async createAddress(input, options) {
23
23
  const resolvedInput = resolveAccountScopedInput(input, this.#resolver);
24
- const validatedInput = v.parse(CreateDepositAddressInputSchema, resolvedInput);
24
+ const validatedInput = parse(CreateDepositAddressInputSchema, resolvedInput);
25
25
  const res = await this.#client.createDepositAddress(removeUndefined(validatedInput), toConnectCallOptions(options));
26
26
  if (!res.depositAddress) return null;
27
- return v.parse(DepositAddressSchema, res.depositAddress);
27
+ return parse(DepositAddressSchema, res.depositAddress);
28
28
  }
29
29
  /**
30
30
  * Lists known deposit addresses for the resolved account target, optionally filtered by chain. Results are ordered by ascending chain id in the generated proto contract.
31
31
  */
32
32
  async listAddresses(input = {}, options) {
33
33
  const resolvedInput = resolveAccountScopedInput(input, this.#resolver);
34
- const validatedInput = v.parse(ListDepositAddressesInputSchema, resolvedInput);
34
+ const validatedInput = parse(ListDepositAddressesInputSchema, resolvedInput);
35
35
  const res = await this.#client.listDepositAddresses(removeUndefined(validatedInput), toConnectCallOptions(options));
36
- return v.parse(DepositAddressesSchema, res.depositAddresses);
36
+ return parse(DepositAddressesSchema, res.depositAddresses);
37
37
  }
38
38
  };
39
39
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"deposit.js","names":["#client","Proto.DepositAddressService","#resolver"],"sources":["../../../src/services/deposit/deposit.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/deposit/v1/deposit_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport * as v from \"valibot\";\nimport {\n CreateDepositAddressInputSchema,\n DepositAddressSchema,\n DepositAddressesSchema,\n ListDepositAddressesInputSchema,\n type CreateDepositAddressInput,\n type ListDepositAddressesInput,\n type DepositAddress,\n} from \"./deposit.schemas.js\";\n\n/**\n * Manages chain deposit addresses for root accounts and subaccounts.\n */\nexport class DepositService {\n #client: Client<typeof Proto.DepositAddressService>;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.DepositAddressService, transport);\n this.#resolver = resolver;\n }\n\n /**\n * Creates or returns the deposit address assigned to the resolved account target for a selected chain. Returns null if the backend response does not include an address.\n */\n async createAddress(\n input: CreateDepositAddressInput,\n options?: PolyesterMutationOptions,\n ): Promise<DepositAddress | null> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = v.parse(CreateDepositAddressInputSchema, resolvedInput);\n const res = await this.#client.createDepositAddress(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.depositAddress) return null;\n return v.parse(DepositAddressSchema, res.depositAddress);\n }\n\n /**\n * Lists known deposit addresses for the resolved account target, optionally filtered by chain. Results are ordered by ascending chain id in the generated proto contract.\n */\n async listAddresses(\n input: ListDepositAddressesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<DepositAddress[]> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = v.parse(ListDepositAddressesInputSchema, resolvedInput);\n const res = await this.#client.listDepositAddresses(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return v.parse(DepositAddressesSchema, res.depositAddresses);\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBA,IAAa,iBAAb,MAA4B;CACxB;CACA;CAEA,YAAY,WAAsB,UAA+B;EAC7D,KAAKA,UAAU,aAAaC,uBAA6B,SAAS;EAClE,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,cACF,OACA,SAC8B;EAC9B,MAAM,gBAAgB,0BAA0B,OAAO,KAAKA,SAAS;EACrE,MAAM,iBAAiB,EAAE,MAAM,iCAAiC,aAAa;EAC7E,MAAM,MAAM,MAAM,KAAKF,QAAQ,qBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,gBAAgB,OAAO;EAChC,OAAO,EAAE,MAAM,sBAAsB,IAAI,cAAc;CAC3D;;;;CAKA,MAAM,cACF,QAAmC,CAAC,GACpC,SACyB;EACzB,MAAM,gBAAgB,0BAA0B,OAAO,KAAKE,SAAS;EACrE,MAAM,iBAAiB,EAAE,MAAM,iCAAiC,aAAa;EAC7E,MAAM,MAAM,MAAM,KAAKF,QAAQ,qBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,wBAAwB,IAAI,gBAAgB;CAC/D;AACJ"}
1
+ {"version":3,"file":"deposit.js","names":["#client","Proto.DepositAddressService","#resolver"],"sources":["../../../src/services/deposit/deposit.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/deposit/v1/deposit_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n CreateDepositAddressInputSchema,\n DepositAddressSchema,\n DepositAddressesSchema,\n ListDepositAddressesInputSchema,\n type CreateDepositAddressInput,\n type ListDepositAddressesInput,\n type DepositAddress,\n} from \"./deposit.schemas.js\";\n\n/**\n * Manages chain deposit addresses for root accounts and subaccounts.\n */\nexport class DepositService {\n #client: Client<typeof Proto.DepositAddressService>;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.DepositAddressService, transport);\n this.#resolver = resolver;\n }\n\n /**\n * Creates or returns the deposit address assigned to the resolved account target for a selected chain. Returns null if the backend response does not include an address.\n */\n async createAddress(\n input: CreateDepositAddressInput,\n options?: PolyesterMutationOptions,\n ): Promise<DepositAddress | null> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(CreateDepositAddressInputSchema, resolvedInput);\n const res = await this.#client.createDepositAddress(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.depositAddress) return null;\n return parse(DepositAddressSchema, res.depositAddress);\n }\n\n /**\n * Lists known deposit addresses for the resolved account target, optionally filtered by chain. Results are ordered by ascending chain id in the generated proto contract.\n */\n async listAddresses(\n input: ListDepositAddressesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<DepositAddress[]> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(ListDepositAddressesInputSchema, resolvedInput);\n const res = await this.#client.listDepositAddresses(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return parse(DepositAddressesSchema, res.depositAddresses);\n }\n}\n"],"mappings":";;;;;;;;;;;AAuBA,IAAa,iBAAb,MAA4B;CACxB;CACA;CAEA,YAAY,WAAsB,UAA+B;EAC7D,KAAKA,UAAU,aAAaC,uBAA6B,SAAS;EAClE,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,cACF,OACA,SAC8B;EAC9B,MAAM,gBAAgB,0BAA0B,OAAO,KAAKA,SAAS;EACrE,MAAM,iBAAiB,MAAM,iCAAiC,aAAa;EAC3E,MAAM,MAAM,MAAM,KAAKF,QAAQ,qBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,gBAAgB,OAAO;EAChC,OAAO,MAAM,sBAAsB,IAAI,cAAc;CACzD;;;;CAKA,MAAM,cACF,QAAmC,CAAC,GACpC,SACyB;EACzB,MAAM,gBAAgB,0BAA0B,OAAO,KAAKE,SAAS;EACrE,MAAM,iBAAiB,MAAM,iCAAiC,aAAa;EAC3E,MAAM,MAAM,MAAM,KAAKF,QAAQ,qBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,wBAAwB,IAAI,gBAAgB;CAC7D;AACJ"}
@@ -1,3 +1,4 @@
1
+ import { parse } from "../../shared/validation.js";
1
2
  import { toConnectCallOptions } from "../../shared/request-options.js";
2
3
  import { removeUndefined } from "../../utils/remove-undefined.js";
3
4
  import { resolveAccountScopedInput } from "../subaccount-resolver.js";
@@ -5,7 +6,6 @@ import { formatConnectError, isResourceNotFoundError } from "../../utils/errors.
5
6
  import { GuardSignerService as GuardSignerService$1 } from "../../gen/chain/guard/v1/guard_signer_pb.js";
6
7
  import { BatchGuardApprovalsSchema, BatchSignProtectedActionInputSchema, CreateGuardSignerWalletResultSchema, ExportGuardSignerWalletResultSchema, GuardApprovalSchema, GuardSignerScopedInputSchema, GuardSignerStatusSchema, RotateGuardSignerWalletResultSchema, SignProtectedActionInputSchema } from "./guard-signer.schemas.js";
7
8
  import { createClient } from "@connectrpc/connect";
8
- import * as v from "valibot";
9
9
  //#region src/services/guard-signer/guard-signer.ts
10
10
  const GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE = "guard signer wallet not found";
11
11
  function isGuardSignerWalletNotFoundError(err) {
@@ -25,18 +25,18 @@ var GuardSignerService = class {
25
25
  * Creates a guard signer wallet for the resolved account target and returns the generated signer EVM address.
26
26
  */
27
27
  async createWallet(input = {}, options) {
28
- const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));
28
+ const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
29
29
  const response = await this.#client.createGuardSignerWallet(removeUndefined(request), toConnectCallOptions(options));
30
- return v.parse(CreateGuardSignerWalletResultSchema, response);
30
+ return parse(CreateGuardSignerWalletResultSchema, response);
31
31
  }
32
32
  /**
33
33
  * Returns stored and live guard signer status for the resolved account target, including signer address, on-chain signer, initialization state, nonce, and nonce space. Returns null when the backend reports the wallet is not found.
34
34
  */
35
35
  async getStatus(input = {}, options) {
36
- const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));
36
+ const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
37
37
  try {
38
38
  const response = await this.#client.getGuardSignerStatus(removeUndefined(request), toConnectCallOptions(options));
39
- return response.status ? v.parse(GuardSignerStatusSchema, response.status) : null;
39
+ return response.status ? parse(GuardSignerStatusSchema, response.status) : null;
40
40
  } catch (err) {
41
41
  if (isResourceNotFoundError(err) || isGuardSignerWalletNotFoundError(err)) return null;
42
42
  throw err;
@@ -46,34 +46,34 @@ var GuardSignerService = class {
46
46
  * Creates one guard approval signature for a supported protected action, such as whitelist updates or whitelist requirement changes. Returns null if the backend response has no approval payload.
47
47
  */
48
48
  async signProtectedAction(input, options) {
49
- const request = v.parse(SignProtectedActionInputSchema, this.resolveInput(input));
49
+ const request = parse(SignProtectedActionInputSchema, this.resolveInput(input));
50
50
  const response = await this.#client.signProtectedAction(removeUndefined(request), toConnectCallOptions(options));
51
- return response.approval ? v.parse(GuardApprovalSchema, response.approval) : null;
51
+ return response.approval ? parse(GuardApprovalSchema, response.approval) : null;
52
52
  }
53
53
  /**
54
54
  * Creates ordered guard approval signatures for a batch of protected actions and verifies the backend returned one approval per requested action.
55
55
  */
56
56
  async batchSignProtectedActions(input, options) {
57
- const request = v.parse(BatchSignProtectedActionInputSchema, this.resolveInput(input));
57
+ const request = parse(BatchSignProtectedActionInputSchema, this.resolveInput(input));
58
58
  const response = await this.#client.batchSignProtectedActions(removeUndefined(request), toConnectCallOptions(options));
59
59
  if (response.approvals.length !== input.actions.length) throw new Error("Backend returned a mismatched number of GuardSigner approvals.");
60
- return v.parse(BatchGuardApprovalsSchema, response);
60
+ return parse(BatchGuardApprovalsSchema, response);
61
61
  }
62
62
  /**
63
63
  * Generates a backend-managed replacement guard signer for the resolved account target and returns the new signer address plus the rotation approval payload.
64
64
  */
65
65
  async rotateWallet(input = {}, options) {
66
- const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));
66
+ const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
67
67
  const response = await this.#client.rotateGuardSignerWallet(removeUndefined(request), toConnectCallOptions(options));
68
- return v.parse(RotateGuardSignerWalletResultSchema, response);
68
+ return parse(RotateGuardSignerWalletResultSchema, response);
69
69
  }
70
70
  /**
71
71
  * Exports guard signer private key material for the resolved account target after owner authorization and fresh step-up, returning the backend export response.
72
72
  */
73
73
  async exportWallet(input = {}, options) {
74
- const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));
74
+ const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));
75
75
  const response = await this.#client.exportGuardSignerWallet(removeUndefined(request), toConnectCallOptions(options));
76
- return v.parse(ExportGuardSignerWalletResultSchema, response);
76
+ return parse(ExportGuardSignerWalletResultSchema, response);
77
77
  }
78
78
  resolveInput(input) {
79
79
  return resolveAccountScopedInput(input, this.#resolver);
@@ -1 +1 @@
1
- {"version":3,"file":"guard-signer.js","names":["#client","Proto.GuardSignerService","#resolver"],"sources":["../../../src/services/guard-signer/guard-signer.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/guard/v1/guard_signer_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport {\n BatchGuardApprovalsSchema,\n BatchSignProtectedActionInputSchema,\n CreateGuardSignerWalletResultSchema,\n ExportGuardSignerWalletResultSchema,\n GuardApprovalSchema,\n GuardSignerScopedInputSchema,\n GuardSignerStatusSchema,\n RotateGuardSignerWalletResultSchema,\n SignProtectedActionInputSchema,\n type BatchGuardApprovals,\n type BatchSignProtectedActionInput,\n type CreateGuardSignerWalletResult,\n type ExportGuardSignerWalletResult,\n type GuardApproval,\n type GuardSignerScopedInput,\n type GuardSignerStatus,\n type RotateGuardSignerWalletResult,\n type SignProtectedActionInput,\n} from \"./guard-signer.schemas.js\";\nimport { formatConnectError, isResourceNotFoundError } from \"../../utils/errors.js\";\nimport * as v from \"valibot\";\n\nconst GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE = \"guard signer wallet not found\";\n\nfunction isGuardSignerWalletNotFoundError(err: unknown): boolean {\n return formatConnectError(err, \"\")\n .toLowerCase()\n .includes(GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE);\n}\n\n/**\n * Manages backend guard signer wallets and approval signatures for protected Polyester account actions.\n */\nexport class GuardSignerService {\n #client: Client<typeof Proto.GuardSignerService>;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.GuardSignerService, transport);\n this.#resolver = resolver;\n }\n\n /**\n * Creates a guard signer wallet for the resolved account target and returns the generated signer EVM address.\n */\n async createWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<CreateGuardSignerWalletResult> {\n const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.createGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return v.parse(CreateGuardSignerWalletResultSchema, response);\n }\n\n /**\n * Returns stored and live guard signer status for the resolved account target, including signer address, on-chain signer, initialization state, nonce, and nonce space. Returns null when the backend reports the wallet is not found.\n */\n async getStatus(\n input: GuardSignerScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<GuardSignerStatus | null> {\n const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n try {\n const response = await this.#client.getGuardSignerStatus(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.status ? v.parse(GuardSignerStatusSchema, response.status) : null;\n } catch (err) {\n if (isResourceNotFoundError(err) || isGuardSignerWalletNotFoundError(err)) return null;\n throw err;\n }\n }\n\n /**\n * Creates one guard approval signature for a supported protected action, such as whitelist updates or whitelist requirement changes. Returns null if the backend response has no approval payload.\n */\n async signProtectedAction(\n input: SignProtectedActionInput,\n options?: PolyesterMutationOptions,\n ): Promise<GuardApproval | null> {\n const request = v.parse(SignProtectedActionInputSchema, this.resolveInput(input));\n const response = await this.#client.signProtectedAction(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.approval ? v.parse(GuardApprovalSchema, response.approval) : null;\n }\n\n /**\n * Creates ordered guard approval signatures for a batch of protected actions and verifies the backend returned one approval per requested action.\n */\n async batchSignProtectedActions(\n input: BatchSignProtectedActionInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchGuardApprovals> {\n const request = v.parse(BatchSignProtectedActionInputSchema, this.resolveInput(input));\n const response = await this.#client.batchSignProtectedActions(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n\n if (response.approvals.length !== input.actions.length) {\n throw new Error(\"Backend returned a mismatched number of GuardSigner approvals.\");\n }\n\n return v.parse(BatchGuardApprovalsSchema, response);\n }\n\n /**\n * Generates a backend-managed replacement guard signer for the resolved account target and returns the new signer address plus the rotation approval payload.\n */\n async rotateWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<RotateGuardSignerWalletResult> {\n const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.rotateGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return v.parse(RotateGuardSignerWalletResultSchema, response);\n }\n\n /**\n * Exports guard signer private key material for the resolved account target after owner authorization and fresh step-up, returning the backend export response.\n */\n async exportWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<ExportGuardSignerWalletResult> {\n const request = v.parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.exportGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return v.parse(ExportGuardSignerWalletResultSchema, response);\n }\n\n private resolveInput<TInput extends AccountScopedInput>(input: TInput): TInput {\n return resolveAccountScopedInput(input, this.#resolver);\n }\n}\n"],"mappings":";;;;;;;;;AAiCA,MAAM,wCAAwC;AAE9C,SAAS,iCAAiC,KAAuB;CAC7D,OAAO,mBAAmB,KAAK,EAAE,CAAC,CAC7B,YAAY,CAAC,CACb,SAAS,qCAAqC;AACvD;;;;AAKA,IAAa,qBAAb,MAAgC;CAC5B;CACA;CAEA,YAAY,WAAsB,UAA+B;EAC7D,KAAKA,UAAU,aAAaC,sBAA0B,SAAS;EAC/D,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,EAAE,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC9E,MAAM,WAAW,MAAM,KAAKF,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,qCAAqC,QAAQ;CAChE;;;;CAKA,MAAM,UACF,QAAgC,CAAC,GACjC,SACiC;EACjC,MAAM,UAAU,EAAE,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC9E,IAAI;GACA,MAAM,WAAW,MAAM,KAAKA,QAAQ,qBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;GACA,OAAO,SAAS,SAAS,EAAE,MAAM,yBAAyB,SAAS,MAAM,IAAI;EACjF,SAAS,KAAK;GACV,IAAI,wBAAwB,GAAG,KAAK,iCAAiC,GAAG,GAAG,OAAO;GAClF,MAAM;EACV;CACJ;;;;CAKA,MAAM,oBACF,OACA,SAC6B;EAC7B,MAAM,UAAU,EAAE,MAAM,gCAAgC,KAAK,aAAa,KAAK,CAAC;EAChF,MAAM,WAAW,MAAM,KAAKA,QAAQ,oBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,SAAS,WAAW,EAAE,MAAM,qBAAqB,SAAS,QAAQ,IAAI;CACjF;;;;CAKA,MAAM,0BACF,OACA,SAC4B;EAC5B,MAAM,UAAU,EAAE,MAAM,qCAAqC,KAAK,aAAa,KAAK,CAAC;EACrF,MAAM,WAAW,MAAM,KAAKA,QAAQ,0BAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EAEA,IAAI,SAAS,UAAU,WAAW,MAAM,QAAQ,QAC5C,MAAM,IAAI,MAAM,gEAAgE;EAGpF,OAAO,EAAE,MAAM,2BAA2B,QAAQ;CACtD;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,EAAE,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC9E,MAAM,WAAW,MAAM,KAAKA,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,qCAAqC,QAAQ;CAChE;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,EAAE,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC9E,MAAM,WAAW,MAAM,KAAKA,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,qCAAqC,QAAQ;CAChE;CAEA,aAAwD,OAAuB;EAC3E,OAAO,0BAA0B,OAAO,KAAKE,SAAS;CAC1D;AACJ"}
1
+ {"version":3,"file":"guard-signer.js","names":["#client","Proto.GuardSignerService","#resolver"],"sources":["../../../src/services/guard-signer/guard-signer.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/chain/guard/v1/guard_signer_pb.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport {\n BatchGuardApprovalsSchema,\n BatchSignProtectedActionInputSchema,\n CreateGuardSignerWalletResultSchema,\n ExportGuardSignerWalletResultSchema,\n GuardApprovalSchema,\n GuardSignerScopedInputSchema,\n GuardSignerStatusSchema,\n RotateGuardSignerWalletResultSchema,\n SignProtectedActionInputSchema,\n type BatchGuardApprovals,\n type BatchSignProtectedActionInput,\n type CreateGuardSignerWalletResult,\n type ExportGuardSignerWalletResult,\n type GuardApproval,\n type GuardSignerScopedInput,\n type GuardSignerStatus,\n type RotateGuardSignerWalletResult,\n type SignProtectedActionInput,\n} from \"./guard-signer.schemas.js\";\nimport { formatConnectError, isResourceNotFoundError } from \"../../utils/errors.js\";\nimport { parse } from \"../../shared/validation.js\";\n\nconst GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE = \"guard signer wallet not found\";\n\nfunction isGuardSignerWalletNotFoundError(err: unknown): boolean {\n return formatConnectError(err, \"\")\n .toLowerCase()\n .includes(GUARD_SIGNER_WALLET_NOT_FOUND_MESSAGE);\n}\n\n/**\n * Manages backend guard signer wallets and approval signatures for protected Polyester account actions.\n */\nexport class GuardSignerService {\n #client: Client<typeof Proto.GuardSignerService>;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.GuardSignerService, transport);\n this.#resolver = resolver;\n }\n\n /**\n * Creates a guard signer wallet for the resolved account target and returns the generated signer EVM address.\n */\n async createWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<CreateGuardSignerWalletResult> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.createGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(CreateGuardSignerWalletResultSchema, response);\n }\n\n /**\n * Returns stored and live guard signer status for the resolved account target, including signer address, on-chain signer, initialization state, nonce, and nonce space. Returns null when the backend reports the wallet is not found.\n */\n async getStatus(\n input: GuardSignerScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<GuardSignerStatus | null> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n try {\n const response = await this.#client.getGuardSignerStatus(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.status ? parse(GuardSignerStatusSchema, response.status) : null;\n } catch (err) {\n if (isResourceNotFoundError(err) || isGuardSignerWalletNotFoundError(err)) return null;\n throw err;\n }\n }\n\n /**\n * Creates one guard approval signature for a supported protected action, such as whitelist updates or whitelist requirement changes. Returns null if the backend response has no approval payload.\n */\n async signProtectedAction(\n input: SignProtectedActionInput,\n options?: PolyesterMutationOptions,\n ): Promise<GuardApproval | null> {\n const request = parse(SignProtectedActionInputSchema, this.resolveInput(input));\n const response = await this.#client.signProtectedAction(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return response.approval ? parse(GuardApprovalSchema, response.approval) : null;\n }\n\n /**\n * Creates ordered guard approval signatures for a batch of protected actions and verifies the backend returned one approval per requested action.\n */\n async batchSignProtectedActions(\n input: BatchSignProtectedActionInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchGuardApprovals> {\n const request = parse(BatchSignProtectedActionInputSchema, this.resolveInput(input));\n const response = await this.#client.batchSignProtectedActions(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n\n if (response.approvals.length !== input.actions.length) {\n throw new Error(\"Backend returned a mismatched number of GuardSigner approvals.\");\n }\n\n return parse(BatchGuardApprovalsSchema, response);\n }\n\n /**\n * Generates a backend-managed replacement guard signer for the resolved account target and returns the new signer address plus the rotation approval payload.\n */\n async rotateWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<RotateGuardSignerWalletResult> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.rotateGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(RotateGuardSignerWalletResultSchema, response);\n }\n\n /**\n * Exports guard signer private key material for the resolved account target after owner authorization and fresh step-up, returning the backend export response.\n */\n async exportWallet(\n input: GuardSignerScopedInput = {},\n options?: PolyesterMutationOptions,\n ): Promise<ExportGuardSignerWalletResult> {\n const request = parse(GuardSignerScopedInputSchema, this.resolveInput(input));\n const response = await this.#client.exportGuardSignerWallet(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(ExportGuardSignerWalletResultSchema, response);\n }\n\n private resolveInput<TInput extends AccountScopedInput>(input: TInput): TInput {\n return resolveAccountScopedInput(input, this.#resolver);\n }\n}\n"],"mappings":";;;;;;;;;AAiCA,MAAM,wCAAwC;AAE9C,SAAS,iCAAiC,KAAuB;CAC7D,OAAO,mBAAmB,KAAK,EAAE,CAAC,CAC7B,YAAY,CAAC,CACb,SAAS,qCAAqC;AACvD;;;;AAKA,IAAa,qBAAb,MAAgC;CAC5B;CACA;CAEA,YAAY,WAAsB,UAA+B;EAC7D,KAAKA,UAAU,aAAaC,sBAA0B,SAAS;EAC/D,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,MAAM,WAAW,MAAM,KAAKF,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,qCAAqC,QAAQ;CAC9D;;;;CAKA,MAAM,UACF,QAAgC,CAAC,GACjC,SACiC;EACjC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,IAAI;GACA,MAAM,WAAW,MAAM,KAAKA,QAAQ,qBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;GACA,OAAO,SAAS,SAAS,MAAM,yBAAyB,SAAS,MAAM,IAAI;EAC/E,SAAS,KAAK;GACV,IAAI,wBAAwB,GAAG,KAAK,iCAAiC,GAAG,GAAG,OAAO;GAClF,MAAM;EACV;CACJ;;;;CAKA,MAAM,oBACF,OACA,SAC6B;EAC7B,MAAM,UAAU,MAAM,gCAAgC,KAAK,aAAa,KAAK,CAAC;EAC9E,MAAM,WAAW,MAAM,KAAKA,QAAQ,oBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,SAAS,WAAW,MAAM,qBAAqB,SAAS,QAAQ,IAAI;CAC/E;;;;CAKA,MAAM,0BACF,OACA,SAC4B;EAC5B,MAAM,UAAU,MAAM,qCAAqC,KAAK,aAAa,KAAK,CAAC;EACnF,MAAM,WAAW,MAAM,KAAKA,QAAQ,0BAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EAEA,IAAI,SAAS,UAAU,WAAW,MAAM,QAAQ,QAC5C,MAAM,IAAI,MAAM,gEAAgE;EAGpF,OAAO,MAAM,2BAA2B,QAAQ;CACpD;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,MAAM,WAAW,MAAM,KAAKA,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,qCAAqC,QAAQ;CAC9D;;;;CAKA,MAAM,aACF,QAAgC,CAAC,GACjC,SACsC;EACtC,MAAM,UAAU,MAAM,8BAA8B,KAAK,aAAa,KAAK,CAAC;EAC5E,MAAM,WAAW,MAAM,KAAKA,QAAQ,wBAChC,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,qCAAqC,QAAQ;CAC9D;CAEA,aAAwD,OAAuB;EAC3E,OAAO,0BAA0B,OAAO,KAAKE,SAAS;CAC1D;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap.d.ts","names":[],"sources":["../../../src/services/heatmap/heatmap.ts"],"mappings":";;;;;;;;UA0BiB;EACb,oBACI,OAAO,0BACP,UAAU,0BACX,QAAQ;;UAGL,kCAAkC,mBAAmB;EAC3D;EACA,UAAU;;;;;cAWD,0BAA0B;;EAOvB,YAAA,WAAW,WAAW,UAAU,mBAAmB,QAAQ;;;;EAWjE,oBACF,OAAO,0BACP,UAAU,0BACX,QAAQ;;;;EA4BX,cAAc,OAAO"}
1
+ {"version":3,"file":"heatmap.d.ts","names":[],"sources":["../../../src/services/heatmap/heatmap.ts"],"mappings":";;;;;;;;UA2BiB;EACb,oBACI,OAAO,0BACP,UAAU,0BACX,QAAQ;;UAGL,kCAAkC,mBAAmB;EAC3D;EACA,UAAU;;;;;cAWD,0BAA0B;;EAOvB,YAAA,WAAW,WAAW,UAAU,mBAAmB,QAAQ;;;;EAWjE,oBACF,OAAO,0BACP,UAAU,0BACX,QAAQ;;;;EA4BX,cAAc,OAAO"}
@@ -1,3 +1,4 @@
1
+ import { parse } from "../../shared/validation.js";
1
2
  import { toConnectCallOptions } from "../../shared/request-options.js";
2
3
  import { publicationHandlerErrorContext } from "../../shared/subscription-errors.js";
3
4
  import { createReadyGate } from "../../shared/decimal-surface.js";
@@ -32,27 +33,27 @@ var HeatmapService = class {
32
33
  * Fetches order book heatmap data for a symbol, interval, depth, and quantity mode using either an absolute time range or cursor pagination. The response includes a keyframe anchor, delta buckets, pagination metadata, and live-anchor fields when available.
33
34
  */
34
35
  async getOrderbookHeatmap(input, options) {
35
- const parsed = v.parse(GetOrderbookHeatmapInputSchema, input);
36
+ const parsed = parse(GetOrderbookHeatmapInputSchema, input);
36
37
  await this.#scales.ready();
37
38
  const res = await this.#client.getOrderbookHeatmap({
38
39
  symbolId: parsed.symbolId,
39
40
  interval: parsed.interval,
40
41
  depth: parsed.depth,
41
42
  quantityMode: parsed.quantityMode,
42
- limit: parsed.limit ?? 0,
43
+ limit: parsed.limit,
43
44
  pageToken: parsed.pageToken,
44
45
  timeRange: parsed.timeRange != null ? create(HeatmapTimeRangeSchema, {
45
46
  startTime: parsed.timeRange.startTime,
46
47
  endTime: parsed.timeRange.endTime
47
48
  }) : void 0
48
49
  }, toConnectCallOptions(options));
49
- return v.parse(this.#responseSchema, res);
50
+ return parse(this.#responseSchema, res);
50
51
  }
51
52
  /**
52
53
  * Subscribes to live heatmap buckets on public:spot:market:heatmap:{interval}:{symbolId}:proto and emits parsed bid/ask delta buckets for the selected interval.
53
54
  */
54
55
  subscribeLive(input) {
55
- const params = v.parse(SubscribeHeatmapLiveParamsSchema, {
56
+ const params = parse(SubscribeHeatmapLiveParamsSchema, {
56
57
  symbolId: input.symbolId,
57
58
  interval: input.interval
58
59
  });
@@ -63,7 +64,7 @@ var HeatmapService = class {
63
64
  schema: HeatmapLiveBucketSchema,
64
65
  onPublication: (data) => {
65
66
  gate.run(() => {
66
- const bucket = v.parse(this.#liveBucketSchema, data);
67
+ const bucket = parse(this.#liveBucketSchema, data);
67
68
  input.onEvent(bucket);
68
69
  });
69
70
  },
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap.js","names":["#client","HeatmapRpc","#realtime","#scales","#responseSchema","#liveBucketSchema","ProtoHeatmapLiveBucketSchema"],"sources":["../../../src/services/heatmap/heatmap.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { create } from \"@bufbuild/protobuf\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport {\n HeatmapService as HeatmapRpc,\n HeatmapLiveBucketSchema as ProtoHeatmapLiveBucketSchema,\n HeatmapTimeRangeSchema,\n} from \"../../gen/marketdata/v1/heatmap_pb.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { createReadyGate, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { HEATMAP_INTERVAL_VALUES, type HeatmapIntervalValue } from \"./heatmap.codecs.js\";\nimport * as v from \"valibot\";\nimport {\n GetOrderbookHeatmapInputSchema,\n createOrderbookHeatmapLiveBucketSchema,\n createOrderbookHeatmapResponseSchema,\n type GetOrderbookHeatmapInput,\n type OrderbookHeatmapLiveBucket,\n type OrderbookHeatmapResponse,\n} from \"./heatmap.schemas.js\";\n\nexport interface OrderbookHeatmapProvider {\n getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse>;\n}\n\ninterface SubscribeHeatmapLiveInput extends BaseSubscribeInput<OrderbookHeatmapLiveBucket> {\n symbolId: number;\n interval: HeatmapIntervalValue;\n}\n\nconst SubscribeHeatmapLiveParamsSchema = v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n interval: v.picklist(HEATMAP_INTERVAL_VALUES),\n});\n\n/**\n * Reads historical order book heatmap chains and streams live heatmap buckets.\n */\nexport class HeatmapService implements OrderbookHeatmapProvider {\n #client: Client<typeof HeatmapRpc>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n #responseSchema: ReturnType<typeof createOrderbookHeatmapResponseSchema>;\n #liveBucketSchema: ReturnType<typeof createOrderbookHeatmapLiveBucketSchema>;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(HeatmapRpc, transport);\n this.#realtime = realtime;\n this.#scales = scales;\n this.#responseSchema = createOrderbookHeatmapResponseSchema(scales);\n this.#liveBucketSchema = createOrderbookHeatmapLiveBucketSchema(scales);\n }\n\n /**\n * Fetches order book heatmap data for a symbol, interval, depth, and quantity mode using either an absolute time range or cursor pagination. The response includes a keyframe anchor, delta buckets, pagination metadata, and live-anchor fields when available.\n */\n async getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse> {\n const parsed = v.parse(GetOrderbookHeatmapInputSchema, input);\n await this.#scales.ready();\n\n const res = await this.#client.getOrderbookHeatmap(\n {\n symbolId: parsed.symbolId,\n interval: parsed.interval,\n depth: parsed.depth,\n quantityMode: parsed.quantityMode,\n limit: parsed.limit ?? 0,\n pageToken: parsed.pageToken,\n timeRange:\n parsed.timeRange != null\n ? create(HeatmapTimeRangeSchema, {\n startTime: parsed.timeRange.startTime,\n endTime: parsed.timeRange.endTime,\n })\n : undefined,\n },\n toConnectCallOptions(options),\n );\n return v.parse(this.#responseSchema, res);\n }\n\n /**\n * Subscribes to live heatmap buckets on public:spot:market:heatmap:{interval}:{symbolId}:proto and emits parsed bid/ask delta buckets for the selected interval.\n */\n subscribeLive(input: SubscribeHeatmapLiveInput): () => void {\n const params = v.parse(SubscribeHeatmapLiveParamsSchema, {\n symbolId: input.symbolId,\n interval: input.interval,\n });\n const channel = `public:spot:market:heatmap:${params.interval}:${params.symbolId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoHeatmapLiveBucketSchema,\n onPublication: (data) => {\n gate.run(() => {\n const bucket = v.parse(this.#liveBucketSchema, data);\n input.onEvent(bucket);\n });\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;AAsCA,MAAM,mCAAmC,EAAE,OAAO;CAC9C,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC;CACtD,UAAU,EAAE,SAAS,uBAAuB;AAChD,CAAC;;;;AAKD,IAAa,iBAAb,MAAgE;CAC5D;CACA;CACA;CACA;CACA;CAEA,YAAY,WAAsB,UAA6B,QAAmB;EAC9E,KAAKA,UAAU,aAAaC,kBAAY,SAAS;EACjD,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,kBAAkB,qCAAqC,MAAM;EAClE,KAAKC,oBAAoB,uCAAuC,MAAM;CAC1E;;;;CAKA,MAAM,oBACF,OACA,SACiC;EACjC,MAAM,SAAS,EAAE,MAAM,gCAAgC,KAAK;EAC5D,MAAM,KAAKF,QAAQ,MAAM;EAEzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,oBAC3B;GACI,UAAU,OAAO;GACjB,UAAU,OAAO;GACjB,OAAO,OAAO;GACd,cAAc,OAAO;GACrB,OAAO,OAAO,SAAS;GACvB,WAAW,OAAO;GAClB,WACI,OAAO,aAAa,OACd,OAAO,wBAAwB;IAC3B,WAAW,OAAO,UAAU;IAC5B,SAAS,OAAO,UAAU;GAC9B,CAAC,IACD,KAAA;EACd,GACA,qBAAqB,OAAO,CAChC;EACA,OAAO,EAAE,MAAM,KAAKI,iBAAiB,GAAG;CAC5C;;;;CAKA,cAAc,OAA8C;EACxD,MAAM,SAAS,EAAE,MAAM,kCAAkC;GACrD,UAAU,MAAM;GAChB,UAAU,MAAM;EACpB,CAAC;EACD,MAAM,UAAU,8BAA8B,OAAO,SAAS,GAAG,OAAO,SAAS;EACjF,MAAM,OAAO,sBACH,KAAKD,QAAQ,MAAM,IACxB,UAAU,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC,CAC7E;EACA,OAAO,KAAKD,UAAU,oBAAoB;GACtC;GACA,QAAQI;GACR,gBAAgB,SAAS;IACrB,KAAK,UAAU;KACX,MAAM,SAAS,EAAE,MAAM,KAAKD,mBAAmB,IAAI;KACnD,MAAM,QAAQ,MAAM;IACxB,CAAC;GACL;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
1
+ {"version":3,"file":"heatmap.js","names":["#client","HeatmapRpc","#realtime","#scales","#responseSchema","#liveBucketSchema","ProtoHeatmapLiveBucketSchema"],"sources":["../../../src/services/heatmap/heatmap.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { create } from \"@bufbuild/protobuf\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport {\n HeatmapService as HeatmapRpc,\n HeatmapLiveBucketSchema as ProtoHeatmapLiveBucketSchema,\n HeatmapTimeRangeSchema,\n} from \"../../gen/marketdata/v1/heatmap_pb.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { createReadyGate, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { HEATMAP_INTERVAL_VALUES, type HeatmapIntervalValue } from \"./heatmap.codecs.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n GetOrderbookHeatmapInputSchema,\n createOrderbookHeatmapLiveBucketSchema,\n createOrderbookHeatmapResponseSchema,\n type GetOrderbookHeatmapInput,\n type OrderbookHeatmapLiveBucket,\n type OrderbookHeatmapResponse,\n} from \"./heatmap.schemas.js\";\n\nexport interface OrderbookHeatmapProvider {\n getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse>;\n}\n\ninterface SubscribeHeatmapLiveInput extends BaseSubscribeInput<OrderbookHeatmapLiveBucket> {\n symbolId: number;\n interval: HeatmapIntervalValue;\n}\n\nconst SubscribeHeatmapLiveParamsSchema = v.object({\n symbolId: v.pipe(v.number(), v.integer(), v.gtValue(0)),\n interval: v.picklist(HEATMAP_INTERVAL_VALUES),\n});\n\n/**\n * Reads historical order book heatmap chains and streams live heatmap buckets.\n */\nexport class HeatmapService implements OrderbookHeatmapProvider {\n #client: Client<typeof HeatmapRpc>;\n #realtime: PolyesterRealtime;\n #scales: SdkScales;\n #responseSchema: ReturnType<typeof createOrderbookHeatmapResponseSchema>;\n #liveBucketSchema: ReturnType<typeof createOrderbookHeatmapLiveBucketSchema>;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, scales: SdkScales) {\n this.#client = createClient(HeatmapRpc, transport);\n this.#realtime = realtime;\n this.#scales = scales;\n this.#responseSchema = createOrderbookHeatmapResponseSchema(scales);\n this.#liveBucketSchema = createOrderbookHeatmapLiveBucketSchema(scales);\n }\n\n /**\n * Fetches order book heatmap data for a symbol, interval, depth, and quantity mode using either an absolute time range or cursor pagination. The response includes a keyframe anchor, delta buckets, pagination metadata, and live-anchor fields when available.\n */\n async getOrderbookHeatmap(\n input: GetOrderbookHeatmapInput,\n options?: PolyesterRequestOptions,\n ): Promise<OrderbookHeatmapResponse> {\n const parsed = parse(GetOrderbookHeatmapInputSchema, input);\n await this.#scales.ready();\n\n const res = await this.#client.getOrderbookHeatmap(\n {\n symbolId: parsed.symbolId,\n interval: parsed.interval,\n depth: parsed.depth,\n quantityMode: parsed.quantityMode,\n limit: parsed.limit,\n pageToken: parsed.pageToken,\n timeRange:\n parsed.timeRange != null\n ? create(HeatmapTimeRangeSchema, {\n startTime: parsed.timeRange.startTime,\n endTime: parsed.timeRange.endTime,\n })\n : undefined,\n },\n toConnectCallOptions(options),\n );\n return parse(this.#responseSchema, res);\n }\n\n /**\n * Subscribes to live heatmap buckets on public:spot:market:heatmap:{interval}:{symbolId}:proto and emits parsed bid/ask delta buckets for the selected interval.\n */\n subscribeLive(input: SubscribeHeatmapLiveInput): () => void {\n const params = parse(SubscribeHeatmapLiveParamsSchema, {\n symbolId: input.symbolId,\n interval: input.interval,\n });\n const channel = `public:spot:market:heatmap:${params.interval}:${params.symbolId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoHeatmapLiveBucketSchema,\n onPublication: (data) => {\n gate.run(() => {\n const bucket = parse(this.#liveBucketSchema, data);\n input.onEvent(bucket);\n });\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;AAuCA,MAAM,mCAAmC,EAAE,OAAO;CAC9C,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC;CACtD,UAAU,EAAE,SAAS,uBAAuB;AAChD,CAAC;;;;AAKD,IAAa,iBAAb,MAAgE;CAC5D;CACA;CACA;CACA;CACA;CAEA,YAAY,WAAsB,UAA6B,QAAmB;EAC9E,KAAKA,UAAU,aAAaC,kBAAY,SAAS;EACjD,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,kBAAkB,qCAAqC,MAAM;EAClE,KAAKC,oBAAoB,uCAAuC,MAAM;CAC1E;;;;CAKA,MAAM,oBACF,OACA,SACiC;EACjC,MAAM,SAAS,MAAM,gCAAgC,KAAK;EAC1D,MAAM,KAAKF,QAAQ,MAAM;EAEzB,MAAM,MAAM,MAAM,KAAKH,QAAQ,oBAC3B;GACI,UAAU,OAAO;GACjB,UAAU,OAAO;GACjB,OAAO,OAAO;GACd,cAAc,OAAO;GACrB,OAAO,OAAO;GACd,WAAW,OAAO;GAClB,WACI,OAAO,aAAa,OACd,OAAO,wBAAwB;IAC3B,WAAW,OAAO,UAAU;IAC5B,SAAS,OAAO,UAAU;GAC9B,CAAC,IACD,KAAA;EACd,GACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,KAAKI,iBAAiB,GAAG;CAC1C;;;;CAKA,cAAc,OAA8C;EACxD,MAAM,SAAS,MAAM,kCAAkC;GACnD,UAAU,MAAM;GAChB,UAAU,MAAM;EACpB,CAAC;EACD,MAAM,UAAU,8BAA8B,OAAO,SAAS,GAAG,OAAO,SAAS;EACjF,MAAM,OAAO,sBACH,KAAKD,QAAQ,MAAM,IACxB,UAAU,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC,CAC7E;EACA,OAAO,KAAKD,UAAU,oBAAoB;GACtC;GACA,QAAQI;GACR,gBAAgB,SAAS;IACrB,KAAK,UAAU;KACX,MAAM,SAAS,MAAM,KAAKD,mBAAmB,IAAI;KACjD,MAAM,QAAQ,MAAM;IACxB,CAAC;GACL;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}