@waterx/sdk 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +25 -10
  2. package/dist/cjs/src/account/account.js +2 -1
  3. package/dist/cjs/src/account/funding/balance.d.ts +25 -2
  4. package/dist/cjs/src/account/funding/balance.js +36 -24
  5. package/dist/cjs/src/account/funding/credit.js +6 -10
  6. package/dist/cjs/src/constants.d.ts +15 -1
  7. package/dist/cjs/src/constants.js +18 -4
  8. package/dist/cjs/src/generated/waterx_rule/deps/bucket_v2_framework/float.d.ts +8 -0
  9. package/dist/cjs/src/generated/waterx_rule/deps/bucket_v2_framework/float.js +13 -0
  10. package/dist/cjs/src/generated/waterx_rule/deps/sui/vec_map.d.ts +36 -0
  11. package/dist/cjs/src/generated/waterx_rule/deps/sui/vec_map.js +31 -0
  12. package/dist/cjs/src/generated/waterx_rule/waterx_rule.d.ts +940 -0
  13. package/dist/cjs/src/generated/waterx_rule/waterx_rule.js +1092 -0
  14. package/dist/cjs/src/oracle/aggregate.d.ts +2 -0
  15. package/dist/cjs/src/oracle/aggregate.js +27 -2
  16. package/dist/cjs/src/oracle/config.d.ts +75 -0
  17. package/dist/cjs/src/oracle/config.js +15 -1
  18. package/dist/cjs/src/oracle/host.d.ts +12 -1
  19. package/dist/cjs/src/oracle/index.d.ts +2 -0
  20. package/dist/cjs/src/oracle/index.js +6 -1
  21. package/dist/cjs/src/oracle/price-update-rule.d.ts +3 -4
  22. package/dist/cjs/src/oracle/rule-registry.d.ts +8 -7
  23. package/dist/cjs/src/oracle/rule-registry.js +10 -7
  24. package/dist/cjs/src/oracle/rules/waterx-rule.d.ts +89 -0
  25. package/dist/cjs/src/oracle/rules/waterx-rule.js +272 -0
  26. package/dist/cjs/src/perp/client.d.ts +44 -6
  27. package/dist/cjs/src/perp/client.js +14 -0
  28. package/dist/cjs/src/perp/config.d.ts +2 -3
  29. package/dist/cjs/src/perp/config.js +2 -1
  30. package/dist/cjs/src/perp/constants.d.ts +0 -6
  31. package/dist/cjs/src/perp/constants.js +11 -9
  32. package/dist/cjs/src/perp/fetch/account.js +3 -0
  33. package/dist/cjs/src/perp/fetch/bridge.js +2 -1
  34. package/dist/cjs/src/perp/fetch/market.js +2 -1
  35. package/dist/cjs/src/perp/fetch/positions.d.ts +16 -10
  36. package/dist/cjs/src/perp/fetch/positions.js +23 -20
  37. package/dist/cjs/src/perp/index.d.ts +6 -2
  38. package/dist/cjs/src/perp/index.js +12 -6
  39. package/dist/cjs/src/perp/liq-view.d.ts +64 -0
  40. package/dist/cjs/src/perp/liq-view.js +74 -0
  41. package/dist/cjs/src/perp/user/order.d.ts +13 -0
  42. package/dist/cjs/src/perp/user/order.js +30 -16
  43. package/dist/cjs/src/perp/user/staking.js +3 -2
  44. package/dist/cjs/src/perp/user/trading.js +25 -24
  45. package/dist/cjs/src/perp/user/wlp.js +6 -5
  46. package/dist/cjs/src/prediction/utils.d.ts +11 -2
  47. package/dist/cjs/src/prediction/utils.js +22 -22
  48. package/dist/cjs/src/unified-client.d.ts +31 -10
  49. package/dist/cjs/src/unified-client.js +2 -0
  50. package/dist/cjs/src/utils/format.d.ts +14 -0
  51. package/dist/cjs/src/utils/format.js +24 -0
  52. package/dist/cjs/src/utils/math.d.ts +304 -12
  53. package/dist/cjs/src/utils/math.js +397 -17
  54. package/dist/cjs/src/utils/validate.d.ts +69 -0
  55. package/dist/cjs/src/utils/validate.js +183 -0
  56. package/dist/src/account/account.js +2 -1
  57. package/dist/src/account/funding/balance.d.ts +25 -2
  58. package/dist/src/account/funding/balance.js +36 -24
  59. package/dist/src/account/funding/credit.js +6 -10
  60. package/dist/src/constants.d.ts +15 -1
  61. package/dist/src/constants.js +17 -3
  62. package/dist/src/generated/waterx_rule/deps/bucket_v2_framework/float.d.ts +8 -0
  63. package/dist/src/generated/waterx_rule/deps/bucket_v2_framework/float.js +10 -0
  64. package/dist/src/generated/waterx_rule/deps/sui/vec_map.d.ts +36 -0
  65. package/dist/src/generated/waterx_rule/deps/sui/vec_map.js +27 -0
  66. package/dist/src/generated/waterx_rule/waterx_rule.d.ts +940 -0
  67. package/dist/src/generated/waterx_rule/waterx_rule.js +991 -0
  68. package/dist/src/oracle/aggregate.d.ts +2 -0
  69. package/dist/src/oracle/aggregate.js +27 -2
  70. package/dist/src/oracle/config.d.ts +75 -0
  71. package/dist/src/oracle/config.js +14 -0
  72. package/dist/src/oracle/host.d.ts +12 -1
  73. package/dist/src/oracle/index.d.ts +2 -0
  74. package/dist/src/oracle/index.js +3 -0
  75. package/dist/src/oracle/price-update-rule.d.ts +3 -4
  76. package/dist/src/oracle/rule-registry.d.ts +8 -7
  77. package/dist/src/oracle/rule-registry.js +10 -7
  78. package/dist/src/oracle/rules/waterx-rule.d.ts +89 -0
  79. package/dist/src/oracle/rules/waterx-rule.js +266 -0
  80. package/dist/src/perp/client.d.ts +44 -6
  81. package/dist/src/perp/client.js +15 -1
  82. package/dist/src/perp/config.d.ts +2 -3
  83. package/dist/src/perp/config.js +1 -1
  84. package/dist/src/perp/constants.d.ts +0 -6
  85. package/dist/src/perp/constants.js +10 -8
  86. package/dist/src/perp/fetch/account.js +3 -0
  87. package/dist/src/perp/fetch/bridge.js +2 -1
  88. package/dist/src/perp/fetch/market.js +2 -1
  89. package/dist/src/perp/fetch/positions.d.ts +16 -10
  90. package/dist/src/perp/fetch/positions.js +28 -20
  91. package/dist/src/perp/index.d.ts +6 -2
  92. package/dist/src/perp/index.js +4 -2
  93. package/dist/src/perp/liq-view.d.ts +64 -0
  94. package/dist/src/perp/liq-view.js +71 -0
  95. package/dist/src/perp/user/order.d.ts +13 -0
  96. package/dist/src/perp/user/order.js +30 -16
  97. package/dist/src/perp/user/staking.js +3 -2
  98. package/dist/src/perp/user/trading.js +25 -24
  99. package/dist/src/perp/user/wlp.js +6 -5
  100. package/dist/src/prediction/utils.d.ts +11 -2
  101. package/dist/src/prediction/utils.js +22 -22
  102. package/dist/src/unified-client.d.ts +31 -10
  103. package/dist/src/unified-client.js +2 -0
  104. package/dist/src/utils/format.d.ts +14 -0
  105. package/dist/src/utils/format.js +21 -0
  106. package/dist/src/utils/math.d.ts +304 -12
  107. package/dist/src/utils/math.js +394 -17
  108. package/dist/src/utils/validate.d.ts +69 -0
  109. package/dist/src/utils/validate.js +167 -0
  110. package/package.json +4 -1
