@mysten/deepbook-v3 2.0.1 → 2.1.4

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 (276) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/PREDICT.md +256 -0
  3. package/README.md +116 -0
  4. package/dist/account.d.mts +139 -0
  5. package/dist/account.d.mts.map +1 -0
  6. package/dist/account.mjs +181 -0
  7. package/dist/account.mjs.map +1 -0
  8. package/dist/bcs/integers.mjs +23 -0
  9. package/dist/bcs/integers.mjs.map +1 -0
  10. package/dist/client.d.mts +2 -2
  11. package/dist/contracts/account/account.d.mts +382 -0
  12. package/dist/contracts/account/account.d.mts.map +1 -0
  13. package/dist/contracts/account/account.mjs +443 -0
  14. package/dist/contracts/account/account.mjs.map +1 -0
  15. package/dist/contracts/account/account_events.d.mts +41 -0
  16. package/dist/contracts/account/account_events.d.mts.map +1 -0
  17. package/dist/contracts/account/account_events.mjs +72 -0
  18. package/dist/contracts/account/account_events.mjs.map +1 -0
  19. package/dist/contracts/account/account_registry.d.mts +210 -0
  20. package/dist/contracts/account/account_registry.d.mts.map +1 -0
  21. package/dist/contracts/account/account_registry.mjs +263 -0
  22. package/dist/contracts/account/account_registry.mjs.map +1 -0
  23. package/dist/contracts/account/config-arguments.d.mts +10 -0
  24. package/dist/contracts/account/config-arguments.d.mts.map +1 -0
  25. package/dist/contracts/account/deps/sui/bag.mjs +44 -0
  26. package/dist/contracts/account/deps/sui/bag.mjs.map +1 -0
  27. package/dist/contracts/deepbook/account.d.mts +18 -18
  28. package/dist/contracts/deepbook/balances.d.mts +4 -4
  29. package/dist/contracts/deepbook/deep_price.d.mts +3 -3
  30. package/dist/contracts/deepbook/deep_price.d.mts.map +1 -1
  31. package/dist/contracts/deepbook/order.d.mts +12 -12
  32. package/dist/contracts/deepbook_predict/builder_code_events.mjs +38 -0
  33. package/dist/contracts/deepbook_predict/builder_code_events.mjs.map +1 -0
  34. package/dist/contracts/deepbook_predict/config-arguments.d.mts +13 -0
  35. package/dist/contracts/deepbook_predict/config-arguments.d.mts.map +1 -0
  36. package/dist/contracts/deepbook_predict/deps/fixed_math/i64.mjs +25 -0
  37. package/dist/contracts/deepbook_predict/deps/fixed_math/i64.mjs.map +1 -0
  38. package/dist/contracts/deepbook_predict/deps/sui/balance.mjs +25 -0
  39. package/dist/contracts/deepbook_predict/deps/sui/balance.mjs.map +1 -0
  40. package/dist/contracts/deepbook_predict/deps/sui/coin.mjs +24 -0
  41. package/dist/contracts/deepbook_predict/deps/sui/coin.mjs.map +1 -0
  42. package/dist/contracts/deepbook_predict/deps/sui/table.mjs +39 -0
  43. package/dist/contracts/deepbook_predict/deps/sui/table.mjs.map +1 -0
  44. package/dist/contracts/deepbook_predict/deps/sui/vec_set.mjs +26 -0
  45. package/dist/contracts/deepbook_predict/deps/sui/vec_set.mjs.map +1 -0
  46. package/dist/contracts/deepbook_predict/ewma.mjs +29 -0
  47. package/dist/contracts/deepbook_predict/ewma.mjs.map +1 -0
  48. package/dist/contracts/deepbook_predict/expiry_cash.mjs +27 -0
  49. package/dist/contracts/deepbook_predict/expiry_cash.mjs.map +1 -0
  50. package/dist/contracts/deepbook_predict/expiry_market.mjs +367 -0
  51. package/dist/contracts/deepbook_predict/expiry_market.mjs.map +1 -0
  52. package/dist/contracts/deepbook_predict/lp_book.mjs +92 -0
  53. package/dist/contracts/deepbook_predict/lp_book.mjs.map +1 -0
  54. package/dist/contracts/deepbook_predict/market_manager.mjs +59 -0
  55. package/dist/contracts/deepbook_predict/market_manager.mjs.map +1 -0
  56. package/dist/contracts/deepbook_predict/order.mjs +26 -0
  57. package/dist/contracts/deepbook_predict/order.mjs.map +1 -0
  58. package/dist/contracts/deepbook_predict/order_events.mjs +84 -0
  59. package/dist/contracts/deepbook_predict/order_events.mjs.map +1 -0
  60. package/dist/contracts/deepbook_predict/plp.mjs +284 -0
  61. package/dist/contracts/deepbook_predict/plp.mjs.map +1 -0
  62. package/dist/contracts/deepbook_predict/pool_accounting.mjs +58 -0
  63. package/dist/contracts/deepbook_predict/pool_accounting.mjs.map +1 -0
  64. package/dist/contracts/deepbook_predict/predict_account.mjs +106 -0
  65. package/dist/contracts/deepbook_predict/predict_account.mjs.map +1 -0
  66. package/dist/contracts/deepbook_predict/pricing.mjs +80 -0
  67. package/dist/contracts/deepbook_predict/pricing.mjs.map +1 -0
  68. package/dist/contracts/deepbook_predict/range_codec.mjs +41 -0
  69. package/dist/contracts/deepbook_predict/range_codec.mjs.map +1 -0
  70. package/dist/contracts/deepbook_predict/registry.mjs +55 -0
  71. package/dist/contracts/deepbook_predict/registry.mjs.map +1 -0
  72. package/dist/contracts/deepbook_predict/strike_exposure.mjs +65 -0
  73. package/dist/contracts/deepbook_predict/strike_exposure.mjs.map +1 -0
  74. package/dist/contracts/deepbook_predict/strike_exposure_config.mjs +33 -0
  75. package/dist/contracts/deepbook_predict/strike_exposure_config.mjs.map +1 -0
  76. package/dist/contracts/deepbook_predict/strike_payout_tree.mjs +72 -0
  77. package/dist/contracts/deepbook_predict/strike_payout_tree.mjs.map +1 -0
  78. package/dist/contracts/deepbook_predict/vault_events.mjs +184 -0
  79. package/dist/contracts/deepbook_predict/vault_events.mjs.map +1 -0
  80. package/dist/contracts/deepbook_sessions/config-arguments.d.mts +10 -0
  81. package/dist/contracts/deepbook_sessions/config-arguments.d.mts.map +1 -0
  82. package/dist/contracts/deepbook_sessions/deps/sui/vec_map.mjs +37 -0
  83. package/dist/contracts/deepbook_sessions/deps/sui/vec_map.mjs.map +1 -0
  84. package/dist/contracts/deepbook_sessions/session_config.d.mts +63 -0
  85. package/dist/contracts/deepbook_sessions/session_config.d.mts.map +1 -0
  86. package/dist/contracts/deepbook_sessions/session_config.mjs +82 -0
  87. package/dist/contracts/deepbook_sessions/session_config.mjs.map +1 -0
  88. package/dist/contracts/deepbook_sessions/sessions.d.mts +275 -0
  89. package/dist/contracts/deepbook_sessions/sessions.d.mts.map +1 -0
  90. package/dist/contracts/deepbook_sessions/sessions.mjs +443 -0
  91. package/dist/contracts/deepbook_sessions/sessions.mjs.map +1 -0
  92. package/dist/contracts/utils/index.d.mts +18 -1
  93. package/dist/contracts/utils/index.d.mts.map +1 -1
  94. package/dist/deployments/index.d.mts +31 -0
  95. package/dist/deployments/index.d.mts.map +1 -0
  96. package/dist/deployments/index.mjs +30 -0
  97. package/dist/deployments/index.mjs.map +1 -0
  98. package/dist/deployments/testnet.d.mts +14 -0
  99. package/dist/deployments/testnet.d.mts.map +1 -0
  100. package/dist/deployments/testnet.mjs +73 -0
  101. package/dist/deployments/testnet.mjs.map +1 -0
  102. package/dist/deployments/types.d.mts +36 -0
  103. package/dist/deployments/types.d.mts.map +1 -0
  104. package/dist/index.mjs +0 -1
  105. package/dist/predict/client.d.mts +255 -0
  106. package/dist/predict/client.d.mts.map +1 -0
  107. package/dist/predict/client.mjs +436 -0
  108. package/dist/predict/client.mjs.map +1 -0
  109. package/dist/predict/config/generated.d.mts +29 -0
  110. package/dist/predict/config/generated.d.mts.map +1 -0
  111. package/dist/predict/config/generated.mjs +16 -0
  112. package/dist/predict/config/generated.mjs.map +1 -0
  113. package/dist/predict/config/index.d.mts +10 -0
  114. package/dist/predict/config/index.d.mts.map +1 -0
  115. package/dist/predict/config/index.mjs +13 -0
  116. package/dist/predict/config/index.mjs.map +1 -0
  117. package/dist/predict/config/testnet.d.mts +17 -0
  118. package/dist/predict/config/testnet.d.mts.map +1 -0
  119. package/dist/predict/config/testnet.mjs +26 -0
  120. package/dist/predict/config/testnet.mjs.map +1 -0
  121. package/dist/predict/config/types.d.mts +55 -0
  122. package/dist/predict/config/types.d.mts.map +1 -0
  123. package/dist/predict/decode.d.mts +162 -0
  124. package/dist/predict/decode.d.mts.map +1 -0
  125. package/dist/predict/decode.mjs +175 -0
  126. package/dist/predict/decode.mjs.map +1 -0
  127. package/dist/predict/errors.d.mts +42 -0
  128. package/dist/predict/errors.d.mts.map +1 -0
  129. package/dist/predict/errors.mjs +37 -0
  130. package/dist/predict/errors.mjs.map +1 -0
  131. package/dist/predict/index.d.mts +18 -0
  132. package/dist/predict/index.mjs +14 -0
  133. package/dist/predict/pricing.d.mts +73 -0
  134. package/dist/predict/pricing.d.mts.map +1 -0
  135. package/dist/predict/pricing.mjs +129 -0
  136. package/dist/predict/pricing.mjs.map +1 -0
  137. package/dist/predict/reads/balances.mjs +41 -0
  138. package/dist/predict/reads/balances.mjs.map +1 -0
  139. package/dist/predict/reads/inspect.d.mts +8 -0
  140. package/dist/predict/reads/inspect.d.mts.map +1 -0
  141. package/dist/predict/reads/inspect.mjs +37 -0
  142. package/dist/predict/reads/inspect.mjs.map +1 -0
  143. package/dist/predict/reads/markets.mjs +130 -0
  144. package/dist/predict/reads/markets.mjs.map +1 -0
  145. package/dist/predict/reads/parse.mjs +20 -0
  146. package/dist/predict/reads/parse.mjs.map +1 -0
  147. package/dist/predict/reads/pool.mjs +26 -0
  148. package/dist/predict/reads/pool.mjs.map +1 -0
  149. package/dist/predict/reads/positions.d.mts +12 -0
  150. package/dist/predict/reads/positions.d.mts.map +1 -0
  151. package/dist/predict/reads/positions.mjs +77 -0
  152. package/dist/predict/reads/positions.mjs.map +1 -0
  153. package/dist/predict/reads/pricing.d.mts +20 -0
  154. package/dist/predict/reads/pricing.d.mts.map +1 -0
  155. package/dist/predict/reads/pricing.mjs +43 -0
  156. package/dist/predict/reads/pricing.mjs.map +1 -0
  157. package/dist/predict/ticks.d.mts +11 -0
  158. package/dist/predict/ticks.d.mts.map +1 -0
  159. package/dist/predict/ticks.mjs +21 -0
  160. package/dist/predict/ticks.mjs.map +1 -0
  161. package/dist/predict/tx/authed.mjs +18 -0
  162. package/dist/predict/tx/authed.mjs.map +1 -0
  163. package/dist/predict/tx/common.d.mts +18 -0
  164. package/dist/predict/tx/common.d.mts.map +1 -0
  165. package/dist/predict/tx/common.mjs +52 -0
  166. package/dist/predict/tx/common.mjs.map +1 -0
  167. package/dist/predict/tx/trade.d.mts +15 -0
  168. package/dist/predict/tx/trade.d.mts.map +1 -0
  169. package/dist/predict/tx/trade.mjs +86 -0
  170. package/dist/predict/tx/trade.mjs.map +1 -0
  171. package/dist/predict/units.d.mts +11 -0
  172. package/dist/predict/units.d.mts.map +1 -0
  173. package/dist/predict/units.mjs +44 -0
  174. package/dist/predict/units.mjs.map +1 -0
  175. package/dist/queries/accountQueries.mjs +0 -1
  176. package/dist/queries/accountQueries.mjs.map +1 -1
  177. package/dist/queries/orderQueries.mjs +0 -1
  178. package/dist/queries/orderQueries.mjs.map +1 -1
  179. package/dist/queries/registryQueries.mjs +0 -1
  180. package/dist/queries/registryQueries.mjs.map +1 -1
  181. package/dist/sessions.d.mts +244 -0
  182. package/dist/sessions.d.mts.map +1 -0
  183. package/dist/sessions.mjs +291 -0
  184. package/dist/sessions.mjs.map +1 -0
  185. package/dist/transactions/balanceManager.d.mts +12 -12
  186. package/dist/transactions/balanceManager.d.mts.map +1 -1
  187. package/dist/transactions/deepbook.d.mts +20 -20
  188. package/dist/transactions/deepbook.d.mts.map +1 -1
  189. package/dist/transactions/deepbookAdmin.d.mts +4 -4
  190. package/dist/transactions/deepbookAdmin.d.mts.map +1 -1
  191. package/dist/transactions/marginAdmin.d.mts +7 -7
  192. package/dist/transactions/marginLiquidations.d.mts +3 -3
  193. package/dist/transactions/marginMaintainer.d.mts +5 -5
  194. package/dist/transactions/marginManager.d.mts +32 -32
  195. package/dist/transactions/marginPool.d.mts +18 -18
  196. package/dist/transactions/marginRegistry.d.mts +16 -16
  197. package/dist/transactions/marginTPSL.d.mts +10 -10
  198. package/dist/transactions/marginTPSL.d.mts.map +1 -1
  199. package/dist/transactions/poolProxy.d.mts +8 -8
  200. package/dist/transactions/poolProxy.d.mts.map +1 -1
  201. package/package.json +25 -4
  202. package/src/account.ts +239 -0
  203. package/src/bcs/integers.ts +35 -0
  204. package/src/contracts/account/account.ts +706 -0
  205. package/src/contracts/account/account_events.ts +64 -0
  206. package/src/contracts/account/account_registry.ts +468 -0
  207. package/src/contracts/account/config-arguments.ts +8 -0
  208. package/src/contracts/account/deps/sui/bag.ts +42 -0
  209. package/src/contracts/deepbook_predict/admin.ts +44 -0
  210. package/src/contracts/deepbook_predict/builder_code.ts +155 -0
  211. package/src/contracts/deepbook_predict/builder_code_events.ts +34 -0
  212. package/src/contracts/deepbook_predict/config-arguments.ts +11 -0
  213. package/src/contracts/deepbook_predict/config_events.ts +140 -0
  214. package/src/contracts/deepbook_predict/deps/fixed_math/i64.ts +21 -0
  215. package/src/contracts/deepbook_predict/deps/sui/balance.ts +25 -0
  216. package/src/contracts/deepbook_predict/deps/sui/coin.ts +20 -0
  217. package/src/contracts/deepbook_predict/deps/sui/table.ts +37 -0
  218. package/src/contracts/deepbook_predict/deps/sui/vec_set.ts +22 -0
  219. package/src/contracts/deepbook_predict/ewma.ts +26 -0
  220. package/src/contracts/deepbook_predict/ewma_config.ts +28 -0
  221. package/src/contracts/deepbook_predict/expiry_cash.ts +24 -0
  222. package/src/contracts/deepbook_predict/expiry_market.ts +1549 -0
  223. package/src/contracts/deepbook_predict/lp_book.ts +105 -0
  224. package/src/contracts/deepbook_predict/market_lifecycle_cap.ts +75 -0
  225. package/src/contracts/deepbook_predict/market_manager.ts +218 -0
  226. package/src/contracts/deepbook_predict/order.ts +24 -0
  227. package/src/contracts/deepbook_predict/order_events.ts +129 -0
  228. package/src/contracts/deepbook_predict/pause_cap.ts +68 -0
  229. package/src/contracts/deepbook_predict/plp.ts +987 -0
  230. package/src/contracts/deepbook_predict/pool_accounting.ts +79 -0
  231. package/src/contracts/deepbook_predict/predict_account.ts +180 -0
  232. package/src/contracts/deepbook_predict/pricing.ts +124 -0
  233. package/src/contracts/deepbook_predict/pricing_config.ts +41 -0
  234. package/src/contracts/deepbook_predict/protocol_config.ts +1066 -0
  235. package/src/contracts/deepbook_predict/range_codec.ts +53 -0
  236. package/src/contracts/deepbook_predict/registry.ts +694 -0
  237. package/src/contracts/deepbook_predict/strike_exposure.ts +77 -0
  238. package/src/contracts/deepbook_predict/strike_exposure_config.ts +46 -0
  239. package/src/contracts/deepbook_predict/strike_payout_tree.ts +89 -0
  240. package/src/contracts/deepbook_predict/vault_events.ts +222 -0
  241. package/src/contracts/deepbook_sessions/config-arguments.ts +8 -0
  242. package/src/contracts/deepbook_sessions/deps/sui/vec_map.ts +33 -0
  243. package/src/contracts/deepbook_sessions/session_config.ts +130 -0
  244. package/src/contracts/deepbook_sessions/sessions.ts +663 -0
  245. package/src/contracts/propbook/block_scholes_store.ts +842 -0
  246. package/src/contracts/propbook/deps/sui/table.ts +37 -0
  247. package/src/contracts/propbook/oracle_lane.ts +170 -0
  248. package/src/contracts/propbook/pyth_feed.ts +414 -0
  249. package/src/contracts/propbook/registry.ts +596 -0
  250. package/src/deployments/index.ts +73 -0
  251. package/src/deployments/testnet.ts +107 -0
  252. package/src/deployments/types.ts +81 -0
  253. package/src/index.ts +5 -0
  254. package/src/predict/client.ts +941 -0
  255. package/src/predict/config/generated.ts +39 -0
  256. package/src/predict/config/index.ts +25 -0
  257. package/src/predict/config/testnet.ts +27 -0
  258. package/src/predict/config/types.ts +52 -0
  259. package/src/predict/decode.ts +476 -0
  260. package/src/predict/errors.ts +83 -0
  261. package/src/predict/index.ts +94 -0
  262. package/src/predict/pricing.ts +199 -0
  263. package/src/predict/reads/balances.ts +55 -0
  264. package/src/predict/reads/inspect.ts +78 -0
  265. package/src/predict/reads/markets.ts +222 -0
  266. package/src/predict/reads/parse.ts +30 -0
  267. package/src/predict/reads/pool.ts +37 -0
  268. package/src/predict/reads/positions.ts +144 -0
  269. package/src/predict/reads/pricing.ts +79 -0
  270. package/src/predict/ticks.ts +42 -0
  271. package/src/predict/tx/authed.ts +20 -0
  272. package/src/predict/tx/common.ts +92 -0
  273. package/src/predict/tx/trade.ts +183 -0
  274. package/src/predict/units.ts +49 -0
  275. package/src/sessions.ts +471 -0
  276. package/dist/types/bcs.mjs +0 -7
