@polyester/sdk 0.11.0 → 0.13.0

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 (175) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/core-client.d.ts +3 -3
  3. package/dist/core-client.d.ts.map +1 -1
  4. package/dist/core-client.js +35 -50
  5. package/dist/core-client.js.map +1 -1
  6. package/dist/gen/auth/v1/address_book_pb.d.ts +21 -0
  7. package/dist/gen/auth/v1/address_book_pb.d.ts.map +1 -1
  8. package/dist/gen/auth/v1/address_book_pb.js +1 -1
  9. package/dist/gen/auth/v1/address_book_pb.js.map +1 -1
  10. package/dist/gen/auth/v1/mfa_pb.d.ts +39 -3
  11. package/dist/gen/auth/v1/mfa_pb.d.ts.map +1 -1
  12. package/dist/gen/auth/v1/mfa_pb.js +1 -1
  13. package/dist/gen/auth/v1/mfa_pb.js.map +1 -1
  14. package/dist/gen/auth/v1/subaccounts_pb.d.ts +2 -1
  15. package/dist/gen/auth/v1/subaccounts_pb.d.ts.map +1 -1
  16. package/dist/gen/auth/v1/subaccounts_pb.js.map +1 -1
  17. package/dist/gen/chain/withdraw/v1/withdraw_pb.d.ts +3 -2
  18. package/dist/gen/chain/withdraw/v1/withdraw_pb.d.ts.map +1 -1
  19. package/dist/gen/chain/withdraw/v1/withdraw_pb.js.map +1 -1
  20. package/dist/gen/transfer/v1/internal_transfer_pb.d.ts +3 -0
  21. package/dist/gen/transfer/v1/internal_transfer_pb.d.ts.map +1 -1
  22. package/dist/gen/transfer/v1/internal_transfer_pb.js.map +1 -1
  23. package/dist/gen/triggers/v1/triggers_pb.d.ts +347 -5
  24. package/dist/gen/triggers/v1/triggers_pb.d.ts.map +1 -1
  25. package/dist/gen/triggers/v1/triggers_pb.js +307 -3
  26. package/dist/gen/triggers/v1/triggers_pb.js.map +1 -1
  27. package/dist/services/accounts/accounts.d.ts +2 -2
  28. package/dist/services/accounts/accounts.d.ts.map +1 -1
  29. package/dist/services/accounts/accounts.js +2 -2
  30. package/dist/services/accounts/accounts.js.map +1 -1
  31. package/dist/services/address-book/address-book.d.ts +5 -3
  32. package/dist/services/address-book/address-book.d.ts.map +1 -1
  33. package/dist/services/address-book/address-book.js +5 -3
  34. package/dist/services/address-book/address-book.js.map +1 -1
  35. package/dist/services/address-book/address-book.schemas.d.ts +6 -0
  36. package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
  37. package/dist/services/address-book/address-book.schemas.js +10 -5
  38. package/dist/services/address-book/address-book.schemas.js.map +1 -1
  39. package/dist/services/api-keys/api-keys.d.ts +2 -2
  40. package/dist/services/api-keys/api-keys.d.ts.map +1 -1
  41. package/dist/services/api-keys/api-keys.js +3 -3
  42. package/dist/services/api-keys/api-keys.js.map +1 -1
  43. package/dist/services/auth/account-signer-auth.d.ts +3 -2
  44. package/dist/services/auth/account-signer-auth.d.ts.map +1 -1
  45. package/dist/services/auth/account-signer-auth.js.map +1 -1
  46. package/dist/services/auth/auth.d.ts +3 -7
  47. package/dist/services/auth/auth.d.ts.map +1 -1
  48. package/dist/services/auth/auth.js +1 -1
  49. package/dist/services/auth/auth.js.map +1 -1
  50. package/dist/services/auth/profile/profile.d.ts +2 -2
  51. package/dist/services/auth/profile/profile.d.ts.map +1 -1
  52. package/dist/services/auth/profile/profile.js +2 -2
  53. package/dist/services/auth/profile/profile.js.map +1 -1
  54. package/dist/services/balances/balances.d.ts +2 -2
  55. package/dist/services/balances/balances.d.ts.map +1 -1
  56. package/dist/services/balances/balances.js +2 -2
  57. package/dist/services/balances/balances.js.map +1 -1
  58. package/dist/services/candles/candles.d.ts +2 -2
  59. package/dist/services/candles/candles.d.ts.map +1 -1
  60. package/dist/services/candles/candles.js +2 -2
  61. package/dist/services/candles/candles.js.map +1 -1
  62. package/dist/services/candles/candles.schemas.d.ts +10 -10
  63. package/dist/services/chain-analytics/chain-analytics.d.ts +2 -2
  64. package/dist/services/chain-analytics/chain-analytics.d.ts.map +1 -1
  65. package/dist/services/chain-analytics/chain-analytics.js +2 -2
  66. package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
  67. package/dist/services/deposit/deposit.d.ts +2 -2
  68. package/dist/services/deposit/deposit.d.ts.map +1 -1
  69. package/dist/services/deposit/deposit.js +2 -2
  70. package/dist/services/deposit/deposit.js.map +1 -1
  71. package/dist/services/fees/fees.d.ts +2 -2
  72. package/dist/services/fees/fees.d.ts.map +1 -1
  73. package/dist/services/fees/fees.js +2 -2
  74. package/dist/services/fees/fees.js.map +1 -1
  75. package/dist/services/guard-signer/guard-signer.d.ts +2 -2
  76. package/dist/services/guard-signer/guard-signer.d.ts.map +1 -1
  77. package/dist/services/guard-signer/guard-signer.js +2 -2
  78. package/dist/services/guard-signer/guard-signer.js.map +1 -1
  79. package/dist/services/heatmap/heatmap.d.ts +2 -2
  80. package/dist/services/heatmap/heatmap.d.ts.map +1 -1
  81. package/dist/services/heatmap/heatmap.js +2 -2
  82. package/dist/services/heatmap/heatmap.js.map +1 -1
  83. package/dist/services/heatmap/heatmap.schemas.d.ts +9 -9
  84. package/dist/services/internal-transfers/internal-transfers.d.ts +2 -2
  85. package/dist/services/internal-transfers/internal-transfers.d.ts.map +1 -1
  86. package/dist/services/internal-transfers/internal-transfers.js +2 -2
  87. package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
  88. package/dist/services/lifecycle/lifecycle.d.ts +2 -2
  89. package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
  90. package/dist/services/lifecycle/lifecycle.js +2 -2
  91. package/dist/services/lifecycle/lifecycle.js.map +1 -1
  92. package/dist/services/market-data/market-data.d.ts +2 -2
  93. package/dist/services/market-data/market-data.d.ts.map +1 -1
  94. package/dist/services/market-data/market-data.js +2 -2
  95. package/dist/services/market-data/market-data.js.map +1 -1
  96. package/dist/services/market-overview/market-overview.d.ts +2 -2
  97. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  98. package/dist/services/market-overview/market-overview.js +2 -2
  99. package/dist/services/market-overview/market-overview.js.map +1 -1
  100. package/dist/services/market-overview/market-overview.schemas.d.ts +3 -3
  101. package/dist/services/mfa/mfa.d.ts +4 -4
  102. package/dist/services/mfa/mfa.d.ts.map +1 -1
  103. package/dist/services/mfa/mfa.js +4 -4
  104. package/dist/services/mfa/mfa.js.map +1 -1
  105. package/dist/services/mfa/mfa.schemas.d.ts +132 -4
  106. package/dist/services/mfa/mfa.schemas.d.ts.map +1 -1
  107. package/dist/services/mfa/mfa.schemas.js +13 -7
  108. package/dist/services/mfa/mfa.schemas.js.map +1 -1
  109. package/dist/services/orderbook/orderbook.d.ts +2 -2
  110. package/dist/services/orderbook/orderbook.d.ts.map +1 -1
  111. package/dist/services/orderbook/orderbook.js +2 -2
  112. package/dist/services/orderbook/orderbook.js.map +1 -1
  113. package/dist/services/orders/orders-input.schemas.d.ts +1 -1
  114. package/dist/services/orders/orders-output.schemas.d.ts +6 -6
  115. package/dist/services/orders/orders.d.ts +2 -2
  116. package/dist/services/orders/orders.d.ts.map +1 -1
  117. package/dist/services/orders/orders.js +3 -3
  118. package/dist/services/orders/orders.js.map +1 -1
  119. package/dist/services/policies/api-key-policies/api-key-policies.d.ts +2 -2
  120. package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
  121. package/dist/services/policies/api-key-policies/api-key-policies.js +2 -2
  122. package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
  123. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +2 -2
  124. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
  125. package/dist/services/policies/subaccount-policies/subaccount-policies.js +2 -2
  126. package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
  127. package/dist/services/rate-limits/rate-limits.d.ts +2 -2
  128. package/dist/services/rate-limits/rate-limits.d.ts.map +1 -1
  129. package/dist/services/rate-limits/rate-limits.js.map +1 -1
  130. package/dist/services/social-verification/social-verification.d.ts +2 -2
  131. package/dist/services/social-verification/social-verification.d.ts.map +1 -1
  132. package/dist/services/social-verification/social-verification.js +2 -2
  133. package/dist/services/social-verification/social-verification.js.map +1 -1
  134. package/dist/services/subaccounts/subaccounts.d.ts +3 -3
  135. package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
  136. package/dist/services/subaccounts/subaccounts.js +11 -9
  137. package/dist/services/subaccounts/subaccounts.js.map +1 -1
  138. package/dist/services/subaccounts/subaccounts.schemas.d.ts +4 -4
  139. package/dist/services/trades/trades.d.ts +2 -2
  140. package/dist/services/trades/trades.d.ts.map +1 -1
  141. package/dist/services/trades/trades.js +2 -2
  142. package/dist/services/trades/trades.js.map +1 -1
  143. package/dist/services/trading-withdraws/trading-withdraws.d.ts +2 -2
  144. package/dist/services/trading-withdraws/trading-withdraws.d.ts.map +1 -1
  145. package/dist/services/trading-withdraws/trading-withdraws.js +2 -2
  146. package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
  147. package/dist/services/transfers/transfers.d.ts +2 -2
  148. package/dist/services/transfers/transfers.d.ts.map +1 -1
  149. package/dist/services/transfers/transfers.js +2 -2
  150. package/dist/services/transfers/transfers.js.map +1 -1
  151. package/dist/services/triggers/trigger-input.schemas.d.ts +2 -2
  152. package/dist/services/triggers/triggers-output.schemas.d.ts +365 -18
  153. package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
  154. package/dist/services/triggers/triggers-output.schemas.js +36 -4
  155. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  156. package/dist/services/triggers/triggers.codecs.js +51 -1
  157. package/dist/services/triggers/triggers.codecs.js.map +1 -1
  158. package/dist/services/triggers/triggers.d.ts +2 -2
  159. package/dist/services/triggers/triggers.d.ts.map +1 -1
  160. package/dist/services/triggers/triggers.js +2 -2
  161. package/dist/services/triggers/triggers.js.map +1 -1
  162. package/dist/services/vip/vip.d.ts +2 -2
  163. package/dist/services/vip/vip.js.map +1 -1
  164. package/dist/services/whiteboard/whiteboard.d.ts +2 -2
  165. package/dist/services/whiteboard/whiteboard.d.ts.map +1 -1
  166. package/dist/services/whiteboard/whiteboard.js +2 -2
  167. package/dist/services/whiteboard/whiteboard.js.map +1 -1
  168. package/dist/services/zipper/zipper.d.ts +2 -2
  169. package/dist/services/zipper/zipper.d.ts.map +1 -1
  170. package/dist/services/zipper/zipper.js +2 -2
  171. package/dist/services/zipper/zipper.js.map +1 -1
  172. package/dist/shared/transports.d.ts +7 -1
  173. package/dist/shared/transports.d.ts.map +1 -1
  174. package/dist/shared/transports.js.map +1 -1
  175. package/package.json +1 -1
