@pear-protocol/types 0.0.18 → 0.0.20

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.
@@ -1,11 +1,9 @@
1
1
  import { z } from 'zod';
2
- import { RefineTwoUniqueSymbols, RefineMinimumTwoSymbols, RefineWeightingSum, RefineUniqueSymbols, RefineMinimumOneBuyOneSell } from '../../common/refinement';
2
+ import { RefineMinimumTwoSymbols, RefineUniqueSymbols, RefineWeightingSum, RefineMinimumOneBuyOneSell, RefineTwoUniqueSymbols } from '../../common/refinement';
3
3
  import { Side } from '../../common/schema';
4
4
  import { InstrumentId } from '../../instrument';
5
+ import { MetricTrack } from '../common';
5
6
 
6
- const TriggerDirectionEnum = z.enum(["ABOVE", "BELOW"], {
7
- message: "Trigger direction must be ABOVE or BELOW"
8
- });
9
7
  const TriggerThreshold = z.number().positive({
10
8
  message: "Threshold must be greater than 0"
11
9
  });
@@ -13,97 +11,152 @@ const PriceSource = z.enum(["mid", "mark"], {
13
11
  message: "Price source must be mid or mark"
14
12
  });
15
13
  const AssetWeight = z.number().positive({ message: "Weight must be greater than 0" }).max(1, { message: "Weight must be less than 1" });
