@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
@@ -1 +1 @@
1
- {"version":3,"file":"orders.js","names":["#readClient","ProtoRead.OrdersReadService","#writeClient","ProtoWrite.OrdersService","#realtime","#resolver","#scales","#orderSchema","#orderDetailsSchema","#newOrderInputSchema","#modifyOrderInputSchema","#batchCreateOrdersInputSchema","ProtoRead.OrderSchema"],"sources":["../../../src/services/orders/orders.ts"],"sourcesContent":["import * as ProtoRead from \"../../gen/orders/v1/orders_read_pb.js\";\nimport * as ProtoWrite from \"../../gen/orders/v1/orders_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.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 { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport { getOrderErrorDetail } from \"../../utils/connect-order-errors.js\";\nimport { formatConnectError, isResourceNotFoundError } from \"../../utils/errors.js\";\nimport {\n OpenOrdersInputSchema,\n OrderHistoryInputSchema,\n type NewOrderInput,\n createNewOrderInputSchema,\n CancelOrderInputSchema,\n CancelOrderResultSchema,\n type CancelOrderResult,\n CancelAllOrdersInputSchema,\n CancelAllOrdersResponseSchema,\n type CancelAllOrdersResponse,\n type Order,\n GetOrderDetailsInputSchema,\n createCreateOrderResultSchema,\n createPreviewOrderResultSchema,\n type PreviewOrderResult,\n type ModifyOrderInput,\n assertKnownModifyOrderInputKeys,\n createModifyOrderInputSchema,\n ModifyOrderResultSchema,\n type CreateOrderResult,\n type ModifyOrderResult,\n type OrderDetails,\n createOrderSchema,\n createOrderDetailsSchema,\n CancelAllAfterInputSchema,\n CancelAllAfterResultSchema,\n type CancelAllAfterInput,\n type CancelAllAfterResult,\n BatchCancelOrdersInputSchema,\n BatchCancelOrdersResultSchema,\n type BatchCancelOrdersInput,\n type BatchCancelOrdersResult,\n createBatchCreateOrdersResultSchema,\n type BatchCreateOrdersInput,\n type BatchCreateOrdersResult,\n BatchReplaceOrdersResultSchema,\n type BatchReplaceOrdersInput,\n type BatchReplaceOrdersResult,\n GetBatchReplaceStatusInputSchema,\n GetBatchReplaceStatusResultSchema,\n type GetBatchReplaceStatusInput,\n type GetBatchReplaceStatusResult,\n assertKnownBatchReplaceOrderItemInputKeys,\n createBatchCreateOrdersInputSchema,\n createBatchReplaceOrdersInputSchema,\n} from \"./orders.schemas.js\";\n\nfunction hasKnownOrderSymbol(scales: SdkScales, order: { symbolId: number }): boolean {\n try {\n scales.baseQty(order.symbolId);\n return true;\n } catch {\n return false;\n }\n}\n\nconst MISCLASSIFIED_ORDER_NOT_FOUND_MESSAGE = \"order not found\";\n\nfunction isOrderNotFoundError(error: unknown): boolean {\n return (\n isResourceNotFoundError(error) ||\n getOrderErrorDetail(error)?.code === \"NOT_FOUND\" ||\n formatConnectError(error, \"\").toLowerCase() === MISCLASSIFIED_ORDER_NOT_FOUND_MESSAGE\n );\n}\n\ninterface SubscribeOrdersInput extends BaseSubscribeInput<Order> {\n accountId: string;\n}\n\nfunction createMutationRequestId(): string {\n return (\n globalThis.crypto?.randomUUID?.() ??\n `req_${Date.now()}_${Math.random().toString(16).slice(2)}`\n );\n}\n\nfunction assertBatchResultCount(operation: string, requested: number, returned: number): void {\n if (requested !== returned) {\n throw new Error(\n `${operation} returned ${returned} results for ${requested} requested items.`,\n );\n }\n}\n\n/**\n * Manages account-scoped spot orders across read, write, and realtime order update surfaces.\n */\nexport class OrdersService {\n #readClient: Client<typeof ProtoRead.OrdersReadService>;\n #writeClient: Client<typeof ProtoWrite.OrdersService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #orderSchema: ReturnType<typeof createOrderSchema>;\n #orderDetailsSchema: ReturnType<typeof createOrderDetailsSchema>;\n #newOrderInputSchema: ReturnType<typeof createNewOrderInputSchema>;\n #modifyOrderInputSchema: ReturnType<typeof createModifyOrderInputSchema>;\n #batchCreateOrdersInputSchema: ReturnType<typeof createBatchCreateOrdersInputSchema>;\n\n constructor(\n transport: Transport,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#readClient = createClient(ProtoRead.OrdersReadService, transport);\n this.#writeClient = createClient(ProtoWrite.OrdersService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#orderSchema = createOrderSchema(scales);\n this.#orderDetailsSchema = createOrderDetailsSchema(scales);\n this.#newOrderInputSchema = createNewOrderInputSchema(scales);\n this.#modifyOrderInputSchema = createModifyOrderInputSchema(scales);\n this.#batchCreateOrdersInputSchema = createBatchCreateOrdersInputSchema(scales);\n }\n\n /**\n * Returns open orders for the resolved root account or subaccount, with optional symbol IDs, trigger ID, side, pagination, and attached-risk inclusion filters. Results are paginated with a server-determined page size: a single call is not the full set of open orders — keep calling with the returned nextPageToken until it is empty.\n */\n async listOpen(\n input: v.InferInput<typeof OpenOrdersInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ orders: Order[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(OpenOrdersInputSchema, resolved);\n const res = await this.#readClient.getOpenOrders(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n orders: parse(\n v.array(this.#orderSchema),\n res.orders.filter((order) => hasKnownOrderSymbol(this.#scales, order)),\n ),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Returns historical orders for the resolved account scope, supporting symbol IDs, trigger ID, side, status, time range, pagination, and attached-risk filters. Results are paginated with the backend nextPageToken.\n */\n async listHistory(\n input: v.InferInput<typeof OrderHistoryInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ orders: Order[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(OrderHistoryInputSchema, resolved);\n const res = await this.#readClient.getOrderHistory(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n orders: parse(\n v.array(this.#orderSchema),\n res.orders.filter((order) => hasKnownOrderSymbol(this.#scales, order)),\n ),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Evaluates one complete order intent against current market, policy, risk, and balance state without creating an order, reserving funds, or claiming its client order ID.\n */\n async preview(\n input: NewOrderInput,\n options?: PolyesterRequestOptions,\n ): Promise<PreviewOrderResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(this.#newOrderInputSchema, resolved);\n const response = await this.#writeClient.previewOrder(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(\n createPreviewOrderResultSchema(this.#scales, request.order.symbolId),\n response,\n );\n }\n\n /**\n * Places a spot order with an explicit market-IOC, limit-GTC, limit-IOC, or limit-FOK execution policy and optional attached risk controls. clientOrderId is the caller-controlled idempotency key and should be reused only for the same logical order.\n */\n async create(\n input: NewOrderInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateOrderResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(this.#newOrderInputSchema, resolved);\n const requestPayload = removeUndefined(validatedInput);\n const res = await this.#writeClient.createOrder(\n requestPayload,\n toConnectCallOptions(options),\n );\n return parse(\n createCreateOrderResultSchema(this.#scales, validatedInput.order.symbolId),\n res,\n );\n }\n\n /**\n * Places 1–20 spot orders in one best-effort request. Results preserve item order and report admission as accepted or rejected; accepted orders still require lifecycle reconciliation. Supply a clientOrderId for each item and a stable requestId when an ambiguous batch may be retried.\n */\n async batchCreate(\n input: BatchCreateOrdersInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchCreateOrdersResult> {\n await this.#scales.ready();\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(this.#batchCreateOrdersInputSchema, resolved);\n const response = await this.#writeClient.batchCreateOrders(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n const result = parse(\n createBatchCreateOrdersResultSchema(\n this.#scales,\n request.items.map((item) => item.symbolId),\n ),\n response,\n );\n assertBatchResultCount(\"batchCreate\", input.items.length, result.results.length);\n return result;\n }\n\n /**\n * Requests cancellation of one order in the resolved account scope by order id or client order id, with optional symbol routing. The response acknowledges the cancellation request, not the order's final lifecycle state; reconcile through order reads or realtime before releasing local state. A missing target remains a {@link ResourceNotFoundError}; callers performing desired-state cleanup may treat that error as success when the order could already have filled or left the book.\n */\n async cancel(\n input: v.InferInput<typeof CancelOrderInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CancelOrderResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n\n const validated = parse(CancelOrderInputSchema, resolved);\n\n const res = await this.#writeClient.cancelOrder(\n {\n key: validated.key,\n symbolId: validated.symbolId,\n subaccountId: validated.subaccountId,\n },\n toConnectCallOptions(options),\n );\n return parse(CancelOrderResultSchema, res);\n }\n\n /**\n * Cancels 1–50 explicit orders in one best-effort request. Results preserve item order and acknowledge cancellation admission rather than final order state. Supply a stable requestId when an ambiguous batch may be retried.\n */\n async batchCancel(\n input: BatchCancelOrdersInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchCancelOrdersResult> {\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(BatchCancelOrdersInputSchema, resolved);\n const response = await this.#writeClient.batchCancelOrders(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n const result = parse(BatchCancelOrdersResultSchema, response);\n assertBatchResultCount(\"batchCancel\", input.items.length, result.results.length);\n return result;\n }\n\n /**\n * Applies a price, quantity, client id, or attached-risk patch to one open order. The symbol ID routes policy checks and quantity scaling. A requestId is generated when omitted; provide a stable value when retrying the same logical modification.\n */\n async modify(\n input: ModifyOrderInput,\n options?: PolyesterMutationOptions,\n ): Promise<ModifyOrderResult> {\n await this.#scales.ready();\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n assertKnownModifyOrderInputKeys(resolved);\n const validated = parse(this.#modifyOrderInputSchema, resolved);\n const res = await this.#writeClient.modifyOrder(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(ModifyOrderResultSchema, res);\n }\n\n /**\n * Replaces 1–50 same-symbol orders and returns an index-stable durable admission receipt. Reuse requestId only when retrying the same logical batch; use the returned batchRequestId for later status reads.\n */\n async batchReplace(\n input: BatchReplaceOrdersInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchReplaceOrdersResult> {\n await this.#scales.ready();\n for (const item of input.items) {\n assertKnownBatchReplaceOrderItemInputKeys(item);\n }\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(createBatchReplaceOrdersInputSchema(this.#scales), resolved);\n const response = await this.#writeClient.batchReplaceOrders(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n const result = parse(BatchReplaceOrdersResultSchema, response);\n assertBatchResultCount(\"batchReplace\", input.items.length, result.results.length);\n return result;\n }\n\n /**\n * Reads the durable per-item execution status for a batch replacement receipt.\n */\n async getBatchReplaceStatus(\n input: GetBatchReplaceStatusInput,\n options?: PolyesterRequestOptions,\n ): Promise<GetBatchReplaceStatusResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(GetBatchReplaceStatusInputSchema, resolved);\n const response = await this.#readClient.getBatchReplaceStatus(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(GetBatchReplaceStatusResultSchema, response);\n }\n\n /**\n * Cancels all matching open orders for the resolved account scope, optionally narrowed by symbol ID and side, with dry-run preview. A requestId is generated when omitted; provide a stable value when retrying the same logical bulk cancellation.\n */\n async cancelAll(\n input: v.InferInput<typeof CancelAllOrdersInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CancelAllOrdersResponse> {\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const validated = parse(CancelAllOrdersInputSchema, resolved);\n const res = await this.#writeClient.cancelAllOrders(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(CancelAllOrdersResponseSchema, res);\n }\n\n /**\n * Arms, refreshes, or disables the account dead-man switch, optionally scoped by symbol ID and side. timeoutSec 0 disables it; 10–120 arms it. Generate a new requestId for each deliberate heartbeat, but reuse the same ID when retrying one ambiguous heartbeat.\n */\n async cancelAllAfter(\n input: CancelAllAfterInput,\n options?: PolyesterMutationOptions,\n ): Promise<CancelAllAfterResult> {\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(CancelAllAfterInputSchema, resolved);\n const response = await this.#writeClient.cancelAllAfter(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(CancelAllAfterResultSchema, response);\n }\n\n /**\n * Fetches one order by id or client order id and returns its order, trades, and transfer details when found. Returns null when the requested order is not found.\n */\n async getDetails(\n input: v.InferInput<typeof GetOrderDetailsInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<OrderDetails | null> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(GetOrderDetailsInputSchema, resolved);\n let res: ProtoRead.GetOrderResponse;\n try {\n res = await this.#readClient.getOrder(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n } catch (error) {\n if (isOrderNotFoundError(error)) return null;\n throw error;\n }\n if (!res.order) return null;\n return parse(this.#orderDetailsSchema, res);\n }\n\n /**\n * Subscribes to private order updates on private:spot:orders:{accountId}:proto and emits parsed order records until the returned unsubscribe function is called.\n */\n subscribe(input: SubscribeOrdersInput): () => void {\n const channel = `private:spot:orders:${input.accountId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: ProtoRead.OrderSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const order = parse(this.#orderSchema, data);\n input.onEvent(order);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"orders.js","names":["#readClient","ProtoRead.OrdersReadService","#writeClient","ProtoWrite.OrdersService","#realtime","#resolver","#scales","#orderSchema","#orderDetailsSchema","#newOrderInputSchema","#modifyOrderInputSchema","#batchCreateOrdersInputSchema","ProtoRead.OrderSchema"],"sources":["../../../src/services/orders/orders.ts"],"sourcesContent":["import * as ProtoRead from \"../../gen/orders/v1/orders_read_pb.js\";\nimport * as ProtoWrite from \"../../gen/orders/v1/orders_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.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 { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport { getOrderErrorDetail } from \"../../utils/connect-order-errors.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport { formatConnectError, isResourceNotFoundError } from \"../../utils/errors.js\";\nimport {\n OpenOrdersInputSchema,\n OrderHistoryInputSchema,\n type NewOrderInput,\n createNewOrderInputSchema,\n CancelOrderInputSchema,\n CancelOrderResultSchema,\n type CancelOrderResult,\n CancelAllOrdersInputSchema,\n CancelAllOrdersResponseSchema,\n type CancelAllOrdersResponse,\n type Order,\n GetOrderDetailsInputSchema,\n createCreateOrderResultSchema,\n createPreviewOrderResultSchema,\n type PreviewOrderResult,\n type ModifyOrderInput,\n assertKnownModifyOrderInputKeys,\n createModifyOrderInputSchema,\n ModifyOrderResultSchema,\n type CreateOrderResult,\n type ModifyOrderResult,\n type OrderDetails,\n createOrderSchema,\n createOrderDetailsSchema,\n CancelAllAfterInputSchema,\n CancelAllAfterResultSchema,\n type CancelAllAfterInput,\n type CancelAllAfterResult,\n BatchCancelOrdersInputSchema,\n BatchCancelOrdersResultSchema,\n type BatchCancelOrdersInput,\n type BatchCancelOrdersResult,\n createBatchCreateOrdersResultSchema,\n type BatchCreateOrdersInput,\n type BatchCreateOrdersResult,\n BatchReplaceOrdersResultSchema,\n type BatchReplaceOrdersInput,\n type BatchReplaceOrdersResult,\n GetBatchReplaceStatusInputSchema,\n GetBatchReplaceStatusResultSchema,\n type GetBatchReplaceStatusInput,\n type GetBatchReplaceStatusResult,\n assertKnownBatchReplaceOrderItemInputKeys,\n createBatchCreateOrdersInputSchema,\n createBatchReplaceOrdersInputSchema,\n} from \"./orders.schemas.js\";\n\nfunction hasKnownOrderSymbol(scales: SdkScales, order: { symbolId: number }): boolean {\n try {\n scales.baseQty(order.symbolId);\n return true;\n } catch {\n return false;\n }\n}\n\nconst MISCLASSIFIED_ORDER_NOT_FOUND_MESSAGE = \"order not found\";\n\nfunction isOrderNotFoundError(error: unknown): boolean {\n return (\n isResourceNotFoundError(error) ||\n getOrderErrorDetail(error)?.code === \"NOT_FOUND\" ||\n formatConnectError(error, \"\").toLowerCase() === MISCLASSIFIED_ORDER_NOT_FOUND_MESSAGE\n );\n}\n\ninterface SubscribeOrdersInput extends BaseSubscribeInput<Order> {\n accountId: string;\n}\n\nfunction createMutationRequestId(): string {\n return (\n globalThis.crypto?.randomUUID?.() ??\n `req_${Date.now()}_${Math.random().toString(16).slice(2)}`\n );\n}\n\nfunction assertBatchResultCount(operation: string, requested: number, returned: number): void {\n if (requested !== returned) {\n throw new Error(\n `${operation} returned ${returned} results for ${requested} requested items.`,\n );\n }\n}\n\n/**\n * Manages account-scoped spot orders across read, write, and realtime order update surfaces.\n */\nexport class OrdersService {\n #readClient: Client<typeof ProtoRead.OrdersReadService>;\n #writeClient: Client<typeof ProtoWrite.OrdersService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #orderSchema: ReturnType<typeof createOrderSchema>;\n #orderDetailsSchema: ReturnType<typeof createOrderDetailsSchema>;\n #newOrderInputSchema: ReturnType<typeof createNewOrderInputSchema>;\n #modifyOrderInputSchema: ReturnType<typeof createModifyOrderInputSchema>;\n #batchCreateOrdersInputSchema: ReturnType<typeof createBatchCreateOrdersInputSchema>;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#readClient = createClient(ProtoRead.OrdersReadService, transports.authApi);\n this.#writeClient = createClient(ProtoWrite.OrdersService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#orderSchema = createOrderSchema(scales);\n this.#orderDetailsSchema = createOrderDetailsSchema(scales);\n this.#newOrderInputSchema = createNewOrderInputSchema(scales);\n this.#modifyOrderInputSchema = createModifyOrderInputSchema(scales);\n this.#batchCreateOrdersInputSchema = createBatchCreateOrdersInputSchema(scales);\n }\n\n /**\n * Returns open orders for the resolved root account or subaccount, with optional symbol IDs, trigger ID, side, pagination, and attached-risk inclusion filters. Results are paginated with a server-determined page size: a single call is not the full set of open orders — keep calling with the returned nextPageToken until it is empty.\n */\n async listOpen(\n input: v.InferInput<typeof OpenOrdersInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ orders: Order[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(OpenOrdersInputSchema, resolved);\n const res = await this.#readClient.getOpenOrders(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n orders: parse(\n v.array(this.#orderSchema),\n res.orders.filter((order) => hasKnownOrderSymbol(this.#scales, order)),\n ),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Returns historical orders for the resolved account scope, supporting symbol IDs, trigger ID, side, status, time range, pagination, and attached-risk filters. Results are paginated with the backend nextPageToken.\n */\n async listHistory(\n input: v.InferInput<typeof OrderHistoryInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ orders: Order[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(OrderHistoryInputSchema, resolved);\n const res = await this.#readClient.getOrderHistory(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n orders: parse(\n v.array(this.#orderSchema),\n res.orders.filter((order) => hasKnownOrderSymbol(this.#scales, order)),\n ),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Evaluates one complete order intent against current market, policy, risk, and balance state without creating an order, reserving funds, or claiming its client order ID.\n */\n async preview(\n input: NewOrderInput,\n options?: PolyesterRequestOptions,\n ): Promise<PreviewOrderResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(this.#newOrderInputSchema, resolved);\n const response = await this.#writeClient.previewOrder(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(\n createPreviewOrderResultSchema(this.#scales, request.order.symbolId),\n response,\n );\n }\n\n /**\n * Places a spot order with an explicit market-IOC, limit-GTC, limit-IOC, or limit-FOK execution policy and optional attached risk controls. clientOrderId is the caller-controlled idempotency key and should be reused only for the same logical order.\n */\n async create(\n input: NewOrderInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateOrderResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(this.#newOrderInputSchema, resolved);\n const requestPayload = removeUndefined(validatedInput);\n const res = await this.#writeClient.createOrder(\n requestPayload,\n toConnectCallOptions(options),\n );\n return parse(\n createCreateOrderResultSchema(this.#scales, validatedInput.order.symbolId),\n res,\n );\n }\n\n /**\n * Places 1–20 spot orders in one best-effort request. Results preserve item order and report admission as accepted or rejected; accepted orders still require lifecycle reconciliation. Supply a clientOrderId for each item and a stable requestId when an ambiguous batch may be retried.\n */\n async batchCreate(\n input: BatchCreateOrdersInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchCreateOrdersResult> {\n await this.#scales.ready();\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(this.#batchCreateOrdersInputSchema, resolved);\n const response = await this.#writeClient.batchCreateOrders(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n const result = parse(\n createBatchCreateOrdersResultSchema(\n this.#scales,\n request.items.map((item) => item.symbolId),\n ),\n response,\n );\n assertBatchResultCount(\"batchCreate\", input.items.length, result.results.length);\n return result;\n }\n\n /**\n * Requests cancellation of one order in the resolved account scope by order id or client order id, with optional symbol routing. The response acknowledges the cancellation request, not the order's final lifecycle state; reconcile through order reads or realtime before releasing local state. A missing target remains a {@link ResourceNotFoundError}; callers performing desired-state cleanup may treat that error as success when the order could already have filled or left the book.\n */\n async cancel(\n input: v.InferInput<typeof CancelOrderInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CancelOrderResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n\n const validated = parse(CancelOrderInputSchema, resolved);\n\n const res = await this.#writeClient.cancelOrder(\n {\n key: validated.key,\n symbolId: validated.symbolId,\n subaccountId: validated.subaccountId,\n },\n toConnectCallOptions(options),\n );\n return parse(CancelOrderResultSchema, res);\n }\n\n /**\n * Cancels 1–50 explicit orders in one best-effort request. Results preserve item order and acknowledge cancellation admission rather than final order state. Supply a stable requestId when an ambiguous batch may be retried.\n */\n async batchCancel(\n input: BatchCancelOrdersInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchCancelOrdersResult> {\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(BatchCancelOrdersInputSchema, resolved);\n const response = await this.#writeClient.batchCancelOrders(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n const result = parse(BatchCancelOrdersResultSchema, response);\n assertBatchResultCount(\"batchCancel\", input.items.length, result.results.length);\n return result;\n }\n\n /**\n * Applies a price, quantity, client id, or attached-risk patch to one open order. The symbol ID routes policy checks and quantity scaling. A requestId is generated when omitted; provide a stable value when retrying the same logical modification.\n */\n async modify(\n input: ModifyOrderInput,\n options?: PolyesterMutationOptions,\n ): Promise<ModifyOrderResult> {\n await this.#scales.ready();\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n assertKnownModifyOrderInputKeys(resolved);\n const validated = parse(this.#modifyOrderInputSchema, resolved);\n const res = await this.#writeClient.modifyOrder(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(ModifyOrderResultSchema, res);\n }\n\n /**\n * Replaces 1–50 same-symbol orders and returns an index-stable durable admission receipt. Reuse requestId only when retrying the same logical batch; use the returned batchRequestId for later status reads.\n */\n async batchReplace(\n input: BatchReplaceOrdersInput,\n options?: PolyesterMutationOptions,\n ): Promise<BatchReplaceOrdersResult> {\n await this.#scales.ready();\n for (const item of input.items) {\n assertKnownBatchReplaceOrderItemInputKeys(item);\n }\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(createBatchReplaceOrdersInputSchema(this.#scales), resolved);\n const response = await this.#writeClient.batchReplaceOrders(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n const result = parse(BatchReplaceOrdersResultSchema, response);\n assertBatchResultCount(\"batchReplace\", input.items.length, result.results.length);\n return result;\n }\n\n /**\n * Reads the durable per-item execution status for a batch replacement receipt.\n */\n async getBatchReplaceStatus(\n input: GetBatchReplaceStatusInput,\n options?: PolyesterRequestOptions,\n ): Promise<GetBatchReplaceStatusResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(GetBatchReplaceStatusInputSchema, resolved);\n const response = await this.#readClient.getBatchReplaceStatus(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(GetBatchReplaceStatusResultSchema, response);\n }\n\n /**\n * Cancels all matching open orders for the resolved account scope, optionally narrowed by symbol ID and side, with dry-run preview. A requestId is generated when omitted; provide a stable value when retrying the same logical bulk cancellation.\n */\n async cancelAll(\n input: v.InferInput<typeof CancelAllOrdersInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CancelAllOrdersResponse> {\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const validated = parse(CancelAllOrdersInputSchema, resolved);\n const res = await this.#writeClient.cancelAllOrders(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(CancelAllOrdersResponseSchema, res);\n }\n\n /**\n * Arms, refreshes, or disables the account dead-man switch, optionally scoped by symbol ID and side. timeoutSec 0 disables it; 10–120 arms it. Generate a new requestId for each deliberate heartbeat, but reuse the same ID when retrying one ambiguous heartbeat.\n */\n async cancelAllAfter(\n input: CancelAllAfterInput,\n options?: PolyesterMutationOptions,\n ): Promise<CancelAllAfterResult> {\n const resolved = {\n ...resolveAccountScopedInput(input, this.#resolver),\n requestId: input.requestId ?? createMutationRequestId(),\n };\n const request = parse(CancelAllAfterInputSchema, resolved);\n const response = await this.#writeClient.cancelAllAfter(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(CancelAllAfterResultSchema, response);\n }\n\n /**\n * Fetches one order by id or client order id and returns its order, trades, and transfer details when found. Returns null when the requested order is not found.\n */\n async getDetails(\n input: v.InferInput<typeof GetOrderDetailsInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<OrderDetails | null> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(GetOrderDetailsInputSchema, resolved);\n let res: ProtoRead.GetOrderResponse;\n try {\n res = await this.#readClient.getOrder(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n } catch (error) {\n if (isOrderNotFoundError(error)) return null;\n throw error;\n }\n if (!res.order) return null;\n return parse(this.#orderDetailsSchema, res);\n }\n\n /**\n * Subscribes to private order updates on private:spot:orders:{accountId}:proto and emits parsed order records until the returned unsubscribe function is called.\n */\n subscribe(input: SubscribeOrdersInput): () => void {\n const channel = `private:spot:orders:${input.accountId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: ProtoRead.OrderSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const order = parse(this.#orderSchema, data);\n input.onEvent(order);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import { AuthApiTransports } from "../../../shared/transports.js";
1
2
  import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../../shared/request-options.js";
2
3
  import { ApiKeyPolicy, ApplyApiKeyPolicyInputSchema, CreateApiKeyPolicyInputSchema, GetApiKeyPolicyInputSchema, ListApiKeyPoliciesInputSchema, UpdateApiKeyPolicyInputSchema } from "./api-key-policies.schemas.js";
3
- import { Transport } from "@connectrpc/connect";
4
4
  import * as v from "valibot";
5
5
  //#region src/services/policies/api-key-policies/api-key-policies.d.ts
6
6
  /**
@@ -8,7 +8,7 @@ import * as v from "valibot";
8
8
  */
9
9
  declare class ApiKeyPoliciesService {
10
10
  #private;
11
- constructor(transport: Transport);
11
+ constructor(transports: AuthApiTransports);
12
12
  /**
13
13
  * Returns API key policy templates available to the caller.
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"api-key-policies.d.ts","names":[],"sources":["../../../../src/services/policies/api-key-policies/api-key-policies.ts"],"mappings":";;;;;;;;cA0Ba;;EAGG,YAAA,WAAW;;;;EAOjB,KACF,QAAO,EAAE,kBAAkB,gCAC3B,UAAU,0BACX,QAAQ;;;;EAYL,IACF,OAAO,EAAE,kBAAkB,6BAC3B,UAAU,0BACX,QAAQ;;;;EAcL,OACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OAAO,kBAAkB,UAAU,2BAA2B;;;;EAW9D,MACF,OAAO,EAAE,kBAAkB,+BAC3B,UAAU,2BACX"}
1
+ {"version":3,"file":"api-key-policies.d.ts","names":[],"sources":["../../../../src/services/policies/api-key-policies/api-key-policies.ts"],"mappings":";;;;;;;;cA2Ba;;EAGG,YAAA,YAAY;;;;EAOlB,KACF,QAAO,EAAE,kBAAkB,gCAC3B,UAAU,0BACX,QAAQ;;;;EAYL,IACF,OAAO,EAAE,kBAAkB,6BAC3B,UAAU,0BACX,QAAQ;;;;EAcL,OACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OAAO,kBAAkB,UAAU,2BAA2B;;;;EAW9D,MACF,OAAO,EAAE,kBAAkB,+BAC3B,UAAU,2BACX"}
@@ -11,8 +11,8 @@ import { createClient } from "@connectrpc/connect";
11
11
  */
12
12
  var ApiKeyPoliciesService = class {
13
13
  #client;
14
- constructor(transport) {
15
- this.#client = createClient(PolicyService, transport);
14
+ constructor(transports) {
15
+ this.#client = createClient(PolicyService, transports.authApi);
16
16
  }
17
17
  /**
18
18
  * Returns API key policy templates available to the caller.
@@ -1 +1 @@
1
- {"version":3,"file":"api-key-policies.js","names":["#client","Proto.PolicyService"],"sources":["../../../../src/services/policies/api-key-policies/api-key-policies.ts"],"sourcesContent":["import * as Proto from \"../../../gen/auth/v1/policies_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport type * as v from \"valibot\";\nimport { parse } from \"../../../shared/validation.js\";\nimport { removeUndefined } from \"../../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../../shared/request-options.js\";\nimport {\n ApiKeyPolicySchema,\n ListApiKeyPoliciesResponseSchema,\n CreateApiKeyPolicyInputSchema,\n UpdateApiKeyPolicyInputSchema,\n ApplyApiKeyPolicyInputSchema,\n DEFAULT_API_KEY_POLICY,\n type ApiKeyPolicy,\n ListApiKeyPoliciesInputSchema,\n GetApiKeyPolicyInputSchema,\n} from \"./api-key-policies.schemas.js\";\nimport { PolicyIdSchema } from \"../shared.js\";\n\n/**\n * Manages reusable API key policy templates and their assignment to API keys.\n */\nexport class ApiKeyPoliciesService {\n #client: Client<typeof Proto.PolicyService>;\n\n constructor(transport: Transport) {\n this.#client = createClient(Proto.PolicyService, transport);\n }\n\n /**\n * Returns API key policy templates available to the caller.\n */\n async list(\n input: v.InferInput<typeof ListApiKeyPoliciesInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<ApiKeyPolicy[]> {\n const request = parse(ListApiKeyPoliciesInputSchema, input);\n const res = await this.#client.listApiPolicies(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(ListApiKeyPoliciesResponseSchema, res);\n }\n\n /**\n * Fetches an API key policy by base58 policy ID, falling back to the SDK default no-permissions policy when no ID or policy is returned.\n */\n async get(\n input: v.InferInput<typeof GetApiKeyPolicyInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<ApiKeyPolicy> {\n const { policyId, keyId } = parse(GetApiKeyPolicyInputSchema, input);\n if (!policyId) return DEFAULT_API_KEY_POLICY;\n const res = await this.#client.getApiPolicy(\n removeUndefined({ policyId, keyId }),\n toConnectCallOptions(options),\n );\n if (!res.policy) return DEFAULT_API_KEY_POLICY;\n return parse(ApiKeyPolicySchema, res.policy);\n }\n\n /**\n * Creates an API key policy template with a spot-market scope, allowed actions, and optional immediate assignment to a key.\n */\n async create(\n input: v.InferInput<typeof CreateApiKeyPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<ApiKeyPolicy> {\n const validatedInput = parse(CreateApiKeyPolicyInputSchema, input);\n const res = await this.#client.createApiPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.policy) throw new Error(\"Failed to create API key policy\");\n return parse(ApiKeyPolicySchema, res.policy);\n }\n\n /**\n * Updates selected API key policy fields using optimistic concurrency.\n */\n async update(\n input: v.InferInput<typeof UpdateApiKeyPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<ApiKeyPolicy> {\n const validatedInput = parse(UpdateApiKeyPolicyInputSchema, input);\n const res = await this.#client.updateApiPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.policy) throw new Error(\"Failed to update API key policy\");\n return parse(ApiKeyPolicySchema, res.policy);\n }\n\n /**\n * Deletes an API key policy template when it is not in use.\n */\n async delete(policyId: string, options?: PolyesterMutationOptions): Promise<void> {\n const validatedPolicyId = parse(PolicyIdSchema, policyId);\n await this.#client.deleteApiPolicy(\n { policyId: validatedPolicyId },\n toConnectCallOptions(options),\n );\n }\n\n /**\n * Attaches a policy to an API key. Passing a null policyId clears the binding and leaves the key with no permissions.\n */\n async apply(\n input: v.InferInput<typeof ApplyApiKeyPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const validatedInput = parse(ApplyApiKeyPolicyInputSchema, input);\n await this.#client.setApiKeyPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AA0BA,IAAa,wBAAb,MAAmC;CAC/B;CAEA,YAAY,WAAsB;EAC9B,KAAKA,UAAU,aAAaC,eAAqB,SAAS;CAC9D;;;;CAKA,MAAM,KACF,QAA4D,CAAC,GAC7D,SACuB;EACvB,MAAM,UAAU,MAAM,+BAA+B,KAAK;EAC1D,MAAM,MAAM,MAAM,KAAKD,QAAQ,gBAC3B,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,kCAAkC,GAAG;CACtD;;;;CAKA,MAAM,IACF,OACA,SACqB;EACrB,MAAM,EAAE,UAAU,UAAU,MAAM,4BAA4B,KAAK;EACnE,IAAI,CAAC,UAAU,OAAO;EACtB,MAAM,MAAM,MAAM,KAAKA,QAAQ,aAC3B,gBAAgB;GAAE;GAAU;EAAM,CAAC,GACnC,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,QAAQ,OAAO;EACxB,OAAO,MAAM,oBAAoB,IAAI,MAAM;CAC/C;;;;CAKA,MAAM,OACF,OACA,SACqB;EACrB,MAAM,iBAAiB,MAAM,+BAA+B,KAAK;EACjE,MAAM,MAAM,MAAM,KAAKA,QAAQ,gBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,QAAQ,MAAM,IAAI,MAAM,iCAAiC;EAClE,OAAO,MAAM,oBAAoB,IAAI,MAAM;CAC/C;;;;CAKA,MAAM,OACF,OACA,SACqB;EACrB,MAAM,iBAAiB,MAAM,+BAA+B,KAAK;EACjE,MAAM,MAAM,MAAM,KAAKA,QAAQ,gBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,QAAQ,MAAM,IAAI,MAAM,iCAAiC;EAClE,OAAO,MAAM,oBAAoB,IAAI,MAAM;CAC/C;;;;CAKA,MAAM,OAAO,UAAkB,SAAmD;EAC9E,MAAM,oBAAoB,MAAM,gBAAgB,QAAQ;EACxD,MAAM,KAAKA,QAAQ,gBACf,EAAE,UAAU,kBAAkB,GAC9B,qBAAqB,OAAO,CAChC;CACJ;;;;CAKA,MAAM,MACF,OACA,SACa;EACb,MAAM,iBAAiB,MAAM,8BAA8B,KAAK;EAChE,MAAM,KAAKA,QAAQ,gBACf,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;CACJ;AACJ"}
1
+ {"version":3,"file":"api-key-policies.js","names":["#client","Proto.PolicyService"],"sources":["../../../../src/services/policies/api-key-policies/api-key-policies.ts"],"sourcesContent":["import * as Proto from \"../../../gen/auth/v1/policies_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport type { AuthApiTransports } from \"../../../shared/transports.js\";\nimport type * as v from \"valibot\";\nimport { parse } from \"../../../shared/validation.js\";\nimport { removeUndefined } from \"../../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../../shared/request-options.js\";\nimport {\n ApiKeyPolicySchema,\n ListApiKeyPoliciesResponseSchema,\n CreateApiKeyPolicyInputSchema,\n UpdateApiKeyPolicyInputSchema,\n ApplyApiKeyPolicyInputSchema,\n DEFAULT_API_KEY_POLICY,\n type ApiKeyPolicy,\n ListApiKeyPoliciesInputSchema,\n GetApiKeyPolicyInputSchema,\n} from \"./api-key-policies.schemas.js\";\nimport { PolicyIdSchema } from \"../shared.js\";\n\n/**\n * Manages reusable API key policy templates and their assignment to API keys.\n */\nexport class ApiKeyPoliciesService {\n #client: Client<typeof Proto.PolicyService>;\n\n constructor(transports: AuthApiTransports) {\n this.#client = createClient(Proto.PolicyService, transports.authApi);\n }\n\n /**\n * Returns API key policy templates available to the caller.\n */\n async list(\n input: v.InferInput<typeof ListApiKeyPoliciesInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<ApiKeyPolicy[]> {\n const request = parse(ListApiKeyPoliciesInputSchema, input);\n const res = await this.#client.listApiPolicies(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(ListApiKeyPoliciesResponseSchema, res);\n }\n\n /**\n * Fetches an API key policy by base58 policy ID, falling back to the SDK default no-permissions policy when no ID or policy is returned.\n */\n async get(\n input: v.InferInput<typeof GetApiKeyPolicyInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<ApiKeyPolicy> {\n const { policyId, keyId } = parse(GetApiKeyPolicyInputSchema, input);\n if (!policyId) return DEFAULT_API_KEY_POLICY;\n const res = await this.#client.getApiPolicy(\n removeUndefined({ policyId, keyId }),\n toConnectCallOptions(options),\n );\n if (!res.policy) return DEFAULT_API_KEY_POLICY;\n return parse(ApiKeyPolicySchema, res.policy);\n }\n\n /**\n * Creates an API key policy template with a spot-market scope, allowed actions, and optional immediate assignment to a key.\n */\n async create(\n input: v.InferInput<typeof CreateApiKeyPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<ApiKeyPolicy> {\n const validatedInput = parse(CreateApiKeyPolicyInputSchema, input);\n const res = await this.#client.createApiPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.policy) throw new Error(\"Failed to create API key policy\");\n return parse(ApiKeyPolicySchema, res.policy);\n }\n\n /**\n * Updates selected API key policy fields using optimistic concurrency.\n */\n async update(\n input: v.InferInput<typeof UpdateApiKeyPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<ApiKeyPolicy> {\n const validatedInput = parse(UpdateApiKeyPolicyInputSchema, input);\n const res = await this.#client.updateApiPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!res.policy) throw new Error(\"Failed to update API key policy\");\n return parse(ApiKeyPolicySchema, res.policy);\n }\n\n /**\n * Deletes an API key policy template when it is not in use.\n */\n async delete(policyId: string, options?: PolyesterMutationOptions): Promise<void> {\n const validatedPolicyId = parse(PolicyIdSchema, policyId);\n await this.#client.deleteApiPolicy(\n { policyId: validatedPolicyId },\n toConnectCallOptions(options),\n );\n }\n\n /**\n * Attaches a policy to an API key. Passing a null policyId clears the binding and leaves the key with no permissions.\n */\n async apply(\n input: v.InferInput<typeof ApplyApiKeyPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const validatedInput = parse(ApplyApiKeyPolicyInputSchema, input);\n await this.#client.setApiKeyPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AA2BA,IAAa,wBAAb,MAAmC;CAC/B;CAEA,YAAY,YAA+B;EACvC,KAAKA,UAAU,aAAaC,eAAqB,WAAW,OAAO;CACvE;;;;CAKA,MAAM,KACF,QAA4D,CAAC,GAC7D,SACuB;EACvB,MAAM,UAAU,MAAM,+BAA+B,KAAK;EAC1D,MAAM,MAAM,MAAM,KAAKD,QAAQ,gBAC3B,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,kCAAkC,GAAG;CACtD;;;;CAKA,MAAM,IACF,OACA,SACqB;EACrB,MAAM,EAAE,UAAU,UAAU,MAAM,4BAA4B,KAAK;EACnE,IAAI,CAAC,UAAU,OAAO;EACtB,MAAM,MAAM,MAAM,KAAKA,QAAQ,aAC3B,gBAAgB;GAAE;GAAU;EAAM,CAAC,GACnC,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,QAAQ,OAAO;EACxB,OAAO,MAAM,oBAAoB,IAAI,MAAM;CAC/C;;;;CAKA,MAAM,OACF,OACA,SACqB;EACrB,MAAM,iBAAiB,MAAM,+BAA+B,KAAK;EACjE,MAAM,MAAM,MAAM,KAAKA,QAAQ,gBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,QAAQ,MAAM,IAAI,MAAM,iCAAiC;EAClE,OAAO,MAAM,oBAAoB,IAAI,MAAM;CAC/C;;;;CAKA,MAAM,OACF,OACA,SACqB;EACrB,MAAM,iBAAiB,MAAM,+BAA+B,KAAK;EACjE,MAAM,MAAM,MAAM,KAAKA,QAAQ,gBAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,IAAI,QAAQ,MAAM,IAAI,MAAM,iCAAiC;EAClE,OAAO,MAAM,oBAAoB,IAAI,MAAM;CAC/C;;;;CAKA,MAAM,OAAO,UAAkB,SAAmD;EAC9E,MAAM,oBAAoB,MAAM,gBAAgB,QAAQ;EACxD,MAAM,KAAKA,QAAQ,gBACf,EAAE,UAAU,kBAAkB,GAC9B,qBAAqB,OAAO,CAChC;CACJ;;;;CAKA,MAAM,MACF,OACA,SACa;EACb,MAAM,iBAAiB,MAAM,8BAA8B,KAAK;EAChE,MAAM,KAAKA,QAAQ,gBACf,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;CACJ;AACJ"}
@@ -1,10 +1,10 @@
1
+ import { AuthApiTransports } from "../../../shared/transports.js";
1
2
  import { PolyesterMutationOptions, 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 { ApplySubaccountPolicyInputSchema, CreateSubaccountPolicyInputSchema, GetSubaccountPolicyInputSchema, ListSubaccountPoliciesInputSchema, SubaccountPolicy, UpdateSubaccountPolicyInputSchema } from "./subaccount-policies.schemas.js";
7
- import { Transport } from "@connectrpc/connect";
8
8
  import * as v from "valibot";
9
9
  //#region src/services/policies/subaccount-policies/subaccount-policies.d.ts
10
10
  interface SubscribePoliciesInput extends BaseSubscribeInput<SubaccountPolicy> {
@@ -15,7 +15,7 @@ interface SubscribePoliciesInput extends BaseSubscribeInput<SubaccountPolicy> {
15
15
  */
16
16
  declare class SubaccountPoliciesService {
17
17
  #private;
18
- constructor(transport: Transport, realtime: PolyesterRealtime, resolver?: SubaccountResolver);
18
+ constructor(transports: AuthApiTransports, realtime: PolyesterRealtime, resolver?: SubaccountResolver);
19
19
  /**
20
20
  * Returns subaccount policy templates visible to the caller, sorted by ascending policy ID.
21
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"subaccount-policies.d.ts","names":[],"sources":["../../../../src/services/policies/subaccount-policies/subaccount-policies.ts"],"mappings":";;;;;;;;;UAwBU,+BAA+B,mBAAmB;EACxD;;;;;cAMS;;EAKG,YAAA,WAAW,WAAW,UAAU,mBAAmB,WAAW;;;;EASpE,KACF,QAAO,EAAE,kBAAkB,oCAC3B,UAAU,0BACX,QAAQ;;;;EAaL,IACF,OAAO,EAAE,kBAAkB,iCAC3B,UAAU,0BACX,QAAQ;;;;EAcL,OACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OAAO,kBAAkB,UAAU,2BAA2B;;;;EAW9D,MACF,OAAO,EAAE,kBAAkB,mCAC3B,UAAU,2BACX;;;;EAWH,kBAAkB,OAAO"}
1
+ {"version":3,"file":"subaccount-policies.d.ts","names":[],"sources":["../../../../src/services/policies/subaccount-policies/subaccount-policies.ts"],"mappings":";;;;;;;;;UAyBU,+BAA+B,mBAAmB;EACxD;;;;;cAMS;;EAML,YAAA,YAAY,mBACZ,UAAU,mBACV,WAAW;;;;EAUT,KACF,QAAO,EAAE,kBAAkB,oCAC3B,UAAU,0BACX,QAAQ;;;;EAaL,IACF,OAAO,EAAE,kBAAkB,iCAC3B,UAAU,0BACX,QAAQ;;;;EAcL,OACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAaL,OAAO,kBAAkB,UAAU,2BAA2B;;;;EAW9D,MACF,OAAO,EAAE,kBAAkB,mCAC3B,UAAU,2BACX;;;;EAWH,kBAAkB,OAAO"}
@@ -14,8 +14,8 @@ var SubaccountPoliciesService = class {
14
14
  #client;
15
15
  #realtime;
16
16
  #resolver;
17
- constructor(transport, realtime, resolver) {
18
- this.#client = createClient(PolicyService, transport);
17
+ constructor(transports, realtime, resolver) {
18
+ this.#client = createClient(PolicyService, transports.authApi);
19
19
  this.#realtime = realtime;
20
20
  this.#resolver = resolver;
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subaccount-policies.js","names":["#client","Proto.PolicyService","#realtime","#resolver","Proto.SubaccountPolicyViewSchema"],"sources":["../../../../src/services/policies/subaccount-policies/subaccount-policies.ts"],"sourcesContent":["import * as Proto from \"../../../gen/auth/v1/policies_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 {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../../shared/request-options.js\";\nimport type { BaseSubscribeInput } from \"../../../shared/types.js\";\nimport type { PolyesterRealtime } from \"../../../realtime/index.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../../subaccount-resolver.js\";\nimport {\n SubaccountPolicySchema,\n CreateSubaccountPolicyInputSchema,\n UpdateSubaccountPolicyInputSchema,\n PolicyIdSchema,\n ApplySubaccountPolicyInputSchema,\n type SubaccountPolicy,\n ListSubaccountPoliciesInputSchema,\n GetSubaccountPolicyInputSchema,\n} from \"./subaccount-policies.schemas.js\";\n\ninterface SubscribePoliciesInput extends BaseSubscribeInput<SubaccountPolicy> {\n accountId: string;\n}\n\n/**\n * Manages reusable subaccount policy templates, assignments, and realtime policy updates.\n */\nexport class SubaccountPoliciesService {\n #client: Client<typeof Proto.PolicyService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, resolver?: SubaccountResolver) {\n this.#client = createClient(Proto.PolicyService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n }\n\n /**\n * Returns subaccount policy templates visible to the caller, sorted by ascending policy ID.\n */\n async list(\n input: v.InferInput<typeof ListSubaccountPoliciesInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountPolicy[]> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(ListSubaccountPoliciesInputSchema, resolved);\n const result = await this.#client.listSubaccountPolicies(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountPolicySchema), result.policies);\n }\n\n /**\n * Fetches one subaccount policy template by base58 policy ID and returns null when no policy is returned.\n */\n async get(\n input: v.InferInput<typeof GetSubaccountPolicyInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountPolicy | null> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(GetSubaccountPolicyInputSchema, resolved);\n const result = await this.#client.getSubaccountPolicy(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n if (!result.policy) return null;\n return parse(SubaccountPolicySchema, result.policy);\n }\n\n /**\n * Creates a subaccount policy template, optionally attaching it to a target subaccount in the same request.\n */\n async create(\n input: v.InferInput<typeof CreateSubaccountPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountPolicy> {\n const validatedInput = parse(CreateSubaccountPolicyInputSchema, input);\n const result = await this.#client.createSubaccountPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!result.policy) throw new Error(\"Failed to create subaccount policy\");\n return parse(SubaccountPolicySchema, result.policy);\n }\n\n /**\n * Updates selected subaccount policy fields using optimistic concurrency.\n */\n async update(\n input: v.InferInput<typeof UpdateSubaccountPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountPolicy> {\n const validatedInput = parse(UpdateSubaccountPolicyInputSchema, input);\n const result = await this.#client.updateSubaccountPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!result.policy) throw new Error(\"Failed to update subaccount policy\");\n return parse(SubaccountPolicySchema, result.policy);\n }\n\n /**\n * Deletes a subaccount policy template when it is not in use.\n */\n async delete(policyId: string, options?: PolyesterMutationOptions): Promise<void> {\n const validatedPolicyId = parse(PolicyIdSchema, policyId);\n await this.#client.deleteSubaccountPolicy(\n { policyId: validatedPolicyId },\n toConnectCallOptions(options),\n );\n }\n\n /**\n * Attaches a policy to a subaccount. Passing a null policyId clears the explicit binding and restores the system read-only policy.\n */\n async apply(\n input: v.InferInput<typeof ApplySubaccountPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const validatedInput = parse(ApplySubaccountPolicyInputSchema, input);\n await this.#client.setSubaccountPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n }\n\n /**\n * Subscribes to private subaccount policy updates for an account and emits normalized policy views.\n */\n subscribePolicies(input: SubscribePoliciesInput) {\n const channel = `private:auth:subaccount-policies:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.SubaccountPolicyViewSchema,\n onPublication: (data) => {\n const policy = parse(SubaccountPolicySchema, data);\n input.onEvent(policy);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;AA+BA,IAAa,4BAAb,MAAuC;CACnC;CACA;CACA;CAEA,YAAY,WAAsB,UAA6B,UAA+B;EAC1F,KAAKA,UAAU,aAAaC,eAAqB,SAAS;EAC1D,KAAKC,YAAY;EACjB,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,KACF,QAAgE,CAAC,GACjE,SAC2B;EAC3B,MAAM,WAAW,0BAA0B,OAAO,KAAKA,SAAS;EAChE,MAAM,UAAU,MAAM,mCAAmC,QAAQ;EACjE,MAAM,SAAS,MAAM,KAAKH,QAAQ,uBAC9B,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,EAAE,MAAM,sBAAsB,GAAG,OAAO,QAAQ;CACjE;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,WAAW,0BAA0B,OAAO,KAAKG,SAAS;EAChE,MAAM,UAAU,MAAM,gCAAgC,QAAQ;EAC9D,MAAM,SAAS,MAAM,KAAKH,QAAQ,oBAC9B,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,OAAO,QAAQ,OAAO;EAC3B,OAAO,MAAM,wBAAwB,OAAO,MAAM;CACtD;;;;CAKA,MAAM,OACF,OACA,SACyB;EACzB,MAAM,iBAAiB,MAAM,mCAAmC,KAAK;EACrE,MAAM,SAAS,MAAM,KAAKA,QAAQ,uBAC9B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,OAAO,QAAQ,MAAM,IAAI,MAAM,oCAAoC;EACxE,OAAO,MAAM,wBAAwB,OAAO,MAAM;CACtD;;;;CAKA,MAAM,OACF,OACA,SACyB;EACzB,MAAM,iBAAiB,MAAM,mCAAmC,KAAK;EACrE,MAAM,SAAS,MAAM,KAAKA,QAAQ,uBAC9B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,OAAO,QAAQ,MAAM,IAAI,MAAM,oCAAoC;EACxE,OAAO,MAAM,wBAAwB,OAAO,MAAM;CACtD;;;;CAKA,MAAM,OAAO,UAAkB,SAAmD;EAC9E,MAAM,oBAAoB,MAAM,gBAAgB,QAAQ;EACxD,MAAM,KAAKA,QAAQ,uBACf,EAAE,UAAU,kBAAkB,GAC9B,qBAAqB,OAAO,CAChC;CACJ;;;;CAKA,MAAM,MACF,OACA,SACa;EACb,MAAM,iBAAiB,MAAM,kCAAkC,KAAK;EACpE,MAAM,KAAKA,QAAQ,oBACf,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;CACJ;;;;CAKA,kBAAkB,OAA+B;EAC7C,MAAM,UAAU,oCAAoC,MAAM,UAAU;EAEpE,OAAO,KAAKE,UAAU,oBAAoB;GACtC;GACA,QAAQE;GACR,gBAAgB,SAAS;IACrB,MAAM,SAAS,MAAM,wBAAwB,IAAI;IACjD,MAAM,QAAQ,MAAM;GACxB;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
1
+ {"version":3,"file":"subaccount-policies.js","names":["#client","Proto.PolicyService","#realtime","#resolver","Proto.SubaccountPolicyViewSchema"],"sources":["../../../../src/services/policies/subaccount-policies/subaccount-policies.ts"],"sourcesContent":["import * as Proto from \"../../../gen/auth/v1/policies_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 {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../../shared/request-options.js\";\nimport type { BaseSubscribeInput } from \"../../../shared/types.js\";\nimport type { PolyesterRealtime } from \"../../../realtime/index.js\";\nimport type { AuthApiTransports } from \"../../../shared/transports.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../../subaccount-resolver.js\";\nimport {\n SubaccountPolicySchema,\n CreateSubaccountPolicyInputSchema,\n UpdateSubaccountPolicyInputSchema,\n PolicyIdSchema,\n ApplySubaccountPolicyInputSchema,\n type SubaccountPolicy,\n ListSubaccountPoliciesInputSchema,\n GetSubaccountPolicyInputSchema,\n} from \"./subaccount-policies.schemas.js\";\n\ninterface SubscribePoliciesInput extends BaseSubscribeInput<SubaccountPolicy> {\n accountId: string;\n}\n\n/**\n * Manages reusable subaccount policy templates, assignments, and realtime policy updates.\n */\nexport class SubaccountPoliciesService {\n #client: Client<typeof Proto.PolicyService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver?: SubaccountResolver,\n ) {\n this.#client = createClient(Proto.PolicyService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n }\n\n /**\n * Returns subaccount policy templates visible to the caller, sorted by ascending policy ID.\n */\n async list(\n input: v.InferInput<typeof ListSubaccountPoliciesInputSchema> = {},\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountPolicy[]> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(ListSubaccountPoliciesInputSchema, resolved);\n const result = await this.#client.listSubaccountPolicies(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountPolicySchema), result.policies);\n }\n\n /**\n * Fetches one subaccount policy template by base58 policy ID and returns null when no policy is returned.\n */\n async get(\n input: v.InferInput<typeof GetSubaccountPolicyInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountPolicy | null> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const request = parse(GetSubaccountPolicyInputSchema, resolved);\n const result = await this.#client.getSubaccountPolicy(\n removeUndefined(request),\n toConnectCallOptions(options),\n );\n if (!result.policy) return null;\n return parse(SubaccountPolicySchema, result.policy);\n }\n\n /**\n * Creates a subaccount policy template, optionally attaching it to a target subaccount in the same request.\n */\n async create(\n input: v.InferInput<typeof CreateSubaccountPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountPolicy> {\n const validatedInput = parse(CreateSubaccountPolicyInputSchema, input);\n const result = await this.#client.createSubaccountPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!result.policy) throw new Error(\"Failed to create subaccount policy\");\n return parse(SubaccountPolicySchema, result.policy);\n }\n\n /**\n * Updates selected subaccount policy fields using optimistic concurrency.\n */\n async update(\n input: v.InferInput<typeof UpdateSubaccountPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountPolicy> {\n const validatedInput = parse(UpdateSubaccountPolicyInputSchema, input);\n const result = await this.#client.updateSubaccountPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n if (!result.policy) throw new Error(\"Failed to update subaccount policy\");\n return parse(SubaccountPolicySchema, result.policy);\n }\n\n /**\n * Deletes a subaccount policy template when it is not in use.\n */\n async delete(policyId: string, options?: PolyesterMutationOptions): Promise<void> {\n const validatedPolicyId = parse(PolicyIdSchema, policyId);\n await this.#client.deleteSubaccountPolicy(\n { policyId: validatedPolicyId },\n toConnectCallOptions(options),\n );\n }\n\n /**\n * Attaches a policy to a subaccount. Passing a null policyId clears the explicit binding and restores the system read-only policy.\n */\n async apply(\n input: v.InferInput<typeof ApplySubaccountPolicyInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<void> {\n const validatedInput = parse(ApplySubaccountPolicyInputSchema, input);\n await this.#client.setSubaccountPolicy(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n }\n\n /**\n * Subscribes to private subaccount policy updates for an account and emits normalized policy views.\n */\n subscribePolicies(input: SubscribePoliciesInput) {\n const channel = `private:auth:subaccount-policies:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.SubaccountPolicyViewSchema,\n onPublication: (data) => {\n const policy = parse(SubaccountPolicySchema, data);\n input.onEvent(policy);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;AAgCA,IAAa,4BAAb,MAAuC;CACnC;CACA;CACA;CAEA,YACI,YACA,UACA,UACF;EACE,KAAKA,UAAU,aAAaC,eAAqB,WAAW,OAAO;EACnE,KAAKC,YAAY;EACjB,KAAKC,YAAY;CACrB;;;;CAKA,MAAM,KACF,QAAgE,CAAC,GACjE,SAC2B;EAC3B,MAAM,WAAW,0BAA0B,OAAO,KAAKA,SAAS;EAChE,MAAM,UAAU,MAAM,mCAAmC,QAAQ;EACjE,MAAM,SAAS,MAAM,KAAKH,QAAQ,uBAC9B,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,EAAE,MAAM,sBAAsB,GAAG,OAAO,QAAQ;CACjE;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,WAAW,0BAA0B,OAAO,KAAKG,SAAS;EAChE,MAAM,UAAU,MAAM,gCAAgC,QAAQ;EAC9D,MAAM,SAAS,MAAM,KAAKH,QAAQ,oBAC9B,gBAAgB,OAAO,GACvB,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,OAAO,QAAQ,OAAO;EAC3B,OAAO,MAAM,wBAAwB,OAAO,MAAM;CACtD;;;;CAKA,MAAM,OACF,OACA,SACyB;EACzB,MAAM,iBAAiB,MAAM,mCAAmC,KAAK;EACrE,MAAM,SAAS,MAAM,KAAKA,QAAQ,uBAC9B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,OAAO,QAAQ,MAAM,IAAI,MAAM,oCAAoC;EACxE,OAAO,MAAM,wBAAwB,OAAO,MAAM;CACtD;;;;CAKA,MAAM,OACF,OACA,SACyB;EACzB,MAAM,iBAAiB,MAAM,mCAAmC,KAAK;EACrE,MAAM,SAAS,MAAM,KAAKA,QAAQ,uBAC9B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,IAAI,CAAC,OAAO,QAAQ,MAAM,IAAI,MAAM,oCAAoC;EACxE,OAAO,MAAM,wBAAwB,OAAO,MAAM;CACtD;;;;CAKA,MAAM,OAAO,UAAkB,SAAmD;EAC9E,MAAM,oBAAoB,MAAM,gBAAgB,QAAQ;EACxD,MAAM,KAAKA,QAAQ,uBACf,EAAE,UAAU,kBAAkB,GAC9B,qBAAqB,OAAO,CAChC;CACJ;;;;CAKA,MAAM,MACF,OACA,SACa;EACb,MAAM,iBAAiB,MAAM,kCAAkC,KAAK;EACpE,MAAM,KAAKA,QAAQ,oBACf,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;CACJ;;;;CAKA,kBAAkB,OAA+B;EAC7C,MAAM,UAAU,oCAAoC,MAAM,UAAU;EAEpE,OAAO,KAAKE,UAAU,oBAAoB;GACtC;GACA,QAAQE;GACR,gBAAgB,SAAS;IACrB,MAAM,SAAS,MAAM,wBAAwB,IAAI;IACjD,MAAM,QAAQ,MAAM;GACxB;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
@@ -1,4 +1,4 @@
1
- import { Transports } from "../../shared/transports.js";
1
+ import { AuthAndPublicApiTransports } from "../../shared/transports.js";
2
2
  import { PolyesterRequestOptions } from "../../shared/request-options.js";
3
3
  import { AccountScopedInput } from "../../shared/account-scope.js";
4
4
  import { SubaccountResolver } from "../subaccount-resolver.js";
@@ -9,7 +9,7 @@ import { RateLimitConfig, TradingRateLimits } from "./rate-limits.schemas.js";
9
9
  */
10
10
  declare class RateLimitService {
11
11
  #private;
12
- constructor(transports: Transports, resolver?: SubaccountResolver);
12
+ constructor(transports: AuthAndPublicApiTransports, resolver?: SubaccountResolver);
13
13
  /**
14
14
  * Returns the complete active placement and cancellation quota catalog for VIP0+.
15
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limits.d.ts","names":[],"sources":["../../../src/services/rate-limits/rate-limits.ts"],"mappings":";;;;;;;;;cAsBa;;EAKG,YAAA,YAAY,YAAY,WAAW;;;;EASzC,UAAU,UAAU,0BAA0B,QAAQ;;;;EAQtD,iBACF,QAAO,oBACP,UAAU,0BACX,QAAQ"}
1
+ {"version":3,"file":"rate-limits.d.ts","names":[],"sources":["../../../src/services/rate-limits/rate-limits.ts"],"mappings":";;;;;;;;;cAsBa;;EAKG,YAAA,YAAY,4BAA4B,WAAW;;;;EASzD,UAAU,UAAU,0BAA0B,QAAQ;;;;EAQtD,iBACF,QAAO,oBACP,UAAU,0BACX,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limits.js","names":["#publicClient","Proto.RateLimitService","#authClient","#resolver"],"sources":["../../../src/services/rate-limits/rate-limits.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/ratelimit/v1/ratelimit_pb.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { Transports } from \"../../shared/transports.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport {\n GetTradingRateLimitsInputSchema,\n RateLimitConfigSchema,\n TradingRateLimitsSchema,\n type RateLimitConfig,\n type TradingRateLimits,\n} from \"./rate-limits.schemas.js\";\n\n/**\n * Reads public trading quota catalogs and authenticated effective trading limits.\n */\nexport class RateLimitService {\n #publicClient: Client<typeof Proto.RateLimitService>;\n #authClient: Client<typeof Proto.RateLimitService>;\n #resolver?: SubaccountResolver;\n\n constructor(transports: Transports, resolver?: SubaccountResolver) {\n this.#publicClient = createClient(Proto.RateLimitService, transports.publicApi);\n this.#authClient = createClient(Proto.RateLimitService, transports.authApi);\n this.#resolver = resolver;\n }\n\n /**\n * Returns the complete active placement and cancellation quota catalog for VIP0+.\n */\n async getConfig(options?: PolyesterRequestOptions): Promise<RateLimitConfig> {\n const res = await this.#publicClient.getRateLimitConfig({}, toConnectCallOptions(options));\n return parse(RateLimitConfigSchema, res);\n }\n\n /**\n * Returns the effective placement and cancellation limits for the resolved account target, including API-key-scoped rules when the caller authenticated with an API key.\n */\n async getTradingLimits(\n input: AccountScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<TradingRateLimits> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const res = await this.#authClient.getTradingRateLimits(\n removeUndefined(parse(GetTradingRateLimitsInputSchema, resolvedInput)),\n toConnectCallOptions(options),\n );\n return parse(TradingRateLimitsSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;;;AAsBA,IAAa,mBAAb,MAA8B;CAC1B;CACA;CACA;CAEA,YAAY,YAAwB,UAA+B;EAC/D,KAAKA,gBAAgB,aAAaC,oBAAwB,WAAW,SAAS;EAC9E,KAAKC,cAAc,aAAaD,oBAAwB,WAAW,OAAO;EAC1E,KAAKE,YAAY;CACrB;;;;CAKA,MAAM,UAAU,SAA6D;EACzE,MAAM,MAAM,MAAM,KAAKH,cAAc,mBAAmB,CAAC,GAAG,qBAAqB,OAAO,CAAC;EACzF,OAAO,MAAM,uBAAuB,GAAG;CAC3C;;;;CAKA,MAAM,iBACF,QAA4B,CAAC,GAC7B,SAC0B;EAC1B,MAAM,gBAAgB,0BAA0B,OAAO,KAAKG,SAAS;EACrE,MAAM,MAAM,MAAM,KAAKD,YAAY,qBAC/B,gBAAgB,MAAM,iCAAiC,aAAa,CAAC,GACrE,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,yBAAyB,GAAG;CAC7C;AACJ"}
1
+ {"version":3,"file":"rate-limits.js","names":["#publicClient","Proto.RateLimitService","#authClient","#resolver"],"sources":["../../../src/services/rate-limits/rate-limits.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/ratelimit/v1/ratelimit_pb.js\";\nimport type { AccountScopedInput } from \"../../shared/account-scope.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { AuthAndPublicApiTransports } from \"../../shared/transports.js\";\nimport { parse } from \"../../shared/validation.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport {\n GetTradingRateLimitsInputSchema,\n RateLimitConfigSchema,\n TradingRateLimitsSchema,\n type RateLimitConfig,\n type TradingRateLimits,\n} from \"./rate-limits.schemas.js\";\n\n/**\n * Reads public trading quota catalogs and authenticated effective trading limits.\n */\nexport class RateLimitService {\n #publicClient: Client<typeof Proto.RateLimitService>;\n #authClient: Client<typeof Proto.RateLimitService>;\n #resolver?: SubaccountResolver;\n\n constructor(transports: AuthAndPublicApiTransports, resolver?: SubaccountResolver) {\n this.#publicClient = createClient(Proto.RateLimitService, transports.publicApi);\n this.#authClient = createClient(Proto.RateLimitService, transports.authApi);\n this.#resolver = resolver;\n }\n\n /**\n * Returns the complete active placement and cancellation quota catalog for VIP0+.\n */\n async getConfig(options?: PolyesterRequestOptions): Promise<RateLimitConfig> {\n const res = await this.#publicClient.getRateLimitConfig({}, toConnectCallOptions(options));\n return parse(RateLimitConfigSchema, res);\n }\n\n /**\n * Returns the effective placement and cancellation limits for the resolved account target, including API-key-scoped rules when the caller authenticated with an API key.\n */\n async getTradingLimits(\n input: AccountScopedInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<TradingRateLimits> {\n const resolvedInput = resolveAccountScopedInput(input, this.#resolver);\n const res = await this.#authClient.getTradingRateLimits(\n removeUndefined(parse(GetTradingRateLimitsInputSchema, resolvedInput)),\n toConnectCallOptions(options),\n );\n return parse(TradingRateLimitsSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;;;AAsBA,IAAa,mBAAb,MAA8B;CAC1B;CACA;CACA;CAEA,YAAY,YAAwC,UAA+B;EAC/E,KAAKA,gBAAgB,aAAaC,oBAAwB,WAAW,SAAS;EAC9E,KAAKC,cAAc,aAAaD,oBAAwB,WAAW,OAAO;EAC1E,KAAKE,YAAY;CACrB;;;;CAKA,MAAM,UAAU,SAA6D;EACzE,MAAM,MAAM,MAAM,KAAKH,cAAc,mBAAmB,CAAC,GAAG,qBAAqB,OAAO,CAAC;EACzF,OAAO,MAAM,uBAAuB,GAAG;CAC3C;;;;CAKA,MAAM,iBACF,QAA4B,CAAC,GAC7B,SAC0B;EAC1B,MAAM,gBAAgB,0BAA0B,OAAO,KAAKG,SAAS;EACrE,MAAM,MAAM,MAAM,KAAKD,YAAY,qBAC/B,gBAAgB,MAAM,iCAAiC,aAAa,CAAC,GACrE,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,yBAAyB,GAAG;CAC7C;AACJ"}
@@ -1,6 +1,6 @@
1
+ import { AuthApiTransports } from "../../shared/transports.js";
1
2
  import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
2
3
  import { GetVerificationResponse, SocialProviderInputSchema, StartVerificationInput, StartVerificationResponse, VerificationReadyResponse } from "./social-verification.schemas.js";
3
- import { Transport } from "@connectrpc/connect";
4
4
  import * as v from "valibot";
5
5
  //#region src/services/social-verification/social-verification.d.ts
6
6
  /**
@@ -8,7 +8,7 @@ import * as v from "valibot";
8
8
  */
9
9
  declare class SocialVerificationService {
10
10
  #private;
11
- constructor(transport: Transport);
11
+ constructor(transports: AuthApiTransports);
12
12
  /**
13
13
  * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"social-verification.d.ts","names":[],"sources":["../../../src/services/social-verification/social-verification.ts"],"mappings":";;;;;;;;cAwBa;;EAGG,YAAA,WAAW;;;;EAOjB,MACF,OAAO,wBACP,UAAU,2BACX,QAAQ;;;;EAYL,UACF,OAAO,EAAE,kBAAkB,4BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,IACF,OAAO,EAAE,kBAAkB,4BAC3B,UAAU,0BACX,QAAQ"}
1
+ {"version":3,"file":"social-verification.d.ts","names":[],"sources":["../../../src/services/social-verification/social-verification.ts"],"mappings":";;;;;;;;cAyBa;;EAGG,YAAA,YAAY;;;;EAOlB,MACF,OAAO,wBACP,UAAU,2BACX,QAAQ;;;;EAYL,UACF,OAAO,EAAE,kBAAkB,4BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,IACF,OAAO,EAAE,kBAAkB,4BAC3B,UAAU,0BACX,QAAQ"}
@@ -9,8 +9,8 @@ import { createClient } from "@connectrpc/connect";
9
9
  */
10
10
  var SocialVerificationService = class {
11
11
  #client;
12
- constructor(transport) {
13
- this.#client = createClient(SocialVerificationService$1, transport);
12
+ constructor(transports) {
13
+ this.#client = createClient(SocialVerificationService$1, transports.authApi);
14
14
  }
15
15
  /**
16
16
  * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.
@@ -1 +1 @@
1
- {"version":3,"file":"social-verification.js","names":["#client","Proto.SocialVerificationService"],"sources":["../../../src/services/social-verification/social-verification.ts"],"sourcesContent":["import { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/social_verification_pb.js\";\nimport type * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n StartVerificationInputSchema,\n StartVerificationResponseSchema,\n VerificationReadyResponseSchema,\n GetVerificationResponseSchema,\n SocialProviderInputSchema,\n type StartVerificationInput,\n type StartVerificationResponse,\n type VerificationReadyResponse,\n type GetVerificationResponse,\n} from \"./social-verification.schemas.js\";\n\n/**\n * Verifies ownership of external social accounts for the authenticated caller.\n */\nexport class SocialVerificationService {\n #client: Client<typeof Proto.SocialVerificationService>;\n\n constructor(transport: Transport) {\n this.#client = createClient(Proto.SocialVerificationService, transport);\n }\n\n /**\n * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.\n */\n async start(\n input: StartVerificationInput,\n options?: PolyesterMutationOptions,\n ): Promise<StartVerificationResponse> {\n const validated = parse(StartVerificationInputSchema, input);\n const res = await this.#client.startSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(StartVerificationResponseSchema, res);\n }\n\n /**\n * Queues a provider check after the caller has placed the challenge code according to the selected verification method.\n */\n async markReady(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<VerificationReadyResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.socialVerificationReady(\n validated,\n toConnectCallOptions(options),\n );\n return parse(VerificationReadyResponseSchema, res);\n }\n\n /**\n * Returns the caller's current verification state for a provider, including status, challenge metadata, attempts, last error, and verified timestamp.\n */\n async get(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<GetVerificationResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.getSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(GetVerificationResponseSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;AAwBA,IAAa,4BAAb,MAAuC;CACnC;CAEA,YAAY,WAAsB;EAC9B,KAAKA,UAAU,aAAaC,6BAAiC,SAAS;CAC1E;;;;CAKA,MAAM,MACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,8BAA8B,KAAK;EAC3D,MAAM,MAAM,MAAM,KAAKD,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,UACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,sBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,+BAA+B,GAAG;CACnD;AACJ"}
1
+ {"version":3,"file":"social-verification.js","names":["#client","Proto.SocialVerificationService"],"sources":["../../../src/services/social-verification/social-verification.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/social_verification_pb.js\";\nimport type * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n StartVerificationInputSchema,\n StartVerificationResponseSchema,\n VerificationReadyResponseSchema,\n GetVerificationResponseSchema,\n SocialProviderInputSchema,\n type StartVerificationInput,\n type StartVerificationResponse,\n type VerificationReadyResponse,\n type GetVerificationResponse,\n} from \"./social-verification.schemas.js\";\n\n/**\n * Verifies ownership of external social accounts for the authenticated caller.\n */\nexport class SocialVerificationService {\n #client: Client<typeof Proto.SocialVerificationService>;\n\n constructor(transports: AuthApiTransports) {\n this.#client = createClient(Proto.SocialVerificationService, transports.authApi);\n }\n\n /**\n * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.\n */\n async start(\n input: StartVerificationInput,\n options?: PolyesterMutationOptions,\n ): Promise<StartVerificationResponse> {\n const validated = parse(StartVerificationInputSchema, input);\n const res = await this.#client.startSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(StartVerificationResponseSchema, res);\n }\n\n /**\n * Queues a provider check after the caller has placed the challenge code according to the selected verification method.\n */\n async markReady(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<VerificationReadyResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.socialVerificationReady(\n validated,\n toConnectCallOptions(options),\n );\n return parse(VerificationReadyResponseSchema, res);\n }\n\n /**\n * Returns the caller's current verification state for a provider, including status, challenge metadata, attempts, last error, and verified timestamp.\n */\n async get(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<GetVerificationResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.getSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(GetVerificationResponseSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;AAyBA,IAAa,4BAAb,MAAuC;CACnC;CAEA,YAAY,YAA+B;EACvC,KAAKA,UAAU,aAAaC,6BAAiC,WAAW,OAAO;CACnF;;;;CAKA,MAAM,MACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,8BAA8B,KAAK;EAC3D,MAAM,MAAM,MAAM,KAAKD,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,UACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,sBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,+BAA+B,GAAG;CACnD;AACJ"}
@@ -1,3 +1,4 @@
1
+ import { AuthAndPublicApiTransports } from "../../shared/transports.js";
1
2
  import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
2
3
  import { SubaccountResolver } from "../subaccount-resolver.js";
3
4
  import { PolyesterRealtime } from "../../realtime/types.js";
@@ -9,7 +10,6 @@ import { SubaccountPolicy } from "../policies/subaccount-policies/subaccount-pol
9
10
  import { SubaccountPoliciesService } from "../policies/subaccount-policies/subaccount-policies.js";
10
11
  import "../policies/subaccount-policies/index.js";
11
12
  import { CreateSubaccountInputSchema, CreateSubaccountResult, DeleteSubaccountInputSchema, EffectiveSubaccountPermissions, InviteSubaccountMemberInputSchema, ListSubaccountInvitesInputSchema, RemoveSubaccountMemberInputSchema, RespondSubaccountInviteInputSchema, SetSubaccountMemberMfaRequirementInputSchema, Subaccount, SubaccountActivityInputSchema, SubaccountEvent, SubaccountIdInputSchema, SubaccountInvite, SubaccountMember, SubaccountMutationResult, SubaccountRoleCatalog, SubaccountSchema, UpdateSubaccountInputSchema, UpdateSubaccountMemberRoleInputSchema } from "./subaccounts.schemas.js";
12
- import { Transport } from "@connectrpc/connect";
13
13
  import * as v from "valibot";
14
14
  //#region src/services/subaccounts/subaccounts.d.ts
15
15
  interface SubscribeSubaccountsInput extends BaseSubscribeInput<Subaccount> {
@@ -19,12 +19,12 @@ interface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {
19
19
  accountId: string;
20
20
  }
21
21
  /**
22
- * Creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.
22
+ * Reads the public role catalog and creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.
23
23
  */
24
24
  declare class SubaccountsService {
25
25
  #private;
26
26
  readonly policies: SubaccountPoliciesService;
27
- constructor(transport: Transport, realtime: PolyesterRealtime, resolver?: SubaccountResolver);
27
+ constructor(transports: AuthAndPublicApiTransports, realtime: PolyesterRealtime, resolver?: SubaccountResolver);
28
28
  /**
29
29
  * Returns subaccounts owned by or shared with the caller plus totalCreated, including soft-deleted count metadata useful for deriving future smart-account salts.
30
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"subaccounts.d.ts","names":[],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"mappings":";;;;;;;;;;;;;;UAmDU,kCAAkC,mBAAmB;EAC3D;;UAGM,8BAA8B,mBAAmB;EACvD;;;;;cAMS;;WACA,UAAU;EAOP,YAAA,WAAW,WAAW,UAAU,mBAAmB,WAAW;;;;EAWpE,KAAK,UAAU,0BAA0B;IAC3C;IACA,aAAa,EAAE,mBAAmB;;;;;EAYhC,IACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QACC;IACI,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;;;;;EAmCX,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAaL,aACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,aACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,iBACF,OAAO,EAAE,kBAAkB,wCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,wBACF,OAAO,EAAE,kBAAkB,+CAC3B,UAAU,2BACX,QAAQ;;;;EAYL,YACF,OAAO,EAAE,kBAAkB,mCAC3B,UAAU,0BACX,QAAQ;;;;EAYL,UAAU,UAAU,0BAA0B,QAAQ;;;;EAQtD,wBACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAYL,YACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAYL,cACF,OAAO,EAAE,kBAAkB,qCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAkBL,WACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,0BACX;IAAU,QAAQ;IAAmB;;;;;EAexC,UAAU,OAAO;;;;EAmBjB,iBAAiB,OAAO"}
1
+ {"version":3,"file":"subaccounts.d.ts","names":[],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"mappings":";;;;;;;;;;;;;;UAoDU,kCAAkC,mBAAmB;EAC3D;;UAGM,8BAA8B,mBAAmB;EACvD;;;;;cAMS;;WACA,UAAU;EASf,YAAA,YAAY,4BACZ,UAAU,mBACV,WAAW;;;;EAaT,KAAK,UAAU,0BAA0B;IAC3C;IACA,aAAa,EAAE,mBAAmB;;;;;EAYhC,IACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QACC;IACI,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;;;;;EAmCX,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAaL,aACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,aACF,OAAO,EAAE,kBAAkB,oCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,iBACF,OAAO,EAAE,kBAAkB,wCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,wBACF,OAAO,EAAE,kBAAkB,+CAC3B,UAAU,2BACX,QAAQ;;;;EAYL,YACF,OAAO,EAAE,kBAAkB,mCAC3B,UAAU,0BACX,QAAQ;;;;EAYL,UAAU,UAAU,0BAA0B,QAAQ;;;;EAWtD,wBACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAYL,YACF,OAAO,EAAE,kBAAkB,0BAC3B,UAAU,0BACX,QAAQ;;;;EAYL,cACF,OAAO,EAAE,kBAAkB,qCAC3B,UAAU,2BACX,QAAQ;;;;EAYL,OACF,OAAO,EAAE,kBAAkB,8BAC3B,UAAU,2BACX,QAAQ;;;;EAkBL,WACF,OAAO,EAAE,kBAAkB,gCAC3B,UAAU,0BACX;IAAU,QAAQ;IAAmB;;;;;EAexC,UAAU,OAAO;;;;EAmBjB,iBAAiB,OAAO"}
@@ -11,19 +11,21 @@ import { createClient } from "@connectrpc/connect";
11
11
  import * as v from "valibot";
12
12
  //#region src/services/subaccounts/subaccounts.ts
13
13
  /**
14
- * Creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.
14
+ * Reads the public role catalog and creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.
15
15
  */
16
16
  var SubaccountsService = class {
17
17
  policies;
18
18
  #client;
19
19
  #viewClient;
20
- #roleClient;
20
+ #publicRoleClient;
21
+ #authRoleClient;
21
22
  #realtime;
22
- constructor(transport, realtime, resolver) {
23
- this.policies = new SubaccountPoliciesService(transport, realtime, resolver);
24
- this.#client = createClient(SubaccountService, transport);
25
- this.#viewClient = createClient(SubaccountViewService, transport);
26
- this.#roleClient = createClient(SubaccountRoleService, transport);
23
+ constructor(transports, realtime, resolver) {
24
+ this.policies = new SubaccountPoliciesService(transports, realtime, resolver);
25
+ this.#client = createClient(SubaccountService, transports.authApi);
26
+ this.#viewClient = createClient(SubaccountViewService, transports.authApi);
27
+ this.#publicRoleClient = createClient(SubaccountRoleService, transports.publicApi);
28
+ this.#authRoleClient = createClient(SubaccountRoleService, transports.authApi);
27
29
  this.#realtime = realtime;
28
30
  }
29
31
  /**
@@ -121,7 +123,7 @@ var SubaccountsService = class {
121
123
  * Returns the public built-in role and permission catalog with display metadata and per-role permission sets.
122
124
  */
123
125
  async listRoles(options) {
124
- const res = await this.#roleClient.listSubaccountRoles({}, toConnectCallOptions(options));
126
+ const res = await this.#publicRoleClient.listSubaccountRoles({}, toConnectCallOptions(options));
125
127
  return parse(SubaccountRoleCatalogSchema, res);
126
128
  }
127
129
  /**
@@ -129,7 +131,7 @@ var SubaccountsService = class {
129
131
  */
130
132
  async getEffectivePermissions(input, options) {
131
133
  const validatedInput = parse(SubaccountIdInputSchema, input);
132
- const res = await this.#roleClient.getEffectiveSubaccountPermissions(validatedInput, toConnectCallOptions(options));
134
+ const res = await this.#authRoleClient.getEffectiveSubaccountPermissions(validatedInput, toConnectCallOptions(options));
133
135
  return parse(EffectiveSubaccountPermissionsSchema, res);
134
136
  }
135
137
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"subaccounts.js","names":["#client","Proto.SubaccountService","#viewClient","Proto.SubaccountViewService","#roleClient","Proto.SubaccountRoleService","#realtime","SubaccountSchema","ApiKeySchema","Proto.SubaccountSchema","ProtoApiKeys.ApiKeySchema"],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport * as ProtoApiKeys from \"../../gen/auth/v1/api_keys_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type ApiKey, ApiKeySchema } from \"../api-keys/index.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\nimport {\n DEFAULT_SUBACCOUNT_POLICY,\n SubaccountPoliciesService,\n type SubaccountPolicy,\n SubaccountPolicySchema,\n} from \"../policies/subaccount-policies/index.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { SubaccountResolver } from \"../subaccount-resolver.js\";\nimport {\n CreateSubaccountInputSchema,\n CreateSubaccountResultSchema,\n UpdateSubaccountInputSchema,\n InviteSubaccountMemberInputSchema,\n RemoveSubaccountMemberInputSchema,\n UpdateSubaccountMemberRoleInputSchema,\n ListSubaccountInvitesInputSchema,\n RespondSubaccountInviteInputSchema,\n SubaccountActivityInputSchema,\n SubaccountSchema,\n SubaccountMemberSchema,\n SubaccountInviteSchema,\n SubaccountActivityEventSchema,\n SetSubaccountMemberMfaRequirementInputSchema,\n SubaccountIdInputSchema,\n DeleteSubaccountInputSchema,\n SubaccountMutationResultSchema,\n SubaccountRoleCatalogSchema,\n EffectiveSubaccountPermissionsSchema,\n type CreateSubaccountResult,\n type Subaccount,\n type SubaccountMember,\n type SubaccountInvite,\n type SubaccountEvent,\n type SubaccountMutationResult,\n type SubaccountRoleCatalog,\n type EffectiveSubaccountPermissions,\n} from \"./subaccounts.schemas.js\";\n\ninterface SubscribeSubaccountsInput extends BaseSubscribeInput<Subaccount> {\n accountId: string;\n}\n\ninterface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {\n accountId: string;\n}\n\n/**\n * Creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.\n */\nexport class SubaccountsService {\n readonly policies: SubaccountPoliciesService;\n\n #client: Client<typeof Proto.SubaccountService>;\n #viewClient: Client<typeof Proto.SubaccountViewService>;\n #roleClient: Client<typeof Proto.SubaccountRoleService>;\n #realtime: PolyesterRealtime;\n\n constructor(transport: Transport, realtime: PolyesterRealtime, resolver?: SubaccountResolver) {\n this.policies = new SubaccountPoliciesService(transport, realtime, resolver);\n this.#client = createClient(Proto.SubaccountService, transport);\n this.#viewClient = createClient(Proto.SubaccountViewService, transport);\n this.#roleClient = createClient(Proto.SubaccountRoleService, transport);\n this.#realtime = realtime;\n }\n\n /**\n * Returns subaccounts owned by or shared with the caller plus totalCreated, including soft-deleted count metadata useful for deriving future smart-account salts.\n */\n async list(options?: PolyesterRequestOptions): Promise<{\n totalCreated: number;\n subaccounts: v.InferOutput<typeof SubaccountSchema>[];\n }> {\n const res = await this.#client.listSubaccounts({}, toConnectCallOptions(options));\n return {\n totalCreated: res.totalCreated,\n subaccounts: parse(v.array(SubaccountSchema), res.subaccounts),\n };\n }\n\n /**\n * Fetches an aggregated subaccount dashboard view with subaccount details, policy, API keys, balances, members, and outgoing invites; throws if the subaccount is missing.\n */\n async get(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<\n Subaccount & {\n apiKeys: ApiKey[];\n policy: SubaccountPolicy;\n members: SubaccountMember[];\n invites: SubaccountInvite[];\n }\n > {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const subaccountId = formatId(validatedInput.subaccountId);\n const res = await this.#viewClient.getSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n includeApiKeys: true,\n includeBalances: true,\n includeMembers: true,\n includeInvites: true,\n includePolicy: true,\n invitesDirection: \"outgoing\",\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(`Subaccount not found: ${subaccountId}`);\n\n return {\n ...parse(SubaccountSchema, res.subaccount),\n policy: res.policy\n ? parse(SubaccountPolicySchema, res.policy)\n : DEFAULT_SUBACCOUNT_POLICY,\n apiKeys: parse(v.optional(v.array(ApiKeySchema), []), res.apiKeys),\n members: parse(v.optional(v.array(SubaccountMemberSchema), []), res.members),\n invites: v\n .parse(v.optional(v.array(SubaccountInviteSchema), []), res.invites)\n .filter((invite) => invite.subaccountId === subaccountId),\n };\n }\n\n /**\n * Creates a new subaccount under the caller's root account using a smart-account address, nonce, and signature proof.\n */\n async create(\n input: v.InferInput<typeof CreateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CreateSubaccountResult> {\n const validatedInput = parse(CreateSubaccountInputSchema, input);\n const res = await this.#client.createSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(CreateSubaccountResultSchema, res);\n }\n\n /**\n * Updates mutable subaccount display/status fields such as label and active/disabled/deleted status.\n */\n async update(\n input: v.InferInput<typeof UpdateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(UpdateSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to update subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Creates or refreshes a pending invitation granting a role on a subaccount to another root account.\n */\n async inviteMember(\n input: v.InferInput<typeof InviteSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(InviteSubaccountMemberInputSchema, input);\n const res = await this.#client.inviteSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Removes delegated access for a subaccount member by grantee account ID.\n */\n async removeMember(\n input: v.InferInput<typeof RemoveSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(RemoveSubaccountMemberInputSchema, input);\n const res = await this.#client.removeSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Changes an existing delegated member's role without sending a new invitation.\n */\n async updateMemberRole(\n input: v.InferInput<typeof UpdateSubaccountMemberRoleInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(UpdateSubaccountMemberRoleInputSchema, input);\n const res = await this.#client.updateSubaccountMemberRole(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Enables or disables the owner-controlled MFA requirement for delegated interactive member actions on a subaccount.\n */\n async setMemberMfaRequirement(\n input: v.InferInput<typeof SetSubaccountMemberMfaRequirementInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(SetSubaccountMemberMfaRequirementInputSchema, input);\n const res = await this.#client.setSubaccountMemberMFARequirement(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Returns incoming, outgoing, or all subaccount invitations for the caller, newest first.\n */\n async listInvites(\n input: v.InferInput<typeof ListSubaccountInvitesInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountInvite[]> {\n const validatedInput = parse(ListSubaccountInvitesInputSchema, input);\n const res = await this.#client.listSubaccountInvites(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountInviteSchema), res.invites);\n }\n\n /**\n * Returns the public built-in role and permission catalog with display metadata and per-role permission sets.\n */\n async listRoles(options?: PolyesterRequestOptions): Promise<SubaccountRoleCatalog> {\n const res = await this.#roleClient.listSubaccountRoles({}, toConnectCallOptions(options));\n return parse(SubaccountRoleCatalogSchema, res);\n }\n\n /**\n * Returns the caller's current role, effective role-granted permissions, and attached policy ID for a subaccount.\n */\n async getEffectivePermissions(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<EffectiveSubaccountPermissions> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#roleClient.getEffectiveSubaccountPermissions(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(EffectiveSubaccountPermissionsSchema, res);\n }\n\n /**\n * Returns the owner and delegated members for a subaccount, including role and MFA enrollment status.\n */\n async listMembers(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountMember[]> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#client.listSubaccountMembers(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountMemberSchema), res.members);\n }\n\n /**\n * Accepts or rejects an incoming invite, or cancels an outgoing invite, returning the updated invitation.\n */\n async respondInvite(\n input: v.InferInput<typeof RespondSubaccountInviteInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(RespondSubaccountInviteInputSchema, input);\n const res = await this.#client.respondSubaccountInvite(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Soft-deletes a subaccount by updating its status to deleted.\n */\n async delete(\n input: v.InferInput<typeof DeleteSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(DeleteSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n subaccount: { status: \"deleted\" },\n updateMask: { paths: [\"status\"] },\n expectedRevision: validatedInput.expectedRevision,\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to delete subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Returns paginated audit/activity events for a subaccount, newest first, with a non-negative integer limit from 0 through 200 and opaque cursor pagination.\n */\n async listEvents(\n input: v.InferInput<typeof SubaccountActivityInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<{ events: SubaccountEvent[]; nextPageToken: string }> {\n const validatedInput = parse(SubaccountActivityInputSchema, input);\n const res = await this.#viewClient.listSubaccountActivity(\n validatedInput,\n toConnectCallOptions(options),\n );\n return {\n events: parse(v.optional(v.array(SubaccountActivityEventSchema), []), res.events),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private subaccount updates for an account and emits normalized subaccount records.\n */\n subscribe(input: SubscribeSubaccountsInput) {\n const channel = `private:auth:subaccounts:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.SubaccountSchema,\n onPublication: (data) => {\n const subaccount = parse(SubaccountSchema, data);\n input.onEvent(subaccount);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n /**\n * Subscribes to private API key updates for an account through the subaccount realtime channel helper.\n */\n subscribeApiKeys(input: SubscribeApiKeysInput) {\n const channel = `private:auth:api-keys:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoApiKeys.ApiKeySchema,\n onPublication: (data) => {\n const apiKey = parse(ApiKeySchema, data);\n input.onEvent(apiKey);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"subaccounts.js","names":["#client","Proto.SubaccountService","#viewClient","Proto.SubaccountViewService","#publicRoleClient","Proto.SubaccountRoleService","#authRoleClient","#realtime","SubaccountSchema","ApiKeySchema","Proto.SubaccountSchema","ProtoApiKeys.ApiKeySchema"],"sources":["../../../src/services/subaccounts/subaccounts.ts"],"sourcesContent":["import * as Proto from \"../../gen/auth/v1/subaccounts_pb.js\";\nimport * as ProtoApiKeys from \"../../gen/auth/v1/api_keys_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type ApiKey, ApiKeySchema } from \"../api-keys/index.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\nimport {\n DEFAULT_SUBACCOUNT_POLICY,\n SubaccountPoliciesService,\n type SubaccountPolicy,\n SubaccountPolicySchema,\n} from \"../policies/subaccount-policies/index.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { AuthAndPublicApiTransports } from \"../../shared/transports.js\";\nimport type { SubaccountResolver } from \"../subaccount-resolver.js\";\nimport {\n CreateSubaccountInputSchema,\n CreateSubaccountResultSchema,\n UpdateSubaccountInputSchema,\n InviteSubaccountMemberInputSchema,\n RemoveSubaccountMemberInputSchema,\n UpdateSubaccountMemberRoleInputSchema,\n ListSubaccountInvitesInputSchema,\n RespondSubaccountInviteInputSchema,\n SubaccountActivityInputSchema,\n SubaccountSchema,\n SubaccountMemberSchema,\n SubaccountInviteSchema,\n SubaccountActivityEventSchema,\n SetSubaccountMemberMfaRequirementInputSchema,\n SubaccountIdInputSchema,\n DeleteSubaccountInputSchema,\n SubaccountMutationResultSchema,\n SubaccountRoleCatalogSchema,\n EffectiveSubaccountPermissionsSchema,\n type CreateSubaccountResult,\n type Subaccount,\n type SubaccountMember,\n type SubaccountInvite,\n type SubaccountEvent,\n type SubaccountMutationResult,\n type SubaccountRoleCatalog,\n type EffectiveSubaccountPermissions,\n} from \"./subaccounts.schemas.js\";\n\ninterface SubscribeSubaccountsInput extends BaseSubscribeInput<Subaccount> {\n accountId: string;\n}\n\ninterface SubscribeApiKeysInput extends BaseSubscribeInput<ApiKey> {\n accountId: string;\n}\n\n/**\n * Reads the public role catalog and creates, manages, shares, audits, and subscribes to subaccounts visible to the authenticated caller.\n */\nexport class SubaccountsService {\n readonly policies: SubaccountPoliciesService;\n\n #client: Client<typeof Proto.SubaccountService>;\n #viewClient: Client<typeof Proto.SubaccountViewService>;\n #publicRoleClient: Client<typeof Proto.SubaccountRoleService>;\n #authRoleClient: Client<typeof Proto.SubaccountRoleService>;\n #realtime: PolyesterRealtime;\n\n constructor(\n transports: AuthAndPublicApiTransports,\n realtime: PolyesterRealtime,\n resolver?: SubaccountResolver,\n ) {\n this.policies = new SubaccountPoliciesService(transports, realtime, resolver);\n this.#client = createClient(Proto.SubaccountService, transports.authApi);\n this.#viewClient = createClient(Proto.SubaccountViewService, transports.authApi);\n this.#publicRoleClient = createClient(Proto.SubaccountRoleService, transports.publicApi);\n this.#authRoleClient = createClient(Proto.SubaccountRoleService, transports.authApi);\n this.#realtime = realtime;\n }\n\n /**\n * Returns subaccounts owned by or shared with the caller plus totalCreated, including soft-deleted count metadata useful for deriving future smart-account salts.\n */\n async list(options?: PolyesterRequestOptions): Promise<{\n totalCreated: number;\n subaccounts: v.InferOutput<typeof SubaccountSchema>[];\n }> {\n const res = await this.#client.listSubaccounts({}, toConnectCallOptions(options));\n return {\n totalCreated: res.totalCreated,\n subaccounts: parse(v.array(SubaccountSchema), res.subaccounts),\n };\n }\n\n /**\n * Fetches an aggregated subaccount dashboard view with subaccount details, policy, API keys, balances, members, and outgoing invites; throws if the subaccount is missing.\n */\n async get(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<\n Subaccount & {\n apiKeys: ApiKey[];\n policy: SubaccountPolicy;\n members: SubaccountMember[];\n invites: SubaccountInvite[];\n }\n > {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const subaccountId = formatId(validatedInput.subaccountId);\n const res = await this.#viewClient.getSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n includeApiKeys: true,\n includeBalances: true,\n includeMembers: true,\n includeInvites: true,\n includePolicy: true,\n invitesDirection: \"outgoing\",\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(`Subaccount not found: ${subaccountId}`);\n\n return {\n ...parse(SubaccountSchema, res.subaccount),\n policy: res.policy\n ? parse(SubaccountPolicySchema, res.policy)\n : DEFAULT_SUBACCOUNT_POLICY,\n apiKeys: parse(v.optional(v.array(ApiKeySchema), []), res.apiKeys),\n members: parse(v.optional(v.array(SubaccountMemberSchema), []), res.members),\n invites: v\n .parse(v.optional(v.array(SubaccountInviteSchema), []), res.invites)\n .filter((invite) => invite.subaccountId === subaccountId),\n };\n }\n\n /**\n * Creates a new subaccount under the caller's root account using a smart-account address, nonce, and signature proof.\n */\n async create(\n input: v.InferInput<typeof CreateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<CreateSubaccountResult> {\n const validatedInput = parse(CreateSubaccountInputSchema, input);\n const res = await this.#client.createSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(CreateSubaccountResultSchema, res);\n }\n\n /**\n * Updates mutable subaccount display/status fields such as label and active/disabled/deleted status.\n */\n async update(\n input: v.InferInput<typeof UpdateSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(UpdateSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n validatedInput,\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to update subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Creates or refreshes a pending invitation granting a role on a subaccount to another root account.\n */\n async inviteMember(\n input: v.InferInput<typeof InviteSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(InviteSubaccountMemberInputSchema, input);\n const res = await this.#client.inviteSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Removes delegated access for a subaccount member by grantee account ID.\n */\n async removeMember(\n input: v.InferInput<typeof RemoveSubaccountMemberInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(RemoveSubaccountMemberInputSchema, input);\n const res = await this.#client.removeSubaccountMember(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Changes an existing delegated member's role without sending a new invitation.\n */\n async updateMemberRole(\n input: v.InferInput<typeof UpdateSubaccountMemberRoleInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(UpdateSubaccountMemberRoleInputSchema, input);\n const res = await this.#client.updateSubaccountMemberRole(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Enables or disables the owner-controlled MFA requirement for delegated interactive member actions on a subaccount.\n */\n async setMemberMfaRequirement(\n input: v.InferInput<typeof SetSubaccountMemberMfaRequirementInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountMutationResult> {\n const validatedInput = parse(SetSubaccountMemberMfaRequirementInputSchema, input);\n const res = await this.#client.setSubaccountMemberMFARequirement(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountMutationResultSchema, res);\n }\n\n /**\n * Returns incoming, outgoing, or all subaccount invitations for the caller, newest first.\n */\n async listInvites(\n input: v.InferInput<typeof ListSubaccountInvitesInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountInvite[]> {\n const validatedInput = parse(ListSubaccountInvitesInputSchema, input);\n const res = await this.#client.listSubaccountInvites(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountInviteSchema), res.invites);\n }\n\n /**\n * Returns the public built-in role and permission catalog with display metadata and per-role permission sets.\n */\n async listRoles(options?: PolyesterRequestOptions): Promise<SubaccountRoleCatalog> {\n const res = await this.#publicRoleClient.listSubaccountRoles(\n {},\n toConnectCallOptions(options),\n );\n return parse(SubaccountRoleCatalogSchema, res);\n }\n\n /**\n * Returns the caller's current role, effective role-granted permissions, and attached policy ID for a subaccount.\n */\n async getEffectivePermissions(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<EffectiveSubaccountPermissions> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#authRoleClient.getEffectiveSubaccountPermissions(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(EffectiveSubaccountPermissionsSchema, res);\n }\n\n /**\n * Returns the owner and delegated members for a subaccount, including role and MFA enrollment status.\n */\n async listMembers(\n input: v.InferInput<typeof SubaccountIdInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<SubaccountMember[]> {\n const validatedInput = parse(SubaccountIdInputSchema, input);\n const res = await this.#client.listSubaccountMembers(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(v.array(SubaccountMemberSchema), res.members);\n }\n\n /**\n * Accepts or rejects an incoming invite, or cancels an outgoing invite, returning the updated invitation.\n */\n async respondInvite(\n input: v.InferInput<typeof RespondSubaccountInviteInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<SubaccountInvite> {\n const validatedInput = parse(RespondSubaccountInviteInputSchema, input);\n const res = await this.#client.respondSubaccountInvite(\n validatedInput,\n toConnectCallOptions(options),\n );\n return parse(SubaccountInviteSchema, res.invite);\n }\n\n /**\n * Soft-deletes a subaccount by updating its status to deleted.\n */\n async delete(\n input: v.InferInput<typeof DeleteSubaccountInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<Subaccount> {\n const validatedInput = parse(DeleteSubaccountInputSchema, input);\n const res = await this.#client.updateSubaccount(\n {\n subaccountId: validatedInput.subaccountId,\n subaccount: { status: \"deleted\" },\n updateMask: { paths: [\"status\"] },\n expectedRevision: validatedInput.expectedRevision,\n },\n toConnectCallOptions(options),\n );\n if (!res.subaccount) throw new Error(\"Failed to delete subaccount\");\n return parse(SubaccountSchema, res.subaccount);\n }\n\n /**\n * Returns paginated audit/activity events for a subaccount, newest first, with a non-negative integer limit from 0 through 200 and opaque cursor pagination.\n */\n async listEvents(\n input: v.InferInput<typeof SubaccountActivityInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<{ events: SubaccountEvent[]; nextPageToken: string }> {\n const validatedInput = parse(SubaccountActivityInputSchema, input);\n const res = await this.#viewClient.listSubaccountActivity(\n validatedInput,\n toConnectCallOptions(options),\n );\n return {\n events: parse(v.optional(v.array(SubaccountActivityEventSchema), []), res.events),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private subaccount updates for an account and emits normalized subaccount records.\n */\n subscribe(input: SubscribeSubaccountsInput) {\n const channel = `private:auth:subaccounts:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.SubaccountSchema,\n onPublication: (data) => {\n const subaccount = parse(SubaccountSchema, data);\n input.onEvent(subaccount);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n /**\n * Subscribes to private API key updates for an account through the subaccount realtime channel helper.\n */\n subscribeApiKeys(input: SubscribeApiKeysInput) {\n const channel = `private:auth:api-keys:${input.accountId}:proto`;\n\n return this.#realtime.connectProtoChannel({\n channel,\n schema: ProtoApiKeys.ApiKeySchema,\n onPublication: (data) => {\n const apiKey = parse(ApiKeySchema, data);\n input.onEvent(apiKey);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}