@@ -216,7 +216,7 @@ declare const SubaccountInviteSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<
216
216
  readonly granteeAccountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
217
217
  readonly inviterAccountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
218
218
  readonly role: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SubaccountRole$1, undefined>, v.TransformAction<SubaccountRole$1, "unspecified" | "owner" | "admin" | "treasury" | "leveraged_trader" | "trader" | "viewer">]>;
219
- readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SubaccountInviteStatus$1, undefined>, v.TransformAction<SubaccountInviteStatus$1, "unspecified" | "pending" | "accepted" | "declined" | "cancelled">]>;
219
+ readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SubaccountInviteStatus$1, undefined>, v.TransformAction<SubaccountInviteStatus$1, "unspecified" | "pending" | "cancelled" | "accepted" | "declined">]>;
220
220
  readonly createdAt: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
221
221
  readonly seconds: v.BigintSchema<undefined>;
222
222
  readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
@@ -243,7 +243,7 @@ declare const SubaccountInviteSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<
243
243
  granteeAccountId: string;
244
244
  inviterAccountId: string;
245
245
  role: "unspecified" | "owner" | "admin" | "treasury" | "leveraged_trader" | "trader" | "viewer";
246
- status: "unspecified" | "pending" | "accepted" | "declined" | "cancelled";
246
+ status: "unspecified" | "pending" | "cancelled" | "accepted" | "declined";
247
247
  createdAt?: number | undefined;
248
248
  respondedAt?: number | undefined;
249
249
  granteeUsername: string;
@@ -261,7 +261,7 @@ declare const SubaccountInviteSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<
261
261
  granteeAccountId: string;
262
262
  inviterAccountId: string;
263
263
  role: "unspecified" | "owner" | "admin" | "treasury" | "leveraged_trader" | "trader" | "viewer";
264
- status: "unspecified" | "pending" | "accepted" | "declined" | "cancelled";
264
+ status: "unspecified" | "pending" | "cancelled" | "accepted" | "declined";
265
265
  createdAt?: number | undefined;
266
266
  respondedAt?: number | undefined;
267
267
  granteeUsername: string;
@@ -284,7 +284,7 @@ declare const SubaccountActivityEventSchema: v.ObjectSchema<{
284
284
  nanos: number;
285
285
  } | undefined, number | undefined>]>;
286
286
  readonly entityKind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEntityKind, undefined>, v.TransformAction<ActivityEntityKind, "unspecified" | "api_key" | "account" | "subaccount" | "destination" | "session" | "policy" | "member" | "invite" | "security">]>;
287
- readonly eventAction: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventAction, undefined>, v.TransformAction<ActivityEventAction, "unspecified" | "enabled" | "disabled" | "revoked" | "deleted" | "created" | "updated" | "removed" | "role_set" | "received" | "replied" | "failed" | "blocked" | "hold_placed" | "hold_released">]>;
287
+ readonly eventAction: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventAction, undefined>, v.TransformAction<ActivityEventAction, "unspecified" | "enabled" | "disabled" | "failed" | "deleted" | "created" | "updated" | "removed" | "role_set" | "received" | "replied" | "revoked" | "blocked" | "hold_placed" | "hold_released">]>;
288
288
  readonly source: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventSource, undefined>, v.TransformAction<ActivityEventSource, "unspecified" | "web" | "mobile" | "api">]>;
289
289
  readonly ip: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
290
290
  readonly userAgent: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
@@ -1,10 +1,10 @@
1
+ import { AuthApiTransports } from "../../shared/transports.js";
1
2
  import { PolyesterRequestOptions } from "../../shared/request-options.js";
2
3
  import { SubaccountResolver } from "../subaccount-resolver.js";
3
4
  import { PolyesterRealtime } from "../../realtime/types.js";
4
5
  import { BaseSubscribeInput } from "../../shared/types.js";
5
6
  import { SdkScales } from "../../shared/decimal-surface.js";
6
7
  import { GetUserTradesInputSchema, Trade } from "./trades.schemas.js";
7
- import { Transport } from "@connectrpc/connect";
8
8
  import * as v from "valibot";
9
9
  //#region src/services/trades/trades.d.ts
