@polyester/sdk 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/_virtual/_rolldown/runtime.js +1 -15
  3. package/dist/catalogs/snapshot-validation.js +63 -63
  4. package/dist/catalogs/snapshot-validation.js.map +1 -1
  5. package/dist/services/accounts/accounts.js +1 -1
  6. package/dist/services/accounts/accounts.js.map +1 -1
  7. package/dist/services/accounts/accounts.schemas.d.ts +13 -13
  8. package/dist/services/accounts/accounts.schemas.d.ts.map +1 -1
  9. package/dist/services/accounts/accounts.schemas.js +11 -11
  10. package/dist/services/accounts/accounts.schemas.js.map +1 -1
  11. package/dist/services/address-book/address-book.js.map +1 -1
  12. package/dist/services/address-book/address-book.schemas.d.ts +751 -751
  13. package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
  14. package/dist/services/address-book/address-book.schemas.js +160 -159
  15. package/dist/services/address-book/address-book.schemas.js.map +1 -1
  16. package/dist/services/api-keys/api-keys.d.ts +6 -6
  17. package/dist/services/api-keys/api-keys.d.ts.map +1 -1
  18. package/dist/services/api-keys/api-keys.js.map +1 -1
  19. package/dist/services/api-keys/api-keys.schemas.d.ts +62 -62
  20. package/dist/services/api-keys/api-keys.schemas.d.ts.map +1 -1
  21. package/dist/services/api-keys/api-keys.schemas.js +34 -34
  22. package/dist/services/api-keys/api-keys.schemas.js.map +1 -1
  23. package/dist/services/auth/auth.d.ts +39 -39
  24. package/dist/services/auth/auth.d.ts.map +1 -1
  25. package/dist/services/auth/auth.js +19 -18
  26. package/dist/services/auth/auth.js.map +1 -1
  27. package/dist/services/auth/profile/profile.d.ts +2 -2
  28. package/dist/services/auth/profile/profile.d.ts.map +1 -1
  29. package/dist/services/auth/profile/profile.js +3 -2
  30. package/dist/services/auth/profile/profile.js.map +1 -1
  31. package/dist/services/auth/profile/profile.schemas.d.ts +41 -41
  32. package/dist/services/auth/profile/profile.schemas.d.ts.map +1 -1
  33. package/dist/services/auth/profile/profile.schemas.js +27 -27
  34. package/dist/services/auth/profile/profile.schemas.js.map +1 -1
  35. package/dist/services/auth/session.schemas.js +17 -17
  36. package/dist/services/auth/session.schemas.js.map +1 -1
  37. package/dist/services/balances/balances.d.ts.map +1 -1
  38. package/dist/services/balances/balances.js +3 -2
  39. package/dist/services/balances/balances.js.map +1 -1
  40. package/dist/services/balances/balances.schemas.d.ts +95 -95
  41. package/dist/services/balances/balances.schemas.d.ts.map +1 -1
  42. package/dist/services/balances/balances.schemas.js +61 -61
  43. package/dist/services/balances/balances.schemas.js.map +1 -1
  44. package/dist/services/candles/candles.d.ts.map +1 -1
  45. package/dist/services/candles/candles.js +5 -4
  46. package/dist/services/candles/candles.js.map +1 -1
  47. package/dist/services/candles/candles.schemas.d.ts +64 -64
  48. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  49. package/dist/services/candles/candles.schemas.js +47 -47
  50. package/dist/services/candles/candles.schemas.js.map +1 -1
  51. package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
  52. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts +68 -68
  53. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -1
  54. package/dist/services/chain-analytics/chain-analytics.schemas.js +29 -29
  55. package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -1
  56. package/dist/services/deposit/deposit.js.map +1 -1
  57. package/dist/services/deposit/deposit.schemas.d.ts +17 -17
  58. package/dist/services/deposit/deposit.schemas.d.ts.map +1 -1
  59. package/dist/services/deposit/deposit.schemas.js +11 -11
  60. package/dist/services/deposit/deposit.schemas.js.map +1 -1
  61. package/dist/services/guard-signer/guard-signer.js.map +1 -1
  62. package/dist/services/guard-signer/guard-signer.schemas.d.ts +75 -75
  63. package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -1
  64. package/dist/services/guard-signer/guard-signer.schemas.js +42 -42
  65. package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -1
  66. package/dist/services/heatmap/heatmap.d.ts.map +1 -1
  67. package/dist/services/heatmap/heatmap.js +5 -4
  68. package/dist/services/heatmap/heatmap.js.map +1 -1
  69. package/dist/services/heatmap/heatmap.schemas.d.ts +138 -138
  70. package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -1
  71. package/dist/services/heatmap/heatmap.schemas.js +47 -47
  72. package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
  73. package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
  74. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +53 -53
  75. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -1
  76. package/dist/services/internal-transfers/internal-transfers.schemas.js +27 -27
  77. package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
  78. package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
  79. package/dist/services/lifecycle/lifecycle.js +3 -2
  80. package/dist/services/lifecycle/lifecycle.js.map +1 -1
  81. package/dist/services/lifecycle/lifecycle.schemas.d.ts +614 -614
  82. package/dist/services/lifecycle/lifecycle.schemas.d.ts.map +1 -1
  83. package/dist/services/lifecycle/lifecycle.schemas.js +146 -146
  84. package/dist/services/lifecycle/lifecycle.schemas.js.map +1 -1
  85. package/dist/services/market-data/market-data.d.ts.map +1 -1
  86. package/dist/services/market-data/market-data.js +4 -3
  87. package/dist/services/market-data/market-data.js.map +1 -1
  88. package/dist/services/market-data/market-data.schemas.d.ts +19 -19
  89. package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
  90. package/dist/services/market-data/market-data.schemas.js +50 -50
  91. package/dist/services/market-data/market-data.schemas.js.map +1 -1
  92. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  93. package/dist/services/market-overview/market-overview.js +3 -2
  94. package/dist/services/market-overview/market-overview.js.map +1 -1
  95. package/dist/services/market-overview/market-overview.schemas.d.ts +37 -37
  96. package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
  97. package/dist/services/market-overview/market-overview.schemas.js +33 -33
  98. package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
  99. package/dist/services/mfa/mfa.js +1 -1
  100. package/dist/services/mfa/mfa.js.map +1 -1
  101. package/dist/services/mfa/mfa.schemas.d.ts +206 -206
  102. package/dist/services/mfa/mfa.schemas.d.ts.map +1 -1
  103. package/dist/services/mfa/mfa.schemas.js +83 -83
  104. package/dist/services/mfa/mfa.schemas.js.map +1 -1
  105. package/dist/services/orderbook/orderbook.d.ts +2 -2
  106. package/dist/services/orderbook/orderbook.d.ts.map +1 -1
  107. package/dist/services/orderbook/orderbook.js +3 -2
  108. package/dist/services/orderbook/orderbook.js.map +1 -1
  109. package/dist/services/orderbook/orderbook.schemas.d.ts +23 -23
  110. package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -1
  111. package/dist/services/orderbook/orderbook.schemas.js +15 -15
  112. package/dist/services/orderbook/orderbook.schemas.js.map +1 -1
  113. package/dist/services/orders/order-errors.schemas.d.ts +18 -18
  114. package/dist/services/orders/order-errors.schemas.d.ts.map +1 -1
  115. package/dist/services/orders/order-errors.schemas.js +8 -8
  116. package/dist/services/orders/order-errors.schemas.js.map +1 -1
  117. package/dist/services/orders/orders-batch.schemas.d.ts +504 -504
  118. package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
  119. package/dist/services/orders/orders-batch.schemas.js +117 -117
  120. package/dist/services/orders/orders-batch.schemas.js.map +1 -1
  121. package/dist/services/orders/orders-identifiers.schemas.js +5 -5
  122. package/dist/services/orders/orders-identifiers.schemas.js.map +1 -1
  123. package/dist/services/orders/orders-input.schemas.d.ts +648 -648
  124. package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
  125. package/dist/services/orders/orders-input.schemas.js +95 -95
  126. package/dist/services/orders/orders-input.schemas.js.map +1 -1
  127. package/dist/services/orders/orders-modify.schemas.d.ts +351 -351
  128. package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
  129. package/dist/services/orders/orders-modify.schemas.js +44 -44
  130. package/dist/services/orders/orders-modify.schemas.js.map +1 -1
  131. package/dist/services/orders/orders-output.schemas.d.ts +183 -183
  132. package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
  133. package/dist/services/orders/orders-output.schemas.js +49 -49
  134. package/dist/services/orders/orders-output.schemas.js.map +1 -1
  135. package/dist/services/orders/orders-risk.schemas.d.ts +226 -226
  136. package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
  137. package/dist/services/orders/orders-risk.schemas.js +69 -69
  138. package/dist/services/orders/orders-risk.schemas.js.map +1 -1
  139. package/dist/services/orders/orders.d.ts +6 -6
  140. package/dist/services/orders/orders.d.ts.map +1 -1
  141. package/dist/services/orders/orders.js +4 -3
  142. package/dist/services/orders/orders.js.map +1 -1
  143. package/dist/services/policies/api-key-policies/api-key-policies.d.ts +6 -6
  144. package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
  145. package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
  146. package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +105 -105
  147. package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts.map +1 -1
  148. package/dist/services/policies/api-key-policies/api-key-policies.schemas.js +49 -49
  149. package/dist/services/policies/api-key-policies/api-key-policies.schemas.js.map +1 -1
  150. package/dist/services/policies/shared.d.ts +5 -5
  151. package/dist/services/policies/shared.d.ts.map +1 -1
  152. package/dist/services/policies/shared.js +10 -10
  153. package/dist/services/policies/shared.js.map +1 -1
  154. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +6 -6
  155. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
  156. package/dist/services/policies/subaccount-policies/subaccount-policies.js +3 -2
  157. package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
  158. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +124 -124
  159. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -1
  160. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +75 -75
  161. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -1
  162. package/dist/services/shared.js +11 -11
  163. package/dist/services/shared.js.map +1 -1
  164. package/dist/services/social-verification/social-verification.d.ts +3 -3
  165. package/dist/services/social-verification/social-verification.d.ts.map +1 -1
  166. package/dist/services/social-verification/social-verification.js.map +1 -1
  167. package/dist/services/social-verification/social-verification.schemas.d.ts +54 -54
  168. package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
  169. package/dist/services/social-verification/social-verification.schemas.js +28 -28
  170. package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
  171. package/dist/services/subaccounts/subaccounts.d.ts +14 -14
  172. package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
  173. package/dist/services/subaccounts/subaccounts.js +9 -8
  174. package/dist/services/subaccounts/subaccounts.js.map +1 -1
  175. package/dist/services/subaccounts/subaccounts.schemas.d.ts +135 -135
  176. package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
  177. package/dist/services/subaccounts/subaccounts.schemas.js +72 -72
  178. package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
  179. package/dist/services/trades/trades.d.ts +2 -2
  180. package/dist/services/trades/trades.d.ts.map +1 -1
  181. package/dist/services/trades/trades.js +3 -2
  182. package/dist/services/trades/trades.js.map +1 -1
  183. package/dist/services/trades/trades.schemas.d.ts +31 -31
  184. package/dist/services/trades/trades.schemas.d.ts.map +1 -1
  185. package/dist/services/trades/trades.schemas.js +24 -24
  186. package/dist/services/trades/trades.schemas.js.map +1 -1
  187. package/dist/services/trading-withdraws/trading-withdraws.js +1 -1
  188. package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
  189. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +45 -45
  190. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
  191. package/dist/services/trading-withdraws/trading-withdraws.schemas.js +36 -36
  192. package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
  193. package/dist/services/transfers/transfers.d.ts.map +1 -1
  194. package/dist/services/transfers/transfers.js +3 -2
  195. package/dist/services/transfers/transfers.js.map +1 -1
  196. package/dist/services/transfers/transfers.schemas.d.ts +42 -42
  197. package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
  198. package/dist/services/transfers/transfers.schemas.js +30 -30
  199. package/dist/services/transfers/transfers.schemas.js.map +1 -1
  200. package/dist/services/triggers/trigger-child-order.schemas.js +23 -23
  201. package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -1
  202. package/dist/services/triggers/trigger-input.schemas.d.ts +226 -226
  203. package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
  204. package/dist/services/triggers/trigger-input.schemas.js +53 -53
  205. package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
  206. package/dist/services/triggers/triggers-output.schemas.d.ts +209 -209
  207. package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
  208. package/dist/services/triggers/triggers-output.schemas.js +152 -152
  209. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  210. package/dist/services/triggers/triggers.d.ts.map +1 -1
  211. package/dist/services/triggers/triggers.js +4 -3
  212. package/dist/services/triggers/triggers.js.map +1 -1
  213. package/dist/services/whiteboard/whiteboard.js.map +1 -1
  214. package/dist/services/whiteboard/whiteboard.schemas.d.ts +379 -379
  215. package/dist/services/whiteboard/whiteboard.schemas.d.ts.map +1 -1
  216. package/dist/services/whiteboard/whiteboard.schemas.js +71 -71
  217. package/dist/services/whiteboard/whiteboard.schemas.js.map +1 -1
  218. package/dist/services/zipper/zipper.js.map +1 -1
  219. package/dist/services/zipper/zipper.schemas.d.ts +1 -1
  220. package/dist/services/zipper/zipper.schemas.js +54 -54
  221. package/dist/services/zipper/zipper.schemas.js.map +1 -1
  222. package/dist/shared/account-scope.d.ts +6 -6
  223. package/dist/shared/account-scope.d.ts.map +1 -1
  224. package/dist/shared/account-scope.js +3 -3
  225. package/dist/shared/account-scope.js.map +1 -1
  226. package/dist/shared/connect-error-mapping.js +2 -2
  227. package/dist/shared/connect-error-mapping.js.map +1 -1
  228. package/dist/shared/rate-limit.schemas.d.ts +12 -12
  229. package/dist/shared/rate-limit.schemas.d.ts.map +1 -1
  230. package/dist/shared/rate-limit.schemas.js +7 -7
  231. package/dist/shared/rate-limit.schemas.js.map +1 -1
  232. package/dist/shared/schemas.js +26 -26
  233. package/dist/shared/schemas.js.map +1 -1
  234. package/dist/shared/validation.js +1 -6
  235. package/dist/shared/validation.js.map +1 -1
  236. package/dist/utils/connect-order-errors.js +2 -2
  237. package/dist/utils/connect-order-errors.js.map +1 -1
  238. package/package.json +3 -3
  239. package/dist/shared/validation.d.ts +0 -14
  240. package/dist/shared/validation.d.ts.map +0 -1
