@polyester/sdk 0.20.1 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +9 -9
  3. package/dist/environment.d.ts +2 -2
  4. package/dist/environment.d.ts.map +1 -1
  5. package/dist/environment.js +4 -4
  6. package/dist/environment.js.map +1 -1
  7. package/dist/gen/auth/v1/social_verification_pb.d.ts +12 -9
  8. package/dist/gen/auth/v1/social_verification_pb.d.ts.map +1 -1
  9. package/dist/gen/auth/v1/social_verification_pb.js.map +1 -1
  10. package/dist/gen/marketdata/v1/marketdata_pb.d.ts +20 -1
  11. package/dist/gen/marketdata/v1/marketdata_pb.d.ts.map +1 -1
  12. package/dist/gen/marketdata/v1/marketdata_pb.js +1 -1
  13. package/dist/gen/marketdata/v1/marketdata_pb.js.map +1 -1
  14. package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +138 -13
  15. package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
  16. package/dist/gen/marketoverview/v1/marketoverview_pb.js +23 -6
  17. package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
  18. package/dist/index.d.ts +3 -3
  19. package/dist/index.js +2 -2
  20. package/dist/services/candles/candles.schemas.d.ts +9 -0
  21. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  22. package/dist/services/candles/candles.schemas.js +6 -0
  23. package/dist/services/candles/candles.schemas.js.map +1 -1
  24. package/dist/services/deposit/deposit.schemas.d.ts +1 -1
  25. package/dist/services/deposit/deposit.schemas.js +1 -1
  26. package/dist/services/deposit/deposit.schemas.js.map +1 -1
  27. package/dist/services/fees/fees.schemas.d.ts +1 -1
  28. package/dist/services/fees/fees.schemas.js +1 -1
  29. package/dist/services/fees/fees.schemas.js.map +1 -1
  30. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +1 -1
  31. package/dist/services/internal-transfers/internal-transfers.schemas.js +1 -1
  32. package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
  33. package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
  34. package/dist/services/market-overview/index.d.ts +2 -2
  35. package/dist/services/market-overview/market-overview.codecs.js +2 -2
  36. package/dist/services/market-overview/market-overview.codecs.js.map +1 -1
  37. package/dist/services/market-overview/market-overview.d.ts +7 -1
  38. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  39. package/dist/services/market-overview/market-overview.js +11 -1
  40. package/dist/services/market-overview/market-overview.js.map +1 -1
  41. package/dist/services/market-overview/market-overview.schemas.d.ts +72 -12
  42. package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
  43. package/dist/services/market-overview/market-overview.schemas.js +30 -7
  44. package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
  45. package/dist/services/market-overview/market-overview.types.d.ts +2 -2
  46. package/dist/services/orders/orders-input.schemas.d.ts +1 -1
  47. package/dist/services/orders/orders-output.schemas.d.ts +6 -6
  48. package/dist/services/social-verification/social-verification.d.ts +1 -1
  49. package/dist/services/social-verification/social-verification.js +1 -1
  50. package/dist/services/social-verification/social-verification.js.map +1 -1
  51. package/dist/services/social-verification/social-verification.schemas.d.ts +17 -11
  52. package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
  53. package/dist/services/social-verification/social-verification.schemas.js +12 -5
  54. package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
  55. package/dist/services/subaccounts/subaccounts.schemas.d.ts +5 -5
  56. package/dist/services/triggers/trigger-input.schemas.d.ts +1 -1
  57. package/dist/services/triggers/triggers-output.schemas.d.ts +16 -16
  58. package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
  59. package/dist/services/triggers/triggers-output.schemas.js +1 -2
  60. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  61. package/dist/shared/validation.js.map +1 -1
  62. package/package.json +1 -1
@@ -10,19 +10,20 @@ type MarketOverviewSparkline = {
10
10
  interval: DecodedEnum<SparklineIntervalName>;
11
11
  close: string[];
12
12
  };
13
- declare const MarketOverviewOrderBySchema: v.PicklistSchema<readonly ["change_24h_bps", "volume_24h_quote", "last_price", "date_added"], undefined>;
13
+ declare const MarketOverviewOrderBySchema: v.PicklistSchema<readonly ["change_24h_bps", "volume_24h_usd", "last_price", "date_added"], undefined>;
14
14
  type MarketOverviewOrderBy = v.InferOutput<typeof MarketOverviewOrderBySchema>;
15
15
  declare const MarketOverviewSortSchema: v.PicklistSchema<readonly ["asc", "desc"], undefined>;
16
16
  type MarketOverviewSort = v.InferOutput<typeof MarketOverviewSortSchema>;
17
17
  declare function createMarketOverviewSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
18
- readonly symbolId: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>;
18
+ readonly symbolId: v.NumberSchema<undefined>;
19
19
  readonly lastPriceTicks: v.BigintSchema<undefined>;
20
20
  readonly lastTradeTsNs: v.OptionalSchema<v.BigintSchema<undefined>, 0n>;
21
21
  readonly change24hBps: v.NumberSchema<undefined>;
22
22
  readonly high24hTicks: v.BigintSchema<undefined>;
23
23
  readonly low24hTicks: v.BigintSchema<undefined>;
24
- readonly volume24hBaseScaled: v.BigintSchema<undefined>;
25
- readonly volume24hQuoteScaled: v.BigintSchema<undefined>;
24
+ readonly volume24hBaseScaled: v.OptionalSchema<v.BigintSchema<undefined>, undefined>;
25
+ readonly volume24hQuoteScaled: v.OptionalSchema<v.BigintSchema<undefined>, undefined>;
26
+ readonly volume24hUsdScaled: v.OptionalSchema<v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>, undefined>;
26
27
  readonly listedTsNs: v.OptionalSchema<v.BigintSchema<undefined>, 0n>;
27
28
  readonly bestBidTicks: v.BigintSchema<undefined>;
28
29
  readonly bestBidQtyScaled: v.BigintSchema<undefined>;
@@ -40,8 +41,9 @@ declare function createMarketOverviewSchema(scales: SdkScales): v.SchemaWithPipe
40
41
  change24hBps: number;
41
42
  high24hTicks: bigint;
42
43
  low24hTicks: bigint;
43
- volume24hBaseScaled: bigint;
44
- volume24hQuoteScaled: bigint;
44
+ volume24hBaseScaled?: bigint | undefined;
45
+ volume24hQuoteScaled?: bigint | undefined;
46
+ volume24hUsdScaled?: string | undefined;
45
47
  listedTsNs: bigint;
46
48
  bestBidTicks: bigint;
47
49
  bestBidQtyScaled: bigint;
@@ -59,8 +61,9 @@ declare function createMarketOverviewSchema(scales: SdkScales): v.SchemaWithPipe
59
61
  change24hBps: number;
60
62
  high24h: string;
61
63
  low24h: string;
62
- volume24hBase: string;
63
- volume24hQuote: string;
64
+ volume24hBase: string | undefined;
65
+ volume24hQuote: string | undefined;
66
+ volume24hUsd: string | undefined;
64
67
  listedTsMs: number;
65
68
  bestBid: string;
66
69
  bestBidQty: string;
@@ -74,7 +77,7 @@ declare const ListMarketOverviewInputSchema: v.SchemaWithPipe<readonly [v.Strict
74
77
  readonly symbolIds: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>, readonly []>;
75
78
  readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, 500>;
76
79
  readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, "">;
77
- readonly orderBy: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["change_24h_bps", "volume_24h_quote", "last_price", "date_added"], undefined>, "volume_24h_quote">, v.TransformAction<"change_24h_bps" | "volume_24h_quote" | "last_price" | "date_added", MarketOrderBy.ORDER_BY_CHANGE_24H_BPS | MarketOrderBy.ORDER_BY_VOLUME_24H_QUOTE | MarketOrderBy.ORDER_BY_LAST_PRICE | MarketOrderBy.ORDER_BY_DATE_ADDED>]>;
80
+ readonly orderBy: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["change_24h_bps", "volume_24h_usd", "last_price", "date_added"], undefined>, "volume_24h_usd">, v.TransformAction<"change_24h_bps" | "volume_24h_usd" | "last_price" | "date_added", MarketOrderBy.ORDER_BY_CHANGE_24H_BPS | MarketOrderBy.ORDER_BY_VOLUME_24H_USD | MarketOrderBy.ORDER_BY_LAST_PRICE | MarketOrderBy.ORDER_BY_DATE_ADDED>]>;
78
81
  readonly sort: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["asc", "desc"], undefined>, "desc">, v.TransformAction<"asc" | "desc", SortDirection.SORT_ASC | SortDirection.SORT_DESC>]>;
79
82
  readonly includeSparklines: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
80
83
  readonly sparklineIntervals: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["1h", "24h", "1w", "1m"], undefined>, undefined>, readonly ["24h"]>, v.TransformAction<("1h" | "24h" | "1w" | "1m")[], (SparklineInterval.SPARKLINE_1H | SparklineInterval.SPARKLINE_24H | SparklineInterval.SPARKLINE_1W | SparklineInterval.SPARKLINE_1M)[]>]>;
@@ -82,20 +85,77 @@ declare const ListMarketOverviewInputSchema: v.SchemaWithPipe<readonly [v.Strict
82
85
  symbolIds: number[];
83
86
  limit: number;
84
87
  pageToken: string;
85
- orderBy: MarketOrderBy.ORDER_BY_CHANGE_24H_BPS | MarketOrderBy.ORDER_BY_VOLUME_24H_QUOTE | MarketOrderBy.ORDER_BY_LAST_PRICE | MarketOrderBy.ORDER_BY_DATE_ADDED;
88
+ orderBy: MarketOrderBy.ORDER_BY_CHANGE_24H_BPS | MarketOrderBy.ORDER_BY_VOLUME_24H_USD | MarketOrderBy.ORDER_BY_LAST_PRICE | MarketOrderBy.ORDER_BY_DATE_ADDED;
86
89
  sort: SortDirection.SORT_ASC | SortDirection.SORT_DESC;
87
90
  includeSparklines: boolean;
88
91
  sparklineIntervals: (SparklineInterval.SPARKLINE_1H | SparklineInterval.SPARKLINE_24H | SparklineInterval.SPARKLINE_1W | SparklineInterval.SPARKLINE_1M)[];
89
92
  }, {
90
93
  limit: number;
91
94
  pageToken: string;
92
- orderBy: MarketOrderBy.ORDER_BY_CHANGE_24H_BPS | MarketOrderBy.ORDER_BY_VOLUME_24H_QUOTE | MarketOrderBy.ORDER_BY_LAST_PRICE | MarketOrderBy.ORDER_BY_DATE_ADDED;
95
+ orderBy: MarketOrderBy.ORDER_BY_CHANGE_24H_BPS | MarketOrderBy.ORDER_BY_VOLUME_24H_USD | MarketOrderBy.ORDER_BY_LAST_PRICE | MarketOrderBy.ORDER_BY_DATE_ADDED;
93
96
  sort: SortDirection.SORT_ASC | SortDirection.SORT_DESC;
94
97
  includeSparklines: boolean;
95
98
  sparklineIntervals: (SparklineInterval.SPARKLINE_1H | SparklineInterval.SPARKLINE_24H | SparklineInterval.SPARKLINE_1W | SparklineInterval.SPARKLINE_1M)[];
96
99
  symbolId: number[];
97
100
  }>]>;