10
10
  interface SubscribeTradesInput extends BaseSubscribeInput<Trade> {
@@ -15,7 +15,7 @@ interface SubscribeTradesInput extends BaseSubscribeInput<Trade> {
15
15
  */
16
16
  declare class TradesService {
17
17
  #private;
18
- constructor(transport: Transport, realtime: PolyesterRealtime, resolver: SubaccountResolver | undefined, scales: SdkScales);
18
+ constructor(transports: AuthApiTransports, realtime: PolyesterRealtime, resolver: SubaccountResolver | undefined, scales: SdkScales);
19
19
  /**
20
20
  * Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. Results include the next page token from GetUserTrades.
21
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"trades.d.ts","names":[],"sources":["../../../src/services/trades/trades.ts"],"mappings":";;;;;;;;;UAgBU,6BAA6B,mBAAmB;EACtD;;;;;cAMS;;EAQL,YAAA,WAAW,WACX,UAAU,mBACV,UAAU,gCACV,QAAQ;;;;EAYN,KACF,QAAO,EAAE,kBAAkB,2BAC3B,UAAU,0BACX;IAAU,QAAQ;IAAS;;;;;EAiB9B,UAAU,OAAO"}
1
+ {"version":3,"file":"trades.d.ts","names":[],"sources":["../../../src/services/trades/trades.ts"],"mappings":";;;;;;;;;UAiBU,6BAA6B,mBAAmB;EACtD;;;;;cAMS;;EAQL,YAAA,YAAY,mBACZ,UAAU,mBACV,UAAU,gCACV,QAAQ;;;;EAYN,KACF,QAAO,EAAE,kBAAkB,2BAC3B,UAAU,0BACX;IAAU,QAAQ;IAAS;;;;;EAiB9B,UAAU,OAAO"}
@@ -17,8 +17,8 @@ var TradesService = class {
17
17
  #resolver;
18
18
  #scales;
19
19
  #userTradeSchema;
20
- constructor(transport, realtime, resolver, scales) {
21
- this.#client = createClient(OrdersReadService, transport);
20
+ constructor(transports, realtime, resolver, scales) {
21
+ this.#client = createClient(OrdersReadService, transports.authApi);
22
22
  this.#realtime = realtime;
23
23
  this.#resolver = resolver;
24
24
  this.#scales = scales;
@@ -1 +1 @@
1
- {"version":3,"file":"trades.js","names":["#client","Proto.OrdersReadService","#realtime","#resolver","#scales","#userTradeSchema","Proto.UserTradeSchema"],"sources":["../../../src/services/trades/trades.ts"],"sourcesContent":["import * as Proto from \"../../gen/orders/v1/orders_read_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport { GetUserTradesInputSchema, createUserTradeSchema, type Trade } from \"./trades.schemas.js\";\n\ninterface SubscribeTradesInput extends BaseSubscribeInput<Trade> {\n accountId: string;\n}\n\n/**\n * Reads and streams authenticated user trade fills.\n */\nexport class TradesService {\n #client: Client<typeof Proto.OrdersReadService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #userTradeSchema: ReturnType<typeof createUserTradeSchema>;\n\n constructor(\n transport: Transport,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#client = createClient(Proto.OrdersReadService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#userTradeSchema = createUserTradeSchema(scales);\n }\n\n /**\n * Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. Results include the next page token from GetUserTrades.\n */\n async list(\n input: v.InferInput<typeof GetUserTradesInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ trades: Trade[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(GetUserTradesInputSchema, resolved);\n const res = await this.#client.getUserTrades(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n trades: parse(v.array(this.#userTradeSchema), res.trades),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private user trade updates on private:spot:trades:{accountId}:proto and emits parsed fills.\n */\n subscribe(input: SubscribeTradesInput) {\n const channel = `private:spot:trades:${input.accountId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: Proto.UserTradeSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const trade = parse(this.#userTradeSchema, data);\n input.onEvent(trade);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAa,gBAAb,MAA2B;CACvB;CACA;CACA;CACA;CACA;CAEA,YACI,WACA,UACA,UACA,QACF;EACE,KAAKA,UAAU,aAAaC,mBAAyB,SAAS;EAC9D,KAAKC,YAAY;EACjB,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,mBAAmB,sBAAsB,MAAM;CACxD;;;;CAKA,MAAM,KACF,QAAuD,CAAC,GACxD,SACmD;EACnD,MAAM,KAAKD,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ;EAC/D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO;GACH,QAAQ,MAAM,EAAE,MAAM,KAAKK,gBAAgB,GAAG,IAAI,MAAM;GACxD,eAAe,IAAI;EACvB;CACJ;;;;CAKA,UAAU,OAA6B;EACnC,MAAM,UAAU,uBAAuB,MAAM,UAAU;EACvD,OAAO,8BAA8B,KAAKH,WAAW;GACjD;GACA,QAAQI;GACR,aAAa,KAAKF,QAAQ,MAAM;GAChC,gBAAgB,SAAS;IACrB,MAAM,QAAQ,MAAM,KAAKC,kBAAkB,IAAI;IAC/C,MAAM,QAAQ,KAAK;GACvB;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
1
+ {"version":3,"file":"trades.js","names":["#client","Proto.OrdersReadService","#realtime","#resolver","#scales","#userTradeSchema","Proto.UserTradeSchema"],"sources":["../../../src/services/trades/trades.ts"],"sourcesContent":["import * as Proto from \"../../gen/orders/v1/orders_read_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport { GetUserTradesInputSchema, createUserTradeSchema, type Trade } from \"./trades.schemas.js\";\n\ninterface SubscribeTradesInput extends BaseSubscribeInput<Trade> {\n accountId: string;\n}\n\n/**\n * Reads and streams authenticated user trade fills.\n */\nexport class TradesService {\n #client: Client<typeof Proto.OrdersReadService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #userTradeSchema: ReturnType<typeof createUserTradeSchema>;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#client = createClient(Proto.OrdersReadService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#userTradeSchema = createUserTradeSchema(scales);\n }\n\n /**\n * Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. Results include the next page token from GetUserTrades.\n */\n async list(\n input: v.InferInput<typeof GetUserTradesInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ trades: Trade[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(GetUserTradesInputSchema, resolved);\n const res = await this.#client.getUserTrades(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n trades: parse(v.array(this.#userTradeSchema), res.trades),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private user trade updates on private:spot:trades:{accountId}:proto and emits parsed fills.\n */\n subscribe(input: SubscribeTradesInput) {\n const channel = `private:spot:trades:${input.accountId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: Proto.UserTradeSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const trade = parse(this.#userTradeSchema, data);\n input.onEvent(trade);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAwBA,IAAa,gBAAb,MAA2B;CACvB;CACA;CACA;CACA;CACA;CAEA,YACI,YACA,UACA,UACA,QACF;EACE,KAAKA,UAAU,aAAaC,mBAAyB,WAAW,OAAO;EACvE,KAAKC,YAAY;EACjB,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,mBAAmB,sBAAsB,MAAM;CACxD;;;;CAKA,MAAM,KACF,QAAuD,CAAC,GACxD,SACmD;EACnD,MAAM,KAAKD,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ;EAC/D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO;GACH,QAAQ,MAAM,EAAE,MAAM,KAAKK,gBAAgB,GAAG,IAAI,MAAM;GACxD,eAAe,IAAI;EACvB;CACJ;;;;CAKA,UAAU,OAA6B;EACnC,MAAM,UAAU,uBAAuB,MAAM,UAAU;EACvD,OAAO,8BAA8B,KAAKH,WAAW;GACjD;GACA,QAAQI;GACR,aAAa,KAAKF,QAAQ,MAAM;GAChC,gBAAgB,SAAS;IACrB,MAAM,QAAQ,MAAM,KAAKC,kBAAkB,IAAI;IAC/C,MAAM,QAAQ,KAAK;GACvB;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
@@ -1,10 +1,10 @@
1
1
  import { ClientCatalog } from "../../catalogs/types.js";
2
2
  import { TradingWithdrawAction } from "../../gen/chain/withdraw/v1/withdraw_pb.js";
3
+ import { AuthApiTransports } from "../../shared/transports.js";
3
4
  import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
4
5
  import { SubaccountResolver } from "../subaccount-resolver.js";
5
6
  import { SdkScales } from "../../shared/decimal-surface.js";
6
7
  import { CreateTradingWithdrawResult, CreateTradingWithdrawToExternalChainInput, CreateTradingWithdrawToFundingInput, TradingWithdrawIntentPayloadRequest, ValidateWithdrawDestinationInput, ValidateWithdrawDestinationResult } from "./trading-withdraws.schemas.js";
7
- import { Transport } from "@connectrpc/connect";
8
8
  import { Address, Hex } from "viem";
9
9
  //#region src/services/trading-withdraws/trading-withdraws.d.ts
10
10
  type TradingWithdrawWalletTypedData = ReturnType<typeof buildTradingWithdrawWalletTypedData>;
@@ -99,7 +99,7 @@ declare function buildTradingWithdrawWalletTypedData(params: {
99
99
  */
100
100
  declare class TradingWithdrawsService {
101
101
  #private;
102
- constructor(transport: Transport, resolver: SubaccountResolver | undefined, signingConfig: TradingWithdrawSigningConfig, scales: SdkScales, catalog?: ClientCatalog);
102
+ constructor(transports: AuthApiTransports, resolver: SubaccountResolver | undefined, signingConfig: TradingWithdrawSigningConfig, scales: SdkScales, catalog?: ClientCatalog);
103
103
  /**
104
104
  * Checks whether an external-chain destination can receive a withdrawal without creating, signing, or reserving one.
105
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"trading-withdraws.d.ts","names":[],"sources":["../../../src/services/trading-withdraws/trading-withdraws.ts"],"mappings":";;;;;;;;;KAsCY,iCAAiC,kBAAkB;KAEnD;EACR;EACA;EACA,gBAAgB,WAAW,mCAAmC,QAAQ;;KAG9D;EACR;EACA,uBAAuB;;KAGf,6CAA6C;EACrD,eAAe;;KAGP,mDACR;EACI,eAAe;;KAGX,0BAA0B;;;;;EAKlC,SAAS,UAAU,6BAA6B,QAAQ;;iBAyCnD,oCAAoC;EACzC,eAAe;EACf,SAAS;EACT,cAAc;EACd;EACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0ES;;EAYL,YAAA,WAAW,WACX,UAAU,gCACV,eAAe,8BACf,QAAQ,WACR,UAAU;;;;EAeR,oBACF,OAAO,kCACP,UAAU,0BACX,QAAQ;;;;EAYL,gBACF,OAAO,4CACP,UAAU,2BACX,QAAQ;;;;;EASL,iBACF,OAAO,6CACR,QAAQ;;;;EAWL,sBACF,OAAO,kDACP,UAAU,2BACX,QAAQ;;;;;EASL,uBACF,OAAO,mDACR,QAAQ"}
1
+ {"version":3,"file":"trading-withdraws.d.ts","names":[],"sources":["../../../src/services/trading-withdraws/trading-withdraws.ts"],"mappings":";;;;;;;;;KAuCY,iCAAiC,kBAAkB;KAEnD;EACR;EACA;EACA,gBAAgB,WAAW,mCAAmC,QAAQ;;KAG9D;EACR;EACA,uBAAuB;;KAGf,6CAA6C;EACrD,eAAe;;KAGP,mDACR;EACI,eAAe;;KAGX,0BAA0B;;;;;EAKlC,SAAS,UAAU,6BAA6B,QAAQ;;iBAyCnD,oCAAoC;EACzC,eAAe;EACf,SAAS;EACT,cAAc;EACd;EACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0ES;;EAYL,YAAA,YAAY,mBACZ,UAAU,gCACV,eAAe,8BACf,QAAQ,WACR,UAAU;;;;EAeR,oBACF,OAAO,kCACP,UAAU,0BACX,QAAQ;;;;EAYL,gBACF,OAAO,4CACP,UAAU,2BACX,QAAQ;;;;;EASL,iBACF,OAAO,6CACR,QAAQ;;;;EAWL,sBACF,OAAO,kDACP,UAAU,2BACX,QAAQ;;;;;EASL,uBACF,OAAO,mDACR,QAAQ"}
@@ -131,8 +131,8 @@ var TradingWithdrawsService = class {
131
131
  #scales;
132
132
  #toFundingInputSchema;
133
133
  #toExternalChainInputSchema;
134
- constructor(transport, resolver, signingConfig, scales, catalog) {
135
- this.#client = createClient(WithdrawService, transport);
134
+ constructor(transports, resolver, signingConfig, scales, catalog) {
135
+ this.#client = createClient(WithdrawService, transports.authApi);
136
136
  this.#resolver = resolver;
137
137
  this.#signingConfig = signingConfig;
138
138
  this.#catalog = catalog;
@@ -1 +1 @@
1
- {"version":3,"file":"trading-withdraws.js","names":["#client","Proto.WithdrawService","#resolver","#signingConfig","#catalog","#scales","#toFundingInputSchema","#toExternalChainInputSchema","#prepareWithdraw"],"sources":["../../../src/services/trading-withdraws/trading-withdraws.ts"],"sourcesContent":["import { ValidationError } from \"../../shared/errors.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport type { Address, Hex } from \"viem\";\nimport {\n checksumEvmAddress,\n evmHexToBytes,\n evmUtf8ToBytes,\n keccak256Hex,\n} from \"../../utils/evm.js\";\nimport type { ClientCatalog } from \"../../catalogs/types.js\";\nimport * as Proto from \"../../gen/chain/withdraw/v1/withdraw_pb.js\";\nimport { idToBigInt } from \"../../utils/base58-id.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 { SdkScales } from \"../../shared/decimal-surface.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n createCreateTradingWithdrawToExternalChainInputSchema,\n createCreateTradingWithdrawToFundingInputSchema,\n CreateTradingWithdrawResultSchema,\n CreateWalletTradingWithdrawResultSchema,\n ValidateWithdrawDestinationInputSchema,\n ValidateWithdrawDestinationResultSchema,\n type CreateTradingWithdrawResult,\n type CreateTradingWithdrawToExternalChainInput,\n type CreateTradingWithdrawToExternalChainRequest,\n type CreateTradingWithdrawToFundingInput,\n type CreateTradingWithdrawToFundingRequest,\n type TradingWithdrawIntentPayloadRequest,\n type ValidateWithdrawDestinationInput,\n type ValidateWithdrawDestinationResult,\n} from \"./trading-withdraws.schemas.js\";\n\nexport type TradingWithdrawWalletTypedData = ReturnType<typeof buildTradingWithdrawWalletTypedData>;\n\nexport type TradingWithdrawWalletSigner = {\n signerWallet: string;\n accountId: string;\n signTypedData: (typedData: TradingWithdrawWalletTypedData) => Promise<Hex>;\n};\n\nexport type TradingWithdrawSigningConfig = {\n chainId: number;\n tradingGatewayAddress: Address;\n};\n\nexport type CreateTradingWithdrawToFundingServiceInput = CreateTradingWithdrawToFundingInput & {\n walletSigner?: TradingWithdrawWalletSigner;\n};\n\nexport type CreateTradingWithdrawToExternalChainServiceInput =\n CreateTradingWithdrawToExternalChainInput & {\n walletSigner?: TradingWithdrawWalletSigner;\n };\n\nexport type PreparedTradingWithdraw = Readonly<{\n /**\n * Submits the exact payload and signature produced during preparation.\n * Repeated calls only change transport options such as the step-up token.\n */\n submit: (options?: PolyesterMutationOptions) => Promise<CreateTradingWithdrawResult>;\n}>;\n\ntype TradingWithdrawRequest =\n | CreateTradingWithdrawToFundingRequest\n | CreateTradingWithdrawToExternalChainRequest;\n\nfunction fromU128(value: TradingWithdrawIntentPayloadRequest[\"amountE18\"] | undefined): bigint {\n if (!value) return 0n;\n return (value.hi << 64n) + value.lo;\n}\n\nfunction resolveTradingWithdrawTargetAccountId(params: {\n subaccountId: bigint | undefined;\n rootAccountId: string;\n}): bigint {\n if (params.subaccountId !== undefined) return params.subaccountId;\n return idToBigInt(params.rootAccountId, \"targetAccountId\");\n}\n\nasync function resolveTradingWithdrawSigningConfig(params: {\n fallback: TradingWithdrawSigningConfig;\n catalog?: ClientCatalog;\n}): Promise<TradingWithdrawSigningConfig> {\n if (!params.catalog) return params.fallback;\n\n try {\n await params.catalog.ensureReady();\n const gateway = params.catalog.zipper.getContractByName(\"tradingGateway\");\n const address = gateway?.address?.trim();\n if (!address?.startsWith(\"0x\")) return params.fallback;\n\n return {\n chainId: params.fallback.chainId,\n tradingGatewayAddress: checksumEvmAddress(address),\n };\n } catch {\n return params.fallback;\n }\n}\n\nfunction buildTradingWithdrawWalletTypedData(params: {\n signingConfig: TradingWithdrawSigningConfig;\n payload: TradingWithdrawIntentPayloadRequest;\n signerWallet: Address;\n accountId: bigint;\n targetAccountId: bigint;\n}) {\n const payload = params.payload;\n const destinationAddress = (payload.destinationAddress ?? \"\").trim();\n const idempotencyKey = payload.idempotencyKey.trim();\n\n return {\n domain: {\n name: \"Polyester Trading Withdraw\",\n version: \"1\",\n chainId: params.signingConfig.chainId,\n verifyingContract: params.signingConfig.tradingGatewayAddress,\n },\n types: {\n WalletTradingWithdraw: [\n { name: \"signerWallet\", type: \"address\" },\n { name: \"actionType\", type: \"uint8\" },\n { name: \"accountId\", type: \"uint64\" },\n { name: \"targetAccountId\", type: \"uint64\" },\n { name: \"assetId\", type: \"uint32\" },\n { name: \"destinationChainId\", type: \"uint64\" },\n { name: \"amountQ\", type: \"uint128\" },\n { name: \"destinationHash\", type: \"bytes32\" },\n { name: \"deadlineTsSec\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint128\" },\n { name: \"idempotencyKeyHash\", type: \"bytes32\" },\n ],\n },\n primaryType: \"WalletTradingWithdraw\",\n message: {\n signerWallet: params.signerWallet,\n actionType: payload.action,\n accountId: params.accountId,\n targetAccountId: params.targetAccountId,\n assetId: payload.assetId,\n destinationChainId: payload.destinationChainId ?? 0n,\n amountQ: fromU128(payload.amountE18),\n destinationHash: keccak256Hex(evmUtf8ToBytes(destinationAddress)),\n deadlineTsSec: payload.deadlineTsSec,\n nonce: fromU128(payload.nonce),\n idempotencyKeyHash: keccak256Hex(evmUtf8ToBytes(idempotencyKey)),\n },\n } as const;\n}\n\nasync function resolveWalletSignature(params: {\n signingConfig: TradingWithdrawSigningConfig;\n payload: TradingWithdrawIntentPayloadRequest;\n walletSigner: TradingWithdrawWalletSigner;\n targetAccountId: bigint;\n}): Promise<{ signerWallet: string; payloadSignature: Uint8Array }> {\n const signerWallet = params.walletSigner.signerWallet.trim();\n if (!signerWallet.startsWith(\"0x\")) {\n throw new ValidationError(\"Trading withdraw signer wallet is required.\");\n }\n const accountId = idToBigInt(params.walletSigner.accountId, \"accountId\");\n const signature = await params.walletSigner.signTypedData(\n buildTradingWithdrawWalletTypedData({\n signingConfig: params.signingConfig,\n payload: params.payload,\n signerWallet: signerWallet as Address,\n accountId,\n targetAccountId: params.targetAccountId,\n }),\n );\n return {\n signerWallet,\n payloadSignature: evmHexToBytes(signature),\n };\n}\n\n/**\n * Creates durable Trading withdrawal intents to Funding using API signatures or wallet EIP-712 signatures.\n */\nexport class TradingWithdrawsService {\n #client: Client<typeof Proto.WithdrawService>;\n #resolver?: SubaccountResolver;\n #signingConfig: TradingWithdrawSigningConfig;\n #catalog?: ClientCatalog;\n #scales: SdkScales;\n #toFundingInputSchema: ReturnType<typeof createCreateTradingWithdrawToFundingInputSchema>;\n #toExternalChainInputSchema: ReturnType<\n typeof createCreateTradingWithdrawToExternalChainInputSchema\n >;\n\n constructor(\n transport: Transport,\n resolver: SubaccountResolver | undefined,\n signingConfig: TradingWithdrawSigningConfig,\n scales: SdkScales,\n catalog?: ClientCatalog,\n ) {\n this.#client = createClient(Proto.WithdrawService, transport);\n this.#resolver = resolver;\n this.#signingConfig = signingConfig;\n this.#catalog = catalog;\n this.#scales = scales;\n this.#toFundingInputSchema = createCreateTradingWithdrawToFundingInputSchema(scales);\n this.#toExternalChainInputSchema =\n createCreateTradingWithdrawToExternalChainInputSchema(scales);\n }\n\n /**\n * Checks whether an external-chain destination can receive a withdrawal without creating, signing, or reserving one.\n */\n async validateDestination(\n input: ValidateWithdrawDestinationInput,\n options?: PolyesterRequestOptions,\n ): Promise<ValidateWithdrawDestinationResult> {\n const request = parse(ValidateWithdrawDestinationInputSchema, input);\n const response = await this.#client.validateWithdrawDestination(\n request,\n toConnectCallOptions(options),\n );\n return parse(ValidateWithdrawDestinationResultSchema, response);\n }\n\n /**\n * Builds a Trading-to-Funding withdraw intent payload with asset id, decimal amount, destination address, five-minute deadline, nonce, and idempotency key. If a wallet signer is provided, it signs EIP-712 typed data and calls the wallet endpoint; otherwise a payload signature is required for the backend-authorized endpoint.\n */\n async createToFunding(\n input: CreateTradingWithdrawToFundingServiceInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateTradingWithdrawResult> {\n const prepared = await this.prepareToFunding(input);\n return prepared.submit(options);\n }\n\n /**\n * Builds and signs a Trading-to-Funding withdrawal once so the exact request can be\n * resubmitted after backend-directed authorization such as MFA step-up.\n */\n async prepareToFunding(\n input: CreateTradingWithdrawToFundingServiceInput,\n ): Promise<PreparedTradingWithdraw> {\n await this.#scales.ready();\n const { walletSigner, ...inputForValidation } = input;\n const resolvedInput = resolveAccountScopedInput(inputForValidation, this.#resolver);\n const validated = parse(this.#toFundingInputSchema, resolvedInput);\n return this.#prepareWithdraw(validated, walletSigner);\n }\n\n /**\n * Builds a Trading-to-external-chain withdraw intent payload with asset id, decimal gross amount, destination network, destination address, five-minute deadline, nonce, and idempotency key. If a wallet signer is provided, it signs EIP-712 typed data and calls the wallet endpoint; otherwise a payload signature is required for the backend-authorized endpoint.\n */\n async createToExternalChain(\n input: CreateTradingWithdrawToExternalChainServiceInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateTradingWithdrawResult> {\n const prepared = await this.prepareToExternalChain(input);\n return prepared.submit(options);\n }\n\n /**\n * Builds and signs a Trading-to-external-chain withdrawal once so the exact request can\n * be resubmitted after backend-directed authorization such as MFA step-up.\n */\n async prepareToExternalChain(\n input: CreateTradingWithdrawToExternalChainServiceInput,\n ): Promise<PreparedTradingWithdraw> {\n await this.#scales.ready();\n const { walletSigner, ...inputForValidation } = input;\n const resolvedInput = resolveAccountScopedInput(inputForValidation, this.#resolver);\n const validated = parse(this.#toExternalChainInputSchema, resolvedInput);\n return this.#prepareWithdraw(validated, walletSigner);\n }\n\n async #prepareWithdraw(\n validated: TradingWithdrawRequest,\n walletSigner: TradingWithdrawWalletSigner | undefined,\n ): Promise<PreparedTradingWithdraw> {\n if (walletSigner) {\n const signingConfig = await resolveTradingWithdrawSigningConfig({\n fallback: this.#signingConfig,\n catalog: this.#catalog,\n });\n const targetAccountId = resolveTradingWithdrawTargetAccountId({\n subaccountId: validated.subaccountId,\n rootAccountId: walletSigner.accountId,\n });\n\n const walletSignature = await resolveWalletSignature({\n signingConfig,\n payload: validated.payload,\n walletSigner,\n targetAccountId,\n });\n const request = removeUndefined({\n payload: validated.payload,\n subaccountId: validated.subaccountId,\n signerWallet: walletSignature.signerWallet,\n payloadSignature: walletSignature.payloadSignature,\n });\n return {\n submit: async (options) => {\n const response = await this.#client.createWalletTradingWithdraw(\n request,\n toConnectCallOptions(options),\n );\n return parse(CreateWalletTradingWithdrawResultSchema, response);\n },\n };\n }\n\n if (!validated.payloadSignature) {\n throw new ValidationError(\n \"Trading withdraw requires a wallet signer or payload signature.\",\n );\n }\n\n const request = removeUndefined({\n payload: validated.payload,\n payloadSignature: validated.payloadSignature,\n });\n return {\n submit: async (options) => {\n const response = await this.#client.createTradingWithdraw(\n request,\n toConnectCallOptions(options),\n );\n return parse(CreateTradingWithdrawResultSchema, response);\n },\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"trading-withdraws.js","names":["#client","Proto.WithdrawService","#resolver","#signingConfig","#catalog","#scales","#toFundingInputSchema","#toExternalChainInputSchema","#prepareWithdraw"],"sources":["../../../src/services/trading-withdraws/trading-withdraws.ts"],"sourcesContent":["import { ValidationError } from \"../../shared/errors.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport type { Address, Hex } from \"viem\";\nimport {\n checksumEvmAddress,\n evmHexToBytes,\n evmUtf8ToBytes,\n keccak256Hex,\n} from \"../../utils/evm.js\";\nimport type { ClientCatalog } from \"../../catalogs/types.js\";\nimport * as Proto from \"../../gen/chain/withdraw/v1/withdraw_pb.js\";\nimport { idToBigInt } from \"../../utils/base58-id.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 { SdkScales } from \"../../shared/decimal-surface.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n createCreateTradingWithdrawToExternalChainInputSchema,\n createCreateTradingWithdrawToFundingInputSchema,\n CreateTradingWithdrawResultSchema,\n CreateWalletTradingWithdrawResultSchema,\n ValidateWithdrawDestinationInputSchema,\n ValidateWithdrawDestinationResultSchema,\n type CreateTradingWithdrawResult,\n type CreateTradingWithdrawToExternalChainInput,\n type CreateTradingWithdrawToExternalChainRequest,\n type CreateTradingWithdrawToFundingInput,\n type CreateTradingWithdrawToFundingRequest,\n type TradingWithdrawIntentPayloadRequest,\n type ValidateWithdrawDestinationInput,\n type ValidateWithdrawDestinationResult,\n} from \"./trading-withdraws.schemas.js\";\n\nexport type TradingWithdrawWalletTypedData = ReturnType<typeof buildTradingWithdrawWalletTypedData>;\n\nexport type TradingWithdrawWalletSigner = {\n signerWallet: string;\n accountId: string;\n signTypedData: (typedData: TradingWithdrawWalletTypedData) => Promise<Hex>;\n};\n\nexport type TradingWithdrawSigningConfig = {\n chainId: number;\n tradingGatewayAddress: Address;\n};\n\nexport type CreateTradingWithdrawToFundingServiceInput = CreateTradingWithdrawToFundingInput & {\n walletSigner?: TradingWithdrawWalletSigner;\n};\n\nexport type CreateTradingWithdrawToExternalChainServiceInput =\n CreateTradingWithdrawToExternalChainInput & {\n walletSigner?: TradingWithdrawWalletSigner;\n };\n\nexport type PreparedTradingWithdraw = Readonly<{\n /**\n * Submits the exact payload and signature produced during preparation.\n * Repeated calls only change transport options such as the step-up token.\n */\n submit: (options?: PolyesterMutationOptions) => Promise<CreateTradingWithdrawResult>;\n}>;\n\ntype TradingWithdrawRequest =\n | CreateTradingWithdrawToFundingRequest\n | CreateTradingWithdrawToExternalChainRequest;\n\nfunction fromU128(value: TradingWithdrawIntentPayloadRequest[\"amountE18\"] | undefined): bigint {\n if (!value) return 0n;\n return (value.hi << 64n) + value.lo;\n}\n\nfunction resolveTradingWithdrawTargetAccountId(params: {\n subaccountId: bigint | undefined;\n rootAccountId: string;\n}): bigint {\n if (params.subaccountId !== undefined) return params.subaccountId;\n return idToBigInt(params.rootAccountId, \"targetAccountId\");\n}\n\nasync function resolveTradingWithdrawSigningConfig(params: {\n fallback: TradingWithdrawSigningConfig;\n catalog?: ClientCatalog;\n}): Promise<TradingWithdrawSigningConfig> {\n if (!params.catalog) return params.fallback;\n\n try {\n await params.catalog.ensureReady();\n const gateway = params.catalog.zipper.getContractByName(\"tradingGateway\");\n const address = gateway?.address?.trim();\n if (!address?.startsWith(\"0x\")) return params.fallback;\n\n return {\n chainId: params.fallback.chainId,\n tradingGatewayAddress: checksumEvmAddress(address),\n };\n } catch {\n return params.fallback;\n }\n}\n\nfunction buildTradingWithdrawWalletTypedData(params: {\n signingConfig: TradingWithdrawSigningConfig;\n payload: TradingWithdrawIntentPayloadRequest;\n signerWallet: Address;\n accountId: bigint;\n targetAccountId: bigint;\n}) {\n const payload = params.payload;\n const destinationAddress = (payload.destinationAddress ?? \"\").trim();\n const idempotencyKey = payload.idempotencyKey.trim();\n\n return {\n domain: {\n name: \"Polyester Trading Withdraw\",\n version: \"1\",\n chainId: params.signingConfig.chainId,\n verifyingContract: params.signingConfig.tradingGatewayAddress,\n },\n types: {\n WalletTradingWithdraw: [\n { name: \"signerWallet\", type: \"address\" },\n { name: \"actionType\", type: \"uint8\" },\n { name: \"accountId\", type: \"uint64\" },\n { name: \"targetAccountId\", type: \"uint64\" },\n { name: \"assetId\", type: \"uint32\" },\n { name: \"destinationChainId\", type: \"uint64\" },\n { name: \"amountQ\", type: \"uint128\" },\n { name: \"destinationHash\", type: \"bytes32\" },\n { name: \"deadlineTsSec\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint128\" },\n { name: \"idempotencyKeyHash\", type: \"bytes32\" },\n ],\n },\n primaryType: \"WalletTradingWithdraw\",\n message: {\n signerWallet: params.signerWallet,\n actionType: payload.action,\n accountId: params.accountId,\n targetAccountId: params.targetAccountId,\n assetId: payload.assetId,\n destinationChainId: payload.destinationChainId ?? 0n,\n amountQ: fromU128(payload.amountE18),\n destinationHash: keccak256Hex(evmUtf8ToBytes(destinationAddress)),\n deadlineTsSec: payload.deadlineTsSec,\n nonce: fromU128(payload.nonce),\n idempotencyKeyHash: keccak256Hex(evmUtf8ToBytes(idempotencyKey)),\n },\n } as const;\n}\n\nasync function resolveWalletSignature(params: {\n signingConfig: TradingWithdrawSigningConfig;\n payload: TradingWithdrawIntentPayloadRequest;\n walletSigner: TradingWithdrawWalletSigner;\n targetAccountId: bigint;\n}): Promise<{ signerWallet: string; payloadSignature: Uint8Array }> {\n const signerWallet = params.walletSigner.signerWallet.trim();\n if (!signerWallet.startsWith(\"0x\")) {\n throw new ValidationError(\"Trading withdraw signer wallet is required.\");\n }\n const accountId = idToBigInt(params.walletSigner.accountId, \"accountId\");\n const signature = await params.walletSigner.signTypedData(\n buildTradingWithdrawWalletTypedData({\n signingConfig: params.signingConfig,\n payload: params.payload,\n signerWallet: signerWallet as Address,\n accountId,\n targetAccountId: params.targetAccountId,\n }),\n );\n return {\n signerWallet,\n payloadSignature: evmHexToBytes(signature),\n };\n}\n\n/**\n * Creates durable Trading withdrawal intents to Funding using API signatures or wallet EIP-712 signatures.\n */\nexport class TradingWithdrawsService {\n #client: Client<typeof Proto.WithdrawService>;\n #resolver?: SubaccountResolver;\n #signingConfig: TradingWithdrawSigningConfig;\n #catalog?: ClientCatalog;\n #scales: SdkScales;\n #toFundingInputSchema: ReturnType<typeof createCreateTradingWithdrawToFundingInputSchema>;\n #toExternalChainInputSchema: ReturnType<\n typeof createCreateTradingWithdrawToExternalChainInputSchema\n >;\n\n constructor(\n transports: AuthApiTransports,\n resolver: SubaccountResolver | undefined,\n signingConfig: TradingWithdrawSigningConfig,\n scales: SdkScales,\n catalog?: ClientCatalog,\n ) {\n this.#client = createClient(Proto.WithdrawService, transports.authApi);\n this.#resolver = resolver;\n this.#signingConfig = signingConfig;\n this.#catalog = catalog;\n this.#scales = scales;\n this.#toFundingInputSchema = createCreateTradingWithdrawToFundingInputSchema(scales);\n this.#toExternalChainInputSchema =\n createCreateTradingWithdrawToExternalChainInputSchema(scales);\n }\n\n /**\n * Checks whether an external-chain destination can receive a withdrawal without creating, signing, or reserving one.\n */\n async validateDestination(\n input: ValidateWithdrawDestinationInput,\n options?: PolyesterRequestOptions,\n ): Promise<ValidateWithdrawDestinationResult> {\n const request = parse(ValidateWithdrawDestinationInputSchema, input);\n const response = await this.#client.validateWithdrawDestination(\n request,\n toConnectCallOptions(options),\n );\n return parse(ValidateWithdrawDestinationResultSchema, response);\n }\n\n /**\n * Builds a Trading-to-Funding withdraw intent payload with asset id, decimal amount, destination address, five-minute deadline, nonce, and idempotency key. If a wallet signer is provided, it signs EIP-712 typed data and calls the wallet endpoint; otherwise a payload signature is required for the backend-authorized endpoint.\n */\n async createToFunding(\n input: CreateTradingWithdrawToFundingServiceInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateTradingWithdrawResult> {\n const prepared = await this.prepareToFunding(input);\n return prepared.submit(options);\n }\n\n /**\n * Builds and signs a Trading-to-Funding withdrawal once so the exact request can be\n * resubmitted after backend-directed authorization such as MFA step-up.\n */\n async prepareToFunding(\n input: CreateTradingWithdrawToFundingServiceInput,\n ): Promise<PreparedTradingWithdraw> {\n await this.#scales.ready();\n const { walletSigner, ...inputForValidation } = input;\n const resolvedInput = resolveAccountScopedInput(inputForValidation, this.#resolver);\n const validated = parse(this.#toFundingInputSchema, resolvedInput);\n return this.#prepareWithdraw(validated, walletSigner);\n }\n\n /**\n * Builds a Trading-to-external-chain withdraw intent payload with asset id, decimal gross amount, destination network, destination address, five-minute deadline, nonce, and idempotency key. If a wallet signer is provided, it signs EIP-712 typed data and calls the wallet endpoint; otherwise a payload signature is required for the backend-authorized endpoint.\n */\n async createToExternalChain(\n input: CreateTradingWithdrawToExternalChainServiceInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateTradingWithdrawResult> {\n const prepared = await this.prepareToExternalChain(input);\n return prepared.submit(options);\n }\n\n /**\n * Builds and signs a Trading-to-external-chain withdrawal once so the exact request can\n * be resubmitted after backend-directed authorization such as MFA step-up.\n */\n async prepareToExternalChain(\n input: CreateTradingWithdrawToExternalChainServiceInput,\n ): Promise<PreparedTradingWithdraw> {\n await this.#scales.ready();\n const { walletSigner, ...inputForValidation } = input;\n const resolvedInput = resolveAccountScopedInput(inputForValidation, this.#resolver);\n const validated = parse(this.#toExternalChainInputSchema, resolvedInput);\n return this.#prepareWithdraw(validated, walletSigner);\n }\n\n async #prepareWithdraw(\n validated: TradingWithdrawRequest,\n walletSigner: TradingWithdrawWalletSigner | undefined,\n ): Promise<PreparedTradingWithdraw> {\n if (walletSigner) {\n const signingConfig = await resolveTradingWithdrawSigningConfig({\n fallback: this.#signingConfig,\n catalog: this.#catalog,\n });\n const targetAccountId = resolveTradingWithdrawTargetAccountId({\n subaccountId: validated.subaccountId,\n rootAccountId: walletSigner.accountId,\n });\n\n const walletSignature = await resolveWalletSignature({\n signingConfig,\n payload: validated.payload,\n walletSigner,\n targetAccountId,\n });\n const request = removeUndefined({\n payload: validated.payload,\n subaccountId: validated.subaccountId,\n signerWallet: walletSignature.signerWallet,\n payloadSignature: walletSignature.payloadSignature,\n });\n return {\n submit: async (options) => {\n const response = await this.#client.createWalletTradingWithdraw(\n request,\n toConnectCallOptions(options),\n );\n return parse(CreateWalletTradingWithdrawResultSchema, response);\n },\n };\n }\n\n if (!validated.payloadSignature) {\n throw new ValidationError(\n \"Trading withdraw requires a wallet signer or payload signature.\",\n );\n }\n\n const request = removeUndefined({\n payload: validated.payload,\n payloadSignature: validated.payloadSignature,\n });\n return {\n submit: async (options) => {\n const response = await this.#client.createTradingWithdraw(\n request,\n toConnectCallOptions(options),\n );\n return parse(CreateTradingWithdrawResultSchema, response);\n },\n };\n }\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
+ import { AuthApiTransports } from "../../shared/transports.js";
1
2
  import { PolyesterRequestOptions } from "../../shared/request-options.js";
2
3
  import { SubaccountResolver } from "../subaccount-resolver.js";
3
4
  import { PolyesterRealtime } from "../../realtime/types.js";
4
5
  import "../../realtime/index.js";
5
6
  import { BaseSubscribeInput } from "../../shared/types.js";
6
7
  import { LedgerTransfer, ListTransfersInput } from "./transfers.schemas.js";
7
- import { Transport } from "@connectrpc/connect";
8
8
  //#region src/services/transfers/transfers.d.ts
9
9
  interface SubscribeTransfersInput extends BaseSubscribeInput<LedgerTransfer> {
10
10
  accountId: string;
@@ -14,7 +14,7 @@ interface SubscribeTransfersInput extends BaseSubscribeInput<LedgerTransfer> {
14
14
  */
15
15
  declare class TransfersService {
16
16
  #private;
17
- constructor(transport: Transport, realtime: PolyesterRealtime, resolver: SubaccountResolver | undefined);
17
+ constructor(transports: AuthApiTransports, realtime: PolyesterRealtime, resolver: SubaccountResolver | undefined);
18
18
  /**
19
19
  * Returns ledger transfers for the resolved account scope with limit, direction, timestamp, code, ledger, and page-token filters.
20
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transfers.d.ts","names":[],"sources":["../../../src/services/transfers/transfers.ts"],"mappings":";;;;;;;;UAmBU,gCAAgC,mBAAmB;EACzD;;;;;cAMS;;EAML,YAAA,WAAW,WACX,UAAU,mBACV,UAAU;;;;EAUR,KACF,QAAO,oBACP,UAAU,0BACX;IAAU,WAAW;IAAkB;;;;;EAW1C,UAAU,OAAO"}
1
+ {"version":3,"file":"transfers.d.ts","names":[],"sources":["../../../src/services/transfers/transfers.ts"],"mappings":";;;;;;;;UAoBU,gCAAgC,mBAAmB;EACzD;;;;;cAMS;;EAML,YAAA,YAAY,mBACZ,UAAU,mBACV,UAAU;;;;EAUR,KACF,QAAO,oBACP,UAAU,0BACX;IAAU,WAAW;IAAkB;;;;;EAW1C,UAAU,OAAO"}
@@ -14,8 +14,8 @@ var TransfersService = class {
14
14
  #client;
15
15
  #realtime;
16
16
  #resolver;
17
- constructor(transport, realtime, resolver) {
18
- this.#client = createClient(LedgerReadService, transport);
17
+ constructor(transports, realtime, resolver) {
18
+ this.#client = createClient(LedgerReadService, transports.authApi);
19
19
  this.#realtime = realtime;
20
20
  this.#resolver = resolver;
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transfers.js","names":["#client","Proto.LedgerReadService","#realtime","#resolver","Proto.TransferRowSchema"],"sources":["../../../src/services/transfers/transfers.ts"],"sourcesContent":["import * as Proto from \"../../gen/ledger/read/v1/ledger_read_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n LedgerTransferSchema,\n ListTransfersInputSchema,\n type LedgerTransfer,\n type ListTransfersInput,\n} from \"./transfers.schemas.js\";\n\ninterface SubscribeTransfersInput extends BaseSubscribeInput<LedgerTransfer> {\n accountId: string;\n}\n\n/**\n * Reads and streams ledger transfer activity for the authenticated account scope.\n */\nexport class TransfersService {\n #client: Client<typeof Proto.LedgerReadService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n\n constructor(\n transport: Transport,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n ) {\n this.#client = createClient(Proto.LedgerReadService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n }\n\n /**\n * Returns ledger transfers for the resolved account scope with limit, direction, timestamp, code, ledger, and page-token filters.\n */\n async list(\n input: ListTransfersInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ transfers: LedgerTransfer[]; nextPageToken: string }> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(ListTransfersInputSchema, resolved);\n const res = await this.#client.listTransfers(validatedInput, toConnectCallOptions(options));\n const transfers = parse(v.array(LedgerTransferSchema), res.transfers);\n return { transfers, nextPageToken: res.nextPageToken };\n }\n\n /**\n * Subscribes to private ledger transfer updates on private:ledger:transfers:{accountId}:proto and emits parsed transfer rows.\n */\n subscribe(input: SubscribeTransfersInput): () => void {\n const channel = `private:ledger:transfers:${input.accountId}:proto`;\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.TransferRowSchema,\n onPublication: (m) => {\n try {\n const tr = parse(LedgerTransferSchema, m);\n input.onEvent(tr);\n } catch (error) {\n input.onError?.(publicationHandlerErrorContext(channel, error));\n }\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;AA0BA,IAAa,mBAAb,MAA8B;CAC1B;CACA;CACA;CAEA,YACI,WACA,UACA,UACF;EACE,KAAKA,UAAU,aAAaC,mBAAyB,SAAS;EAC9D,KAAKC,YAAY;EACjB,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,KACF,QAA4B,CAAC,GAC7B,SAC+D;EAC/D,MAAM,WAAW,0BAA0B,OAAO,KAAKA,SAAS;EAChE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ;EAC/D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAAc,gBAAgB,qBAAqB,OAAO,CAAC;EAE1F,OAAO;GAAE,WADS,MAAM,EAAE,MAAM,oBAAoB,GAAG,IAAI,SAC1C;GAAG,eAAe,IAAI;EAAc;CACzD;;;;CAKA,UAAU,OAA4C;EAClD,MAAM,UAAU,4BAA4B,MAAM,UAAU;EAC5D,OAAO,KAAKE,UAAU,oBAAoB;GACtC;GACA,QAAQE;GACR,gBAAgB,MAAM;IAClB,IAAI;KACA,MAAM,KAAK,MAAM,sBAAsB,CAAC;KACxC,MAAM,QAAQ,EAAE;IACpB,SAAS,OAAO;KACZ,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC;IAClE;GACJ;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
1
+ {"version":3,"file":"transfers.js","names":["#client","Proto.LedgerReadService","#realtime","#resolver","Proto.TransferRowSchema"],"sources":["../../../src/services/transfers/transfers.ts"],"sourcesContent":["import * as Proto from \"../../gen/ledger/read/v1/ledger_read_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n LedgerTransferSchema,\n ListTransfersInputSchema,\n type LedgerTransfer,\n type ListTransfersInput,\n} from \"./transfers.schemas.js\";\n\ninterface SubscribeTransfersInput extends BaseSubscribeInput<LedgerTransfer> {\n accountId: string;\n}\n\n/**\n * Reads and streams ledger transfer activity for the authenticated account scope.\n */\nexport class TransfersService {\n #client: Client<typeof Proto.LedgerReadService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n ) {\n this.#client = createClient(Proto.LedgerReadService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n }\n\n /**\n * Returns ledger transfers for the resolved account scope with limit, direction, timestamp, code, ledger, and page-token filters.\n */\n async list(\n input: ListTransfersInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ transfers: LedgerTransfer[]; nextPageToken: string }> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(ListTransfersInputSchema, resolved);\n const res = await this.#client.listTransfers(validatedInput, toConnectCallOptions(options));\n const transfers = parse(v.array(LedgerTransferSchema), res.transfers);\n return { transfers, nextPageToken: res.nextPageToken };\n }\n\n /**\n * Subscribes to private ledger transfer updates on private:ledger:transfers:{accountId}:proto and emits parsed transfer rows.\n */\n subscribe(input: SubscribeTransfersInput): () => void {\n const channel = `private:ledger:transfers:${input.accountId}:proto`;\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.TransferRowSchema,\n onPublication: (m) => {\n try {\n const tr = parse(LedgerTransferSchema, m);\n input.onEvent(tr);\n } catch (error) {\n input.onError?.(publicationHandlerErrorContext(channel, error));\n }\n },\n onConnected: input.onOpen,\n onDisconnected: input.onClose,\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;AA2BA,IAAa,mBAAb,MAA8B;CAC1B;CACA;CACA;CAEA,YACI,YACA,UACA,UACF;EACE,KAAKA,UAAU,aAAaC,mBAAyB,WAAW,OAAO;EACvE,KAAKC,YAAY;EACjB,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,KACF,QAA4B,CAAC,GAC7B,SAC+D;EAC/D,MAAM,WAAW,0BAA0B,OAAO,KAAKA,SAAS;EAChE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ;EAC/D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAAc,gBAAgB,qBAAqB,OAAO,CAAC;EAE1F,OAAO;GAAE,WADS,MAAM,EAAE,MAAM,oBAAoB,GAAG,IAAI,SAC1C;GAAG,eAAe,IAAI;EAAc;CACzD;;;;CAKA,UAAU,OAA4C;EAClD,MAAM,UAAU,4BAA4B,MAAM,UAAU;EAC5D,OAAO,KAAKE,UAAU,oBAAoB;GACtC;GACA,QAAQE;GACR,gBAAgB,MAAM;IAClB,IAAI;KACA,MAAM,KAAK,MAAM,sBAAsB,CAAC;KACxC,MAAM,QAAQ,EAAE;IACpB,SAAS,OAAO;KACZ,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC;IAClE;GACJ;GACA,aAAa,MAAM;GACnB,gBAAgB,MAAM;GACtB,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
@@ -809,7 +809,7 @@ type CreateTriggerInput = v.InferInput<ReturnType<typeof createCreateTriggerInpu
809
809
  declare const ListTriggersInputSchema: v.SchemaWithPipe<readonly [v.StrictObjectSchema<{
810
810
  readonly parentOrderId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
811
811
  readonly symbolId: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
812
- readonly status: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["created", "armed", "running", "completed", "cancelled", "failed", "paused"], undefined>, undefined>, undefined>, v.TransformAction<("cancelled" | "created" | "failed" | "completed" | "armed" | "running" | "paused")[] | undefined, (TriggerStatus.STATUS_CREATED | TriggerStatus.STATUS_ARMED | TriggerStatus.STATUS_RUNNING | TriggerStatus.STATUS_COMPLETED | TriggerStatus.STATUS_CANCELED | TriggerStatus.STATUS_FAILED | TriggerStatus.STATUS_PAUSED)[]>]>;
812
+ readonly status: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["created", "armed", "running", "completed", "cancelled", "failed", "paused"], undefined>, undefined>, undefined>, v.TransformAction<("failed" | "cancelled" | "created" | "completed" | "armed" | "running" | "paused")[] | undefined, (TriggerStatus.STATUS_CREATED | TriggerStatus.STATUS_ARMED | TriggerStatus.STATUS_RUNNING | TriggerStatus.STATUS_COMPLETED | TriggerStatus.STATUS_CANCELED | TriggerStatus.STATUS_FAILED | TriggerStatus.STATUS_PAUSED)[]>]>;
813
813
  readonly triggerType: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["stop_loss", "take_profit", "trailing_stop", "twap", "ladder"], undefined>, undefined>, v.TransformAction<"twap" | "ladder" | "stop_loss" | "take_profit" | "trailing_stop" | undefined, TriggerType>]>;
814
814
  readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 1000, undefined>]>, 50>;
815
815
  readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, "">;
@@ -1014,7 +1014,7 @@ declare const ListTriggerEventsInputSchema: v.SchemaWithPipe<readonly [v.StrictO
1014
1014
  readonly triggerId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>;
1015
1015
  }, undefined>, v.TransformAction<{
1016
1016
  limit?: number | undefined;
1017
- eventType?: "updated" | "failed" | "fired" | "canceled" | undefined;
1017
+ eventType?: "failed" | "updated" | "fired" | "canceled" | undefined;
1018
1018
  pageToken: string;
1019
1019
  account?: "active" | "main" | {
1020
1020
  subaccountId: string;