@polyester/sdk 0.23.1 → 0.24.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.
- package/CHANGELOG.md +12 -0
- package/dist/gen/orders/v1/orders_read_pb.d.ts +136 -13
- package/dist/gen/orders/v1/orders_read_pb.d.ts.map +1 -1
- package/dist/gen/orders/v1/orders_read_pb.js +22 -16
- package/dist/gen/orders/v1/orders_read_pb.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/services/market-overview/market-overview.js +5 -4
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/orders/index.d.ts +4 -3
- package/dist/services/orders/order-lineage.schemas.d.ts +11 -0
- package/dist/services/orders/order-lineage.schemas.d.ts.map +1 -0
- package/dist/services/orders/order-lineage.schemas.js +13 -0
- package/dist/services/orders/order-lineage.schemas.js.map +1 -0
- package/dist/services/orders/orders-batch.schemas.d.ts +14 -14
- package/dist/services/orders/orders-batch.schemas.js +1 -1
- package/dist/services/orders/orders-input.schemas.d.ts +24 -1
- package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-input.schemas.js +5 -2
- package/dist/services/orders/orders-input.schemas.js.map +1 -1
- package/dist/services/orders/orders-modify.schemas.js +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +63 -20
- package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-output.schemas.js +7 -1
- package/dist/services/orders/orders-output.schemas.js.map +1 -1
- package/dist/services/orders/orders.d.ts +6 -2
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +6 -2
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/orders/orders.schemas.d.ts +4 -3
- package/dist/services/orders/orders.types.d.ts +4 -3
- package/dist/services/trades/trades.d.ts +4 -0
- package/dist/services/trades/trades.d.ts.map +1 -1
- package/dist/services/trades/trades.js +4 -0
- package/dist/services/trades/trades.js.map +1 -1
- package/dist/services/trades/trades.schemas.d.ts +248 -4
- package/dist/services/trades/trades.schemas.d.ts.map +1 -1
- package/dist/services/trades/trades.schemas.js +52 -12
- package/dist/services/trades/trades.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +2 -2
- package/dist/services/triggers/triggers-output.schemas.d.ts +8 -8
- package/dist/shared/connect-error-mapping.d.ts.map +1 -1
- package/dist/shared/connect-error-mapping.js +15 -5
- package/dist/shared/connect-error-mapping.js.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +1 -0
- package/dist/utils/errors.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { OrderErrorCode, OrderErrorDetail, OrderErrorDetailSchema } from "./order-errors.schemas.js";
|
|
2
|
+
import { RiskPolicyInput, StopLossInput, TakeProfitInput, TrailingStopInput, createRiskPolicyInputSchema } from "./orders-risk.schemas.js";
|
|
3
|
+
import { Order, OrderDetails, OrderTransfer, createOrderDetailsSchema, createOrderSchema, createOrderTransferSchema } from "./orders-output.schemas.js";
|
|
2
4
|
import { CancelAllOrdersInput, CancelAllOrdersInputSchema, CancelAllOrdersResponse, CancelAllOrdersResponseSchema, CancelOrderInput, CancelOrderInputSchema, CancelOrderResult, CancelOrderResultSchema, CreateOrderResult, GetOrderDetailsInput, GetOrderDetailsInputSchema, NewOrderInput, OpenOrdersInput, OpenOrdersInputSchema, OrderHistoryInput, OrderHistoryInputSchema, OrderIntentInput, PreviewOrderResult, createCreateOrderResultSchema, createNewOrderInputSchema, createOrderIntentInputSchema, createPreviewOrderResultSchema } from "./orders-input.schemas.js";
|
|
3
5
|
import { ModifyOrderInput, ModifyOrderResult, ModifyOrderResultSchema, createModifyOrderInputSchema } from "./orders-modify.schemas.js";
|
|
4
|
-
import { RiskPolicyInput, StopLossInput, TakeProfitInput, TrailingStopInput, createRiskPolicyInputSchema } from "./orders-risk.schemas.js";
|
|
5
6
|
import { BatchCancelOrderInput, BatchCancelOrderResult, BatchCancelOrdersInput, BatchCancelOrdersInputSchema, BatchCancelOrdersResult, BatchCancelOrdersResultSchema, BatchCreateOrderResult, BatchCreateOrdersInput, BatchCreateOrdersResult, BatchReplaceAdmissionItem, BatchReplaceOrdersInput, BatchReplaceOrdersResult, BatchReplaceOrdersResultSchema, CancelAllAfterInput, CancelAllAfterInputSchema, CancelAllAfterResult, CancelAllAfterResultSchema, GetBatchReplaceStatusInput, GetBatchReplaceStatusInputSchema, GetBatchReplaceStatusResult, GetBatchReplaceStatusResultSchema, createBatchCreateOrdersInputSchema, createBatchCreateOrdersResultSchema } from "./orders-batch.schemas.js";
|
|
6
|
-
import {
|
|
7
|
-
export { type BatchCancelOrderInput, type BatchCancelOrderResult, type BatchCancelOrdersInput, type BatchCancelOrdersResult, type BatchCreateOrderResult, type BatchCreateOrdersInput, type BatchCreateOrdersResult, type BatchReplaceAdmissionItem, type BatchReplaceOrdersInput, type BatchReplaceOrdersResult, type CancelAllAfterInput, type CancelAllAfterResult, type CancelAllOrdersInput, CancelAllOrdersInputSchema, type CancelAllOrdersResponse, type CancelOrderInput, CancelOrderInputSchema, type CancelOrderResult, type CreateOrderResult, type GetBatchReplaceStatusInput, type GetBatchReplaceStatusResult, type GetOrderDetailsInput, GetOrderDetailsInputSchema, type ModifyOrderInput, type ModifyOrderResult, type NewOrderInput, type OpenOrdersInput, OpenOrdersInputSchema, type Order, type OrderDetails, type OrderErrorCode, type OrderErrorDetail, type OrderHistoryInput, OrderHistoryInputSchema, type OrderIntentInput, type OrderTransfer, type PreviewOrderResult, type RiskPolicyInput, type StopLossInput, type TakeProfitInput, type TrailingStopInput };
|
|
7
|
+
import { OrderLineage, OrderLineageSchema } from "./order-lineage.schemas.js";
|
|
8
|
+
export { type BatchCancelOrderInput, type BatchCancelOrderResult, type BatchCancelOrdersInput, type BatchCancelOrdersResult, type BatchCreateOrderResult, type BatchCreateOrdersInput, type BatchCreateOrdersResult, type BatchReplaceAdmissionItem, type BatchReplaceOrdersInput, type BatchReplaceOrdersResult, type CancelAllAfterInput, type CancelAllAfterResult, type CancelAllOrdersInput, CancelAllOrdersInputSchema, type CancelAllOrdersResponse, type CancelOrderInput, CancelOrderInputSchema, type CancelOrderResult, type CreateOrderResult, type GetBatchReplaceStatusInput, type GetBatchReplaceStatusResult, type GetOrderDetailsInput, GetOrderDetailsInputSchema, type ModifyOrderInput, type ModifyOrderResult, type NewOrderInput, type OpenOrdersInput, OpenOrdersInputSchema, type Order, type OrderDetails, type OrderErrorCode, type OrderErrorDetail, type OrderHistoryInput, OrderHistoryInputSchema, type OrderIntentInput, type OrderLineage, type OrderTransfer, type PreviewOrderResult, type RiskPolicyInput, type StopLossInput, type TakeProfitInput, type TrailingStopInput };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { OrderErrorCode, OrderErrorDetail } from "./order-errors.schemas.js";
|
|
2
|
+
import { RiskPolicyInput, StopLossInput, TakeProfitInput, TrailingStopInput } from "./orders-risk.schemas.js";
|
|
3
|
+
import { Order, OrderDetails, OrderTransfer } from "./orders-output.schemas.js";
|
|
2
4
|
import { CancelAllOrdersInput, CancelAllOrdersResponse, CancelOrderInput, CancelOrderResult, CreateOrderResult, GetOrderDetailsInput, NewOrderInput, OpenOrdersInput, OrderHistoryInput, OrderIntentInput, PreviewOrderResult } from "./orders-input.schemas.js";
|
|
3
5
|
import { ModifyOrderInput, ModifyOrderResult } from "./orders-modify.schemas.js";
|
|
4
|
-
import { RiskPolicyInput, StopLossInput, TakeProfitInput, TrailingStopInput } from "./orders-risk.schemas.js";
|
|
5
6
|
import { BatchCancelOrderInput, BatchCancelOrderResult, BatchCancelOrdersInput, BatchCancelOrdersResult, BatchCreateOrderResult, BatchCreateOrdersInput, BatchCreateOrdersResult, BatchReplaceAdmissionItem, BatchReplaceOrdersInput, BatchReplaceOrdersResult, CancelAllAfterInput, CancelAllAfterResult, GetBatchReplaceStatusInput, GetBatchReplaceStatusResult } from "./orders-batch.schemas.js";
|
|
6
|
-
import {
|
|
7
|
+
import { OrderLineage } from "./order-lineage.schemas.js";
|
|
7
8
|
import "./orders.schemas.js";
|
|
8
|
-
export type { BatchCancelOrderInput, BatchCancelOrderResult, BatchCancelOrdersInput, BatchCancelOrdersResult, BatchCreateOrderResult, BatchCreateOrdersInput, BatchCreateOrdersResult, BatchReplaceAdmissionItem, BatchReplaceOrdersInput, BatchReplaceOrdersResult, CancelAllAfterInput, CancelAllAfterResult, CancelAllOrdersInput, CancelAllOrdersResponse, CancelOrderInput, CancelOrderResult, CreateOrderResult, GetBatchReplaceStatusInput, GetBatchReplaceStatusResult, GetOrderDetailsInput, ModifyOrderInput, ModifyOrderResult, NewOrderInput, OpenOrdersInput, Order, OrderDetails, OrderErrorCode, OrderErrorDetail, OrderHistoryInput, OrderIntentInput, OrderTransfer, PreviewOrderResult, RiskPolicyInput, StopLossInput, TakeProfitInput, TrailingStopInput };
|
|
9
|
+
export type { BatchCancelOrderInput, BatchCancelOrderResult, BatchCancelOrdersInput, BatchCancelOrdersResult, BatchCreateOrderResult, BatchCreateOrdersInput, BatchCreateOrdersResult, BatchReplaceAdmissionItem, BatchReplaceOrdersInput, BatchReplaceOrdersResult, CancelAllAfterInput, CancelAllAfterResult, CancelAllOrdersInput, CancelAllOrdersResponse, CancelOrderInput, CancelOrderResult, CreateOrderResult, GetBatchReplaceStatusInput, GetBatchReplaceStatusResult, GetOrderDetailsInput, ModifyOrderInput, ModifyOrderResult, NewOrderInput, OpenOrdersInput, Order, OrderDetails, OrderErrorCode, OrderErrorDetail, OrderHistoryInput, OrderIntentInput, OrderLineage, OrderTransfer, PreviewOrderResult, RiskPolicyInput, StopLossInput, TakeProfitInput, TrailingStopInput };
|
|
@@ -4,6 +4,7 @@ import { SubaccountResolver } from "../subaccount-resolver.js";
|
|
|
4
4
|
import { PolyesterRealtime } from "../../realtime/types.js";
|
|
5
5
|
import { BaseSubscribeInput } from "../../shared/types.js";
|
|
6
6
|
import { SdkScales } from "../../shared/decimal-surface.js";
|
|
7
|
+
import { OrderTransfer } from "../orders/orders-output.schemas.js";
|
|
7
8
|
import { GetUserTradesInput, Trade } from "./trades.schemas.js";
|
|
8
9
|
//#region src/services/trades/trades.d.ts
|
|
9
10
|
interface SubscribeTradesInput extends BaseSubscribeInput<Trade> {
|
|
@@ -17,9 +18,12 @@ declare class TradesService {
|
|
|
17
18
|
constructor(transports: AuthApiTransports, realtime: PolyesterRealtime, resolver: SubaccountResolver | undefined, scales: SdkScales);
|
|
18
19
|
/**
|
|
19
20
|
* Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. The `afterMatchId` cursor requires `symbolId`, enforced at the type and validation level. Results include the next page token from GetUserTrades.
|
|
21
|
+
* Scope executions to an order or lineage, optionally through a generation. Requested transfers
|
|
22
|
+
* belong to matches on this page; deduplicate them across pages by txId.
|
|
20
23
|
*/
|
|
21
24
|
list(input?: GetUserTradesInput, options?: PolyesterRequestOptions): Promise<{
|
|
22
25
|
trades: Trade[];
|
|
26
|
+
transfers: OrderTransfer[];
|
|
23
27
|
nextPageToken: string;
|
|
24
28
|
}>;
|
|
25
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trades.d.ts","names":[],"sources":["../../../src/services/trades/trades.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"trades.d.ts","names":[],"sources":["../../../src/services/trades/trades.ts"],"mappings":";;;;;;;;;UAuBU,6BAA6B,mBAAmB;EACtD;;;;;cAMS;;EAQL,YAAA,YAAY,mBACZ,UAAU,mBACV,UAAU,gCACV,QAAQ;;;;;;EAcN,KACF,QAAO,oBACP,UAAU,0BACX;IAAU,QAAQ;IAAS,WAAW;IAAiB;;;;;EAkB1D,UAAU,OAAO"}
|
|
@@ -5,6 +5,7 @@ import { resolveAccountScopedInput } from "../subaccount-resolver.js";
|
|
|
5
5
|
import { connectReadyGatedProtoChannel } from "../../realtime/ready-gated-subscription.js";
|
|
6
6
|
import { OrdersReadService, UserTradeSchema } from "../../gen/orders/v1/orders_read_pb.js";
|
|
7
7
|
import { GetUserTradesInputSchema, createUserTradeSchema } from "./trades.schemas.js";
|
|
8
|
+
import { createOrderTransferSchema } from "../orders/orders-output.schemas.js";
|
|
8
9
|
import { createClient } from "@connectrpc/connect";
|
|
9
10
|
import * as v from "valibot";
|
|
10
11
|
//#region src/services/trades/trades.ts
|
|
@@ -26,6 +27,8 @@ var TradesService = class {
|
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. The `afterMatchId` cursor requires `symbolId`, enforced at the type and validation level. Results include the next page token from GetUserTrades.
|
|
30
|
+
* Scope executions to an order or lineage, optionally through a generation. Requested transfers
|
|
31
|
+
* belong to matches on this page; deduplicate them across pages by txId.
|
|
29
32
|
*/
|
|
30
33
|
async list(input = {}, options) {
|
|
31
34
|
await this.#scales.ready();
|
|
@@ -34,6 +37,7 @@ var TradesService = class {
|
|
|
34
37
|
const res = await this.#client.getUserTrades(removeUndefined(validatedInput), toConnectCallOptions(options));
|
|
35
38
|
return {
|
|
36
39
|
trades: parse(v.array(this.#userTradeSchema), res.trades),
|
|
40
|
+
transfers: parse(v.array(createOrderTransferSchema()), res.transfers ?? []),
|
|
37
41
|
nextPageToken: res.nextPageToken
|
|
38
42
|
};
|
|
39
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trades.js","names":["#client","Proto.OrdersReadService","#realtime","#resolver","#scales","#userTradeSchema","Proto.UserTradeSchema"],"sources":["../../../src/services/trades/trades.ts"],"sourcesContent":["import * as Proto from \"../../gen/orders/v1/orders_read_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport {\n GetUserTradesInputSchema,\n createUserTradeSchema,\n type GetUserTradesInput,\n type Trade,\n} from \"./trades.schemas.js\";\n\ninterface SubscribeTradesInput extends BaseSubscribeInput<Trade> {\n accountId: string;\n}\n\n/**\n * Reads and streams authenticated user trade fills.\n */\nexport class TradesService {\n #client: Client<typeof Proto.OrdersReadService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #userTradeSchema: ReturnType<typeof createUserTradeSchema>;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#client = createClient(Proto.OrdersReadService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#userTradeSchema = createUserTradeSchema(scales);\n }\n\n /**\n * Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. The `afterMatchId` cursor requires `symbolId`, enforced at the type and validation level. Results include the next page token from GetUserTrades.\n */\n async list(\n input: GetUserTradesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ trades: Trade[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(GetUserTradesInputSchema, resolved);\n const res = await this.#client.getUserTrades(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n trades: parse(v.array(this.#userTradeSchema), res.trades),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private user trade updates on private:spot:trades:{accountId}:proto and emits parsed fills.\n */\n subscribe(input: SubscribeTradesInput) {\n const channel = `private:spot:trades:${input.accountId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: Proto.UserTradeSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const trade = parse(this.#userTradeSchema, data);\n input.onEvent(trade);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"trades.js","names":["#client","Proto.OrdersReadService","#realtime","#resolver","#scales","#userTradeSchema","Proto.UserTradeSchema"],"sources":["../../../src/services/trades/trades.ts"],"sourcesContent":["import { createOrderTransferSchema, type OrderTransfer } from \"../orders/orders-output.schemas.js\";\nimport * as Proto from \"../../gen/orders/v1/orders_read_pb.js\";\nimport { createClient, type Client } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport type { PolyesterRealtime } from \"../../realtime/types.js\";\nimport { connectReadyGatedProtoChannel } from \"../../realtime/ready-gated-subscription.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport {\n toConnectCallOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport type { SdkScales } from \"../../shared/decimal-surface.js\";\nimport type { AuthApiTransports } from \"../../shared/transports.js\";\nimport {\n GetUserTradesInputSchema,\n createUserTradeSchema,\n type GetUserTradesInput,\n type Trade,\n} from \"./trades.schemas.js\";\n\ninterface SubscribeTradesInput extends BaseSubscribeInput<Trade> {\n accountId: string;\n}\n\n/**\n * Reads and streams authenticated user trade fills.\n */\nexport class TradesService {\n #client: Client<typeof Proto.OrdersReadService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #userTradeSchema: ReturnType<typeof createUserTradeSchema>;\n\n constructor(\n transports: AuthApiTransports,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#client = createClient(Proto.OrdersReadService, transports.authApi);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#userTradeSchema = createUserTradeSchema(scales);\n }\n\n /**\n * Returns user trades for the resolved root account or subaccount, supporting symbol, side, time range, limit, page token, and after-match-ID replay cursor filters. The `afterMatchId` cursor requires `symbolId`, enforced at the type and validation level. Results include the next page token from GetUserTrades.\n * Scope executions to an order or lineage, optionally through a generation. Requested transfers\n * belong to matches on this page; deduplicate them across pages by txId.\n */\n async list(\n input: GetUserTradesInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<{ trades: Trade[]; transfers: OrderTransfer[]; nextPageToken: string }> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(GetUserTradesInputSchema, resolved);\n const res = await this.#client.getUserTrades(\n removeUndefined(validatedInput),\n toConnectCallOptions(options),\n );\n return {\n trades: parse(v.array(this.#userTradeSchema), res.trades),\n transfers: parse(v.array(createOrderTransferSchema()), res.transfers ?? []),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private user trade updates on private:spot:trades:{accountId}:proto and emits parsed fills.\n */\n subscribe(input: SubscribeTradesInput) {\n const channel = `private:spot:trades:${input.accountId}:proto`;\n return connectReadyGatedProtoChannel(this.#realtime, {\n channel,\n schema: Proto.UserTradeSchema,\n ready: () => this.#scales.ready(),\n onPublication: (data) => {\n const trade = parse(this.#userTradeSchema, data);\n input.onEvent(trade);\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,IAAa,gBAAb,MAA2B;CACvB;CACA;CACA;CACA;CACA;CAEA,YACI,YACA,UACA,UACA,QACF;EACE,KAAKA,UAAU,aAAaC,mBAAyB,WAAW,OAAO;EACvE,KAAKC,YAAY;EACjB,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,mBAAmB,sBAAsB,MAAM;CACxD;;;;;;CAOA,MAAM,KACF,QAA4B,CAAC,GAC7B,SAC+E;EAC/E,MAAM,KAAKD,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,iBAAiB,MAAM,0BAA0B,QAAQ;EAC/D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAC3B,gBAAgB,cAAc,GAC9B,qBAAqB,OAAO,CAChC;EACA,OAAO;GACH,QAAQ,MAAM,EAAE,MAAM,KAAKK,gBAAgB,GAAG,IAAI,MAAM;GACxD,WAAW,MAAM,EAAE,MAAM,0BAA0B,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC;GAC1E,eAAe,IAAI;EACvB;CACJ;;;;CAKA,UAAU,OAA6B;EACnC,MAAM,UAAU,uBAAuB,MAAM,UAAU;EACvD,OAAO,8BAA8B,KAAKH,WAAW;GACjD;GACA,QAAQI;GACR,aAAa,KAAKF,QAAQ,MAAM;GAChC,gBAAgB,SAAS;IACrB,MAAM,QAAQ,MAAM,KAAKC,kBAAkB,IAAI;IAC/C,MAAM,QAAQ,KAAK;GACvB;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
|
|
@@ -22,6 +22,10 @@ declare function createUserTradeSchema(scales: SdkScales): v.SchemaWithPipe<read
|
|
|
22
22
|
readonly feeIsRebate: v.BooleanSchema<undefined>;
|
|
23
23
|
readonly tsNs: v.BigintSchema<undefined>;
|
|
24
24
|
readonly matchId: v.BigintSchema<undefined>;
|
|
25
|
+
readonly lineage: v.OptionalSchema<v.ObjectSchema<{
|
|
26
|
+
readonly id: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
27
|
+
readonly generation: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>;
|
|
28
|
+
}, undefined>, undefined>;
|
|
25
29
|
}, undefined>, v.TransformAction<{
|
|
26
30
|
orderId: bigint;
|
|
27
31
|
symbolId: number;
|
|
@@ -41,7 +45,15 @@ declare function createUserTradeSchema(scales: SdkScales): v.SchemaWithPipe<read
|
|
|
41
45
|
feeIsRebate: boolean;
|
|
42
46
|
tsNs: bigint;
|
|
43
47
|
matchId: bigint;
|
|
48
|
+
lineage?: {
|
|
49
|
+
id: string;
|
|
50
|
+
generation: number;
|
|
51
|
+
} | undefined;
|
|
44
52
|
}, {
|
|
53
|
+
lineage?: {
|
|
54
|
+
id: string;
|
|
55
|
+
generation: number;
|
|
56
|
+
} | undefined;
|
|
45
57
|
feeIsRebate: boolean;
|
|
46
58
|
tsNs: string;
|
|
47
59
|
tsIso: string;
|
|
@@ -60,29 +72,133 @@ declare function createUserTradeSchema(scales: SdkScales): v.SchemaWithPipe<read
|
|
|
60
72
|
/** A JSON-safe authenticated trade fill returned by the SDK. */
|
|
61
73
|
type Trade = v.InferOutput<ReturnType<typeof createUserTradeSchema>>;
|
|
62
74
|
/** Validates filters accepted by {@link TradesService.list}. */
|
|
63
|
-
declare const GetUserTradesInputSchema: v.SchemaWithPipe<readonly [v.UnionSchema<[v.StrictObjectSchema<{
|
|
75
|
+
declare const GetUserTradesInputSchema: v.SchemaWithPipe<readonly [v.UnionSchema<[v.UnionSchema<readonly [v.StrictObjectSchema<{
|
|
64
76
|
readonly symbolId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.TransformAction<string, number>]>, undefined>, v.TransformAction<number | undefined, number | undefined>]>;
|
|
65
77
|
readonly afterMatchId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
66
78
|
readonly side: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<["buy", "sell"], undefined>, undefined>, v.TransformAction<"buy" | "sell" | undefined, Side.BUY | Side.SELL | undefined>]>;
|
|
67
79
|
readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
68
80
|
readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
69
|
-
readonly limit: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
81
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
70
82
|
readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>;
|
|
83
|
+
readonly includeTransfers: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
71
84
|
readonly account: v.OptionalSchema<v.UnionSchema<[v.PicklistSchema<["active", "main"], undefined>, v.StrictObjectSchema<{
|
|
72
85
|
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
73
86
|
}, undefined>], undefined>, undefined>;
|
|
87
|
+
} & {
|
|
88
|
+
readonly orderId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
89
|
+
readonly lineageId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
90
|
+
readonly throughGeneration: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
|
|
91
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
92
|
+
readonly symbolId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.TransformAction<string, number>]>, undefined>, v.TransformAction<number | undefined, number | undefined>]>;
|
|
93
|
+
readonly afterMatchId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
94
|
+
readonly side: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<["buy", "sell"], undefined>, undefined>, v.TransformAction<"buy" | "sell" | undefined, Side.BUY | Side.SELL | undefined>]>;
|
|
95
|
+
readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
96
|
+
readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
97
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
98
|
+
readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>;
|
|
99
|
+
readonly includeTransfers: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
100
|
+
readonly account: v.OptionalSchema<v.UnionSchema<[v.PicklistSchema<["active", "main"], undefined>, v.StrictObjectSchema<{
|
|
101
|
+
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
102
|
+
}, undefined>], undefined>, undefined>;
|
|
103
|
+
} & {
|
|
104
|
+
readonly orderId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>, v.CheckAction<bigint, `${string} must be greater than zero`>]>;
|
|
105
|
+
readonly lineageId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
106
|
+
readonly throughGeneration: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
|
|
107
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
108
|
+
readonly symbolId: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.TransformAction<string, number>]>, undefined>, v.TransformAction<number | undefined, number | undefined>]>;
|
|
109
|
+
readonly afterMatchId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
110
|
+
readonly side: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<["buy", "sell"], undefined>, undefined>, v.TransformAction<"buy" | "sell" | undefined, Side.BUY | Side.SELL | undefined>]>;
|
|
111
|
+
readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
112
|
+
readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
113
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
114
|
+
readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>;
|
|
115
|
+
readonly includeTransfers: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
116
|
+
readonly account: v.OptionalSchema<v.UnionSchema<[v.PicklistSchema<["active", "main"], undefined>, v.StrictObjectSchema<{
|
|
117
|
+
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
118
|
+
}, undefined>], undefined>, undefined>;
|
|
119
|
+
} & {
|
|
120
|
+
readonly orderId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
121
|
+
readonly lineageId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>, v.CheckAction<bigint, `${string} must be greater than zero`>]>;
|
|
122
|
+
readonly throughGeneration: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
|
|
123
|
+
}, undefined>], undefined>, v.UnionSchema<readonly [v.StrictObjectSchema<{
|
|
124
|
+
readonly symbolId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.TransformAction<string, number>]>, v.CheckAction<number, "symbolId is required when afterMatchId is set">]>;
|
|
125
|
+
readonly afterMatchId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint | undefined>]>;
|
|
126
|
+
readonly side: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<["buy", "sell"], undefined>, undefined>, v.TransformAction<"buy" | "sell" | undefined, Side.BUY | Side.SELL | undefined>]>;
|
|
127
|
+
readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
128
|
+
readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
129
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
130
|
+
readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>;
|
|
131
|
+
readonly includeTransfers: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
132
|
+
readonly account: v.OptionalSchema<v.UnionSchema<[v.PicklistSchema<["active", "main"], undefined>, v.StrictObjectSchema<{
|
|
133
|
+
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
134
|
+
}, undefined>], undefined>, undefined>;
|
|
135
|
+
} & {
|
|
136
|
+
readonly orderId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
137
|
+
readonly lineageId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
138
|
+
readonly throughGeneration: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
|
|
74
139
|
}, undefined>, v.StrictObjectSchema<{
|
|
75
140
|
readonly symbolId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.TransformAction<string, number>]>, v.CheckAction<number, "symbolId is required when afterMatchId is set">]>;
|
|
76
141
|
readonly afterMatchId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint | undefined>]>;
|
|
77
142
|
readonly side: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<["buy", "sell"], undefined>, undefined>, v.TransformAction<"buy" | "sell" | undefined, Side.BUY | Side.SELL | undefined>]>;
|
|
78
143
|
readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
79
144
|
readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
80
|
-
readonly limit: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
|
|
145
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
81
146
|
readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>;
|
|
147
|
+
readonly includeTransfers: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
82
148
|
readonly account: v.OptionalSchema<v.UnionSchema<[v.PicklistSchema<["active", "main"], undefined>, v.StrictObjectSchema<{
|
|
83
149
|
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
84
150
|
}, undefined>], undefined>, undefined>;
|
|
85
|
-
}
|
|
151
|
+
} & {
|
|
152
|
+
readonly orderId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>, v.CheckAction<bigint, `${string} must be greater than zero`>]>;
|
|
153
|
+
readonly lineageId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
154
|
+
readonly throughGeneration: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
|
|
155
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
156
|
+
readonly symbolId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.TransformAction<string, number>]>, v.CheckAction<number, "symbolId is required when afterMatchId is set">]>;
|
|
157
|
+
readonly afterMatchId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint | undefined>]>;
|
|
158
|
+
readonly side: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<["buy", "sell"], undefined>, undefined>, v.TransformAction<"buy" | "sell" | undefined, Side.BUY | Side.SELL | undefined>]>;
|
|
159
|
+
readonly startTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
160
|
+
readonly endTsNs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>, v.TransformAction<string | undefined, bigint | undefined>]>;
|
|
161
|
+
readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 1000, undefined>]>, undefined>;
|
|
162
|
+
readonly pageToken: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction]>, undefined>;
|
|
163
|
+
readonly includeTransfers: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
164
|
+
readonly account: v.OptionalSchema<v.UnionSchema<[v.PicklistSchema<["active", "main"], undefined>, v.StrictObjectSchema<{
|
|
165
|
+
readonly subaccountId: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
166
|
+
}, undefined>], undefined>, undefined>;
|
|
167
|
+
} & {
|
|
168
|
+
readonly orderId: v.OptionalSchema<v.NeverSchema<undefined>, undefined>;
|
|
169
|
+
readonly lineageId: v.SchemaWithPipe<readonly [v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.TransformAction<string, bigint>]>, v.CheckAction<bigint, `${string} must be greater than zero`>]>;
|
|
170
|
+
readonly throughGeneration: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>, undefined>;
|
|
171
|
+
}, undefined>], undefined>], ({ input }: v.UnionIssue<v.StringIssue | v.PicklistIssue | v.StrictObjectIssue | v.MinLengthIssue<string, 1> | v.UnionIssue<v.StringIssue | v.PicklistIssue | v.StrictObjectIssue | v.MinLengthIssue<string, 1>> | v.NumberIssue | v.IntegerIssue<number> | v.MaxValueIssue<number, 4294967295> | v.CheckIssue<bigint> | v.BooleanIssue | v.NeverIssue | v.MinValueIssue<number, 1> | v.MaxValueIssue<number, 1000> | v.UnionIssue<v.StringIssue | v.PicklistIssue | v.StrictObjectIssue | v.MinLengthIssue<string, 1> | v.UnionIssue<v.StringIssue | v.PicklistIssue | v.StrictObjectIssue | v.MinLengthIssue<string, 1>> | v.NumberIssue | v.IntegerIssue<number> | v.MaxValueIssue<number, 4294967295> | v.CheckIssue<bigint> | v.BooleanIssue | v.NeverIssue | v.MinValueIssue<number, 1> | v.MaxValueIssue<number, 1000>> | v.CheckIssue<number> | v.UnionIssue<v.StringIssue | v.PicklistIssue | v.StrictObjectIssue | v.MinLengthIssue<string, 1> | v.UnionIssue<v.StringIssue | v.PicklistIssue | v.StrictObjectIssue | v.MinLengthIssue<string, 1>> | v.NumberIssue | v.IntegerIssue<number> | v.MaxValueIssue<number, 4294967295> | v.CheckIssue<bigint> | v.BooleanIssue | v.NeverIssue | v.MinValueIssue<number, 1> | v.MaxValueIssue<number, 1000> | v.CheckIssue<number>>>) => "symbolId is required when afterMatchId is set" | "Provide at most one of orderId or lineageId">, v.TransformAction<{
|
|
172
|
+
symbolId?: number | undefined;
|
|
173
|
+
afterMatchId?: undefined;
|
|
174
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
175
|
+
startTsNs?: bigint | undefined;
|
|
176
|
+
endTsNs?: bigint | undefined;
|
|
177
|
+
limit?: number | undefined;
|
|
178
|
+
pageToken?: string | undefined;
|
|
179
|
+
includeTransfers?: boolean | undefined;
|
|
180
|
+
account?: "active" | "main" | {
|
|
181
|
+
subaccountId: string;
|
|
182
|
+
} | undefined;
|
|
183
|
+
orderId?: undefined;
|
|
184
|
+
lineageId?: undefined;
|
|
185
|
+
throughGeneration?: number | undefined;
|
|
186
|
+
} | {
|
|
187
|
+
symbolId?: number | undefined;
|
|
188
|
+
afterMatchId?: undefined;
|
|
189
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
190
|
+
startTsNs?: bigint | undefined;
|
|
191
|
+
endTsNs?: bigint | undefined;
|
|
192
|
+
limit?: number | undefined;
|
|
193
|
+
pageToken?: string | undefined;
|
|
194
|
+
includeTransfers?: boolean | undefined;
|
|
195
|
+
account?: "active" | "main" | {
|
|
196
|
+
subaccountId: string;
|
|
197
|
+
} | undefined;
|
|
198
|
+
orderId: bigint;
|
|
199
|
+
lineageId?: undefined;
|
|
200
|
+
throughGeneration?: number | undefined;
|
|
201
|
+
} | {
|
|
86
202
|
symbolId?: number | undefined;
|
|
87
203
|
afterMatchId?: undefined;
|
|
88
204
|
side?: Side.BUY | Side.SELL | undefined;
|
|
@@ -90,9 +206,13 @@ declare const GetUserTradesInputSchema: v.SchemaWithPipe<readonly [v.UnionSchema
|
|
|
90
206
|
endTsNs?: bigint | undefined;
|
|
91
207
|
limit?: number | undefined;
|
|
92
208
|
pageToken?: string | undefined;
|
|
209
|
+
includeTransfers?: boolean | undefined;
|
|
93
210
|
account?: "active" | "main" | {
|
|
94
211
|
subaccountId: string;
|
|
95
212
|
} | undefined;
|
|
213
|
+
orderId?: undefined;
|
|
214
|
+
lineageId: bigint;
|
|
215
|
+
throughGeneration?: number | undefined;
|
|
96
216
|
} | {
|
|
97
217
|
symbolId: number;
|
|
98
218
|
afterMatchId: bigint | undefined;
|
|
@@ -101,10 +221,51 @@ declare const GetUserTradesInputSchema: v.SchemaWithPipe<readonly [v.UnionSchema
|
|
|
101
221
|
endTsNs?: bigint | undefined;
|
|
102
222
|
limit?: number | undefined;
|
|
103
223
|
pageToken?: string | undefined;
|
|
224
|
+
includeTransfers?: boolean | undefined;
|
|
104
225
|
account?: "active" | "main" | {
|
|
105
226
|
subaccountId: string;
|
|
106
227
|
} | undefined;
|
|
228
|
+
orderId?: undefined;
|
|
229
|
+
lineageId?: undefined;
|
|
230
|
+
throughGeneration?: number | undefined;
|
|
231
|
+
} | {
|
|
232
|
+
symbolId: number;
|
|
233
|
+
afterMatchId: bigint | undefined;
|
|
234
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
235
|
+
startTsNs?: bigint | undefined;
|
|
236
|
+
endTsNs?: bigint | undefined;
|
|
237
|
+
limit?: number | undefined;
|
|
238
|
+
pageToken?: string | undefined;
|
|
239
|
+
includeTransfers?: boolean | undefined;
|
|
240
|
+
account?: "active" | "main" | {
|
|
241
|
+
subaccountId: string;
|
|
242
|
+
} | undefined;
|
|
243
|
+
orderId: bigint;
|
|
244
|
+
lineageId?: undefined;
|
|
245
|
+
throughGeneration?: number | undefined;
|
|
246
|
+
} | {
|
|
247
|
+
symbolId: number;
|
|
248
|
+
afterMatchId: bigint | undefined;
|
|
249
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
250
|
+
startTsNs?: bigint | undefined;
|
|
251
|
+
endTsNs?: bigint | undefined;
|
|
252
|
+
limit?: number | undefined;
|
|
253
|
+
pageToken?: string | undefined;
|
|
254
|
+
includeTransfers?: boolean | undefined;
|
|
255
|
+
account?: "active" | "main" | {
|
|
256
|
+
subaccountId: string;
|
|
257
|
+
} | undefined;
|
|
258
|
+
orderId?: undefined;
|
|
259
|
+
lineageId: bigint;
|
|
260
|
+
throughGeneration?: number | undefined;
|
|
107
261
|
}, {
|
|
262
|
+
executionScope: {
|
|
263
|
+
readonly case: "orderId";
|
|
264
|
+
readonly value: bigint;
|
|
265
|
+
} | {
|
|
266
|
+
readonly case: "lineageId";
|
|
267
|
+
readonly value: bigint;
|
|
268
|
+
} | undefined;
|
|
108
269
|
subaccountId: bigint | undefined;
|
|
109
270
|
symbolId?: number | undefined;
|
|
110
271
|
afterMatchId?: undefined;
|
|
@@ -113,7 +274,88 @@ declare const GetUserTradesInputSchema: v.SchemaWithPipe<readonly [v.UnionSchema
|
|
|
113
274
|
endTsNs?: bigint | undefined;
|
|
114
275
|
limit?: number | undefined;
|
|
115
276
|
pageToken?: string | undefined;
|
|
277
|
+
includeTransfers?: boolean | undefined;
|
|
278
|
+
throughGeneration?: number | undefined;
|
|
116
279
|
} | {
|
|
280
|
+
executionScope: {
|
|
281
|
+
readonly case: "orderId";
|
|
282
|
+
readonly value: bigint;
|
|
283
|
+
} | {
|
|
284
|
+
readonly case: "lineageId";
|
|
285
|
+
readonly value: bigint;
|
|
286
|
+
} | undefined;
|
|
287
|
+
subaccountId: bigint | undefined;
|
|
288
|
+
symbolId?: number | undefined;
|
|
289
|
+
afterMatchId?: undefined;
|
|
290
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
291
|
+
startTsNs?: bigint | undefined;
|
|
292
|
+
endTsNs?: bigint | undefined;
|
|
293
|
+
limit?: number | undefined;
|
|
294
|
+
pageToken?: string | undefined;
|
|
295
|
+
includeTransfers?: boolean | undefined;
|
|
296
|
+
throughGeneration?: number | undefined;
|
|
297
|
+
} | {
|
|
298
|
+
executionScope: {
|
|
299
|
+
readonly case: "orderId";
|
|
300
|
+
readonly value: bigint;
|
|
301
|
+
} | {
|
|
302
|
+
readonly case: "lineageId";
|
|
303
|
+
readonly value: bigint;
|
|
304
|
+
} | undefined;
|
|
305
|
+
subaccountId: bigint | undefined;
|
|
306
|
+
symbolId?: number | undefined;
|
|
307
|
+
afterMatchId?: undefined;
|
|
308
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
309
|
+
startTsNs?: bigint | undefined;
|
|
310
|
+
endTsNs?: bigint | undefined;
|
|
311
|
+
limit?: number | undefined;
|
|
312
|
+
pageToken?: string | undefined;
|
|
313
|
+
includeTransfers?: boolean | undefined;
|
|
314
|
+
throughGeneration?: number | undefined;
|
|
315
|
+
} | {
|
|
316
|
+
executionScope: {
|
|
317
|
+
readonly case: "orderId";
|
|
318
|
+
readonly value: bigint;
|
|
319
|
+
} | {
|
|
320
|
+
readonly case: "lineageId";
|
|
321
|
+
readonly value: bigint;
|
|
322
|
+
} | undefined;
|
|
323
|
+
subaccountId: bigint | undefined;
|
|
324
|
+
symbolId: number;
|
|
325
|
+
afterMatchId: bigint | undefined;
|
|
326
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
327
|
+
startTsNs?: bigint | undefined;
|
|
328
|
+
endTsNs?: bigint | undefined;
|
|
329
|
+
limit?: number | undefined;
|
|
330
|
+
pageToken?: string | undefined;
|
|
331
|
+
includeTransfers?: boolean | undefined;
|
|
332
|
+
throughGeneration?: number | undefined;
|
|
333
|
+
} | {
|
|
334
|
+
executionScope: {
|
|
335
|
+
readonly case: "orderId";
|
|
336
|
+
readonly value: bigint;
|
|
337
|
+
} | {
|
|
338
|
+
readonly case: "lineageId";
|
|
339
|
+
readonly value: bigint;
|
|
340
|
+
} | undefined;
|
|
341
|
+
subaccountId: bigint | undefined;
|
|
342
|
+
symbolId: number;
|
|
343
|
+
afterMatchId: bigint | undefined;
|
|
344
|
+
side?: Side.BUY | Side.SELL | undefined;
|
|
345
|
+
startTsNs?: bigint | undefined;
|
|
346
|
+
endTsNs?: bigint | undefined;
|
|
347
|
+
limit?: number | undefined;
|
|
348
|
+
pageToken?: string | undefined;
|
|
349
|
+
includeTransfers?: boolean | undefined;
|
|
350
|
+
throughGeneration?: number | undefined;
|
|
351
|
+
} | {
|
|
352
|
+
executionScope: {
|
|
353
|
+
readonly case: "orderId";
|
|
354
|
+
readonly value: bigint;
|
|
355
|
+
} | {
|
|
356
|
+
readonly case: "lineageId";
|
|
357
|
+
readonly value: bigint;
|
|
358
|
+
} | undefined;
|
|
117
359
|
subaccountId: bigint | undefined;
|
|
118
360
|
symbolId: number;
|
|
119
361
|
afterMatchId: bigint | undefined;
|
|
@@ -122,6 +364,8 @@ declare const GetUserTradesInputSchema: v.SchemaWithPipe<readonly [v.UnionSchema
|
|
|
122
364
|
endTsNs?: bigint | undefined;
|
|
123
365
|
limit?: number | undefined;
|
|
124
366
|
pageToken?: string | undefined;
|
|
367
|
+
includeTransfers?: boolean | undefined;
|
|
368
|
+
throughGeneration?: number | undefined;
|
|
125
369
|
}>]>;
|
|
126
370
|
/**
|
|
127
371
|
* Filters accepted by {@link TradesService.list}. Passing `afterMatchId` requires
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trades.schemas.d.ts","names":[],"sources":["../../../src/services/trades/trades.schemas.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"trades.schemas.d.ts","names":[],"sources":["../../../src/services/trades/trades.schemas.ts"],"mappings":";;;;;iBAyBgB,sBAAsB,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0D3C,QAAQ,EAAE,YAAY,kBAAkB;;cAmFvC,0BAAwB,EAAA,yBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8BzB,qBAAqB,EAAE,kBAAkB"}
|
|
@@ -2,13 +2,16 @@ import { requiredEnumLabel } from "../../shared/proto-enum-codec.js";
|
|
|
2
2
|
import { formatId } from "../../utils/base58-id.js";
|
|
3
3
|
import { parseOptionalUint64DecimalStrict } from "../../utils/numbers.js";
|
|
4
4
|
import { tsNsToISO, tsNsToMs } from "../../utils/time.js";
|
|
5
|
+
import { PROTOBUF_UINT32_MAX } from "../../shared/wire-bounds.js";
|
|
5
6
|
import { optionalUint64DecimalFilterSchema } from "../../shared/schemas.js";
|
|
6
7
|
import { SideSchema } from "../shared.js";
|
|
7
8
|
import { AccountScopeInputEntries, accountScopeToSubaccountId } from "../../shared/account-scope.js";
|
|
8
9
|
import { scaledToDecimalOutput } from "../../shared/decimal-surface.js";
|
|
9
10
|
import { fromU128 } from "../../utils/u128.js";
|
|
11
|
+
import { OrderLineageSchema } from "../orders/order-lineage.schemas.js";
|
|
10
12
|
import { FeeAssetCodec, OrderSideCodec } from "../orders/order-enums.codecs.js";
|
|
11
13
|
import { TradeSideCodec } from "./trades.codecs.js";
|
|
14
|
+
import { positiveOrderIdInputSchema } from "../orders/orders-identifiers.schemas.js";
|
|
12
15
|
import * as v from "valibot";
|
|
13
16
|
//#region src/services/trades/trades.schemas.ts
|
|
14
17
|
const U128Schema = v.object({
|
|
@@ -29,7 +32,8 @@ function createUserTradeSchema(scales) {
|
|
|
29
32
|
referralShareAmountE18: v.optional(U128Schema),
|
|
30
33
|
feeIsRebate: v.boolean(),
|
|
31
34
|
tsNs: v.bigint(),
|
|
32
|
-
matchId: v.bigint()
|
|
35
|
+
matchId: v.bigint(),
|
|
36
|
+
lineage: v.optional(OrderLineageSchema)
|
|
33
37
|
}), v.transform((t) => {
|
|
34
38
|
const feeAsset = requiredEnumLabel(FeeAssetCodec.protoToOutput, t.feeAsset, "UserTradeSchema", "fee asset");
|
|
35
39
|
return {
|
|
@@ -46,37 +50,73 @@ function createUserTradeSchema(scales) {
|
|
|
46
50
|
tsNs: t.tsNs.toString(),
|
|
47
51
|
tsIso: tsNsToISO(t.tsNs),
|
|
48
52
|
tsMs: tsNsToMs(t.tsNs),
|
|
49
|
-
matchId: t.matchId.toString()
|
|
53
|
+
matchId: t.matchId.toString(),
|
|
54
|
+
...t.lineage === void 0 ? {} : { lineage: t.lineage }
|
|
50
55
|
};
|
|
51
56
|
}));
|
|
52
57
|
}
|
|
53
58
|
const AFTER_MATCH_REQUIRES_SYMBOL = "symbolId is required when afterMatchId is set";
|
|
59
|
+
const EXECUTION_SCOPE_CONFLICT = "Provide at most one of orderId or lineageId";
|
|
54
60
|
const SymbolIdStringSchema = v.pipe(v.string(), v.trim(), v.transform((value) => Number(value)));
|
|
55
61
|
const GetUserTradesCommonEntries = {
|
|
56
62
|
...AccountScopeInputEntries,
|
|
57
63
|
side: v.pipe(v.optional(SideSchema), v.transform((v) => v ? TradeSideCodec.inputToProto[v] : void 0)),
|
|
58
64
|
startTsNs: optionalUint64DecimalFilterSchema("startTsNs"),
|
|
59
65
|
endTsNs: optionalUint64DecimalFilterSchema("endTsNs"),
|
|
60
|
-
limit: v.optional(v.number()),
|
|
61
|
-
pageToken: v.optional(v.pipe(v.string(), v.trim()))
|
|
66
|
+
limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1e3))),
|
|
67
|
+
pageToken: v.optional(v.pipe(v.string(), v.trim())),
|
|
68
|
+
includeTransfers: v.optional(v.boolean())
|
|
62
69
|
};
|
|
70
|
+
const ThroughGenerationSchema = v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(PROTOBUF_UINT32_MAX)));
|
|
71
|
+
function userTradesScopeSchemas(entries) {
|
|
72
|
+
return [
|
|
73
|
+
v.strictObject({
|
|
74
|
+
...entries,
|
|
75
|
+
orderId: v.optional(v.never()),
|
|
76
|
+
lineageId: v.optional(v.never()),
|
|
77
|
+
throughGeneration: ThroughGenerationSchema
|
|
78
|
+
}),
|
|
79
|
+
v.strictObject({
|
|
80
|
+
...entries,
|
|
81
|
+
orderId: positiveOrderIdInputSchema("orderId"),
|
|
82
|
+
lineageId: v.optional(v.never()),
|
|
83
|
+
throughGeneration: ThroughGenerationSchema
|
|
84
|
+
}),
|
|
85
|
+
v.strictObject({
|
|
86
|
+
...entries,
|
|
87
|
+
orderId: v.optional(v.never()),
|
|
88
|
+
lineageId: positiveOrderIdInputSchema("lineageId"),
|
|
89
|
+
throughGeneration: ThroughGenerationSchema
|
|
90
|
+
})
|
|
91
|
+
];
|
|
92
|
+
}
|
|
63
93
|
/** Browse mode: optional symbol filter, no replay cursor. */
|
|
64
|
-
const BrowseUserTradesInputSchema = v.
|
|
94
|
+
const BrowseUserTradesInputSchema = v.union(userTradesScopeSchemas({
|
|
65
95
|
...GetUserTradesCommonEntries,
|
|
66
96
|
symbolId: v.pipe(v.optional(SymbolIdStringSchema), v.transform((sid) => sid !== void 0 && Number.isFinite(sid) && sid > 0 ? sid : void 0)),
|
|
67
97
|
afterMatchId: v.optional(v.never())
|
|
68
|
-
});
|
|
98
|
+
}));
|
|
69
99
|
/** Replay mode: `afterMatchId` cursor, which the backend only accepts scoped to a symbol. */
|
|
70
|
-
const ReplayUserTradesInputSchema = v.
|
|
100
|
+
const ReplayUserTradesInputSchema = v.union(userTradesScopeSchemas({
|
|
71
101
|
...GetUserTradesCommonEntries,
|
|
72
102
|
symbolId: v.pipe(SymbolIdStringSchema, v.check((sid) => Number.isInteger(sid) && sid > 0, AFTER_MATCH_REQUIRES_SYMBOL)),
|
|
73
103
|
afterMatchId: v.pipe(v.string(), v.trim(), v.minLength(1), v.transform((value) => parseOptionalUint64DecimalStrict(value, "afterMatchId")))
|
|
74
|
-
});
|
|
104
|
+
}));
|
|
75
105
|
/** Validates filters accepted by {@link TradesService.list}. */
|
|
76
|
-
const GetUserTradesInputSchema = v.pipe(v.union([BrowseUserTradesInputSchema, ReplayUserTradesInputSchema], AFTER_MATCH_REQUIRES_SYMBOL), v.transform(({ account, ...input }) =>
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
106
|
+
const GetUserTradesInputSchema = v.pipe(v.union([BrowseUserTradesInputSchema, ReplayUserTradesInputSchema], ({ input }) => typeof input === "object" && input !== null && "orderId" in input && input.orderId !== void 0 && "lineageId" in input && input.lineageId !== void 0 ? EXECUTION_SCOPE_CONFLICT : AFTER_MATCH_REQUIRES_SYMBOL), v.transform(({ account, orderId, lineageId, ...input }) => {
|
|
107
|
+
const executionScope = orderId !== void 0 ? {
|
|
108
|
+
case: "orderId",
|
|
109
|
+
value: orderId
|
|
110
|
+
} : lineageId !== void 0 ? {
|
|
111
|
+
case: "lineageId",
|
|
112
|
+
value: lineageId
|
|
113
|
+
} : void 0;
|
|
114
|
+
return {
|
|
115
|
+
...input,
|
|
116
|
+
executionScope,
|
|
117
|
+
subaccountId: accountScopeToSubaccountId(account)
|
|
118
|
+
};
|
|
119
|
+
}));
|
|
80
120
|
//#endregion
|
|
81
121
|
export { GetUserTradesInputSchema, createUserTradeSchema };
|
|
82
122
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trades.schemas.js","names":[],"sources":["../../../src/services/trades/trades.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { tsNsToISO, tsNsToMs } from \"../../utils/time.js\";\nimport { SideSchema } from \"../shared.js\";\nimport { FeeAssetCodec, OrderSideCodec } from \"../orders/orders.codecs.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport { optionalUint64DecimalFilterSchema } from \"../../shared/schemas.js\";\nimport { parseOptionalUint64DecimalStrict } from \"../../utils/numbers.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { TradeSideCodec } from \"./trades.codecs.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { E18_SCALE, scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { fromU128 } from \"../../utils/u128.js\";\n\nconst U128Schema = v.object({\n hi: v.bigint(),\n lo: v.bigint(),\n});\n\n/** Parses a generated user-trade fill into the SDK's JSON-safe public shape. */\nexport function createUserTradeSchema(scales: SdkScales) {\n return v.pipe(\n v.object({\n orderId: v.bigint(),\n symbolId: v.number(),\n side: v.number(),\n isMaker: v.boolean(),\n feeAsset: v.number(),\n qtyScaled: v.bigint(),\n priceTicks: v.bigint(),\n feeAmountE18: v.optional(U128Schema),\n referralShareAmountE18: v.optional(U128Schema),\n feeIsRebate: v.boolean(),\n tsNs: v.bigint(),\n matchId: v.bigint(),\n }),\n v.transform((t) => {\n const feeAsset = requiredEnumLabel(\n FeeAssetCodec.protoToOutput,\n t.feeAsset,\n \"UserTradeSchema\",\n \"fee asset\",\n );\n return {\n orderId: formatId(t.orderId),\n symbolId: t.symbolId,\n sideLabel: requiredEnumLabel(\n OrderSideCodec.protoToOutput,\n t.side,\n \"UserTradeSchema\",\n \"side\",\n ),\n liquidityLabel: t.isMaker ? (\"maker\" as const) : (\"taker\" as const),\n feeAsset,\n qty: scaledToDecimalOutput(t.qtyScaled, scales.baseQty(t.symbolId)),\n price: scaledToDecimalOutput(t.priceTicks, scales.price()),\n fee: scaledToDecimalOutput(fromU128(t.feeAmountE18), E18_SCALE),\n ...(t.referralShareAmountE18 === undefined\n ? {}\n : {\n referralShare: scaledToDecimalOutput(\n fromU128(t.referralShareAmountE18),\n E18_SCALE,\n ),\n }),\n feeIsRebate: t.feeIsRebate,\n tsNs: t.tsNs.toString(),\n tsIso: tsNsToISO(t.tsNs),\n tsMs: tsNsToMs(t.tsNs),\n matchId: t.matchId.toString(),\n };\n }),\n );\n}\n\n/** A JSON-safe authenticated trade fill returned by the SDK. */\nexport type Trade = v.InferOutput<ReturnType<typeof createUserTradeSchema>>;\n\nconst AFTER_MATCH_REQUIRES_SYMBOL = \"symbolId is required when afterMatchId is set\";\n\nconst SymbolIdStringSchema = v.pipe(\n v.string(),\n v.trim(),\n v.transform((value) => Number(value)),\n);\n\nconst GetUserTradesCommonEntries = {\n ...AccountScopeInputEntries,\n side: v.pipe(\n v.optional(SideSchema),\n v.transform((v) => (v ? TradeSideCodec.inputToProto[v] : undefined)),\n ),\n startTsNs: optionalUint64DecimalFilterSchema(\"startTsNs\"),\n endTsNs: optionalUint64DecimalFilterSchema(\"endTsNs\"),\n limit: v.optional(v.number()),\n pageToken: v.optional(v.pipe(v.string(), v.trim())),\n};\n\n/** Browse mode: optional symbol filter, no replay cursor. */\nconst BrowseUserTradesInputSchema = v.strictObject({\n ...GetUserTradesCommonEntries,\n symbolId: v.pipe(\n v.optional(SymbolIdStringSchema),\n v.transform((sid) =>\n sid !== undefined && Number.isFinite(sid) && sid > 0 ? sid : undefined,\n ),\n ),\n afterMatchId: v.optional(v.never()),\n});\n\n/** Replay mode: `afterMatchId` cursor, which the backend only accepts scoped to a symbol. */\nconst ReplayUserTradesInputSchema = v.strictObject({\n ...GetUserTradesCommonEntries,\n symbolId: v.pipe(\n SymbolIdStringSchema,\n v.check((sid) => Number.isInteger(sid) && sid > 0, AFTER_MATCH_REQUIRES_SYMBOL),\n ),\n afterMatchId: v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.transform((value) => parseOptionalUint64DecimalStrict(value, \"afterMatchId\")),\n ),\n});\n\n/** Validates filters accepted by {@link TradesService.list}. */\nexport const GetUserTradesInputSchema = v.pipe(\n v.union(\n [BrowseUserTradesInputSchema, ReplayUserTradesInputSchema],\n AFTER_MATCH_REQUIRES_SYMBOL,\n ),\n v.transform(({ account, ...input }) => ({\n ...input,\n subaccountId: accountScopeToSubaccountId(account),\n })),\n);\n\n/**\n * Filters accepted by {@link TradesService.list}. Passing `afterMatchId` requires\n * `symbolId`; the two shapes form a discriminated union so the constraint is a compile error.\n */\nexport type GetUserTradesInput = v.InferInput<typeof GetUserTradesInputSchema>;\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,aAAa,EAAE,OAAO;CACxB,IAAI,EAAE,OAAO;CACb,IAAI,EAAE,OAAO;AACjB,CAAC;;AAGD,SAAgB,sBAAsB,QAAmB;CACrD,OAAO,EAAE,KACL,EAAE,OAAO;EACL,SAAS,EAAE,OAAO;EAClB,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,OAAO;EACf,SAAS,EAAE,QAAQ;EACnB,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,OAAO;EACpB,YAAY,EAAE,OAAO;EACrB,cAAc,EAAE,SAAS,UAAU;EACnC,wBAAwB,EAAE,SAAS,UAAU;EAC7C,aAAa,EAAE,QAAQ;EACvB,MAAM,EAAE,OAAO;EACf,SAAS,EAAE,OAAO;CACtB,CAAC,GACD,EAAE,WAAW,MAAM;EACf,MAAM,WAAW,kBACb,cAAc,eACd,EAAE,UACF,mBACA,WACJ;EACA,OAAO;GACH,SAAS,SAAS,EAAE,OAAO;GAC3B,UAAU,EAAE;GACZ,WAAW,kBACP,eAAe,eACf,EAAE,MACF,mBACA,MACJ;GACA,gBAAgB,EAAE,UAAW,UAAqB;GAClD;GACA,KAAK,sBAAsB,EAAE,WAAW,OAAO,QAAQ,EAAE,QAAQ,CAAC;GAClE,OAAO,sBAAsB,EAAE,YAAY,OAAO,MAAM,CAAC;GACzD,KAAK,sBAAsB,SAAS,EAAE,YAAY,GAAA,EAAY;GAC9D,GAAI,EAAE,2BAA2B,KAAA,IAC3B,CAAC,IACD,EACI,eAAe,sBACX,SAAS,EAAE,sBAAsB,GAAA,EAErC,EACJ;GACN,aAAa,EAAE;GACf,MAAM,EAAE,KAAK,SAAS;GACtB,OAAO,UAAU,EAAE,IAAI;GACvB,MAAM,SAAS,EAAE,IAAI;GACrB,SAAS,EAAE,QAAQ,SAAS;EAChC;CACJ,CAAC,CACL;AACJ;AAKA,MAAM,8BAA8B;AAEpC,MAAM,uBAAuB,EAAE,KAC3B,EAAE,OAAO,GACT,EAAE,KAAK,GACP,EAAE,WAAW,UAAU,OAAO,KAAK,CAAC,CACxC;AAEA,MAAM,6BAA6B;CAC/B,GAAG;CACH,MAAM,EAAE,KACJ,EAAE,SAAS,UAAU,GACrB,EAAE,WAAW,MAAO,IAAI,eAAe,aAAa,KAAK,KAAA,CAAU,CACvE;CACA,WAAW,kCAAkC,WAAW;CACxD,SAAS,kCAAkC,SAAS;CACpD,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;CAC5B,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD;;AAGA,MAAM,8BAA8B,EAAE,aAAa;CAC/C,GAAG;CACH,UAAU,EAAE,KACR,EAAE,SAAS,oBAAoB,GAC/B,EAAE,WAAW,QACT,QAAQ,KAAA,KAAa,OAAO,SAAS,GAAG,KAAK,MAAM,IAAI,MAAM,KAAA,CACjE,CACJ;CACA,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC;AACtC,CAAC;;AAGD,MAAM,8BAA8B,EAAE,aAAa;CAC/C,GAAG;CACH,UAAU,EAAE,KACR,sBACA,EAAE,OAAO,QAAQ,OAAO,UAAU,GAAG,KAAK,MAAM,GAAG,2BAA2B,CAClF;CACA,cAAc,EAAE,KACZ,EAAE,OAAO,GACT,EAAE,KAAK,GACP,EAAE,UAAU,CAAC,GACb,EAAE,WAAW,UAAU,iCAAiC,OAAO,cAAc,CAAC,CAClF;AACJ,CAAC;;AAGD,MAAa,2BAA2B,EAAE,KACtC,EAAE,MACE,CAAC,6BAA6B,2BAA2B,GACzD,2BACJ,GACA,EAAE,WAAW,EAAE,SAAS,GAAG,aAAa;CACpC,GAAG;CACH,cAAc,2BAA2B,OAAO;AACpD,EAAE,CACN"}
|
|
1
|
+
{"version":3,"file":"trades.schemas.js","names":[],"sources":["../../../src/services/trades/trades.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { tsNsToISO, tsNsToMs } from \"../../utils/time.js\";\nimport { SideSchema } from \"../shared.js\";\nimport { FeeAssetCodec, OrderSideCodec } from \"../orders/orders.codecs.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport { optionalUint64DecimalFilterSchema } from \"../../shared/schemas.js\";\nimport { parseOptionalUint64DecimalStrict } from \"../../utils/numbers.js\";\nimport { PROTOBUF_UINT32_MAX } from \"../../shared/wire-bounds.js\";\nimport {\n AccountScopeInputEntries,\n accountScopeToSubaccountId,\n} from \"../../shared/account-scope.js\";\nimport { TradeSideCodec } from \"./trades.codecs.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { E18_SCALE, scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { fromU128 } from \"../../utils/u128.js\";\nimport { OrderLineageSchema } from \"../orders/order-lineage.schemas.js\";\nimport { positiveOrderIdInputSchema } from \"../orders/orders-identifiers.schemas.js\";\n\nconst U128Schema = v.object({\n hi: v.bigint(),\n lo: v.bigint(),\n});\n\n/** Parses a generated user-trade fill into the SDK's JSON-safe public shape. */\nexport function createUserTradeSchema(scales: SdkScales) {\n return v.pipe(\n v.object({\n orderId: v.bigint(),\n symbolId: v.number(),\n side: v.number(),\n isMaker: v.boolean(),\n feeAsset: v.number(),\n qtyScaled: v.bigint(),\n priceTicks: v.bigint(),\n feeAmountE18: v.optional(U128Schema),\n referralShareAmountE18: v.optional(U128Schema),\n feeIsRebate: v.boolean(),\n tsNs: v.bigint(),\n matchId: v.bigint(),\n lineage: v.optional(OrderLineageSchema),\n }),\n v.transform((t) => {\n const feeAsset = requiredEnumLabel(\n FeeAssetCodec.protoToOutput,\n t.feeAsset,\n \"UserTradeSchema\",\n \"fee asset\",\n );\n return {\n orderId: formatId(t.orderId),\n symbolId: t.symbolId,\n sideLabel: requiredEnumLabel(\n OrderSideCodec.protoToOutput,\n t.side,\n \"UserTradeSchema\",\n \"side\",\n ),\n liquidityLabel: t.isMaker ? (\"maker\" as const) : (\"taker\" as const),\n feeAsset,\n qty: scaledToDecimalOutput(t.qtyScaled, scales.baseQty(t.symbolId)),\n price: scaledToDecimalOutput(t.priceTicks, scales.price()),\n fee: scaledToDecimalOutput(fromU128(t.feeAmountE18), E18_SCALE),\n ...(t.referralShareAmountE18 === undefined\n ? {}\n : {\n referralShare: scaledToDecimalOutput(\n fromU128(t.referralShareAmountE18),\n E18_SCALE,\n ),\n }),\n feeIsRebate: t.feeIsRebate,\n tsNs: t.tsNs.toString(),\n tsIso: tsNsToISO(t.tsNs),\n tsMs: tsNsToMs(t.tsNs),\n matchId: t.matchId.toString(),\n ...(t.lineage === undefined ? {} : { lineage: t.lineage }),\n };\n }),\n );\n}\n\n/** A JSON-safe authenticated trade fill returned by the SDK. */\nexport type Trade = v.InferOutput<ReturnType<typeof createUserTradeSchema>>;\n\nconst AFTER_MATCH_REQUIRES_SYMBOL = \"symbolId is required when afterMatchId is set\";\nconst EXECUTION_SCOPE_CONFLICT = \"Provide at most one of orderId or lineageId\";\n\nconst SymbolIdStringSchema = v.pipe(\n v.string(),\n v.trim(),\n v.transform((value) => Number(value)),\n);\n\nconst GetUserTradesCommonEntries = {\n ...AccountScopeInputEntries,\n side: v.pipe(\n v.optional(SideSchema),\n v.transform((v) => (v ? TradeSideCodec.inputToProto[v] : undefined)),\n ),\n startTsNs: optionalUint64DecimalFilterSchema(\"startTsNs\"),\n endTsNs: optionalUint64DecimalFilterSchema(\"endTsNs\"),\n limit: v.optional(v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1000))),\n pageToken: v.optional(v.pipe(v.string(), v.trim())),\n includeTransfers: v.optional(v.boolean()),\n};\n\nconst ThroughGenerationSchema = v.optional(\n v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(PROTOBUF_UINT32_MAX)),\n);\n\nfunction userTradesScopeSchemas<const TEntries extends v.ObjectEntries>(entries: TEntries) {\n return [\n v.strictObject({\n ...entries,\n orderId: v.optional(v.never()),\n lineageId: v.optional(v.never()),\n throughGeneration: ThroughGenerationSchema,\n }),\n v.strictObject({\n ...entries,\n orderId: positiveOrderIdInputSchema(\"orderId\"),\n lineageId: v.optional(v.never()),\n throughGeneration: ThroughGenerationSchema,\n }),\n v.strictObject({\n ...entries,\n orderId: v.optional(v.never()),\n lineageId: positiveOrderIdInputSchema(\"lineageId\"),\n throughGeneration: ThroughGenerationSchema,\n }),\n ] as const;\n}\n\n/** Browse mode: optional symbol filter, no replay cursor. */\nconst BrowseUserTradesInputSchema = v.union(\n userTradesScopeSchemas({\n ...GetUserTradesCommonEntries,\n symbolId: v.pipe(\n v.optional(SymbolIdStringSchema),\n v.transform((sid) =>\n sid !== undefined && Number.isFinite(sid) && sid > 0 ? sid : undefined,\n ),\n ),\n afterMatchId: v.optional(v.never()),\n }),\n);\n\n/** Replay mode: `afterMatchId` cursor, which the backend only accepts scoped to a symbol. */\nconst ReplayUserTradesInputSchema = v.union(\n userTradesScopeSchemas({\n ...GetUserTradesCommonEntries,\n symbolId: v.pipe(\n SymbolIdStringSchema,\n v.check((sid) => Number.isInteger(sid) && sid > 0, AFTER_MATCH_REQUIRES_SYMBOL),\n ),\n afterMatchId: v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.transform((value) => parseOptionalUint64DecimalStrict(value, \"afterMatchId\")),\n ),\n }),\n);\n\n/** Validates filters accepted by {@link TradesService.list}. */\nexport const GetUserTradesInputSchema = v.pipe(\n v.union([BrowseUserTradesInputSchema, ReplayUserTradesInputSchema], ({ input }) =>\n typeof input === \"object\" &&\n input !== null &&\n \"orderId\" in input &&\n input.orderId !== undefined &&\n \"lineageId\" in input &&\n input.lineageId !== undefined\n ? EXECUTION_SCOPE_CONFLICT\n : AFTER_MATCH_REQUIRES_SYMBOL,\n ),\n v.transform(({ account, orderId, lineageId, ...input }) => {\n const executionScope =\n orderId !== undefined\n ? ({ case: \"orderId\" as const, value: orderId } as const)\n : lineageId !== undefined\n ? ({ case: \"lineageId\" as const, value: lineageId } as const)\n : undefined;\n return {\n ...input,\n executionScope,\n subaccountId: accountScopeToSubaccountId(account),\n };\n }),\n);\n\n/**\n * Filters accepted by {@link TradesService.list}. Passing `afterMatchId` requires\n * `symbolId`; the two shapes form a discriminated union so the constraint is a compile error.\n */\nexport type GetUserTradesInput = v.InferInput<typeof GetUserTradesInputSchema>;\n"],"mappings":"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"}
|