98
101
  type ListMarketOverviewInput = v.InferInput<typeof ListMarketOverviewInputSchema>;
102
+ declare const SpotVolumeHistoryInputSchema: v.SchemaWithPipe<readonly [v.StrictObjectSchema<{
103
+ readonly symbolIds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>, v.TransformAction<number[], number[]>, v.MaxLengthAction<number[], 2000, undefined>]>, readonly []>;
104
+ }, undefined>, v.TransformAction<{
105
+ symbolIds: number[];
106
+ }, {
107
+ symbolId: number[];
108
+ }>]>;
109
+ type SpotVolumeHistoryInput = v.InferInput<typeof SpotVolumeHistoryInputSchema>;
110
+ declare const SpotPairVolumeSeriesSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
111
+ readonly symbolId: v.NumberSchema<undefined>;
112
+ readonly volumeUsdScaled: v.ArraySchema<v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>, undefined>;
113
+ }, undefined>, v.TransformAction<{
114
+ symbolId: number;
115
+ volumeUsdScaled: string[];
116
+ }, {
117
+ symbolId: number;
118
+ volumeUsd: string[];
119
+ }>]>;
120
+ type SpotPairVolumeSeries = v.InferOutput<typeof SpotPairVolumeSeriesSchema>;
121
+ declare const SpotVolumeHistoryResponseSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
122
+ readonly bucket: v.StringSchema<undefined>;
123
+ readonly startTsSec: v.NumberSchema<undefined>;
124
+ readonly endTsSec: v.NumberSchema<undefined>;
125
+ readonly points: v.NumberSchema<undefined>;
126
+ readonly pairs: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
127
+ readonly symbolId: v.NumberSchema<undefined>;
128
+ readonly volumeUsdScaled: v.ArraySchema<v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>, undefined>;
129
+ }, undefined>, v.TransformAction<{
130
+ symbolId: number;
131
+ volumeUsdScaled: string[];
132
+ }, {
133
+ symbolId: number;
134
+ volumeUsd: string[];
135
+ }>]>, undefined>;
136
+ readonly totalVolumeUsdScaled: v.ArraySchema<v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>, undefined>;
137
+ }, undefined>, v.TransformAction<{
138
+ bucket: string;
139
+ startTsSec: number;
140
+ endTsSec: number;
141
+ points: number;
142
+ pairs: {
143
+ symbolId: number;
144
+ volumeUsd: string[];
145
+ }[];
146
+ totalVolumeUsdScaled: string[];
147
+ }, {
148
+ totalVolumeUsd: string[];
149
+ bucket: string;
150
+ startTsSec: number;
151
+ endTsSec: number;
152
+ points: number;
153
+ pairs: {
154
+ symbolId: number;
155
+ volumeUsd: string[];
156
+ }[];
157
+ }>]>;
158
+ type SpotVolumeHistoryResponse = v.InferOutput<typeof SpotVolumeHistoryResponseSchema>;
99
159
  //#endregion
100
- export { ListMarketOverviewInput, ListMarketOverviewInputSchema, MarketOverview, MarketOverviewOrderBy, MarketOverviewOrderBySchema, MarketOverviewSort, MarketOverviewSortSchema, MarketOverviewSparkline, SparklineIntervalName, SparklineIntervalSchema, createMarketOverviewSchema };
160
+ export { ListMarketOverviewInput, ListMarketOverviewInputSchema, MarketOverview, MarketOverviewOrderBy, MarketOverviewOrderBySchema, MarketOverviewSort, MarketOverviewSortSchema, MarketOverviewSparkline, SparklineIntervalName, SparklineIntervalSchema, SpotPairVolumeSeries, SpotPairVolumeSeriesSchema, SpotVolumeHistoryInput, SpotVolumeHistoryInputSchema, SpotVolumeHistoryResponse, SpotVolumeHistoryResponseSchema, createMarketOverviewSchema };
101
161
  //# sourceMappingURL=market-overview.schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"market-overview.schemas.d.ts","names":[],"sources":["../../../src/services/market-overview/market-overview.schemas.ts"],"mappings":";;;;;;cA4Ba,yBAAuB,EAAA;KAExB,wBAAwB,EAAE,mBAAmB;KAiB7C;EACR,UAAU,YAAY;EACtB;;cAGS,6BAA2B,EAAA;KAE5B,wBAAwB,EAAE,mBAAmB;cAE5C,0BAAwB,EAAA;KAEzB,qBAAqB,EAAE,mBAAmB;iBAoBtC,2BAA2B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsChD,iBAAiB,EAAE,YAAY,kBAAkB;cAqChD,+BAA6B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;KAwB9B,0BAA0B,EAAE,kBAAkB"}
1
+ {"version":3,"file":"market-overview.schemas.d.ts","names":[],"sources":["../../../src/services/market-overview/market-overview.schemas.ts"],"mappings":";;;;;;cA4Ba,yBAAuB,EAAA;KAExB,wBAAwB,EAAE,mBAAmB;KAiB7C;EACR,UAAU,YAAY;EACtB;;cAGS,6BAA2B,EAAA;KAE5B,wBAAwB,EAAE,mBAAmB;cAE5C,0BAAwB,EAAA;KAEzB,qBAAqB,EAAE,mBAAmB;iBA2BtC,2BAA2B,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6ChD,iBAAiB,EAAE,YAAY,kBAAkB;cAqChD,+BAA6B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;KAwB9B,0BAA0B,EAAE,kBAAkB;cAE7C,8BAA4B,EAAA,yBAAA,EAAA;;;;;;;KAa7B,yBAAyB,EAAE,kBAAkB;cAE5C,4BAA0B,EAAA,yBAAA,EAAA;;;;;;;;;;KAI3B,uBAAuB,EAAE,mBAAmB;cAE3C,iCAA+B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAchC,4BAA4B,EAAE,mBAAmB"}
@@ -13,15 +13,18 @@ const MarketOverviewSparklineRawSchema = v.object({
13
13
  });
14
14
  const MarketOverviewOrderBySchema = v.picklist(MARKET_OVERVIEW_ORDER_BY_VALUES);
15
15
  const MarketOverviewSortSchema = v.picklist(MARKET_OVERVIEW_SORT_VALUES);