@@ -0,0 +1,991 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+ /** Nautilus-backed oracle rule for Binance, Bybit, and Gate.io prices. */
5
+ import { MoveStruct, normalizeMoveArguments } from "../utils/index.js";
6
+ import { bcs } from '@mysten/sui/bcs';
7
+ import * as float from "./deps/bucket_v2_framework/float.js";
8
+ import * as vec_map from "./deps/sui/vec_map.js";
9
+ const $moduleName = '@waterx/rule::waterx_rule';
10
+ export const WATERX_RULE = new MoveStruct({ name: `${$moduleName}::WATERX_RULE`, fields: {
11
+ dummy_field: bcs.bool()
12
+ } });
13
+ export const WaterxRule = new MoveStruct({ name: `${$moduleName}::WaterxRule`, fields: {
14
+ dummy_field: bcs.bool()
15
+ } });
16
+ export const PricePayload = new MoveStruct({ name: `${$moduleName}::PricePayload`, fields: {
17
+ ticker: bcs.string(),
18
+ sources: bcs.vector(bcs.u64()),
19
+ method: bcs.string(),
20
+ price_timestamp_ms: bcs.u64(),
21
+ price_n: bcs.u64(),
22
+ price_scale: bcs.u64(),
23
+ confidence_n: bcs.u64(),
24
+ confidence_scale: bcs.u64(),
25
+ max_source_deviation_bps: bcs.u64(),
26
+ num_sources: bcs.u8()
27
+ } });
28
+ export const BatchPriceItem = new MoveStruct({ name: `${$moduleName}::BatchPriceItem`, fields: {
29
+ symbol: bcs.string(),
30
+ ticker: bcs.string(),
31
+ sources: bcs.vector(bcs.u64()),
32
+ method: bcs.string(),
33
+ price_timestamp_ms: bcs.u64(),
34
+ price_n: bcs.u64(),
35
+ price_scale: bcs.u64(),
36
+ confidence_n: bcs.u64(),
37
+ confidence_scale: bcs.u64(),
38
+ max_source_deviation_bps: bcs.u64(),
39
+ num_sources: bcs.u8()
40
+ } });
41
+ export const BatchPricePayload = new MoveStruct({ name: `${$moduleName}::BatchPricePayload`, fields: {
42
+ items: bcs.vector(BatchPriceItem)
43
+ } });
44
+ export const MerkleRoot = new MoveStruct({ name: `${$moduleName}::MerkleRoot`, fields: {
45
+ root: bcs.vector(bcs.u8())
46
+ } });
47
+ export const FeedConfig = new MoveStruct({ name: `${$moduleName}::FeedConfig`, fields: {
48
+ ticker: bcs.string(),
49
+ sources: bcs.vector(bcs.u64()),
50
+ method: bcs.string(),
51
+ max_age_ms: bcs.u64(),
52
+ max_confidence_bps: bcs.u64(),
53
+ max_source_deviation_bps: bcs.u64(),
54
+ min_sources: bcs.u8()
55
+ } });
56
+ export const VerifiedPrice = new MoveStruct({ name: `${$moduleName}::VerifiedPrice`, fields: {
57
+ symbol: bcs.string(),
58
+ ticker: bcs.string(),
59
+ sources: bcs.vector(bcs.u64()),
60
+ method: bcs.string(),
61
+ price_timestamp_ms: bcs.u64(),
62
+ price: float.Float,
63
+ price_n: bcs.u64(),
64
+ price_scale: bcs.u64(),
65
+ confidence_n: bcs.u64(),
66
+ confidence_scale: bcs.u64(),
67
+ max_source_deviation_bps: bcs.u64(),
68
+ num_sources: bcs.u8(),
69
+ signed_timestamp_ms: bcs.u64()
70
+ } });
71
+ export const Config = new MoveStruct({ name: `${$moduleName}::Config`, fields: {
72
+ id: bcs.Address,
73
+ feed_map: vec_map.VecMap(bcs.string(), FeedConfig)
74
+ } });
75
+ export const SignedTsHwmKey = new MoveStruct({ name: `${$moduleName}::SignedTsHwmKey`, fields: {
76
+ symbol: bcs.string()
77
+ } });
78
+ export const HistoricalPriceVerified = new MoveStruct({ name: `${$moduleName}::HistoricalPriceVerified`, fields: {
79
+ symbol: bcs.string(),
80
+ ticker: bcs.string(),
81
+ sources: bcs.vector(bcs.u64()),
82
+ method: bcs.string(),
83
+ price_timestamp_ms: bcs.u64(),
84
+ price: bcs.u128(),
85
+ confidence: bcs.u128(),
86
+ max_source_deviation_bps: bcs.u64(),
87
+ num_sources: bcs.u8(),
88
+ signed_timestamp_ms: bcs.u64()
89
+ } });
90
+ export const BatchLatestUpdated = new MoveStruct({ name: `${$moduleName}::BatchLatestUpdated`, fields: {
91
+ count: bcs.u64(),
92
+ timestamp_ms: bcs.u64()
93
+ } });
94
+ /**
95
+ * Public Funs Verifies one Nautilus batch signature and updates one or more latest
96
+ * oracle prices. This function is only for current/latest data, never historical
97
+ * data. A single symbol is just a batch of one.
98
+ */
99
+ export function feedBatchLatest(options) {
100
+ const packageAddress = options.package ?? '@waterx/rule';
101
+ const argumentsTypes = [
102
+ null,
103
+ null,
104
+ '0x2::clock::Clock',
105
+ null,
106
+ null,
107
+ 'u64',
108
+ null,
109
+ 'vector<u8>'
110
+ ];
111
+ const parameterNames = ["oracleObj", "config", "enclaveConfig", "enclave", "timestampMs", "payload", "sig"];
112
+ return (tx) => tx.moveCall({
113
+ package: packageAddress,
114
+ module: 'waterx_rule',
115
+ function: 'feed_batch_latest',
116
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
117
+ });
118
+ }
119
+ /**
120
+ * Collect-only sibling of `feed_batch_latest` for the **dual-rule** latest path:
121
+ * verifies one Nautilus batch signature and feeds the single item whose symbol
122
+ * matches `collector.symbol()` into a caller-owned `PriceCollector`, WITHOUT
123
+ * calling `oracle::aggregate`. This lets one aggregator carry both a `WaterxRule`
124
+ * and (e.g.) a `PythRule` weight — the caller composes one collector across every
125
+ * weighted rule in the PTB (compose-then-aggregate, like `pyth_rule::feed`) and
126
+ * aggregates once.
127
+ *
128
+ * Abort vs abstain (WL-1963): unlike `feed_batch_latest`, which has no fallback
129
+ * and so aborts on any stale item, this path runs alongside Pyth/Supra. To let
130
+ * those cover a lagging TEE — the blast-radius bound in the GCP ADR — a
131
+ * _freshness_ miss ABSTAINS (records `none`, which `aggregator::remove_outliers`
132
+ * drops before the `weight_threshold` fail-closed check), and so does a _replayed_
133
+ * signed timestamp (the chain already accepted that snapshot — the on-chain price
134
+ * is at least as fresh, and two concurrent keeper PTBs sharing one envelope must
135
+ * not kill each other). A _config/integrity_ mismatch (source / ticker / method /
136
+ * confidence / deviation) still ABORTS: an enclave whose signed payload disagrees
137
+ * with the on-chain feed config is a red flag, not a liveness blip. Bad signature,
138
+ * malformed batch, and a future timestamp always abort.
139
+ *
140
+ * Every gate is identical to `feed_batch_item_latest`; only the abort-vs-abstain
141
+ * disposition of the freshness + replay gates differs, and the sink is the
142
+ * caller's collector rather than a fresh single-rule one.
143
+ */
144
+ export function collectBatchLatest(options) {
145
+ const packageAddress = options.package ?? '@waterx/rule';
146
+ const argumentsTypes = [
147
+ null,
148
+ null,
149
+ '0x2::clock::Clock',
150
+ null,
151
+ null,
152
+ 'u64',
153
+ null,
154
+ 'vector<u8>'
155
+ ];
156
+ const parameterNames = ["collector", "config", "enclaveConfig", "enclave", "timestampMs", "payload", "sig"];
157
+ return (tx) => tx.moveCall({
158
+ package: packageAddress,
159
+ module: 'waterx_rule',
160
+ function: 'collect_batch_latest',
161
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
162
+ });
163
+ }
164
+ /**
165
+ * Streaming per-symbol sibling of `feed_batch_latest`. Verifies ONE enclave
166
+ * signature over a Merkle `root`, checks `item` is a leaf of that root via
167
+ * `proof`, then runs the identical per-item gates + `oracle::aggregate`. Use for a
168
+ * WaterxRule-only aggregator; for a Pyth-coexisting aggregator use
169
+ * `collect_single_with_proof`.
170
+ */
171
+ export function feedSingleWithProof(options) {
172
+ const packageAddress = options.package ?? '@waterx/rule';
173
+ const argumentsTypes = [
174
+ null,
175
+ null,
176
+ '0x2::clock::Clock',
177
+ null,
178
+ null,
179
+ 'u64',
180
+ null,
181
+ 'vector<vector<u8>>',
182
+ 'vector<u8>'
183
+ ];
184
+ const parameterNames = ["oracleObj", "config", "enclaveConfig", "enclave", "timestampMs", "item", "proof", "sig"];
185
+ return (tx) => tx.moveCall({
186
+ package: packageAddress,
187
+ module: 'waterx_rule',
188
+ function: 'feed_single_with_proof',
189
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
190
+ });
191
+ }
192
+ /**
193
+ * Collect-only sibling of `feed_single_with_proof` for the dual-rule latest path
194
+ * (WaterX alongside Pyth on one aggregator), mirroring `collect_batch_latest`:
195
+ * verifies root + proof, feeds the leaf into the caller's `PriceCollector` WITHOUT
196
+ * calling `oracle::aggregate`. Abort vs abstain matches `collect_batch_latest`
197
+ * exactly — a config/integrity mismatch aborts, a freshness miss abstains so Pyth
198
+ * can cover a lagging TEE.
199
+ */
200
+ export function collectSingleWithProof(options) {
201
+ const packageAddress = options.package ?? '@waterx/rule';
202
+ const argumentsTypes = [
203
+ null,
204
+ null,
205
+ '0x2::clock::Clock',
206
+ null,
207
+ null,
208
+ 'u64',
209
+ null,
210
+ 'vector<vector<u8>>',
211
+ 'vector<u8>'
212
+ ];
213
+ const parameterNames = ["collector", "config", "enclaveConfig", "enclave", "timestampMs", "item", "proof", "sig"];
214
+ return (tx) => tx.moveCall({
215
+ package: packageAddress,
216
+ module: 'waterx_rule',
217
+ function: 'collect_single_with_proof',
218
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
219
+ });
220
+ }
221
+ /**
222
+ * Verifies a historical quote without touching `waterx_oracle`.
223
+ *
224
+ * `signed_timestamp_ms` is the fresh timestamp signed by Nautilus.
225
+ * `requested_price_timestamp_ms` is the historical price timestamp the caller
226
+ * requested from Nautilus. Consumers should still assert the returned proof's
227
+ * symbol and timestamp inside their own contract before using the price.
228
+ */
229
+ export function quoteForTimestamp(options) {
230
+ const packageAddress = options.package ?? '@waterx/rule';
231
+ const argumentsTypes = [
232
+ null,
233
+ '0x2::clock::Clock',
234
+ null,
235
+ null,
236
+ '0x1::string::String',
237
+ 'u64',
238
+ 'u64',
239
+ null,
240
+ 'vector<u8>'
241
+ ];
242
+ const parameterNames = ["config", "enclaveConfig", "enclave", "symbol", "signedTimestampMs", "requestedPriceTimestampMs", "payload", "sig"];
243
+ return (tx) => tx.moveCall({
244
+ package: packageAddress,
245
+ module: 'waterx_rule',
246
+ function: 'quote_for_timestamp',
247
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
248
+ });
249
+ }
250
+ /**
251
+ * Consumes a verified historical price proof when no downstream consumer needs to
252
+ * keep using it in the PTB.
253
+ */
254
+ export function destroyVerifiedPrice(options) {
255
+ const packageAddress = options.package ?? '@waterx/rule';
256
+ const argumentsTypes = [
257
+ null
258
+ ];
259
+ const parameterNames = ["price"];
260
+ return (tx) => tx.moveCall({
261
+ package: packageAddress,
262
+ module: 'waterx_rule',
263
+ function: 'destroy_verified_price',
264
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
265
+ });
266
+ }
267
+ /**
268
+ * Consumes a verified historical price and feeds it into a collector.
269
+ *
270
+ * Use this after `quote_for_timestamp` and before
271
+ * `waterx_oracle::oracle::register_price_at_timestamp`.
272
+ */
273
+ export function collectVerifiedPrice(options) {
274
+ const packageAddress = options.package ?? '@waterx/rule';
275
+ const argumentsTypes = [
276
+ null,
277
+ null
278
+ ];
279
+ const parameterNames = ["collector", "price"];
280
+ return (tx) => tx.moveCall({
281
+ package: packageAddress,
282
+ module: 'waterx_rule',
283
+ function: 'collect_verified_price',
284
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
285
+ });
286
+ }
287
+ /** Admin Funs */
288
+ export function setFeed(options) {
289
+ const packageAddress = options.package ?? '@waterx/rule';
290
+ const argumentsTypes = [
291
+ null,
292
+ null,
293
+ '0x1::string::String',
294
+ '0x1::string::String',
295
+ 'vector<u64>',
296
+ '0x1::string::String',
297
+ 'u64'
298
+ ];
299
+ const parameterNames = ["config", "Cap", "symbol", "ticker", "sources", "method", "maxAgeMs"];
300
+ return (tx) => tx.moveCall({
301
+ package: packageAddress,
302
+ module: 'waterx_rule',
303
+ function: 'set_feed',
304
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
305
+ });
306
+ }
307
+ export function setPerpFeed(options) {
308
+ const packageAddress = options.package ?? '@waterx/rule';
309
+ const argumentsTypes = [
310
+ null,
311
+ null,
312
+ '0x1::string::String',
313
+ '0x1::string::String',
314
+ 'vector<u64>',
315
+ '0x1::string::String',
316
+ 'u64',
317
+ 'u64',
318
+ 'u64',
319
+ 'u8'
320
+ ];
321
+ const parameterNames = ["config", "Cap", "symbol", "ticker", "sources", "method", "maxAgeMs", "maxConfidenceBps", "maxSourceDeviationBps", "minSources"];
322
+ return (tx) => tx.moveCall({
323
+ package: packageAddress,
324
+ module: 'waterx_rule',
325
+ function: 'set_perp_feed',
326
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
327
+ });
328
+ }
329
+ export function removeFeed(options) {
330
+ const packageAddress = options.package ?? '@waterx/rule';
331
+ const argumentsTypes = [
332
+ null,
333
+ null,
334
+ '0x1::string::String'
335
+ ];
336
+ const parameterNames = ["config", "Cap", "symbol"];
337
+ return (tx) => tx.moveCall({
338
+ package: packageAddress,
339
+ module: 'waterx_rule',
340
+ function: 'remove_feed',
341
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
342
+ });
343
+ }
344
+ /** Getter Funs */
345
+ export function newBatchPayload(options = {}) {
346
+ const packageAddress = options.package ?? '@waterx/rule';
347
+ return (tx) => tx.moveCall({
348
+ package: packageAddress,
349
+ module: 'waterx_rule',
350
+ function: 'new_batch_payload',
351
+ });
352
+ }
353
+ export function newBatchItem(options) {
354
+ const packageAddress = options.package ?? '@waterx/rule';
355
+ const argumentsTypes = [
356
+ '0x1::string::String',
357
+ '0x1::string::String',
358
+ 'vector<u64>',
359
+ '0x1::string::String',
360
+ 'u64',
361
+ 'u64',
362
+ 'u64',
363
+ 'u64',
364
+ 'u64',
365
+ 'u64',
366
+ 'u8'
367
+ ];
368
+ const parameterNames = ["symbol", "ticker", "sources", "method", "priceTimestampMs", "priceN", "priceScale", "confidenceN", "confidenceScale", "maxSourceDeviationBps", "numSources"];
369
+ return (tx) => tx.moveCall({
370
+ package: packageAddress,
371
+ module: 'waterx_rule',
372
+ function: 'new_batch_item',
373
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
374
+ });
375
+ }
376
+ export function pushBatchItem(options) {
377
+ const packageAddress = options.package ?? '@waterx/rule';
378
+ const argumentsTypes = [
379
+ null,
380
+ null
381
+ ];
382
+ const parameterNames = ["payload", "item"];
383
+ return (tx) => tx.moveCall({
384
+ package: packageAddress,
385
+ module: 'waterx_rule',
386
+ function: 'push_batch_item',
387
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
388
+ });
389
+ }
390
+ export function feedConfig(options) {
391
+ const packageAddress = options.package ?? '@waterx/rule';
392
+ const argumentsTypes = [
393
+ null,
394
+ '0x1::string::String'
395
+ ];
396
+ const parameterNames = ["config", "symbol"];
397
+ return (tx) => tx.moveCall({
398
+ package: packageAddress,
399
+ module: 'waterx_rule',
400
+ function: 'feed_config',
401
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
402
+ });
403
+ }
404
+ export function batchPriceIntent(options = {}) {
405
+ const packageAddress = options.package ?? '@waterx/rule';
406
+ return (tx) => tx.moveCall({
407
+ package: packageAddress,
408
+ module: 'waterx_rule',
409
+ function: 'batch_price_intent',
410
+ });
411
+ }
412
+ export function merkleRootIntent(options = {}) {
413
+ const packageAddress = options.package ?? '@waterx/rule';
414
+ return (tx) => tx.moveCall({
415
+ package: packageAddress,
416
+ module: 'waterx_rule',
417
+ function: 'merkle_root_intent',
418
+ });
419
+ }
420
+ /**
421
+ * The keccak256 leaf hash for `item` — `keccak256(0x00 || BCS(item))`. Exposed so
422
+ * the off-chain builder / SDK can be pinned against the on-chain encoding in a
423
+ * cross-implementation golden test.
424
+ */
425
+ export function leafHashOf(options) {
426
+ const packageAddress = options.package ?? '@waterx/rule';
427
+ const argumentsTypes = [
428
+ null
429
+ ];
430
+ const parameterNames = ["item"];
431
+ return (tx) => tx.moveCall({
432
+ package: packageAddress,
433
+ module: 'waterx_rule',
434
+ function: 'leaf_hash_of',
435
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
436
+ });
437
+ }
438
+ export function maxBatchSize(options = {}) {
439
+ const packageAddress = options.package ?? '@waterx/rule';
440
+ return (tx) => tx.moveCall({
441
+ package: packageAddress,
442
+ module: 'waterx_rule',
443
+ function: 'max_batch_size',
444
+ });
445
+ }
446
+ export function batchItems(options) {
447
+ const packageAddress = options.package ?? '@waterx/rule';
448
+ const argumentsTypes = [
449
+ null
450
+ ];
451
+ const parameterNames = ["payload"];
452
+ return (tx) => tx.moveCall({
453
+ package: packageAddress,
454
+ module: 'waterx_rule',
455
+ function: 'batch_items',
456
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
457
+ });
458
+ }
459
+ export function batchItemSymbol(options) {
460
+ const packageAddress = options.package ?? '@waterx/rule';
461
+ const argumentsTypes = [
462
+ null
463
+ ];
464
+ const parameterNames = ["item"];
465
+ return (tx) => tx.moveCall({
466
+ package: packageAddress,
467
+ module: 'waterx_rule',
468
+ function: 'batch_item_symbol',
469
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
470
+ });
471
+ }
472
+ export function batchItemTicker(options) {
473
+ const packageAddress = options.package ?? '@waterx/rule';
474
+ const argumentsTypes = [
475
+ null
476
+ ];
477
+ const parameterNames = ["item"];
478
+ return (tx) => tx.moveCall({
479
+ package: packageAddress,
480
+ module: 'waterx_rule',
481
+ function: 'batch_item_ticker',
482
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
483
+ });
484
+ }
485
+ export function batchItemSources(options) {
486
+ const packageAddress = options.package ?? '@waterx/rule';
487
+ const argumentsTypes = [
488
+ null
489
+ ];
490
+ const parameterNames = ["item"];
491
+ return (tx) => tx.moveCall({
492
+ package: packageAddress,
493
+ module: 'waterx_rule',
494
+ function: 'batch_item_sources',
495
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
496
+ });
497
+ }
498
+ export function batchItemMethod(options) {
499
+ const packageAddress = options.package ?? '@waterx/rule';
500
+ const argumentsTypes = [
501
+ null
502
+ ];
503
+ const parameterNames = ["item"];
504
+ return (tx) => tx.moveCall({
505
+ package: packageAddress,
506
+ module: 'waterx_rule',
507
+ function: 'batch_item_method',
508
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
509
+ });
510
+ }
511
+ export function batchItemPriceTimestampMs(options) {
512
+ const packageAddress = options.package ?? '@waterx/rule';
513
+ const argumentsTypes = [
514
+ null
515
+ ];
516
+ const parameterNames = ["item"];
517
+ return (tx) => tx.moveCall({
518
+ package: packageAddress,
519
+ module: 'waterx_rule',
520
+ function: 'batch_item_price_timestamp_ms',
521
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
522
+ });
523
+ }
524
+ export function batchItemPriceN(options) {
525
+ const packageAddress = options.package ?? '@waterx/rule';
526
+ const argumentsTypes = [
527
+ null
528
+ ];
529
+ const parameterNames = ["item"];
530
+ return (tx) => tx.moveCall({
531
+ package: packageAddress,
532
+ module: 'waterx_rule',
533
+ function: 'batch_item_price_n',
534
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
535
+ });
536
+ }
537
+ export function batchItemPriceScale(options) {
538
+ const packageAddress = options.package ?? '@waterx/rule';
539
+ const argumentsTypes = [
540
+ null
541
+ ];
542
+ const parameterNames = ["item"];
543
+ return (tx) => tx.moveCall({
544
+ package: packageAddress,
545
+ module: 'waterx_rule',
546
+ function: 'batch_item_price_scale',
547
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
548
+ });
549
+ }
550
+ export function batchItemConfidenceN(options) {
551
+ const packageAddress = options.package ?? '@waterx/rule';
552
+ const argumentsTypes = [
553
+ null
554
+ ];
555
+ const parameterNames = ["item"];
556
+ return (tx) => tx.moveCall({
557
+ package: packageAddress,
558
+ module: 'waterx_rule',
559
+ function: 'batch_item_confidence_n',
560
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
561
+ });
562
+ }
563
+ export function batchItemConfidenceScale(options) {
564
+ const packageAddress = options.package ?? '@waterx/rule';
565
+ const argumentsTypes = [
566
+ null
567
+ ];
568
+ const parameterNames = ["item"];
569
+ return (tx) => tx.moveCall({
570
+ package: packageAddress,
571
+ module: 'waterx_rule',
572
+ function: 'batch_item_confidence_scale',
573
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
574
+ });
575
+ }
576
+ export function batchItemMaxSourceDeviationBps(options) {
577
+ const packageAddress = options.package ?? '@waterx/rule';
578
+ const argumentsTypes = [
579
+ null
580
+ ];
581
+ const parameterNames = ["item"];
582
+ return (tx) => tx.moveCall({
583
+ package: packageAddress,
584
+ module: 'waterx_rule',
585
+ function: 'batch_item_max_source_deviation_bps',
586
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
587
+ });
588
+ }
589
+ export function batchItemNumSources(options) {
590
+ const packageAddress = options.package ?? '@waterx/rule';
591
+ const argumentsTypes = [
592
+ null
593
+ ];
594
+ const parameterNames = ["item"];
595
+ return (tx) => tx.moveCall({
596
+ package: packageAddress,
597
+ module: 'waterx_rule',
598
+ function: 'batch_item_num_sources',
599
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
600
+ });
601
+ }
602
+ export function verifiedSymbol(options) {
603
+ const packageAddress = options.package ?? '@waterx/rule';
604
+ const argumentsTypes = [
605
+ null
606
+ ];
607
+ const parameterNames = ["price"];
608
+ return (tx) => tx.moveCall({
609
+ package: packageAddress,
610
+ module: 'waterx_rule',
611
+ function: 'verified_symbol',
612
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
613
+ });
614
+ }
615
+ export function verifiedTicker(options) {
616
+ const packageAddress = options.package ?? '@waterx/rule';
617
+ const argumentsTypes = [
618
+ null
619
+ ];
620
+ const parameterNames = ["price"];
621
+ return (tx) => tx.moveCall({
622
+ package: packageAddress,
623
+ module: 'waterx_rule',
624
+ function: 'verified_ticker',
625
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
626
+ });
627
+ }
628
+ export function verifiedSources(options) {
629
+ const packageAddress = options.package ?? '@waterx/rule';
630
+ const argumentsTypes = [
631
+ null
632
+ ];
633
+ const parameterNames = ["price"];
634
+ return (tx) => tx.moveCall({
635
+ package: packageAddress,
636
+ module: 'waterx_rule',
637
+ function: 'verified_sources',
638
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
639
+ });
640
+ }
641
+ export function verifiedMethod(options) {
642
+ const packageAddress = options.package ?? '@waterx/rule';
643
+ const argumentsTypes = [
644
+ null
645
+ ];
646
+ const parameterNames = ["price"];
647
+ return (tx) => tx.moveCall({
648
+ package: packageAddress,
649
+ module: 'waterx_rule',
650
+ function: 'verified_method',
651
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
652
+ });
653
+ }
654
+ export function verifiedPriceTimestampMs(options) {
655
+ const packageAddress = options.package ?? '@waterx/rule';
656
+ const argumentsTypes = [
657
+ null
658
+ ];
659
+ const parameterNames = ["price"];
660
+ return (tx) => tx.moveCall({
661
+ package: packageAddress,
662
+ module: 'waterx_rule',
663
+ function: 'verified_price_timestamp_ms',
664
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
665
+ });
666
+ }
667
+ export function verifiedPrice(options) {
668
+ const packageAddress = options.package ?? '@waterx/rule';
669
+ const argumentsTypes = [
670
+ null
671
+ ];
672
+ const parameterNames = ["price"];
673
+ return (tx) => tx.moveCall({
674
+ package: packageAddress,
675
+ module: 'waterx_rule',
676
+ function: 'verified_price',
677
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
678
+ });
679
+ }
680
+ export function verifiedPriceScaled(options) {
681
+ const packageAddress = options.package ?? '@waterx/rule';
682
+ const argumentsTypes = [
683
+ null
684
+ ];
685
+ const parameterNames = ["price"];
686
+ return (tx) => tx.moveCall({
687
+ package: packageAddress,
688
+ module: 'waterx_rule',
689
+ function: 'verified_price_scaled',
690
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
691
+ });
692
+ }
693
+ export function verifiedPriceN(options) {
694
+ const packageAddress = options.package ?? '@waterx/rule';
695
+ const argumentsTypes = [
696
+ null
697
+ ];
698
+ const parameterNames = ["price"];
699
+ return (tx) => tx.moveCall({
700
+ package: packageAddress,
701
+ module: 'waterx_rule',
702
+ function: 'verified_price_n',
703
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
704
+ });
705
+ }
706
+ export function verifiedPriceScale(options) {
707
+ const packageAddress = options.package ?? '@waterx/rule';
708
+ const argumentsTypes = [
709
+ null
710
+ ];
711
+ const parameterNames = ["price"];
712
+ return (tx) => tx.moveCall({
713
+ package: packageAddress,
714
+ module: 'waterx_rule',
715
+ function: 'verified_price_scale',
716
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
717
+ });
718
+ }
719
+ export function verifiedConfidenceN(options) {
720
+ const packageAddress = options.package ?? '@waterx/rule';
721
+ const argumentsTypes = [
722
+ null
723
+ ];
724
+ const parameterNames = ["price"];
725
+ return (tx) => tx.moveCall({
726
+ package: packageAddress,
727
+ module: 'waterx_rule',
728
+ function: 'verified_confidence_n',
729
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
730
+ });
731
+ }
732
+ export function verifiedConfidenceScale(options) {
733
+ const packageAddress = options.package ?? '@waterx/rule';
734
+ const argumentsTypes = [
735
+ null
736
+ ];
737
+ const parameterNames = ["price"];
738
+ return (tx) => tx.moveCall({
739
+ package: packageAddress,
740
+ module: 'waterx_rule',
741
+ function: 'verified_confidence_scale',
742
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
743
+ });
744
+ }
745
+ export function verifiedMaxSourceDeviationBps(options) {
746
+ const packageAddress = options.package ?? '@waterx/rule';
747
+ const argumentsTypes = [
748
+ null
749
+ ];
750
+ const parameterNames = ["price"];
751
+ return (tx) => tx.moveCall({
752
+ package: packageAddress,
753
+ module: 'waterx_rule',
754
+ function: 'verified_max_source_deviation_bps',
755
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
756
+ });
757
+ }
758
+ export function verifiedNumSources(options) {
759
+ const packageAddress = options.package ?? '@waterx/rule';
760
+ const argumentsTypes = [
761
+ null
762
+ ];
763
+ const parameterNames = ["price"];
764
+ return (tx) => tx.moveCall({
765
+ package: packageAddress,
766
+ module: 'waterx_rule',
767
+ function: 'verified_num_sources',
768
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
769
+ });
770
+ }
771
+ export function verifiedSignedTimestampMs(options) {
772
+ const packageAddress = options.package ?? '@waterx/rule';
773
+ const argumentsTypes = [
774
+ null
775
+ ];
776
+ const parameterNames = ["price"];
777
+ return (tx) => tx.moveCall({
778
+ package: packageAddress,
779
+ module: 'waterx_rule',
780
+ function: 'verified_signed_timestamp_ms',
781
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
782
+ });
783
+ }
784
+ export function sourceBinanceSpot(options = {}) {
785
+ const packageAddress = options.package ?? '@waterx/rule';
786
+ return (tx) => tx.moveCall({
787
+ package: packageAddress,
788
+ module: 'waterx_rule',
789
+ function: 'source_binance_spot',
790
+ });
791
+ }
792
+ export function sourceBinanceUsdmPerpWs(options = {}) {
793
+ const packageAddress = options.package ?? '@waterx/rule';
794
+ return (tx) => tx.moveCall({
795
+ package: packageAddress,
796
+ module: 'waterx_rule',
797
+ function: 'source_binance_usdm_perp_ws',
798
+ });
799
+ }
800
+ export function sourceBybitLinearPerpWs(options = {}) {
801
+ const packageAddress = options.package ?? '@waterx/rule';
802
+ return (tx) => tx.moveCall({
803
+ package: packageAddress,
804
+ module: 'waterx_rule',
805
+ function: 'source_bybit_linear_perp_ws',
806
+ });
807
+ }
808
+ export function sourceGateioUsdtPerpWs(options = {}) {
809
+ const packageAddress = options.package ?? '@waterx/rule';
810
+ return (tx) => tx.moveCall({
811
+ package: packageAddress,
812
+ module: 'waterx_rule',
813
+ function: 'source_gateio_usdt_perp_ws',
814
+ });
815
+ }
816
+ export function sourceGataUsdtPerpWs(options = {}) {
817
+ const packageAddress = options.package ?? '@waterx/rule';
818
+ return (tx) => tx.moveCall({
819
+ package: packageAddress,
820
+ module: 'waterx_rule',
821
+ function: 'source_gata_usdt_perp_ws',
822
+ });
823
+ }
824
+ export function sourceBybitSpotWs(options = {}) {
825
+ const packageAddress = options.package ?? '@waterx/rule';
826
+ return (tx) => tx.moveCall({
827
+ package: packageAddress,
828
+ module: 'waterx_rule',
829
+ function: 'source_bybit_spot_ws',
830
+ });
831
+ }
832
+ export function sourceXstockEquityRest(options = {}) {
833
+ const packageAddress = options.package ?? '@waterx/rule';
834
+ return (tx) => tx.moveCall({
835
+ package: packageAddress,
836
+ module: 'waterx_rule',
837
+ function: 'source_xstock_equity_rest',
838
+ });
839
+ }
840
+ export function sourceOkxSpotWs(options = {}) {
841
+ const packageAddress = options.package ?? '@waterx/rule';
842
+ return (tx) => tx.moveCall({
843
+ package: packageAddress,
844
+ module: 'waterx_rule',
845
+ function: 'source_okx_spot_ws',
846
+ });
847
+ }
848
+ export function sourceHyperliquidPerpWs(options = {}) {
849
+ const packageAddress = options.package ?? '@waterx/rule';
850
+ return (tx) => tx.moveCall({
851
+ package: packageAddress,
852
+ module: 'waterx_rule',
853
+ function: 'source_hyperliquid_perp_ws',
854
+ });
855
+ }
856
+ export function sourceGateioSpotWs(options = {}) {
857
+ const packageAddress = options.package ?? '@waterx/rule';
858
+ return (tx) => tx.moveCall({
859
+ package: packageAddress,
860
+ module: 'waterx_rule',
861
+ function: 'source_gateio_spot_ws',
862
+ });
863
+ }
864
+ export function sourceKrakenSpotWs(options = {}) {
865
+ const packageAddress = options.package ?? '@waterx/rule';
866
+ return (tx) => tx.moveCall({
867
+ package: packageAddress,
868
+ module: 'waterx_rule',
869
+ function: 'source_kraken_spot_ws',
870
+ });
871
+ }
872
+ export function methodDirect(options = {}) {
873
+ const packageAddress = options.package ?? '@waterx/rule';
874
+ return (tx) => tx.moveCall({
875
+ package: packageAddress,
876
+ module: 'waterx_rule',
877
+ function: 'method_direct',
878
+ });
879
+ }
880
+ export function methodMedian(options = {}) {
881
+ const packageAddress = options.package ?? '@waterx/rule';
882
+ return (tx) => tx.moveCall({
883
+ package: packageAddress,
884
+ module: 'waterx_rule',
885
+ function: 'method_median',
886
+ });
887
+ }
888
+ export function methodConfidence(options = {}) {
889
+ const packageAddress = options.package ?? '@waterx/rule';
890
+ return (tx) => tx.moveCall({
891
+ package: packageAddress,
892
+ module: 'waterx_rule',
893
+ function: 'method_confidence',
894
+ });
895
+ }
896
+ export function isSupportedSource(options) {
897
+ const packageAddress = options.package ?? '@waterx/rule';
898
+ const argumentsTypes = [
899
+ 'u64'
900
+ ];
901
+ const parameterNames = ["source"];
902
+ return (tx) => tx.moveCall({
903
+ package: packageAddress,
904
+ module: 'waterx_rule',
905
+ function: 'is_supported_source',
906
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
907
+ });
908
+ }
909
+ export function isPerpSource(options) {
910
+ const packageAddress = options.package ?? '@waterx/rule';
911
+ const argumentsTypes = [
912
+ 'u64'
913
+ ];
914
+ const parameterNames = ["source"];
915
+ return (tx) => tx.moveCall({
916
+ package: packageAddress,
917
+ module: 'waterx_rule',
918
+ function: 'is_perp_source',
919
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
920
+ });
921
+ }
922
+ export function isSupportedMethod(options) {
923
+ const packageAddress = options.package ?? '@waterx/rule';
924
+ const argumentsTypes = [
925
+ '0x1::string::String'
926
+ ];
927
+ const parameterNames = ["method"];
928
+ return (tx) => tx.moveCall({
929
+ package: packageAddress,
930
+ module: 'waterx_rule',
931
+ function: 'is_supported_method',
932
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
933
+ });
934
+ }
935
+ export function isPerpMethod(options) {
936
+ const packageAddress = options.package ?? '@waterx/rule';
937
+ const argumentsTypes = [
938
+ '0x1::string::String'
939
+ ];
940
+ const parameterNames = ["method"];
941
+ return (tx) => tx.moveCall({
942
+ package: packageAddress,
943
+ module: 'waterx_rule',
944
+ function: 'is_perp_method',
945
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
946
+ });
947
+ }
948
+ export function sourceFromName(options) {
949
+ const packageAddress = options.package ?? '@waterx/rule';
950
+ const argumentsTypes = [
951
+ '0x1::string::String'
952
+ ];
953
+ const parameterNames = ["name"];
954
+ return (tx) => tx.moveCall({
955
+ package: packageAddress,
956
+ module: 'waterx_rule',
957
+ function: 'source_from_name',
958
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
959
+ });
960
+ }
961
+ export function methodFromName(options) {
962
+ const packageAddress = options.package ?? '@waterx/rule';
963
+ const argumentsTypes = [
964
+ '0x1::string::String'
965
+ ];
966
+ const parameterNames = ["name"];
967
+ return (tx) => tx.moveCall({
968
+ package: packageAddress,
969
+ module: 'waterx_rule',
970
+ function: 'method_from_name',
971
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
972
+ });
973
+ }
974
+ /**
975
+ * Last accepted signed timestamp for `symbol` (0 if none yet). View helper for
976
+ * keepers/SDK so they can pick a `timestamp_ms` strictly greater than this.
977
+ */
978
+ export function signedTsHwm(options) {
979
+ const packageAddress = options.package ?? '@waterx/rule';
980
+ const argumentsTypes = [
981
+ null,
982
+ '0x1::string::String'
983
+ ];
984
+ const parameterNames = ["config", "symbol"];
985
+ return (tx) => tx.moveCall({
986
+ package: packageAddress,
987
+ module: 'waterx_rule',
988
+ function: 'signed_ts_hwm',
989
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
990
+ });
991
+ }