@metaflux-dex/client 0.0.3 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +196 -16
  2. package/dist/client.d.ts +173 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +264 -11
  5. package/dist/client.js.map +1 -1
  6. package/dist/faucet.js +1 -1
  7. package/dist/faucet.js.map +1 -1
  8. package/dist/index.d.ts +8 -7
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +14 -9
  11. package/dist/index.js.map +1 -1
  12. package/dist/native/actions.d.ts +46 -0
  13. package/dist/native/actions.d.ts.map +1 -0
  14. package/dist/native/actions.js +593 -0
  15. package/dist/native/actions.js.map +1 -0
  16. package/dist/native/digest.d.ts +28 -0
  17. package/dist/native/digest.d.ts.map +1 -0
  18. package/dist/{native.js → native/digest.js} +71 -86
  19. package/dist/native/digest.js.map +1 -0
  20. package/dist/native/index.d.ts +3 -0
  21. package/dist/native/index.d.ts.map +1 -0
  22. package/dist/native/index.js +5 -0
  23. package/dist/native/index.js.map +1 -0
  24. package/dist/rest/http.d.ts.map +1 -0
  25. package/dist/rest/http.js.map +1 -0
  26. package/dist/{info.d.ts → rest/info.d.ts} +1 -1
  27. package/dist/rest/info.d.ts.map +1 -0
  28. package/dist/{info.js → rest/info.js} +8 -5
  29. package/dist/rest/info.js.map +1 -0
  30. package/dist/types/account.d.ts +52 -0
  31. package/dist/types/account.d.ts.map +1 -0
  32. package/dist/types/account.js +8 -0
  33. package/dist/types/account.js.map +1 -0
  34. package/dist/types/encrypted.d.ts +8 -0
  35. package/dist/types/encrypted.d.ts.map +1 -0
  36. package/dist/types/encrypted.js +7 -0
  37. package/dist/types/encrypted.js.map +1 -0
  38. package/dist/types/governance.d.ts +11 -0
  39. package/dist/types/governance.d.ts.map +1 -0
  40. package/dist/types/governance.js +7 -0
  41. package/dist/types/governance.js.map +1 -0
  42. package/dist/types/index.d.ts +10 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +6 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/types/info/core.d.ts +97 -0
  47. package/dist/types/info/core.d.ts.map +1 -0
  48. package/dist/types/info/core.js +15 -0
  49. package/dist/types/info/core.js.map +1 -0
  50. package/dist/{info-types.d.ts → types/info/hl-parity.d.ts} +8 -177
  51. package/dist/types/info/hl-parity.d.ts.map +1 -0
  52. package/dist/types/info/hl-parity.js +8 -0
  53. package/dist/types/info/hl-parity.js.map +1 -0
  54. package/dist/types/info/index.d.ts +4 -0
  55. package/dist/types/info/index.d.ts.map +1 -0
  56. package/dist/types/info/index.js +6 -0
  57. package/dist/types/info/index.js.map +1 -0
  58. package/dist/types/info/reads.d.ts +81 -0
  59. package/dist/types/info/reads.d.ts.map +1 -0
  60. package/dist/types/info/reads.js +7 -0
  61. package/dist/types/info/reads.js.map +1 -0
  62. package/dist/types/meta-bridge.d.ts +8 -0
  63. package/dist/types/meta-bridge.d.ts.map +1 -0
  64. package/dist/types/meta-bridge.js +7 -0
  65. package/dist/types/meta-bridge.js.map +1 -0
  66. package/dist/types/spot.d.ts +41 -0
  67. package/dist/types/spot.d.ts.map +1 -0
  68. package/dist/types/spot.js +7 -0
  69. package/dist/types/spot.js.map +1 -0
  70. package/dist/types/staking.d.ts +12 -0
  71. package/dist/types/staking.d.ts.map +1 -0
  72. package/dist/types/staking.js +6 -0
  73. package/dist/types/staking.js.map +1 -0
  74. package/dist/{types.d.ts → types/trading.d.ts} +33 -1
  75. package/dist/types/trading.d.ts.map +1 -0
  76. package/dist/{types.js → types/trading.js} +3 -3
  77. package/dist/types/trading.js.map +1 -0
  78. package/dist/types/twap.d.ts +13 -0
  79. package/dist/types/twap.d.ts.map +1 -0
  80. package/dist/types/twap.js +7 -0
  81. package/dist/types/twap.js.map +1 -0
  82. package/dist/types/vault.d.ts +24 -0
  83. package/dist/types/vault.d.ts.map +1 -0
  84. package/dist/types/vault.js +6 -0
  85. package/dist/types/vault.js.map +1 -0
  86. package/dist/{wasm.d.ts → wallet/wasm.d.ts} +1 -1
  87. package/dist/wallet/wasm.d.ts.map +1 -0
  88. package/dist/{wasm.js → wallet/wasm.js} +9 -8
  89. package/dist/wallet/wasm.js.map +1 -0
  90. package/dist/{ws.d.ts → ws/ws.d.ts} +14 -1
  91. package/dist/ws/ws.d.ts.map +1 -0
  92. package/dist/{ws.js → ws/ws.js} +27 -15
  93. package/dist/ws/ws.js.map +1 -0
  94. package/package.json +3 -1
  95. package/src/client.ts +610 -12
  96. package/src/faucet.ts +1 -1
  97. package/src/index.ts +117 -15
  98. package/src/native/actions.ts +820 -0
  99. package/src/{native.ts → native/digest.ts} +78 -95
  100. package/src/native/index.ts +5 -0
  101. package/src/{http.ts → rest/http.ts} +1 -1
  102. package/src/{info.ts → rest/info.ts} +9 -6
  103. package/src/types/account.ts +111 -0
  104. package/src/types/encrypted.ts +21 -0
  105. package/src/types/governance.ts +27 -0
  106. package/src/types/index.ts +79 -0
  107. package/src/types/info/core.ts +214 -0
  108. package/src/types/info/hl-parity.ts +428 -0
  109. package/src/types/info/index.ts +78 -0
  110. package/src/types/info/reads.ts +165 -0
  111. package/src/types/meta-bridge.ts +22 -0
  112. package/src/types/spot.ts +114 -0
  113. package/src/types/staking.ts +27 -0
  114. package/src/{types.ts → types/trading.ts} +92 -8
  115. package/src/types/twap.ts +29 -0
  116. package/src/types/vault.ts +55 -0
  117. package/src/{wasm.ts → wallet/wasm.ts} +10 -9
  118. package/src/{ws.ts → ws/ws.ts} +75 -22
  119. package/dist/http.d.ts.map +0 -1
  120. package/dist/http.js.map +0 -1
  121. package/dist/info-types.d.ts.map +0 -1
  122. package/dist/info-types.js +0 -16
  123. package/dist/info-types.js.map +0 -1
  124. package/dist/info.d.ts.map +0 -1
  125. package/dist/info.js.map +0 -1
  126. package/dist/native.d.ts +0 -12
  127. package/dist/native.d.ts.map +0 -1
  128. package/dist/native.js.map +0 -1
  129. package/dist/types.d.ts.map +0 -1
  130. package/dist/types.js.map +0 -1
  131. package/dist/wasm.d.ts.map +0 -1
  132. package/dist/wasm.js.map +0 -1
  133. package/dist/ws.d.ts.map +0 -1
  134. package/dist/ws.js.map +0 -1
  135. package/src/info-types.ts +0 -783
  136. /package/dist/{http.d.ts → rest/http.d.ts} +0 -0
  137. /package/dist/{http.js → rest/http.js} +0 -0