16
+ /** USD amounts are always scaled by 1e6 on the wire. */
17
+ const UsdVolumeSchema = v.pipe(v.bigint(), v.transform((value) => scaledToDecimalOutput(value, 6)));
16
18
  const MarketOverviewRawSchema = v.object({
17
- symbolId: SymbolIdInputSchema,
19
+ symbolId: v.number(),
18
20
  lastPriceTicks: v.bigint(),
19
21
  lastTradeTsNs: v.optional(v.bigint(), 0n),
20
22
  change24hBps: v.number(),
21
23
  high24hTicks: v.bigint(),
22
24
  low24hTicks: v.bigint(),
23
- volume24hBaseScaled: v.bigint(),
24
- volume24hQuoteScaled: v.bigint(),
25
+ volume24hBaseScaled: v.optional(v.bigint()),
26
+ volume24hQuoteScaled: v.optional(v.bigint()),
27
+ volume24hUsdScaled: v.optional(UsdVolumeSchema),
25
28
  listedTsNs: v.optional(v.bigint(), 0n),
26
29
  bestBidTicks: v.bigint(),
27
30
  bestBidQtyScaled: v.bigint(),
@@ -42,8 +45,9 @@ function createMarketOverviewSchema(scales) {
42
45
  change24hBps: m.change24hBps,
43
46
  high24h: scaledToDecimalOutput(m.high24hTicks, priceScale),
44
47
  low24h: scaledToDecimalOutput(m.low24hTicks, priceScale),
45
- volume24hBase: scaledToDecimalOutput(m.volume24hBaseScaled, baseQtyScale),
46
- volume24hQuote: scaledToDecimalOutput(m.volume24hQuoteScaled, quoteAmountScale),
48
+ volume24hBase: m.volume24hBaseScaled === void 0 ? void 0 : scaledToDecimalOutput(m.volume24hBaseScaled, baseQtyScale),
49
+ volume24hQuote: m.volume24hQuoteScaled === void 0 ? void 0 : scaledToDecimalOutput(m.volume24hQuoteScaled, quoteAmountScale),
50
+ volume24hUsd: m.volume24hUsdScaled,
47
51
  listedTsMs: tsNsToMs(m.listedTsNs),
48
52
  bestBid: scaledToDecimalOutput(m.bestBidTicks, priceScale),
49
53
  bestBidQty: scaledToDecimalOutput(m.bestBidQtyScaled, baseQtyScale),
@@ -61,7 +65,7 @@ const ListMarketOverviewInputSchema = v.pipe(v.strictObject({
61
65
  symbolIds: v.optional(v.array(SymbolIdInputSchema), []),
62
66
  limit: v.optional(PositiveUint32InputSchema, 500),
63
67
  pageToken: v.optional(v.pipe(v.string(), v.trim()), ""),
64
- orderBy: v.pipe(v.optional(MarketOverviewOrderBySchema, "volume_24h_quote"), v.transform((v) => MarketOverviewOrderByCodec.inputToProto[v ?? "volume_24h_quote"])),
68
+ orderBy: v.pipe(v.optional(MarketOverviewOrderBySchema, "volume_24h_usd"), v.transform((v) => MarketOverviewOrderByCodec.inputToProto[v ?? "volume_24h_usd"])),
65
69
  sort: v.pipe(v.optional(MarketOverviewSortSchema, "desc"), v.transform((v) => MarketOverviewSortCodec.inputToProto[v ?? "desc"])),
66
70
  includeSparklines: v.optional(v.boolean(), true),
67
71
  sparklineIntervals: v.pipe(v.optional(v.array(SparklineIntervalSchema), ["24h"]), v.transform((intervals) => (intervals ?? ["24h"]).map((v) => SparklineIntervalCodec.inputToProto[v])))
@@ -69,7 +73,26 @@ const ListMarketOverviewInputSchema = v.pipe(v.strictObject({
69
73
  symbolId: symbolIds,
70
74
  ...input
71
75
  })));
76
+ const SpotVolumeHistoryInputSchema = v.pipe(v.strictObject({ symbolIds: v.optional(v.pipe(v.array(SymbolIdInputSchema), v.transform((ids) => [...new Set(ids)]), v.maxLength(2e3)), []) }), v.transform(({ symbolIds }) => ({ symbolId: symbolIds })));
77
+ const SpotPairVolumeSeriesSchema = v.pipe(v.object({
78
+ symbolId: v.number(),
79
+ volumeUsdScaled: v.array(UsdVolumeSchema)
80
+ }), v.transform(({ symbolId, volumeUsdScaled }) => ({
81
+ symbolId,
82
+ volumeUsd: volumeUsdScaled
83
+ })));
84
+ const SpotVolumeHistoryResponseSchema = v.pipe(v.object({
85
+ bucket: v.string(),
86
+ startTsSec: v.number(),
87
+ endTsSec: v.number(),
88
+ points: v.number(),
89
+ pairs: v.array(SpotPairVolumeSeriesSchema),
90
+ totalVolumeUsdScaled: v.array(UsdVolumeSchema)
91
+ }), v.transform(({ totalVolumeUsdScaled, ...response }) => ({
92
+ ...response,
93
+ totalVolumeUsd: totalVolumeUsdScaled
94
+ })));
72
95
  //#endregion
73
- export { ListMarketOverviewInputSchema, MarketOverviewOrderBySchema, MarketOverviewSortSchema, SparklineIntervalSchema, createMarketOverviewSchema };
96
+ export { ListMarketOverviewInputSchema, MarketOverviewOrderBySchema, MarketOverviewSortSchema, SparklineIntervalSchema, SpotPairVolumeSeriesSchema, SpotVolumeHistoryInputSchema, SpotVolumeHistoryResponseSchema, createMarketOverviewSchema };
74
97
 
75
98
  //# sourceMappingURL=market-overview.schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"market-overview.schemas.js","names":["Proto.SparklineInterval"],"sources":["../../../src/services/market-overview/market-overview.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/marketoverview/v1/marketoverview_pb.js\";\nimport * as v from \"valibot\";\nimport { tsNsToMs } from \"../../utils/time.js\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { PositiveUint32InputSchema, SymbolIdInputSchema } from \"../shared.js\";\nimport {\n SPARKLINE_INTERVAL_VALUES,\n MARKET_OVERVIEW_ORDER_BY_VALUES,\n MARKET_OVERVIEW_SORT_VALUES,\n SparklineIntervalCodec,\n MarketOverviewOrderByCodec,\n MarketOverviewSortCodec,\n} from \"./market-overview.codecs.js\";\n\nexport {\n SPARKLINE_INTERVAL_VALUES,\n MARKET_OVERVIEW_ORDER_BY_VALUES,\n MARKET_OVERVIEW_SORT_VALUES,\n} from \"./market-overview.codecs.js\";\n\nexport {\n MarketOrderBy,\n SortDirection,\n SparklineInterval,\n} from \"../../gen/marketoverview/v1/marketoverview_pb.js\";\n\nexport const SparklineIntervalSchema = v.picklist(SPARKLINE_INTERVAL_VALUES);\n\nexport type SparklineIntervalName = v.InferOutput<typeof SparklineIntervalSchema>;\n\nconst MarketOverviewSparklineRawSchema = v.object({\n interval: v.pipe(\n v.enum(Proto.SparklineInterval),\n v.transform((value) =>\n requiredEnumLabel(\n SparklineIntervalCodec.protoToOutput,\n value,\n \"MarketOverviewSparklineSchema\",\n \"interval\",\n ),\n ),\n ),\n closeTicks: v.array(v.bigint()),\n});\n\nexport type MarketOverviewSparkline = {\n interval: DecodedEnum<SparklineIntervalName>;\n close: string[];\n};\n\nexport const MarketOverviewOrderBySchema = v.picklist(MARKET_OVERVIEW_ORDER_BY_VALUES);\n\nexport type MarketOverviewOrderBy = v.InferOutput<typeof MarketOverviewOrderBySchema>;\n\nexport const MarketOverviewSortSchema = v.picklist(MARKET_OVERVIEW_SORT_VALUES);\n\nexport type MarketOverviewSort = v.InferOutput<typeof MarketOverviewSortSchema>;\n\nconst MarketOverviewRawSchema = v.object({\n symbolId: SymbolIdInputSchema,\n lastPriceTicks: v.bigint(),\n lastTradeTsNs: v.optional(v.bigint(), 0n),\n change24hBps: v.number(),\n high24hTicks: v.bigint(),\n low24hTicks: v.bigint(),\n volume24hBaseScaled: v.bigint(),\n volume24hQuoteScaled: v.bigint(),\n listedTsNs: v.optional(v.bigint(), 0n),\n bestBidTicks: v.bigint(),\n bestBidQtyScaled: v.bigint(),\n bestAskTicks: v.bigint(),\n bestAskQtyScaled: v.bigint(),\n sparklines: v.optional(v.array(MarketOverviewSparklineRawSchema), []),\n indexPriceTicks: v.bigint(),\n});\n\nexport function createMarketOverviewSchema(scales: SdkScales) {\n return v.pipe(\n MarketOverviewRawSchema,\n v.transform((m) => {\n const priceScale = scales.price();\n const baseQtyScale = scales.baseQty(m.symbolId);\n const quoteAmountScale = scales.quoteAmount(m.symbolId);\n return {\n symbolId: m.symbolId,\n lastPrice: scaledToDecimalOutput(m.lastPriceTicks, priceScale),\n lastTradeTsMs: tsNsToMs(m.lastTradeTsNs),\n change24hBps: m.change24hBps,\n high24h: scaledToDecimalOutput(m.high24hTicks, priceScale),\n low24h: scaledToDecimalOutput(m.low24hTicks, priceScale),\n volume24hBase: scaledToDecimalOutput(m.volume24hBaseScaled, baseQtyScale),\n volume24hQuote: scaledToDecimalOutput(m.volume24hQuoteScaled, quoteAmountScale),\n listedTsMs: tsNsToMs(m.listedTsNs),\n bestBid: scaledToDecimalOutput(m.bestBidTicks, priceScale),\n bestBidQty: scaledToDecimalOutput(m.bestBidQtyScaled, baseQtyScale),\n bestAsk: scaledToDecimalOutput(m.bestAskTicks, priceScale),\n bestAskQty: scaledToDecimalOutput(m.bestAskQtyScaled, baseQtyScale),\n indexPrice:\n m.indexPriceTicks > 0n\n ? scaledToDecimalOutput(m.indexPriceTicks, priceScale)\n : undefined,\n sparklines: (m.sparklines ?? []).map(\n (s): MarketOverviewSparkline => ({\n interval: s.interval,\n close: s.closeTicks\n .map((tick) => scaledToDecimalOutput(tick, priceScale))\n .reverse(),\n }),\n ),\n };\n }),\n );\n}\n\nexport type MarketOverview = v.InferOutput<ReturnType<typeof createMarketOverviewSchema>>;\n\nconst MS_PER_24H = 86_400_000;\n\nfunction change24hBpsFromSparklineFirstLast(sparklines: MarketOverview[\"sparklines\"]): number {\n const s = sparklines.find((e) => e.interval === \"24h\") ?? sparklines[0];\n if (!s || s.close.length < 2) return 0;\n const first = Number(s.close[0] ?? 0);\n const last = Number(s.close.at(-1) ?? 0);\n if (!Number.isFinite(first) || !Number.isFinite(last)) return 0;\n if (first === 0) return 0;\n return Math.round(((last - first) / first) * 10_000);\n}\n\n/**\n * Formats the 24-hour market change percentage for display.\n */\nexport function getMarketOverview24hChangeDisplay(\n market: Pick<MarketOverview, \"change24hBps\" | \"listedTsMs\" | \"sparklines\">,\n nowMs: number = Date.now(),\n): { change24hBps: number; showNewListingSparklineInfo: boolean } {\n const api = market.change24hBps;\n const newish = api === 0 && market.listedTsMs > 0 && nowMs - market.listedTsMs < MS_PER_24H;\n if (!newish) {\n return { change24hBps: api, showNewListingSparklineInfo: false };\n }\n return {\n change24hBps: change24hBpsFromSparklineFirstLast(market.sparklines),\n showNewListingSparklineInfo: true,\n };\n}\n\nexport type MarketOverviewBatch = {\n markets: MarketOverview[];\n tsNs: bigint;\n};\n\nexport const ListMarketOverviewInputSchema = v.pipe(\n v.strictObject({\n symbolIds: v.optional(v.array(SymbolIdInputSchema), []),\n limit: v.optional(PositiveUint32InputSchema, 500),\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n orderBy: v.pipe(\n v.optional(MarketOverviewOrderBySchema, \"volume_24h_quote\"),\n v.transform((v) => MarketOverviewOrderByCodec.inputToProto[v ?? \"volume_24h_quote\"]),\n ),\n sort: v.pipe(\n v.optional(MarketOverviewSortSchema, \"desc\"),\n v.transform((v) => MarketOverviewSortCodec.inputToProto[v ?? \"desc\"]),\n ),\n includeSparklines: v.optional(v.boolean(), true),\n sparklineIntervals: v.pipe(\n v.optional(v.array(SparklineIntervalSchema), [\"24h\"]),\n v.transform((intervals) =>\n (intervals ?? [\"24h\"]).map((v) => SparklineIntervalCodec.inputToProto[v]),\n ),\n ),\n }),\n v.transform(({ symbolIds, ...input }) => ({ symbolId: symbolIds, ...input })),\n);\n\nexport type ListMarketOverviewInput = v.InferInput<typeof ListMarketOverviewInputSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"market-overview.schemas.js","names":["Proto.SparklineInterval"],"sources":["../../../src/services/market-overview/market-overview.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/marketoverview/v1/marketoverview_pb.js\";\nimport * as v from \"valibot\";\nimport { tsNsToMs } from \"../../utils/time.js\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { PositiveUint32InputSchema, SymbolIdInputSchema } from \"../shared.js\";\nimport {\n SPARKLINE_INTERVAL_VALUES,\n MARKET_OVERVIEW_ORDER_BY_VALUES,\n MARKET_OVERVIEW_SORT_VALUES,\n SparklineIntervalCodec,\n MarketOverviewOrderByCodec,\n MarketOverviewSortCodec,\n} from \"./market-overview.codecs.js\";\n\nexport {\n SPARKLINE_INTERVAL_VALUES,\n MARKET_OVERVIEW_ORDER_BY_VALUES,\n MARKET_OVERVIEW_SORT_VALUES,\n} from \"./market-overview.codecs.js\";\n\nexport {\n MarketOrderBy,\n SortDirection,\n SparklineInterval,\n} from \"../../gen/marketoverview/v1/marketoverview_pb.js\";\n\nexport const SparklineIntervalSchema = v.picklist(SPARKLINE_INTERVAL_VALUES);\n\nexport type SparklineIntervalName = v.InferOutput<typeof SparklineIntervalSchema>;\n\nconst MarketOverviewSparklineRawSchema = v.object({\n interval: v.pipe(\n v.enum(Proto.SparklineInterval),\n v.transform((value) =>\n requiredEnumLabel(\n SparklineIntervalCodec.protoToOutput,\n value,\n \"MarketOverviewSparklineSchema\",\n \"interval\",\n ),\n ),\n ),\n closeTicks: v.array(v.bigint()),\n});\n\nexport type MarketOverviewSparkline = {\n interval: DecodedEnum<SparklineIntervalName>;\n close: string[];\n};\n\nexport const MarketOverviewOrderBySchema = v.picklist(MARKET_OVERVIEW_ORDER_BY_VALUES);\n\nexport type MarketOverviewOrderBy = v.InferOutput<typeof MarketOverviewOrderBySchema>;\n\nexport const MarketOverviewSortSchema = v.picklist(MARKET_OVERVIEW_SORT_VALUES);\n\nexport type MarketOverviewSort = v.InferOutput<typeof MarketOverviewSortSchema>;\n\n/** USD amounts are always scaled by 1e6 on the wire. */\nconst UsdVolumeSchema = v.pipe(\n v.bigint(),\n v.transform((value) => scaledToDecimalOutput(value, 6)),\n);\n\nconst MarketOverviewRawSchema = v.object({\n symbolId: v.number(),\n lastPriceTicks: v.bigint(),\n lastTradeTsNs: v.optional(v.bigint(), 0n),\n change24hBps: v.number(),\n high24hTicks: v.bigint(),\n low24hTicks: v.bigint(),\n volume24hBaseScaled: v.optional(v.bigint()),\n volume24hQuoteScaled: v.optional(v.bigint()),\n volume24hUsdScaled: v.optional(UsdVolumeSchema),\n listedTsNs: v.optional(v.bigint(), 0n),\n bestBidTicks: v.bigint(),\n bestBidQtyScaled: v.bigint(),\n bestAskTicks: v.bigint(),\n bestAskQtyScaled: v.bigint(),\n sparklines: v.optional(v.array(MarketOverviewSparklineRawSchema), []),\n indexPriceTicks: v.bigint(),\n});\n\nexport function createMarketOverviewSchema(scales: SdkScales) {\n return v.pipe(\n MarketOverviewRawSchema,\n v.transform((m) => {\n const priceScale = scales.price();\n const baseQtyScale = scales.baseQty(m.symbolId);\n const quoteAmountScale = scales.quoteAmount(m.symbolId);\n return {\n symbolId: m.symbolId,\n lastPrice: scaledToDecimalOutput(m.lastPriceTicks, priceScale),\n lastTradeTsMs: tsNsToMs(m.lastTradeTsNs),\n change24hBps: m.change24hBps,\n high24h: scaledToDecimalOutput(m.high24hTicks, priceScale),\n low24h: scaledToDecimalOutput(m.low24hTicks, priceScale),\n volume24hBase:\n m.volume24hBaseScaled === undefined\n ? undefined\n : scaledToDecimalOutput(m.volume24hBaseScaled, baseQtyScale),\n volume24hQuote:\n m.volume24hQuoteScaled === undefined\n ? undefined\n : scaledToDecimalOutput(m.volume24hQuoteScaled, quoteAmountScale),\n volume24hUsd: m.volume24hUsdScaled,\n listedTsMs: tsNsToMs(m.listedTsNs),\n bestBid: scaledToDecimalOutput(m.bestBidTicks, priceScale),\n bestBidQty: scaledToDecimalOutput(m.bestBidQtyScaled, baseQtyScale),\n bestAsk: scaledToDecimalOutput(m.bestAskTicks, priceScale),\n bestAskQty: scaledToDecimalOutput(m.bestAskQtyScaled, baseQtyScale),\n indexPrice:\n m.indexPriceTicks > 0n\n ? scaledToDecimalOutput(m.indexPriceTicks, priceScale)\n : undefined,\n sparklines: (m.sparklines ?? []).map(\n (s): MarketOverviewSparkline => ({\n interval: s.interval,\n close: s.closeTicks\n .map((tick) => scaledToDecimalOutput(tick, priceScale))\n .reverse(),\n }),\n ),\n };\n }),\n );\n}\n\nexport type MarketOverview = v.InferOutput<ReturnType<typeof createMarketOverviewSchema>>;\n\nconst MS_PER_24H = 86_400_000;\n\nfunction change24hBpsFromSparklineFirstLast(sparklines: MarketOverview[\"sparklines\"]): number {\n const s = sparklines.find((e) => e.interval === \"24h\") ?? sparklines[0];\n if (!s || s.close.length < 2) return 0;\n const first = Number(s.close[0] ?? 0);\n const last = Number(s.close.at(-1) ?? 0);\n if (!Number.isFinite(first) || !Number.isFinite(last)) return 0;\n if (first === 0) return 0;\n return Math.round(((last - first) / first) * 10_000);\n}\n\n/**\n * Formats the 24-hour market change percentage for display.\n */\nexport function getMarketOverview24hChangeDisplay(\n market: Pick<MarketOverview, \"change24hBps\" | \"listedTsMs\" | \"sparklines\">,\n nowMs: number = Date.now(),\n): { change24hBps: number; showNewListingSparklineInfo: boolean } {\n const api = market.change24hBps;\n const newish = api === 0 && market.listedTsMs > 0 && nowMs - market.listedTsMs < MS_PER_24H;\n if (!newish) {\n return { change24hBps: api, showNewListingSparklineInfo: false };\n }\n return {\n change24hBps: change24hBpsFromSparklineFirstLast(market.sparklines),\n showNewListingSparklineInfo: true,\n };\n}\n\nexport type MarketOverviewBatch = {\n markets: MarketOverview[];\n tsNs: bigint;\n};\n\nexport const ListMarketOverviewInputSchema = v.pipe(\n v.strictObject({\n symbolIds: v.optional(v.array(SymbolIdInputSchema), []),\n limit: v.optional(PositiveUint32InputSchema, 500),\n pageToken: v.optional(v.pipe(v.string(), v.trim()), \"\"),\n orderBy: v.pipe(\n v.optional(MarketOverviewOrderBySchema, \"volume_24h_usd\"),\n v.transform((v) => MarketOverviewOrderByCodec.inputToProto[v ?? \"volume_24h_usd\"]),\n ),\n sort: v.pipe(\n v.optional(MarketOverviewSortSchema, \"desc\"),\n v.transform((v) => MarketOverviewSortCodec.inputToProto[v ?? \"desc\"]),\n ),\n includeSparklines: v.optional(v.boolean(), true),\n sparklineIntervals: v.pipe(\n v.optional(v.array(SparklineIntervalSchema), [\"24h\"]),\n v.transform((intervals) =>\n (intervals ?? [\"24h\"]).map((v) => SparklineIntervalCodec.inputToProto[v]),\n ),\n ),\n }),\n v.transform(({ symbolIds, ...input }) => ({ symbolId: symbolIds, ...input })),\n);\n\nexport type ListMarketOverviewInput = v.InferInput<typeof ListMarketOverviewInputSchema>;\n\nexport const SpotVolumeHistoryInputSchema = v.pipe(\n v.strictObject({\n symbolIds: v.optional(\n v.pipe(\n v.array(SymbolIdInputSchema),\n v.transform((ids) => [...new Set(ids)]),\n v.maxLength(2000),\n ),\n [],\n ),\n }),\n v.transform(({ symbolIds }) => ({ symbolId: symbolIds })),\n);\nexport type SpotVolumeHistoryInput = v.InferInput<typeof SpotVolumeHistoryInputSchema>;\n\nexport const SpotPairVolumeSeriesSchema = v.pipe(\n v.object({ symbolId: v.number(), volumeUsdScaled: v.array(UsdVolumeSchema) }),\n v.transform(({ symbolId, volumeUsdScaled }) => ({ symbolId, volumeUsd: volumeUsdScaled })),\n);\nexport type SpotPairVolumeSeries = v.InferOutput<typeof SpotPairVolumeSeriesSchema>;\n\nexport const SpotVolumeHistoryResponseSchema = v.pipe(\n v.object({\n bucket: v.string(),\n startTsSec: v.number(),\n endTsSec: v.number(),\n points: v.number(),\n pairs: v.array(SpotPairVolumeSeriesSchema),\n totalVolumeUsdScaled: v.array(UsdVolumeSchema),\n }),\n v.transform(({ totalVolumeUsdScaled, ...response }) => ({\n ...response,\n totalVolumeUsd: totalVolumeUsdScaled,\n })),\n);\nexport type SpotVolumeHistoryResponse = v.InferOutput<typeof SpotVolumeHistoryResponseSchema>;\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { ListMarketOverviewInput, MarketOverview, MarketOverviewOrderBy, MarketOverviewSort, MarketOverviewSparkline, SparklineIntervalName } from "./market-overview.schemas.js";
2
- export type { ListMarketOverviewInput, MarketOverview, MarketOverviewOrderBy, MarketOverviewSort, MarketOverviewSparkline, SparklineIntervalName };
1
+ import { ListMarketOverviewInput, MarketOverview, MarketOverviewOrderBy, MarketOverviewSort, MarketOverviewSparkline, SparklineIntervalName, SpotPairVolumeSeries, SpotVolumeHistoryInput, SpotVolumeHistoryResponse } from "./market-overview.schemas.js";
2
+ export type { ListMarketOverviewInput, MarketOverview, MarketOverviewOrderBy, MarketOverviewSort, MarketOverviewSparkline, SparklineIntervalName, SpotPairVolumeSeries, SpotVolumeHistoryInput, SpotVolumeHistoryResponse };
@@ -40,7 +40,7 @@ type OpenOrdersInput = v.InferInput<typeof OpenOrdersInputSchema>;
40
40
  declare const OrderHistoryInputSchema: v.SchemaWithPipe<readonly [v.StrictObjectSchema<{
41
41
  readonly includeAttachedRisk: v.OptionalSchema<v.BooleanSchema<undefined>, true>;
42
42
  readonly includeAttachedRiskState: v.OptionalSchema<v.BooleanSchema<undefined>, false>;
43
- readonly status: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["FILLED", "CANCELED", "REJECTED"], undefined>, undefined>, v.TransformAction<"FILLED" | "CANCELED" | "REJECTED" | undefined, OrderStatus.FILLED | OrderStatus.CANCELED | OrderStatus.REJECTED | undefined>]>;
43
+ readonly status: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["FILLED", "CANCELED", "REJECTED"], undefined>, undefined>, v.TransformAction<"CANCELED" | "FILLED" | "REJECTED" | undefined, OrderStatus.FILLED | OrderStatus.CANCELED | OrderStatus.REJECTED | undefined>]>;
44
44
  readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
45
45
  readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
46
46
  readonly symbolId: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>, undefined>;
@@ -243,7 +243,7 @@ declare function createOrderSchema(scales: SdkScales): v.SchemaWithPipe<readonly
243
243
  attachedRisk: {
244
244
  takeProfit: {
245
245
  state: {
246
- status: "unspecified" | "completed" | "failed" | "created" | "armed" | "running" | "paused" | "canceled" | "not_configured";
246
+ status: "unspecified" | "failed" | "created" | "completed" | "armed" | "running" | "paused" | "canceled" | "not_configured";
247
247
  armedTs: number | undefined;
248
248
  armedTsNs: string | undefined;
249
249
  terminalTs: number | undefined;
@@ -262,7 +262,7 @@ declare function createOrderSchema(scales: SdkScales): v.SchemaWithPipe<readonly
262
262
  } | undefined;
263
263
  stopLoss: {
264
264
  state: {
265
- status: "unspecified" | "completed" | "failed" | "created" | "armed" | "running" | "paused" | "canceled" | "not_configured";
265
+ status: "unspecified" | "failed" | "created" | "completed" | "armed" | "running" | "paused" | "canceled" | "not_configured";
266
266
  armedTs: number | undefined;
267
267
  armedTsNs: string | undefined;
268
268
  terminalTs: number | undefined;
@@ -281,7 +281,7 @@ declare function createOrderSchema(scales: SdkScales): v.SchemaWithPipe<readonly
281
281
  } | undefined;
282
282
  trailingStop: {
283
283
  state: {
284
- status: "unspecified" | "completed" | "failed" | "created" | "armed" | "running" | "paused" | "canceled" | "not_configured";
284
+ status: "unspecified" | "failed" | "created" | "completed" | "armed" | "running" | "paused" | "canceled" | "not_configured";
285
285
  armedTs: number | undefined;
286
286
  armedTsNs: string | undefined;
287
287
  terminalTs: number | undefined;
@@ -586,7 +586,7 @@ declare function createOrderDetailsSchema(scales: SdkScales): v.ObjectSchema<{
586
586
  attachedRisk: {
587
587
  takeProfit: {
588
588
  state: {
589
- status: "unspecified" | "completed" | "failed" | "created" | "armed" | "running" | "paused" | "canceled" | "not_configured";
589
+ status: "unspecified" | "failed" | "created" | "completed" | "armed" | "running" | "paused" | "canceled" | "not_configured";
590
590
  armedTs: number | undefined;
591
591
  armedTsNs: string | undefined;
592
592
  terminalTs: number | undefined;
@@ -605,7 +605,7 @@ declare function createOrderDetailsSchema(scales: SdkScales): v.ObjectSchema<{
605
605
  } | undefined;
606
606
  stopLoss: {
607
607
  state: {
608
- status: "unspecified" | "completed" | "failed" | "created" | "armed" | "running" | "paused" | "canceled" | "not_configured";
608
+ status: "unspecified" | "failed" | "created" | "completed" | "armed" | "running" | "paused" | "canceled" | "not_configured";
609
609
  armedTs: number | undefined;
610
610
  armedTsNs: string | undefined;
611
611
  terminalTs: number | undefined;
@@ -624,7 +624,7 @@ declare function createOrderDetailsSchema(scales: SdkScales): v.ObjectSchema<{
624
624
  } | undefined;
625
625
  trailingStop: {
626
626
  state: {
627
- status: "unspecified" | "completed" | "failed" | "created" | "armed" | "running" | "paused" | "canceled" | "not_configured";
627
+ status: "unspecified" | "failed" | "created" | "completed" | "armed" | "running" | "paused" | "canceled" | "not_configured";
628
628
  armedTs: number | undefined;
629
629
  armedTsNs: string | undefined;
630
630
  terminalTs: number | undefined;
@@ -10,7 +10,7 @@ declare class SocialVerificationService {
10
10
  #private;
11
11
  constructor(transports: AuthApiTransports);
12
12
  /**
13
- * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.
13
+ * Starts or restarts provider verification. Twitter requires a handle and strips a leading @; Discord gets its identity from the authenticated bot. An omitted method uses the provider default (Twitter profile, Discord channel). Discord returns an empty challengeCode when no new challenge is issued.
14
14
  */
15
15
  start(input: StartVerificationInput, options?: PolyesterMutationOptions): Promise<StartVerificationResponse>;
16
16
  /**
@@ -13,7 +13,7 @@ var SocialVerificationService = class {
13
13
  this.#client = createClient(SocialVerificationService$1, transports.authApi);
14
14
  }
15
15
  /**
16
- * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.
16
+ * Starts or restarts provider verification. Twitter requires a handle and strips a leading @; Discord gets its identity from the authenticated bot. An omitted method uses the provider default (Twitter profile, Discord channel). Discord returns an empty challengeCode when no new challenge is issued.
17
17
  */
18
18
  async start(input, options) {
19
19
  const validated = parse(StartVerificationInputSchema, input);
@@ -1 +1 @@
1
- {"version":3,"file":"social-verification.js","names":["#client","Proto.SocialVerificationService"],"sources":["../../../src/services/social-verification/social-verification.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/social_verification_pb.js\";\nimport type * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n StartVerificationInputSchema,\n StartVerificationResponseSchema,\n VerificationReadyResponseSchema,\n GetVerificationResponseSchema,\n SocialProviderInputSchema,\n type StartVerificationInput,\n type StartVerificationResponse,\n type VerificationReadyResponse,\n type GetVerificationResponse,\n} from \"./social-verification.schemas.js\";\n\n/**\n * Verifies ownership of external social accounts for the authenticated caller.\n */\nexport class SocialVerificationService {\n #client: Client<typeof Proto.SocialVerificationService>;\n\n constructor(transports: AuthApiTransports) {\n this.#client = createClient(Proto.SocialVerificationService, transports.authApi);\n }\n\n /**\n * Starts or restarts provider verification for a handle, normalizing leading @, defaulting to profile verification, and returning a poly_... challenge code that expires after about 15 minutes.\n */\n async start(\n input: StartVerificationInput,\n options?: PolyesterMutationOptions,\n ): Promise<StartVerificationResponse> {\n const validated = parse(StartVerificationInputSchema, input);\n const res = await this.#client.startSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(StartVerificationResponseSchema, res);\n }\n\n /**\n * Queues a provider check after the caller has placed the challenge code according to the selected verification method.\n */\n async markReady(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<VerificationReadyResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.socialVerificationReady(\n validated,\n toConnectCallOptions(options),\n );\n return parse(VerificationReadyResponseSchema, res);\n }\n\n /**\n * Returns the caller's current verification state for a provider, including status, challenge metadata, attempts, last error, and verified timestamp.\n */\n async get(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<GetVerificationResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.getSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(GetVerificationResponseSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;AAyBA,IAAa,4BAAb,MAAuC;CACnC;CAEA,YAAY,YAA+B;EACvC,KAAKA,UAAU,aAAaC,6BAAiC,WAAW,OAAO;CACnF;;;;CAKA,MAAM,MACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,8BAA8B,KAAK;EAC3D,MAAM,MAAM,MAAM,KAAKD,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,UACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,sBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,+BAA+B,GAAG;CACnD;AACJ"}
1
+ {"version":3,"file":"social-verification.js","names":["#client","Proto.SocialVerificationService"],"sources":["../../../src/services/social-verification/social-verification.ts"],"sourcesContent":["import { createClient, type Client } from \"@connectrpc/connect\";\nimport * as Proto from \"../../gen/auth/v1/social_verification_pb.js\";\nimport type * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport {\n StartVerificationInputSchema,\n StartVerificationResponseSchema,\n VerificationReadyResponseSchema,\n GetVerificationResponseSchema,\n SocialProviderInputSchema,\n type StartVerificationInput,\n type StartVerificationResponse,\n type VerificationReadyResponse,\n type GetVerificationResponse,\n} from \"./social-verification.schemas.js\";\n\n/**\n * Verifies ownership of external social accounts for the authenticated caller.\n */\nexport class SocialVerificationService {\n #client: Client<typeof Proto.SocialVerificationService>;\n\n constructor(transports: AuthApiTransports) {\n this.#client = createClient(Proto.SocialVerificationService, transports.authApi);\n }\n\n /**\n * Starts or restarts provider verification. Twitter requires a handle and strips a leading @; Discord gets its identity from the authenticated bot. An omitted method uses the provider default (Twitter profile, Discord channel). Discord returns an empty challengeCode when no new challenge is issued.\n */\n async start(\n input: StartVerificationInput,\n options?: PolyesterMutationOptions,\n ): Promise<StartVerificationResponse> {\n const validated = parse(StartVerificationInputSchema, input);\n const res = await this.#client.startSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(StartVerificationResponseSchema, res);\n }\n\n /**\n * Queues a provider check after the caller has placed the challenge code according to the selected verification method.\n */\n async markReady(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterMutationOptions,\n ): Promise<VerificationReadyResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.socialVerificationReady(\n validated,\n toConnectCallOptions(options),\n );\n return parse(VerificationReadyResponseSchema, res);\n }\n\n /**\n * Returns the caller's current verification state for a provider, including status, challenge metadata, attempts, last error, and verified timestamp.\n */\n async get(\n input: v.InferInput<typeof SocialProviderInputSchema>,\n options?: PolyesterRequestOptions,\n ): Promise<GetVerificationResponse> {\n const validated = parse(SocialProviderInputSchema, input);\n const res = await this.#client.getSocialVerification(\n validated,\n toConnectCallOptions(options),\n );\n return parse(GetVerificationResponseSchema, res);\n }\n}\n"],"mappings":";;;;;;;;;AAyBA,IAAa,4BAAb,MAAuC;CACnC;CAEA,YAAY,YAA+B;EACvC,KAAKA,UAAU,aAAaC,6BAAiC,WAAW,OAAO;CACnF;;;;CAKA,MAAM,MACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,8BAA8B,KAAK;EAC3D,MAAM,MAAM,MAAM,KAAKD,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,UACF,OACA,SACkC;EAClC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,wBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,iCAAiC,GAAG;CACrD;;;;CAKA,MAAM,IACF,OACA,SACgC;EAChC,MAAM,YAAY,MAAM,2BAA2B,KAAK;EACxD,MAAM,MAAM,MAAM,KAAKA,QAAQ,sBAC3B,WACA,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,+BAA+B,GAAG;CACnD;AACJ"}
@@ -42,19 +42,25 @@ type SocialVerification = Omit<SocialVerificationBase, "provider" | "method" | "
42
42
  method: DecodedEnum<SocialVerificationMethod>;
43
43
  status: DecodedEnum<SocialVerificationStatus>;
44
44
  };
45
- declare const StartVerificationInputSchema: v.SchemaWithPipe<readonly [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
- }, undefined>, v.CheckAction<{
50
- provider: SocialProvider$1.TWITTER | SocialProvider$1.DISCORD;
45
+ declare const StartVerificationInputSchema: v.SchemaWithPipe<readonly [v.VariantSchema<"provider", [v.StrictObjectSchema<{
46
+ readonly provider: v.LiteralSchema<"twitter", undefined>;
47
+ readonly handle: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TransformAction<string, string>, v.MinLengthAction<string, 1, undefined>, v.RegexAction<string, "Twitter handle must be 1-15 letters, digits, or underscores">]>;
48
+ readonly method: v.OptionalSchema<v.LiteralSchema<"profile", undefined>, undefined>;
49
+ }, undefined>, v.StrictObjectSchema<{
50
+ readonly provider: v.LiteralSchema<"discord", undefined>;
51
+ readonly method: v.OptionalSchema<v.PicklistSchema<["channel", "dm"], undefined>, undefined>;
52
+ }, undefined>], undefined>, v.TransformAction<{
53
+ provider: "twitter";
51
54
  handle: string;
52
- method: SocialVerificationMethod$1.METHOD_PROFILE | SocialVerificationMethod$1.METHOD_CHANNEL | SocialVerificationMethod$1.METHOD_DM;
53
- }, "Handle must not contain '<' or '>'">, v.CheckAction<{
55
+ method?: "profile" | undefined;
56
+ } | {
57
+ provider: "discord";
58
+ method?: "channel" | "dm" | undefined;
59
+ }, {
54
60
  provider: SocialProvider$1.TWITTER | SocialProvider$1.DISCORD;
55
- handle: string;
56
- method: SocialVerificationMethod$1.METHOD_PROFILE | SocialVerificationMethod$1.METHOD_CHANNEL | SocialVerificationMethod$1.METHOD_DM;
57
- }, "Twitter handle must be 1-15 letters, digits, or underscores">]>;
61
+ method: SocialVerificationMethod$1;
62
+ handle?: string | undefined;
63
+ }>]>;
58
64
  type StartVerificationInput = v.InferInput<typeof StartVerificationInputSchema>;
59
65
  declare const SocialProviderInputSchema: v.StrictObjectSchema<{
60
66
  readonly provider: v.SchemaWithPipe<readonly [v.PicklistSchema<readonly ["twitter", "discord"], undefined>, v.TransformAction<"twitter" | "discord", SocialProvider$1.TWITTER | SocialProvider$1.DISCORD>]>;
@@ -1 +1 @@
1
- {"version":3,"file":"social-verification.schemas.d.ts","names":[],"sources":["../../../src/services/social-verification/social-verification.schemas.ts"],"mappings":";;;;;cAoBa,sBAAoB,EAAA;KACrB,iBAAiB,EAAE,kBAAkB;cAEpC,gCAA8B,EAAA;KAC/B,2BAA2B,EAAE,kBAAkB;cAE9C,gCAA8B,EAAA;KAC/B,2BAA2B,EAAE,mBAAmB;cA+C/C,0BAAwB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgBhC,yBAAyB,EAAE,mBAAmB;KACvC,qBAAqB,KAAK;EAClC,UAAU,YAAY;EACtB,QAAQ,YAAY;EACpB,QAAQ,YAAY;;cAGX,8BAA4B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;KAoB7B,yBAAyB,EAAE,kBAAkB;cAO5C,2BAAyB,EAAA;;;KAI1B,sBAAsB,EAAE,kBAAkB;cAEzC,iCAA+B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;KAahC,4BAA4B,EAAE,mBAAmB;cAEhD,iCAA+B,EAAA,yBAAA,EAAA;;;;;;;KAShC,4BAA4B,EAAE,mBAAmB;cAEhD,+BAA6B,EAAA,yBAAA,EAAA;;;;;;;KAS9B,0BAA0B,EAAE,mBAAmB"}
1
+ {"version":3,"file":"social-verification.schemas.d.ts","names":[],"sources":["../../../src/services/social-verification/social-verification.schemas.ts"],"mappings":";;;;;cAoBa,sBAAoB,EAAA;KACrB,iBAAiB,EAAE,kBAAkB;cAEpC,gCAA8B,EAAA;KAC/B,2BAA2B,EAAE,kBAAkB;cAE9C,gCAA8B,EAAA;KAC/B,2BAA2B,EAAE,mBAAmB;cA+C/C,0BAAwB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgBhC,yBAAyB,EAAE,mBAAmB;KACvC,qBAAqB,KAAK;EAClC,UAAU,YAAY;EACtB,QAAQ,YAAY;EACpB,QAAQ,YAAY;;cAGX,8BAA4B,EAAA,yBAAA,EAAA,2BAAA,EAAA;;;;;;;;;;;;;;;;;;;KA+B7B,yBAAyB,EAAE,kBAAkB;cAO5C,2BAAyB,EAAA;;;KAI1B,sBAAsB,EAAE,kBAAkB;cAEzC,iCAA+B,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;KAahC,4BAA4B,EAAE,mBAAmB;cAEhD,iCAA+B,EAAA,yBAAA,EAAA;;;;;;;KAShC,4BAA4B,EAAE,mBAAmB;cAEhD,+BAA6B,EAAA,yBAAA,EAAA;;;;;;;KAS9B,0BAA0B,EAAE,mBAAmB"}
@@ -47,11 +47,18 @@ v.object({
47
47
  lastError: v.string(),
48
48
  updatedAt: v.optional(TimestampSchema)
49
49
  });
50
- const StartVerificationInputSchema = v.pipe(v.strictObject({
51
- provider: v.pipe(SocialProviderSchema, v.transform((v) => SocialProviderCodec.inputToProto[v])),
52
- handle: v.pipe(v.string(), v.transform(normalizeHandle), v.minLength(1), v.maxLength(64)),
53
- method: v.pipe(v.optional(SocialVerificationMethodSchema, "profile"), v.transform((v) => SocialVerificationMethodCodec.inputToProto[v ?? "profile"]))
54
- }), v.check(({ handle }) => !/[<>]/.test(handle), "Handle must not contain '<' or '>'"), v.check(({ provider, handle }) => provider !== 1 || TWITTER_HANDLE_PATTERN.test(handle), "Twitter handle must be 1-15 letters, digits, or underscores"));
50
+ const StartVerificationInputSchema = v.pipe(v.variant("provider", [v.strictObject({
51
+ provider: v.literal("twitter"),
52
+ handle: v.pipe(v.string(), v.transform(normalizeHandle), v.minLength(1), v.regex(TWITTER_HANDLE_PATTERN, "Twitter handle must be 1-15 letters, digits, or underscores")),
53
+ method: v.optional(v.literal("profile"))
54
+ }), v.strictObject({
55
+ provider: v.literal("discord"),
56
+ method: v.optional(v.picklist(["channel", "dm"]))
57
+ })]), v.transform(({ provider, method, ...input }) => ({
58
+ ...input,
59
+ provider: SocialProviderCodec.inputToProto[provider],
60
+ method: method === void 0 ? 0 : SocialVerificationMethodCodec.inputToProto[method]
61
+ })));
55
62
  const ProviderInputSchema = v.pipe(SocialProviderSchema, v.transform((v) => SocialProviderCodec.inputToProto[v]));
56
63
  const SocialProviderInputSchema = v.strictObject({ provider: ProviderInputSchema });
57
64
  const StartVerificationResponseSchema = v.pipe(v.object({
@@ -1 +1 @@
1
- {"version":3,"file":"social-verification.schemas.js","names":[],"sources":["../../../src/services/social-verification/social-verification.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { TimestampSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport * as Proto from \"../../gen/auth/v1/social_verification_pb.js\";\nimport {\n SOCIAL_PROVIDER_VALUES,\n SOCIAL_VERIFICATION_METHOD_VALUES,\n SOCIAL_VERIFICATION_STATUS_VALUES,\n SocialProviderCodec,\n SocialVerificationMethodCodec,\n SocialVerificationStatusCodec,\n} from \"./social-verification.codecs.js\";\n\nexport {\n SOCIAL_PROVIDER_VALUES,\n SOCIAL_VERIFICATION_METHOD_VALUES,\n SOCIAL_VERIFICATION_STATUS_VALUES,\n} from \"./social-verification.codecs.js\";\n\nexport const SocialProviderSchema = v.picklist(SOCIAL_PROVIDER_VALUES);\nexport type SocialProvider = v.InferInput<typeof SocialProviderSchema>;\n\nexport const SocialVerificationMethodSchema = v.picklist(SOCIAL_VERIFICATION_METHOD_VALUES);\nexport type SocialVerificationMethod = v.InferInput<typeof SocialVerificationMethodSchema>;\n\nexport const SocialVerificationStatusSchema = v.picklist(SOCIAL_VERIFICATION_STATUS_VALUES);\nexport type SocialVerificationStatus = v.InferOutput<typeof SocialVerificationStatusSchema>;\n\nfunction normalizeHandle(input: string): string {\n return (input ?? \"\").trim().replace(/^@+/, \"\");\n}\n\nconst TWITTER_HANDLE_PATTERN = /^[A-Za-z0-9_]{1,15}$/;\n\n/**\n * Normalizes a social verification response into the SDK verification shape.\n */\nexport function transformVerification(\n v: Proto.SocialVerification | undefined,\n): SocialVerification | undefined {\n if (!v) return undefined;\n return {\n id: v.id,\n provider: requiredEnumLabel(\n SocialProviderCodec.protoToOutput,\n v.provider,\n \"SocialVerificationSchema\",\n \"provider\",\n ),\n method: requiredEnumLabel(\n SocialVerificationMethodCodec.protoToOutput,\n v.method,\n \"SocialVerificationSchema\",\n \"method\",\n ),\n handle: v.handle,\n providerUserId: v.providerUserId,\n challengeCode: v.challengeCode,\n status: requiredEnumLabel(\n SocialVerificationStatusCodec.protoToOutput,\n v.status,\n \"SocialVerificationSchema\",\n \"status\",\n ),\n requestedAt: v.requestedAt,\n expiresAt: v.expiresAt,\n verifiedAt: v.verifiedAt,\n attempts: v.attempts,\n lastError: v.lastError,\n updatedAt: v.updatedAt,\n };\n}\n\nexport const SocialVerificationSchema = v.object({\n id: v.bigint(),\n provider: SocialProviderSchema,\n method: SocialVerificationMethodSchema,\n handle: v.string(),\n providerUserId: v.string(),\n challengeCode: v.string(),\n status: SocialVerificationStatusSchema,\n requestedAt: v.optional(TimestampSchema),\n expiresAt: v.optional(TimestampSchema),\n verifiedAt: v.optional(TimestampSchema),\n attempts: v.number(),\n lastError: v.string(),\n updatedAt: v.optional(TimestampSchema),\n});\n\ntype SocialVerificationBase = v.InferOutput<typeof SocialVerificationSchema>;\nexport type SocialVerification = Omit<SocialVerificationBase, \"provider\" | \"method\" | \"status\"> & {\n provider: DecodedEnum<SocialProvider>;\n method: DecodedEnum<SocialVerificationMethod>;\n status: DecodedEnum<SocialVerificationStatus>;\n};\n\nexport const StartVerificationInputSchema = v.pipe(\n v.strictObject({\n provider: v.pipe(\n SocialProviderSchema,\n v.transform((v) => SocialProviderCodec.inputToProto[v]),\n ),\n handle: v.pipe(v.string(), v.transform(normalizeHandle), v.minLength(1), v.maxLength(64)),\n method: v.pipe(\n v.optional(SocialVerificationMethodSchema, \"profile\"),\n v.transform((v) => SocialVerificationMethodCodec.inputToProto[v ?? \"profile\"]),\n ),\n }),\n v.check(({ handle }) => !/[<>]/.test(handle), \"Handle must not contain '<' or '>'\"),\n v.check(\n ({ provider, handle }) =>\n provider !== Proto.SocialProvider.TWITTER || TWITTER_HANDLE_PATTERN.test(handle),\n \"Twitter handle must be 1-15 letters, digits, or underscores\",\n ),\n);\n\nexport type StartVerificationInput = v.InferInput<typeof StartVerificationInputSchema>;\n\nexport const ProviderInputSchema = v.pipe(\n SocialProviderSchema,\n v.transform((v) => SocialProviderCodec.inputToProto[v]),\n);\n\nexport const SocialProviderInputSchema = v.strictObject({\n provider: ProviderInputSchema,\n});\n\nexport type SocialProviderInput = v.InferInput<typeof SocialProviderInputSchema>;\n\nexport const StartVerificationResponseSchema = v.pipe(\n v.object({\n challengeCode: v.string(),\n expiresAt: v.optional(TimestampSchema),\n verification: v.optional(v.custom<Proto.SocialVerification>(() => true)),\n }),\n v.transform((res) => ({\n challengeCode: res.challengeCode,\n expiresAt: res.expiresAt,\n verification: transformVerification(res.verification),\n })),\n);\n\nexport type StartVerificationResponse = v.InferOutput<typeof StartVerificationResponseSchema>;\n\nexport const VerificationReadyResponseSchema = v.pipe(\n v.object({\n verification: v.optional(v.custom<Proto.SocialVerification>(() => true)),\n }),\n v.transform((res) => ({\n verification: transformVerification(res.verification),\n })),\n);\n\nexport type VerificationReadyResponse = v.InferOutput<typeof VerificationReadyResponseSchema>;\n\nexport const GetVerificationResponseSchema = v.pipe(\n v.object({\n verification: v.optional(v.custom<Proto.SocialVerification>(() => true)),\n }),\n v.transform((res) => ({\n verification: transformVerification(res.verification),\n })),\n);\n\nexport type GetVerificationResponse = v.InferOutput<typeof GetVerificationResponseSchema>;\n"],"mappings":";;;;;;AAoBA,MAAa,uBAAuB,EAAE,SAAS,sBAAsB;AAGrE,MAAa,iCAAiC,EAAE,SAAS,iCAAiC;AAG1F,MAAa,iCAAiC,EAAE,SAAS,iCAAiC;AAG1F,SAAS,gBAAgB,OAAuB;CAC5C,QAAQ,SAAS,GAAA,CAAI,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE;AACjD;AAEA,MAAM,yBAAyB;;;;AAK/B,SAAgB,sBACZ,GAC8B;CAC9B,IAAI,CAAC,GAAG,OAAO,KAAA;CACf,OAAO;EACH,IAAI,EAAE;EACN,UAAU,kBACN,oBAAoB,eACpB,EAAE,UACF,4BACA,UACJ;EACA,QAAQ,kBACJ,8BAA8B,eAC9B,EAAE,QACF,4BACA,QACJ;EACA,QAAQ,EAAE;EACV,gBAAgB,EAAE;EAClB,eAAe,EAAE;EACjB,QAAQ,kBACJ,8BAA8B,eAC9B,EAAE,QACF,4BACA,QACJ;EACA,aAAa,EAAE;EACf,WAAW,EAAE;EACb,YAAY,EAAE;EACd,UAAU,EAAE;EACZ,WAAW,EAAE;EACb,WAAW,EAAE;CACjB;AACJ;AAEwC,EAAE,OAAO;CAC7C,IAAI,EAAE,OAAO;CACb,UAAU;CACV,QAAQ;CACR,QAAQ,EAAE,OAAO;CACjB,gBAAgB,EAAE,OAAO;CACzB,eAAe,EAAE,OAAO;CACxB,QAAQ;CACR,aAAa,EAAE,SAAS,eAAe;CACvC,WAAW,EAAE,SAAS,eAAe;CACrC,YAAY,EAAE,SAAS,eAAe;CACtC,UAAU,EAAE,OAAO;CACnB,WAAW,EAAE,OAAO;CACpB,WAAW,EAAE,SAAS,eAAe;AACzC,CAAC;AASD,MAAa,+BAA+B,EAAE,KAC1C,EAAE,aAAa;CACX,UAAU,EAAE,KACR,sBACA,EAAE,WAAW,MAAM,oBAAoB,aAAa,EAAE,CAC1D;CACA,QAAQ,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,UAAU,eAAe,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;CACxF,QAAQ,EAAE,KACN,EAAE,SAAS,gCAAgC,SAAS,GACpD,EAAE,WAAW,MAAM,8BAA8B,aAAa,KAAK,UAAU,CACjF;AACJ,CAAC,GACD,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,KAAK,MAAM,GAAG,oCAAoC,GAClF,EAAE,OACG,EAAE,UAAU,aACT,aAAA,KAA6C,uBAAuB,KAAK,MAAM,GACnF,6DACJ,CACJ;AAIA,MAAa,sBAAsB,EAAE,KACjC,sBACA,EAAE,WAAW,MAAM,oBAAoB,aAAa,EAAE,CAC1D;AAEA,MAAa,4BAA4B,EAAE,aAAa,EACpD,UAAU,oBACd,CAAC;AAID,MAAa,kCAAkC,EAAE,KAC7C,EAAE,OAAO;CACL,eAAe,EAAE,OAAO;CACxB,WAAW,EAAE,SAAS,eAAe;CACrC,cAAc,EAAE,SAAS,EAAE,aAAuC,IAAI,CAAC;AAC3E,CAAC,GACD,EAAE,WAAW,SAAS;CAClB,eAAe,IAAI;CACnB,WAAW,IAAI;CACf,cAAc,sBAAsB,IAAI,YAAY;AACxD,EAAE,CACN;AAIA,MAAa,kCAAkC,EAAE,KAC7C,EAAE,OAAO,EACL,cAAc,EAAE,SAAS,EAAE,aAAuC,IAAI,CAAC,EAC3E,CAAC,GACD,EAAE,WAAW,SAAS,EAClB,cAAc,sBAAsB,IAAI,YAAY,EACxD,EAAE,CACN;AAIA,MAAa,gCAAgC,EAAE,KAC3C,EAAE,OAAO,EACL,cAAc,EAAE,SAAS,EAAE,aAAuC,IAAI,CAAC,EAC3E,CAAC,GACD,EAAE,WAAW,SAAS,EAClB,cAAc,sBAAsB,IAAI,YAAY,EACxD,EAAE,CACN"}
1
+ {"version":3,"file":"social-verification.schemas.js","names":[],"sources":["../../../src/services/social-verification/social-verification.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { TimestampSchema } from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport type { DecodedEnum } from \"../../utils/types.js\";\nimport * as Proto from \"../../gen/auth/v1/social_verification_pb.js\";\nimport {\n SOCIAL_PROVIDER_VALUES,\n SOCIAL_VERIFICATION_METHOD_VALUES,\n SOCIAL_VERIFICATION_STATUS_VALUES,\n SocialProviderCodec,\n SocialVerificationMethodCodec,\n SocialVerificationStatusCodec,\n} from \"./social-verification.codecs.js\";\n\nexport {\n SOCIAL_PROVIDER_VALUES,\n SOCIAL_VERIFICATION_METHOD_VALUES,\n SOCIAL_VERIFICATION_STATUS_VALUES,\n} from \"./social-verification.codecs.js\";\n\nexport const SocialProviderSchema = v.picklist(SOCIAL_PROVIDER_VALUES);\nexport type SocialProvider = v.InferInput<typeof SocialProviderSchema>;\n\nexport const SocialVerificationMethodSchema = v.picklist(SOCIAL_VERIFICATION_METHOD_VALUES);\nexport type SocialVerificationMethod = v.InferInput<typeof SocialVerificationMethodSchema>;\n\nexport const SocialVerificationStatusSchema = v.picklist(SOCIAL_VERIFICATION_STATUS_VALUES);\nexport type SocialVerificationStatus = v.InferOutput<typeof SocialVerificationStatusSchema>;\n\nfunction normalizeHandle(input: string): string {\n return (input ?? \"\").trim().replace(/^@+/, \"\");\n}\n\nconst TWITTER_HANDLE_PATTERN = /^[A-Za-z0-9_]{1,15}$/;\n\n/**\n * Normalizes a social verification response into the SDK verification shape.\n */\nexport function transformVerification(\n v: Proto.SocialVerification | undefined,\n): SocialVerification | undefined {\n if (!v) return undefined;\n return {\n id: v.id,\n provider: requiredEnumLabel(\n SocialProviderCodec.protoToOutput,\n v.provider,\n \"SocialVerificationSchema\",\n \"provider\",\n ),\n method: requiredEnumLabel(\n SocialVerificationMethodCodec.protoToOutput,\n v.method,\n \"SocialVerificationSchema\",\n \"method\",\n ),\n handle: v.handle,\n providerUserId: v.providerUserId,\n challengeCode: v.challengeCode,\n status: requiredEnumLabel(\n SocialVerificationStatusCodec.protoToOutput,\n v.status,\n \"SocialVerificationSchema\",\n \"status\",\n ),\n requestedAt: v.requestedAt,\n expiresAt: v.expiresAt,\n verifiedAt: v.verifiedAt,\n attempts: v.attempts,\n lastError: v.lastError,\n updatedAt: v.updatedAt,\n };\n}\n\nexport const SocialVerificationSchema = v.object({\n id: v.bigint(),\n provider: SocialProviderSchema,\n method: SocialVerificationMethodSchema,\n handle: v.string(),\n providerUserId: v.string(),\n challengeCode: v.string(),\n status: SocialVerificationStatusSchema,\n requestedAt: v.optional(TimestampSchema),\n expiresAt: v.optional(TimestampSchema),\n verifiedAt: v.optional(TimestampSchema),\n attempts: v.number(),\n lastError: v.string(),\n updatedAt: v.optional(TimestampSchema),\n});\n\ntype SocialVerificationBase = v.InferOutput<typeof SocialVerificationSchema>;\nexport type SocialVerification = Omit<SocialVerificationBase, \"provider\" | \"method\" | \"status\"> & {\n provider: DecodedEnum<SocialProvider>;\n method: DecodedEnum<SocialVerificationMethod>;\n status: DecodedEnum<SocialVerificationStatus>;\n};\n\nexport const StartVerificationInputSchema = v.pipe(\n v.variant(\"provider\", [\n v.strictObject({\n provider: v.literal(\"twitter\"),\n handle: v.pipe(\n v.string(),\n v.transform(normalizeHandle),\n v.minLength(1),\n v.regex(\n TWITTER_HANDLE_PATTERN,\n \"Twitter handle must be 1-15 letters, digits, or underscores\",\n ),\n ),\n method: v.optional(v.literal(\"profile\")),\n }),\n v.strictObject({\n provider: v.literal(\"discord\"),\n method: v.optional(v.picklist([\"channel\", \"dm\"])),\n }),\n ]),\n v.transform(({ provider, method, ...input }) => ({\n ...input,\n provider: SocialProviderCodec.inputToProto[provider],\n // METHOD_UNSPECIFIED lets the API choose Twitter's profile or Discord's channel default.\n method:\n method === undefined\n ? Proto.SocialVerificationMethod.METHOD_UNSPECIFIED\n : SocialVerificationMethodCodec.inputToProto[method],\n })),\n);\n\nexport type StartVerificationInput = v.InferInput<typeof StartVerificationInputSchema>;\n\nexport const ProviderInputSchema = v.pipe(\n SocialProviderSchema,\n v.transform((v) => SocialProviderCodec.inputToProto[v]),\n);\n\nexport const SocialProviderInputSchema = v.strictObject({\n provider: ProviderInputSchema,\n});\n\nexport type SocialProviderInput = v.InferInput<typeof SocialProviderInputSchema>;\n\nexport const StartVerificationResponseSchema = v.pipe(\n v.object({\n challengeCode: v.string(),\n expiresAt: v.optional(TimestampSchema),\n verification: v.optional(v.custom<Proto.SocialVerification>(() => true)),\n }),\n v.transform((res) => ({\n challengeCode: res.challengeCode,\n expiresAt: res.expiresAt,\n verification: transformVerification(res.verification),\n })),\n);\n\nexport type StartVerificationResponse = v.InferOutput<typeof StartVerificationResponseSchema>;\n\nexport const VerificationReadyResponseSchema = v.pipe(\n v.object({\n verification: v.optional(v.custom<Proto.SocialVerification>(() => true)),\n }),\n v.transform((res) => ({\n verification: transformVerification(res.verification),\n })),\n);\n\nexport type VerificationReadyResponse = v.InferOutput<typeof VerificationReadyResponseSchema>;\n\nexport const GetVerificationResponseSchema = v.pipe(\n v.object({\n verification: v.optional(v.custom<Proto.SocialVerification>(() => true)),\n }),\n v.transform((res) => ({\n verification: transformVerification(res.verification),\n })),\n);\n\nexport type GetVerificationResponse = v.InferOutput<typeof GetVerificationResponseSchema>;\n"],"mappings":";;;;;;AAoBA,MAAa,uBAAuB,EAAE,SAAS,sBAAsB;AAGrE,MAAa,iCAAiC,EAAE,SAAS,iCAAiC;AAG1F,MAAa,iCAAiC,EAAE,SAAS,iCAAiC;AAG1F,SAAS,gBAAgB,OAAuB;CAC5C,QAAQ,SAAS,GAAA,CAAI,KAAK,CAAC,CAAC,QAAQ,OAAO,EAAE;AACjD;AAEA,MAAM,yBAAyB;;;;AAK/B,SAAgB,sBACZ,GAC8B;CAC9B,IAAI,CAAC,GAAG,OAAO,KAAA;CACf,OAAO;EACH,IAAI,EAAE;EACN,UAAU,kBACN,oBAAoB,eACpB,EAAE,UACF,4BACA,UACJ;EACA,QAAQ,kBACJ,8BAA8B,eAC9B,EAAE,QACF,4BACA,QACJ;EACA,QAAQ,EAAE;EACV,gBAAgB,EAAE;EAClB,eAAe,EAAE;EACjB,QAAQ,kBACJ,8BAA8B,eAC9B,EAAE,QACF,4BACA,QACJ;EACA,aAAa,EAAE;EACf,WAAW,EAAE;EACb,YAAY,EAAE;EACd,UAAU,EAAE;EACZ,WAAW,EAAE;EACb,WAAW,EAAE;CACjB;AACJ;AAEwC,EAAE,OAAO;CAC7C,IAAI,EAAE,OAAO;CACb,UAAU;CACV,QAAQ;CACR,QAAQ,EAAE,OAAO;CACjB,gBAAgB,EAAE,OAAO;CACzB,eAAe,EAAE,OAAO;CACxB,QAAQ;CACR,aAAa,EAAE,SAAS,eAAe;CACvC,WAAW,EAAE,SAAS,eAAe;CACrC,YAAY,EAAE,SAAS,eAAe;CACtC,UAAU,EAAE,OAAO;CACnB,WAAW,EAAE,OAAO;CACpB,WAAW,EAAE,SAAS,eAAe;AACzC,CAAC;AASD,MAAa,+BAA+B,EAAE,KAC1C,EAAE,QAAQ,YAAY,CAClB,EAAE,aAAa;CACX,UAAU,EAAE,QAAQ,SAAS;CAC7B,QAAQ,EAAE,KACN,EAAE,OAAO,GACT,EAAE,UAAU,eAAe,GAC3B,EAAE,UAAU,CAAC,GACb,EAAE,MACE,wBACA,6DACJ,CACJ;CACA,QAAQ,EAAE,SAAS,EAAE,QAAQ,SAAS,CAAC;AAC3C,CAAC,GACD,EAAE,aAAa;CACX,UAAU,EAAE,QAAQ,SAAS;CAC7B,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC;AACpD,CAAC,CACL,CAAC,GACD,EAAE,WAAW,EAAE,UAAU,QAAQ,GAAG,aAAa;CAC7C,GAAG;CACH,UAAU,oBAAoB,aAAa;CAE3C,QACI,WAAW,KAAA,IAAA,IAEL,8BAA8B,aAAa;AACzD,EAAE,CACN;AAIA,MAAa,sBAAsB,EAAE,KACjC,sBACA,EAAE,WAAW,MAAM,oBAAoB,aAAa,EAAE,CAC1D;AAEA,MAAa,4BAA4B,EAAE,aAAa,EACpD,UAAU,oBACd,CAAC;AAID,MAAa,kCAAkC,EAAE,KAC7C,EAAE,OAAO;CACL,eAAe,EAAE,OAAO;CACxB,WAAW,EAAE,SAAS,eAAe;CACrC,cAAc,EAAE,SAAS,EAAE,aAAuC,IAAI,CAAC;AAC3E,CAAC,GACD,EAAE,WAAW,SAAS;CAClB,eAAe,IAAI;CACnB,WAAW,IAAI;CACf,cAAc,sBAAsB,IAAI,YAAY;AACxD,EAAE,CACN;AAIA,MAAa,kCAAkC,EAAE,KAC7C,EAAE,OAAO,EACL,cAAc,EAAE,SAAS,EAAE,aAAuC,IAAI,CAAC,EAC3E,CAAC,GACD,EAAE,WAAW,SAAS,EAClB,cAAc,sBAAsB,IAAI,YAAY,EACxD,EAAE,CACN;AAIA,MAAa,gCAAgC,EAAE,KAC3C,EAAE,OAAO,EACL,cAAc,EAAE,SAAS,EAAE,aAAuC,IAAI,CAAC,EAC3E,CAAC,GACD,EAAE,WAAW,SAAS,EAClB,cAAc,sBAAsB,IAAI,YAAY,EACxD,EAAE,CACN"}
@@ -212,7 +212,7 @@ declare const SubaccountInviteSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<
212
212
  readonly granteeAccountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
213
213
  readonly inviterAccountId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
214
214
  readonly role: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SubaccountRole$1, undefined>, v.TransformAction<SubaccountRole$1, "unspecified" | "owner" | "admin" | "treasury" | "leveraged_trader" | "trader" | "viewer">]>;
215
- readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SubaccountInviteStatus$1, undefined>, v.TransformAction<SubaccountInviteStatus$1, "unspecified" | "pending" | "accepted" | "declined" | "cancelled">]>;
215
+ readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof SubaccountInviteStatus$1, undefined>, v.TransformAction<SubaccountInviteStatus$1, "unspecified" | "pending" | "cancelled" | "accepted" | "declined">]>;
216
216
  readonly createdAt: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
217
217
  readonly seconds: v.BigintSchema<undefined>;
218
218
  readonly nanos: v.OptionalSchema<v.NumberSchema<undefined>, 0>;
@@ -239,7 +239,7 @@ declare const SubaccountInviteSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<
239
239
  granteeAccountId: string;
240
240
  inviterAccountId: string;
241
241
  role: "unspecified" | "owner" | "admin" | "treasury" | "leveraged_trader" | "trader" | "viewer";
242
- status: "unspecified" | "pending" | "accepted" | "declined" | "cancelled";
242
+ status: "unspecified" | "pending" | "cancelled" | "accepted" | "declined";
243
243
  createdAt?: number | undefined;
244
244
  respondedAt?: number | undefined;
245
245
  granteeUsername: string;
@@ -257,7 +257,7 @@ declare const SubaccountInviteSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<
257
257
  granteeAccountId: string;
258
258
  inviterAccountId: string;
259
259
  role: "unspecified" | "owner" | "admin" | "treasury" | "leveraged_trader" | "trader" | "viewer";
260
- status: "unspecified" | "pending" | "accepted" | "declined" | "cancelled";
260
+ status: "unspecified" | "pending" | "cancelled" | "accepted" | "declined";
261
261
  createdAt?: number | undefined;
262
262
  respondedAt?: number | undefined;
263
263
  granteeUsername: string;
@@ -279,8 +279,8 @@ declare const SubaccountActivityEventSchema: v.ObjectSchema<{
279
279
  seconds: bigint;
280
280
  nanos: number;
281
281
  } | undefined, number | undefined>]>;
282
- readonly entityKind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEntityKind, undefined>, v.TransformAction<ActivityEntityKind, "unspecified" | "api_key" | "account" | "subaccount" | "destination" | "session" | "member" | "policy" | "invite" | "security">]>;
283
- readonly eventAction: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventAction, undefined>, v.TransformAction<ActivityEventAction, "unspecified" | "enabled" | "disabled" | "revoked" | "failed" | "created" | "updated" | "deleted" | "removed" | "role_set" | "received" | "replied" | "blocked" | "hold_placed" | "hold_released">]>;
282
+ readonly entityKind: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEntityKind, undefined>, v.TransformAction<ActivityEntityKind, "unspecified" | "api_key" | "account" | "subaccount" | "destination" | "session" | "policy" | "member" | "invite" | "security">]>;
283
+ readonly eventAction: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventAction, undefined>, v.TransformAction<ActivityEventAction, "unspecified" | "enabled" | "disabled" | "failed" | "created" | "updated" | "deleted" | "removed" | "role_set" | "received" | "replied" | "revoked" | "blocked" | "hold_placed" | "hold_released">]>;
284
284
  readonly source: v.SchemaWithPipe<readonly [v.EnumSchema<typeof ActivityEventSource, undefined>, v.TransformAction<ActivityEventSource, "unspecified" | "web" | "mobile" | "api">]>;
285
285
  readonly ip: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
286
286
  readonly userAgent: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
@@ -845,7 +845,7 @@ type CreateTriggerInput = v.InferInput<ReturnType<typeof createCreateTriggerInpu
845
845
  declare const ListTriggersInputSchema: v.SchemaWithPipe<readonly [v.StrictObjectSchema<{
846
846
  readonly parentOrderId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
847
847
  readonly symbolId: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
848
- readonly status: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["created", "armed", "running", "completed", "cancelled", "failed", "paused"], undefined>, undefined>, undefined>, v.TransformAction<("completed" | "failed" | "cancelled" | "created" | "armed" | "running" | "paused")[] | undefined, (TriggerStatus.STATUS_CREATED | TriggerStatus.STATUS_ARMED | TriggerStatus.STATUS_RUNNING | TriggerStatus.STATUS_COMPLETED | TriggerStatus.STATUS_CANCELED | TriggerStatus.STATUS_FAILED | TriggerStatus.STATUS_PAUSED)[]>]>;
848
+ readonly status: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ArraySchema<v.PicklistSchema<readonly ["created", "armed", "running", "completed", "cancelled", "failed", "paused"], undefined>, undefined>, undefined>, v.TransformAction<("failed" | "cancelled" | "created" | "completed" | "armed" | "running" | "paused")[] | undefined, (TriggerStatus.STATUS_CREATED | TriggerStatus.STATUS_ARMED | TriggerStatus.STATUS_RUNNING | TriggerStatus.STATUS_COMPLETED | TriggerStatus.STATUS_CANCELED | TriggerStatus.STATUS_FAILED | TriggerStatus.STATUS_PAUSED)[]>]>;
849
849
  readonly triggerType: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["stop_loss", "take_profit", "trailing_stop", "twap", "ladder"], undefined>, undefined>, v.TransformAction<"twap" | "ladder" | "stop_loss" | "take_profit" | "trailing_stop" | undefined, TriggerType>]>;
850
850
  readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 1000, undefined>]>, 50>;
851
851
  readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, "">;