@@ -1,4 +1,3 @@
1
- import { validation_exports } from "../../../shared/validation.js";
2
1
  import { idToBigInt } from "../../../utils/base58-id.js";
3
2
  import { bpsToPct, toBigIntOrZero, toBpsOrZero, toIntOrZero } from "../../../utils/numbers.js";
4
3
  import { tsObjToMs, tsObjToNsString } from "../../../utils/time.js";
@@ -8,49 +7,50 @@ import { PolicyActionCodec, PolicyMarketScopeCodec, policyActionLabelFor, policy
8
7
  import { buildProtoPatch, defineProtoPatchFields } from "../../../utils/proto-patch.js";
9
8
  import { toTimestamp } from "../../../utils/timestamp.js";
10
9
  import { AccountScopeInputEntries, accountScopeToSubaccountId } from "../../../shared/account-scope.js";
10
+ import * as v from "valibot";
11
11
  //#region src/services/policies/subaccount-policies/subaccount-policies.schemas.ts
12
- const ListSubaccountPoliciesInputSchema = validation_exports.pipe(validation_exports.strictObject(AccountScopeInputEntries), validation_exports.transform(({ account }) => ({ subaccountId: accountScopeToSubaccountId(account) })));
13
- const GetSubaccountPolicyInputSchema = validation_exports.pipe(validation_exports.strictObject({
14
- policyId: validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1)),
12
+ const ListSubaccountPoliciesInputSchema = v.pipe(v.strictObject(AccountScopeInputEntries), v.transform(({ account }) => ({ subaccountId: accountScopeToSubaccountId(account) })));
13
+ const GetSubaccountPolicyInputSchema = v.pipe(v.strictObject({
14
+ policyId: v.pipe(v.string(), v.trim(), v.minLength(1)),
15
15
  ...AccountScopeInputEntries
16
- }), validation_exports.transform(({ policyId, account }) => ({
16
+ }), v.transform(({ policyId, account }) => ({
17
17
  policyId: idToBigInt(policyId, "policyId"),
18
18
  subaccountId: accountScopeToSubaccountId(account)
19
19
  })));
20
20
  /**
21
21
  * From the backend format to a usable frontend/UI format, so big ints to numbers, etc.
22
22
  */
23
- const SubaccountPolicySchema = validation_exports.pipe(validation_exports.object({
23
+ const SubaccountPolicySchema = v.pipe(v.object({
24
24
  id: PublicIdSchema,
25
- name: validation_exports.string(),
26
- description: validation_exports.string(),
27
- spotMarkets: validation_exports.optional(validation_exports.array(SpotMarketRuleSchema), []),
28
- spotMarketScope: validation_exports.pipe(ProtoPolicyMarketScopeEnumSchema, validation_exports.transform((v) => policyMarketScopeLabelFor(v))),
29
- perpMarketScope: validation_exports.pipe(ProtoPolicyMarketScopeEnumSchema, validation_exports.transform((v) => policyMarketScopeLabelFor(v))),
30
- perpMarkets: validation_exports.optional(validation_exports.array(PerpMarketRuleSchema), []),
31
- actions: validation_exports.pipe(validation_exports.optional(validation_exports.array(ProtoPolicyActionEnumSchema), []), validation_exports.transform((v) => v.map((action) => policyActionLabelFor(action)))),
32
- isTemplate: validation_exports.optional(validation_exports.boolean(), false),
25
+ name: v.string(),
26
+ description: v.string(),
27
+ spotMarkets: v.optional(v.array(SpotMarketRuleSchema), []),
28
+ spotMarketScope: v.pipe(ProtoPolicyMarketScopeEnumSchema, v.transform((v) => policyMarketScopeLabelFor(v))),
29
+ perpMarketScope: v.pipe(ProtoPolicyMarketScopeEnumSchema, v.transform((v) => policyMarketScopeLabelFor(v))),
30
+ perpMarkets: v.optional(v.array(PerpMarketRuleSchema), []),
31
+ actions: v.pipe(v.optional(v.array(ProtoPolicyActionEnumSchema), []), v.transform((v) => v.map((action) => policyActionLabelFor(action)))),
32
+ isTemplate: v.optional(v.boolean(), false),
33
33
  sourceTemplateId: OptionalPublicIdSchema,
34
- globalNotionalCap: validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((v) => Number(v))),
35
- maxOrderNotional: validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((v) => Number(v))),
36
- maxOpenOrders: validation_exports.number(),
37
- maxOpenPositions: validation_exports.number(),
38
- globalPerpLeverageX: validation_exports.number(),
39
- dailyInternalTransferOutLimit: validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((v) => Number(v))),
40
- dailyWithdrawLimit: validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((v) => Number(v))),
41
- internalTransfersOwnOnly: validation_exports.boolean(),
42
- enforceWithdrawWhitelist: validation_exports.boolean(),
43
- tradingHalted: validation_exports.boolean(),
44
- liquidationOnly: validation_exports.boolean(),
45
- dailyLossLimit: validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((v) => Number(v))),
46
- intradayDrawdownLimitBps: validation_exports.pipe(validation_exports.number(), validation_exports.transform((v) => bpsToPct(v))),
47
- locked: validation_exports.boolean(),
34
+ globalNotionalCap: v.pipe(v.bigint(), v.transform((v) => Number(v))),
35
+ maxOrderNotional: v.pipe(v.bigint(), v.transform((v) => Number(v))),
36
+ maxOpenOrders: v.number(),
37
+ maxOpenPositions: v.number(),
38
+ globalPerpLeverageX: v.number(),
39
+ dailyInternalTransferOutLimit: v.pipe(v.bigint(), v.transform((v) => Number(v))),
40
+ dailyWithdrawLimit: v.pipe(v.bigint(), v.transform((v) => Number(v))),
41
+ internalTransfersOwnOnly: v.boolean(),
42
+ enforceWithdrawWhitelist: v.boolean(),
43
+ tradingHalted: v.boolean(),
44
+ liquidationOnly: v.boolean(),
45
+ dailyLossLimit: v.pipe(v.bigint(), v.transform((v) => Number(v))),
46
+ intradayDrawdownLimitBps: v.pipe(v.number(), v.transform((v) => bpsToPct(v))),
47
+ locked: v.boolean(),
48
48
  reviewAt: OptionalTimestampMsSchema,
49
49
  expiresAt: OptionalTimestampMsSchema,
50
50
  createdAt: TimestampMsSchema,
51
51
  updatedAt: TimestampSchema,
52
52
  revision: BigIntStringSchema
53
- }), validation_exports.transform(({ maxOrderNotional, globalNotionalCap, intradayDrawdownLimitBps, updatedAt, ...rest }) => ({
53
+ }), v.transform(({ maxOrderNotional, globalNotionalCap, intradayDrawdownLimitBps, updatedAt, ...rest }) => ({
54
54
  maxOrderSize: maxOrderNotional,
55
55
  globalExposureCap: globalNotionalCap,
56
56
  intradayDrawdownLimitPct: intradayDrawdownLimitBps,
@@ -58,14 +58,14 @@ const SubaccountPolicySchema = validation_exports.pipe(validation_exports.object
58
58
  updatedAt: tsObjToMs(updatedAt),
59
59
  updatedAtNs: tsObjToNsString(updatedAt)
60
60
  })));
61
- const SubaccountPolicyInputBaseSchema = validation_exports.strictObject({
62
- name: validation_exports.string(),
63
- description: validation_exports.optional(validation_exports.string(), ""),
64
- spotMarkets: validation_exports.optional(validation_exports.array(SpotMarketRuleSchema), []),
65
- perpMarkets: validation_exports.optional(validation_exports.array(PerpMarketRuleSchema), []),
66
- spotMarketScope: validation_exports.pipe(PolicyMarketScopeEnumSchema, validation_exports.transform((v) => PolicyMarketScopeCodec.inputToProto[v])),
67
- perpMarketScope: validation_exports.pipe(PolicyMarketScopeEnumSchema, validation_exports.transform((v) => PolicyMarketScopeCodec.inputToProto[v])),
68
- actions: validation_exports.pipe(validation_exports.optional(validation_exports.array(PolicyActionEnumSchema), ["read-balances", "read-spot"]), validation_exports.transform((v) => (v ?? []).map((action) => PolicyActionCodec.inputToProto[action]))),
61
+ const SubaccountPolicyInputBaseSchema = v.strictObject({
62
+ name: v.string(),
63
+ description: v.optional(v.string(), ""),
64
+ spotMarkets: v.optional(v.array(SpotMarketRuleSchema), []),
65
+ perpMarkets: v.optional(v.array(PerpMarketRuleSchema), []),
66
+ spotMarketScope: v.pipe(PolicyMarketScopeEnumSchema, v.transform((v) => PolicyMarketScopeCodec.inputToProto[v])),
67
+ perpMarketScope: v.pipe(PolicyMarketScopeEnumSchema, v.transform((v) => PolicyMarketScopeCodec.inputToProto[v])),
68
+ actions: v.pipe(v.optional(v.array(PolicyActionEnumSchema), ["read-balances", "read-spot"]), v.transform((v) => (v ?? []).map((action) => PolicyActionCodec.inputToProto[action]))),
69
69
  globalLeverageCap: OptionalNumberToIntOrZeroSchema,
70
70
  globalExposureCap: OptionalNumberToBigIntOrZeroSchema,
71
71
  maxOrderSize: OptionalNumberToBigIntOrZeroSchema,
@@ -75,13 +75,13 @@ const SubaccountPolicyInputBaseSchema = validation_exports.strictObject({
75
75
  dailyWithdrawLimit: OptionalNumberToBigIntOrZeroSchema,
76
76
  dailyLossLimit: OptionalNumberToBigIntOrZeroSchema,
77
77
  intradayDrawdownLimitPct: OptionalNumberToBpsOrZeroSchema,
78
- tradingHalted: validation_exports.optional(validation_exports.boolean(), false),
79
- liquidationOnly: validation_exports.optional(validation_exports.boolean(), false),
80
- policyLocked: validation_exports.optional(validation_exports.boolean(), false),
81
- internalTransfersOwnOnly: validation_exports.optional(validation_exports.boolean(), true),
82
- enforceWithdrawWhitelist: validation_exports.optional(validation_exports.boolean(), false),
83
- reviewAt: validation_exports.optional(validation_exports.nullable(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0)))),
84
- expiresAt: validation_exports.optional(validation_exports.nullable(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0)))),
78
+ tradingHalted: v.optional(v.boolean(), false),
79
+ liquidationOnly: v.optional(v.boolean(), false),
80
+ policyLocked: v.optional(v.boolean(), false),
81
+ internalTransfersOwnOnly: v.optional(v.boolean(), true),
82
+ enforceWithdrawWhitelist: v.optional(v.boolean(), false),
83
+ reviewAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),
84
+ expiresAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),
85
85
  subaccountId: optionalSubaccountIdInputSchema()
86
86
  });
87
87
  function timestampFromMs(value) {
@@ -105,34 +105,34 @@ function createSubaccountPolicyBaseTransform(input) {
105
105
  expiresAt: timestampFromMs(expiresAt)
106
106
  };
107
107
  }
108
- const CreateSubaccountPolicyInputSchema = validation_exports.pipe(SubaccountPolicyInputBaseSchema, validation_exports.check(({ actions }) => actions.includes(PolicyActionCodec.inputToProto["read-balances"]) && actions.includes(PolicyActionCodec.inputToProto["read-spot"]), "Subaccount policy actions must include read-balances and read-spot"), validation_exports.transform((input) => ({
108
+ const CreateSubaccountPolicyInputSchema = v.pipe(SubaccountPolicyInputBaseSchema, v.check(({ actions }) => actions.includes(PolicyActionCodec.inputToProto["read-balances"]) && actions.includes(PolicyActionCodec.inputToProto["read-spot"]), "Subaccount policy actions must include read-balances and read-spot"), v.transform((input) => ({
109
109
  policy: createSubaccountPolicyBaseTransform(input),
110
110
  subaccountId: input.subaccountId
111
111
  })));
112
- const SubaccountPolicyPatchSchema = validation_exports.strictObject({
113
- name: validation_exports.optional(validation_exports.string()),
114
- description: validation_exports.optional(validation_exports.string()),
115
- spotMarkets: validation_exports.optional(validation_exports.array(SpotMarketRuleSchema)),
116
- perpMarkets: validation_exports.optional(validation_exports.array(PerpMarketRuleSchema)),
117
- spotMarketScope: validation_exports.optional(PolicyMarketScopeEnumSchema),
118
- perpMarketScope: validation_exports.optional(PolicyMarketScopeEnumSchema),
119
- actions: validation_exports.optional(validation_exports.array(PolicyActionEnumSchema)),
120
- globalLeverageCap: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
121
- globalExposureCap: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
122
- maxOrderSize: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
123
- maxOpenOrders: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
124
- maxOpenPositions: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
125
- dailyInternalTransferLimit: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
126
- dailyWithdrawLimit: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
127
- dailyLossLimit: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
128
- intradayDrawdownLimitPct: validation_exports.optional(validation_exports.nullable(validation_exports.number())),
129
- tradingHalted: validation_exports.optional(validation_exports.boolean()),
130
- liquidationOnly: validation_exports.optional(validation_exports.boolean()),
131
- policyLocked: validation_exports.optional(validation_exports.boolean()),
132
- internalTransfersOwnOnly: validation_exports.optional(validation_exports.boolean()),
133
- enforceWithdrawWhitelist: validation_exports.optional(validation_exports.boolean()),
134
- reviewAt: validation_exports.optional(validation_exports.nullable(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0)))),
135
- expiresAt: validation_exports.optional(validation_exports.nullable(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0))))
112
+ const SubaccountPolicyPatchSchema = v.strictObject({
113
+ name: v.optional(v.string()),
114
+ description: v.optional(v.string()),
115
+ spotMarkets: v.optional(v.array(SpotMarketRuleSchema)),
116
+ perpMarkets: v.optional(v.array(PerpMarketRuleSchema)),
117
+ spotMarketScope: v.optional(PolicyMarketScopeEnumSchema),
118
+ perpMarketScope: v.optional(PolicyMarketScopeEnumSchema),
119
+ actions: v.optional(v.array(PolicyActionEnumSchema)),
120
+ globalLeverageCap: v.optional(v.nullable(v.number())),
121
+ globalExposureCap: v.optional(v.nullable(v.number())),
122
+ maxOrderSize: v.optional(v.nullable(v.number())),
123
+ maxOpenOrders: v.optional(v.nullable(v.number())),
124
+ maxOpenPositions: v.optional(v.nullable(v.number())),
125
+ dailyInternalTransferLimit: v.optional(v.nullable(v.number())),
126
+ dailyWithdrawLimit: v.optional(v.nullable(v.number())),
127
+ dailyLossLimit: v.optional(v.nullable(v.number())),
128
+ intradayDrawdownLimitPct: v.optional(v.nullable(v.number())),
129
+ tradingHalted: v.optional(v.boolean()),
130
+ liquidationOnly: v.optional(v.boolean()),
131
+ policyLocked: v.optional(v.boolean()),
132
+ internalTransfersOwnOnly: v.optional(v.boolean()),
133
+ enforceWithdrawWhitelist: v.optional(v.boolean()),
134
+ reviewAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),
135
+ expiresAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0))))
136
136
  });