@@ -0,0 +1,593 @@
1
+ // MTF-native signed-action builders — hand-built canonical snake_case JSON.
2
+ //
3
+ // Each `build*Action(payload): string` produces the EXACT bytes that are BOTH
4
+ // signed (`signNativeAction`) and POSTed verbatim (`nativeRequestBody`). The
5
+ // same string is signed and sent, so the server verifies the signature over
6
+ // identical bytes (it parses `action` as `serde_json::value::RawValue`); never
7
+ // re-stringify a parsed object.
8
+ //
9
+ // The 5 original builders (submit_order / cancel_order / set_position_mode /
10
+ // spot_order / spot_cancel) are byte-pinned by `__tests__/native.test.ts`.
11
+ import { jsonStr, validateAddress, validateCloid, validateDecimalString, validateMarket, validateU8, validateU16, validateU32, validateU64, } from './digest.js';
12
+ /// Build the canonical native `submit_order` action JSON string.
13
+ ///
14
+ /// Field order mirrors the server `NativeOrder` exactly. Optional `cloid` /
15
+ /// `builder` are omitted entirely when absent (matching the server's
16
+ /// `#[serde(default)]` + KAT vector, where neither appears). The returned
17
+ /// string is BOTH what gets signed and what gets sent — do not re-serialize.
18
+ export function buildNativeOrderAction(order) {
19
+ validateAddress(order.owner, 'owner');
20
+ validateMarket(order.market);
21
+ validateU64(order.size, 'size');
22
+ validateU64(order.limit_px, 'limit_px');
23
+ const parts = [
24
+ `${jsonStr('owner')}:${jsonStr(order.owner)}`,
25
+ `${jsonStr('market')}:${order.market}`,
26
+ `${jsonStr('side')}:${jsonStr(order.side)}`,
27
+ `${jsonStr('kind')}:${jsonStr(order.kind)}`,
28
+ `${jsonStr('size')}:${order.size}`,
29
+ `${jsonStr('limit_px')}:${order.limit_px}`,
30
+ `${jsonStr('tif')}:${jsonStr(order.tif)}`,
31
+ `${jsonStr('stp_mode')}:${jsonStr(order.stp_mode)}`,
32
+ `${jsonStr('reduce_only')}:${order.reduce_only ? 'true' : 'false'}`,
33
+ ];
34
+ if (order.cloid !== undefined) {
35
+ validateCloid(order.cloid);
36
+ parts.push(`${jsonStr('cloid')}:${jsonStr(order.cloid)}`);
37
+ }
38
+ if (order.builder !== undefined) {
39
+ parts.push(`${jsonStr('builder')}:${buildBuilder(order.builder)}`);
40
+ }
41
+ // HEDGE MODE: `position_side` is OMITTED on a one-way account so the signed
42
+ // bytes stay byte-identical to a pre-hedge SDK; it rides last (after
43
+ // cloid/builder), matching the server `NativeOrder` field declaration order.
44
+ if (order.position_side !== undefined) {
45
+ parts.push(`${jsonStr('position_side')}:${jsonStr(order.position_side)}`);
46
+ }
47
+ const orderJson = `{${parts.join(',')}}`;
48
+ return `{${jsonStr('type')}:${jsonStr('submit_order')},${jsonStr('order')}:${orderJson}}`;
49
+ }
50
+ /// Serialize a builder carve in the server-expected `{fee, user}` order.
51
+ function buildBuilder(b) {
52
+ if (!Number.isInteger(b.fee) || b.fee < 0 || b.fee > 0xffff) {
53
+ throw new RangeError('builder.fee must be a u16 (0..=65535)');
54
+ }
55
+ validateAddress(b.user, 'builder.user');
56
+ return `{${jsonStr('fee')}:${b.fee},${jsonStr('user')}:${jsonStr(b.user)}}`;
57
+ }
58
+ /// Build the canonical native `cancel_order` action JSON string.
59
+ ///
60
+ /// Field order mirrors the server `NativeCancel`: `owner`, `market`, then `oid`
61
+ /// / `cloid` when present. The server's `CancelParams` bridge cancels by `oid`,
62
+ /// so an `oid` is REQUIRED for the cancel to lower successfully (a `cloid`-only
63
+ /// cancel is accepted on the wire but rejected at lowering with
64
+ /// `CancelMissingOid`); we still emit either form so the bytes stay
65
+ /// caller-controlled. The returned string is BOTH signed and sent.
66
+ export function buildNativeCancelAction(cancel) {
67
+ validateAddress(cancel.owner, 'owner');
68
+ validateMarket(cancel.market);
69
+ if (cancel.oid === undefined && cancel.cloid === undefined) {
70
+ throw new RangeError('cancel requires an oid (server cancels by oid)');
71
+ }
72
+ const parts = [
73
+ `${jsonStr('owner')}:${jsonStr(cancel.owner)}`,
74
+ `${jsonStr('market')}:${cancel.market}`,
75
+ ];
76
+ if (cancel.oid !== undefined) {
77
+ validateU64(cancel.oid, 'oid');
78
+ parts.push(`${jsonStr('oid')}:${cancel.oid}`);
79
+ }
80
+ if (cancel.cloid !== undefined) {
81
+ validateCloid(cancel.cloid);
82
+ parts.push(`${jsonStr('cloid')}:${jsonStr(cancel.cloid)}`);
83
+ }
84
+ const cancelJson = `{${parts.join(',')}}`;
85
+ return `{${jsonStr('type')}:${jsonStr('cancel_order')},${jsonStr('cancel')}:${cancelJson}}`;
86
+ }
87
+ /// Build the canonical native `set_position_mode` action JSON string.
88
+ ///
89
+ /// `{"type":"set_position_mode","params":{"hedge":<bool>}}` — toggles the
90
+ /// account between one-way (`false`) and hedge / two-way (`true`). Sender-
91
+ /// authorized: the recovered signer IS the account (no `owner`), so this is
92
+ /// signed exactly like the order builders and POSTed verbatim. The node only
93
+ /// permits the switch while flat on every market.
94
+ export function buildNativeSetPositionModeAction(mode) {
95
+ if (typeof mode.hedge !== 'boolean') {
96
+ throw new RangeError('set_position_mode: hedge must be a boolean');
97
+ }
98
+ const paramsJson = `{${jsonStr('hedge')}:${mode.hedge ? 'true' : 'false'}}`;
99
+ return `{${jsonStr('type')}:${jsonStr('set_position_mode')},${jsonStr('params')}:${paramsJson}}`;
100
+ }
101
+ /// Build the canonical native `spot_order` action JSON string (spot CLOB).
102
+ ///
103
+ /// Field order mirrors the server `NativeSpotOrder` exactly. `tif` defaults to
104
+ /// `"ioc"` because v0 accepts ONLY IOC limit orders (`tif:"ioc"` + `limit_px > 0`);
105
+ /// the node rejects Gtc / Alo and a zero (market) price. Sender-authorized (no
106
+ /// `owner`); the returned string is BOTH signed and sent.
107
+ export function buildNativeSpotOrderAction(order) {
108
+ validateMarket(order.pair);
109
+ validateU64(order.size, 'size');
110
+ validateU64(order.limit_px, 'limit_px');
111
+ // v0 constraint: IOC limit only, strictly-positive price. The node enforces
112
+ // both; we fail loud here so a misconfigured order never reaches the wire.
113
+ const tif = order.tif ?? 'ioc';
114
+ if (tif !== 'ioc') {
115
+ throw new RangeError('spot_order v0 requires tif="ioc" (Gtc/Alo rejected)');
116
+ }
117
+ if (order.limit_px <= 0) {
118
+ throw new RangeError('spot_order v0 requires limit_px > 0 (market px rejected)');
119
+ }
120
+ const parts = [
121
+ `${jsonStr('pair')}:${order.pair}`,
122
+ `${jsonStr('side')}:${jsonStr(order.side)}`,
123
+ `${jsonStr('size')}:${order.size}`,
124
+ `${jsonStr('limit_px')}:${order.limit_px}`,
125
+ `${jsonStr('tif')}:${jsonStr(tif)}`,
126
+ `${jsonStr('stp_mode')}:${jsonStr(order.stp_mode)}`,
127
+ ];
128
+ if (order.cloid !== undefined) {
129
+ validateCloid(order.cloid);
130
+ parts.push(`${jsonStr('cloid')}:${jsonStr(order.cloid)}`);
131
+ }
132
+ const orderJson = `{${parts.join(',')}}`;
133
+ return `{${jsonStr('type')}:${jsonStr('spot_order')},${jsonStr('order')}:${orderJson}}`;
134
+ }
135
+ /// Build the canonical native `spot_cancel` action JSON string.
136
+ ///
137
+ /// `{"type":"spot_cancel","cancel":{"pair":<u32>,"oid":<u64>}}`. The node
138
+ /// cancels a resting spot order by `oid`, so `oid` is REQUIRED. Field order
139
+ /// mirrors the server `NativeSpotCancel`; the returned string is signed and sent.
140
+ export function buildNativeSpotCancelAction(cancel) {
141
+ validateMarket(cancel.pair);
142
+ validateU64(cancel.oid, 'oid');
143
+ const cancelJson = `{${jsonStr('pair')}:${cancel.pair},${jsonStr('oid')}:${cancel.oid}}`;
144
+ return `{${jsonStr('type')}:${jsonStr('spot_cancel')},${jsonStr('cancel')}:${cancelJson}}`;
145
+ }
146
+ // ============================================================================
147
+ // Real node /exchange write actions. Each hand-builds canonical snake_case JSON
148
+ // (the same string is signed and POSTed). All are sender-authorized (no `owner`
149
+ // field) except the inner orders/cancels of batch_order / batch_cancel, which
150
+ // carry an `owner` the client checks against the recovered signer.
151
+ // ============================================================================
152
+ /// Build the inner `{...}` body of one perp order (the value under `order` in
153
+ /// submit_order, and each element of a batch_order). Mirrors `NativeOrder`.
154
+ function buildOrderBody(order) {
155
+ validateAddress(order.owner, 'owner');
156
+ validateMarket(order.market);
157
+ validateU64(order.size, 'size');
158
+ validateU64(order.limit_px, 'limit_px');
159
+ const parts = [
160
+ `${jsonStr('owner')}:${jsonStr(order.owner)}`,
161
+ `${jsonStr('market')}:${order.market}`,
162
+ `${jsonStr('side')}:${jsonStr(order.side)}`,
163
+ `${jsonStr('kind')}:${jsonStr(order.kind)}`,
164
+ `${jsonStr('size')}:${order.size}`,
165
+ `${jsonStr('limit_px')}:${order.limit_px}`,
166
+ `${jsonStr('tif')}:${jsonStr(order.tif)}`,
167
+ `${jsonStr('stp_mode')}:${jsonStr(order.stp_mode)}`,
168
+ `${jsonStr('reduce_only')}:${order.reduce_only ? 'true' : 'false'}`,
169
+ ];
170
+ if (order.cloid !== undefined) {
171
+ validateCloid(order.cloid);
172
+ parts.push(`${jsonStr('cloid')}:${jsonStr(order.cloid)}`);
173
+ }
174
+ if (order.builder !== undefined) {
175
+ parts.push(`${jsonStr('builder')}:${buildBuilder(order.builder)}`);
176
+ }
177
+ if (order.position_side !== undefined) {
178
+ parts.push(`${jsonStr('position_side')}:${jsonStr(order.position_side)}`);
179
+ }
180
+ return `{${parts.join(',')}}`;
181
+ }
182
+ /// Build the inner `{...}` body of one cancel (each element of a batch_cancel).
183
+ /// `oid` required (a cloid-only cancel is rejected at lowering).
184
+ function buildCancelBody(cancel) {
185
+ validateAddress(cancel.owner, 'owner');
186
+ validateMarket(cancel.market);
187
+ if (cancel.oid === undefined && cancel.cloid === undefined) {
188
+ throw new RangeError('cancel requires an oid (server cancels by oid)');
189
+ }
190
+ const parts = [
191
+ `${jsonStr('owner')}:${jsonStr(cancel.owner)}`,
192
+ `${jsonStr('market')}:${cancel.market}`,
193
+ ];
194
+ if (cancel.oid !== undefined) {
195
+ validateU64(cancel.oid, 'oid');
196
+ parts.push(`${jsonStr('oid')}:${cancel.oid}`);
197
+ }
198
+ if (cancel.cloid !== undefined) {
199
+ validateCloid(cancel.cloid);
200
+ parts.push(`${jsonStr('cloid')}:${jsonStr(cancel.cloid)}`);
201
+ }
202
+ return `{${parts.join(',')}}`;
203
+ }
204
+ /// Build the inner `{...}` body of one modify (modify / batch_modify).
205
+ function buildModifyBody(m) {
206
+ validateMarket(m.market);
207
+ validateU64(m.oid, 'oid');
208
+ const parts = [
209
+ `${jsonStr('market')}:${m.market}`,
210
+ `${jsonStr('oid')}:${m.oid}`,
211
+ ];
212
+ if (m.new_px !== undefined) {
213
+ validateU64(m.new_px, 'new_px');
214
+ parts.push(`${jsonStr('new_px')}:${m.new_px}`);
215
+ }
216
+ if (m.new_size !== undefined) {
217
+ validateU64(m.new_size, 'new_size');
218
+ parts.push(`${jsonStr('new_size')}:${m.new_size}`);
219
+ }
220
+ return `{${parts.join(',')}}`;
221
+ }
222
+ /// Wrap an already-built params body into `{"type":<type>,"params":<body>}`.
223
+ function wrapParams(type, paramsJson) {
224
+ return `{${jsonStr('type')}:${jsonStr(type)},${jsonStr('params')}:${paramsJson}}`;
225
+ }
226
+ // ---- order management ----
227
+ /// `cancel_by_cloid` — cancel a resting order by its client order id.
228
+ export function buildNativeCancelByCloidAction(params) {
229
+ validateMarket(params.asset);
230
+ validateCloid(params.cloid);
231
+ return wrapParams('cancel_by_cloid', `{${jsonStr('asset')}:${params.asset},${jsonStr('cloid')}:${jsonStr(params.cloid)}}`);
232
+ }
233
+ /// `modify` — amend a resting order's price and/or size in place.
234
+ export function buildNativeModifyAction(params) {
235
+ return wrapParams('modify', buildModifyBody(params));
236
+ }
237
+ /// `batch_modify` — N modifies under one signature.
238
+ export function buildNativeBatchModifyAction(params) {
239
+ const arr = params.modifications.map(buildModifyBody).join(',');
240
+ return wrapParams('batch_modify', `{${jsonStr('modifications')}:[${arr}]}`);
241
+ }
242
+ /// `batch_order` — N orders under one signature. Each order's `owner` must equal
243
+ /// the signing wallet (enforced client-side by `Client.batchOrder`).
244
+ export function buildNativeBatchOrderAction(params) {
245
+ const grouping = params.grouping ?? 'na';
246
+ if (grouping !== 'na' && grouping !== 'normalTpsl' && grouping !== 'positionTpsl') {
247
+ throw new RangeError('grouping must be na | normalTpsl | positionTpsl');
248
+ }
249
+ const arr = params.orders.map(buildOrderBody).join(',');
250
+ return wrapParams('batch_order', `{${jsonStr('orders')}:[${arr}],${jsonStr('grouping')}:${jsonStr(grouping)}}`);
251
+ }
252
+ /// `batch_cancel` — N cancels under one signature.
253
+ export function buildNativeBatchCancelAction(params) {
254
+ const arr = params.cancels.map(buildCancelBody).join(',');
255
+ return wrapParams('batch_cancel', `{${jsonStr('cancels')}:[${arr}]}`);
256
+ }
257
+ /// `schedule_cancel` — cancel-all of the sender's open orders at a future block.
258
+ export function buildNativeScheduleCancelAction(params) {
259
+ validateU64(params.cancel_at_block, 'cancel_at_block');
260
+ return wrapParams('schedule_cancel', `{${jsonStr('cancel_at_block')}:${params.cancel_at_block}}`);
261
+ }
262
+ /// `cancel_all_orders` — cancel all of the sender's open orders (optional asset).
263
+ export function buildNativeCancelAllOrdersAction(params = {}) {
264
+ const parts = [];
265
+ if (params.asset !== undefined) {
266
+ validateMarket(params.asset);
267
+ parts.push(`${jsonStr('asset')}:${params.asset}`);
268
+ }
269
+ return wrapParams('cancel_all_orders', `{${parts.join(',')}}`);
270
+ }
271
+ // ---- TWAP ----
272
+ /// `twap_order` — submit a sliced (TWAP) order.
273
+ export function buildNativeTwapOrderAction(params) {
274
+ validateMarket(params.market);
275
+ validateU64(params.total_size, 'total_size');
276
+ validateU32(params.slice_count, 'slice_count');
277
+ validateU64(params.delay_ms, 'delay_ms');
278
+ return wrapParams('twap_order', `{${jsonStr('market')}:${params.market},${jsonStr('side')}:${jsonStr(params.side)},${jsonStr('total_size')}:${params.total_size},${jsonStr('slice_count')}:${params.slice_count},${jsonStr('delay_ms')}:${params.delay_ms},${jsonStr('reduce_only')}:${params.reduce_only ? 'true' : 'false'}}`);
279
+ }
280
+ /// `twap_cancel` — cancel a running TWAP parent by id.
281
+ export function buildNativeTwapCancelAction(params) {
282
+ validateU64(params.twap_id, 'twap_id');
283
+ return wrapParams('twap_cancel', `{${jsonStr('twap_id')}:${params.twap_id}}`);
284
+ }
285
+ // ---- leverage & margin ----
286
+ /// `update_leverage` — set per-asset leverage (and optionally flip to isolated).
287
+ export function buildNativeUpdateLeverageAction(params) {
288
+ validateMarket(params.asset);
289
+ validateU32(params.leverage, 'leverage');
290
+ return wrapParams('update_leverage', `{${jsonStr('asset')}:${params.asset},${jsonStr('leverage')}:${params.leverage},${jsonStr('is_isolated')}:${params.is_isolated ? 'true' : 'false'}}`);
291
+ }
292
+ /// `update_isolated_margin` — add (`+`) or remove (`-`) isolated margin.
293
+ export function buildNativeUpdateIsolatedMarginAction(params) {
294
+ validateMarket(params.asset);
295
+ validateDecimalString(params.delta, 'delta', { allowNegative: true });
296
+ return wrapParams('update_isolated_margin', `{${jsonStr('asset')}:${params.asset},${jsonStr('delta')}:${jsonStr(params.delta)}}`);
297
+ }
298
+ /// `top_up_isolated_only_margin` — top up a strict-isolated-only position.
299
+ export function buildNativeTopUpIsolatedOnlyMarginAction(params) {
300
+ validateMarket(params.asset);
301
+ validateDecimalString(params.amount, 'amount');
302
+ return wrapParams('top_up_isolated_only_margin', `{${jsonStr('asset')}:${params.asset},${jsonStr('amount')}:${jsonStr(params.amount)}}`);
303
+ }
304
+ /// `user_portfolio_margin` — enroll into or out of portfolio margin.
305
+ export function buildNativeUserPortfolioMarginAction(params) {
306
+ return wrapParams('user_portfolio_margin', `{${jsonStr('enroll')}:${params.enroll ? 'true' : 'false'}}`);
307
+ }
308
+ // ---- account & agent settings ----
309
+ /// `set_display_name` — set the account display name (handle).
310
+ export function buildNativeSetDisplayNameAction(params) {
311
+ if (typeof params.display_name !== 'string' || params.display_name.length === 0) {
312
+ throw new RangeError('display_name must be a non-empty string');
313
+ }
314
+ return wrapParams('set_display_name', `{${jsonStr('display_name')}:${jsonStr(params.display_name)}}`);
315
+ }
316
+ /// `set_referrer` — set the account referrer (one-time, immutable once set).
317
+ export function buildNativeSetReferrerAction(params) {
318
+ validateAddress(params.referrer, 'referrer');
319
+ return wrapParams('set_referrer', `{${jsonStr('referrer')}:${jsonStr(params.referrer)}}`);
320
+ }
321
+ /// `approve_agent` — approve an agent wallet to sign on this account's behalf.
322
+ export function buildNativeApproveAgentAction(params) {
323
+ validateAddress(params.agent, 'agent');
324
+ const parts = [`${jsonStr('agent')}:${jsonStr(params.agent)}`];
325
+ if (params.name !== undefined) {
326
+ parts.push(`${jsonStr('name')}:${jsonStr(params.name)}`);
327
+ }
328
+ if (params.expires_at_ms !== undefined) {
329
+ validateU64(params.expires_at_ms, 'expires_at_ms');
330
+ parts.push(`${jsonStr('expires_at_ms')}:${params.expires_at_ms}`);
331
+ }
332
+ return wrapParams('approve_agent', `{${parts.join(',')}}`);
333
+ }
334
+ /// `approve_builder_fee` — approve a builder up to `max_bps` (`0` revokes).
335
+ export function buildNativeApproveBuilderFeeAction(params) {
336
+ validateAddress(params.builder, 'builder');
337
+ validateU16(params.max_bps, 'max_bps');
338
+ return wrapParams('approve_builder_fee', `{${jsonStr('builder')}:${jsonStr(params.builder)},${jsonStr('max_bps')}:${params.max_bps}}`);
339
+ }
340
+ /// `convert_to_multi_sig_user` — convert the account to an M-of-N multisig.
341
+ export function buildNativeConvertToMultiSigUserAction(params) {
342
+ const arr = params.signers
343
+ .map((s, i) => {
344
+ validateAddress(s, `signers[${i}]`);
345
+ return jsonStr(s);
346
+ })
347
+ .join(',');
348
+ validateU32(params.threshold, 'threshold');
349
+ return wrapParams('convert_to_multi_sig_user', `{${jsonStr('signers')}:[${arr}],${jsonStr('threshold')}:${params.threshold}}`);
350
+ }
351
+ /// `user_dex_abstraction` — toggle the account's DEX-abstraction opt-in flag.
352
+ export function buildNativeUserDexAbstractionAction(params) {
353
+ return wrapParams('user_dex_abstraction', `{${jsonStr('enabled')}:${params.enabled ? 'true' : 'false'}}`);
354
+ }
355
+ /// `user_set_abstraction` — set a self-scoped abstraction config value.
356
+ export function buildNativeUserSetAbstractionAction(params) {
357
+ validateU8(params.kind, 'kind');
358
+ validateDecimalString(params.value, 'value', {
359
+ allowZero: true,
360
+ allowNegative: true,
361
+ });
362
+ return wrapParams('user_set_abstraction', `{${jsonStr('kind')}:${params.kind},${jsonStr('value')}:${jsonStr(params.value)}}`);
363
+ }
364
+ /// `agent_set_abstraction` — an approved agent sets a config value for `user`.
365
+ export function buildNativeAgentSetAbstractionAction(params) {
366
+ validateAddress(params.user, 'user');
367
+ validateU8(params.kind, 'kind');
368
+ validateDecimalString(params.value, 'value', {
369
+ allowZero: true,
370
+ allowNegative: true,
371
+ });
372
+ return wrapParams('agent_set_abstraction', `{${jsonStr('user')}:${jsonStr(params.user)},${jsonStr('kind')}:${params.kind},${jsonStr('value')}:${jsonStr(params.value)}}`);
373
+ }
374
+ /// `priority_bid` — pay a priority fee (bps) for block-front placement.
375
+ export function buildNativePriorityBidAction(params) {
376
+ validateMarket(params.asset);
377
+ validateU16(params.bid_bps, 'bid_bps');
378
+ return wrapParams('priority_bid', `{${jsonStr('asset')}:${params.asset},${jsonStr('bid_bps')}:${params.bid_bps}}`);
379
+ }
380
+ // ---- staking ----
381
+ /// `token_delegate` — delegate stake to a validator, or queue an undelegation.
382
+ export function buildNativeTokenDelegateAction(params) {
383
+ validateAddress(params.validator, 'validator');
384
+ validateDecimalString(params.amount, 'amount');
385
+ return wrapParams('token_delegate', `{${jsonStr('validator')}:${jsonStr(params.validator)},${jsonStr('amount')}:${jsonStr(params.amount)},${jsonStr('is_undelegate')}:${params.is_undelegate ? 'true' : 'false'}}`);
386
+ }
387
+ /// `claim_rewards` — claim accrued staking rewards (optional validator filter).
388
+ export function buildNativeClaimRewardsAction(params = {}) {
389
+ const parts = [];
390
+ if (params.validator !== undefined) {
391
+ validateAddress(params.validator, 'validator');
392
+ parts.push(`${jsonStr('validator')}:${jsonStr(params.validator)}`);
393
+ }
394
+ return wrapParams('claim_rewards', `{${parts.join(',')}}`);
395
+ }
396
+ /// `link_staking_user` — alias another account as this account's staking target.
397
+ export function buildNativeLinkStakingUserAction(params) {
398
+ validateAddress(params.target, 'target');
399
+ return wrapParams('link_staking_user', `{${jsonStr('target')}:${jsonStr(params.target)}}`);
400
+ }
401
+ // ---- encrypted orders ----
402
+ /// `submit_encrypted_order` — submit a threshold-encrypted order ciphertext.
403
+ export function buildNativeSubmitEncryptedOrderAction(params) {
404
+ if (!(params.ciphertext instanceof Uint8Array)) {
405
+ throw new RangeError('ciphertext must be a Uint8Array');
406
+ }
407
+ if (!(params.commitment instanceof Uint8Array) || params.commitment.length !== 32) {
408
+ throw new RangeError('commitment must be a 32-byte Uint8Array');
409
+ }
410
+ validateU8(params.threshold, 'threshold');
411
+ validateU64(params.target_block, 'target_block');
412
+ validateU64(params.reveal_deadline_ms, 'reveal_deadline_ms');
413
+ const ct = `[${Array.from(params.ciphertext).join(',')}]`;
414
+ const cm = `[${Array.from(params.commitment).join(',')}]`;
415
+ return wrapParams('submit_encrypted_order', `{${jsonStr('ciphertext')}:${ct},${jsonStr('commitment')}:${cm},${jsonStr('threshold')}:${params.threshold},${jsonStr('target_block')}:${params.target_block},${jsonStr('reveal_deadline_ms')}:${params.reveal_deadline_ms}}`);
416
+ }
417
+ // ---- vaults ----
418
+ /// `create_vault` — create a new vault. The signing wallet becomes the leader.
419
+ export function buildNativeCreateVaultAction(params) {
420
+ if (typeof params.name !== 'string' || params.name.length === 0) {
421
+ throw new RangeError('name must be a non-empty string');
422
+ }
423
+ validateU64(params.lock_period_secs, 'lock_period_secs');
424
+ const kind = params.kind ?? 'User';
425
+ if (kind !== 'User' && kind !== 'Metaliquidity') {
426
+ throw new RangeError('kind must be User | Metaliquidity');
427
+ }
428
+ const parts = [
429
+ `${jsonStr('name')}:${jsonStr(params.name)}`,
430
+ `${jsonStr('lock_period_secs')}:${params.lock_period_secs}`,
431
+ ];
432
+ if (params.parent !== undefined) {
433
+ validateU64(params.parent, 'parent');
434
+ parts.push(`${jsonStr('parent')}:${params.parent}`);
435
+ }
436
+ parts.push(`${jsonStr('kind')}:${jsonStr(kind)}`);
437
+ return wrapParams('create_vault', `{${parts.join(',')}}`);
438
+ }
439
+ /// `vault_transfer` — leader moves capital into / out of a vault.
440
+ export function buildNativeVaultTransferAction(params) {
441
+ validateU64(params.vault_id, 'vault_id');
442
+ validateDecimalString(params.amount, 'amount');
443
+ return wrapParams('vault_transfer', `{${jsonStr('vault_id')}:${params.vault_id},${jsonStr('deposit')}:${params.deposit ? 'true' : 'false'},${jsonStr('amount')}:${jsonStr(params.amount)}}`);
444
+ }
445
+ /// `vault_modify` — leader updates vault configuration (omitted = unchanged).
446
+ export function buildNativeVaultModifyAction(params) {
447
+ validateU64(params.vault_id, 'vault_id');
448
+ const parts = [`${jsonStr('vault_id')}:${params.vault_id}`];
449
+ if (params.new_name !== undefined) {
450
+ parts.push(`${jsonStr('new_name')}:${jsonStr(params.new_name)}`);
451
+ }
452
+ if (params.new_lock_period_secs !== undefined) {
453
+ validateU64(params.new_lock_period_secs, 'new_lock_period_secs');
454
+ parts.push(`${jsonStr('new_lock_period_secs')}:${params.new_lock_period_secs}`);
455
+ }
456
+ if (params.new_management_fee_bps !== undefined) {
457
+ validateU16(params.new_management_fee_bps, 'new_management_fee_bps');
458
+ parts.push(`${jsonStr('new_management_fee_bps')}:${params.new_management_fee_bps}`);
459
+ }
460
+ if (params.new_paused !== undefined) {
461
+ parts.push(`${jsonStr('new_paused')}:${params.new_paused ? 'true' : 'false'}`);
462
+ }
463
+ return wrapParams('vault_modify', `{${parts.join(',')}}`);
464
+ }
465
+ /// `vault_withdraw` — follower redeems shares (decimal string) from a vault.
466
+ export function buildNativeVaultWithdrawAction(params) {
467
+ validateU64(params.vault_id, 'vault_id');
468
+ validateDecimalString(params.shares, 'shares');
469
+ return wrapParams('vault_withdraw', `{${jsonStr('vault_id')}:${params.vault_id},${jsonStr('shares')}:${jsonStr(params.shares)}}`);
470
+ }
471
+ // ---- MetaBridge ----
472
+ /// `mb_withdraw` — withdraw cross-collateral to a destination chain. `dst_addr`
473
+ /// is `0x` + 40 hex (EVM, Base/Arbitrum) or 64 hex (32-byte, Solana).
474
+ export function buildNativeMbWithdrawAction(params) {
475
+ if (params.chain !== 'Base' && params.chain !== 'Arbitrum' && params.chain !== 'Solana') {
476
+ throw new RangeError('chain must be Base | Arbitrum | Solana');
477
+ }
478
+ validateU32(params.asset, 'asset');
479
+ validateU64(params.amount, 'amount');
480
+ const dstHex = params.dst_addr.startsWith('0x')
481
+ ? params.dst_addr.slice(2)
482
+ : params.dst_addr;
483
+ if (!/^[0-9a-fA-F]+$/.test(dstHex) || (dstHex.length !== 40 && dstHex.length !== 64)) {
484
+ throw new RangeError('dst_addr must be 0x + 40 (EVM) or 64 (Solana) hex chars');
485
+ }
486
+ return wrapParams('mb_withdraw', `{${jsonStr('chain')}:${jsonStr(params.chain)},${jsonStr('asset')}:${params.asset},${jsonStr('amount')}:${params.amount},${jsonStr('dst_addr')}:${jsonStr(params.dst_addr)}}`);
487
+ }
488
+ // ---- governance / operator ----
489
+ /// `set_metaliquidity_whitelist` — set an MLP whitelist membership (validator).
490
+ export function buildNativeSetMetaliquidityWhitelistAction(params) {
491
+ validateAddress(params.address, 'address');
492
+ return wrapParams('set_metaliquidity_whitelist', `{${jsonStr('address')}:${jsonStr(params.address)},${jsonStr('allowed')}:${params.allowed ? 'true' : 'false'}}`);
493
+ }
494
+ /// `register_metaliquidity_operator` — register / revoke a vault strategy operator.
495
+ export function buildNativeRegisterMetaliquidityOperatorAction(params) {
496
+ validateU64(params.vault_id, 'vault_id');
497
+ validateAddress(params.operator, 'operator');
498
+ const parts = [
499
+ `${jsonStr('vault_id')}:${params.vault_id}`,
500
+ `${jsonStr('operator')}:${jsonStr(params.operator)}`,
501
+ `${jsonStr('allowed')}:${params.allowed ? 'true' : 'false'}`,
502
+ ];
503
+ if (params.expires_at_ms !== undefined) {
504
+ validateU64(params.expires_at_ms, 'expires_at_ms');
505
+ parts.push(`${jsonStr('expires_at_ms')}:${params.expires_at_ms}`);
506
+ }
507
+ return wrapParams('register_metaliquidity_operator', `{${parts.join(',')}}`);
508
+ }
509
+ // ============================================================================
510
+ // Spot margin (leveraged spot) + Earn (lending pool) — devnet preview.
511
+ // All SENDER-AUTHORIZED (no owner field; the recovered signer is the actor).
512
+ // Decimal magnitudes (amount / borrow / shares) are emitted as JSON STRINGS;
513
+ // size / limit_px are bare integers on the raw-lot / 1e8 planes. Field order =
514
+ // the server struct declaration order.
515
+ // ============================================================================
516
+ /// Build the canonical native `spot_margin_deposit` action JSON string.
517
+ ///
518
+ /// `{"type":"spot_margin_deposit","params":{"pair":<u32>,"amount":"<decimal>"}}`.
519
+ /// Posts quote collateral into the `(account, pair)` margin account (margin must
520
+ /// be enabled for the pair). SENDER-AUTHORIZED.
521
+ export function buildNativeSpotMarginDepositAction(params) {
522
+ validateMarket(params.pair);
523
+ validateDecimalString(params.amount, 'amount');
524
+ const paramsJson = `{${jsonStr('pair')}:${params.pair},${jsonStr('amount')}:${jsonStr(params.amount)}}`;
525
+ return `{${jsonStr('type')}:${jsonStr('spot_margin_deposit')},${jsonStr('params')}:${paramsJson}}`;
526
+ }
527
+ /// Build the canonical native `spot_margin_withdraw` action JSON string.
528
+ ///
529
+ /// `{"type":"spot_margin_withdraw","params":{"pair":<u32>,"amount":"<decimal>"}}`.
530
+ /// Withdraws free collateral (initial-margin-gated while a position is open).
531
+ /// SENDER-AUTHORIZED.
532
+ export function buildNativeSpotMarginWithdrawAction(params) {
533
+ validateMarket(params.pair);
534
+ validateDecimalString(params.amount, 'amount');
535
+ const paramsJson = `{${jsonStr('pair')}:${params.pair},${jsonStr('amount')}:${jsonStr(params.amount)}}`;
536
+ return `{${jsonStr('type')}:${jsonStr('spot_margin_withdraw')},${jsonStr('params')}:${paramsJson}}`;
537
+ }
538
+ /// Build the canonical native `spot_margin_open` action JSON string.
539
+ ///
540
+ /// `{"type":"spot_margin_open","params":{"pair":<u32>,"size":<u64>,"limit_px":<u64>,"borrow":"<decimal>"}}`.
541
+ /// Borrows quote from the pair's Earn pool and IOC-buys `size` base on leverage;
542
+ /// gated by the initial-margin requirement on the worst-case cost. SENDER-AUTHORIZED.
543
+ export function buildNativeSpotMarginOpenAction(params) {
544
+ validateMarket(params.pair);
545
+ validateU64(params.size, 'size');
546
+ validateU64(params.limit_px, 'limit_px');
547
+ if (params.size <= 0) {
548
+ throw new RangeError('spot_margin_open requires size > 0');
549
+ }
550
+ if (params.limit_px <= 0) {
551
+ throw new RangeError('spot_margin_open requires limit_px > 0');
552
+ }
553
+ validateDecimalString(params.borrow, 'borrow');
554
+ const paramsJson = `{${jsonStr('pair')}:${params.pair},${jsonStr('size')}:${params.size},${jsonStr('limit_px')}:${params.limit_px},${jsonStr('borrow')}:${jsonStr(params.borrow)}}`;
555
+ return `{${jsonStr('type')}:${jsonStr('spot_margin_open')},${jsonStr('params')}:${paramsJson}}`;
556
+ }
557
+ /// Build the canonical native `spot_margin_close` action JSON string.
558
+ ///
559
+ /// `{"type":"spot_margin_close","params":{"pair":<u32>,"limit_px":<u64>}}`.
560
+ /// IOC-sells the held base, repays principal + interest, returns the remainder
561
+ /// (a partial fill keeps the account open). SENDER-AUTHORIZED.
562
+ export function buildNativeSpotMarginCloseAction(params) {
563
+ validateMarket(params.pair);
564
+ validateU64(params.limit_px, 'limit_px');
565
+ if (params.limit_px <= 0) {
566
+ throw new RangeError('spot_margin_close requires limit_px > 0');
567
+ }
568
+ const paramsJson = `{${jsonStr('pair')}:${params.pair},${jsonStr('limit_px')}:${params.limit_px}}`;
569
+ return `{${jsonStr('type')}:${jsonStr('spot_margin_close')},${jsonStr('params')}:${paramsJson}}`;
570
+ }
571
+ /// Build the canonical native `earn_deposit` action JSON string.
572
+ ///
573
+ /// `{"type":"earn_deposit","params":{"asset":<u32>,"amount":"<decimal>"}}`.
574
+ /// Supplies quote into a lending pool for shares (1:1 on a fresh pool, else
575
+ /// priced off NAV; the pool auto-creates on first deposit). SENDER-AUTHORIZED.
576
+ export function buildNativeEarnDepositAction(params) {
577
+ validateU32(params.asset, 'asset');
578
+ validateDecimalString(params.amount, 'amount');
579
+ const paramsJson = `{${jsonStr('asset')}:${params.asset},${jsonStr('amount')}:${jsonStr(params.amount)}}`;
580
+ return `{${jsonStr('type')}:${jsonStr('earn_deposit')},${jsonStr('params')}:${paramsJson}}`;
581
+ }
582
+ /// Build the canonical native `earn_withdraw` action JSON string.
583
+ ///
584
+ /// `{"type":"earn_withdraw","params":{"asset":<u32>,"shares":"<decimal>"}}`.
585
+ /// Redeems pool shares back to quote, clamped to the pool's idle liquidity.
586
+ /// SENDER-AUTHORIZED.
587
+ export function buildNativeEarnWithdrawAction(params) {
588
+ validateU32(params.asset, 'asset');
589
+ validateDecimalString(params.shares, 'shares');
590
+ const paramsJson = `{${jsonStr('asset')}:${params.asset},${jsonStr('shares')}:${jsonStr(params.shares)}}`;
591
+ return `{${jsonStr('type')}:${jsonStr('earn_withdraw')},${jsonStr('params')}:${paramsJson}}`;
592
+ }
593
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/native/actions.ts"],"names":[],"mappings":"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"}