@mysten/deepbook-v3 2.0.0 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +100 -0
- package/PREDICT.md +256 -0
- package/README.md +116 -0
- package/dist/account.d.mts +139 -0
- package/dist/account.d.mts.map +1 -0
- package/dist/account.mjs +181 -0
- package/dist/account.mjs.map +1 -0
- package/dist/bcs/integers.mjs +23 -0
- package/dist/bcs/integers.mjs.map +1 -0
- package/dist/contracts/account/account.d.mts +382 -0
- package/dist/contracts/account/account.d.mts.map +1 -0
- package/dist/contracts/account/account.mjs +443 -0
- package/dist/contracts/account/account.mjs.map +1 -0
- package/dist/contracts/account/account_events.d.mts +41 -0
- package/dist/contracts/account/account_events.d.mts.map +1 -0
- package/dist/contracts/account/account_events.mjs +72 -0
- package/dist/contracts/account/account_events.mjs.map +1 -0
- package/dist/contracts/account/account_registry.d.mts +210 -0
- package/dist/contracts/account/account_registry.d.mts.map +1 -0
- package/dist/contracts/account/account_registry.mjs +263 -0
- package/dist/contracts/account/account_registry.mjs.map +1 -0
- package/dist/contracts/account/config-arguments.d.mts +10 -0
- package/dist/contracts/account/config-arguments.d.mts.map +1 -0
- package/dist/contracts/account/deps/sui/bag.mjs +44 -0
- package/dist/contracts/account/deps/sui/bag.mjs.map +1 -0
- package/dist/contracts/deepbook/account.d.mts +18 -18
- package/dist/contracts/deepbook/balance_manager.mjs.map +1 -1
- package/dist/contracts/deepbook/balances.d.mts +4 -4
- package/dist/contracts/deepbook/balances.d.mts.map +1 -1
- package/dist/contracts/deepbook/deep_price.d.mts +3 -3
- package/dist/contracts/deepbook/deep_price.d.mts.map +1 -1
- package/dist/contracts/deepbook/order.d.mts +12 -12
- package/dist/contracts/deepbook/pool.mjs.map +1 -1
- package/dist/contracts/deepbook/registry.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/margin_manager.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/margin_manager_upgraded.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/margin_pool.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/margin_registry.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/pool_proxy.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/protocol_config.mjs.map +1 -1
- package/dist/contracts/deepbook_margin/tpsl.mjs.map +1 -1
- package/dist/contracts/deepbook_predict/builder_code_events.mjs +38 -0
- package/dist/contracts/deepbook_predict/builder_code_events.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/config-arguments.d.mts +13 -0
- package/dist/contracts/deepbook_predict/config-arguments.d.mts.map +1 -0
- package/dist/contracts/deepbook_predict/deps/fixed_math/i64.mjs +25 -0
- package/dist/contracts/deepbook_predict/deps/fixed_math/i64.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/balance.mjs +25 -0
- package/dist/contracts/deepbook_predict/deps/sui/balance.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/coin.mjs +24 -0
- package/dist/contracts/deepbook_predict/deps/sui/coin.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/table.mjs +39 -0
- package/dist/contracts/deepbook_predict/deps/sui/table.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/vec_set.mjs +26 -0
- package/dist/contracts/deepbook_predict/deps/sui/vec_set.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/ewma.mjs +29 -0
- package/dist/contracts/deepbook_predict/ewma.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/expiry_cash.mjs +27 -0
- package/dist/contracts/deepbook_predict/expiry_cash.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/expiry_market.mjs +367 -0
- package/dist/contracts/deepbook_predict/expiry_market.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/lp_book.mjs +92 -0
- package/dist/contracts/deepbook_predict/lp_book.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/market_manager.mjs +59 -0
- package/dist/contracts/deepbook_predict/market_manager.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/order.mjs +26 -0
- package/dist/contracts/deepbook_predict/order.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/order_events.mjs +84 -0
- package/dist/contracts/deepbook_predict/order_events.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/plp.mjs +284 -0
- package/dist/contracts/deepbook_predict/plp.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/pool_accounting.mjs +58 -0
- package/dist/contracts/deepbook_predict/pool_accounting.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/predict_account.mjs +106 -0
- package/dist/contracts/deepbook_predict/predict_account.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/pricing.mjs +80 -0
- package/dist/contracts/deepbook_predict/pricing.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/range_codec.mjs +41 -0
- package/dist/contracts/deepbook_predict/range_codec.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/registry.mjs +55 -0
- package/dist/contracts/deepbook_predict/registry.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/strike_exposure.mjs +65 -0
- package/dist/contracts/deepbook_predict/strike_exposure.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/strike_exposure_config.mjs +33 -0
- package/dist/contracts/deepbook_predict/strike_exposure_config.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/strike_payout_tree.mjs +72 -0
- package/dist/contracts/deepbook_predict/strike_payout_tree.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/vault_events.mjs +184 -0
- package/dist/contracts/deepbook_predict/vault_events.mjs.map +1 -0
- package/dist/contracts/deepbook_sessions/config-arguments.d.mts +10 -0
- package/dist/contracts/deepbook_sessions/config-arguments.d.mts.map +1 -0
- package/dist/contracts/deepbook_sessions/deps/sui/vec_map.mjs +37 -0
- package/dist/contracts/deepbook_sessions/deps/sui/vec_map.mjs.map +1 -0
- package/dist/contracts/deepbook_sessions/session_config.d.mts +63 -0
- package/dist/contracts/deepbook_sessions/session_config.d.mts.map +1 -0
- package/dist/contracts/deepbook_sessions/session_config.mjs +82 -0
- package/dist/contracts/deepbook_sessions/session_config.mjs.map +1 -0
- package/dist/contracts/deepbook_sessions/sessions.d.mts +275 -0
- package/dist/contracts/deepbook_sessions/sessions.d.mts.map +1 -0
- package/dist/contracts/deepbook_sessions/sessions.mjs +443 -0
- package/dist/contracts/deepbook_sessions/sessions.mjs.map +1 -0
- package/dist/contracts/margin_liquidation/liquidation_vault.mjs.map +1 -1
- package/dist/contracts/utils/index.d.mts +18 -1
- package/dist/contracts/utils/index.d.mts.map +1 -1
- package/dist/deployments/index.d.mts +31 -0
- package/dist/deployments/index.d.mts.map +1 -0
- package/dist/deployments/index.mjs +30 -0
- package/dist/deployments/index.mjs.map +1 -0
- package/dist/deployments/testnet.d.mts +14 -0
- package/dist/deployments/testnet.d.mts.map +1 -0
- package/dist/deployments/testnet.mjs +73 -0
- package/dist/deployments/testnet.mjs.map +1 -0
- package/dist/deployments/types.d.mts +36 -0
- package/dist/deployments/types.d.mts.map +1 -0
- package/dist/index.mjs +0 -1
- package/dist/predict/client.d.mts +255 -0
- package/dist/predict/client.d.mts.map +1 -0
- package/dist/predict/client.mjs +436 -0
- package/dist/predict/client.mjs.map +1 -0
- package/dist/predict/config/generated.d.mts +29 -0
- package/dist/predict/config/generated.d.mts.map +1 -0
- package/dist/predict/config/generated.mjs +16 -0
- package/dist/predict/config/generated.mjs.map +1 -0
- package/dist/predict/config/index.d.mts +10 -0
- package/dist/predict/config/index.d.mts.map +1 -0
- package/dist/predict/config/index.mjs +13 -0
- package/dist/predict/config/index.mjs.map +1 -0
- package/dist/predict/config/testnet.d.mts +17 -0
- package/dist/predict/config/testnet.d.mts.map +1 -0
- package/dist/predict/config/testnet.mjs +26 -0
- package/dist/predict/config/testnet.mjs.map +1 -0
- package/dist/predict/config/types.d.mts +55 -0
- package/dist/predict/config/types.d.mts.map +1 -0
- package/dist/predict/decode.d.mts +162 -0
- package/dist/predict/decode.d.mts.map +1 -0
- package/dist/predict/decode.mjs +175 -0
- package/dist/predict/decode.mjs.map +1 -0
- package/dist/predict/errors.d.mts +42 -0
- package/dist/predict/errors.d.mts.map +1 -0
- package/dist/predict/errors.mjs +37 -0
- package/dist/predict/errors.mjs.map +1 -0
- package/dist/predict/index.d.mts +18 -0
- package/dist/predict/index.mjs +14 -0
- package/dist/predict/pricing.d.mts +73 -0
- package/dist/predict/pricing.d.mts.map +1 -0
- package/dist/predict/pricing.mjs +129 -0
- package/dist/predict/pricing.mjs.map +1 -0
- package/dist/predict/reads/balances.mjs +41 -0
- package/dist/predict/reads/balances.mjs.map +1 -0
- package/dist/predict/reads/inspect.d.mts +8 -0
- package/dist/predict/reads/inspect.d.mts.map +1 -0
- package/dist/predict/reads/inspect.mjs +37 -0
- package/dist/predict/reads/inspect.mjs.map +1 -0
- package/dist/predict/reads/markets.mjs +130 -0
- package/dist/predict/reads/markets.mjs.map +1 -0
- package/dist/predict/reads/parse.mjs +20 -0
- package/dist/predict/reads/parse.mjs.map +1 -0
- package/dist/predict/reads/pool.mjs +26 -0
- package/dist/predict/reads/pool.mjs.map +1 -0
- package/dist/predict/reads/positions.d.mts +12 -0
- package/dist/predict/reads/positions.d.mts.map +1 -0
- package/dist/predict/reads/positions.mjs +77 -0
- package/dist/predict/reads/positions.mjs.map +1 -0
- package/dist/predict/reads/pricing.d.mts +20 -0
- package/dist/predict/reads/pricing.d.mts.map +1 -0
- package/dist/predict/reads/pricing.mjs +43 -0
- package/dist/predict/reads/pricing.mjs.map +1 -0
- package/dist/predict/ticks.d.mts +11 -0
- package/dist/predict/ticks.d.mts.map +1 -0
- package/dist/predict/ticks.mjs +21 -0
- package/dist/predict/ticks.mjs.map +1 -0
- package/dist/predict/tx/authed.mjs +18 -0
- package/dist/predict/tx/authed.mjs.map +1 -0
- package/dist/predict/tx/common.d.mts +18 -0
- package/dist/predict/tx/common.d.mts.map +1 -0
- package/dist/predict/tx/common.mjs +52 -0
- package/dist/predict/tx/common.mjs.map +1 -0
- package/dist/predict/tx/trade.d.mts +15 -0
- package/dist/predict/tx/trade.d.mts.map +1 -0
- package/dist/predict/tx/trade.mjs +86 -0
- package/dist/predict/tx/trade.mjs.map +1 -0
- package/dist/predict/units.d.mts +11 -0
- package/dist/predict/units.d.mts.map +1 -0
- package/dist/predict/units.mjs +44 -0
- package/dist/predict/units.mjs.map +1 -0
- package/dist/queries/accountQueries.mjs +0 -1
- package/dist/queries/accountQueries.mjs.map +1 -1
- package/dist/queries/orderQueries.mjs +0 -1
- package/dist/queries/orderQueries.mjs.map +1 -1
- package/dist/queries/registryQueries.mjs +0 -1
- package/dist/queries/registryQueries.mjs.map +1 -1
- package/dist/sessions.d.mts +244 -0
- package/dist/sessions.d.mts.map +1 -0
- package/dist/sessions.mjs +291 -0
- package/dist/sessions.mjs.map +1 -0
- package/dist/transactions/balanceManager.d.mts +12 -12
- package/dist/transactions/deepbook.d.mts +20 -20
- package/dist/transactions/deepbookAdmin.d.mts +4 -4
- package/dist/transactions/deepbookAdmin.d.mts.map +1 -1
- package/dist/transactions/marginAdmin.d.mts +7 -7
- package/dist/transactions/marginLiquidations.d.mts +3 -3
- package/dist/transactions/marginMaintainer.d.mts +5 -5
- package/dist/transactions/marginManager.d.mts +32 -32
- package/dist/transactions/marginPool.d.mts +18 -18
- package/dist/transactions/marginRegistry.d.mts +16 -16
- package/dist/transactions/marginTPSL.d.mts +10 -10
- package/dist/transactions/poolProxy.d.mts +8 -8
- package/dist/types/index.d.mts.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils/constants.d.mts.map +1 -1
- package/dist/utils/constants.mjs +1 -1
- package/dist/utils/constants.mjs.map +1 -1
- package/package.json +33 -12
- package/src/account.ts +239 -0
- package/src/bcs/integers.ts +35 -0
- package/src/contracts/account/account.ts +706 -0
- package/src/contracts/account/account_events.ts +64 -0
- package/src/contracts/account/account_registry.ts +468 -0
- package/src/contracts/account/config-arguments.ts +8 -0
- package/src/contracts/account/deps/sui/bag.ts +42 -0
- package/src/contracts/deepbook/balance_manager.ts +1 -2
- package/src/contracts/deepbook/pool.ts +12 -24
- package/src/contracts/deepbook/registry.ts +1 -2
- package/src/contracts/deepbook_margin/margin_manager.ts +9 -18
- package/src/contracts/deepbook_margin/margin_manager_upgraded.ts +5 -10
- package/src/contracts/deepbook_margin/margin_pool.ts +2 -4
- package/src/contracts/deepbook_margin/margin_registry.ts +3 -6
- package/src/contracts/deepbook_margin/pool_proxy.ts +3 -6
- package/src/contracts/deepbook_margin/protocol_config.ts +1 -2
- package/src/contracts/deepbook_margin/tpsl.ts +1 -2
- package/src/contracts/deepbook_predict/admin.ts +44 -0
- package/src/contracts/deepbook_predict/builder_code.ts +155 -0
- package/src/contracts/deepbook_predict/builder_code_events.ts +34 -0
- package/src/contracts/deepbook_predict/config-arguments.ts +11 -0
- package/src/contracts/deepbook_predict/config_events.ts +140 -0
- package/src/contracts/deepbook_predict/deps/fixed_math/i64.ts +21 -0
- package/src/contracts/deepbook_predict/deps/sui/balance.ts +25 -0
- package/src/contracts/deepbook_predict/deps/sui/coin.ts +20 -0
- package/src/contracts/deepbook_predict/deps/sui/table.ts +37 -0
- package/src/contracts/deepbook_predict/deps/sui/vec_set.ts +22 -0
- package/src/contracts/deepbook_predict/ewma.ts +26 -0
- package/src/contracts/deepbook_predict/ewma_config.ts +28 -0
- package/src/contracts/deepbook_predict/expiry_cash.ts +24 -0
- package/src/contracts/deepbook_predict/expiry_market.ts +1549 -0
- package/src/contracts/deepbook_predict/lp_book.ts +105 -0
- package/src/contracts/deepbook_predict/market_lifecycle_cap.ts +75 -0
- package/src/contracts/deepbook_predict/market_manager.ts +218 -0
- package/src/contracts/deepbook_predict/order.ts +24 -0
- package/src/contracts/deepbook_predict/order_events.ts +129 -0
- package/src/contracts/deepbook_predict/pause_cap.ts +68 -0
- package/src/contracts/deepbook_predict/plp.ts +987 -0
- package/src/contracts/deepbook_predict/pool_accounting.ts +79 -0
- package/src/contracts/deepbook_predict/predict_account.ts +180 -0
- package/src/contracts/deepbook_predict/pricing.ts +124 -0
- package/src/contracts/deepbook_predict/pricing_config.ts +41 -0
- package/src/contracts/deepbook_predict/protocol_config.ts +1066 -0
- package/src/contracts/deepbook_predict/range_codec.ts +53 -0
- package/src/contracts/deepbook_predict/registry.ts +694 -0
- package/src/contracts/deepbook_predict/strike_exposure.ts +77 -0
- package/src/contracts/deepbook_predict/strike_exposure_config.ts +46 -0
- package/src/contracts/deepbook_predict/strike_payout_tree.ts +89 -0
- package/src/contracts/deepbook_predict/vault_events.ts +222 -0
- package/src/contracts/deepbook_sessions/config-arguments.ts +8 -0
- package/src/contracts/deepbook_sessions/deps/sui/vec_map.ts +33 -0
- package/src/contracts/deepbook_sessions/session_config.ts +130 -0
- package/src/contracts/deepbook_sessions/sessions.ts +663 -0
- package/src/contracts/margin_liquidation/liquidation_vault.ts +2 -4
- package/src/contracts/propbook/block_scholes_store.ts +842 -0
- package/src/contracts/propbook/deps/sui/table.ts +37 -0
- package/src/contracts/propbook/oracle_lane.ts +170 -0
- package/src/contracts/propbook/pyth_feed.ts +414 -0
- package/src/contracts/propbook/registry.ts +596 -0
- package/src/contracts/pyth/pyth.ts +2 -4
- package/src/deployments/index.ts +73 -0
- package/src/deployments/testnet.ts +107 -0
- package/src/deployments/types.ts +81 -0
- package/src/index.ts +5 -0
- package/src/predict/client.ts +941 -0
- package/src/predict/config/generated.ts +39 -0
- package/src/predict/config/index.ts +25 -0
- package/src/predict/config/testnet.ts +27 -0
- package/src/predict/config/types.ts +52 -0
- package/src/predict/decode.ts +476 -0
- package/src/predict/errors.ts +83 -0
- package/src/predict/index.ts +94 -0
- package/src/predict/pricing.ts +199 -0
- package/src/predict/reads/balances.ts +55 -0
- package/src/predict/reads/inspect.ts +78 -0
- package/src/predict/reads/markets.ts +222 -0
- package/src/predict/reads/parse.ts +30 -0
- package/src/predict/reads/pool.ts +37 -0
- package/src/predict/reads/positions.ts +144 -0
- package/src/predict/reads/pricing.ts +79 -0
- package/src/predict/ticks.ts +42 -0
- package/src/predict/tx/authed.ts +20 -0
- package/src/predict/tx/common.ts +92 -0
- package/src/predict/tx/trade.ts +183 -0
- package/src/predict/units.ts +49 -0
- package/src/sessions.ts +471 -0
- package/src/types/index.ts +1 -2
- package/src/utils/constants.ts +1 -7
- 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);
|