137
137
  const SUBACCOUNT_POLICY_PATCH_FIELDS = defineProtoPatchFields()({
138
138
  name: {
@@ -237,11 +237,11 @@ const SUBACCOUNT_POLICY_PATCH_FIELDS = defineProtoPatchFields()({
237
237
  function hasMandatorySubaccountActions(actions) {
238
238
  return actions === void 0 || actions.includes("read-balances") && actions.includes("read-spot");
239
239
  }
240
- const UpdateSubaccountPolicyInputSchema = validation_exports.pipe(validation_exports.strictObject({
240
+ const UpdateSubaccountPolicyInputSchema = v.pipe(v.strictObject({
241
241
  ...SubaccountPolicyPatchSchema.entries,
242
- policyId: validation_exports.pipe(validation_exports.string(), validation_exports.transform((v) => idToBigInt(v, "policyId"))),
242
+ policyId: v.pipe(v.string(), v.transform((v) => idToBigInt(v, "policyId"))),
243
243
  expectedRevision: positiveBigintStringInputSchema("expectedRevision")
244
- }), validation_exports.check(({ actions }) => hasMandatorySubaccountActions(actions), "Subaccount policy actions must include read-balances and read-spot"), validation_exports.check(({ policyId: _policyId, expectedRevision: _expectedRevision, ...patch }) => Object.values(patch).some((value) => value !== void 0), "At least one subaccount policy field must be provided"), validation_exports.transform(({ policyId, expectedRevision, ...patch }) => {
244
+ }), v.check(({ actions }) => hasMandatorySubaccountActions(actions), "Subaccount policy actions must include read-balances and read-spot"), v.check(({ policyId: _policyId, expectedRevision: _expectedRevision, ...patch }) => Object.values(patch).some((value) => value !== void 0), "At least one subaccount policy field must be provided"), v.transform(({ policyId, expectedRevision, ...patch }) => {
245
245
  const { patch: policy, updateMask } = buildProtoPatch(patch, SUBACCOUNT_POLICY_PATCH_FIELDS);
246
246
  return {
247
247
  policyId,
@@ -250,10 +250,10 @@ const UpdateSubaccountPolicyInputSchema = validation_exports.pipe(validation_exp
250
250
  expectedRevision
251
251
  };
252
252
  }));
253
- const PolicyIdSchema = validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1), validation_exports.transform((v) => idToBigInt(v, "policyId")));
254
- const ApplySubaccountPolicyInputSchema = validation_exports.strictObject({
253
+ const PolicyIdSchema = v.pipe(v.string(), v.trim(), v.minLength(1), v.transform((v) => idToBigInt(v, "policyId")));
254
+ const ApplySubaccountPolicyInputSchema = v.strictObject({
255
255
  subaccountId: idInputSchema("subaccountId"),
256
- policyId: validation_exports.pipe(validation_exports.nullable(validation_exports.pipe(validation_exports.string(), validation_exports.trim())), validation_exports.transform((value) => value ? idToBigInt(value, "policyId") : void 0))
256
+ policyId: v.pipe(v.nullable(v.pipe(v.string(), v.trim())), v.transform((value) => value ? idToBigInt(value, "policyId") : void 0))
257
257
  });
258
258
  const DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT = Date.now();
259
259
  const DEFAULT_SUBACCOUNT_POLICY = {
@@ -1 +1 @@
1
- {"version":3,"file":"subaccount-policies.schemas.js","names":["v"],"sources":["../../../../src/services/policies/subaccount-policies/subaccount-policies.schemas.ts"],"sourcesContent":["import * as v from \"../../../shared/validation.js\";\nimport {\n PerpMarketRuleSchema,\n PolicyActionEnumSchema,\n PolicyMarketScopeEnumSchema,\n ProtoPolicyActionEnumSchema,\n ProtoPolicyMarketScopeEnumSchema,\n SpotMarketRuleSchema,\n} from \"../shared.js\";\nimport {\n PolicyMarketScopeCodec,\n PolicyActionCodec,\n policyMarketScopeLabelFor,\n policyActionLabelFor,\n} from \"../shared.codecs.js\";\nimport { bpsToPct } from \"../../../utils/numbers.js\";\nimport { idToBigInt } from \"../../../utils/base58-id.js\";\nimport {\n OptionalNumberToBigIntOrZeroSchema,\n OptionalNumberToBpsOrZeroSchema,\n OptionalNumberToIntOrZeroSchema,\n OptionalPublicIdSchema,\n OptionalTimestampMsSchema,\n BigIntStringSchema,\n PublicIdSchema,\n TimestampSchema,\n TimestampMsSchema,\n idInputSchema,\n optionalSubaccountIdInputSchema,\n positiveBigintStringInputSchema,\n} from \"../../../shared/schemas.js\";\nimport { tsObjToMs, tsObjToNsString } from \"../../../utils/time.js\";\nimport { toTimestamp } from \"../../../utils/timestamp.js\";\nimport { toBigIntOrZero, toBpsOrZero, toIntOrZero } from \"../../../utils/numbers.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../../shared/account-scope.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../../utils/proto-patch.js\";\n\nexport const ListSubaccountPoliciesInputSchema = v.pipe(\n v.strictObject(AccountScopeInputEntries),\n v.transform(({ account }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type ListSubaccountPoliciesInput = v.InferInput<typeof ListSubaccountPoliciesInputSchema>;\n\nexport const GetSubaccountPolicyInputSchema = v.pipe(\n v.strictObject({\n policyId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n ...AccountScopeInputEntries,\n }),\n v.transform(({ policyId, account }) => ({\n policyId: idToBigInt(policyId, \"policyId\"),\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type GetSubaccountPolicyInput = v.InferInput<typeof GetSubaccountPolicyInputSchema>;\n\n/**\n * From the backend format to a usable frontend/UI format, so big ints to numbers, etc.\n */\nexport const SubaccountPolicySchema = v.pipe(\n v.object({\n id: PublicIdSchema,\n name: v.string(),\n description: v.string(),\n spotMarkets: v.optional(v.array(SpotMarketRuleSchema), []),\n spotMarketScope: v.pipe(\n ProtoPolicyMarketScopeEnumSchema,\n v.transform((v) => policyMarketScopeLabelFor(v)),\n ),\n perpMarketScope: v.pipe(\n ProtoPolicyMarketScopeEnumSchema,\n v.transform((v) => policyMarketScopeLabelFor(v)),\n ),\n perpMarkets: v.optional(v.array(PerpMarketRuleSchema), []),\n actions: v.pipe(\n v.optional(v.array(ProtoPolicyActionEnumSchema), []),\n v.transform((v) => v.map((action) => policyActionLabelFor(action))),\n ),\n isTemplate: v.optional(v.boolean(), false),\n sourceTemplateId: OptionalPublicIdSchema,\n globalNotionalCap: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n maxOrderNotional: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n maxOpenOrders: v.number(),\n maxOpenPositions: v.number(),\n globalPerpLeverageX: v.number(),\n dailyInternalTransferOutLimit: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n dailyWithdrawLimit: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n internalTransfersOwnOnly: v.boolean(),\n enforceWithdrawWhitelist: v.boolean(),\n tradingHalted: v.boolean(),\n liquidationOnly: v.boolean(),\n dailyLossLimit: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n intradayDrawdownLimitBps: v.pipe(\n v.number(),\n v.transform((v) => bpsToPct(v)),\n ),\n locked: v.boolean(),\n reviewAt: OptionalTimestampMsSchema,\n expiresAt: OptionalTimestampMsSchema,\n createdAt: TimestampMsSchema,\n updatedAt: TimestampSchema,\n revision: BigIntStringSchema,\n }),\n v.transform(\n ({\n maxOrderNotional,\n globalNotionalCap,\n intradayDrawdownLimitBps,\n updatedAt,\n ...rest\n }) => ({\n maxOrderSize: maxOrderNotional,\n globalExposureCap: globalNotionalCap,\n intradayDrawdownLimitPct: intradayDrawdownLimitBps,\n ...rest,\n updatedAt: tsObjToMs(updatedAt),\n updatedAtNs: tsObjToNsString(updatedAt),\n }),\n ),\n);\n\nexport type SubaccountPolicy = v.InferOutput<typeof SubaccountPolicySchema>;\n\nconst SubaccountPolicyInputBaseSchema = v.strictObject({\n name: v.string(),\n description: v.optional(v.string(), \"\"),\n spotMarkets: v.optional(v.array(SpotMarketRuleSchema), []),\n perpMarkets: v.optional(v.array(PerpMarketRuleSchema), []),\n spotMarketScope: v.pipe(\n PolicyMarketScopeEnumSchema,\n v.transform((v) => PolicyMarketScopeCodec.inputToProto[v]),\n ),\n perpMarketScope: v.pipe(\n PolicyMarketScopeEnumSchema,\n v.transform((v) => PolicyMarketScopeCodec.inputToProto[v]),\n ),\n actions: v.pipe(\n v.optional(v.array(PolicyActionEnumSchema), [\"read-balances\", \"read-spot\"]),\n v.transform((v) => (v ?? []).map((action) => PolicyActionCodec.inputToProto[action])),\n ),\n globalLeverageCap: OptionalNumberToIntOrZeroSchema,\n globalExposureCap: OptionalNumberToBigIntOrZeroSchema,\n maxOrderSize: OptionalNumberToBigIntOrZeroSchema,\n maxOpenOrders: OptionalNumberToIntOrZeroSchema,\n maxOpenPositions: OptionalNumberToIntOrZeroSchema,\n dailyInternalTransferLimit: OptionalNumberToBigIntOrZeroSchema,\n dailyWithdrawLimit: OptionalNumberToBigIntOrZeroSchema,\n dailyLossLimit: OptionalNumberToBigIntOrZeroSchema,\n intradayDrawdownLimitPct: OptionalNumberToBpsOrZeroSchema,\n tradingHalted: v.optional(v.boolean(), false),\n liquidationOnly: v.optional(v.boolean(), false),\n policyLocked: v.optional(v.boolean(), false),\n internalTransfersOwnOnly: v.optional(v.boolean(), true),\n enforceWithdrawWhitelist: v.optional(v.boolean(), false),\n reviewAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n expiresAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n subaccountId: optionalSubaccountIdInputSchema(),\n});\n\nfunction timestampFromMs(value: number | null | undefined) {\n if (value == null) return undefined;\n return toTimestamp({\n seconds: BigInt(Math.floor(value / 1000)),\n nanos: (value % 1000) * 1_000_000,\n });\n}\n\nfunction createSubaccountPolicyBaseTransform(\n input: v.InferOutput<typeof SubaccountPolicyInputBaseSchema>,\n) {\n const {\n subaccountId: _subaccountId,\n reviewAt,\n expiresAt,\n globalExposureCap,\n maxOrderSize,\n globalLeverageCap,\n dailyInternalTransferLimit,\n intradayDrawdownLimitPct,\n policyLocked,\n ...rest\n } = input;\n return {\n ...rest,\n globalNotionalCap: globalExposureCap,\n maxOrderNotional: maxOrderSize,\n globalPerpLeverageX: globalLeverageCap,\n dailyInternalTransferOutLimit: dailyInternalTransferLimit,\n intradayDrawdownLimitBps: intradayDrawdownLimitPct,\n locked: policyLocked,\n reviewAt: timestampFromMs(reviewAt),\n expiresAt: timestampFromMs(expiresAt),\n };\n}\n\nexport const CreateSubaccountPolicyInputSchema = v.pipe(\n SubaccountPolicyInputBaseSchema,\n v.check(\n ({ actions }) =>\n actions.includes(PolicyActionCodec.inputToProto[\"read-balances\"]) &&\n actions.includes(PolicyActionCodec.inputToProto[\"read-spot\"]),\n \"Subaccount policy actions must include read-balances and read-spot\",\n ),\n v.transform((input) => ({\n policy: createSubaccountPolicyBaseTransform(input),\n subaccountId: input.subaccountId,\n })),\n);\nexport type SubaccountPolicyCreateInput = v.InferInput<typeof CreateSubaccountPolicyInputSchema>;\n\nconst SubaccountPolicyPatchSchema = v.strictObject({\n name: v.optional(v.string()),\n description: v.optional(v.string()),\n spotMarkets: v.optional(v.array(SpotMarketRuleSchema)),\n perpMarkets: v.optional(v.array(PerpMarketRuleSchema)),\n spotMarketScope: v.optional(PolicyMarketScopeEnumSchema),\n perpMarketScope: v.optional(PolicyMarketScopeEnumSchema),\n actions: v.optional(v.array(PolicyActionEnumSchema)),\n globalLeverageCap: v.optional(v.nullable(v.number())),\n globalExposureCap: v.optional(v.nullable(v.number())),\n maxOrderSize: v.optional(v.nullable(v.number())),\n maxOpenOrders: v.optional(v.nullable(v.number())),\n maxOpenPositions: v.optional(v.nullable(v.number())),\n dailyInternalTransferLimit: v.optional(v.nullable(v.number())),\n dailyWithdrawLimit: v.optional(v.nullable(v.number())),\n dailyLossLimit: v.optional(v.nullable(v.number())),\n intradayDrawdownLimitPct: v.optional(v.nullable(v.number())),\n tradingHalted: v.optional(v.boolean()),\n liquidationOnly: v.optional(v.boolean()),\n policyLocked: v.optional(v.boolean()),\n internalTransfersOwnOnly: v.optional(v.boolean()),\n enforceWithdrawWhitelist: v.optional(v.boolean()),\n reviewAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n expiresAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n});\n\ntype SubaccountPolicyPatch = v.InferOutput<typeof SubaccountPolicyPatchSchema>;\n\nconst SUBACCOUNT_POLICY_PATCH_FIELDS = defineProtoPatchFields<SubaccountPolicyPatch>()({\n name: { path: \"name\", encode: (name) => ({ name }) },\n description: { path: \"description\", encode: (description) => ({ description }) },\n spotMarkets: { path: \"spot_markets\", encode: (spotMarkets) => ({ spotMarkets }) },\n perpMarkets: { path: \"perp_markets\", encode: (perpMarkets) => ({ perpMarkets }) },\n spotMarketScope: {\n path: \"spot_market_scope\",\n encode: (scope) => ({ spotMarketScope: PolicyMarketScopeCodec.inputToProto[scope] }),\n },\n perpMarketScope: {\n path: \"perp_market_scope\",\n encode: (scope) => ({ perpMarketScope: PolicyMarketScopeCodec.inputToProto[scope] }),\n },\n actions: {\n path: \"actions\",\n encode: (actions) => ({\n actions: actions.map((action) => PolicyActionCodec.inputToProto[action]),\n }),\n },\n globalExposureCap: {\n path: \"global_notional_cap\",\n encode: (value) => ({ globalNotionalCap: toBigIntOrZero(value) }),\n },\n maxOrderSize: {\n path: \"max_order_notional\",\n encode: (value) => ({ maxOrderNotional: toBigIntOrZero(value) }),\n },\n maxOpenOrders: {\n path: \"max_open_orders\",\n encode: (value) => ({ maxOpenOrders: toIntOrZero(value) }),\n },\n maxOpenPositions: {\n path: \"max_open_positions\",\n encode: (value) => ({ maxOpenPositions: toIntOrZero(value) }),\n },\n globalLeverageCap: {\n path: \"global_perp_leverage_x\",\n encode: (value) => ({ globalPerpLeverageX: toIntOrZero(value) }),\n },\n dailyInternalTransferLimit: {\n path: \"daily_internal_transfer_out_limit\",\n encode: (value) => ({ dailyInternalTransferOutLimit: toBigIntOrZero(value) }),\n },\n dailyWithdrawLimit: {\n path: \"daily_withdraw_limit\",\n encode: (value) => ({ dailyWithdrawLimit: toBigIntOrZero(value) }),\n },\n internalTransfersOwnOnly: {\n path: \"internal_transfers_own_only\",\n encode: (internalTransfersOwnOnly) => ({ internalTransfersOwnOnly }),\n },\n enforceWithdrawWhitelist: {\n path: \"enforce_withdraw_whitelist\",\n encode: (enforceWithdrawWhitelist) => ({ enforceWithdrawWhitelist }),\n },\n tradingHalted: {\n path: \"trading_halted\",\n encode: (tradingHalted) => ({ tradingHalted }),\n },\n liquidationOnly: {\n path: \"liquidation_only\",\n encode: (liquidationOnly) => ({ liquidationOnly }),\n },\n dailyLossLimit: {\n path: \"daily_loss_limit\",\n encode: (value) => ({ dailyLossLimit: toBigIntOrZero(value) }),\n },\n intradayDrawdownLimitPct: {\n path: \"intraday_drawdown_limit_bps\",\n encode: (value) => ({ intradayDrawdownLimitBps: toBpsOrZero(value) }),\n },\n policyLocked: { path: \"locked\", encode: (locked) => ({ locked }) },\n reviewAt: {\n path: \"review_at\",\n encode: (reviewAt) => {\n const timestamp = timestampFromMs(reviewAt);\n return timestamp === undefined ? {} : { reviewAt: timestamp };\n },\n },\n expiresAt: {\n path: \"expires_at\",\n encode: (expiresAt) => {\n const timestamp = timestampFromMs(expiresAt);\n return timestamp === undefined ? {} : { expiresAt: timestamp };\n },\n },\n});\n\nfunction hasMandatorySubaccountActions(actions: readonly string[] | undefined): boolean {\n return (\n actions === undefined ||\n (actions.includes(\"read-balances\") && actions.includes(\"read-spot\"))\n );\n}\n\nexport const UpdateSubaccountPolicyInputSchema = v.pipe(\n v.strictObject({\n ...SubaccountPolicyPatchSchema.entries,\n policyId: v.pipe(\n v.string(),\n v.transform((v) => idToBigInt(v, \"policyId\")),\n ),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n }),\n v.check(\n ({ actions }) => hasMandatorySubaccountActions(actions),\n \"Subaccount policy actions must include read-balances and read-spot\",\n ),\n v.check(\n ({ policyId: _policyId, expectedRevision: _expectedRevision, ...patch }) =>\n Object.values(patch).some((value) => value !== undefined),\n \"At least one subaccount policy field must be provided\",\n ),\n v.transform(({ policyId, expectedRevision, ...patch }) => {\n const { patch: policy, updateMask } = buildProtoPatch(\n patch,\n SUBACCOUNT_POLICY_PATCH_FIELDS,\n );\n return {\n policyId,\n policy,\n updateMask,\n expectedRevision,\n };\n }),\n);\nexport type SubaccountPolicyUpdateInput = v.InferInput<typeof UpdateSubaccountPolicyInputSchema>;\n\nexport const PolicyIdSchema = v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.transform((v) => idToBigInt(v, \"policyId\")),\n);\n\nexport const ApplySubaccountPolicyInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n policyId: v.pipe(\n v.nullable(v.pipe(v.string(), v.trim())),\n v.transform((value) => (value ? idToBigInt(value, \"policyId\") : undefined)),\n ),\n});\n\nexport type SubaccountPolicyApplyInput = v.InferInput<typeof ApplySubaccountPolicyInputSchema>;\n\nconst DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT = Date.now();\n\nexport const DEFAULT_SUBACCOUNT_POLICY: SubaccountPolicy = {\n id: \"\",\n name: \"Subaccount Policy\",\n description: \"Subaccount Policy description\",\n spotMarkets: [],\n perpMarkets: [],\n spotMarketScope: \"all\",\n perpMarketScope: \"all\",\n actions: [\n \"read-balances\",\n \"read-external-withdrawals\",\n \"read-internal-transfers\",\n \"read-perp\",\n \"read-spot\",\n ],\n globalExposureCap: 0,\n maxOrderSize: 0,\n maxOpenOrders: 0,\n maxOpenPositions: 0,\n globalPerpLeverageX: 0,\n dailyInternalTransferOutLimit: 0,\n dailyWithdrawLimit: 0,\n internalTransfersOwnOnly: true,\n enforceWithdrawWhitelist: false,\n tradingHalted: false,\n liquidationOnly: false,\n dailyLossLimit: 0,\n createdAt: DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT,\n updatedAt: DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT,\n updatedAtNs: (BigInt(DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT) * 1_000_000n).toString(),\n isTemplate: false,\n sourceTemplateId: undefined,\n locked: false,\n reviewAt: undefined,\n expiresAt: undefined,\n intradayDrawdownLimitPct: 0,\n revision: \"0\",\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"subaccount-policies.schemas.js","names":[],"sources":["../../../../src/services/policies/subaccount-policies/subaccount-policies.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport {\n PerpMarketRuleSchema,\n PolicyActionEnumSchema,\n PolicyMarketScopeEnumSchema,\n ProtoPolicyActionEnumSchema,\n ProtoPolicyMarketScopeEnumSchema,\n SpotMarketRuleSchema,\n} from \"../shared.js\";\nimport {\n PolicyMarketScopeCodec,\n PolicyActionCodec,\n policyMarketScopeLabelFor,\n policyActionLabelFor,\n} from \"../shared.codecs.js\";\nimport { bpsToPct } from \"../../../utils/numbers.js\";\nimport { idToBigInt } from \"../../../utils/base58-id.js\";\nimport {\n OptionalNumberToBigIntOrZeroSchema,\n OptionalNumberToBpsOrZeroSchema,\n OptionalNumberToIntOrZeroSchema,\n OptionalPublicIdSchema,\n OptionalTimestampMsSchema,\n BigIntStringSchema,\n PublicIdSchema,\n TimestampSchema,\n TimestampMsSchema,\n idInputSchema,\n optionalSubaccountIdInputSchema,\n positiveBigintStringInputSchema,\n} from \"../../../shared/schemas.js\";\nimport { tsObjToMs, tsObjToNsString } from \"../../../utils/time.js\";\nimport { toTimestamp } from \"../../../utils/timestamp.js\";\nimport { toBigIntOrZero, toBpsOrZero, toIntOrZero } from \"../../../utils/numbers.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../../shared/account-scope.js\";\nimport { buildProtoPatch, defineProtoPatchFields } from \"../../../utils/proto-patch.js\";\n\nexport const ListSubaccountPoliciesInputSchema = v.pipe(\n v.strictObject(AccountScopeInputEntries),\n v.transform(({ account }) => ({\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type ListSubaccountPoliciesInput = v.InferInput<typeof ListSubaccountPoliciesInputSchema>;\n\nexport const GetSubaccountPolicyInputSchema = v.pipe(\n v.strictObject({\n policyId: v.pipe(v.string(), v.trim(), v.minLength(1)),\n ...AccountScopeInputEntries,\n }),\n v.transform(({ policyId, account }) => ({\n policyId: idToBigInt(policyId, \"policyId\"),\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\nexport type GetSubaccountPolicyInput = v.InferInput<typeof GetSubaccountPolicyInputSchema>;\n\n/**\n * From the backend format to a usable frontend/UI format, so big ints to numbers, etc.\n */\nexport const SubaccountPolicySchema = v.pipe(\n v.object({\n id: PublicIdSchema,\n name: v.string(),\n description: v.string(),\n spotMarkets: v.optional(v.array(SpotMarketRuleSchema), []),\n spotMarketScope: v.pipe(\n ProtoPolicyMarketScopeEnumSchema,\n v.transform((v) => policyMarketScopeLabelFor(v)),\n ),\n perpMarketScope: v.pipe(\n ProtoPolicyMarketScopeEnumSchema,\n v.transform((v) => policyMarketScopeLabelFor(v)),\n ),\n perpMarkets: v.optional(v.array(PerpMarketRuleSchema), []),\n actions: v.pipe(\n v.optional(v.array(ProtoPolicyActionEnumSchema), []),\n v.transform((v) => v.map((action) => policyActionLabelFor(action))),\n ),\n isTemplate: v.optional(v.boolean(), false),\n sourceTemplateId: OptionalPublicIdSchema,\n globalNotionalCap: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n maxOrderNotional: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n maxOpenOrders: v.number(),\n maxOpenPositions: v.number(),\n globalPerpLeverageX: v.number(),\n dailyInternalTransferOutLimit: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n dailyWithdrawLimit: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n internalTransfersOwnOnly: v.boolean(),\n enforceWithdrawWhitelist: v.boolean(),\n tradingHalted: v.boolean(),\n liquidationOnly: v.boolean(),\n dailyLossLimit: v.pipe(\n v.bigint(),\n v.transform((v) => Number(v)),\n ),\n intradayDrawdownLimitBps: v.pipe(\n v.number(),\n v.transform((v) => bpsToPct(v)),\n ),\n locked: v.boolean(),\n reviewAt: OptionalTimestampMsSchema,\n expiresAt: OptionalTimestampMsSchema,\n createdAt: TimestampMsSchema,\n updatedAt: TimestampSchema,\n revision: BigIntStringSchema,\n }),\n v.transform(\n ({\n maxOrderNotional,\n globalNotionalCap,\n intradayDrawdownLimitBps,\n updatedAt,\n ...rest\n }) => ({\n maxOrderSize: maxOrderNotional,\n globalExposureCap: globalNotionalCap,\n intradayDrawdownLimitPct: intradayDrawdownLimitBps,\n ...rest,\n updatedAt: tsObjToMs(updatedAt),\n updatedAtNs: tsObjToNsString(updatedAt),\n }),\n ),\n);\n\nexport type SubaccountPolicy = v.InferOutput<typeof SubaccountPolicySchema>;\n\nconst SubaccountPolicyInputBaseSchema = v.strictObject({\n name: v.string(),\n description: v.optional(v.string(), \"\"),\n spotMarkets: v.optional(v.array(SpotMarketRuleSchema), []),\n perpMarkets: v.optional(v.array(PerpMarketRuleSchema), []),\n spotMarketScope: v.pipe(\n PolicyMarketScopeEnumSchema,\n v.transform((v) => PolicyMarketScopeCodec.inputToProto[v]),\n ),\n perpMarketScope: v.pipe(\n PolicyMarketScopeEnumSchema,\n v.transform((v) => PolicyMarketScopeCodec.inputToProto[v]),\n ),\n actions: v.pipe(\n v.optional(v.array(PolicyActionEnumSchema), [\"read-balances\", \"read-spot\"]),\n v.transform((v) => (v ?? []).map((action) => PolicyActionCodec.inputToProto[action])),\n ),\n globalLeverageCap: OptionalNumberToIntOrZeroSchema,\n globalExposureCap: OptionalNumberToBigIntOrZeroSchema,\n maxOrderSize: OptionalNumberToBigIntOrZeroSchema,\n maxOpenOrders: OptionalNumberToIntOrZeroSchema,\n maxOpenPositions: OptionalNumberToIntOrZeroSchema,\n dailyInternalTransferLimit: OptionalNumberToBigIntOrZeroSchema,\n dailyWithdrawLimit: OptionalNumberToBigIntOrZeroSchema,\n dailyLossLimit: OptionalNumberToBigIntOrZeroSchema,\n intradayDrawdownLimitPct: OptionalNumberToBpsOrZeroSchema,\n tradingHalted: v.optional(v.boolean(), false),\n liquidationOnly: v.optional(v.boolean(), false),\n policyLocked: v.optional(v.boolean(), false),\n internalTransfersOwnOnly: v.optional(v.boolean(), true),\n enforceWithdrawWhitelist: v.optional(v.boolean(), false),\n reviewAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n expiresAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n subaccountId: optionalSubaccountIdInputSchema(),\n});\n\nfunction timestampFromMs(value: number | null | undefined) {\n if (value == null) return undefined;\n return toTimestamp({\n seconds: BigInt(Math.floor(value / 1000)),\n nanos: (value % 1000) * 1_000_000,\n });\n}\n\nfunction createSubaccountPolicyBaseTransform(\n input: v.InferOutput<typeof SubaccountPolicyInputBaseSchema>,\n) {\n const {\n subaccountId: _subaccountId,\n reviewAt,\n expiresAt,\n globalExposureCap,\n maxOrderSize,\n globalLeverageCap,\n dailyInternalTransferLimit,\n intradayDrawdownLimitPct,\n policyLocked,\n ...rest\n } = input;\n return {\n ...rest,\n globalNotionalCap: globalExposureCap,\n maxOrderNotional: maxOrderSize,\n globalPerpLeverageX: globalLeverageCap,\n dailyInternalTransferOutLimit: dailyInternalTransferLimit,\n intradayDrawdownLimitBps: intradayDrawdownLimitPct,\n locked: policyLocked,\n reviewAt: timestampFromMs(reviewAt),\n expiresAt: timestampFromMs(expiresAt),\n };\n}\n\nexport const CreateSubaccountPolicyInputSchema = v.pipe(\n SubaccountPolicyInputBaseSchema,\n v.check(\n ({ actions }) =>\n actions.includes(PolicyActionCodec.inputToProto[\"read-balances\"]) &&\n actions.includes(PolicyActionCodec.inputToProto[\"read-spot\"]),\n \"Subaccount policy actions must include read-balances and read-spot\",\n ),\n v.transform((input) => ({\n policy: createSubaccountPolicyBaseTransform(input),\n subaccountId: input.subaccountId,\n })),\n);\nexport type SubaccountPolicyCreateInput = v.InferInput<typeof CreateSubaccountPolicyInputSchema>;\n\nconst SubaccountPolicyPatchSchema = v.strictObject({\n name: v.optional(v.string()),\n description: v.optional(v.string()),\n spotMarkets: v.optional(v.array(SpotMarketRuleSchema)),\n perpMarkets: v.optional(v.array(PerpMarketRuleSchema)),\n spotMarketScope: v.optional(PolicyMarketScopeEnumSchema),\n perpMarketScope: v.optional(PolicyMarketScopeEnumSchema),\n actions: v.optional(v.array(PolicyActionEnumSchema)),\n globalLeverageCap: v.optional(v.nullable(v.number())),\n globalExposureCap: v.optional(v.nullable(v.number())),\n maxOrderSize: v.optional(v.nullable(v.number())),\n maxOpenOrders: v.optional(v.nullable(v.number())),\n maxOpenPositions: v.optional(v.nullable(v.number())),\n dailyInternalTransferLimit: v.optional(v.nullable(v.number())),\n dailyWithdrawLimit: v.optional(v.nullable(v.number())),\n dailyLossLimit: v.optional(v.nullable(v.number())),\n intradayDrawdownLimitPct: v.optional(v.nullable(v.number())),\n tradingHalted: v.optional(v.boolean()),\n liquidationOnly: v.optional(v.boolean()),\n policyLocked: v.optional(v.boolean()),\n internalTransfersOwnOnly: v.optional(v.boolean()),\n enforceWithdrawWhitelist: v.optional(v.boolean()),\n reviewAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n expiresAt: v.optional(v.nullable(v.pipe(v.number(), v.integer(), v.minValue(0)))),\n});\n\ntype SubaccountPolicyPatch = v.InferOutput<typeof SubaccountPolicyPatchSchema>;\n\nconst SUBACCOUNT_POLICY_PATCH_FIELDS = defineProtoPatchFields<SubaccountPolicyPatch>()({\n name: { path: \"name\", encode: (name) => ({ name }) },\n description: { path: \"description\", encode: (description) => ({ description }) },\n spotMarkets: { path: \"spot_markets\", encode: (spotMarkets) => ({ spotMarkets }) },\n perpMarkets: { path: \"perp_markets\", encode: (perpMarkets) => ({ perpMarkets }) },\n spotMarketScope: {\n path: \"spot_market_scope\",\n encode: (scope) => ({ spotMarketScope: PolicyMarketScopeCodec.inputToProto[scope] }),\n },\n perpMarketScope: {\n path: \"perp_market_scope\",\n encode: (scope) => ({ perpMarketScope: PolicyMarketScopeCodec.inputToProto[scope] }),\n },\n actions: {\n path: \"actions\",\n encode: (actions) => ({\n actions: actions.map((action) => PolicyActionCodec.inputToProto[action]),\n }),\n },\n globalExposureCap: {\n path: \"global_notional_cap\",\n encode: (value) => ({ globalNotionalCap: toBigIntOrZero(value) }),\n },\n maxOrderSize: {\n path: \"max_order_notional\",\n encode: (value) => ({ maxOrderNotional: toBigIntOrZero(value) }),\n },\n maxOpenOrders: {\n path: \"max_open_orders\",\n encode: (value) => ({ maxOpenOrders: toIntOrZero(value) }),\n },\n maxOpenPositions: {\n path: \"max_open_positions\",\n encode: (value) => ({ maxOpenPositions: toIntOrZero(value) }),\n },\n globalLeverageCap: {\n path: \"global_perp_leverage_x\",\n encode: (value) => ({ globalPerpLeverageX: toIntOrZero(value) }),\n },\n dailyInternalTransferLimit: {\n path: \"daily_internal_transfer_out_limit\",\n encode: (value) => ({ dailyInternalTransferOutLimit: toBigIntOrZero(value) }),\n },\n dailyWithdrawLimit: {\n path: \"daily_withdraw_limit\",\n encode: (value) => ({ dailyWithdrawLimit: toBigIntOrZero(value) }),\n },\n internalTransfersOwnOnly: {\n path: \"internal_transfers_own_only\",\n encode: (internalTransfersOwnOnly) => ({ internalTransfersOwnOnly }),\n },\n enforceWithdrawWhitelist: {\n path: \"enforce_withdraw_whitelist\",\n encode: (enforceWithdrawWhitelist) => ({ enforceWithdrawWhitelist }),\n },\n tradingHalted: {\n path: \"trading_halted\",\n encode: (tradingHalted) => ({ tradingHalted }),\n },\n liquidationOnly: {\n path: \"liquidation_only\",\n encode: (liquidationOnly) => ({ liquidationOnly }),\n },\n dailyLossLimit: {\n path: \"daily_loss_limit\",\n encode: (value) => ({ dailyLossLimit: toBigIntOrZero(value) }),\n },\n intradayDrawdownLimitPct: {\n path: \"intraday_drawdown_limit_bps\",\n encode: (value) => ({ intradayDrawdownLimitBps: toBpsOrZero(value) }),\n },\n policyLocked: { path: \"locked\", encode: (locked) => ({ locked }) },\n reviewAt: {\n path: \"review_at\",\n encode: (reviewAt) => {\n const timestamp = timestampFromMs(reviewAt);\n return timestamp === undefined ? {} : { reviewAt: timestamp };\n },\n },\n expiresAt: {\n path: \"expires_at\",\n encode: (expiresAt) => {\n const timestamp = timestampFromMs(expiresAt);\n return timestamp === undefined ? {} : { expiresAt: timestamp };\n },\n },\n});\n\nfunction hasMandatorySubaccountActions(actions: readonly string[] | undefined): boolean {\n return (\n actions === undefined ||\n (actions.includes(\"read-balances\") && actions.includes(\"read-spot\"))\n );\n}\n\nexport const UpdateSubaccountPolicyInputSchema = v.pipe(\n v.strictObject({\n ...SubaccountPolicyPatchSchema.entries,\n policyId: v.pipe(\n v.string(),\n v.transform((v) => idToBigInt(v, \"policyId\")),\n ),\n expectedRevision: positiveBigintStringInputSchema(\"expectedRevision\"),\n }),\n v.check(\n ({ actions }) => hasMandatorySubaccountActions(actions),\n \"Subaccount policy actions must include read-balances and read-spot\",\n ),\n v.check(\n ({ policyId: _policyId, expectedRevision: _expectedRevision, ...patch }) =>\n Object.values(patch).some((value) => value !== undefined),\n \"At least one subaccount policy field must be provided\",\n ),\n v.transform(({ policyId, expectedRevision, ...patch }) => {\n const { patch: policy, updateMask } = buildProtoPatch(\n patch,\n SUBACCOUNT_POLICY_PATCH_FIELDS,\n );\n return {\n policyId,\n policy,\n updateMask,\n expectedRevision,\n };\n }),\n);\nexport type SubaccountPolicyUpdateInput = v.InferInput<typeof UpdateSubaccountPolicyInputSchema>;\n\nexport const PolicyIdSchema = v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.transform((v) => idToBigInt(v, \"policyId\")),\n);\n\nexport const ApplySubaccountPolicyInputSchema = v.strictObject({\n subaccountId: idInputSchema(\"subaccountId\"),\n policyId: v.pipe(\n v.nullable(v.pipe(v.string(), v.trim())),\n v.transform((value) => (value ? idToBigInt(value, \"policyId\") : undefined)),\n ),\n});\n\nexport type SubaccountPolicyApplyInput = v.InferInput<typeof ApplySubaccountPolicyInputSchema>;\n\nconst DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT = Date.now();\n\nexport const DEFAULT_SUBACCOUNT_POLICY: SubaccountPolicy = {\n id: \"\",\n name: \"Subaccount Policy\",\n description: \"Subaccount Policy description\",\n spotMarkets: [],\n perpMarkets: [],\n spotMarketScope: \"all\",\n perpMarketScope: \"all\",\n actions: [\n \"read-balances\",\n \"read-external-withdrawals\",\n \"read-internal-transfers\",\n \"read-perp\",\n \"read-spot\",\n ],\n globalExposureCap: 0,\n maxOrderSize: 0,\n maxOpenOrders: 0,\n maxOpenPositions: 0,\n globalPerpLeverageX: 0,\n dailyInternalTransferOutLimit: 0,\n dailyWithdrawLimit: 0,\n internalTransfersOwnOnly: true,\n enforceWithdrawWhitelist: false,\n tradingHalted: false,\n liquidationOnly: false,\n dailyLossLimit: 0,\n createdAt: DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT,\n updatedAt: DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT,\n updatedAtNs: (BigInt(DEFAULT_SUBACCOUNT_POLICY_UPDATED_AT) * 1_000_000n).toString(),\n isTemplate: false,\n sourceTemplateId: undefined,\n locked: false,\n reviewAt: undefined,\n expiresAt: undefined,\n intradayDrawdownLimitPct: 0,\n revision: \"0\",\n};\n"],"mappings":"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"}
@@ -1,23 +1,23 @@
1
- import { validation_exports } from "../shared/validation.js";
1
+ import * as v from "valibot";
2
2
  //#region src/services/shared.ts
3
- const SideSchema = validation_exports.picklist(["buy", "sell"]);
4
- const PositiveStringInputSchema = validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1));
5
- const PositiveStringOrNumberInputSchema = validation_exports.union([PositiveStringInputSchema, validation_exports.pipe(validation_exports.number(), validation_exports.gtValue(0))]);
3
+ const SideSchema = v.picklist(["buy", "sell"]);
4
+ const PositiveStringInputSchema = v.pipe(v.string(), v.trim(), v.minLength(1));
5
+ const PositiveStringOrNumberInputSchema = v.union([PositiveStringInputSchema, v.pipe(v.number(), v.gtValue(0))]);
6
6
  /** Absolute price distance, as a decimal price string (e.g. "0.50"). */
7
- const PriceDistanceInputSchema = validation_exports.strictObject({
8
- kind: validation_exports.literal("distance"),
7
+ const PriceDistanceInputSchema = v.strictObject({
8
+ kind: v.literal("distance"),
9
9
  distance: PositiveStringInputSchema
10
10
  });
11
11
  /** Absolute price slippage, as a decimal price string (e.g. "0.25"). */
12
- const PriceSlippageInputSchema = validation_exports.strictObject({
13
- kind: validation_exports.literal("slippage"),
12
+ const PriceSlippageInputSchema = v.strictObject({
13
+ kind: v.literal("slippage"),
14
14
  slippage: PositiveStringInputSchema
15
15
  });
16
- const BpsStringOrNumberInputSchema = validation_exports.strictObject({
17
- kind: validation_exports.literal("bps"),
16
+ const BpsStringOrNumberInputSchema = v.strictObject({
17
+ kind: v.literal("bps"),
18
18
  bps: PositiveStringOrNumberInputSchema
19
19
  });
20
- const NoneInputSchema = validation_exports.strictObject({ kind: validation_exports.literal("none") });
20
+ const NoneInputSchema = v.strictObject({ kind: v.literal("none") });
21
21
  //#endregion
22
22
  export { BpsStringOrNumberInputSchema, NoneInputSchema, PositiveStringInputSchema, PositiveStringOrNumberInputSchema, PriceDistanceInputSchema, PriceSlippageInputSchema, SideSchema };
23
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","names":["v"],"sources":["../../src/services/shared.ts"],"sourcesContent":["import * as v from \"../shared/validation.js\";\n\nexport const SideSchema = v.picklist([\"buy\", \"sell\"]);\n\nexport const PositiveStringInputSchema = v.pipe(v.string(), v.trim(), v.minLength(1));\n\nexport const PositiveStringOrNumberInputSchema = v.union([\n PositiveStringInputSchema,\n v.pipe(v.number(), v.gtValue(0)),\n]);\n\n/** Absolute price distance, as a decimal price string (e.g. \"0.50\"). */\nexport const PriceDistanceInputSchema = v.strictObject({\n kind: v.literal(\"distance\"),\n distance: PositiveStringInputSchema,\n});\n\n/** Absolute price slippage, as a decimal price string (e.g. \"0.25\"). */\nexport const PriceSlippageInputSchema = v.strictObject({\n kind: v.literal(\"slippage\"),\n slippage: PositiveStringInputSchema,\n});\n\nexport const BpsStringOrNumberInputSchema = v.strictObject({\n kind: v.literal(\"bps\"),\n bps: PositiveStringOrNumberInputSchema,\n});\n\nexport const NoneInputSchema = v.strictObject({\n kind: v.literal(\"none\"),\n});\n"],"mappings":";;AAEA,MAAa,aAAaA,mBAAE,SAAS,CAAC,OAAO,MAAM,CAAC;AAEpD,MAAa,4BAA4BA,mBAAE,KAAKA,mBAAE,OAAO,GAAGA,mBAAE,KAAK,GAAGA,mBAAE,UAAU,CAAC,CAAC;AAEpF,MAAa,oCAAoCA,mBAAE,MAAM,CACrD,2BACAA,mBAAE,KAAKA,mBAAE,OAAO,GAAGA,mBAAE,QAAQ,CAAC,CAAC,CACnC,CAAC;;AAGD,MAAa,2BAA2BA,mBAAE,aAAa;CACnD,MAAMA,mBAAE,QAAQ,UAAU;CAC1B,UAAU;AACd,CAAC;;AAGD,MAAa,2BAA2BA,mBAAE,aAAa;CACnD,MAAMA,mBAAE,QAAQ,UAAU;CAC1B,UAAU;AACd,CAAC;AAED,MAAa,+BAA+BA,mBAAE,aAAa;CACvD,MAAMA,mBAAE,QAAQ,KAAK;CACrB,KAAK;AACT,CAAC;AAED,MAAa,kBAAkBA,mBAAE,aAAa,EAC1C,MAAMA,mBAAE,QAAQ,MAAM,EAC1B,CAAC"}
1
+ {"version":3,"file":"shared.js","names":[],"sources":["../../src/services/shared.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nexport const SideSchema = v.picklist([\"buy\", \"sell\"]);\n\nexport const PositiveStringInputSchema = v.pipe(v.string(), v.trim(), v.minLength(1));\n\nexport const PositiveStringOrNumberInputSchema = v.union([\n PositiveStringInputSchema,\n v.pipe(v.number(), v.gtValue(0)),\n]);\n\n/** Absolute price distance, as a decimal price string (e.g. \"0.50\"). */\nexport const PriceDistanceInputSchema = v.strictObject({\n kind: v.literal(\"distance\"),\n distance: PositiveStringInputSchema,\n});\n\n/** Absolute price slippage, as a decimal price string (e.g. \"0.25\"). */\nexport const PriceSlippageInputSchema = v.strictObject({\n kind: v.literal(\"slippage\"),\n slippage: PositiveStringInputSchema,\n});\n\nexport const BpsStringOrNumberInputSchema = v.strictObject({\n kind: v.literal(\"bps\"),\n bps: PositiveStringOrNumberInputSchema,\n});\n\nexport const NoneInputSchema = v.strictObject({\n kind: v.literal(\"none\"),\n});\n"],"mappings":";;AAEA,MAAa,aAAa,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC;AAEpD,MAAa,4BAA4B,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,GAAG,EAAE,UAAU,CAAC,CAAC;AAEpF,MAAa,oCAAoC,EAAE,MAAM,CACrD,2BACA,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CACnC,CAAC;;AAGD,MAAa,2BAA2B,EAAE,aAAa;CACnD,MAAM,EAAE,QAAQ,UAAU;CAC1B,UAAU;AACd,CAAC;;AAGD,MAAa,2BAA2B,EAAE,aAAa;CACnD,MAAM,EAAE,QAAQ,UAAU;CAC1B,UAAU;AACd,CAAC;AAED,MAAa,+BAA+B,EAAE,aAAa;CACvD,MAAM,EAAE,QAAQ,KAAK;CACrB,KAAK;AACT,CAAC;AAED,MAAa,kBAAkB,EAAE,aAAa,EAC1C,MAAM,EAAE,QAAQ,MAAM,EAC1B,CAAC"}
@@ -1,7 +1,7 @@
1
- import { validation_d_exports } from "../../shared/validation.js";
2
1
  import { PolyesterMutationOptions, PolyesterRequestOptions } from "../../shared/request-options.js";
3
2
  import { GetVerificationResponse, SocialProviderInputSchema, StartVerificationInput, StartVerificationResponse, VerificationReadyResponse } from "./social-verification.schemas.js";
4
3
  import { Transport } from "@connectrpc/connect";
4
+ import * as v from "valibot";
5
5
  //#region src/services/social-verification/social-verification.d.ts
6
6
  /**
7
7
  * Verifies ownership of external social accounts for the authenticated caller.
@@ -16,11 +16,11 @@ declare class SocialVerificationService {
16
16
  /**
17
17
  * Queues a provider check after the caller has placed the challenge code according to the selected verification method.
18
18
  */
19
- markReady(input: validation_d_exports.InferInput<typeof SocialProviderInputSchema>, options?: PolyesterMutationOptions): Promise<VerificationReadyResponse>;
19
+ markReady(input: v.InferInput<typeof SocialProviderInputSchema>, options?: PolyesterMutationOptions): Promise<VerificationReadyResponse>;
20
20
  /**
21
21
  * Returns the caller's current verification state for a provider, including status, challenge metadata, attempts, last error, and verified timestamp.
22
22
  */
23
- get(input: validation_d_exports.InferInput<typeof SocialProviderInputSchema>, options?: PolyesterRequestOptions): Promise<GetVerificationResponse>;
23
+ get(input: v.InferInput<typeof SocialProviderInputSchema>, options?: PolyesterRequestOptions): Promise<GetVerificationResponse>;
24
24
  }
25
25
  //#endregion
26
26
  export { SocialVerificationService };
@@ -1 +1 @@
1
- {"version":3,"file":"social-verification.d.ts","names":[],"sources":["../../../src/services/social-verification/social-verification.ts"],"mappings":";;;;;;;;cAuBa;;EAGG,YAAA,WAAW;;;;EAOjB,MACF,OAAO,wBACP,UAAU,2BACX,QAAQ;;;;EAYL,UACF,OAAO,qBAAE,kBAAkB,4BAC3B,UAAU,2BACX,QAAQ;;;;EAYL,IACF,OAAO,qBAAE,kBAAkB,4BAC3B,UAAU,0BACX,QAAQ"}
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 +1 @@
1
- {"version":3,"file":"social-verification.js","names":["#client","Proto.SocialVerificationService","v.parse"],"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 * as v 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 = v.parse(StartVerificationInputSchema, input);\n const res = await this.#client.startSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return v.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 = v.parse(SocialProviderInputSchema, input);\n const res = await this.#client.socialVerificationReady(\n validated,\n toConnectCallOptions(options),\n );\n return v.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 = v.parse(SocialProviderInputSchema, input);\n const res = await this.#client.getSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return v.parse(GetVerificationResponseSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;AAuBA,IAAa,4BAAb,MAAuC;CACnC;CAEA,YAAY,WAAsB;EAC9B,KAAKA,UAAU,aAAaC,6BAAiC,SAAS;CAC1E;;;;CAKA,MAAM,MACF,OACA,SACkC;EAClC,MAAM,YAAYC,MAAQ,8BAA8B,KAAK;EAC7D,MAAM,MAAM,MAAM,KAAKF,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAOE,MAAQ,iCAAiC,GAAG;CACvD;;;;CAKA,MAAM,UACF,OACA,SACkC;EAClC,MAAM,YAAYA,MAAQ,2BAA2B,KAAK;EAC1D,MAAM,MAAM,MAAM,KAAKF,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAOE,MAAQ,iCAAiC,GAAG;CACvD;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,YAAYA,MAAQ,2BAA2B,KAAK;EAC1D,MAAM,MAAM,MAAM,KAAKF,QAAQ,sBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAOE,MAAQ,+BAA+B,GAAG;CACrD;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, 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,65 +1,65 @@
1
- import { validation_d_exports } from "../../shared/validation.js";
2
1
  import { SocialProvider as SocialProvider$1, SocialVerification as SocialVerification$1, SocialVerificationMethod as SocialVerificationMethod$1 } from "../../gen/auth/v1/social_verification_pb.js";
3
2
  import { DecodedEnum } from "../../utils/types.js";
4
3
  import "./social-verification.codecs.js";
4
+ import * as v from "valibot";
5
5
  //#region src/services/social-verification/social-verification.schemas.d.ts
6
- declare const SocialProviderSchema: validation_d_exports.PicklistSchema<readonly ["twitter", "discord"], undefined>;
7
- type SocialProvider = validation_d_exports.InferInput<typeof SocialProviderSchema>;
8
- declare const SocialVerificationMethodSchema: validation_d_exports.PicklistSchema<readonly ["profile", "channel", "dm"], undefined>;
9
- type SocialVerificationMethod = validation_d_exports.InferInput<typeof SocialVerificationMethodSchema>;
10
- declare const SocialVerificationStatusSchema: validation_d_exports.PicklistSchema<readonly ["pending_user_action", "queued", "in_progress", "verified", "failed", "expired", "cancelled"], undefined>;
11
- type SocialVerificationStatus = validation_d_exports.InferOutput<typeof SocialVerificationStatusSchema>;
12
- declare const SocialVerificationSchema: validation_d_exports.ObjectSchema<{
13
- readonly id: validation_d_exports.BigintSchema<undefined>;
14
- readonly provider: validation_d_exports.PicklistSchema<readonly ["twitter", "discord"], undefined>;
15
- readonly method: validation_d_exports.PicklistSchema<readonly ["profile", "channel", "dm"], undefined>;
16
- readonly handle: validation_d_exports.StringSchema<undefined>;
17
- readonly providerUserId: validation_d_exports.StringSchema<undefined>;
18
- readonly challengeCode: validation_d_exports.StringSchema<undefined>;
19
- readonly status: validation_d_exports.PicklistSchema<readonly ["pending_user_action", "queued", "in_progress", "verified", "failed", "expired", "cancelled"], undefined>;
20
- readonly requestedAt: validation_d_exports.OptionalSchema<validation_d_exports.ObjectSchema<{
21
- readonly seconds: validation_d_exports.BigintSchema<undefined>;
22
- readonly nanos: validation_d_exports.OptionalSchema<validation_d_exports.NumberSchema<undefined>, 0>;
6
+ declare const SocialProviderSchema: v.PicklistSchema<readonly ["twitter", "discord"], undefined>;
7
+ type SocialProvider = v.InferInput<typeof SocialProviderSchema>;
8
+ declare const SocialVerificationMethodSchema: v.PicklistSchema<readonly ["profile", "channel", "dm"], undefined>;
9
+ type SocialVerificationMethod = v.InferInput<typeof SocialVerificationMethodSchema>;
10
+ declare const SocialVerificationStatusSchema: v.PicklistSchema<readonly ["pending_user_action", "queued", "in_progress", "verified", "failed", "expired", "cancelled"], undefined>;
11
+ type SocialVerificationStatus = v.InferOutput<typeof SocialVerificationStatusSchema>;
12
+ declare const SocialVerificationSchema: v.ObjectSchema<{
13
+ readonly id: v.BigintSchema<undefined>;
14
+ readonly provider: v.PicklistSchema<readonly ["twitter", "discord"], undefined>;
15
+ readonly method: v.PicklistSchema<readonly ["profile", "channel", "dm"], undefined>;
16
+ readonly handle: v.StringSchema<undefined>;
17
+ readonly providerUserId: v.StringSchema<undefined>;
18
+ readonly challengeCode: v.StringSchema<undefined>;
19
+ readonly status: v.PicklistSchema<readonly ["pending_user_action", "queued", "in_progress", "verified", "failed", "expired", "cancelled"], undefined>;
20
+ readonly requestedAt: v.OptionalSchema<v.ObjectSchema<{
21
+ readonly seconds: v.BigintSchema<undefined>;
22
+ readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
23
23
  }, undefined>, undefined>;
24
- readonly expiresAt: validation_d_exports.OptionalSchema<validation_d_exports.ObjectSchema<{
25
- readonly seconds: validation_d_exports.BigintSchema<undefined>;
26
- readonly nanos: validation_d_exports.OptionalSchema<validation_d_exports.NumberSchema<undefined>, 0>;
24
+ readonly expiresAt: v.OptionalSchema<v.ObjectSchema<{
25
+ readonly seconds: v.BigintSchema<undefined>;
26
+ readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
27
27
  }, undefined>, undefined>;
28
- readonly verifiedAt: validation_d_exports.OptionalSchema<validation_d_exports.ObjectSchema<{
29
- readonly seconds: validation_d_exports.BigintSchema<undefined>;
30
- readonly nanos: validation_d_exports.OptionalSchema<validation_d_exports.NumberSchema<undefined>, 0>;
28
+ readonly verifiedAt: v.OptionalSchema<v.ObjectSchema<{
29
+ readonly seconds: v.BigintSchema<undefined>;
30
+ readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
31
31
  }, undefined>, undefined>;
32
- readonly attempts: validation_d_exports.NumberSchema<undefined>;
33
- readonly lastError: validation_d_exports.StringSchema<undefined>;
34
- readonly updatedAt: validation_d_exports.OptionalSchema<validation_d_exports.ObjectSchema<{
35
- readonly seconds: validation_d_exports.BigintSchema<undefined>;
36
- readonly nanos: validation_d_exports.OptionalSchema<validation_d_exports.NumberSchema<undefined>, 0>;
32
+ readonly attempts: v.NumberSchema<undefined>;
33
+ readonly lastError: v.StringSchema<undefined>;
34
+ readonly updatedAt: v.OptionalSchema<v.ObjectSchema<{
35
+ readonly seconds: v.BigintSchema<undefined>;
36
+ readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
37
37
  }, undefined>, undefined>;
38
38
  }, undefined>;
39
- type SocialVerificationBase = validation_d_exports.InferOutput<typeof SocialVerificationSchema>;
39
+ type SocialVerificationBase = v.InferOutput<typeof SocialVerificationSchema>;
40
40
  type SocialVerification = Omit<SocialVerificationBase, "provider" | "method" | "status"> & {
41
41
  provider: DecodedEnum<SocialProvider>;
42
42
  method: DecodedEnum<SocialVerificationMethod>;
43
43
  status: DecodedEnum<SocialVerificationStatus>;
44
44
  };
45
- declare const StartVerificationInputSchema: validation_d_exports.StrictObjectSchema<{
46
- readonly provider: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.PicklistSchema<readonly ["twitter", "discord"], undefined>, validation_d_exports.TransformAction<"twitter" | "discord", SocialProvider$1.TWITTER | SocialProvider$1.DISCORD>]>;
47
- readonly handle: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.StringSchema<undefined>, validation_d_exports.TransformAction<string, string>, validation_d_exports.MinLengthAction<string, 1, undefined>, validation_d_exports.MaxLengthAction<string, 64, undefined>]>;
48
- readonly method: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.OptionalSchema<validation_d_exports.PicklistSchema<readonly ["profile", "channel", "dm"], undefined>, "profile">, validation_d_exports.TransformAction<"profile" | "channel" | "dm", SocialVerificationMethod$1.METHOD_PROFILE | SocialVerificationMethod$1.METHOD_CHANNEL | SocialVerificationMethod$1.METHOD_DM>]>;
45
+ declare const StartVerificationInputSchema: v.StrictObjectSchema<{
46
+ readonly provider: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["twitter", "discord"], undefined>, v.TransformAction<"twitter" | "discord", SocialProvider$1.TWITTER | SocialProvider$1.DISCORD>]>;
47
+ readonly handle: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
48
+ readonly method: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["profile", "channel", "dm"], undefined>, "profile">, v.TransformAction<"profile" | "channel" | "dm", SocialVerificationMethod$1.METHOD_PROFILE | SocialVerificationMethod$1.METHOD_CHANNEL | SocialVerificationMethod$1.METHOD_DM>]>;
49
49
  }, undefined>;
50
- type StartVerificationInput = validation_d_exports.InferInput<typeof StartVerificationInputSchema>;
51
- declare const SocialProviderInputSchema: validation_d_exports.StrictObjectSchema<{
52
- readonly provider: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.PicklistSchema<readonly ["twitter", "discord"], undefined>, validation_d_exports.TransformAction<"twitter" | "discord", SocialProvider$1.TWITTER | SocialProvider$1.DISCORD>]>;
50
+ type StartVerificationInput = v.InferInput<typeof StartVerificationInputSchema>;
51
+ declare const SocialProviderInputSchema: v.StrictObjectSchema<{
52
+ readonly provider: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["twitter", "discord"], undefined>, v.TransformAction<"twitter" | "discord", SocialProvider$1.TWITTER | SocialProvider$1.DISCORD>]>;
53
53
  }, undefined>;
54
- type SocialProviderInput = validation_d_exports.InferInput<typeof SocialProviderInputSchema>;
55
- declare const StartVerificationResponseSchema: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.ObjectSchema<{
56
- readonly challengeCode: validation_d_exports.StringSchema<undefined>;
57
- readonly expiresAt: validation_d_exports.OptionalSchema<validation_d_exports.ObjectSchema<{
58
- readonly seconds: validation_d_exports.BigintSchema<undefined>;
59
- readonly nanos: validation_d_exports.OptionalSchema<validation_d_exports.NumberSchema<undefined>, 0>;
54
+ type SocialProviderInput = v.InferInput<typeof SocialProviderInputSchema>;
55
+ declare const StartVerificationResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
56
+ readonly challengeCode: v.StringSchema<undefined>;
57
+ readonly expiresAt: v.OptionalSchema<v.ObjectSchema<{
58
+ readonly seconds: v.BigintSchema<undefined>;
59
+ readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
60
60
  }, undefined>, undefined>;
61
- readonly verification: validation_d_exports.OptionalSchema<validation_d_exports.CustomSchema<SocialVerification$1, undefined>, undefined>;
62
- }, undefined>, validation_d_exports.TransformAction<{
61
+ readonly verification: v.OptionalSchema<v.CustomSchema<SocialVerification$1, undefined>, undefined>;
62
+ }, undefined>, v.TransformAction<{
63
63
  challengeCode: string;
64
64
  expiresAt?: {
65
65
  seconds: bigint;
@@ -74,23 +74,23 @@ declare const StartVerificationResponseSchema: validation_d_exports.SchemaWithPi
74
74
  } | undefined;
75
75
  verification: SocialVerification | undefined;
76
76
  }>]>;
77
- type StartVerificationResponse = validation_d_exports.InferOutput<typeof StartVerificationResponseSchema>;
78
- declare const VerificationReadyResponseSchema: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.ObjectSchema<{
79
- readonly verification: validation_d_exports.OptionalSchema<validation_d_exports.CustomSchema<SocialVerification$1, undefined>, undefined>;
80
- }, undefined>, validation_d_exports.TransformAction<{
77
+ type StartVerificationResponse = v.InferOutput<typeof StartVerificationResponseSchema>;
78
+ declare const VerificationReadyResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
79
+ readonly verification: v.OptionalSchema<v.CustomSchema<SocialVerification$1, undefined>, undefined>;
80
+ }, undefined>, v.TransformAction<{
81
81
  verification?: SocialVerification$1 | undefined;
82
82
  }, {
83
83
  verification: SocialVerification | undefined;
84
84
  }>]>;
85
- type VerificationReadyResponse = validation_d_exports.InferOutput<typeof VerificationReadyResponseSchema>;
86
- declare const GetVerificationResponseSchema: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.ObjectSchema<{
87
- readonly verification: validation_d_exports.OptionalSchema<validation_d_exports.CustomSchema<SocialVerification$1, undefined>, undefined>;
88
- }, undefined>, validation_d_exports.TransformAction<{
85
+ type VerificationReadyResponse = v.InferOutput<typeof VerificationReadyResponseSchema>;
86
+ declare const GetVerificationResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
87
+ readonly verification: v.OptionalSchema<v.CustomSchema<SocialVerification$1, undefined>, undefined>;
88
+ }, undefined>, v.TransformAction<{
89
89
  verification?: SocialVerification$1 | undefined;
90
90
  }, {
91
91
  verification: SocialVerification | undefined;
92
92
  }>]>;
93
- type GetVerificationResponse = validation_d_exports.InferOutput<typeof GetVerificationResponseSchema>;
93
+ type GetVerificationResponse = v.InferOutput<typeof GetVerificationResponseSchema>;
94
94
  //#endregion
95
95
  export { GetVerificationResponse, GetVerificationResponseSchema, SocialProvider, SocialProviderInput, SocialProviderInputSchema, SocialProviderSchema, SocialVerification, SocialVerificationMethod, SocialVerificationMethodSchema, SocialVerificationSchema, SocialVerificationStatus, SocialVerificationStatusSchema, StartVerificationInput, StartVerificationInputSchema, StartVerificationResponse, StartVerificationResponseSchema, VerificationReadyResponse, VerificationReadyResponseSchema };
96
96
  //# sourceMappingURL=social-verification.schemas.d.ts.map