16
- const CreateTriggerConditionRatioV1 = z.object({
17
- type: z.literal("ratio_v1"),
14
+ const WeightedRatioBasketItem = z.object({
15
+ symbol: InstrumentId,
16
+ side: Side,
17
+ weight: AssetWeight
18
+ });
19
+ const WeightedRatioBasket = z.array(WeightedRatioBasketItem).superRefine(RefineMinimumTwoSymbols).superRefine(RefineUniqueSymbols).superRefine(RefineWeightingSum).superRefine(RefineMinimumOneBuyOneSell);
20
+ const RatioOpen = z.object({
21
+ type: z.literal("ratio"),
18
22
  data: z.object({
19
23
  priceSource: PriceSource,
20
24
  symbol_a: InstrumentId,
21
25
  symbol_b: InstrumentId,
22
- direction: TriggerDirectionEnum,
26
+ track: MetricTrack,
23
27
  threshold: TriggerThreshold
24
28
  }).superRefine(RefineTwoUniqueSymbols)
25
29
  });
26
- const CreateTriggerConditionPriceV1 = z.object({
27
- type: z.literal("price_v1"),
30
+ const PriceOpen = z.object({
31
+ type: z.literal("price"),
28
32
  data: z.object({
29
33
  priceSource: PriceSource,
30
34
  symbol: InstrumentId,
31
- direction: TriggerDirectionEnum,
35
+ track: MetricTrack,
32
36
  threshold: TriggerThreshold
33
37
  })
34
38
  });
35
- const CreateTriggerConditionIndexV1 = z.object({
36
- type: z.literal("index_v1"),
39
+ const WeightedRatioOpen = z.object({
40
+ type: z.literal("weighted_ratio"),
37
41
  data: z.object({
38
42
  priceSource: PriceSource,
39
- basket: z.array(
40
- z.object({
41
- symbol: InstrumentId,
42
- weight: AssetWeight
43
- })
44
- ).superRefine(RefineMinimumTwoSymbols).superRefine(RefineWeightingSum).superRefine(RefineUniqueSymbols),
45
- direction: TriggerDirectionEnum,
43
+ basket: WeightedRatioBasket,
44
+ track: MetricTrack,
46
45
  threshold: TriggerThreshold
47
46
  })
48
47
  });
49
- const CreateTriggerConditionWeightedRatioV1 = z.object({
50
- type: z.literal("weighted_ratio_v1"),
48
+ const RatioCloseStatic = z.object({
49
+ type: z.literal("ratio"),
50
+ data: z.object({
51
+ priceSource: PriceSource,
52
+ symbol_a: InstrumentId,
53
+ symbol_b: InstrumentId,
54
+ threshold: TriggerThreshold
55
+ }).superRefine(RefineTwoUniqueSymbols)
56
+ });
57
+ const PriceCloseStatic = z.object({
58
+ type: z.literal("price"),
51
59
  data: z.object({
52
60
  priceSource: PriceSource,
53
- basket: z.array(
54
- z.object({
55
- symbol: InstrumentId,
56
- side: Side,
57
- weight: AssetWeight
58
- })
59
- ).superRefine(RefineMinimumTwoSymbols).superRefine(RefineUniqueSymbols).superRefine(RefineWeightingSum).superRefine(RefineMinimumOneBuyOneSell),
60
- direction: TriggerDirectionEnum,
61
+ symbol: InstrumentId,
61
62
  threshold: TriggerThreshold
62
63
  })
63
64
  });
64
- const CreateTriggerConditionPositionValueV1 = z.object({
65
- type: z.literal("position_value_v1"),
65
+ const WeightedRatioCloseStatic = z.object({
66
+ type: z.literal("weighted_ratio"),
66
67
  data: z.object({
67
68
  priceSource: PriceSource,
68
- direction: TriggerDirectionEnum,
69
+ basket: WeightedRatioBasket,
69
70
  threshold: TriggerThreshold
70
71
  })
71
72
  });
72
- const CreateTriggerConditionPositionUPnLValueV1 = z.object({
73
- type: z.literal("position_upnl_value_v1"),
73
+ const NotionalCloseStatic = z.object({
74
+ type: z.literal("notional"),
74
75
  data: z.object({
75
76
  priceSource: PriceSource,
76
- direction: TriggerDirectionEnum,
77
77
  threshold: TriggerThreshold
78
78
  })
79
79
  });
80
- const CreateTriggerConditionPositionUPnLPercentageV1 = z.object({
81
- type: z.literal("position_upnl_percentage_v1"),
80
+ const UpnlCloseStatic = z.object({
81
+ type: z.literal("upnl"),
82
82
  data: z.object({
83
83
  priceSource: PriceSource,
84
- direction: TriggerDirectionEnum,
85
- threshold_bps: TriggerThreshold
84
+ threshold: z.number()
86
85
  })
87
86
  });
88
- const CreateTriggerConditionOpen = z.discriminatedUnion("type", [
89
- CreateTriggerConditionRatioV1,
90
- CreateTriggerConditionPriceV1,
91
- CreateTriggerConditionIndexV1,
92
- CreateTriggerConditionWeightedRatioV1
87
+ const UpnlBpsCloseStatic = z.object({
88
+ type: z.literal("upnl_bps"),
89
+ data: z.object({
90
+ priceSource: PriceSource,
91
+ threshold: z.number()
92
+ })
93
+ });
94
+ const RatioCloseTrailing = z.object({
95
+ type: z.literal("ratio_trailing"),
96
+ data: z.object({
97
+ priceSource: PriceSource,
98
+ symbol_a: InstrumentId,
99
+ symbol_b: InstrumentId
100
+ }).superRefine(RefineTwoUniqueSymbols)
101
+ });
102
+ const PriceCloseTrailing = z.object({
103
+ type: z.literal("price_trailing"),
104
+ data: z.object({
105
+ priceSource: PriceSource,
106
+ symbol: InstrumentId
107
+ })
108
+ });
109
+ const WeightedRatioCloseTrailing = z.object({
110
+ type: z.literal("weighted_ratio_trailing"),
111
+ data: z.object({
112
+ priceSource: PriceSource,
113
+ basket: WeightedRatioBasket
114
+ })
115
+ });
116
+ const NotionalCloseTrailing = z.object({
117
+ type: z.literal("notional_trailing"),
118
+ data: z.object({
119
+ priceSource: PriceSource
120
+ })
121
+ });
122
+ const UpnlCloseTrailing = z.object({
123
+ type: z.literal("upnl_trailing"),
124
+ data: z.object({
125
+ priceSource: PriceSource
126
+ })
127
+ });
128
+ const UpnlBpsCloseTrailing = z.object({
129
+ type: z.literal("upnl_bps_trailing"),
130
+ data: z.object({
131
+ priceSource: PriceSource
132
+ })
133
+ });
134
+ const CreateTriggerConditionOpen = z.discriminatedUnion("type", [RatioOpen, PriceOpen, WeightedRatioOpen]);
135
+ const CreateTriggerConditionCloseStatic = z.discriminatedUnion("type", [
136
+ RatioCloseStatic,
137
+ PriceCloseStatic,
138
+ WeightedRatioCloseStatic,
139
+ NotionalCloseStatic,
140
+ UpnlCloseStatic,
141
+ UpnlBpsCloseStatic
142
+ ]);
143
+ const CreateTriggerConditionCloseTrailing = z.discriminatedUnion("type", [
144
+ RatioCloseTrailing,
145
+ PriceCloseTrailing,
146
+ WeightedRatioCloseTrailing,
147
+ NotionalCloseTrailing,
148
+ UpnlCloseTrailing,
149
+ UpnlBpsCloseTrailing
93
150
  ]);
94
- const CreateTriggerConditionClose = z.discriminatedUnion("type", [
95
- CreateTriggerConditionRatioV1,
96
- CreateTriggerConditionPriceV1,
97
- CreateTriggerConditionIndexV1,
98
- CreateTriggerConditionWeightedRatioV1,
99
- CreateTriggerConditionPositionValueV1,
100
- CreateTriggerConditionPositionUPnLValueV1,
101
- CreateTriggerConditionPositionUPnLPercentageV1
151
+ const CreateTriggerConditionAttachStatic = z.discriminatedUnion("type", [
152
+ NotionalCloseStatic,
153
+ UpnlCloseStatic,
154
+ UpnlBpsCloseStatic
102
155
  ]);
103
- const CreateTriggerConditionAttach = z.discriminatedUnion("type", [
104
- CreateTriggerConditionPositionValueV1,
105
- CreateTriggerConditionPositionUPnLValueV1,
106
- CreateTriggerConditionPositionUPnLPercentageV1
156
+ const CreateTriggerConditionAttachTrailing = z.discriminatedUnion("type", [
157
+ NotionalCloseTrailing,
158
+ UpnlCloseTrailing,
159
+ UpnlBpsCloseTrailing
107
160
  ]);
108
161
 
109
- export { CreateTriggerConditionAttach, CreateTriggerConditionClose, CreateTriggerConditionOpen };
162
+ export { CreateTriggerConditionAttachStatic, CreateTriggerConditionAttachTrailing, CreateTriggerConditionCloseStatic, CreateTriggerConditionCloseTrailing, CreateTriggerConditionOpen };