@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.
- package/CHANGELOG.md +85 -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/client.d.mts +2 -2
- 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/balances.d.mts +4 -4
- 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_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/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/balanceManager.d.mts.map +1 -1
- package/dist/transactions/deepbook.d.mts +20 -20
- package/dist/transactions/deepbook.d.mts.map +1 -1
- 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/marginTPSL.d.mts.map +1 -1
- package/dist/transactions/poolProxy.d.mts +8 -8
- package/dist/transactions/poolProxy.d.mts.map +1 -1
- package/package.json +25 -4
- 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_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/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/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/dist/types/bcs.mjs +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool_accounting.mjs","names":["balance.Balance","table.Table"],"sources":["../../../src/contracts/deepbook_predict/pool_accounting.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Pool-owned expiry registration and cash-flow accounting.\n *\n * This module owns pool idle DUSDC custody, the durable set of expiries registered\n * to a pool, the active expiry index used for valuation, DUSDC sent from the main\n * pool into each expiry, DUSDC received back from each expiry, snapshotted\n * lifetime fee-incentive caps and allocations, terminal cash watermarks, and\n * per-expiry cap checks. It does not classify expiry-local liabilities or apply\n * PLP reserve policy; PoolVault uses the aggregate profit basis to price PLP and\n * decide protocol reserve transfers.\n */\n\nimport { MoveStruct } from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { U64 } from '../../bcs/integers.js';\nimport * as balance from './deps/sui/balance.js';\nimport * as table from './deps/sui/table.js';\nconst $moduleName = '@local-pkg/deepbook_predict::pool_accounting';\nexport const ActiveExpiry = new MoveStruct({\n\tname: `${$moduleName}::ActiveExpiry`,\n\tfields: {\n\t\texpiry_market_id: bcs.Address,\n\t\texpiry_ms: U64,\n\t},\n});\nexport const Ledger = new MoveStruct({\n\tname: `${$moduleName}::Ledger`,\n\tfields: {\n\t\t/** Idle LP-owned DUSDC available for withdrawals and expiry funding. */\n\t\tidle_balance: balance.Balance,\n\t\t/** Expiry markets that still contribute active pool valuation/risk. */\n\t\tactive_expiry_markets: bcs.vector(ActiveExpiry),\n\t\t/**\n\t\t * Permanent per-expiry accounting rows. Presence means the expiry belongs to this\n\t\t * pool.\n\t\t */\n\t\tregistered_expiries: table.Table,\n\t\t/** Pricing debit basis: DUSDC sent to expiries plus materialized terminal profit. */\n\t\tprofit_basis_debits: U64,\n\t\t/** Pricing credit basis: all DUSDC received back from expiries. */\n\t\tprofit_basis_credits: U64,\n\t\t/**\n\t\t * Aggregate terminal losses that later terminal profits must recover first; losses\n\t\t * do not claw back profit that was already materialized.\n\t\t */\n\t\tnet_losses_to_fill: U64,\n\t\t/**\n\t\t * Protocol profit already materialized into the debit basis but not yet physically\n\t\t * moved to the reserve because idle was deployed in other active markets at\n\t\t * materialization. Excluded from LP value until drained.\n\t\t */\n\t\tpending_protocol_profit: U64,\n\t},\n});\nexport const RegisteredExpiry = new MoveStruct({\n\tname: `${$moduleName}::RegisteredExpiry`,\n\tfields: {\n\t\t/** DUSDC pool allocation cap snapshotted when this expiry was created. */\n\t\tmax_expiry_allocation: U64,\n\t\t/** Minimum DUSDC cash target snapshotted when this expiry was created. */\n\t\tinitial_expiry_cash: U64,\n\t\t/** DUSDC sent from the main pool into this expiry. */\n\t\tsent_to_expiry: U64,\n\t\t/** DUSDC returned from this expiry to the main pool. */\n\t\treceived_from_expiry: U64,\n\t\t/** Absolute lifetime fee-incentive cap snapshotted when this expiry was registered. */\n\t\tfee_incentive_lifetime_cap: U64,\n\t\t/** Lifetime sponsor-funded fee incentives allocated to this expiry. */\n\t\tfee_incentives_allocated: U64,\n\t\t/** True once this expiry has started terminal profit/loss accounting. */\n\t\tterminal_accounting_started: bcs.bool(),\n\t\t/** Received amount already consumed by terminal accounting. */\n\t\tterminal_received_watermark: U64,\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,cAAc;AACpB,MAAa,eAAe,IAAI,WAAW;CAC1C,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,kBAAkB,IAAI;EACtB,WAAW;EACX;CACD,CAAC;AACF,MAAa,SAAS,IAAI,WAAW;CACpC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,cAAcA;EAEd,uBAAuB,IAAI,OAAO,aAAa;EAK/C,qBAAqBC;EAErB,qBAAqB;EAErB,sBAAsB;EAKtB,oBAAoB;EAMpB,yBAAyB;EACzB;CACD,CAAC;AACF,MAAa,mBAAmB,IAAI,WAAW;CAC9C,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,uBAAuB;EAEvB,qBAAqB;EAErB,gBAAgB;EAEhB,sBAAsB;EAEtB,4BAA4B;EAE5B,0BAA0B;EAE1B,6BAA6B,IAAI,MAAM;EAEvC,6BAA6B;EAC7B;CACD,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { MoveStruct, MoveTuple, normalizeMoveArguments } from "../utils/index.mjs";
|
|
2
|
+
import { U256, U64 } from "../../bcs/integers.mjs";
|
|
3
|
+
import { Table } from "./deps/sui/table.mjs";
|
|
4
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
5
|
+
|
|
6
|
+
//#region src/contracts/deepbook_predict/predict_account.ts
|
|
7
|
+
/**************************************************************
|
|
8
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
9
|
+
**************************************************************/
|
|
10
|
+
/**
|
|
11
|
+
* Predict's per-account state, stored as an app-data slot on a shared `Account`
|
|
12
|
+
* (the `account` package).
|
|
13
|
+
*
|
|
14
|
+
* This is Predict's account-local state: open positions and sticky builder-code
|
|
15
|
+
* attribution. DUSDC/PLP custody lives in `Account`. The `PredictApp` witness
|
|
16
|
+
* namespaces this slot, so only Predict writes it.
|
|
17
|
+
*
|
|
18
|
+
* Position mutations are package-internal. Builder-code configuration accepts an
|
|
19
|
+
* account `Auth`; the account package decides which owner or authorized
|
|
20
|
+
* application may obtain that mutable borrow.
|
|
21
|
+
*/
|
|
22
|
+
const $moduleName = "@local-pkg/deepbook_predict::predict_account";
|
|
23
|
+
const PredictApp = new MoveTuple({
|
|
24
|
+
name: `${$moduleName}::PredictApp`,
|
|
25
|
+
fields: [bcs.bool()]
|
|
26
|
+
});
|
|
27
|
+
const PositionKey = new MoveStruct({
|
|
28
|
+
name: `${$moduleName}::PositionKey`,
|
|
29
|
+
fields: {
|
|
30
|
+
expiry_market_id: bcs.Address,
|
|
31
|
+
order_id: U256
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const Position = new MoveStruct({
|
|
35
|
+
name: `${$moduleName}::Position`,
|
|
36
|
+
fields: {
|
|
37
|
+
root_id: U256,
|
|
38
|
+
opened_at_ms: U64
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
const PredictData = new MoveStruct({
|
|
42
|
+
name: `${$moduleName}::PredictData`,
|
|
43
|
+
fields: {
|
|
44
|
+
positions: Table,
|
|
45
|
+
builder_code_id: bcs.option(bcs.Address)
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
/** Return whether an account holds a position for SDK and devInspect state reads. */
|
|
49
|
+
function hasPosition(options) {
|
|
50
|
+
const packageAddress = options.package ?? options.config?.predictPackageId ?? "@local-pkg/deepbook_predict";
|
|
51
|
+
const argumentsTypes = [
|
|
52
|
+
null,
|
|
53
|
+
"0x2::object::ID",
|
|
54
|
+
"u256"
|
|
55
|
+
];
|
|
56
|
+
const parameterNames = [
|
|
57
|
+
"account",
|
|
58
|
+
"expiryMarketId",
|
|
59
|
+
"orderId"
|
|
60
|
+
];
|
|
61
|
+
return (tx) => tx.moveCall({
|
|
62
|
+
package: packageAddress,
|
|
63
|
+
module: "predict_account",
|
|
64
|
+
function: "has_position",
|
|
65
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Set sticky builder-code attribution for future trades using valid account auth.
|
|
70
|
+
* Owner auth and authorized-app auth both satisfy the account borrow boundary.
|
|
71
|
+
*/
|
|
72
|
+
function setBuilderCode(options) {
|
|
73
|
+
const packageAddress = options.package ?? options.config?.predictPackageId ?? "@local-pkg/deepbook_predict";
|
|
74
|
+
const argumentsTypes = [
|
|
75
|
+
null,
|
|
76
|
+
null,
|
|
77
|
+
null
|
|
78
|
+
];
|
|
79
|
+
const parameterNames = [
|
|
80
|
+
"wrapper",
|
|
81
|
+
"auth",
|
|
82
|
+
"code"
|
|
83
|
+
];
|
|
84
|
+
return (tx) => tx.moveCall({
|
|
85
|
+
package: packageAddress,
|
|
86
|
+
module: "predict_account",
|
|
87
|
+
function: "set_builder_code",
|
|
88
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames)
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** Clear sticky builder-code attribution using valid owner or authorized-app auth. */
|
|
92
|
+
function unsetBuilderCode(options) {
|
|
93
|
+
const packageAddress = options.package ?? options.config?.predictPackageId ?? "@local-pkg/deepbook_predict";
|
|
94
|
+
const argumentsTypes = [null, null];
|
|
95
|
+
const parameterNames = ["wrapper", "auth"];
|
|
96
|
+
return (tx) => tx.moveCall({
|
|
97
|
+
package: packageAddress,
|
|
98
|
+
module: "predict_account",
|
|
99
|
+
function: "unset_builder_code",
|
|
100
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames)
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
export { PositionKey, PredictData, hasPosition, setBuilderCode, unsetBuilderCode };
|
|
106
|
+
//# sourceMappingURL=predict_account.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predict_account.mjs","names":["table.Table"],"sources":["../../../src/contracts/deepbook_predict/predict_account.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Predict's per-account state, stored as an app-data slot on a shared `Account`\n * (the `account` package).\n *\n * This is Predict's account-local state: open positions and sticky builder-code\n * attribution. DUSDC/PLP custody lives in `Account`. The `PredictApp` witness\n * namespaces this slot, so only Predict writes it.\n *\n * Position mutations are package-internal. Builder-code configuration accepts an\n * account `Auth`; the account package decides which owner or authorized\n * application may obtain that mutable borrow.\n */\n\nimport {\n\tMoveTuple,\n\tMoveStruct,\n\tnormalizeMoveArguments,\n\ttype RawTransactionArgument,\n} from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { U256, U64 } from '../../bcs/integers.js';\nimport { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';\nimport * as table from './deps/sui/table.js';\nconst $moduleName = '@local-pkg/deepbook_predict::predict_account';\nexport const PredictApp = new MoveTuple({\n\tname: `${$moduleName}::PredictApp`,\n\tfields: [bcs.bool()],\n});\nexport const PositionKey = new MoveStruct({\n\tname: `${$moduleName}::PositionKey`,\n\tfields: {\n\t\texpiry_market_id: bcs.Address,\n\t\torder_id: U256,\n\t},\n});\nexport const Position = new MoveStruct({\n\tname: `${$moduleName}::Position`,\n\tfields: {\n\t\t/** Root order ID, carried forward unchanged across partial-close replacements. */\n\t\troot_id: U256,\n\t\t/**\n\t\t * On-chain time (`clock.timestamp_ms()`) the position was opened, carried forward\n\t\t * unchanged across partial-close replacements. A live redeem in the same timestamp\n\t\t * is rejected, blocking an atomic mint -> oracle-update -> redeem in one\n\t\t * transaction.\n\t\t */\n\t\topened_at_ms: U64,\n\t},\n});\nexport const PredictData = new MoveStruct({\n\tname: `${$moduleName}::PredictData`,\n\tfields: {\n\t\t/** Open positions scoped by expiry market. */\n\t\tpositions: table.Table,\n\t\t/** Sticky builder-code attribution for future trades, if set. */\n\t\tbuilder_code_id: bcs.option(bcs.Address),\n\t},\n});\nexport interface HasPositionArguments {\n\taccount: TransactionArgument;\n\texpiryMarketId: RawTransactionArgument<string>;\n\torderId: RawTransactionArgument<number | bigint>;\n}\nexport interface HasPositionOptions {\n\tpackage?: string;\n\targuments:\n\t\t| HasPositionArguments\n\t\t| [\n\t\t\t\taccount: TransactionArgument,\n\t\t\t\texpiryMarketId: RawTransactionArgument<string>,\n\t\t\t\torderId: RawTransactionArgument<number | bigint>,\n\t\t ];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Return whether an account holds a position for SDK and devInspect state reads. */\nexport function hasPosition(options: HasPositionOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, '0x2::object::ID', 'u256'] satisfies (string | null)[];\n\tconst parameterNames = ['account', 'expiryMarketId', 'orderId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'predict_account',\n\t\t\tfunction: 'has_position',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface BuilderCodeIdArguments {\n\taccount: TransactionArgument;\n}\nexport interface BuilderCodeIdOptions {\n\tpackage?: string;\n\targuments: BuilderCodeIdArguments | [account: TransactionArgument];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Return the sticky builder-code ID, if set. */\nexport function builderCodeId(options: BuilderCodeIdOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null] satisfies (string | null)[];\n\tconst parameterNames = ['account'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'predict_account',\n\t\t\tfunction: 'builder_code_id',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface SetBuilderCodeArguments {\n\twrapper: RawTransactionArgument<string>;\n\tauth: TransactionArgument;\n\tcode: RawTransactionArgument<string>;\n}\nexport interface SetBuilderCodeOptions {\n\tpackage?: string;\n\targuments:\n\t\t| SetBuilderCodeArguments\n\t\t| [\n\t\t\t\twrapper: RawTransactionArgument<string>,\n\t\t\t\tauth: TransactionArgument,\n\t\t\t\tcode: RawTransactionArgument<string>,\n\t\t ];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Set sticky builder-code attribution for future trades using valid account auth.\n * Owner auth and authorized-app auth both satisfy the account borrow boundary.\n */\nexport function setBuilderCode(options: SetBuilderCodeOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['wrapper', 'auth', 'code'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'predict_account',\n\t\t\tfunction: 'set_builder_code',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface UnsetBuilderCodeArguments {\n\twrapper: RawTransactionArgument<string>;\n\tauth: TransactionArgument;\n}\nexport interface UnsetBuilderCodeOptions {\n\tpackage?: string;\n\targuments:\n\t\t| UnsetBuilderCodeArguments\n\t\t| [wrapper: RawTransactionArgument<string>, auth: TransactionArgument];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Clear sticky builder-code attribution using valid owner or authorized-app auth. */\nexport function unsetBuilderCode(options: UnsetBuilderCodeOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null] satisfies (string | null)[];\n\tconst parameterNames = ['wrapper', 'auth'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'predict_account',\n\t\t\tfunction: 'unset_builder_code',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,cAAc;AACpB,MAAa,aAAa,IAAI,UAAU;CACvC,MAAM,GAAG,YAAY;CACrB,QAAQ,CAAC,IAAI,MAAM,CAAC;CACpB,CAAC;AACF,MAAa,cAAc,IAAI,WAAW;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,kBAAkB,IAAI;EACtB,UAAU;EACV;CACD,CAAC;AACF,MAAa,WAAW,IAAI,WAAW;CACtC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,SAAS;EAOT,cAAc;EACd;CACD,CAAC;AACF,MAAa,cAAc,IAAI,WAAW;CACzC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,WAAWA;EAEX,iBAAiB,IAAI,OAAO,IAAI,QAAQ;EACxC;CACD,CAAC;;AAoBF,SAAgB,YAAY,SAA6B;CACxD,MAAM,iBACL,QAAQ,WAAW,QAAQ,QAAQ,oBAAoB;CACxD,MAAM,iBAAiB;EAAC;EAAM;EAAmB;EAAO;CACxD,MAAM,iBAAiB;EAAC;EAAW;EAAkB;EAAU;AAC/D,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;;;;;AAgDJ,SAAgB,eAAe,SAAgC;CAC9D,MAAM,iBACL,QAAQ,WAAW,QAAQ,QAAQ,oBAAoB;CACxD,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAK;CACzC,MAAM,iBAAiB;EAAC;EAAW;EAAQ;EAAO;AAClD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC;;;AAgBJ,SAAgB,iBAAiB,SAAkC;CAClE,MAAM,iBACL,QAAQ,WAAW,QAAQ,QAAQ,oBAAoB;CACxD,MAAM,iBAAiB,CAAC,MAAM,KAAK;CACnC,MAAM,iBAAiB,CAAC,WAAW,OAAO;AAC1C,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { MoveStruct, normalizeMoveArguments } from "../utils/index.mjs";
|
|
2
|
+
import { U128, U64 } from "../../bcs/integers.mjs";
|
|
3
|
+
import { I64 } from "./deps/fixed_math/i64.mjs";
|
|
4
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
5
|
+
|
|
6
|
+
//#region src/contracts/deepbook_predict/pricing.ts
|
|
7
|
+
/**************************************************************
|
|
8
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
9
|
+
**************************************************************/
|
|
10
|
+
/**
|
|
11
|
+
* Pricing for Predict markets.
|
|
12
|
+
*
|
|
13
|
+
* This module reads canonical Propbook Pyth and Block Scholes feeds and computes
|
|
14
|
+
* SVI-adjusted digital probabilities. Live reads require fresh, pricing-safe Block
|
|
15
|
+
* Scholes spot, forward, and SVI observations. The live forward comes from one of
|
|
16
|
+
* two admin-selected sources (`PricingConfig.use_pyth_spot_for_forward`): a fresh
|
|
17
|
+
* positive Pyth spot carrying the Block Scholes basis, or the Block Scholes
|
|
18
|
+
* forward directly. Exact-history reads do not apply live freshness policy.
|
|
19
|
+
*/
|
|
20
|
+
const $moduleName = "@local-pkg/deepbook_predict::pricing";
|
|
21
|
+
const PricingSVI = new MoveStruct({
|
|
22
|
+
name: `${$moduleName}::PricingSVI`,
|
|
23
|
+
fields: {
|
|
24
|
+
a_magnitude: U128,
|
|
25
|
+
a_is_negative: bcs.bool(),
|
|
26
|
+
b: U128,
|
|
27
|
+
rho: I64,
|
|
28
|
+
m: I64,
|
|
29
|
+
sigma: U64
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const Pricer = new MoveStruct({
|
|
33
|
+
name: `${$moduleName}::Pricer`,
|
|
34
|
+
fields: {
|
|
35
|
+
expiry_market_id: bcs.Address,
|
|
36
|
+
forward: U64,
|
|
37
|
+
svi: PricingSVI,
|
|
38
|
+
pyth_spot_source_timestamp_ms: U64,
|
|
39
|
+
block_scholes_spot_source_timestamp_ms: U64,
|
|
40
|
+
block_scholes_forward_source_timestamp_ms: U64,
|
|
41
|
+
block_scholes_svi_source_timestamp_ms: U64
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
const RawSVI = new MoveStruct({
|
|
45
|
+
name: `${$moduleName}::RawSVI`,
|
|
46
|
+
fields: {
|
|
47
|
+
a: I64,
|
|
48
|
+
b: U64,
|
|
49
|
+
rho: I64,
|
|
50
|
+
m: I64,
|
|
51
|
+
sigma: U64
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Return the current probability for `(lower, higher]`, floored at zero if the two
|
|
56
|
+
* approximated boundary probabilities invert.
|
|
57
|
+
*/
|
|
58
|
+
function rangePrice(options) {
|
|
59
|
+
const packageAddress = options.package ?? options.config?.predictPackageId ?? "@local-pkg/deepbook_predict";
|
|
60
|
+
const argumentsTypes = [
|
|
61
|
+
null,
|
|
62
|
+
null,
|
|
63
|
+
null
|
|
64
|
+
];
|
|
65
|
+
const parameterNames = [
|
|
66
|
+
"pricer",
|
|
67
|
+
"lower",
|
|
68
|
+
"higher"
|
|
69
|
+
];
|
|
70
|
+
return (tx) => tx.moveCall({
|
|
71
|
+
package: packageAddress,
|
|
72
|
+
module: "pricing",
|
|
73
|
+
function: "range_price",
|
|
74
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames)
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
export { Pricer, rangePrice };
|
|
80
|
+
//# sourceMappingURL=pricing.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.mjs","names":["i64.I64"],"sources":["../../../src/contracts/deepbook_predict/pricing.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Pricing for Predict markets.\n *\n * This module reads canonical Propbook Pyth and Block Scholes feeds and computes\n * SVI-adjusted digital probabilities. Live reads require fresh, pricing-safe Block\n * Scholes spot, forward, and SVI observations. The live forward comes from one of\n * two admin-selected sources (`PricingConfig.use_pyth_spot_for_forward`): a fresh\n * positive Pyth spot carrying the Block Scholes basis, or the Block Scholes\n * forward directly. Exact-history reads do not apply live freshness policy.\n */\n\nimport { MoveStruct, normalizeMoveArguments } from '../utils/index.js';\nimport { U128, U64 } from '../../bcs/integers.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';\nimport * as i64 from './deps/fixed_math/i64.js';\nconst $moduleName = '@local-pkg/deepbook_predict::pricing';\nexport const PricingSVI = new MoveStruct({\n\tname: `${$moduleName}::PricingSVI`,\n\tfields: {\n\t\t/** Rolled-down SVI `a`, magnitude at 1e18, sign in `a_is_negative`. */\n\t\ta_magnitude: U128,\n\t\ta_is_negative: bcs.bool(),\n\t\t/** Rolled-down SVI `b`, at 1e18. */\n\t\tb: U128,\n\t\trho: i64.I64,\n\t\tm: i64.I64,\n\t\tsigma: U64,\n\t},\n});\nexport const Pricer = new MoveStruct({\n\tname: `${$moduleName}::Pricer`,\n\tfields: {\n\t\t/** Expiry market this snapshot was loaded for. */\n\t\texpiry_market_id: bcs.Address,\n\t\tforward: U64,\n\t\tsvi: PricingSVI,\n\t\t/**\n\t\t * Timestamps of the oracle observations this snapshot validated, as trade events\n\t\t * report them — each observation's own economic clock. Pyth carries its source\n\t\t * timestamp (`0` only when no usable normalized observation exists); the Block\n\t\t * Scholes reads carry their batch envelope time (`source_timestamp_ms`), the clock\n\t\t * freshness gated and the SVI roll-down anchored on. The provider's calibration\n\t\t * (model) times stay on the stored observations and their ingestion events.\n\t\t */\n\t\tpyth_spot_source_timestamp_ms: U64,\n\t\tblock_scholes_spot_source_timestamp_ms: U64,\n\t\tblock_scholes_forward_source_timestamp_ms: U64,\n\t\tblock_scholes_svi_source_timestamp_ms: U64,\n\t},\n});\nexport const RawSVI = new MoveStruct({\n\tname: `${$moduleName}::RawSVI`,\n\tfields: {\n\t\ta: i64.I64,\n\t\tb: U64,\n\t\trho: i64.I64,\n\t\tm: i64.I64,\n\t\tsigma: U64,\n\t},\n});\nexport interface UpPriceArguments {\n\tpricer: TransactionArgument;\n\tstrike: TransactionArgument;\n}\nexport interface UpPriceOptions {\n\tpackage?: string;\n\targuments: UpPriceArguments | [pricer: TransactionArgument, strike: TransactionArgument];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Return the current UP digital probability for a typed strike. Public PTB and\n * devInspect reads can compose it with a transaction-local `Pricer`.\n */\nexport function upPrice(options: UpPriceOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null] satisfies (string | null)[];\n\tconst parameterNames = ['pricer', 'strike'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'pricing',\n\t\t\tfunction: 'up_price',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\nexport interface RangePriceArguments {\n\tpricer: TransactionArgument;\n\tlower: TransactionArgument;\n\thigher: TransactionArgument;\n}\nexport interface RangePriceOptions {\n\tpackage?: string;\n\targuments:\n\t\t| RangePriceArguments\n\t\t| [pricer: TransactionArgument, lower: TransactionArgument, higher: TransactionArgument];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Return the current probability for `(lower, higher]`, floored at zero if the two\n * approximated boundary probabilities invert.\n */\nexport function rangePrice(options: RangePriceOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['pricer', 'lower', 'higher'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'pricing',\n\t\t\tfunction: 'range_price',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,MAAM,cAAc;AACpB,MAAa,aAAa,IAAI,WAAW;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,aAAa;EACb,eAAe,IAAI,MAAM;EAEzB,GAAG;EACH,KAAKA;EACL,GAAGA;EACH,OAAO;EACP;CACD,CAAC;AACF,MAAa,SAAS,IAAI,WAAW;CACpC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,kBAAkB,IAAI;EACtB,SAAS;EACT,KAAK;EASL,+BAA+B;EAC/B,wCAAwC;EACxC,2CAA2C;EAC3C,uCAAuC;EACvC;CACD,CAAC;AACF,MAAa,SAAS,IAAI,WAAW;CACpC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,GAAGA;EACH,GAAG;EACH,KAAKA;EACL,GAAGA;EACH,OAAO;EACP;CACD,CAAC;;;;;AA+CF,SAAgB,WAAW,SAA4B;CACtD,MAAM,iBACL,QAAQ,WAAW,QAAQ,QAAQ,oBAAoB;CACxD,MAAM,iBAAiB;EAAC;EAAM;EAAM;EAAK;CACzC,MAAM,iBAAiB;EAAC;EAAU;EAAS;EAAS;AACpD,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { MoveTuple, normalizeMoveArguments } from "../utils/index.mjs";
|
|
2
|
+
import { U64 } from "../../bcs/integers.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/contracts/deepbook_predict/range_codec.ts
|
|
5
|
+
/**************************************************************
|
|
6
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
7
|
+
**************************************************************/
|
|
8
|
+
/**
|
|
9
|
+
* Canonical strike-range codec for Predict.
|
|
10
|
+
*
|
|
11
|
+
* Finite strikes are absolute ticks from zero: `strike = tick * tick_size`. Ranges
|
|
12
|
+
* use `(lower_tick, higher_tick)` in entrypoints, events, and order IDs. Tick zero
|
|
13
|
+
* and `pos_inf_tick` are the open lower and upper sentinels. This module owns
|
|
14
|
+
* conversion between those ticks and raw oracle-price coordinates; `order` owns
|
|
15
|
+
* range-shape validation.
|
|
16
|
+
*/
|
|
17
|
+
const $moduleName = "@local-pkg/deepbook_predict::range_codec";
|
|
18
|
+
const Strike = new MoveTuple({
|
|
19
|
+
name: `${$moduleName}::Strike`,
|
|
20
|
+
fields: [U64]
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Convert a boundary tick to its raw strike, including the open-end sentinels.
|
|
24
|
+
* Non-sentinel ticks multiply directly by `tick_size`; public PTB and devInspect
|
|
25
|
+
* callers are responsible for supplying the intended market domain.
|
|
26
|
+
*/
|
|
27
|
+
function strikeFromTick(options) {
|
|
28
|
+
const packageAddress = options.package ?? options.config?.predictPackageId ?? "@local-pkg/deepbook_predict";
|
|
29
|
+
const argumentsTypes = ["u64", "u64"];
|
|
30
|
+
const parameterNames = ["tick", "tickSize"];
|
|
31
|
+
return (tx) => tx.moveCall({
|
|
32
|
+
package: packageAddress,
|
|
33
|
+
module: "range_codec",
|
|
34
|
+
function: "strike_from_tick",
|
|
35
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames)
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
export { strikeFromTick };
|
|
41
|
+
//# sourceMappingURL=range_codec.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range_codec.mjs","names":[],"sources":["../../../src/contracts/deepbook_predict/range_codec.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Canonical strike-range codec for Predict.\n *\n * Finite strikes are absolute ticks from zero: `strike = tick * tick_size`. Ranges\n * use `(lower_tick, higher_tick)` in entrypoints, events, and order IDs. Tick zero\n * and `pos_inf_tick` are the open lower and upper sentinels. This module owns\n * conversion between those ticks and raw oracle-price coordinates; `order` owns\n * range-shape validation.\n */\n\nimport { MoveTuple, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';\nimport { U64 } from '../../bcs/integers.js';\nimport { type Transaction } from '@mysten/sui/transactions';\nconst $moduleName = '@local-pkg/deepbook_predict::range_codec';\nexport const Strike = new MoveTuple({ name: `${$moduleName}::Strike`, fields: [U64] });\nexport interface StrikeFromTickArguments {\n\ttick: RawTransactionArgument<number | bigint>;\n\ttickSize: RawTransactionArgument<number | bigint>;\n}\nexport interface StrikeFromTickOptions {\n\tpackage?: string;\n\targuments:\n\t\t| StrikeFromTickArguments\n\t\t| [\n\t\t\t\ttick: RawTransactionArgument<number | bigint>,\n\t\t\t\ttickSize: RawTransactionArgument<number | bigint>,\n\t\t ];\n\tconfig?: {\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Convert a boundary tick to its raw strike, including the open-end sentinels.\n * Non-sentinel ticks multiply directly by `tick_size`; public PTB and devInspect\n * callers are responsible for supplying the intended market domain.\n */\nexport function strikeFromTick(options: StrikeFromTickOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = ['u64', 'u64'] satisfies (string | null)[];\n\tconst parameterNames = ['tick', 'tickSize'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'range_codec',\n\t\t\tfunction: 'strike_from_tick',\n\t\t\targuments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),\n\t\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,cAAc;AACpB,MAAa,SAAS,IAAI,UAAU;CAAE,MAAM,GAAG,YAAY;CAAW,QAAQ,CAAC,IAAI;CAAE,CAAC;;;;;;AAsBtF,SAAgB,eAAe,SAAgC;CAC9D,MAAM,iBACL,QAAQ,WAAW,QAAQ,QAAQ,oBAAoB;CACxD,MAAM,iBAAiB,CAAC,OAAO,MAAM;CACrC,MAAM,iBAAiB,CAAC,QAAQ,WAAW;AAC3C,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBAAuB,QAAQ,WAAW,gBAAgB,eAAe;EACpF,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { MoveStruct, normalizeMoveArguments } from "../utils/index.mjs";
|
|
2
|
+
import { MarketManager } from "./market_manager.mjs";
|
|
3
|
+
import { VecSet } from "./deps/sui/vec_set.mjs";
|
|
4
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
5
|
+
|
|
6
|
+
//#region src/contracts/deepbook_predict/registry.ts
|
|
7
|
+
/**************************************************************
|
|
8
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
9
|
+
**************************************************************/
|
|
10
|
+
/**
|
|
11
|
+
* Registry and creation entrypoints for the Predict protocol.
|
|
12
|
+
*
|
|
13
|
+
* This module creates shared setup objects, owns registry-level capabilities, and
|
|
14
|
+
* exposes registry-owned governance/creation entrypoints. Market identity, cadence
|
|
15
|
+
* policy, underlying watermarks, and market uniqueness live in the embedded
|
|
16
|
+
* `market_manager`. Runtime pool accounting, expiry risk, oracle feeds, and user
|
|
17
|
+
* positions stay in their owning modules.
|
|
18
|
+
*/
|
|
19
|
+
const $moduleName = "@local-pkg/deepbook_predict::registry";
|
|
20
|
+
const Registry = new MoveStruct({
|
|
21
|
+
name: `${$moduleName}::Registry`,
|
|
22
|
+
fields: {
|
|
23
|
+
id: bcs.Address,
|
|
24
|
+
market_manager: MarketManager,
|
|
25
|
+
allowed_pause_caps: VecSet(bcs.Address),
|
|
26
|
+
allowed_lifecycle_caps: VecSet(bcs.Address)
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
/** Resolve an expiry market ID for external discovery and PTB construction. */
|
|
30
|
+
function expiryMarketId(options) {
|
|
31
|
+
const packageAddress = options.package ?? options.config?.predictPackageId ?? "@local-pkg/deepbook_predict";
|
|
32
|
+
const argumentsTypes = [
|
|
33
|
+
null,
|
|
34
|
+
"u32",
|
|
35
|
+
"u64"
|
|
36
|
+
];
|
|
37
|
+
const parameterNames = [
|
|
38
|
+
"registry",
|
|
39
|
+
"propbookUnderlyingId",
|
|
40
|
+
"expiry"
|
|
41
|
+
];
|
|
42
|
+
return (tx) => tx.moveCall({
|
|
43
|
+
package: packageAddress,
|
|
44
|
+
module: "registry",
|
|
45
|
+
function: "expiry_market_id",
|
|
46
|
+
arguments: normalizeMoveArguments({
|
|
47
|
+
...options.arguments,
|
|
48
|
+
registry: options.arguments?.registry ?? options.config?.registry
|
|
49
|
+
}, argumentsTypes, parameterNames)
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { expiryMarketId };
|
|
55
|
+
//# sourceMappingURL=registry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.mjs","names":["market_manager.MarketManager","vec_set.VecSet"],"sources":["../../../src/contracts/deepbook_predict/registry.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Registry and creation entrypoints for the Predict protocol.\n *\n * This module creates shared setup objects, owns registry-level capabilities, and\n * exposes registry-owned governance/creation entrypoints. Market identity, cadence\n * policy, underlying watermarks, and market uniqueness live in the embedded\n * `market_manager`. Runtime pool accounting, expiry risk, oracle feeds, and user\n * positions stay in their owning modules.\n */\n\nimport {\n\tMoveStruct,\n\tnormalizeMoveArguments,\n\ttype RawTransactionArgument,\n\ttype ConfigValue,\n} from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { type Transaction } from '@mysten/sui/transactions';\nimport * as market_manager from './market_manager.js';\nimport * as vec_set from './deps/sui/vec_set.js';\nconst $moduleName = '@local-pkg/deepbook_predict::registry';\nexport const Registry = new MoveStruct({\n\tname: `${$moduleName}::Registry`,\n\tfields: {\n\t\tid: bcs.Address,\n\t\t/**\n\t\t * Market identity, cadence deployment terms, underlying watermarks, and\n\t\t * uniqueness.\n\t\t */\n\t\tmarket_manager: market_manager.MarketManager,\n\t\t/**\n\t\t * IDs of `PauseCap` objects currently authorized to use pause-only entries. Admin\n\t\t * mints into this set and revokes from it.\n\t\t */\n\t\tallowed_pause_caps: vec_set.VecSet(bcs.Address),\n\t\t/**\n\t\t * IDs of `MarketLifecycleCap` objects currently authorized for privileged\n\t\t * lifecycle entries such as market creation and full-pool valuation. Admin mints\n\t\t * into this set and revokes from it.\n\t\t */\n\t\tallowed_lifecycle_caps: vec_set.VecSet(bcs.Address),\n\t},\n});\nexport interface IdArguments {\n\tregistry?: RawTransactionArgument<string>;\n}\nexport interface IdOptions {\n\tpackage?: string;\n\targuments?: IdArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Return the registry object ID for external discovery and PTB construction. */\nexport function id(options: IdOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null] satisfies (string | null)[];\n\tconst parameterNames = ['registry'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'id',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface ExpiryMarketIdArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tpropbookUnderlyingId: RawTransactionArgument<number>;\n\texpiry: RawTransactionArgument<number | bigint>;\n}\nexport interface ExpiryMarketIdOptions {\n\tpackage?: string;\n\targuments: ExpiryMarketIdArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Resolve an expiry market ID for external discovery and PTB construction. */\nexport function expiryMarketId(options: ExpiryMarketIdOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, 'u32', 'u64'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'propbookUnderlyingId', 'expiry'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'expiry_market_id',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface CadenceConfigArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tpropbookUnderlyingId: RawTransactionArgument<number>;\n\tcadenceId: RawTransactionArgument<number>;\n}\nexport interface CadenceConfigOptions {\n\tpackage?: string;\n\targuments: CadenceConfigArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Return deployment policy for SDK and devInspect market discovery. */\nexport function cadenceConfig(options: CadenceConfigOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, 'u32', 'u8'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'propbookUnderlyingId', 'cadenceId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'cadence_config',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface CadenceConfigsArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tpropbookUnderlyingId: RawTransactionArgument<number>;\n}\nexport interface CadenceConfigsOptions {\n\tpackage?: string;\n\targuments: CadenceConfigsArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Return one underlying's complete deployment policy as a single coherent\n * snapshot, for off-chain consumers (SDK and devInspect cadence discovery by the\n * keeper, price updater, and dashboard) that would otherwise need one read per\n * cadence. The vector holds one entry per supported cadence, indexed by cadence\n * ID; disabled cadences are present as their all-zero configuration. Aborts if the\n * underlying is not registered.\n */\nexport function cadenceConfigs(options: CadenceConfigsOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, 'u32'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'propbookUnderlyingId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'cadence_configs',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface MintPauseCapArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tAdminCap: RawTransactionArgument<string>;\n}\nexport interface MintPauseCapOptions {\n\tpackage?: string;\n\targuments: MintPauseCapArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Mint a new `PauseCap`. This bypasses the version gate so emergency pause\n * authority remains available from a package version below the runtime floor.\n */\nexport function mintPauseCap(options: MintPauseCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'AdminCap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'mint_pause_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface RevokePauseCapArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tAdminCap: RawTransactionArgument<string>;\n\tpauseCapId: RawTransactionArgument<string>;\n}\nexport interface RevokePauseCapOptions {\n\tpackage?: string;\n\targuments: RevokePauseCapArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Revoke a previously minted `PauseCap` by ID. Admin-only. */\nexport function revokePauseCap(options: RevokePauseCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, '0x2::object::ID'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'AdminCap', 'pauseCapId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'revoke_pause_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface MintLifecycleCapArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tconfig?: RawTransactionArgument<string>;\n\tAdminCap: RawTransactionArgument<string>;\n}\nexport interface MintLifecycleCapOptions {\n\tpackage?: string;\n\targuments: MintLifecycleCapArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tprotocolConfig: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Mint a version-gated `MarketLifecycleCap` with market-creation and valuation\n * authority.\n */\nexport function mintLifecycleCap(options: MintLifecycleCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'config', 'AdminCap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'mint_lifecycle_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface RevokeLifecycleCapArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tAdminCap: RawTransactionArgument<string>;\n\tlifecycleCapId: RawTransactionArgument<string>;\n}\nexport interface RevokeLifecycleCapOptions {\n\tpackage?: string;\n\targuments: RevokeLifecycleCapArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Revoke a `MarketLifecycleCap` by ID without applying the version gate. */\nexport function revokeLifecycleCap(options: RevokeLifecycleCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, '0x2::object::ID'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'AdminCap', 'lifecycleCapId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'revoke_lifecycle_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface GenerateLifecycleProofArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tlifecycleCap: RawTransactionArgument<string>;\n}\nexport interface GenerateLifecycleProofOptions {\n\tpackage?: string;\n\targuments: GenerateLifecycleProofArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Generate a transaction-local proof that `lifecycle_cap` is currently\n * allowlisted. Consumers take the proof by value so a revoked lifecycle cap cannot\n * authorize cross-module lifecycle actions.\n */\nexport function generateLifecycleProof(options: GenerateLifecycleProofOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'lifecycleCap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'generate_lifecycle_proof',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface PauseTradingPauseCapArguments {\n\tconfig?: RawTransactionArgument<string>;\n\tregistry?: RawTransactionArgument<string>;\n\tpauseCap: RawTransactionArgument<string>;\n}\nexport interface PauseTradingPauseCapOptions {\n\tpackage?: string;\n\targuments: PauseTradingPauseCapArguments;\n\tconfig?: {\n\t\tprotocolConfig: ConfigValue;\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Force `trading_paused = true` via a valid `PauseCap`. One-way. */\nexport function pauseTradingPauseCap(options: PauseTradingPauseCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['config', 'registry', 'pauseCap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'pause_trading_pause_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface FreezeProtocolPauseCapArguments {\n\tconfig?: RawTransactionArgument<string>;\n\tregistry?: RawTransactionArgument<string>;\n\tpauseCap: RawTransactionArgument<string>;\n}\nexport interface FreezeProtocolPauseCapOptions {\n\tpackage?: string;\n\targuments: FreezeProtocolPauseCapArguments;\n\tconfig?: {\n\t\tprotocolConfig: ConfigValue;\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Force the protocol-wide emergency freeze via a valid `PauseCap`. One-way;\n * admin's `protocol_config::set_frozen` is needed to lift the freeze.\n */\nexport function freezeProtocolPauseCap(options: FreezeProtocolPauseCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['config', 'registry', 'pauseCap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'freeze_protocol_pause_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface PauseExpiryMarketMintPauseCapArguments {\n\tmarket: RawTransactionArgument<string>;\n\tregistry?: RawTransactionArgument<string>;\n\tpauseCap: RawTransactionArgument<string>;\n}\nexport interface PauseExpiryMarketMintPauseCapOptions {\n\tpackage?: string;\n\targuments: PauseExpiryMarketMintPauseCapArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Force `mint_paused = true` on a single expiry market via a valid `PauseCap`.\n * One-way; admin's `expiry_market::set_mint_paused` is needed to unpause.\n */\nexport function pauseExpiryMarketMintPauseCap(options: PauseExpiryMarketMintPauseCapOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null] satisfies (string | null)[];\n\tconst parameterNames = ['market', 'registry', 'pauseCap'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'pause_expiry_market_mint_pause_cap',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface RegisterUnderlyingArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tconfig?: RawTransactionArgument<string>;\n\tAdminCap: RawTransactionArgument<string>;\n\tpropbookUnderlyingId: RawTransactionArgument<number>;\n}\nexport interface RegisterUnderlyingOptions {\n\tpackage?: string;\n\targuments: RegisterUnderlyingArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tprotocolConfig: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Record admin approval of one Propbook underlying. Source IDs and canonical\n * oracle object IDs remain owned by Propbook; this row only gates which\n * underlyings Predict will build markets on and stores deployment watermarks.\n */\nexport function registerUnderlying(options: RegisterUnderlyingOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, null, 'u32'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'config', 'AdminCap', 'propbookUnderlyingId'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'register_underlying',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface SetTemplateCadenceConfigArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tconfig?: RawTransactionArgument<string>;\n\tAdminCap: RawTransactionArgument<string>;\n\tpropbookUnderlyingId: RawTransactionArgument<number>;\n\tcadenceId: RawTransactionArgument<number>;\n\ttickSize: RawTransactionArgument<number | bigint>;\n\tadmissionTickSize: RawTransactionArgument<number | bigint>;\n\tmaxExpiryAllocation: RawTransactionArgument<number | bigint>;\n\tinitialExpiryCash: RawTransactionArgument<number | bigint>;\n\twindowSize: RawTransactionArgument<number | bigint>;\n}\nexport interface SetTemplateCadenceConfigOptions {\n\tpackage?: string;\n\targuments: SetTemplateCadenceConfigArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tprotocolConfig: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Set all deployment terms for one underlying's cadence. Passing zero for all five\n * values disables the cadence; otherwise all values must be nonzero and valid.\n */\nexport function setTemplateCadenceConfig(options: SetTemplateCadenceConfigOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\tnull,\n\t\tnull,\n\t\t'u32',\n\t\t'u8',\n\t\t'u64',\n\t\t'u64',\n\t\t'u64',\n\t\t'u64',\n\t\t'u64',\n\t] satisfies (string | null)[];\n\tconst parameterNames = [\n\t\t'registry',\n\t\t'config',\n\t\t'AdminCap',\n\t\t'propbookUnderlyingId',\n\t\t'cadenceId',\n\t\t'tickSize',\n\t\t'admissionTickSize',\n\t\t'maxExpiryAllocation',\n\t\t'initialExpiryCash',\n\t\t'windowSize',\n\t];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'set_template_cadence_config',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface CreateAndShareExpiryMarketArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tpoolVault?: RawTransactionArgument<string>;\n\tconfig?: RawTransactionArgument<string>;\n\tpropbookRegistry?: RawTransactionArgument<string>;\n\tlifecycleCap: RawTransactionArgument<string>;\n\tpropbookUnderlyingId: RawTransactionArgument<number>;\n\tcadenceId: RawTransactionArgument<number>;\n}\nexport interface CreateAndShareExpiryMarketOptions {\n\tpackage?: string;\n\targuments: CreateAndShareExpiryMarketArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tpoolVault: ConfigValue;\n\t\tprotocolConfig: ConfigValue;\n\t\toracleRegistry: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/**\n * Create the next deployable `ExpiryMarket` for one cadence on a Propbook\n * underlying.\n *\n * Requires an allowlisted lifecycle capability, a registered underlying with all\n * canonical feed objects bound, and an enabled cadence with a deployable slot.\n * Higher-rank cadence overlaps and existing markets are skipped. The market\n * snapshots cadence and expiry policy, starts with zero cash, and cannot mint\n * until pool rebalancing funds it. Live pricing reads current Propbook bindings.\n */\nexport function createAndShareExpiryMarket(options: CreateAndShareExpiryMarketOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [\n\t\tnull,\n\t\tnull,\n\t\tnull,\n\t\tnull,\n\t\tnull,\n\t\t'u32',\n\t\t'u8',\n\t\t'0x2::clock::Clock',\n\t] satisfies (string | null)[];\n\tconst parameterNames = [\n\t\t'registry',\n\t\t'poolVault',\n\t\t'config',\n\t\t'propbookRegistry',\n\t\t'lifecycleCap',\n\t\t'propbookUnderlyingId',\n\t\t'cadenceId',\n\t];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'create_and_share_expiry_market',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t\tpoolVault: options.arguments?.poolVault ?? options.config?.poolVault,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t\tpropbookRegistry: options.arguments?.propbookRegistry ?? options.config?.oracleRegistry,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\nexport interface CreateAndShareBuilderCodeArguments {\n\tregistry?: RawTransactionArgument<string>;\n\tconfig?: RawTransactionArgument<string>;\n\tindex: RawTransactionArgument<number | bigint>;\n}\nexport interface CreateAndShareBuilderCodeOptions {\n\tpackage?: string;\n\targuments: CreateAndShareBuilderCodeArguments;\n\tconfig?: {\n\t\tregistry: ConfigValue;\n\t\tprotocolConfig: ConfigValue;\n\t\tpredictPackageId?: string;\n\t};\n}\n/** Create a derived shared BuilderCode for the caller and index. */\nexport function createAndShareBuilderCode(options: CreateAndShareBuilderCodeOptions) {\n\tconst packageAddress =\n\t\toptions.package ?? options.config?.predictPackageId ?? '@local-pkg/deepbook_predict';\n\tconst argumentsTypes = [null, null, 'u64'] satisfies (string | null)[];\n\tconst parameterNames = ['registry', 'config', 'index'];\n\treturn (tx: Transaction) =>\n\t\ttx.moveCall({\n\t\t\tpackage: packageAddress,\n\t\t\tmodule: 'registry',\n\t\t\tfunction: 'create_and_share_builder_code',\n\t\t\targuments: normalizeMoveArguments(\n\t\t\t\t{\n\t\t\t\t\t...options.arguments,\n\t\t\t\t\tregistry: options.arguments?.registry ?? options.config?.registry,\n\t\t\t\t\tconfig: options.arguments?.config ?? options.config?.protocolConfig,\n\t\t\t\t},\n\t\t\t\targumentsTypes,\n\t\t\t\tparameterNames,\n\t\t\t),\n\t\t});\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAwBA,MAAM,cAAc;AACpB,MAAa,WAAW,IAAI,WAAW;CACtC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,IAAI,IAAI;EAKR,gBAAgBA;EAKhB,oBAAoBC,OAAe,IAAI,QAAQ;EAM/C,wBAAwBA,OAAe,IAAI,QAAQ;EACnD;CACD,CAAC;;AA+CF,SAAgB,eAAe,SAAgC;CAC9D,MAAM,iBACL,QAAQ,WAAW,QAAQ,QAAQ,oBAAoB;CACxD,MAAM,iBAAiB;EAAC;EAAM;EAAO;EAAM;CAC3C,MAAM,iBAAiB;EAAC;EAAY;EAAwB;EAAS;AACrE,SAAQ,OACP,GAAG,SAAS;EACX,SAAS;EACT,QAAQ;EACR,UAAU;EACV,WAAW,uBACV;GACC,GAAG,QAAQ;GACX,UAAU,QAAQ,WAAW,YAAY,QAAQ,QAAQ;GACzD,EACD,gBACA,eACA;EACD,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MoveStruct } from "../utils/index.mjs";
|
|
2
|
+
import { U64 } from "../../bcs/integers.mjs";
|
|
3
|
+
import { StrikeExposureConfig } from "./strike_exposure_config.mjs";
|
|
4
|
+
import { StrikePayoutTree } from "./strike_payout_tree.mjs";
|
|
5
|
+
import { Order } from "./order.mjs";
|
|
6
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
7
|
+
|
|
8
|
+
//#region src/contracts/deepbook_predict/strike_exposure.ts
|
|
9
|
+
/**************************************************************
|
|
10
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
11
|
+
**************************************************************/
|
|
12
|
+
/**
|
|
13
|
+
* Expiry-local exposure book for one expiry market.
|
|
14
|
+
*
|
|
15
|
+
* This module interprets `Order` terms against the expiry's `tick_size`,
|
|
16
|
+
* recovering raw strikes from order ticks only at the pricing/settlement boundary.
|
|
17
|
+
* It owns the payout-liability view of the active contracts used for cash backing.
|
|
18
|
+
* Order accounting is static and needs no clock: a winning order pays its full
|
|
19
|
+
* quantity. Expiry-market cash custody, account positions, and payout movement
|
|
20
|
+
* stay outside this module.
|
|
21
|
+
*/
|
|
22
|
+
const $moduleName = "@local-pkg/deepbook_predict::strike_exposure";
|
|
23
|
+
const StrikeExposure = new MoveStruct({
|
|
24
|
+
name: `${$moduleName}::StrikeExposure`,
|
|
25
|
+
fields: {
|
|
26
|
+
expiry_market_id: bcs.Address,
|
|
27
|
+
tick_size: U64,
|
|
28
|
+
admission_tick_size: U64,
|
|
29
|
+
reference_tick_source_timestamp_ms: U64,
|
|
30
|
+
reference_tick: bcs.option(U64),
|
|
31
|
+
config: StrikeExposureConfig,
|
|
32
|
+
inventory_impact_scale: U64,
|
|
33
|
+
next_order_sequence: U64,
|
|
34
|
+
settlement_price: bcs.option(U64),
|
|
35
|
+
settled_payout_liability: U64,
|
|
36
|
+
payout: StrikePayoutTree
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
const MintTerms = new MoveStruct({
|
|
40
|
+
name: `${$moduleName}::MintTerms`,
|
|
41
|
+
fields: {
|
|
42
|
+
expiry_market_id: bcs.Address,
|
|
43
|
+
lower_tick: U64,
|
|
44
|
+
higher_tick: U64,
|
|
45
|
+
quantity: U64,
|
|
46
|
+
entry_probability: U64,
|
|
47
|
+
premium: U64,
|
|
48
|
+
inventory_impact_charge: U64
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const LiveCloseTerms = new MoveStruct({
|
|
52
|
+
name: `${$moduleName}::LiveCloseTerms`,
|
|
53
|
+
fields: {
|
|
54
|
+
expiry_market_id: bcs.Address,
|
|
55
|
+
order: Order,
|
|
56
|
+
close_quantity: U64,
|
|
57
|
+
redeem_amount: U64,
|
|
58
|
+
range_probability: U64,
|
|
59
|
+
inventory_impact_rebate: U64
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
//#endregion
|
|
64
|
+
export { StrikeExposure };
|
|
65
|
+
//# sourceMappingURL=strike_exposure.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strike_exposure.mjs","names":["strike_exposure_config.StrikeExposureConfig","strike_payout_tree.StrikePayoutTree","order.Order"],"sources":["../../../src/contracts/deepbook_predict/strike_exposure.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Expiry-local exposure book for one expiry market.\n *\n * This module interprets `Order` terms against the expiry's `tick_size`,\n * recovering raw strikes from order ticks only at the pricing/settlement boundary.\n * It owns the payout-liability view of the active contracts used for cash backing.\n * Order accounting is static and needs no clock: a winning order pays its full\n * quantity. Expiry-market cash custody, account positions, and payout movement\n * stay outside this module.\n */\n\nimport { MoveStruct } from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { U64 } from '../../bcs/integers.js';\nimport * as strike_exposure_config from './strike_exposure_config.js';\nimport * as strike_payout_tree from './strike_payout_tree.js';\nimport * as order from './order.js';\nconst $moduleName = '@local-pkg/deepbook_predict::strike_exposure';\nexport const StrikeExposure = new MoveStruct({\n\tname: `${$moduleName}::StrikeExposure`,\n\tfields: {\n\t\t/** Expiry market that owns this exposure book. */\n\t\texpiry_market_id: bcs.Address,\n\t\t/** Raw-price-per-tick conversion factor; `raw_strike = tick * tick_size`. */\n\t\ttick_size: U64,\n\t\t/** Coarser raw-price step that new finite mint boundaries must align to. */\n\t\tadmission_tick_size: U64,\n\t\t/** Exact Propbook Pyth source timestamp used to derive the reference tick. */\n\t\treference_tick_source_timestamp_ms: U64,\n\t\t/** Reference fine-grid tick that may bypass the coarser admission grid once set. */\n\t\treference_tick: bcs.option(U64),\n\t\t/** Snapshotted exposure and fee policy for this expiry. */\n\t\tconfig: strike_exposure_config.StrikeExposureConfig,\n\t\t/**\n\t\t * Immutable DUSDC scale for the inventory-impact curve. This is the expiry's\n\t\t * snapshotted maximum pool allocation: a risk-capacity parameter, not live pool\n\t\t * equity, so LP flows cannot reprice an existing book.\n\t\t */\n\t\tinventory_impact_scale: U64,\n\t\tnext_order_sequence: U64,\n\t\t/** Terminal settlement price once the exposure has entered its settled phase. */\n\t\tsettlement_price: bcs.option(U64),\n\t\t/** Remaining payout liability in the settled phase. */\n\t\tsettled_payout_liability: U64,\n\t\t/** Sparse payout tree for live cash backing and settled liability. */\n\t\tpayout: strike_payout_tree.StrikePayoutTree,\n\t},\n});\nexport const MintTerms = new MoveStruct({\n\tname: `${$moduleName}::MintTerms`,\n\tfields: {\n\t\texpiry_market_id: bcs.Address,\n\t\tlower_tick: U64,\n\t\thigher_tick: U64,\n\t\tquantity: U64,\n\t\tentry_probability: U64,\n\t\tpremium: U64,\n\t\t/** Separate inventory-impact charge, sampled against the pre-mint book. */\n\t\tinventory_impact_charge: U64,\n\t},\n});\nexport const LiveCloseTerms = new MoveStruct({\n\tname: `${$moduleName}::LiveCloseTerms`,\n\tfields: {\n\t\texpiry_market_id: bcs.Address,\n\t\torder: order.Order,\n\t\tclose_quantity: U64,\n\t\tredeem_amount: U64,\n\t\trange_probability: U64,\n\t\t/** Separate inventory-impact rebate, sampled against the pre-close book. */\n\t\tinventory_impact_rebate: U64,\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAM,cAAc;AACpB,MAAa,iBAAiB,IAAI,WAAW;CAC5C,MAAM,GAAG,YAAY;CACrB,QAAQ;EAEP,kBAAkB,IAAI;EAEtB,WAAW;EAEX,qBAAqB;EAErB,oCAAoC;EAEpC,gBAAgB,IAAI,OAAO,IAAI;EAE/B,QAAQA;EAMR,wBAAwB;EACxB,qBAAqB;EAErB,kBAAkB,IAAI,OAAO,IAAI;EAEjC,0BAA0B;EAE1B,QAAQC;EACR;CACD,CAAC;AACF,MAAa,YAAY,IAAI,WAAW;CACvC,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,kBAAkB,IAAI;EACtB,YAAY;EACZ,aAAa;EACb,UAAU;EACV,mBAAmB;EACnB,SAAS;EAET,yBAAyB;EACzB;CACD,CAAC;AACF,MAAa,iBAAiB,IAAI,WAAW;CAC5C,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,kBAAkB,IAAI;EACtB,OAAOC;EACP,gBAAgB;EAChB,eAAe;EACf,mBAAmB;EAEnB,yBAAyB;EACzB;CACD,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MoveStruct } from "../utils/index.mjs";
|
|
2
|
+
import { U64 } from "../../bcs/integers.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/contracts/deepbook_predict/strike_exposure_config.ts
|
|
5
|
+
/**************************************************************
|
|
6
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
7
|
+
**************************************************************/
|
|
8
|
+
/**
|
|
9
|
+
* Stored strike-exposure policy config.
|
|
10
|
+
*
|
|
11
|
+
* ProtocolConfig owns the current global template. Each StrikeExposure stores a
|
|
12
|
+
* snapshot initialized from that template, so later admin updates do not reprice
|
|
13
|
+
* active markets. Fee policy lives here because fees consume prices but are not
|
|
14
|
+
* themselves contract probability.
|
|
15
|
+
*/
|
|
16
|
+
const $moduleName = "@local-pkg/deepbook_predict::strike_exposure_config";
|
|
17
|
+
const StrikeExposureConfig = new MoveStruct({
|
|
18
|
+
name: `${$moduleName}::StrikeExposureConfig`,
|
|
19
|
+
fields: {
|
|
20
|
+
backing_buffer_lambda: U64,
|
|
21
|
+
base_fee: U64,
|
|
22
|
+
min_fee: U64,
|
|
23
|
+
min_entry_probability: U64,
|
|
24
|
+
max_entry_probability: U64,
|
|
25
|
+
expiry_fee_window_ms: U64,
|
|
26
|
+
expiry_fee_max_multiplier: U64,
|
|
27
|
+
inventory_impact_max_rate: U64
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//#endregion
|
|
32
|
+
export { StrikeExposureConfig };
|
|
33
|
+
//# sourceMappingURL=strike_exposure_config.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strike_exposure_config.mjs","names":[],"sources":["../../../src/contracts/deepbook_predict/strike_exposure_config.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Stored strike-exposure policy config.\n *\n * ProtocolConfig owns the current global template. Each StrikeExposure stores a\n * snapshot initialized from that template, so later admin updates do not reprice\n * active markets. Fee policy lives here because fees consume prices but are not\n * themselves contract probability.\n */\n\nimport { MoveStruct } from '../utils/index.js';\nimport { U64 } from '../../bcs/integers.js';\nconst $moduleName = '@local-pkg/deepbook_predict::strike_exposure_config';\nexport const StrikeExposureConfig = new MoveStruct({\n\tname: `${$moduleName}::StrikeExposureConfig`,\n\tfields: {\n\t\t/**\n\t\t * Fraction of the disjoint-book backing gap reserved for early exits. A value of\n\t\t * 1.0 reserves the full gap.\n\t\t */\n\t\tbacking_buffer_lambda: U64,\n\t\t/**\n\t\t * Base fee multiplier for Bernoulli scaling. Effective base fee = base_fee *\n\t\t * sqrt(price * (1 - price)).\n\t\t */\n\t\tbase_fee: U64,\n\t\t/** Minimum per-unit fee floor; live trade fees never go below this value. */\n\t\tmin_fee: U64,\n\t\t/** Minimum raw entry probability allowed for mint admission. */\n\t\tmin_entry_probability: U64,\n\t\t/** Maximum raw entry probability allowed for mint admission. */\n\t\tmax_entry_probability: U64,\n\t\t/** Window before expiry over which trade fees ramp up. */\n\t\texpiry_fee_window_ms: U64,\n\t\t/** Fee multiplier reached at expiry, in FLOAT_SCALING; 1x disables the ramp. */\n\t\texpiry_fee_max_multiplier: U64,\n\t\t/**\n\t\t * Maximum marginal rate of the path-independent inventory-impact curve, in\n\t\t * FLOAT_SCALING. `0` disables both charges and rebates.\n\t\t */\n\t\tinventory_impact_max_rate: U64,\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAM,cAAc;AACpB,MAAa,uBAAuB,IAAI,WAAW;CAClD,MAAM,GAAG,YAAY;CACrB,QAAQ;EAKP,uBAAuB;EAKvB,UAAU;EAEV,SAAS;EAET,uBAAuB;EAEvB,uBAAuB;EAEvB,sBAAsB;EAEtB,2BAA2B;EAK3B,2BAA2B;EAC3B;CACD,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { MoveStruct } from "../utils/index.mjs";
|
|
2
|
+
import { U64 } from "../../bcs/integers.mjs";
|
|
3
|
+
import { Table } from "./deps/sui/table.mjs";
|
|
4
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
5
|
+
|
|
6
|
+
//#region src/contracts/deepbook_predict/strike_payout_tree.ts
|
|
7
|
+
/**************************************************************
|
|
8
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
9
|
+
**************************************************************/
|
|
10
|
+
/**
|
|
11
|
+
* Sparse strike exposure index for payout-liability accounting.
|
|
12
|
+
*
|
|
13
|
+
* The tree keys finite interval boundaries by absolute tick, matching the tick
|
|
14
|
+
* pair packed into the durable order ID. Raw strikes are recovered only at the
|
|
15
|
+
* pricing/settlement boundary, where callers pass the owning market's `tick_size`
|
|
16
|
+
* (`raw_strike = tick * tick_size`); the tree stores no grid geometry.
|
|
17
|
+
*
|
|
18
|
+
* This height-balanced (AVL) tree stores finite interval boundaries touched by
|
|
19
|
+
* positions. Boundary ticks are caller-chosen, so the balancing rule must not read
|
|
20
|
+
* anything the caller supplies: rotations are driven by measured subtree height,
|
|
21
|
+
* which bounds depth at `O(log n)` for _every_ tick set rather than in expectation
|
|
22
|
+
* over a random one. Depth is the cost model that matters — each node is a
|
|
23
|
+
* dynamic-field child, and `apply_at` and `settlement_prefix_payout` touch one per
|
|
24
|
+
* level against a per-transaction cached-object ceiling.
|
|
25
|
+
*
|
|
26
|
+
* It tracks each order's quantity, which is also its settled payout: a winning
|
|
27
|
+
* order pays its full quantity. Live cash backing is the max-point payout plus a
|
|
28
|
+
* buffer over the disjoint-book gap; the tree's max-point term is the floor anchor
|
|
29
|
+
* of that enforced reserve.
|
|
30
|
+
*
|
|
31
|
+
* Shape carries no value for a consistent index: `combine_summaries` is
|
|
32
|
+
* associative over the in-order sequence, so any arrangement of the same
|
|
33
|
+
* boundaries yields identical summaries, settlement prefixes, and linear-walk
|
|
34
|
+
* totals. That holds only while every prefix is non-negative, which a consistent
|
|
35
|
+
* book guarantees. Under a caller/index desync the settlement walk's underflow
|
|
36
|
+
* abort depends on which prefixes a given shape happens to visit, so it is not a
|
|
37
|
+
* desync detector — the per-boundary underflow in `apply_net_delta` is the
|
|
38
|
+
* authority.
|
|
39
|
+
*/
|
|
40
|
+
const $moduleName = "@local-pkg/deepbook_predict::strike_payout_tree";
|
|
41
|
+
const StrikePayoutTree = new MoveStruct({
|
|
42
|
+
name: `${$moduleName}::StrikePayoutTree`,
|
|
43
|
+
fields: {
|
|
44
|
+
root: bcs.option(U64),
|
|
45
|
+
nodes: Table,
|
|
46
|
+
node_count: U64,
|
|
47
|
+
base: U64
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const PayoutSummary = new MoveStruct({
|
|
51
|
+
name: `${$moduleName}::PayoutSummary`,
|
|
52
|
+
fields: {
|
|
53
|
+
start: U64,
|
|
54
|
+
end: U64,
|
|
55
|
+
max_payout_prefix_gain: U64
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const PayoutNode = new MoveStruct({
|
|
59
|
+
name: `${$moduleName}::PayoutNode`,
|
|
60
|
+
fields: {
|
|
61
|
+
height: U64,
|
|
62
|
+
left: bcs.option(U64),
|
|
63
|
+
right: bcs.option(U64),
|
|
64
|
+
local_start: U64,
|
|
65
|
+
local_end: U64,
|
|
66
|
+
summary: PayoutSummary
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
//#endregion
|
|
71
|
+
export { StrikePayoutTree };
|
|
72
|
+
//# sourceMappingURL=strike_payout_tree.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strike_payout_tree.mjs","names":["table.Table"],"sources":["../../../src/contracts/deepbook_predict/strike_payout_tree.ts"],"sourcesContent":["/**************************************************************\n * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *\n **************************************************************/\n\n/**\n * Sparse strike exposure index for payout-liability accounting.\n *\n * The tree keys finite interval boundaries by absolute tick, matching the tick\n * pair packed into the durable order ID. Raw strikes are recovered only at the\n * pricing/settlement boundary, where callers pass the owning market's `tick_size`\n * (`raw_strike = tick * tick_size`); the tree stores no grid geometry.\n *\n * This height-balanced (AVL) tree stores finite interval boundaries touched by\n * positions. Boundary ticks are caller-chosen, so the balancing rule must not read\n * anything the caller supplies: rotations are driven by measured subtree height,\n * which bounds depth at `O(log n)` for _every_ tick set rather than in expectation\n * over a random one. Depth is the cost model that matters — each node is a\n * dynamic-field child, and `apply_at` and `settlement_prefix_payout` touch one per\n * level against a per-transaction cached-object ceiling.\n *\n * It tracks each order's quantity, which is also its settled payout: a winning\n * order pays its full quantity. Live cash backing is the max-point payout plus a\n * buffer over the disjoint-book gap; the tree's max-point term is the floor anchor\n * of that enforced reserve.\n *\n * Shape carries no value for a consistent index: `combine_summaries` is\n * associative over the in-order sequence, so any arrangement of the same\n * boundaries yields identical summaries, settlement prefixes, and linear-walk\n * totals. That holds only while every prefix is non-negative, which a consistent\n * book guarantees. Under a caller/index desync the settlement walk's underflow\n * abort depends on which prefixes a given shape happens to visit, so it is not a\n * desync detector — the per-boundary underflow in `apply_net_delta` is the\n * authority.\n */\n\nimport { MoveStruct } from '../utils/index.js';\nimport { bcs } from '@mysten/sui/bcs';\nimport { U64 } from '../../bcs/integers.js';\nimport * as table from './deps/sui/table.js';\nconst $moduleName = '@local-pkg/deepbook_predict::strike_payout_tree';\nexport const StrikePayoutTree = new MoveStruct({\n\tname: `${$moduleName}::StrikePayoutTree`,\n\tfields: {\n\t\troot: bcs.option(U64),\n\t\tnodes: table.Table,\n\t\tnode_count: U64,\n\t\t/**\n\t\t * Aggregate order quantity over the open-lower prefix, which is also its aggregate\n\t\t * settled payout.\n\t\t */\n\t\tbase: U64,\n\t},\n});\nexport const PayoutSummary = new MoveStruct({\n\tname: `${$moduleName}::PayoutSummary`,\n\tfields: {\n\t\tstart: U64,\n\t\tend: U64,\n\t\t/**\n\t\t * Never exceeds `start`, by construction in `boundary_summary` and\n\t\t * `combine_summaries`. That bound is what makes `combine_summaries` associative at\n\t\t * u64 scale — and therefore what makes the tree's shape irrelevant to every value\n\t\t * it reports. A summary term that could outgrow `start` would break\n\t\t * shape-independence with no test to catch it, and would also abort\n\t\t * `strike_exposure`'s plain `total - max` subtraction.\n\t\t */\n\t\tmax_payout_prefix_gain: U64,\n\t},\n});\nexport const PayoutNode = new MoveStruct({\n\tname: `${$moduleName}::PayoutNode`,\n\tfields: {\n\t\t/**\n\t\t * Longest root-to-leaf path in this subtree, counting this node. A leaf is 1; an\n\t\t * absent child is 0. Maintained by `resummarize` alongside `summary`, and read\n\t\t * only by `rebalance` — never by a caller, and never derived from a tick.\n\t\t */\n\t\theight: U64,\n\t\tleft: bcs.option(U64),\n\t\tright: bcs.option(U64),\n\t\t/**\n\t\t * This node's own boundary terms, stored so the subtree `summary` can be\n\t\t * recomputed without deriving locals by subtracting child summaries.\n\t\t */\n\t\tlocal_start: U64,\n\t\tlocal_end: U64,\n\t\tsummary: PayoutSummary,\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAM,cAAc;AACpB,MAAa,mBAAmB,IAAI,WAAW;CAC9C,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,MAAM,IAAI,OAAO,IAAI;EACrB,OAAOA;EACP,YAAY;EAKZ,MAAM;EACN;CACD,CAAC;AACF,MAAa,gBAAgB,IAAI,WAAW;CAC3C,MAAM,GAAG,YAAY;CACrB,QAAQ;EACP,OAAO;EACP,KAAK;EASL,wBAAwB;EACxB;CACD,CAAC;AACF,MAAa,aAAa,IAAI,WAAW;CACxC,MAAM,GAAG,YAAY;CACrB,QAAQ;EAMP,QAAQ;EACR,MAAM,IAAI,OAAO,IAAI;EACrB,OAAO,IAAI,OAAO,IAAI;EAKtB,aAAa;EACb,WAAW;EACX,SAAS;EACT;CACD,CAAC"}
|