@polyester/sdk 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/catalogs/decimal.js +6 -4
- package/dist/catalogs/decimal.js.map +1 -1
- package/dist/catalogs/readers.js +1 -1
- package/dist/gen/auth/v1/policies_pb.d.ts +28 -10
- package/dist/gen/auth/v1/policies_pb.d.ts.map +1 -1
- package/dist/gen/auth/v1/policies_pb.js +37 -31
- package/dist/gen/auth/v1/policies_pb.js.map +1 -1
- package/dist/gen/fees/v1/fees_pb.d.ts +0 -6
- package/dist/gen/fees/v1/fees_pb.d.ts.map +1 -1
- package/dist/gen/fees/v1/fees_pb.js +1 -1
- package/dist/gen/fees/v1/fees_pb.js.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts +6 -11
- package/dist/gen/marketoverview/v1/marketoverview_pb.d.ts.map +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js +1 -1
- package/dist/gen/marketoverview/v1/marketoverview_pb.js.map +1 -1
- package/dist/gen/orderbook/v1/orderbook_pb.d.ts +3 -3
- package/dist/gen/orderbook/v1/orderbook_pb.js +1 -1
- package/dist/gen/orderbook/v1/orderbook_pb.js.map +1 -1
- package/dist/gen/orders/v1/orders_pb.d.ts +11 -11
- package/dist/gen/orders/v1/orders_pb.js +1 -1
- package/dist/gen/orders/v1/orders_pb.js.map +1 -1
- package/dist/gen/triggers/v1/triggers_pb.d.ts +6 -12
- package/dist/gen/triggers/v1/triggers_pb.d.ts.map +1 -1
- package/dist/gen/triggers/v1/triggers_pb.js +1 -1
- package/dist/gen/triggers/v1/triggers_pb.js.map +1 -1
- package/dist/services/fees/fees.schemas.d.ts +2 -3
- package/dist/services/fees/fees.schemas.d.ts.map +1 -1
- package/dist/services/fees/fees.schemas.js +3 -4
- package/dist/services/fees/fees.schemas.js.map +1 -1
- package/dist/services/lifecycle/lifecycle.schemas.d.ts +42 -42
- package/dist/services/market-data/market-data.schemas.js +1 -1
- package/dist/services/market-overview/market-overview.d.ts +1 -1
- package/dist/services/market-overview/market-overview.js +1 -1
- package/dist/services/market-overview/market-overview.js.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.d.ts +20 -7
- package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
- package/dist/services/market-overview/market-overview.schemas.js +8 -6
- package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
- package/dist/services/orderbook/orderbook.d.ts +3 -4
- package/dist/services/orderbook/orderbook.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.js +13 -10
- package/dist/services/orderbook/orderbook.js.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.d.ts +8 -9
- package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -1
- package/dist/services/orderbook/orderbook.schemas.js +9 -8
- package/dist/services/orderbook/orderbook.schemas.js.map +1 -1
- package/dist/services/orders/orders-batch.schemas.d.ts +209 -35
- package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-batch.schemas.js +11 -9
- package/dist/services/orders/orders-batch.schemas.js.map +1 -1
- package/dist/services/orders/orders-input.schemas.d.ts +50 -50
- package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-input.schemas.js +12 -12
- package/dist/services/orders/orders-input.schemas.js.map +1 -1
- package/dist/services/orders/orders-modify.schemas.d.ts +18 -18
- package/dist/services/orders/orders-modify.schemas.js +1 -1
- package/dist/services/orders/orders-output.schemas.d.ts +6 -6
- package/dist/services/orders/orders-risk.schemas.d.ts +12 -12
- package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
- package/dist/services/orders/orders-risk.schemas.js +8 -7
- package/dist/services/orders/orders-risk.schemas.js.map +1 -1
- package/dist/services/orders/orders.d.ts +4 -4
- package/dist/services/orders/orders.d.ts.map +1 -1
- package/dist/services/orders/orders.js +7 -7
- package/dist/services/orders/orders.js.map +1 -1
- package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +15 -15
- package/dist/services/policies/shared.d.ts.map +1 -1
- package/dist/services/policies/shared.js +2 -1
- package/dist/services/policies/shared.js.map +1 -1
- package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +9 -9
- package/dist/services/shared.js +4 -1
- package/dist/services/shared.js.map +1 -1
- package/dist/services/subaccounts/subaccounts.schemas.d.ts +1 -1
- package/dist/services/trades/trades.schemas.js +1 -1
- package/dist/services/trailing-oneof-inputs.js +1 -1
- package/dist/services/triggers/trigger-child-order.schemas.js +5 -3
- package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.d.ts +36 -32
- package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
- package/dist/services/triggers/trigger-input.schemas.js +8 -8
- package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.d.ts +17 -18
- package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
- package/dist/services/triggers/triggers-output.schemas.js +3 -3
- package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
- package/dist/services/triggers/triggers.d.ts +2 -2
- package/dist/services/triggers/triggers.js +2 -2
- package/dist/services/triggers/triggers.js.map +1 -1
- package/dist/shared/decimal-surface.d.ts.map +1 -1
- package/dist/shared/decimal-surface.js +2 -2
- package/dist/shared/decimal-surface.js.map +1 -1
- package/package.json +2 -2
|
@@ -31,62 +31,62 @@ declare const CreateTriggerResultSchema: v.SchemaWithPipe<readonly [v.ObjectSche
|
|
|
31
31
|
type CreateTriggerResult = v.InferOutput<typeof CreateTriggerResultSchema>;
|
|
32
32
|
declare const CancelTriggerResultSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
33
33
|
readonly triggerId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
34
|
-
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "
|
|
34
|
+
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused">]>;
|
|
35
35
|
readonly tsNs: v.BigintSchema<undefined>;
|
|
36
36
|
}, undefined>, v.TransformAction<{
|
|
37
37
|
triggerId: string;
|
|
38
|
-
status: "unspecified" | "
|
|
38
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
39
39
|
tsNs: bigint;
|
|
40
40
|
}, {
|
|
41
41
|
ts: number;
|
|
42
42
|
tsNs: string;
|
|
43
43
|
triggerId: string;
|
|
44
|
-
status: "unspecified" | "
|
|
44
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
45
45
|
}>]>;
|
|
46
46
|
type CancelTriggerResult = v.InferOutput<typeof CancelTriggerResultSchema>;
|
|
47
47
|
declare const ModifyTriggerResultSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
48
48
|
readonly triggerId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
49
|
-
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "
|
|
49
|
+
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused">]>;
|
|
50
50
|
readonly tsNs: v.BigintSchema<undefined>;
|
|
51
51
|
}, undefined>, v.TransformAction<{
|
|
52
52
|
triggerId: string;
|
|
53
|
-
status: "unspecified" | "
|
|
53
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
54
54
|
tsNs: bigint;
|
|
55
55
|
}, {
|
|
56
56
|
ts: number;
|
|
57
57
|
tsNs: string;
|
|
58
58
|
triggerId: string;
|
|
59
|
-
status: "unspecified" | "
|
|
59
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
60
60
|
}>]>;
|
|
61
61
|
type ModifyTriggerResult = v.InferOutput<typeof ModifyTriggerResultSchema>;
|
|
62
62
|
declare const PauseTriggerResultSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
63
63
|
readonly triggerId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
64
|
-
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "
|
|
64
|
+
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused">]>;
|
|
65
65
|
readonly tsNs: v.BigintSchema<undefined>;
|
|
66
66
|
}, undefined>, v.TransformAction<{
|
|
67
67
|
triggerId: string;
|
|
68
|
-
status: "unspecified" | "
|
|
68
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
69
69
|
tsNs: bigint;
|
|
70
70
|
}, {
|
|
71
71
|
ts: number;
|
|
72
72
|
tsNs: string;
|
|
73
73
|
triggerId: string;
|
|
74
|
-
status: "unspecified" | "
|
|
74
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
75
75
|
}>]>;
|
|
76
76
|
type PauseTriggerResult = v.InferOutput<typeof PauseTriggerResultSchema>;
|
|
77
77
|
declare const ResumeTriggerResultSchema: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
78
78
|
readonly triggerId: v.SchemaWithPipe<readonly [v.BigintSchema<undefined>, v.TransformAction<bigint, string>]>;
|
|
79
|
-
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "
|
|
79
|
+
readonly status: v.SchemaWithPipe<readonly [v.EnumSchema<typeof TriggerStatus, undefined>, v.TransformAction<TriggerStatus, "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused">]>;
|
|
80
80
|
readonly tsNs: v.BigintSchema<undefined>;
|
|
81
81
|
}, undefined>, v.TransformAction<{
|
|
82
82
|
triggerId: string;
|
|
83
|
-
status: "unspecified" | "
|
|
83
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
84
84
|
tsNs: bigint;
|
|
85
85
|
}, {
|
|
86
86
|
ts: number;
|
|
87
87
|
tsNs: string;
|
|
88
88
|
triggerId: string;
|
|
89
|
-
status: "unspecified" | "
|
|
89
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
90
90
|
}>]>;
|
|
91
91
|
type ResumeTriggerResult = v.InferOutput<typeof ResumeTriggerResultSchema>;
|
|
92
92
|
type StopDetailsOutput = {
|
|
@@ -126,11 +126,11 @@ type LadderDetailsOutput = {
|
|
|
126
126
|
type TriggerDetailsOutput = StopDetailsOutput | TrailingDetailsOutput | TwapDetailsOutput | LadderDetailsOutput | {
|
|
127
127
|
case: undefined;
|
|
128
128
|
};
|
|
129
|
+
/** Builds the public trigger output schema using each record's symbol ID for quantity scaling. */
|
|
129
130
|
declare function createTriggerSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
130
131
|
readonly triggerId: v.BigintSchema<undefined>;
|
|
131
132
|
readonly subaccountId: v.BigintSchema<undefined>;
|
|
132
|
-
readonly symbolId: v.NumberSchema<undefined>;
|
|
133
|
-
readonly symbol: v.StringSchema<undefined>;
|
|
133
|
+
readonly symbolId: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.GtValueAction<number, 0, undefined>, v.MaxValueAction<number, 4294967295, undefined>]>;
|
|
134
134
|
readonly status: v.EnumSchema<typeof TriggerStatus, undefined>;
|
|
135
135
|
readonly parentOrderId: v.OptionalSchema<v.BigintSchema<undefined>, undefined>;
|
|
136
136
|
readonly qtyScaled: v.BigintSchema<undefined>;
|
|
@@ -318,7 +318,6 @@ declare function createTriggerSchema(scales: SdkScales): v.SchemaWithPipe<readon
|
|
|
318
318
|
triggerId: bigint;
|
|
319
319
|
subaccountId: bigint;
|
|
320
320
|
symbolId: number;
|
|
321
|
-
symbol: string;
|
|
322
321
|
status: TriggerStatus;
|
|
323
322
|
parentOrderId?: bigint | undefined;
|
|
324
323
|
qtyScaled: bigint;
|
|
@@ -506,8 +505,7 @@ declare function createTriggerSchema(scales: SdkScales): v.SchemaWithPipe<readon
|
|
|
506
505
|
triggerId: string;
|
|
507
506
|
subaccountId: string;
|
|
508
507
|
symbolId: number;
|
|
509
|
-
|
|
510
|
-
status: "unspecified" | "completed" | "failed" | "cancelled" | "created" | "armed" | "running" | "paused";
|
|
508
|
+
status: "unspecified" | "failed" | "cancelled" | "completed" | "created" | "armed" | "running" | "paused";
|
|
511
509
|
parentOrderId: string | undefined;
|
|
512
510
|
qty: string;
|
|
513
511
|
feeAsset: "unspecified" | "quote" | "base";
|
|
@@ -643,6 +641,7 @@ declare function createTriggerSchema(scales: SdkScales): v.SchemaWithPipe<readon
|
|
|
643
641
|
completedTs: number | undefined;
|
|
644
642
|
runtimeDetails: TriggerDetailsOutput;
|
|
645
643
|
}>]>;
|
|
644
|
+
/** A normalized standalone trigger record. */
|
|
646
645
|
type Trigger = v.InferOutput<ReturnType<typeof createTriggerSchema>>;
|
|
647
646
|
declare function createTriggerEventSchema(scales: SdkScales): v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
648
647
|
readonly triggerId: v.BigintSchema<undefined>;
|
|
@@ -670,7 +669,7 @@ declare function createTriggerEventSchema(scales: SdkScales): v.SchemaWithPipe<r
|
|
|
670
669
|
triggerId: string;
|
|
671
670
|
subaccountId: string;
|
|
672
671
|
symbolId: number;
|
|
673
|
-
triggerType: "unspecified" | "
|
|
672
|
+
triggerType: "unspecified" | "twap" | "ladder" | "stop_loss" | "take_profit" | "trailing_stop";
|
|
674
673
|
eventType: "unspecified" | "failed" | "updated" | "fired" | "canceled";
|
|
675
674
|
ts: number;
|
|
676
675
|
childSeq: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers-output.schemas.d.ts","names":[],"sources":["../../../src/services/triggers/triggers-output.schemas.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"triggers-output.schemas.d.ts","names":[],"sources":["../../../src/services/triggers/triggers-output.schemas.ts"],"mappings":";;;;;KA0BK;KAEA;KAEA;cA2BQ,2BAAyB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;KAc1B,sBAAsB,EAAE,mBAAmB;cAE1C,2BAAyB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;KAE1B,sBAAsB,EAAE,mBAAmB;cAE1C,2BAAyB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;KAE1B,sBAAsB,EAAE,mBAAmB;cAE1C,0BAAwB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;KACzB,qBAAqB,EAAE,mBAAmB;cAEzC,2BAAyB,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;KAC1B,sBAAsB,EAAE,mBAAmB;KA2Q3C;EACR;EACA;EACA,oBAAoB;EACpB,kBAAkB;;KAGV;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB,kBAAkB;;KAGV;EACR;EACA;EACA;EACA;EACA;;EAEA;;KAGQ;EACR;EACA;EACA;EACA;EACA,oBAAoB;;KAGZ,uBACN,oBACA,wBACA,oBACA;EACE;;;iBA0GQ,oBAAoB,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDzC,UAAU,EAAE,YAAY,kBAAkB;iBAEtC,yBAAyB,QAAQ,YAAS,EAAA,yBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0C9C,eAAe,EAAE,YAAY,kBAAkB;KAE/C;EACR,QAAQ;EACR"}
|
|
@@ -3,6 +3,7 @@ import { requiredEnumLabel } from "../../shared/proto-enum-codec.js";
|
|
|
3
3
|
import { formatId } from "../../utils/base58-id.js";
|
|
4
4
|
import { tsNsToMs } from "../../utils/time.js";
|
|
5
5
|
import { BigIntStringSchema, OptionalTimestampMsSchema, PublicIdSchema, TimestampSchema } from "../../shared/schemas.js";
|
|
6
|
+
import { SymbolIdInputSchema } from "../shared.js";
|
|
6
7
|
import { scaledToDecimalOutput } from "../../shared/decimal-surface.js";
|
|
7
8
|
import { FeeAssetCodec, OrderSideCodec, SelfTradePreventionModeCodec, TriggerPriceSourceCodec } from "../orders/order-enums.codecs.js";
|
|
8
9
|
import { LadderDistribution, TriggerEventType, TriggerStatus, TriggerType } from "../../gen/triggers/v1/triggers_pb.js";
|
|
@@ -304,12 +305,12 @@ function transformTriggerDetails(details, scales, symbolId) {
|
|
|
304
305
|
default: return { case: void 0 };
|
|
305
306
|
}
|
|
306
307
|
}
|
|
308
|
+
/** Builds the public trigger output schema using each record's symbol ID for quantity scaling. */
|
|
307
309
|
function createTriggerSchema(scales) {
|
|
308
310
|
return v.pipe(v.object({
|
|
309
311
|
triggerId: v.bigint(),
|
|
310
312
|
subaccountId: v.bigint(),
|
|
311
|
-
symbolId:
|
|
312
|
-
symbol: v.string(),
|
|
313
|
+
symbolId: SymbolIdInputSchema,
|
|
313
314
|
status: v.enum(TriggerStatus),
|
|
314
315
|
parentOrderId: v.optional(v.bigint()),
|
|
315
316
|
qtyScaled: v.bigint(),
|
|
@@ -326,7 +327,6 @@ function createTriggerSchema(scales) {
|
|
|
326
327
|
triggerId: formatId(t.triggerId),
|
|
327
328
|
subaccountId: formatId(t.subaccountId),
|
|
328
329
|
symbolId: t.symbolId,
|
|
329
|
-
symbol: t.symbol,
|
|
330
330
|
status: requiredEnumLabel(TriggerStatusCodec.protoToOutput, t.status, "TriggerSchema", "status"),
|
|
331
331
|
parentOrderId: t.parentOrderId ? formatId(t.parentOrderId) : void 0,
|
|
332
332
|
qty: scaledToDecimalOutput(t.qtyScaled, scales.baseQty(t.symbolId)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers-output.schemas.js","names":["Proto.TriggerStatus","ProtoOrders.Side","TriggerSideCodec","ProtoOrders.TriggerPriceSource","ProtoOrders.TriggerDirection","Proto.LadderDistribution","ProtoOrders.FeeAsset","ProtoOrders.SelfTradePreventionMode","Proto.TriggerType","Proto.TriggerEventType"],"sources":["../../../src/services/triggers/triggers-output.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/triggers/v1/triggers_pb.js\";\nimport * as ProtoOrders from \"../../gen/orders/v1/orders_pb.js\";\nimport * as v from \"valibot\";\nimport {\n BigIntStringSchema,\n OptionalTimestampMsSchema,\n TimestampSchema,\n PublicIdSchema,\n} from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { tsNsToMs } from \"../../utils/time.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport {\n TriggerTypeCodec,\n TriggerStatusCodec,\n FeeAssetCodec,\n SelfTradePreventionModeCodec,\n TriggerPriceSourceCodec,\n TriggerDirectionCodec,\n LadderDistributionCodec,\n TriggerSideCodec,\n TriggerEventTypeCodec,\n} from \"./triggers.codecs.js\";\n\ntype TriggerPriceSourceLabel = \"last\" | \"index\" | \"mark\" | \"unspecified\";\n\ntype TriggerDirectionLabel = \"above\" | \"below\" | \"unspecified\";\n\ntype LadderDistributionLabel = \"linear\" | \"geometric\" | \"weighted_favorable\" | \"unspecified\";\n\nconst TriggerResultStatusSchema = v.pipe(\n v.enum(Proto.TriggerStatus),\n v.transform((status) =>\n requiredEnumLabel(\n TriggerStatusCodec.protoToOutput,\n status,\n \"TriggerResultSchema\",\n \"status\",\n ),\n ),\n);\n\nconst TriggerMutationResultBaseSchema = v.pipe(\n v.object({\n triggerId: PublicIdSchema,\n status: TriggerResultStatusSchema,\n tsNs: v.bigint(),\n }),\n v.transform(({ tsNs, ...result }) => ({\n ...result,\n ts: tsNsToMs(tsNs),\n tsNs: tsNs.toString(),\n })),\n);\n\nexport const CreateTriggerResultSchema = v.pipe(\n v.object({\n triggerId: PublicIdSchema,\n clientTriggerId: v.string(),\n acceptedAt: OptionalTimestampMsSchema,\n acceptedAtTsNs: BigIntStringSchema,\n }),\n v.transform(({ acceptedAt, acceptedAtTsNs, ...result }) => ({\n ...result,\n acceptedAt: acceptedAt ?? tsNsToMs(BigInt(acceptedAtTsNs)),\n acceptedAtNs: acceptedAtTsNs,\n })),\n);\n\nexport type CreateTriggerResult = v.InferOutput<typeof CreateTriggerResultSchema>;\n\nexport const CancelTriggerResultSchema = TriggerMutationResultBaseSchema;\n\nexport type CancelTriggerResult = v.InferOutput<typeof CancelTriggerResultSchema>;\n\nexport const ModifyTriggerResultSchema = TriggerMutationResultBaseSchema;\n\nexport type ModifyTriggerResult = v.InferOutput<typeof ModifyTriggerResultSchema>;\n\nexport const PauseTriggerResultSchema = TriggerMutationResultBaseSchema;\nexport type PauseTriggerResult = v.InferOutput<typeof PauseTriggerResultSchema>;\n\nexport const ResumeTriggerResultSchema = TriggerMutationResultBaseSchema;\nexport type ResumeTriggerResult = v.InferOutput<typeof ResumeTriggerResultSchema>;\n\nconst ConditionalExecutionRawSchema = v.variant(\"case\", [\n v.object({\n case: v.literal(\"marketIoc\"),\n value: v.object({}),\n }),\n v.object({\n case: v.literal(\"limitGtc\"),\n value: v.object({\n priceTicks: v.bigint(),\n postOnly: v.boolean(),\n }),\n }),\n v.object({\n case: v.literal(\"limitIoc\"),\n value: v.object({ priceTicks: v.bigint() }),\n }),\n v.object({\n case: v.literal(\"limitFok\"),\n value: v.object({ priceTicks: v.bigint() }),\n }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nconst ConditionalConfigurationRawSchema = v.object({\n triggerPriceTicks: v.bigint(),\n side: v.enum(ProtoOrders.Side),\n child: v.optional(\n v.object({\n execution: ConditionalExecutionRawSchema,\n }),\n ),\n});\n\nconst TrailingConfigurationRawSchema = v.object({\n trailingDistance: v.variant(\"case\", [\n v.object({ case: v.literal(\"trailingDistanceTicks\"), value: v.bigint() }),\n v.object({ case: v.literal(\"trailingDistanceBps\"), value: v.number() }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n ]),\n activationPriceTicks: v.bigint(),\n maxSlippage: v.variant(\"case\", [\n v.object({ case: v.literal(\"maxSlippageTicks\"), value: v.number() }),\n v.object({ case: v.literal(\"maxSlippageBps\"), value: v.number() }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n ]),\n side: v.enum(ProtoOrders.Side),\n});\n\nconst TwapConfigurationRawSchema = v.object({\n side: v.enum(ProtoOrders.Side),\n durationMs: v.bigint(),\n sliceIntervalMs: v.bigint(),\n execution: v.variant(\"case\", [\n v.object({ case: v.literal(\"marketIoc\"), value: v.object({}) }),\n v.object({\n case: v.literal(\"limitGtc\"),\n value: v.object({ priceTicks: v.bigint() }),\n }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n ]),\n});\n\nconst LadderConfigurationRawSchema = v.object({\n side: v.enum(ProtoOrders.Side),\n priceMinTicks: v.bigint(),\n priceMaxTicks: v.bigint(),\n levels: v.number(),\n postOnly: v.boolean(),\n});\n\nconst TriggerConfigurationRawSchema = v.variant(\"case\", [\n v.object({ case: v.literal(\"stopLoss\"), value: ConditionalConfigurationRawSchema }),\n v.object({ case: v.literal(\"takeProfit\"), value: ConditionalConfigurationRawSchema }),\n v.object({ case: v.literal(\"trailingStop\"), value: TrailingConfigurationRawSchema }),\n v.object({ case: v.literal(\"twap\"), value: TwapConfigurationRawSchema }),\n v.object({ case: v.literal(\"ladder\"), value: LadderConfigurationRawSchema }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nfunction transformConditionalExecution(\n execution: v.InferOutput<typeof ConditionalExecutionRawSchema>,\n scales: SdkScales,\n) {\n switch (execution.case) {\n case \"marketIoc\":\n return { type: \"market_ioc\" } as const;\n case \"limitGtc\":\n return {\n type: \"limit_gtc\",\n price: scaledToDecimalOutput(execution.value.priceTicks, scales.price()),\n postOnly: execution.value.postOnly,\n } as const;\n case \"limitIoc\":\n return {\n type: \"limit_ioc\",\n price: scaledToDecimalOutput(execution.value.priceTicks, scales.price()),\n } as const;\n case \"limitFok\":\n return {\n type: \"limit_fok\",\n price: scaledToDecimalOutput(execution.value.priceTicks, scales.price()),\n } as const;\n default:\n return { type: \"unspecified\" } as const;\n }\n}\n\nfunction transformTriggerConfiguration(\n configuration: v.InferOutput<typeof TriggerConfigurationRawSchema>,\n scales: SdkScales,\n) {\n switch (configuration.case) {\n case \"stopLoss\":\n case \"takeProfit\":\n return {\n type:\n configuration.case === \"stopLoss\"\n ? (\"stop_loss\" as const)\n : (\"take_profit\" as const),\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n triggerPrice: scaledToDecimalOutput(\n configuration.value.triggerPriceTicks,\n scales.price(),\n ),\n execution: transformConditionalExecution(\n configuration.value.child?.execution ?? { case: undefined },\n scales,\n ),\n };\n case \"trailingStop\":\n return {\n type: \"trailing_stop\" as const,\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n trailingDistance:\n configuration.value.trailingDistance.case === \"trailingDistanceTicks\"\n ? {\n kind: \"distance\" as const,\n distance: scaledToDecimalOutput(\n configuration.value.trailingDistance.value,\n scales.price(),\n ),\n }\n : configuration.value.trailingDistance.case === \"trailingDistanceBps\"\n ? {\n kind: \"bps\" as const,\n bps: configuration.value.trailingDistance.value,\n }\n : { kind: \"unspecified\" as const },\n activationPrice:\n configuration.value.activationPriceTicks > 0n\n ? scaledToDecimalOutput(\n configuration.value.activationPriceTicks,\n scales.price(),\n )\n : undefined,\n maxSlippage:\n configuration.value.maxSlippage.case === \"maxSlippageTicks\"\n ? {\n kind: \"slippage\" as const,\n slippage: scaledToDecimalOutput(\n BigInt(configuration.value.maxSlippage.value),\n scales.price(),\n ),\n }\n : configuration.value.maxSlippage.case === \"maxSlippageBps\"\n ? {\n kind: \"bps\" as const,\n bps: configuration.value.maxSlippage.value,\n }\n : { kind: \"none\" as const },\n };\n case \"twap\":\n return {\n type: \"twap\" as const,\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n durationMs: Number(configuration.value.durationMs),\n sliceIntervalMs: Number(configuration.value.sliceIntervalMs),\n execution:\n configuration.value.execution.case === \"marketIoc\"\n ? ({ type: \"market_ioc\" } as const)\n : configuration.value.execution.case === \"limitGtc\"\n ? ({\n type: \"limit_gtc\",\n price: scaledToDecimalOutput(\n configuration.value.execution.value.priceTicks,\n scales.price(),\n ),\n } as const)\n : ({ type: \"unspecified\" } as const),\n };\n case \"ladder\":\n return {\n type: \"ladder\" as const,\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n priceMin: scaledToDecimalOutput(configuration.value.priceMinTicks, scales.price()),\n priceMax: scaledToDecimalOutput(configuration.value.priceMaxTicks, scales.price()),\n levels: configuration.value.levels,\n postOnly: configuration.value.postOnly,\n };\n default:\n return { type: \"unspecified\" as const };\n }\n}\n\nconst StopDetailsRawSchema = v.object({\n triggerPriceTicks: v.bigint(),\n triggerPriceSource: v.enum(ProtoOrders.TriggerPriceSource),\n triggerDirection: v.enum(ProtoOrders.TriggerDirection),\n});\n\nconst TrailingDetailsRawSchema = v.object({\n trailingDistanceTicks: v.bigint(),\n activationPriceTicks: v.bigint(),\n peakPriceTicks: v.bigint(),\n troughPriceTicks: v.bigint(),\n trailingDistanceBps: v.number(),\n maxSlippageTicks: v.number(),\n maxSlippageBps: v.number(),\n triggerPriceSource: v.enum(ProtoOrders.TriggerPriceSource),\n triggerDirection: v.enum(ProtoOrders.TriggerDirection),\n});\n\nconst TwapDetailsRawSchema = v.object({\n twapDurationMs: v.bigint(),\n twapSliceIntervalMs: v.bigint(),\n sliceIdx: v.number(),\n sliceCount: v.number(),\n executedQtyScaled: v.bigint(),\n});\n\nconst LadderDetailsRawSchema = v.object({\n ladderPriceMinTicks: v.bigint(),\n ladderPriceMaxTicks: v.bigint(),\n ladderLevels: v.number(),\n ladderDistribution: v.enum(Proto.LadderDistribution),\n});\n\nconst TriggerDetailsRawSchema = v.variant(\"case\", [\n v.object({ case: v.literal(\"stop\"), value: StopDetailsRawSchema }),\n v.object({ case: v.literal(\"trailing\"), value: TrailingDetailsRawSchema }),\n v.object({ case: v.literal(\"twapState\"), value: TwapDetailsRawSchema }),\n v.object({ case: v.literal(\"ladderState\"), value: LadderDetailsRawSchema }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nexport type StopDetailsOutput = {\n case: \"stop\";\n triggerPrice: string;\n triggerPriceSource: TriggerPriceSourceLabel;\n triggerDirection: TriggerDirectionLabel;\n};\n\nexport type TrailingDetailsOutput = {\n case: \"trailing\";\n trailingDistance: string | undefined;\n trailingDistanceBps: number;\n activationPrice: string | undefined;\n peakPrice: string | undefined;\n troughPrice: string | undefined;\n maxSlippage: string | undefined;\n maxSlippageBps: number;\n triggerPriceSource: TriggerPriceSourceLabel;\n triggerDirection: TriggerDirectionLabel;\n};\n\nexport type TwapDetailsOutput = {\n case: \"twap\";\n twapDurationMs: number;\n twapSliceIntervalMs: number;\n sliceIdx: number;\n sliceCount: number;\n /** Cumulative filled child-order base quantity. */\n executedQty: string;\n};\n\nexport type LadderDetailsOutput = {\n case: \"ladder\";\n ladderPriceMin: string;\n ladderPriceMax: string;\n ladderLevels: number;\n ladderDistribution: LadderDistributionLabel;\n};\n\nexport type TriggerDetailsOutput =\n | StopDetailsOutput\n | TrailingDetailsOutput\n | TwapDetailsOutput\n | LadderDetailsOutput\n | { case: undefined };\n\nfunction transformTriggerDetails(\n details: v.InferOutput<typeof TriggerDetailsRawSchema>,\n scales: SdkScales,\n symbolId: number,\n): TriggerDetailsOutput {\n switch (details.case) {\n case \"stop\":\n return {\n case: \"stop\",\n triggerPrice: scaledToDecimalOutput(\n details.value.triggerPriceTicks,\n scales.price(),\n ),\n triggerPriceSource: requiredEnumLabel(\n TriggerPriceSourceCodec.protoToOutput,\n details.value.triggerPriceSource,\n \"TriggerDetailsSchema\",\n \"trigger price source\",\n ),\n triggerDirection: requiredEnumLabel(\n TriggerDirectionCodec.protoToOutput,\n details.value.triggerDirection,\n \"TriggerDetailsSchema\",\n \"trigger direction\",\n ),\n };\n case \"trailing\":\n return {\n case: \"trailing\",\n trailingDistance:\n details.value.trailingDistanceTicks > 0n\n ? scaledToDecimalOutput(details.value.trailingDistanceTicks, scales.price())\n : undefined,\n trailingDistanceBps: details.value.trailingDistanceBps,\n activationPrice:\n details.value.activationPriceTicks > 0n\n ? scaledToDecimalOutput(details.value.activationPriceTicks, scales.price())\n : undefined,\n peakPrice:\n details.value.peakPriceTicks > 0n\n ? scaledToDecimalOutput(details.value.peakPriceTicks, scales.price())\n : undefined,\n troughPrice:\n details.value.troughPriceTicks > 0n\n ? scaledToDecimalOutput(details.value.troughPriceTicks, scales.price())\n : undefined,\n maxSlippage:\n details.value.maxSlippageTicks > 0\n ? scaledToDecimalOutput(\n BigInt(details.value.maxSlippageTicks),\n scales.price(),\n )\n : undefined,\n maxSlippageBps: details.value.maxSlippageBps,\n triggerPriceSource: requiredEnumLabel(\n TriggerPriceSourceCodec.protoToOutput,\n details.value.triggerPriceSource,\n \"TriggerDetailsSchema\",\n \"trigger price source\",\n ),\n triggerDirection: requiredEnumLabel(\n TriggerDirectionCodec.protoToOutput,\n details.value.triggerDirection,\n \"TriggerDetailsSchema\",\n \"trigger direction\",\n ),\n };\n case \"twapState\":\n return {\n case: \"twap\",\n twapDurationMs: Number(details.value.twapDurationMs),\n twapSliceIntervalMs: Number(details.value.twapSliceIntervalMs),\n sliceIdx: details.value.sliceIdx,\n sliceCount: details.value.sliceCount,\n executedQty: scaledToDecimalOutput(\n details.value.executedQtyScaled,\n scales.baseQty(symbolId),\n ),\n };\n case \"ladderState\":\n return {\n case: \"ladder\",\n ladderPriceMin: scaledToDecimalOutput(\n details.value.ladderPriceMinTicks,\n scales.price(),\n ),\n ladderPriceMax: scaledToDecimalOutput(\n details.value.ladderPriceMaxTicks,\n scales.price(),\n ),\n ladderLevels: details.value.ladderLevels,\n ladderDistribution: requiredEnumLabel(\n LadderDistributionCodec.protoToOutput,\n details.value.ladderDistribution,\n \"TriggerDetailsSchema\",\n \"ladder distribution\",\n ),\n };\n default:\n return { case: undefined };\n }\n}\n\nexport function createTriggerSchema(scales: SdkScales) {\n return v.pipe(\n v.object({\n triggerId: v.bigint(),\n subaccountId: v.bigint(),\n symbolId: v.number(),\n symbol: v.string(),\n status: v.enum(Proto.TriggerStatus),\n parentOrderId: v.optional(v.bigint()),\n qtyScaled: v.bigint(),\n feeAsset: v.enum(ProtoOrders.FeeAsset),\n selfTradePreventionMode: v.enum(ProtoOrders.SelfTradePreventionMode),\n configuration: TriggerConfigurationRawSchema,\n clientTriggerId: v.string(),\n createdAt: v.optional(TimestampSchema),\n updatedAt: v.optional(TimestampSchema),\n armedAt: v.optional(TimestampSchema),\n completedAt: v.optional(TimestampSchema),\n runtimeDetails: TriggerDetailsRawSchema,\n }),\n v.transform((t) => ({\n triggerId: formatId(t.triggerId),\n subaccountId: formatId(t.subaccountId),\n symbolId: t.symbolId,\n symbol: t.symbol,\n status: requiredEnumLabel(\n TriggerStatusCodec.protoToOutput,\n t.status,\n \"TriggerSchema\",\n \"status\",\n ),\n parentOrderId: t.parentOrderId ? formatId(t.parentOrderId) : undefined,\n qty: scaledToDecimalOutput(t.qtyScaled, scales.baseQty(t.symbolId)),\n feeAsset: requiredEnumLabel(\n FeeAssetCodec.protoToOutput,\n t.feeAsset,\n \"TriggerSchema\",\n \"fee asset\",\n ),\n selfTradePreventionMode: requiredEnumLabel(\n SelfTradePreventionModeCodec.protoToOutput,\n t.selfTradePreventionMode,\n \"TriggerSchema\",\n \"STP mode\",\n ),\n configuration: transformTriggerConfiguration(t.configuration, scales),\n clientTriggerId: t.clientTriggerId,\n createdTs: t.createdAt?.seconds ? Number(t.createdAt.seconds) * 1000 : undefined,\n updatedTs: t.updatedAt?.seconds ? Number(t.updatedAt.seconds) * 1000 : undefined,\n armedTs: t.armedAt?.seconds ? Number(t.armedAt.seconds) * 1000 : undefined,\n completedTs: t.completedAt?.seconds ? Number(t.completedAt.seconds) * 1000 : undefined,\n runtimeDetails: transformTriggerDetails(t.runtimeDetails, scales, t.symbolId),\n })),\n );\n}\n\nexport type Trigger = v.InferOutput<ReturnType<typeof createTriggerSchema>>;\n\nexport function createTriggerEventSchema(scales: SdkScales) {\n return v.pipe(\n v.object({\n triggerId: v.bigint(),\n subaccountId: v.bigint(),\n symbolId: v.number(),\n triggerType: v.enum(Proto.TriggerType),\n eventType: v.enum(Proto.TriggerEventType),\n tsNs: v.bigint(),\n childSeq: v.number(),\n childOrderId: v.bigint(),\n firePriceTicks: v.optional(v.bigint()),\n reason: v.string(),\n }),\n v.transform((e) => ({\n triggerId: formatId(e.triggerId),\n subaccountId: formatId(e.subaccountId),\n symbolId: e.symbolId,\n triggerType: requiredEnumLabel(\n TriggerTypeCodec.protoToOutput,\n e.triggerType,\n \"TriggerEventSchema\",\n \"trigger type\",\n ),\n eventType: requiredEnumLabel(\n TriggerEventTypeCodec.protoToOutput,\n e.eventType,\n \"TriggerEventSchema\",\n \"event type\",\n ),\n ts: tsNsToMs(e.tsNs),\n childSeq: e.childSeq,\n childOrderId: e.childOrderId > 0n ? formatId(e.childOrderId) : undefined,\n firePrice:\n e.firePriceTicks !== undefined && e.firePriceTicks > 0n\n ? scaledToDecimalOutput(e.firePriceTicks, scales.price())\n : undefined,\n reason: e.reason || undefined,\n })),\n );\n}\n\nexport type TriggerEvent = v.InferOutput<ReturnType<typeof createTriggerEventSchema>>;\n\nexport type ListTriggerEventsResult = {\n events: TriggerEvent[];\n nextPageToken: string;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"triggers-output.schemas.js","names":["Proto.TriggerStatus","ProtoOrders.Side","TriggerSideCodec","ProtoOrders.TriggerPriceSource","ProtoOrders.TriggerDirection","Proto.LadderDistribution","ProtoOrders.FeeAsset","ProtoOrders.SelfTradePreventionMode","Proto.TriggerType","Proto.TriggerEventType"],"sources":["../../../src/services/triggers/triggers-output.schemas.ts"],"sourcesContent":["import * as Proto from \"../../gen/triggers/v1/triggers_pb.js\";\nimport * as ProtoOrders from \"../../gen/orders/v1/orders_pb.js\";\nimport * as v from \"valibot\";\nimport {\n BigIntStringSchema,\n OptionalTimestampMsSchema,\n TimestampSchema,\n PublicIdSchema,\n} from \"../../shared/schemas.js\";\nimport { requiredEnumLabel } from \"../../shared/proto-enum-codec.js\";\nimport { scaledToDecimalOutput, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport { tsNsToMs } from \"../../utils/time.js\";\nimport { formatId } from \"../../utils/base58-id.js\";\nimport { SymbolIdInputSchema } from \"../shared.js\";\nimport {\n TriggerTypeCodec,\n TriggerStatusCodec,\n FeeAssetCodec,\n SelfTradePreventionModeCodec,\n TriggerPriceSourceCodec,\n TriggerDirectionCodec,\n LadderDistributionCodec,\n TriggerSideCodec,\n TriggerEventTypeCodec,\n} from \"./triggers.codecs.js\";\n\ntype TriggerPriceSourceLabel = \"last\" | \"index\" | \"mark\" | \"unspecified\";\n\ntype TriggerDirectionLabel = \"above\" | \"below\" | \"unspecified\";\n\ntype LadderDistributionLabel = \"linear\" | \"geometric\" | \"weighted_favorable\" | \"unspecified\";\n\nconst TriggerResultStatusSchema = v.pipe(\n v.enum(Proto.TriggerStatus),\n v.transform((status) =>\n requiredEnumLabel(\n TriggerStatusCodec.protoToOutput,\n status,\n \"TriggerResultSchema\",\n \"status\",\n ),\n ),\n);\n\nconst TriggerMutationResultBaseSchema = v.pipe(\n v.object({\n triggerId: PublicIdSchema,\n status: TriggerResultStatusSchema,\n tsNs: v.bigint(),\n }),\n v.transform(({ tsNs, ...result }) => ({\n ...result,\n ts: tsNsToMs(tsNs),\n tsNs: tsNs.toString(),\n })),\n);\n\nexport const CreateTriggerResultSchema = v.pipe(\n v.object({\n triggerId: PublicIdSchema,\n clientTriggerId: v.string(),\n acceptedAt: OptionalTimestampMsSchema,\n acceptedAtTsNs: BigIntStringSchema,\n }),\n v.transform(({ acceptedAt, acceptedAtTsNs, ...result }) => ({\n ...result,\n acceptedAt: acceptedAt ?? tsNsToMs(BigInt(acceptedAtTsNs)),\n acceptedAtNs: acceptedAtTsNs,\n })),\n);\n\nexport type CreateTriggerResult = v.InferOutput<typeof CreateTriggerResultSchema>;\n\nexport const CancelTriggerResultSchema = TriggerMutationResultBaseSchema;\n\nexport type CancelTriggerResult = v.InferOutput<typeof CancelTriggerResultSchema>;\n\nexport const ModifyTriggerResultSchema = TriggerMutationResultBaseSchema;\n\nexport type ModifyTriggerResult = v.InferOutput<typeof ModifyTriggerResultSchema>;\n\nexport const PauseTriggerResultSchema = TriggerMutationResultBaseSchema;\nexport type PauseTriggerResult = v.InferOutput<typeof PauseTriggerResultSchema>;\n\nexport const ResumeTriggerResultSchema = TriggerMutationResultBaseSchema;\nexport type ResumeTriggerResult = v.InferOutput<typeof ResumeTriggerResultSchema>;\n\nconst ConditionalExecutionRawSchema = v.variant(\"case\", [\n v.object({\n case: v.literal(\"marketIoc\"),\n value: v.object({}),\n }),\n v.object({\n case: v.literal(\"limitGtc\"),\n value: v.object({\n priceTicks: v.bigint(),\n postOnly: v.boolean(),\n }),\n }),\n v.object({\n case: v.literal(\"limitIoc\"),\n value: v.object({ priceTicks: v.bigint() }),\n }),\n v.object({\n case: v.literal(\"limitFok\"),\n value: v.object({ priceTicks: v.bigint() }),\n }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nconst ConditionalConfigurationRawSchema = v.object({\n triggerPriceTicks: v.bigint(),\n side: v.enum(ProtoOrders.Side),\n child: v.optional(\n v.object({\n execution: ConditionalExecutionRawSchema,\n }),\n ),\n});\n\nconst TrailingConfigurationRawSchema = v.object({\n trailingDistance: v.variant(\"case\", [\n v.object({ case: v.literal(\"trailingDistanceTicks\"), value: v.bigint() }),\n v.object({ case: v.literal(\"trailingDistanceBps\"), value: v.number() }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n ]),\n activationPriceTicks: v.bigint(),\n maxSlippage: v.variant(\"case\", [\n v.object({ case: v.literal(\"maxSlippageTicks\"), value: v.number() }),\n v.object({ case: v.literal(\"maxSlippageBps\"), value: v.number() }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n ]),\n side: v.enum(ProtoOrders.Side),\n});\n\nconst TwapConfigurationRawSchema = v.object({\n side: v.enum(ProtoOrders.Side),\n durationMs: v.bigint(),\n sliceIntervalMs: v.bigint(),\n execution: v.variant(\"case\", [\n v.object({ case: v.literal(\"marketIoc\"), value: v.object({}) }),\n v.object({\n case: v.literal(\"limitGtc\"),\n value: v.object({ priceTicks: v.bigint() }),\n }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n ]),\n});\n\nconst LadderConfigurationRawSchema = v.object({\n side: v.enum(ProtoOrders.Side),\n priceMinTicks: v.bigint(),\n priceMaxTicks: v.bigint(),\n levels: v.number(),\n postOnly: v.boolean(),\n});\n\nconst TriggerConfigurationRawSchema = v.variant(\"case\", [\n v.object({ case: v.literal(\"stopLoss\"), value: ConditionalConfigurationRawSchema }),\n v.object({ case: v.literal(\"takeProfit\"), value: ConditionalConfigurationRawSchema }),\n v.object({ case: v.literal(\"trailingStop\"), value: TrailingConfigurationRawSchema }),\n v.object({ case: v.literal(\"twap\"), value: TwapConfigurationRawSchema }),\n v.object({ case: v.literal(\"ladder\"), value: LadderConfigurationRawSchema }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nfunction transformConditionalExecution(\n execution: v.InferOutput<typeof ConditionalExecutionRawSchema>,\n scales: SdkScales,\n) {\n switch (execution.case) {\n case \"marketIoc\":\n return { type: \"market_ioc\" } as const;\n case \"limitGtc\":\n return {\n type: \"limit_gtc\",\n price: scaledToDecimalOutput(execution.value.priceTicks, scales.price()),\n postOnly: execution.value.postOnly,\n } as const;\n case \"limitIoc\":\n return {\n type: \"limit_ioc\",\n price: scaledToDecimalOutput(execution.value.priceTicks, scales.price()),\n } as const;\n case \"limitFok\":\n return {\n type: \"limit_fok\",\n price: scaledToDecimalOutput(execution.value.priceTicks, scales.price()),\n } as const;\n default:\n return { type: \"unspecified\" } as const;\n }\n}\n\nfunction transformTriggerConfiguration(\n configuration: v.InferOutput<typeof TriggerConfigurationRawSchema>,\n scales: SdkScales,\n) {\n switch (configuration.case) {\n case \"stopLoss\":\n case \"takeProfit\":\n return {\n type:\n configuration.case === \"stopLoss\"\n ? (\"stop_loss\" as const)\n : (\"take_profit\" as const),\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n triggerPrice: scaledToDecimalOutput(\n configuration.value.triggerPriceTicks,\n scales.price(),\n ),\n execution: transformConditionalExecution(\n configuration.value.child?.execution ?? { case: undefined },\n scales,\n ),\n };\n case \"trailingStop\":\n return {\n type: \"trailing_stop\" as const,\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n trailingDistance:\n configuration.value.trailingDistance.case === \"trailingDistanceTicks\"\n ? {\n kind: \"distance\" as const,\n distance: scaledToDecimalOutput(\n configuration.value.trailingDistance.value,\n scales.price(),\n ),\n }\n : configuration.value.trailingDistance.case === \"trailingDistanceBps\"\n ? {\n kind: \"bps\" as const,\n bps: configuration.value.trailingDistance.value,\n }\n : { kind: \"unspecified\" as const },\n activationPrice:\n configuration.value.activationPriceTicks > 0n\n ? scaledToDecimalOutput(\n configuration.value.activationPriceTicks,\n scales.price(),\n )\n : undefined,\n maxSlippage:\n configuration.value.maxSlippage.case === \"maxSlippageTicks\"\n ? {\n kind: \"slippage\" as const,\n slippage: scaledToDecimalOutput(\n BigInt(configuration.value.maxSlippage.value),\n scales.price(),\n ),\n }\n : configuration.value.maxSlippage.case === \"maxSlippageBps\"\n ? {\n kind: \"bps\" as const,\n bps: configuration.value.maxSlippage.value,\n }\n : { kind: \"none\" as const },\n };\n case \"twap\":\n return {\n type: \"twap\" as const,\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n durationMs: Number(configuration.value.durationMs),\n sliceIntervalMs: Number(configuration.value.sliceIntervalMs),\n execution:\n configuration.value.execution.case === \"marketIoc\"\n ? ({ type: \"market_ioc\" } as const)\n : configuration.value.execution.case === \"limitGtc\"\n ? ({\n type: \"limit_gtc\",\n price: scaledToDecimalOutput(\n configuration.value.execution.value.priceTicks,\n scales.price(),\n ),\n } as const)\n : ({ type: \"unspecified\" } as const),\n };\n case \"ladder\":\n return {\n type: \"ladder\" as const,\n side: requiredEnumLabel(\n TriggerSideCodec.protoToOutput,\n configuration.value.side,\n \"TriggerConfigurationSchema\",\n \"side\",\n ),\n priceMin: scaledToDecimalOutput(configuration.value.priceMinTicks, scales.price()),\n priceMax: scaledToDecimalOutput(configuration.value.priceMaxTicks, scales.price()),\n levels: configuration.value.levels,\n postOnly: configuration.value.postOnly,\n };\n default:\n return { type: \"unspecified\" as const };\n }\n}\n\nconst StopDetailsRawSchema = v.object({\n triggerPriceTicks: v.bigint(),\n triggerPriceSource: v.enum(ProtoOrders.TriggerPriceSource),\n triggerDirection: v.enum(ProtoOrders.TriggerDirection),\n});\n\nconst TrailingDetailsRawSchema = v.object({\n trailingDistanceTicks: v.bigint(),\n activationPriceTicks: v.bigint(),\n peakPriceTicks: v.bigint(),\n troughPriceTicks: v.bigint(),\n trailingDistanceBps: v.number(),\n maxSlippageTicks: v.number(),\n maxSlippageBps: v.number(),\n triggerPriceSource: v.enum(ProtoOrders.TriggerPriceSource),\n triggerDirection: v.enum(ProtoOrders.TriggerDirection),\n});\n\nconst TwapDetailsRawSchema = v.object({\n twapDurationMs: v.bigint(),\n twapSliceIntervalMs: v.bigint(),\n sliceIdx: v.number(),\n sliceCount: v.number(),\n executedQtyScaled: v.bigint(),\n});\n\nconst LadderDetailsRawSchema = v.object({\n ladderPriceMinTicks: v.bigint(),\n ladderPriceMaxTicks: v.bigint(),\n ladderLevels: v.number(),\n ladderDistribution: v.enum(Proto.LadderDistribution),\n});\n\nconst TriggerDetailsRawSchema = v.variant(\"case\", [\n v.object({ case: v.literal(\"stop\"), value: StopDetailsRawSchema }),\n v.object({ case: v.literal(\"trailing\"), value: TrailingDetailsRawSchema }),\n v.object({ case: v.literal(\"twapState\"), value: TwapDetailsRawSchema }),\n v.object({ case: v.literal(\"ladderState\"), value: LadderDetailsRawSchema }),\n v.object({ case: v.undefined(), value: v.optional(v.undefined()) }),\n]);\n\nexport type StopDetailsOutput = {\n case: \"stop\";\n triggerPrice: string;\n triggerPriceSource: TriggerPriceSourceLabel;\n triggerDirection: TriggerDirectionLabel;\n};\n\nexport type TrailingDetailsOutput = {\n case: \"trailing\";\n trailingDistance: string | undefined;\n trailingDistanceBps: number;\n activationPrice: string | undefined;\n peakPrice: string | undefined;\n troughPrice: string | undefined;\n maxSlippage: string | undefined;\n maxSlippageBps: number;\n triggerPriceSource: TriggerPriceSourceLabel;\n triggerDirection: TriggerDirectionLabel;\n};\n\nexport type TwapDetailsOutput = {\n case: \"twap\";\n twapDurationMs: number;\n twapSliceIntervalMs: number;\n sliceIdx: number;\n sliceCount: number;\n /** Cumulative filled child-order base quantity. */\n executedQty: string;\n};\n\nexport type LadderDetailsOutput = {\n case: \"ladder\";\n ladderPriceMin: string;\n ladderPriceMax: string;\n ladderLevels: number;\n ladderDistribution: LadderDistributionLabel;\n};\n\nexport type TriggerDetailsOutput =\n | StopDetailsOutput\n | TrailingDetailsOutput\n | TwapDetailsOutput\n | LadderDetailsOutput\n | { case: undefined };\n\nfunction transformTriggerDetails(\n details: v.InferOutput<typeof TriggerDetailsRawSchema>,\n scales: SdkScales,\n symbolId: number,\n): TriggerDetailsOutput {\n switch (details.case) {\n case \"stop\":\n return {\n case: \"stop\",\n triggerPrice: scaledToDecimalOutput(\n details.value.triggerPriceTicks,\n scales.price(),\n ),\n triggerPriceSource: requiredEnumLabel(\n TriggerPriceSourceCodec.protoToOutput,\n details.value.triggerPriceSource,\n \"TriggerDetailsSchema\",\n \"trigger price source\",\n ),\n triggerDirection: requiredEnumLabel(\n TriggerDirectionCodec.protoToOutput,\n details.value.triggerDirection,\n \"TriggerDetailsSchema\",\n \"trigger direction\",\n ),\n };\n case \"trailing\":\n return {\n case: \"trailing\",\n trailingDistance:\n details.value.trailingDistanceTicks > 0n\n ? scaledToDecimalOutput(details.value.trailingDistanceTicks, scales.price())\n : undefined,\n trailingDistanceBps: details.value.trailingDistanceBps,\n activationPrice:\n details.value.activationPriceTicks > 0n\n ? scaledToDecimalOutput(details.value.activationPriceTicks, scales.price())\n : undefined,\n peakPrice:\n details.value.peakPriceTicks > 0n\n ? scaledToDecimalOutput(details.value.peakPriceTicks, scales.price())\n : undefined,\n troughPrice:\n details.value.troughPriceTicks > 0n\n ? scaledToDecimalOutput(details.value.troughPriceTicks, scales.price())\n : undefined,\n maxSlippage:\n details.value.maxSlippageTicks > 0\n ? scaledToDecimalOutput(\n BigInt(details.value.maxSlippageTicks),\n scales.price(),\n )\n : undefined,\n maxSlippageBps: details.value.maxSlippageBps,\n triggerPriceSource: requiredEnumLabel(\n TriggerPriceSourceCodec.protoToOutput,\n details.value.triggerPriceSource,\n \"TriggerDetailsSchema\",\n \"trigger price source\",\n ),\n triggerDirection: requiredEnumLabel(\n TriggerDirectionCodec.protoToOutput,\n details.value.triggerDirection,\n \"TriggerDetailsSchema\",\n \"trigger direction\",\n ),\n };\n case \"twapState\":\n return {\n case: \"twap\",\n twapDurationMs: Number(details.value.twapDurationMs),\n twapSliceIntervalMs: Number(details.value.twapSliceIntervalMs),\n sliceIdx: details.value.sliceIdx,\n sliceCount: details.value.sliceCount,\n executedQty: scaledToDecimalOutput(\n details.value.executedQtyScaled,\n scales.baseQty(symbolId),\n ),\n };\n case \"ladderState\":\n return {\n case: \"ladder\",\n ladderPriceMin: scaledToDecimalOutput(\n details.value.ladderPriceMinTicks,\n scales.price(),\n ),\n ladderPriceMax: scaledToDecimalOutput(\n details.value.ladderPriceMaxTicks,\n scales.price(),\n ),\n ladderLevels: details.value.ladderLevels,\n ladderDistribution: requiredEnumLabel(\n LadderDistributionCodec.protoToOutput,\n details.value.ladderDistribution,\n \"TriggerDetailsSchema\",\n \"ladder distribution\",\n ),\n };\n default:\n return { case: undefined };\n }\n}\n\n/** Builds the public trigger output schema using each record's symbol ID for quantity scaling. */\nexport function createTriggerSchema(scales: SdkScales) {\n return v.pipe(\n v.object({\n triggerId: v.bigint(),\n subaccountId: v.bigint(),\n symbolId: SymbolIdInputSchema,\n status: v.enum(Proto.TriggerStatus),\n parentOrderId: v.optional(v.bigint()),\n qtyScaled: v.bigint(),\n feeAsset: v.enum(ProtoOrders.FeeAsset),\n selfTradePreventionMode: v.enum(ProtoOrders.SelfTradePreventionMode),\n configuration: TriggerConfigurationRawSchema,\n clientTriggerId: v.string(),\n createdAt: v.optional(TimestampSchema),\n updatedAt: v.optional(TimestampSchema),\n armedAt: v.optional(TimestampSchema),\n completedAt: v.optional(TimestampSchema),\n runtimeDetails: TriggerDetailsRawSchema,\n }),\n v.transform((t) => ({\n triggerId: formatId(t.triggerId),\n subaccountId: formatId(t.subaccountId),\n symbolId: t.symbolId,\n status: requiredEnumLabel(\n TriggerStatusCodec.protoToOutput,\n t.status,\n \"TriggerSchema\",\n \"status\",\n ),\n parentOrderId: t.parentOrderId ? formatId(t.parentOrderId) : undefined,\n qty: scaledToDecimalOutput(t.qtyScaled, scales.baseQty(t.symbolId)),\n feeAsset: requiredEnumLabel(\n FeeAssetCodec.protoToOutput,\n t.feeAsset,\n \"TriggerSchema\",\n \"fee asset\",\n ),\n selfTradePreventionMode: requiredEnumLabel(\n SelfTradePreventionModeCodec.protoToOutput,\n t.selfTradePreventionMode,\n \"TriggerSchema\",\n \"STP mode\",\n ),\n configuration: transformTriggerConfiguration(t.configuration, scales),\n clientTriggerId: t.clientTriggerId,\n createdTs: t.createdAt?.seconds ? Number(t.createdAt.seconds) * 1000 : undefined,\n updatedTs: t.updatedAt?.seconds ? Number(t.updatedAt.seconds) * 1000 : undefined,\n armedTs: t.armedAt?.seconds ? Number(t.armedAt.seconds) * 1000 : undefined,\n completedTs: t.completedAt?.seconds ? Number(t.completedAt.seconds) * 1000 : undefined,\n runtimeDetails: transformTriggerDetails(t.runtimeDetails, scales, t.symbolId),\n })),\n );\n}\n\n/** A normalized standalone trigger record. */\nexport type Trigger = v.InferOutput<ReturnType<typeof createTriggerSchema>>;\n\nexport function createTriggerEventSchema(scales: SdkScales) {\n return v.pipe(\n v.object({\n triggerId: v.bigint(),\n subaccountId: v.bigint(),\n symbolId: v.number(),\n triggerType: v.enum(Proto.TriggerType),\n eventType: v.enum(Proto.TriggerEventType),\n tsNs: v.bigint(),\n childSeq: v.number(),\n childOrderId: v.bigint(),\n firePriceTicks: v.optional(v.bigint()),\n reason: v.string(),\n }),\n v.transform((e) => ({\n triggerId: formatId(e.triggerId),\n subaccountId: formatId(e.subaccountId),\n symbolId: e.symbolId,\n triggerType: requiredEnumLabel(\n TriggerTypeCodec.protoToOutput,\n e.triggerType,\n \"TriggerEventSchema\",\n \"trigger type\",\n ),\n eventType: requiredEnumLabel(\n TriggerEventTypeCodec.protoToOutput,\n e.eventType,\n \"TriggerEventSchema\",\n \"event type\",\n ),\n ts: tsNsToMs(e.tsNs),\n childSeq: e.childSeq,\n childOrderId: e.childOrderId > 0n ? formatId(e.childOrderId) : undefined,\n firePrice:\n e.firePriceTicks !== undefined && e.firePriceTicks > 0n\n ? scaledToDecimalOutput(e.firePriceTicks, scales.price())\n : undefined,\n reason: e.reason || undefined,\n })),\n );\n}\n\nexport type TriggerEvent = v.InferOutput<ReturnType<typeof createTriggerEventSchema>>;\n\nexport type ListTriggerEventsResult = {\n events: TriggerEvent[];\n nextPageToken: string;\n};\n"],"mappings":";;;;;;;;;;;;AAgCA,MAAM,4BAA4B,EAAE,KAChC,EAAE,KAAKA,aAAmB,GAC1B,EAAE,WAAW,WACT,kBACI,mBAAmB,eACnB,QACA,uBACA,QACJ,CACJ,CACJ;AAEA,MAAM,kCAAkC,EAAE,KACtC,EAAE,OAAO;CACL,WAAW;CACX,QAAQ;CACR,MAAM,EAAE,OAAO;AACnB,CAAC,GACD,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc;CAClC,GAAG;CACH,IAAI,SAAS,IAAI;CACjB,MAAM,KAAK,SAAS;AACxB,EAAE,CACN;AAEA,MAAa,4BAA4B,EAAE,KACvC,EAAE,OAAO;CACL,WAAW;CACX,iBAAiB,EAAE,OAAO;CAC1B,YAAY;CACZ,gBAAgB;AACpB,CAAC,GACD,EAAE,WAAW,EAAE,YAAY,gBAAgB,GAAG,cAAc;CACxD,GAAG;CACH,YAAY,cAAc,SAAS,OAAO,cAAc,CAAC;CACzD,cAAc;AAClB,EAAE,CACN;AAIA,MAAa,4BAA4B;AAIzC,MAAa,4BAA4B;AAIzC,MAAa,2BAA2B;AAGxC,MAAa,4BAA4B;AAGzC,MAAM,gCAAgC,EAAE,QAAQ,QAAQ;CACpD,EAAE,OAAO;EACL,MAAM,EAAE,QAAQ,WAAW;EAC3B,OAAO,EAAE,OAAO,CAAC,CAAC;CACtB,CAAC;CACD,EAAE,OAAO;EACL,MAAM,EAAE,QAAQ,UAAU;EAC1B,OAAO,EAAE,OAAO;GACZ,YAAY,EAAE,OAAO;GACrB,UAAU,EAAE,QAAQ;EACxB,CAAC;CACL,CAAC;CACD,EAAE,OAAO;EACL,MAAM,EAAE,QAAQ,UAAU;EAC1B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;CAC9C,CAAC;CACD,EAAE,OAAO;EACL,MAAM,EAAE,QAAQ,UAAU;EAC1B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;CAC9C,CAAC;CACD,EAAE,OAAO;EAAE,MAAM,EAAE,UAAU;EAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;CAAE,CAAC;AACtE,CAAC;AAED,MAAM,oCAAoC,EAAE,OAAO;CAC/C,mBAAmB,EAAE,OAAO;CAC5B,MAAM,EAAE,KAAKC,IAAgB;CAC7B,OAAO,EAAE,SACL,EAAE,OAAO,EACL,WAAW,8BACf,CAAC,CACL;AACJ,CAAC;AAED,MAAM,iCAAiC,EAAE,OAAO;CAC5C,kBAAkB,EAAE,QAAQ,QAAQ;EAChC,EAAE,OAAO;GAAE,MAAM,EAAE,QAAQ,uBAAuB;GAAG,OAAO,EAAE,OAAO;EAAE,CAAC;EACxE,EAAE,OAAO;GAAE,MAAM,EAAE,QAAQ,qBAAqB;GAAG,OAAO,EAAE,OAAO;EAAE,CAAC;EACtE,EAAE,OAAO;GAAE,MAAM,EAAE,UAAU;GAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;EAAE,CAAC;CACtE,CAAC;CACD,sBAAsB,EAAE,OAAO;CAC/B,aAAa,EAAE,QAAQ,QAAQ;EAC3B,EAAE,OAAO;GAAE,MAAM,EAAE,QAAQ,kBAAkB;GAAG,OAAO,EAAE,OAAO;EAAE,CAAC;EACnE,EAAE,OAAO;GAAE,MAAM,EAAE,QAAQ,gBAAgB;GAAG,OAAO,EAAE,OAAO;EAAE,CAAC;EACjE,EAAE,OAAO;GAAE,MAAM,EAAE,UAAU;GAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;EAAE,CAAC;CACtE,CAAC;CACD,MAAM,EAAE,KAAKA,IAAgB;AACjC,CAAC;AAED,MAAM,6BAA6B,EAAE,OAAO;CACxC,MAAM,EAAE,KAAKA,IAAgB;CAC7B,YAAY,EAAE,OAAO;CACrB,iBAAiB,EAAE,OAAO;CAC1B,WAAW,EAAE,QAAQ,QAAQ;EACzB,EAAE,OAAO;GAAE,MAAM,EAAE,QAAQ,WAAW;GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;EAAE,CAAC;EAC9D,EAAE,OAAO;GACL,MAAM,EAAE,QAAQ,UAAU;GAC1B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;EAC9C,CAAC;EACD,EAAE,OAAO;GAAE,MAAM,EAAE,UAAU;GAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;EAAE,CAAC;CACtE,CAAC;AACL,CAAC;AAED,MAAM,+BAA+B,EAAE,OAAO;CAC1C,MAAM,EAAE,KAAKA,IAAgB;CAC7B,eAAe,EAAE,OAAO;CACxB,eAAe,EAAE,OAAO;CACxB,QAAQ,EAAE,OAAO;CACjB,UAAU,EAAE,QAAQ;AACxB,CAAC;AAED,MAAM,gCAAgC,EAAE,QAAQ,QAAQ;CACpD,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,UAAU;EAAG,OAAO;CAAkC,CAAC;CAClF,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,YAAY;EAAG,OAAO;CAAkC,CAAC;CACpF,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,cAAc;EAAG,OAAO;CAA+B,CAAC;CACnF,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,MAAM;EAAG,OAAO;CAA2B,CAAC;CACvE,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,QAAQ;EAAG,OAAO;CAA6B,CAAC;CAC3E,EAAE,OAAO;EAAE,MAAM,EAAE,UAAU;EAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;CAAE,CAAC;AACtE,CAAC;AAED,SAAS,8BACL,WACA,QACF;CACE,QAAQ,UAAU,MAAlB;EACI,KAAK,aACD,OAAO,EAAE,MAAM,aAAa;EAChC,KAAK,YACD,OAAO;GACH,MAAM;GACN,OAAO,sBAAsB,UAAU,MAAM,YAAY,OAAO,MAAM,CAAC;GACvE,UAAU,UAAU,MAAM;EAC9B;EACJ,KAAK,YACD,OAAO;GACH,MAAM;GACN,OAAO,sBAAsB,UAAU,MAAM,YAAY,OAAO,MAAM,CAAC;EAC3E;EACJ,KAAK,YACD,OAAO;GACH,MAAM;GACN,OAAO,sBAAsB,UAAU,MAAM,YAAY,OAAO,MAAM,CAAC;EAC3E;EACJ,SACI,OAAO,EAAE,MAAM,cAAc;CACrC;AACJ;AAEA,SAAS,8BACL,eACA,QACF;CACE,QAAQ,cAAc,MAAtB;EACI,KAAK;EACL,KAAK,cACD,OAAO;GACH,MACI,cAAc,SAAS,aAChB,cACA;GACX,MAAM,kBACFC,eAAiB,eACjB,cAAc,MAAM,MACpB,8BACA,MACJ;GACA,cAAc,sBACV,cAAc,MAAM,mBACpB,OAAO,MAAM,CACjB;GACA,WAAW,8BACP,cAAc,MAAM,OAAO,aAAa,EAAE,MAAM,KAAA,EAAU,GAC1D,MACJ;EACJ;EACJ,KAAK,gBACD,OAAO;GACH,MAAM;GACN,MAAM,kBACFA,eAAiB,eACjB,cAAc,MAAM,MACpB,8BACA,MACJ;GACA,kBACI,cAAc,MAAM,iBAAiB,SAAS,0BACxC;IACI,MAAM;IACN,UAAU,sBACN,cAAc,MAAM,iBAAiB,OACrC,OAAO,MAAM,CACjB;GACJ,IACA,cAAc,MAAM,iBAAiB,SAAS,wBAC5C;IACI,MAAM;IACN,KAAK,cAAc,MAAM,iBAAiB;GAC9C,IACA,EAAE,MAAM,cAAuB;GAC3C,iBACI,cAAc,MAAM,uBAAuB,KACrC,sBACI,cAAc,MAAM,sBACpB,OAAO,MAAM,CACjB,IACA,KAAA;GACV,aACI,cAAc,MAAM,YAAY,SAAS,qBACnC;IACI,MAAM;IACN,UAAU,sBACN,OAAO,cAAc,MAAM,YAAY,KAAK,GAC5C,OAAO,MAAM,CACjB;GACJ,IACA,cAAc,MAAM,YAAY,SAAS,mBACvC;IACI,MAAM;IACN,KAAK,cAAc,MAAM,YAAY;GACzC,IACA,EAAE,MAAM,OAAgB;EACxC;EACJ,KAAK,QACD,OAAO;GACH,MAAM;GACN,MAAM,kBACFA,eAAiB,eACjB,cAAc,MAAM,MACpB,8BACA,MACJ;GACA,YAAY,OAAO,cAAc,MAAM,UAAU;GACjD,iBAAiB,OAAO,cAAc,MAAM,eAAe;GAC3D,WACI,cAAc,MAAM,UAAU,SAAS,cAChC,EAAE,MAAM,aAAa,IACtB,cAAc,MAAM,UAAU,SAAS,aACpC;IACG,MAAM;IACN,OAAO,sBACH,cAAc,MAAM,UAAU,MAAM,YACpC,OAAO,MAAM,CACjB;GACJ,IACC,EAAE,MAAM,cAAc;EACvC;EACJ,KAAK,UACD,OAAO;GACH,MAAM;GACN,MAAM,kBACFA,eAAiB,eACjB,cAAc,MAAM,MACpB,8BACA,MACJ;GACA,UAAU,sBAAsB,cAAc,MAAM,eAAe,OAAO,MAAM,CAAC;GACjF,UAAU,sBAAsB,cAAc,MAAM,eAAe,OAAO,MAAM,CAAC;GACjF,QAAQ,cAAc,MAAM;GAC5B,UAAU,cAAc,MAAM;EAClC;EACJ,SACI,OAAO,EAAE,MAAM,cAAuB;CAC9C;AACJ;AAEA,MAAM,uBAAuB,EAAE,OAAO;CAClC,mBAAmB,EAAE,OAAO;CAC5B,oBAAoB,EAAE,KAAKC,kBAA8B;CACzD,kBAAkB,EAAE,KAAKC,gBAA4B;AACzD,CAAC;AAED,MAAM,2BAA2B,EAAE,OAAO;CACtC,uBAAuB,EAAE,OAAO;CAChC,sBAAsB,EAAE,OAAO;CAC/B,gBAAgB,EAAE,OAAO;CACzB,kBAAkB,EAAE,OAAO;CAC3B,qBAAqB,EAAE,OAAO;CAC9B,kBAAkB,EAAE,OAAO;CAC3B,gBAAgB,EAAE,OAAO;CACzB,oBAAoB,EAAE,KAAKD,kBAA8B;CACzD,kBAAkB,EAAE,KAAKC,gBAA4B;AACzD,CAAC;AAED,MAAM,uBAAuB,EAAE,OAAO;CAClC,gBAAgB,EAAE,OAAO;CACzB,qBAAqB,EAAE,OAAO;CAC9B,UAAU,EAAE,OAAO;CACnB,YAAY,EAAE,OAAO;CACrB,mBAAmB,EAAE,OAAO;AAChC,CAAC;AAED,MAAM,yBAAyB,EAAE,OAAO;CACpC,qBAAqB,EAAE,OAAO;CAC9B,qBAAqB,EAAE,OAAO;CAC9B,cAAc,EAAE,OAAO;CACvB,oBAAoB,EAAE,KAAKC,kBAAwB;AACvD,CAAC;AAED,MAAM,0BAA0B,EAAE,QAAQ,QAAQ;CAC9C,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,MAAM;EAAG,OAAO;CAAqB,CAAC;CACjE,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,UAAU;EAAG,OAAO;CAAyB,CAAC;CACzE,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,WAAW;EAAG,OAAO;CAAqB,CAAC;CACtE,EAAE,OAAO;EAAE,MAAM,EAAE,QAAQ,aAAa;EAAG,OAAO;CAAuB,CAAC;CAC1E,EAAE,OAAO;EAAE,MAAM,EAAE,UAAU;EAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC;CAAE,CAAC;AACtE,CAAC;AA+CD,SAAS,wBACL,SACA,QACA,UACoB;CACpB,QAAQ,QAAQ,MAAhB;EACI,KAAK,QACD,OAAO;GACH,MAAM;GACN,cAAc,sBACV,QAAQ,MAAM,mBACd,OAAO,MAAM,CACjB;GACA,oBAAoB,kBAChB,wBAAwB,eACxB,QAAQ,MAAM,oBACd,wBACA,sBACJ;GACA,kBAAkB,kBACd,sBAAsB,eACtB,QAAQ,MAAM,kBACd,wBACA,mBACJ;EACJ;EACJ,KAAK,YACD,OAAO;GACH,MAAM;GACN,kBACI,QAAQ,MAAM,wBAAwB,KAChC,sBAAsB,QAAQ,MAAM,uBAAuB,OAAO,MAAM,CAAC,IACzE,KAAA;GACV,qBAAqB,QAAQ,MAAM;GACnC,iBACI,QAAQ,MAAM,uBAAuB,KAC/B,sBAAsB,QAAQ,MAAM,sBAAsB,OAAO,MAAM,CAAC,IACxE,KAAA;GACV,WACI,QAAQ,MAAM,iBAAiB,KACzB,sBAAsB,QAAQ,MAAM,gBAAgB,OAAO,MAAM,CAAC,IAClE,KAAA;GACV,aACI,QAAQ,MAAM,mBAAmB,KAC3B,sBAAsB,QAAQ,MAAM,kBAAkB,OAAO,MAAM,CAAC,IACpE,KAAA;GACV,aACI,QAAQ,MAAM,mBAAmB,IAC3B,sBACI,OAAO,QAAQ,MAAM,gBAAgB,GACrC,OAAO,MAAM,CACjB,IACA,KAAA;GACV,gBAAgB,QAAQ,MAAM;GAC9B,oBAAoB,kBAChB,wBAAwB,eACxB,QAAQ,MAAM,oBACd,wBACA,sBACJ;GACA,kBAAkB,kBACd,sBAAsB,eACtB,QAAQ,MAAM,kBACd,wBACA,mBACJ;EACJ;EACJ,KAAK,aACD,OAAO;GACH,MAAM;GACN,gBAAgB,OAAO,QAAQ,MAAM,cAAc;GACnD,qBAAqB,OAAO,QAAQ,MAAM,mBAAmB;GAC7D,UAAU,QAAQ,MAAM;GACxB,YAAY,QAAQ,MAAM;GAC1B,aAAa,sBACT,QAAQ,MAAM,mBACd,OAAO,QAAQ,QAAQ,CAC3B;EACJ;EACJ,KAAK,eACD,OAAO;GACH,MAAM;GACN,gBAAgB,sBACZ,QAAQ,MAAM,qBACd,OAAO,MAAM,CACjB;GACA,gBAAgB,sBACZ,QAAQ,MAAM,qBACd,OAAO,MAAM,CACjB;GACA,cAAc,QAAQ,MAAM;GAC5B,oBAAoB,kBAChB,wBAAwB,eACxB,QAAQ,MAAM,oBACd,wBACA,qBACJ;EACJ;EACJ,SACI,OAAO,EAAE,MAAM,KAAA,EAAU;CACjC;AACJ;;AAGA,SAAgB,oBAAoB,QAAmB;CACnD,OAAO,EAAE,KACL,EAAE,OAAO;EACL,WAAW,EAAE,OAAO;EACpB,cAAc,EAAE,OAAO;EACvB,UAAU;EACV,QAAQ,EAAE,KAAKL,aAAmB;EAClC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC;EACpC,WAAW,EAAE,OAAO;EACpB,UAAU,EAAE,KAAKM,QAAoB;EACrC,yBAAyB,EAAE,KAAKC,uBAAmC;EACnE,eAAe;EACf,iBAAiB,EAAE,OAAO;EAC1B,WAAW,EAAE,SAAS,eAAe;EACrC,WAAW,EAAE,SAAS,eAAe;EACrC,SAAS,EAAE,SAAS,eAAe;EACnC,aAAa,EAAE,SAAS,eAAe;EACvC,gBAAgB;CACpB,CAAC,GACD,EAAE,WAAW,OAAO;EAChB,WAAW,SAAS,EAAE,SAAS;EAC/B,cAAc,SAAS,EAAE,YAAY;EACrC,UAAU,EAAE;EACZ,QAAQ,kBACJ,mBAAmB,eACnB,EAAE,QACF,iBACA,QACJ;EACA,eAAe,EAAE,gBAAgB,SAAS,EAAE,aAAa,IAAI,KAAA;EAC7D,KAAK,sBAAsB,EAAE,WAAW,OAAO,QAAQ,EAAE,QAAQ,CAAC;EAClE,UAAU,kBACN,cAAc,eACd,EAAE,UACF,iBACA,WACJ;EACA,yBAAyB,kBACrB,6BAA6B,eAC7B,EAAE,yBACF,iBACA,UACJ;EACA,eAAe,8BAA8B,EAAE,eAAe,MAAM;EACpE,iBAAiB,EAAE;EACnB,WAAW,EAAE,WAAW,UAAU,OAAO,EAAE,UAAU,OAAO,IAAI,MAAO,KAAA;EACvE,WAAW,EAAE,WAAW,UAAU,OAAO,EAAE,UAAU,OAAO,IAAI,MAAO,KAAA;EACvE,SAAS,EAAE,SAAS,UAAU,OAAO,EAAE,QAAQ,OAAO,IAAI,MAAO,KAAA;EACjE,aAAa,EAAE,aAAa,UAAU,OAAO,EAAE,YAAY,OAAO,IAAI,MAAO,KAAA;EAC7E,gBAAgB,wBAAwB,EAAE,gBAAgB,QAAQ,EAAE,QAAQ;CAChF,EAAE,CACN;AACJ;AAKA,SAAgB,yBAAyB,QAAmB;CACxD,OAAO,EAAE,KACL,EAAE,OAAO;EACL,WAAW,EAAE,OAAO;EACpB,cAAc,EAAE,OAAO;EACvB,UAAU,EAAE,OAAO;EACnB,aAAa,EAAE,KAAKC,WAAiB;EACrC,WAAW,EAAE,KAAKC,gBAAsB;EACxC,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,OAAO;EACnB,cAAc,EAAE,OAAO;EACvB,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC;EACrC,QAAQ,EAAE,OAAO;CACrB,CAAC,GACD,EAAE,WAAW,OAAO;EAChB,WAAW,SAAS,EAAE,SAAS;EAC/B,cAAc,SAAS,EAAE,YAAY;EACrC,UAAU,EAAE;EACZ,aAAa,kBACT,iBAAiB,eACjB,EAAE,aACF,sBACA,cACJ;EACA,WAAW,kBACP,sBAAsB,eACtB,EAAE,WACF,sBACA,YACJ;EACA,IAAI,SAAS,EAAE,IAAI;EACnB,UAAU,EAAE;EACZ,cAAc,EAAE,eAAe,KAAK,SAAS,EAAE,YAAY,IAAI,KAAA;EAC/D,WACI,EAAE,mBAAmB,KAAA,KAAa,EAAE,iBAAiB,KAC/C,sBAAsB,EAAE,gBAAgB,OAAO,MAAM,CAAC,IACtD,KAAA;EACV,QAAQ,EAAE,UAAU,KAAA;CACxB,EAAE,CACN;AACJ"}
|
|
@@ -26,7 +26,7 @@ declare class TriggersService {
|
|
|
26
26
|
#private;
|
|
27
27
|
constructor(transport: Transport, realtime: PolyesterRealtime, resolver: SubaccountResolver | undefined, scales: SdkScales);
|
|
28
28
|
/**
|
|
29
|
-
* Creates a standalone trigger
|
|
29
|
+
* Creates a standalone trigger for a symbol ID, using that market's catalog quantity scale.
|
|
30
30
|
*/
|
|
31
31
|
create(input: CreateTriggerInput, options?: PolyesterMutationOptions): Promise<CreateTriggerResult>;
|
|
32
32
|
/**
|
|
@@ -34,7 +34,7 @@ declare class TriggersService {
|
|
|
34
34
|
*/
|
|
35
35
|
get(input: GetTriggerInput, options?: PolyesterRequestOptions): Promise<Trigger | null>;
|
|
36
36
|
/**
|
|
37
|
-
* Lists triggers for the resolved account scope with optional symbol, status, trigger type, parent order, limit, and page-token filters. Results are returned newest-first.
|
|
37
|
+
* Lists triggers for the resolved account scope with optional symbol ID, status, trigger type, parent order, limit, and page-token filters. Results are returned newest-first.
|
|
38
38
|
*/
|
|
39
39
|
list(input?: ListTriggersInput, options?: PolyesterRequestOptions): Promise<ListTriggersResult>;
|
|
40
40
|
/**
|
|
@@ -41,7 +41,7 @@ var TriggersService = class {
|
|
|
41
41
|
this.#triggerEventSchema = createTriggerEventSchema(scales);
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* Creates a standalone trigger
|
|
44
|
+
* Creates a standalone trigger for a symbol ID, using that market's catalog quantity scale.
|
|
45
45
|
*/
|
|
46
46
|
async create(input, options) {
|
|
47
47
|
await this.#scales.ready();
|
|
@@ -62,7 +62,7 @@ var TriggersService = class {
|
|
|
62
62
|
return parse(this.#triggerSchema, res.trigger);
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
|
-
* Lists triggers for the resolved account scope with optional symbol, status, trigger type, parent order, limit, and page-token filters. Results are returned newest-first.
|
|
65
|
+
* Lists triggers for the resolved account scope with optional symbol ID, status, trigger type, parent order, limit, and page-token filters. Results are returned newest-first.
|
|
66
66
|
*/
|
|
67
67
|
async list(input = {}, options) {
|
|
68
68
|
await this.#scales.ready();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.js","names":["#client","Proto.TriggersService","#realtime","#resolver","#scales","#createTriggerInputSchema","#modifyTriggerInputSchema","#triggerSchema","#triggerEventSchema","Proto.TriggerSchema","Proto.TriggerEventSchema"],"sources":["../../../src/services/triggers/triggers.ts"],"sourcesContent":["import * as Proto from \"../../gen/triggers/v1/triggers_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { createReadyGate, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport {\n createCreateTriggerInputSchema,\n createModifyTriggerInputSchema,\n ListTriggersInputSchema,\n CancelTriggerInputSchema,\n PauseTriggerInputSchema,\n ResumeTriggerInputSchema,\n GetTriggerInputSchema,\n ListTriggerEventsInputSchema,\n CreateTriggerResultSchema,\n CancelTriggerResultSchema,\n ModifyTriggerResultSchema,\n PauseTriggerResultSchema,\n ResumeTriggerResultSchema,\n createTriggerSchema,\n createTriggerEventSchema,\n type Trigger,\n type CreateTriggerInput,\n type ListTriggersInput,\n type CancelTriggerInput,\n type GetTriggerInput,\n type ModifyTriggerInput,\n type PauseTriggerInput,\n type ResumeTriggerInput,\n type ListTriggerEventsInput,\n type CreateTriggerResult,\n type CancelTriggerResult,\n type ModifyTriggerResult,\n type PauseTriggerResult,\n type ResumeTriggerResult,\n type ListTriggerEventsResult,\n type TriggerEvent,\n} from \"./triggers.schemas.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\n\nexport type {\n CreateTriggerResult,\n CancelTriggerResult,\n ModifyTriggerResult,\n PauseTriggerResult,\n ResumeTriggerResult,\n ListTriggerEventsResult,\n};\n\nexport interface ListTriggersResult {\n triggers: Trigger[];\n nextPageToken: string;\n}\n\nfunction hasKnownTriggerSymbol(scales: SdkScales, trigger: { symbolId: number }): boolean {\n try {\n scales.baseQty(trigger.symbolId);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface SubscribeTriggersInput extends BaseSubscribeInput<Trigger> {\n accountId: string;\n}\n\ninterface SubscribeTriggerEventsInput extends BaseSubscribeInput<TriggerEvent> {\n accountId: string;\n}\n\n/**\n * Manages standalone order triggers and their realtime lifecycle/event streams.\n */\nexport class TriggersService {\n #client: Client<typeof Proto.TriggersService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #createTriggerInputSchema: ReturnType<typeof createCreateTriggerInputSchema>;\n #modifyTriggerInputSchema: ReturnType<typeof createModifyTriggerInputSchema>;\n #triggerSchema: ReturnType<typeof createTriggerSchema>;\n #triggerEventSchema: ReturnType<typeof createTriggerEventSchema>;\n\n constructor(\n transport: Transport,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#client = createClient(Proto.TriggersService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#createTriggerInputSchema = createCreateTriggerInputSchema(scales);\n this.#modifyTriggerInputSchema = createModifyTriggerInputSchema(scales);\n this.#triggerSchema = createTriggerSchema(scales);\n this.#triggerEventSchema = createTriggerEventSchema(scales);\n }\n\n /**\n * Creates a standalone trigger, such as stop-loss, take-profit, trailing-stop, TWAP, or ladder, for the resolved account scope. The request includes trigger conditions, order fields, strategy-specific fields, and optional clientTriggerId.\n */\n async create(\n input: CreateTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateTriggerResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(this.#createTriggerInputSchema, resolved);\n const res = await this.#client.createTrigger(validatedInput, toConnectCallOptions(options));\n return parse(CreateTriggerResultSchema, res);\n }\n\n /**\n * Fetches one trigger by id in the resolved account scope and returns null when the backend response contains no trigger.\n */\n async get(input: GetTriggerInput, options?: PolyesterRequestOptions): Promise<Trigger | null> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(GetTriggerInputSchema, resolved);\n const res = await this.#client.getTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n\n if (!res.trigger) return null;\n return parse(this.#triggerSchema, res.trigger);\n }\n\n /**\n * Lists triggers for the resolved account scope with optional symbol, status, trigger type, parent order, limit, and page-token filters. Results are returned newest-first.\n */\n async list(\n input: ListTriggersInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<ListTriggersResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(ListTriggersInputSchema, resolved);\n const res = await this.#client.listTriggers(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return {\n triggers: parse(\n v.array(this.#triggerSchema),\n res.triggers.filter((trigger) => hasKnownTriggerSymbol(this.#scales, trigger)),\n ),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Cancels an active trigger by id in the resolved account scope and returns the trigger id, resulting status, and server timestamp.\n */\n async cancel(\n input: CancelTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<CancelTriggerResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(CancelTriggerInputSchema, resolved);\n const res = await this.#client.cancelTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(CancelTriggerResultSchema, res);\n }\n\n /**\n * Applies a limited patch to an existing trigger. The symbol ID routes policy checks for exposure-increasing changes.\n */\n async modify(\n input: ModifyTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<ModifyTriggerResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(this.#modifyTriggerInputSchema, resolved);\n const res = await this.#client.modifyTrigger(validated, toConnectCallOptions(options));\n return parse(ModifyTriggerResultSchema, res);\n }\n\n /**\n * Pauses an active trigger without discarding its immutable strategy configuration.\n */\n async pause(\n input: PauseTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<PauseTriggerResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(PauseTriggerInputSchema, resolved);\n const res = await this.#client.pauseTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(PauseTriggerResultSchema, res);\n }\n\n /**\n * Resumes a paused trigger using its symbol ID for policy checks.\n */\n async resume(\n input: ResumeTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<ResumeTriggerResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(ResumeTriggerInputSchema, resolved);\n const res = await this.#client.resumeTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(ResumeTriggerResultSchema, res);\n }\n\n /**\n * Returns newest-first historical lifecycle events for one trigger, optionally filtered by event type. Fired events enumerate child-order actions. The SDK defaults limit to 50.\n */\n async listEvents(\n input: ListTriggerEventsInput,\n options?: PolyesterRequestOptions,\n ): Promise<ListTriggerEventsResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(ListTriggerEventsInputSchema, resolved);\n\n const res = await this.#client.listTriggerEvents(\n removeUndefined({\n triggerId: validated.triggerId,\n subaccountId: validated.subaccountId,\n limit: validated.limit ?? 50,\n eventType: validated.eventType,\n pageToken: validated.pageToken ?? \"\",\n }),\n toConnectCallOptions(options),\n );\n\n return {\n events: parse(v.array(this.#triggerEventSchema), res.events),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private trigger state updates on private:spot:triggers:{accountId}:proto and emits parsed trigger records.\n */\n subscribe(input: SubscribeTriggersInput): () => void {\n const channel = `private:spot:triggers:${input.accountId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.TriggerSchema,\n onPublication: (data) => {\n gate.run(() => {\n const trigger = parse(this.#triggerSchema, data);\n input.onEvent(trigger);\n });\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n /**\n * Subscribes to private trigger lifecycle events on private:spot:triggers:events:{accountId}:proto and emits parsed trigger event records.\n */\n subscribeEvents(input: SubscribeTriggerEventsInput): () => void {\n const channel = `private:spot:triggers:events:${input.accountId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.TriggerEventSchema,\n onPublication: (data) => {\n gate.run(() => {\n const event = parse(this.#triggerEventSchema, data);\n input.onEvent(event);\n });\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;AA+DA,SAAS,sBAAsB,QAAmB,SAAwC;CACtF,IAAI;EACA,OAAO,QAAQ,QAAQ,QAAQ;EAC/B,OAAO;CACX,QAAQ;EACJ,OAAO;CACX;AACJ;;;;AAaA,IAAa,kBAAb,MAA6B;CACzB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA,YACI,WACA,UACA,UACA,QACF;EACE,KAAKA,UAAU,aAAaC,mBAAuB,SAAS;EAC5D,KAAKC,YAAY;EACjB,KAAKC,YAAY;EACjB,KAAKC,UAAU;EACf,KAAKC,4BAA4B,+BAA+B,MAAM;EACtE,KAAKC,4BAA4B,+BAA+B,MAAM;EACtE,KAAKC,iBAAiB,oBAAoB,MAAM;EAChD,KAAKC,sBAAsB,yBAAyB,MAAM;CAC9D;;;;CAKA,MAAM,OACF,OACA,SAC4B;EAC5B,MAAM,KAAKJ,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,iBAAiB,MAAM,KAAKE,2BAA2B,QAAQ;EACrE,MAAM,MAAM,MAAM,KAAKL,QAAQ,cAAc,gBAAgB,qBAAqB,OAAO,CAAC;EAC1F,OAAO,MAAM,2BAA2B,GAAG;CAC/C;;;;CAKA,MAAM,IAAI,OAAwB,SAA4D;EAC1F,MAAM,KAAKI,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,YAAY,MAAM,uBAAuB,QAAQ;EACvD,MAAM,MAAM,MAAM,KAAKH,QAAQ,WAC3B,gBAAgB,SAAS,GACzB,qBAAqB,OAAO,CAChC;EAEA,IAAI,CAAC,IAAI,SAAS,OAAO;EACzB,OAAO,MAAM,KAAKO,gBAAgB,IAAI,OAAO;CACjD;;;;CAKA,MAAM,KACF,QAA2B,CAAC,GAC5B,SAC2B;EAC3B,MAAM,KAAKH,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,YAAY,MAAM,yBAAyB,QAAQ;EACzD,MAAM,MAAM,MAAM,KAAKH,QAAQ,aAC3B,gBAAgB,SAAS,GACzB,qBAAqB,OAAO,CAChC;EACA,OAAO;GACH,UAAU,MACN,EAAE,MAAM,KAAKO,cAAc,GAC3B,IAAI,SAAS,QAAQ,YAAY,sBAAsB,KAAKH,SAAS,OAAO,CAAC,CACjF;GACA,eAAe,IAAI;EACvB;CACJ;;;;CAKA,MAAM,OACF,OACA,SAC4B;EAC5B,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,YAAY,MAAM,0BAA0B,QAAQ;EAC1D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAC3B,gBAAgB,SAAS,GACzB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,2BAA2B,GAAG;CAC/C;;;;CAKA,MAAM,OACF,OACA,SAC4B;EAC5B,MAAM,KAAKI,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,YAAY,MAAM,KAAKG,2BAA2B,QAAQ;EAChE,MAAM,MAAM,MAAM,KAAKN,QAAQ,cAAc,WAAW,qBAAqB,OAAO,CAAC;EACrF,OAAO,MAAM,2BAA2B,GAAG;CAC/C;;;;CAKA,MAAM,MACF,OACA,SAC2B;EAC3B,MAAM,WAAW,0BAA0B,OAAO,KAAKG,SAAS;EAChE,MAAM,YAAY,MAAM,yBAAyB,QAAQ;EACzD,MAAM,MAAM,MAAM,KAAKH,QAAQ,aAC3B,gBAAgB,SAAS,GACzB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,0BAA0B,GAAG;CAC9C;;;;CAKA,MAAM,OACF,OACA,SAC4B;EAC5B,MAAM,WAAW,0BAA0B,OAAO,KAAKG,SAAS;EAChE,MAAM,YAAY,MAAM,0BAA0B,QAAQ;EAC1D,MAAM,MAAM,MAAM,KAAKH,QAAQ,cAC3B,gBAAgB,SAAS,GACzB,qBAAqB,OAAO,CAChC;EACA,OAAO,MAAM,2BAA2B,GAAG;CAC/C;;;;CAKA,MAAM,WACF,OACA,SACgC;EAChC,MAAM,KAAKI,QAAQ,MAAM;EACzB,MAAM,WAAW,0BAA0B,OAAO,KAAKD,SAAS;EAChE,MAAM,YAAY,MAAM,8BAA8B,QAAQ;EAE9D,MAAM,MAAM,MAAM,KAAKH,QAAQ,kBAC3B,gBAAgB;GACZ,WAAW,UAAU;GACrB,cAAc,UAAU;GACxB,OAAO,UAAU,SAAS;GAC1B,WAAW,UAAU;GACrB,WAAW,UAAU,aAAa;EACtC,CAAC,GACD,qBAAqB,OAAO,CAChC;EAEA,OAAO;GACH,QAAQ,MAAM,EAAE,MAAM,KAAKQ,mBAAmB,GAAG,IAAI,MAAM;GAC3D,eAAe,IAAI;EACvB;CACJ;;;;CAKA,UAAU,OAA2C;EACjD,MAAM,UAAU,yBAAyB,MAAM,UAAU;EACzD,MAAM,OAAO,sBACH,KAAKJ,QAAQ,MAAM,IACxB,UAAU,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC,CAC7E;EACA,OAAO,KAAKF,UAAU,oBAAoB;GACtC;GACA,QAAQO;GACR,gBAAgB,SAAS;IACrB,KAAK,UAAU;KACX,MAAM,UAAU,MAAM,KAAKF,gBAAgB,IAAI;KAC/C,MAAM,QAAQ,OAAO;IACzB,CAAC;GACL;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;;;;CAKA,gBAAgB,OAAgD;EAC5D,MAAM,UAAU,gCAAgC,MAAM,UAAU;EAChE,MAAM,OAAO,sBACH,KAAKH,QAAQ,MAAM,IACxB,UAAU,MAAM,UAAU,+BAA+B,SAAS,KAAK,CAAC,CAC7E;EACA,OAAO,KAAKF,UAAU,oBAAoB;GACtC;GACA,QAAQQ;GACR,gBAAgB,SAAS;IACrB,KAAK,UAAU;KACX,MAAM,QAAQ,MAAM,KAAKF,qBAAqB,IAAI;KAClD,MAAM,QAAQ,KAAK;IACvB,CAAC;GACL;GACA,mBAAmB,MAAM,SAAS;GAClC,sBAAsB,MAAM,UAAU;GACtC,SAAS,MAAM;EACnB,CAAC;CACL;AACJ"}
|
|
1
|
+
{"version":3,"file":"triggers.js","names":["#client","Proto.TriggersService","#realtime","#resolver","#scales","#createTriggerInputSchema","#modifyTriggerInputSchema","#triggerSchema","#triggerEventSchema","Proto.TriggerSchema","Proto.TriggerEventSchema"],"sources":["../../../src/services/triggers/triggers.ts"],"sourcesContent":["import * as Proto from \"../../gen/triggers/v1/triggers_pb.js\";\nimport { createClient, type Client, type Transport } from \"@connectrpc/connect\";\nimport { publicationHandlerErrorContext } from \"../../shared/subscription-errors.js\";\nimport * as v from \"valibot\";\nimport { parse } from \"../../shared/validation.js\";\nimport { type SubaccountResolver, resolveAccountScopedInput } from \"../subaccount-resolver.js\";\nimport { removeUndefined } from \"../../utils/remove-undefined.js\";\nimport {\n toConnectCallOptions,\n type PolyesterMutationOptions,\n type PolyesterRequestOptions,\n} from \"../../shared/request-options.js\";\nimport { createReadyGate, type SdkScales } from \"../../shared/decimal-surface.js\";\nimport {\n createCreateTriggerInputSchema,\n createModifyTriggerInputSchema,\n ListTriggersInputSchema,\n CancelTriggerInputSchema,\n PauseTriggerInputSchema,\n ResumeTriggerInputSchema,\n GetTriggerInputSchema,\n ListTriggerEventsInputSchema,\n CreateTriggerResultSchema,\n CancelTriggerResultSchema,\n ModifyTriggerResultSchema,\n PauseTriggerResultSchema,\n ResumeTriggerResultSchema,\n createTriggerSchema,\n createTriggerEventSchema,\n type Trigger,\n type CreateTriggerInput,\n type ListTriggersInput,\n type CancelTriggerInput,\n type GetTriggerInput,\n type ModifyTriggerInput,\n type PauseTriggerInput,\n type ResumeTriggerInput,\n type ListTriggerEventsInput,\n type CreateTriggerResult,\n type CancelTriggerResult,\n type ModifyTriggerResult,\n type PauseTriggerResult,\n type ResumeTriggerResult,\n type ListTriggerEventsResult,\n type TriggerEvent,\n} from \"./triggers.schemas.js\";\nimport type { BaseSubscribeInput } from \"../../shared/types.js\";\nimport type { PolyesterRealtime } from \"../../realtime/index.js\";\n\nexport type {\n CreateTriggerResult,\n CancelTriggerResult,\n ModifyTriggerResult,\n PauseTriggerResult,\n ResumeTriggerResult,\n ListTriggerEventsResult,\n};\n\nexport interface ListTriggersResult {\n triggers: Trigger[];\n nextPageToken: string;\n}\n\nfunction hasKnownTriggerSymbol(scales: SdkScales, trigger: { symbolId: number }): boolean {\n try {\n scales.baseQty(trigger.symbolId);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface SubscribeTriggersInput extends BaseSubscribeInput<Trigger> {\n accountId: string;\n}\n\ninterface SubscribeTriggerEventsInput extends BaseSubscribeInput<TriggerEvent> {\n accountId: string;\n}\n\n/**\n * Manages standalone order triggers and their realtime lifecycle/event streams.\n */\nexport class TriggersService {\n #client: Client<typeof Proto.TriggersService>;\n #realtime: PolyesterRealtime;\n #resolver?: SubaccountResolver;\n #scales: SdkScales;\n #createTriggerInputSchema: ReturnType<typeof createCreateTriggerInputSchema>;\n #modifyTriggerInputSchema: ReturnType<typeof createModifyTriggerInputSchema>;\n #triggerSchema: ReturnType<typeof createTriggerSchema>;\n #triggerEventSchema: ReturnType<typeof createTriggerEventSchema>;\n\n constructor(\n transport: Transport,\n realtime: PolyesterRealtime,\n resolver: SubaccountResolver | undefined,\n scales: SdkScales,\n ) {\n this.#client = createClient(Proto.TriggersService, transport);\n this.#realtime = realtime;\n this.#resolver = resolver;\n this.#scales = scales;\n this.#createTriggerInputSchema = createCreateTriggerInputSchema(scales);\n this.#modifyTriggerInputSchema = createModifyTriggerInputSchema(scales);\n this.#triggerSchema = createTriggerSchema(scales);\n this.#triggerEventSchema = createTriggerEventSchema(scales);\n }\n\n /**\n * Creates a standalone trigger for a symbol ID, using that market's catalog quantity scale.\n */\n async create(\n input: CreateTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<CreateTriggerResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validatedInput = parse(this.#createTriggerInputSchema, resolved);\n const res = await this.#client.createTrigger(validatedInput, toConnectCallOptions(options));\n return parse(CreateTriggerResultSchema, res);\n }\n\n /**\n * Fetches one trigger by id in the resolved account scope and returns null when the backend response contains no trigger.\n */\n async get(input: GetTriggerInput, options?: PolyesterRequestOptions): Promise<Trigger | null> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(GetTriggerInputSchema, resolved);\n const res = await this.#client.getTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n\n if (!res.trigger) return null;\n return parse(this.#triggerSchema, res.trigger);\n }\n\n /**\n * Lists triggers for the resolved account scope with optional symbol ID, status, trigger type, parent order, limit, and page-token filters. Results are returned newest-first.\n */\n async list(\n input: ListTriggersInput = {},\n options?: PolyesterRequestOptions,\n ): Promise<ListTriggersResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(ListTriggersInputSchema, resolved);\n const res = await this.#client.listTriggers(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return {\n triggers: parse(\n v.array(this.#triggerSchema),\n res.triggers.filter((trigger) => hasKnownTriggerSymbol(this.#scales, trigger)),\n ),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Cancels an active trigger by id in the resolved account scope and returns the trigger id, resulting status, and server timestamp.\n */\n async cancel(\n input: CancelTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<CancelTriggerResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(CancelTriggerInputSchema, resolved);\n const res = await this.#client.cancelTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(CancelTriggerResultSchema, res);\n }\n\n /**\n * Applies a limited patch to an existing trigger. The symbol ID routes policy checks for exposure-increasing changes.\n */\n async modify(\n input: ModifyTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<ModifyTriggerResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(this.#modifyTriggerInputSchema, resolved);\n const res = await this.#client.modifyTrigger(validated, toConnectCallOptions(options));\n return parse(ModifyTriggerResultSchema, res);\n }\n\n /**\n * Pauses an active trigger without discarding its immutable strategy configuration.\n */\n async pause(\n input: PauseTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<PauseTriggerResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(PauseTriggerInputSchema, resolved);\n const res = await this.#client.pauseTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(PauseTriggerResultSchema, res);\n }\n\n /**\n * Resumes a paused trigger using its symbol ID for policy checks.\n */\n async resume(\n input: ResumeTriggerInput,\n options?: PolyesterMutationOptions,\n ): Promise<ResumeTriggerResult> {\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(ResumeTriggerInputSchema, resolved);\n const res = await this.#client.resumeTrigger(\n removeUndefined(validated),\n toConnectCallOptions(options),\n );\n return parse(ResumeTriggerResultSchema, res);\n }\n\n /**\n * Returns newest-first historical lifecycle events for one trigger, optionally filtered by event type. Fired events enumerate child-order actions. The SDK defaults limit to 50.\n */\n async listEvents(\n input: ListTriggerEventsInput,\n options?: PolyesterRequestOptions,\n ): Promise<ListTriggerEventsResult> {\n await this.#scales.ready();\n const resolved = resolveAccountScopedInput(input, this.#resolver);\n const validated = parse(ListTriggerEventsInputSchema, resolved);\n\n const res = await this.#client.listTriggerEvents(\n removeUndefined({\n triggerId: validated.triggerId,\n subaccountId: validated.subaccountId,\n limit: validated.limit ?? 50,\n eventType: validated.eventType,\n pageToken: validated.pageToken ?? \"\",\n }),\n toConnectCallOptions(options),\n );\n\n return {\n events: parse(v.array(this.#triggerEventSchema), res.events),\n nextPageToken: res.nextPageToken,\n };\n }\n\n /**\n * Subscribes to private trigger state updates on private:spot:triggers:{accountId}:proto and emits parsed trigger records.\n */\n subscribe(input: SubscribeTriggersInput): () => void {\n const channel = `private:spot:triggers:${input.accountId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.TriggerSchema,\n onPublication: (data) => {\n gate.run(() => {\n const trigger = parse(this.#triggerSchema, data);\n input.onEvent(trigger);\n });\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n\n /**\n * Subscribes to private trigger lifecycle events on private:spot:triggers:events:{accountId}:proto and emits parsed trigger event records.\n */\n subscribeEvents(input: SubscribeTriggerEventsInput): () => void {\n const channel = `private:spot:triggers:events:${input.accountId}:proto`;\n const gate = createReadyGate(\n () => this.#scales.ready(),\n (error) => input.onError?.(publicationHandlerErrorContext(channel, error)),\n );\n return this.#realtime.connectProtoChannel({\n channel,\n schema: Proto.TriggerEventSchema,\n onPublication: (data) => {\n gate.run(() => {\n const event = parse(this.#triggerEventSchema, data);\n input.onEvent(event);\n });\n },\n onConnected: () => input.onOpen?.(),\n onDisconnected: () => input.onClose?.(),\n onError: input.onError,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decimal-surface.d.ts","names":[],"sources":["../../src/shared/decimal-surface.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"decimal-surface.d.ts","names":[],"sources":["../../src/shared/decimal-surface.ts"],"mappings":";;;;;;;UA+BiB;EACb,SAAS;EACT;EACA,QAAQ,MAAM;EACd,YAAY,MAAM;EAClB,aAAa;EACb,kBAAkB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import "./wire-bounds.js";
|
|
1
2
|
import { scaledToDecimal, tryDecimalToScaled } from "../catalogs/decimal.js";
|
|
2
3
|
import { CatalogConversionError } from "../catalogs/types.js";
|
|
3
|
-
import "./wire-bounds.js";
|
|
4
4
|
/**
|
|
5
5
|
* Catalog-backed scale resolver. Takes a getter so it can be constructed
|
|
6
6
|
* before the owning client has assigned its catalog.
|
|
@@ -29,7 +29,7 @@ function conversionFailureMessage(field, value, failure) {
|
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Input direction: strict decimal→scaled conversion. Throws
|
|
32
|
-
* CatalogConversionError for non-decimal input or excess precision.
|
|
32
|
+
* CatalogConversionError for non-decimal input or inexact excess precision.
|
|
33
33
|
*/
|
|
34
34
|
function decimalInputToScaled(field, value, scale) {
|
|
35
35
|
const result = tryDecimalToScaled(value.trim(), scale);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decimal-surface.js","names":[],"sources":["../../src/shared/decimal-surface.ts"],"sourcesContent":["/**\n * Internal scaled⇄decimal bridge for the SDK's public decimal-string surface.\n *\n * The wire protocol carries scaled integers (price ticks, per-asset scaled\n * quantities); the public SDK surface carries plain decimal strings. Output\n * schemas convert exactly (no rounding, trailing zeros trimmed); input schemas\n *
|
|
1
|
+
{"version":3,"file":"decimal-surface.js","names":[],"sources":["../../src/shared/decimal-surface.ts"],"sourcesContent":["/**\n * Internal scaled⇄decimal bridge for the SDK's public decimal-string surface.\n *\n * The wire protocol carries scaled integers (price ticks, per-asset scaled\n * quantities); the public SDK surface carries plain decimal strings. Output\n * schemas convert exactly (no rounding, trailing zeros trimmed); input schemas\n * accept zero padding but reject fractional precision that remains above the\n * scale after trailing zeros are removed. Scaled integers must not escape\n * through any service input or output.\n */\nimport {\n scaledToDecimal,\n tryDecimalToScaled,\n type DecimalToScaledFailure,\n} from \"../catalogs/decimal.js\";\nimport {\n CatalogConversionError,\n type ClientCatalog,\n type PairCatalogKey,\n} from \"../catalogs/types.js\";\nimport { PRICE_SCALE } from \"../catalogs/readers.js\";\nimport { PROTOBUF_INT64_MAX } from \"./wire-bounds.js\";\n\n/** On-chain unified-asset amounts (`amountE18`) are always 18-decimal scaled. */\nexport const E18_SCALE = 18;\n\n/**\n * Resolves wire scales for the SDK's internal decimal conversion. Backed by\n * the client catalog; `ready()` must be awaited before the synchronous lookups\n * are used so the catalog can answer them.\n */\nexport interface SdkScales {\n ready(): Promise<void>;\n price(): number;\n baseQty(pair: PairCatalogKey): number;\n quoteAmount(pair: PairCatalogKey): number;\n ledgerAmount(ledgerAssetId: number): number;\n zippedAssetAmount(zippedAssetId: number): number;\n}\n\n/**\n * Catalog-backed scale resolver. Takes a getter so it can be constructed\n * before the owning client has assigned its catalog.\n */\nexport function createCatalogSdkScales(getCatalog: () => ClientCatalog): SdkScales {\n return {\n ready: async () => {\n await getCatalog().ensureReady();\n },\n price: () => PRICE_SCALE,\n baseQty: (pair) => requirePair(getCatalog(), pair).baseAsset.quantityScale,\n quoteAmount: (pair) => requirePair(getCatalog(), pair).quoteAsset.quantityScale,\n ledgerAmount: (ledgerAssetId) =>\n getCatalog().ledger.requireAssetByLedgerId(ledgerAssetId).quantityScale,\n zippedAssetAmount: (zippedAssetId) =>\n getCatalog().zipper.requireAssetChainByZippedAssetId(zippedAssetId).asset.quantityScale,\n };\n}\n\nfunction requirePair(catalog: ClientCatalog, pair: PairCatalogKey) {\n return typeof pair === \"string\" || (typeof pair === \"object\" && \"symbol\" in pair)\n ? catalog.market.requirePairBySymbol(typeof pair === \"string\" ? pair : pair.symbol)\n : catalog.market.requirePairBySymbolId(typeof pair === \"number\" ? pair : pair.symbolId);\n}\n\n/** Output direction: exact scaled→decimal conversion (`1500000n`@6 → `\"1.5\"`). */\nexport function scaledToDecimalOutput(value: bigint, scale: number): string {\n return scaledToDecimal(value, scale);\n}\n\nfunction conversionFailureMessage(\n field: string,\n value: string,\n failure: DecimalToScaledFailure,\n): string {\n return failure.reason === \"precision\"\n ? `${field} supports at most ${failure.maxDecimals} decimal places: ${value}`\n : `${field} must be a non-negative decimal number: ${value}`;\n}\n\n/**\n * Input direction: strict decimal→scaled conversion. Throws\n * CatalogConversionError for non-decimal input or inexact excess precision.\n */\nexport function decimalInputToScaled(field: string, value: string, scale: number): bigint {\n const result = tryDecimalToScaled(value.trim(), scale);\n if (!result.ok) {\n throw new CatalogConversionError(\n field,\n conversionFailureMessage(field, value, result.failure),\n );\n }\n return result.scaled;\n}\n\nfunction unboundedPositiveDecimalInputToScaled(\n field: string,\n value: string,\n scale: number,\n): bigint {\n const scaled = decimalInputToScaled(field, value, scale);\n if (scaled <= 0n) {\n throw new CatalogConversionError(field, `${field} must be greater than 0: ${value}`);\n }\n return scaled;\n}\n\n/**\n * Converts a positive decimal input to a scaled protobuf `int64` value.\n * Rejects values above the wire-format ceiling before serialization.\n */\nexport function positiveDecimalInputToScaled(field: string, value: string, scale: number): bigint {\n const scaled = unboundedPositiveDecimalInputToScaled(field, value, scale);\n if (scaled > PROTOBUF_INT64_MAX) {\n throw new CatalogConversionError(\n field,\n `${field} exceeds the maximum supported value: ${value}`,\n );\n }\n return scaled;\n}\n\n/**\n * Decimal quantity → PolyesterChain E18 ledger units.\n * Input precision is capped at the asset's quantityScale; the wire value is\n * always upscaled to E18 (trading balances / amount_e18 convention).\n */\nexport function quantityInputToE18(params: {\n scales: SdkScales;\n assetId: number;\n quantity: string;\n field?: string;\n}): bigint {\n const field = params.field ?? \"quantity\";\n const assetScale = params.scales.ledgerAmount(params.assetId);\n if (assetScale > E18_SCALE) {\n throw new CatalogConversionError(\n field,\n `${field} asset quantityScale ${assetScale} exceeds E18 ledger scale`,\n );\n }\n return (\n unboundedPositiveDecimalInputToScaled(field, params.quantity, assetScale) *\n 10n ** BigInt(E18_SCALE - assetScale)\n );\n}\n\nexport interface ReadyGate {\n run(deliver: () => void): void;\n}\n\n/**\n * Orders event delivery behind catalog readiness. Events arriving before the\n * catalog can resolve scales are queued and flushed in arrival order once it\n * is ready; delivery errors (including post-flush ones) route to `onError`\n * instead of escaping into the transport, mirroring the realtime client's\n * consumer-handler isolation. If readiness itself fails, queued events are\n * dropped after `onError` fires — the stream cannot be decoded without scales.\n */\nexport function createReadyGate(\n ready: () => Promise<void>,\n onError?: (error: unknown) => void,\n): ReadyGate {\n let state: \"pending\" | \"open\" | \"failed\" = \"pending\";\n const queue: Array<() => void> = [];\n\n const deliverIsolated = (deliver: () => void) => {\n try {\n deliver();\n } catch (error) {\n onError?.(error);\n }\n };\n\n ready().then(\n () => {\n state = \"open\";\n for (const deliver of queue.splice(0)) deliverIsolated(deliver);\n },\n (error) => {\n state = \"failed\";\n queue.length = 0;\n onError?.(error);\n },\n );\n\n return {\n run(deliver) {\n if (state === \"open\") deliverIsolated(deliver);\n else if (state === \"pending\") queue.push(deliver);\n },\n };\n}\n"],"mappings":";;;;;;;AA4CA,SAAgB,uBAAuB,YAA4C;CAC/E,OAAO;EACH,OAAO,YAAY;GACf,MAAM,WAAW,CAAC,CAAC,YAAY;EACnC;EACA,aAAA;EACA,UAAU,SAAS,YAAY,WAAW,GAAG,IAAI,CAAC,CAAC,UAAU;EAC7D,cAAc,SAAS,YAAY,WAAW,GAAG,IAAI,CAAC,CAAC,WAAW;EAClE,eAAe,kBACX,WAAW,CAAC,CAAC,OAAO,uBAAuB,aAAa,CAAC,CAAC;EAC9D,oBAAoB,kBAChB,WAAW,CAAC,CAAC,OAAO,iCAAiC,aAAa,CAAC,CAAC,MAAM;CAClF;AACJ;AAEA,SAAS,YAAY,SAAwB,MAAsB;CAC/D,OAAO,OAAO,SAAS,YAAa,OAAO,SAAS,YAAY,YAAY,OACtE,QAAQ,OAAO,oBAAoB,OAAO,SAAS,WAAW,OAAO,KAAK,MAAM,IAChF,QAAQ,OAAO,sBAAsB,OAAO,SAAS,WAAW,OAAO,KAAK,QAAQ;AAC9F;;AAGA,SAAgB,sBAAsB,OAAe,OAAuB;CACxE,OAAO,gBAAgB,OAAO,KAAK;AACvC;AAEA,SAAS,yBACL,OACA,OACA,SACM;CACN,OAAO,QAAQ,WAAW,cACpB,GAAG,MAAM,oBAAoB,QAAQ,YAAY,mBAAmB,UACpE,GAAG,MAAM,0CAA0C;AAC7D;;;;;AAMA,SAAgB,qBAAqB,OAAe,OAAe,OAAuB;CACtF,MAAM,SAAS,mBAAmB,MAAM,KAAK,GAAG,KAAK;CACrD,IAAI,CAAC,OAAO,IACR,MAAM,IAAI,uBACN,OACA,yBAAyB,OAAO,OAAO,OAAO,OAAO,CACzD;CAEJ,OAAO,OAAO;AAClB;AAEA,SAAS,sCACL,OACA,OACA,OACM;CACN,MAAM,SAAS,qBAAqB,OAAO,OAAO,KAAK;CACvD,IAAI,UAAU,IACV,MAAM,IAAI,uBAAuB,OAAO,GAAG,MAAM,2BAA2B,OAAO;CAEvF,OAAO;AACX;;;;;AAMA,SAAgB,6BAA6B,OAAe,OAAe,OAAuB;CAC9F,MAAM,SAAS,sCAAsC,OAAO,OAAO,KAAK;CACxE,IAAI,SAAA,sBACA,MAAM,IAAI,uBACN,OACA,GAAG,MAAM,wCAAwC,OACrD;CAEJ,OAAO;AACX;;;;;;AAOA,SAAgB,mBAAmB,QAKxB;CACP,MAAM,QAAQ,OAAO,SAAS;CAC9B,MAAM,aAAa,OAAO,OAAO,aAAa,OAAO,OAAO;CAC5D,IAAI,aAAA,IACA,MAAM,IAAI,uBACN,OACA,GAAG,MAAM,uBAAuB,WAAW,0BAC/C;CAEJ,OACI,sCAAsC,OAAO,OAAO,UAAU,UAAU,IACxE,OAAO,OAAA,KAAmB,UAAU;AAE5C;;;;;;;;;AAcA,SAAgB,gBACZ,OACA,SACS;CACT,IAAI,QAAuC;CAC3C,MAAM,QAA2B,CAAC;CAElC,MAAM,mBAAmB,YAAwB;EAC7C,IAAI;GACA,QAAQ;EACZ,SAAS,OAAO;GACZ,UAAU,KAAK;EACnB;CACJ;CAEA,MAAM,CAAC,CAAC,WACE;EACF,QAAQ;EACR,KAAK,MAAM,WAAW,MAAM,OAAO,CAAC,GAAG,gBAAgB,OAAO;CAClE,IACC,UAAU;EACP,QAAQ;EACR,MAAM,SAAS;EACf,UAAU,KAAK;CACnB,CACJ;CAEA,OAAO,EACH,IAAI,SAAS;EACT,IAAI,UAAU,QAAQ,gBAAgB,OAAO;OACxC,IAAI,UAAU,WAAW,MAAM,KAAK,OAAO;CACpD,EACJ;AACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polyester/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "TypeScript SDK providing access to APIs on Polyester Exchange.",
|
|
6
6
|
"homepage": "https://github.com/Fabric-Labs/polyester-sdk-typescript#readme",
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
"viem": "2.55.10"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@changesets/changelog-github": "0.7.0",
|
|
108
107
|
"@changesets/cli": "2.31.1",
|
|
108
|
+
"@changesets/get-github-info": "0.8.0",
|
|
109
109
|
"@types/bun": "1.3.14",
|
|
110
110
|
"oxfmt": "0.61.0",
|
|
111
111
|
"oxlint": "1.76.0",
|