@@ -0,0 +1,183 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import type { Transaction, TransactionResult } from '@mysten/sui/transactions';
4
+ import type { GeneratedConfig } from '../config/generated.js';
5
+ import { U64_MAX } from '../units.js';
6
+ import * as expiryMarket from '../../contracts/deepbook_predict/expiry_market.js';
7
+ import { withAuth } from './common.js';
8
+
9
+ // The four trade calls with their `auth` argument already supplied (see `withAuth`): each
10
+ // takes its generated options minus that slot and expands to auth → call.
11
+ const authed = {
12
+ mintExactQuantity: withAuth(expiryMarket.mintExactQuantity),
13
+ mintExactAmount: withAuth(expiryMarket.mintExactAmount),
14
+ redeemLive: withAuth(expiryMarket.redeemLive),
15
+ redeemSettled: withAuth(expiryMarket.redeemSettled),
16
+ };
17
+
18
+ // The oracle feed object ids a live market's pricer reads. Grouped so callers pass one
19
+ // bundle; the deployment's per-underlying ids live in `cfg.underlyings[symbol]` (see
20
+ // `src/config/testnet.ts`), named to match `deployment.testnet.json`.
21
+ export interface MarketFeeds {
22
+ pythFeed: string;
23
+ blockScholesValueStore: string;
24
+ blockScholesSviStore: string;
25
+ }
26
+
27
+ // Load a fresh `Pricer` from the live oracle feeds. Every live-flow trade call
28
+ // (`mint_*`, `redeem_live`) borrows this `&Pricer` and it must be loaded first in the
29
+ // PTB. Deployed sig `load_live_pricer` (expiry_market.move): market, config,
30
+ // propbook_registry (&OracleRegistry), pyth, bs_values, bs_svi, clock (auto-injected).
31
+ // `config` and `propbook_registry` are supplied by the config slice, not named here.
32
+ export function loadLivePricer(
33
+ config: GeneratedConfig,
34
+ args: { expiryMarketId: string } & MarketFeeds,
35
+ ): (tx: Transaction) => TransactionResult {
36
+ return (tx) =>
37
+ tx.add(
38
+ expiryMarket.loadLivePricer({
39
+ config,
40
+ arguments: {
41
+ market: args.expiryMarketId,
42
+ pyth: args.pythFeed,
43
+ bsValues: args.blockScholesValueStore,
44
+ bsSvi: args.blockScholesSviStore,
45
+ },
46
+ }),
47
+ );
48
+ }
49
+
50
+ // The three commands every live-flow trade is: load a fresh market-bound `Pricer`, mint
51
+ // owner auth, then the one `expiry_market::*` call that consumes both. Only the pricer is
52
+ // composed here — `build` returns an `authed.*` call, which is the other two commands.
53
+ function liveTrade(
54
+ config: GeneratedConfig,
55
+ args: { expiryMarketId: string } & MarketFeeds,
56
+ build: (pricer: TransactionResult) => (tx: Transaction) => TransactionResult,
57
+ ): (tx: Transaction) => TransactionResult {
58
+ return (tx) => {
59
+ const pricer = tx.add(loadLivePricer(config, args));
60
+ return tx.add(build(pricer));
61
+ };
62
+ }
63
+
64
+ // Mint a position of an exact `quantityRaw`, capped by cost/probability ceilings,
65
+ // returning the new order id (u256). Command order is pricer → auth → mint (auth is a
66
+ // hot potato consumed by this call). `maxCostRaw`/`maxProbabilityRaw` default to
67
+ // `U64_MAX` (no slippage cap). Deployed sig `mint_exact_quantity`.
68
+ export function mintExactQuantity(
69
+ config: GeneratedConfig,
70
+ args: {
71
+ expiryMarketId: string;
72
+ wrapperId: string;
73
+ lowerTick: bigint;
74
+ higherTick: bigint;
75
+ quantityRaw: bigint;
76
+ maxCostRaw?: bigint;
77
+ maxProbabilityRaw?: bigint;
78
+ } & MarketFeeds,
79
+ ): (tx: Transaction) => TransactionResult {
80
+ return liveTrade(config, args, (pricer) =>
81
+ authed.mintExactQuantity({
82
+ config,
83
+ arguments: {
84
+ market: args.expiryMarketId,
85
+ wrapper: args.wrapperId,
86
+ pricer,
87
+ lowerTick: args.lowerTick,
88
+ higherTick: args.higherTick,
89
+ quantity: args.quantityRaw,
90
+ maxCost: args.maxCostRaw ?? U64_MAX,
91
+ maxProbability: args.maxProbabilityRaw ?? U64_MAX,
92
+ },
93
+ }),
94
+ );
95
+ }
96
+
97
+ // Mint by spending up to `maxPremiumRaw` (raw quote units), enforcing a `minQuantityRaw`
98
+ // floor on the position received and a `maxCostRaw` all-in ceiling, returning the new
99
+ // order id (u256). Command order is pricer → auth → mint. Deployed sig
100
+ // `mint_exact_amount`: …, max_premium, min_quantity, max_cost, root.
101
+ export function mintExactAmount(
102
+ config: GeneratedConfig,
103
+ args: {
104
+ expiryMarketId: string;
105
+ wrapperId: string;
106
+ lowerTick: bigint;
107
+ higherTick: bigint;
108
+ maxPremiumRaw: bigint;
109
+ minQuantityRaw: bigint;
110
+ maxCostRaw?: bigint;
111
+ } & MarketFeeds,
112
+ ): (tx: Transaction) => TransactionResult {
113
+ return liveTrade(config, args, (pricer) =>
114
+ authed.mintExactAmount({
115
+ config,
116
+ arguments: {
117
+ market: args.expiryMarketId,
118
+ wrapper: args.wrapperId,
119
+ pricer,
120
+ lowerTick: args.lowerTick,
121
+ higherTick: args.higherTick,
122
+ maxPremium: args.maxPremiumRaw,
123
+ minQuantity: args.minQuantityRaw,
124
+ maxCost: args.maxCostRaw ?? U64_MAX,
125
+ },
126
+ }),
127
+ );
128
+ }
129
+
130
+ // Owner-authorized redeem of a live (not-yet-settled) position: close `closeQuantityRaw`
131
+ // of `orderId` at the live pricer's mark, enforcing close-side slippage floors
132
+ // (`minProbabilityRaw`/`minProceedsRaw`, default 0 = uncapped). Returns `Option<u256>`:
133
+ // the replacement order id when a partial close leaves quantity open, else none. Command
134
+ // order is pricer → auth → redeem. Deployed sig `redeem_live`.
135
+ export function redeemLive(
136
+ config: GeneratedConfig,
137
+ args: {
138
+ expiryMarketId: string;
139
+ wrapperId: string;
140
+ orderId: bigint;
141
+ closeQuantityRaw: bigint;
142
+ minProbabilityRaw?: bigint;
143
+ minProceedsRaw?: bigint;
144
+ } & MarketFeeds,
145
+ ): (tx: Transaction) => TransactionResult {
146
+ return liveTrade(config, args, (pricer) =>
147
+ authed.redeemLive({
148
+ config,
149
+ arguments: {
150
+ market: args.expiryMarketId,
151
+ wrapper: args.wrapperId,
152
+ pricer,
153
+ orderId: args.orderId,
154
+ closeQuantity: args.closeQuantityRaw,
155
+ minProbability: args.minProbabilityRaw ?? 0n,
156
+ minProceeds: args.minProceedsRaw ?? 0n,
157
+ },
158
+ }),
159
+ );
160
+ }
161
+
162
+ // Owner-authorized redeem of a settled position: closes `orderId` IN FULL against the
163
+ // recorded settlement price (the deployed entrypoint takes no quantity — a settled claim
164
+ // is all-or-nothing). No live pricer (settlement price is fixed); auth is consumed by the
165
+ // call. Deployed sig `redeem_settled` (owner-auth form). The keeper-facing
166
+ // `redeem_settled_permissionless` is a separate entrypoint, out of scope for this SDK.
167
+ export function redeemSettled(
168
+ config: GeneratedConfig,
169
+ args: {
170
+ expiryMarketId: string;
171
+ wrapperId: string;
172
+ orderId: bigint;
173
+ },
174
+ ): (tx: Transaction) => TransactionResult {
175
+ return authed.redeemSettled({
176
+ config,
177
+ arguments: {
178
+ market: args.expiryMarketId,
179
+ wrapper: args.wrapperId,
180
+ orderId: args.orderId,
181
+ },
182
+ });
183
+ }
@@ -0,0 +1,49 @@
1
+ // Copyright (c) Mysten Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { PredictInputError } from './errors.js';
4
+ export const U64_MAX = (1n << 64n) - 1n;
5
+
6
+ // Expand exponential notation to a plain decimal string, exactly (string math).
7
+ // JS Number.toString() emits exponentials below 1e-6 and at/above 1e21, which
8
+ // the plain-decimal regex in toRaw would otherwise reject with a misleading
9
+ // "invalid" error even when the value is exactly representable.
10
+ function expandExponential(s: string): string {
11
+ const m = /^(\d+)(?:\.(\d+))?[eE]([+-]?\d+)$/.exec(s);
12
+ if (!m) return s;
13
+ const [, whole, frac = '', expStr] = m;
14
+ const digits = whole + frac;
15
+ const point = whole.length + Number(expStr);
16
+ if (point <= 0) return '0.' + '0'.repeat(-point) + digits;
17
+ if (point >= digits.length) return digits + '0'.repeat(point - digits.length);
18
+ return digits.slice(0, point) + '.' + digits.slice(point);
19
+ }
20
+
21
+ /** Exact decimal→raw conversion via string math. Throws on negatives and excess precision. */
22
+ export function toRaw(value: number | string, decimals: number): bigint {
23
+ const s = expandExponential(typeof value === 'number' ? value.toString() : value.trim());
24
+ if (!/^\d+(\.\d+)?$/.test(s))
25
+ throw new PredictInputError(`invalid or negative decimal value: ${s}`);
26
+ const [whole, frac = ''] = s.split('.');
27
+ if (frac.length > decimals) throw new PredictInputError(`${s} exceeds ${decimals} decimals`);
28
+ return BigInt(whole) * 10n ** BigInt(decimals) + BigInt(frac.padEnd(decimals, '0') || '0');
29
+ }
30
+
31
+ /**
32
+ * Raw→decimal for DISPLAY. Casts through Number, so values above 2^53 raw lose
33
+ * precision in the low digits — fine for UI, not for accounting. Exact values
34
+ * stay available as bigints from the primitives layer (`accountBalance`,
35
+ * `poolStats`, …).
36
+ */
37
+ export function fromRaw(raw: bigint, decimals: number): number {
38
+ return Number(raw) / 10 ** decimals;
39
+ }
40
+
41
+ export const usdcToRaw = (v: number | string) => toRaw(v, 6);
42
+ export const rawToUsdc = (raw: bigint) => fromRaw(raw, 6);
43
+ export const priceToRaw = (v: number | string) => toRaw(v, 9);
44
+ export const rawToPrice = (raw: bigint) => fromRaw(raw, 9);
45
+ export function probabilityToRaw(p: number): bigint {
46
+ if (p < 0 || p > 1) throw new PredictInputError(`probability must be in [0,1], got ${p}`);
47
+ return toRaw(p, 9);
48
+ }
49
+ export const rawToProbability = (raw: bigint) => fromRaw(raw, 9);