@mysten/deepbook-v3 1.5.9 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/client.d.mts +5 -0
  3. package/dist/client.d.mts.map +1 -1
  4. package/dist/client.mjs +7 -0
  5. package/dist/client.mjs.map +1 -1
  6. package/dist/contracts/deepbook/balance_manager.mjs +413 -0
  7. package/dist/contracts/deepbook/balance_manager.mjs.map +1 -0
  8. package/dist/contracts/deepbook/balances.d.mts +4 -4
  9. package/dist/contracts/deepbook/big_vector.mjs +43 -0
  10. package/dist/contracts/deepbook/big_vector.mjs.map +1 -0
  11. package/dist/contracts/deepbook/book.mjs +29 -0
  12. package/dist/contracts/deepbook/book.mjs.map +1 -0
  13. package/dist/contracts/deepbook/deep_price.d.mts +3 -3
  14. package/dist/contracts/deepbook/deep_price.mjs +1 -1
  15. package/dist/contracts/deepbook/deps/std/type_name.mjs +17 -0
  16. package/dist/contracts/deepbook/deps/std/type_name.mjs.map +1 -0
  17. package/dist/contracts/deepbook/deps/sui/bag.mjs +43 -0
  18. package/dist/contracts/deepbook/deps/sui/bag.mjs.map +1 -0
  19. package/dist/contracts/deepbook/deps/sui/balance.mjs +21 -0
  20. package/dist/contracts/deepbook/deps/sui/balance.mjs.map +1 -0
  21. package/dist/contracts/deepbook/deps/sui/table.mjs +38 -0
  22. package/dist/contracts/deepbook/deps/sui/table.mjs.map +1 -0
  23. package/dist/contracts/deepbook/deps/sui/vec_map.mjs +37 -0
  24. package/dist/contracts/deepbook/deps/sui/vec_map.mjs.map +1 -0
  25. package/dist/contracts/deepbook/deps/sui/versioned.mjs +19 -0
  26. package/dist/contracts/deepbook/deps/sui/versioned.mjs.map +1 -0
  27. package/dist/contracts/deepbook/governance.mjs +49 -0
  28. package/dist/contracts/deepbook/governance.mjs.map +1 -0
  29. package/dist/contracts/deepbook/history.mjs +56 -0
  30. package/dist/contracts/deepbook/history.mjs.map +1 -0
  31. package/dist/contracts/deepbook/order.d.mts +12 -12
  32. package/dist/contracts/deepbook/pool.mjs +1739 -0
  33. package/dist/contracts/deepbook/pool.mjs.map +1 -0
  34. package/dist/contracts/deepbook/registry.mjs +295 -0
  35. package/dist/contracts/deepbook/registry.mjs.map +1 -0
  36. package/dist/contracts/deepbook/state.mjs +89 -0
  37. package/dist/contracts/deepbook/state.mjs.map +1 -0
  38. package/dist/contracts/deepbook/trade_params.mjs +21 -0
  39. package/dist/contracts/deepbook/trade_params.mjs.map +1 -0
  40. package/dist/contracts/deepbook/vault.mjs +42 -0
  41. package/dist/contracts/deepbook/vault.mjs.map +1 -0
  42. package/dist/contracts/deepbook_margin/deps/deepbook/balance_manager.mjs +53 -0
  43. package/dist/contracts/deepbook_margin/deps/deepbook/balance_manager.mjs.map +1 -0
  44. package/dist/contracts/deepbook_margin/deps/std/type_name.mjs +17 -0
  45. package/dist/contracts/deepbook_margin/deps/std/type_name.mjs.map +1 -0
  46. package/dist/contracts/deepbook_margin/deps/sui/bag.mjs +43 -0
  47. package/dist/contracts/deepbook_margin/deps/sui/bag.mjs.map +1 -0
  48. package/dist/contracts/deepbook_margin/deps/sui/balance.mjs +21 -0
  49. package/dist/contracts/deepbook_margin/deps/sui/balance.mjs.map +1 -0
  50. package/dist/contracts/deepbook_margin/deps/sui/table.mjs +38 -0
  51. package/dist/contracts/deepbook_margin/deps/sui/table.mjs.map +1 -0
  52. package/dist/contracts/deepbook_margin/deps/sui/vec_map.mjs +37 -0
  53. package/dist/contracts/deepbook_margin/deps/sui/vec_map.mjs.map +1 -0
  54. package/dist/contracts/deepbook_margin/deps/sui/vec_set.mjs +26 -0
  55. package/dist/contracts/deepbook_margin/deps/sui/vec_set.mjs.map +1 -0
  56. package/dist/contracts/deepbook_margin/deps/sui/versioned.mjs +19 -0
  57. package/dist/contracts/deepbook_margin/deps/sui/versioned.mjs.map +1 -0
  58. package/dist/contracts/deepbook_margin/margin_manager.mjs +989 -0
  59. package/dist/contracts/deepbook_margin/margin_manager.mjs.map +1 -0
  60. package/dist/contracts/deepbook_margin/margin_pool.mjs +550 -0
  61. package/dist/contracts/deepbook_margin/margin_pool.mjs.map +1 -0
  62. package/dist/contracts/deepbook_margin/margin_registry.mjs +786 -0
  63. package/dist/contracts/deepbook_margin/margin_registry.mjs.map +1 -0
  64. package/dist/contracts/deepbook_margin/margin_state.mjs +30 -0
  65. package/dist/contracts/deepbook_margin/margin_state.mjs.map +1 -0
  66. package/dist/contracts/deepbook_margin/oracle.mjs +82 -0
  67. package/dist/contracts/deepbook_margin/oracle.mjs.map +1 -0
  68. package/dist/contracts/deepbook_margin/pool_proxy.mjs +644 -0
  69. package/dist/contracts/deepbook_margin/pool_proxy.mjs.map +1 -0
  70. package/dist/contracts/deepbook_margin/position_manager.mjs +32 -0
  71. package/dist/contracts/deepbook_margin/position_manager.mjs.map +1 -0
  72. package/dist/contracts/deepbook_margin/protocol_config.mjs +122 -0
  73. package/dist/contracts/deepbook_margin/protocol_config.mjs.map +1 -0
  74. package/dist/contracts/deepbook_margin/protocol_fees.mjs +58 -0
  75. package/dist/contracts/deepbook_margin/protocol_fees.mjs.map +1 -0
  76. package/dist/contracts/deepbook_margin/rate_limiter.mjs +26 -0
  77. package/dist/contracts/deepbook_margin/rate_limiter.mjs.map +1 -0
  78. package/dist/contracts/deepbook_margin/tpsl.mjs +171 -0
  79. package/dist/contracts/deepbook_margin/tpsl.mjs.map +1 -0
  80. package/dist/contracts/margin_liquidation/deps/sui/bag.mjs +43 -0
  81. package/dist/contracts/margin_liquidation/deps/sui/bag.mjs.map +1 -0
  82. package/dist/contracts/margin_liquidation/liquidation_vault.mjs +179 -0
  83. package/dist/contracts/margin_liquidation/liquidation_vault.mjs.map +1 -0
  84. package/dist/contracts/utils/index.d.mts +1 -1
  85. package/dist/contracts/utils/index.mjs +92 -3
  86. package/dist/contracts/utils/index.mjs.map +1 -1
  87. package/dist/queries/registryQueries.mjs +13 -0
  88. package/dist/queries/registryQueries.mjs.map +1 -1
  89. package/dist/transactions/balanceManager.d.mts.map +1 -1
  90. package/dist/transactions/balanceManager.mjs +119 -100
  91. package/dist/transactions/balanceManager.mjs.map +1 -1
  92. package/dist/transactions/deepbook.d.mts.map +1 -1
  93. package/dist/transactions/deepbook.mjs +464 -439
  94. package/dist/transactions/deepbook.mjs.map +1 -1
  95. package/dist/transactions/deepbookAdmin.d.mts.map +1 -1
  96. package/dist/transactions/deepbookAdmin.mjs +151 -135
  97. package/dist/transactions/deepbookAdmin.mjs.map +1 -1
  98. package/dist/transactions/flashLoans.d.mts.map +1 -1
  99. package/dist/transactions/flashLoans.mjs +29 -22
  100. package/dist/transactions/flashLoans.mjs.map +1 -1
  101. package/dist/transactions/governance.d.mts.map +1 -1
  102. package/dist/transactions/governance.mjs +34 -33
  103. package/dist/transactions/governance.mjs.map +1 -1
  104. package/dist/transactions/marginAdmin.d.mts +10 -0
  105. package/dist/transactions/marginAdmin.d.mts.map +1 -1
  106. package/dist/transactions/marginAdmin.mjs +186 -169
  107. package/dist/transactions/marginAdmin.mjs.map +1 -1
  108. package/dist/transactions/marginLiquidations.d.mts +3 -3
  109. package/dist/transactions/marginLiquidations.d.mts.map +1 -1
  110. package/dist/transactions/marginLiquidations.mjs +53 -54
  111. package/dist/transactions/marginLiquidations.mjs.map +1 -1
  112. package/dist/transactions/marginMaintainer.d.mts.map +1 -1
  113. package/dist/transactions/marginMaintainer.mjs +83 -83
  114. package/dist/transactions/marginMaintainer.mjs.map +1 -1
  115. package/dist/transactions/marginManager.d.mts.map +1 -1
  116. package/dist/transactions/marginManager.mjs +330 -311
  117. package/dist/transactions/marginManager.mjs.map +1 -1
  118. package/dist/transactions/marginPool.d.mts.map +1 -1
  119. package/dist/transactions/marginPool.mjs +93 -89
  120. package/dist/transactions/marginPool.mjs.map +1 -1
  121. package/dist/transactions/marginRegistry.d.mts +22 -15
  122. package/dist/transactions/marginRegistry.d.mts.map +1 -1
  123. package/dist/transactions/marginRegistry.mjs +101 -68
  124. package/dist/transactions/marginRegistry.mjs.map +1 -1
  125. package/dist/transactions/marginTPSL.d.mts +27 -9
  126. package/dist/transactions/marginTPSL.d.mts.map +1 -1
  127. package/dist/transactions/marginTPSL.mjs +108 -82
  128. package/dist/transactions/marginTPSL.mjs.map +1 -1
  129. package/dist/transactions/poolProxy.d.mts +32 -0
  130. package/dist/transactions/poolProxy.d.mts.map +1 -1
  131. package/dist/transactions/poolProxy.mjs +269 -189
  132. package/dist/transactions/poolProxy.mjs.map +1 -1
  133. package/dist/utils/constants.mjs +4 -4
  134. package/dist/utils/constants.mjs.map +1 -1
  135. package/package.json +2 -2
  136. package/src/client.ts +8 -0
  137. package/src/contracts/deepbook/balance_manager.ts +46 -5
  138. package/src/contracts/deepbook/constants.ts +13 -0
  139. package/src/contracts/deepbook/pool.ts +133 -0
  140. package/src/contracts/deepbook/registry.ts +136 -1
  141. package/src/contracts/deepbook_margin/deps/deepbook/balance_manager.ts +49 -0
  142. package/src/contracts/deepbook_margin/deps/std/type_name.ts +24 -0
  143. package/src/contracts/deepbook_margin/deps/sui/bag.ts +41 -0
  144. package/src/contracts/deepbook_margin/deps/sui/balance.ts +19 -0
  145. package/src/contracts/deepbook_margin/deps/sui/table.ts +36 -0
  146. package/src/contracts/deepbook_margin/deps/sui/vec_map.ts +33 -0
  147. package/src/contracts/deepbook_margin/deps/sui/vec_set.ts +22 -0
  148. package/src/contracts/deepbook_margin/deps/sui/versioned.ts +13 -0
  149. package/src/contracts/deepbook_margin/margin_constants.ts +329 -0
  150. package/src/contracts/deepbook_margin/margin_manager.ts +1772 -0
  151. package/src/contracts/deepbook_margin/margin_pool.ts +1129 -0
  152. package/src/contracts/deepbook_margin/margin_registry.ts +1207 -0
  153. package/src/contracts/deepbook_margin/margin_state.ts +26 -0
  154. package/src/contracts/deepbook_margin/oracle.ts +99 -0
  155. package/src/contracts/deepbook_margin/pool_proxy.ts +1298 -0
  156. package/src/contracts/deepbook_margin/position_manager.ts +28 -0
  157. package/src/contracts/deepbook_margin/protocol_config.ts +163 -0
  158. package/src/contracts/deepbook_margin/protocol_fees.ts +153 -0
  159. package/src/contracts/deepbook_margin/rate_limiter.ts +80 -0
  160. package/src/contracts/deepbook_margin/tpsl.ts +559 -0
  161. package/src/contracts/margin_liquidation/deps/sui/bag.ts +41 -0
  162. package/src/contracts/margin_liquidation/liquidation_vault.ts +401 -0
  163. package/src/queries/registryQueries.ts +15 -0
  164. package/src/transactions/balanceManager.ts +140 -90
  165. package/src/transactions/deepbook.ts +586 -494
  166. package/src/transactions/deepbookAdmin.ts +154 -146
  167. package/src/transactions/flashLoans.ts +29 -20
  168. package/src/transactions/governance.ts +50 -37
  169. package/src/transactions/marginAdmin.ts +247 -188
  170. package/src/transactions/marginLiquidations.ts +70 -55
  171. package/src/transactions/marginMaintainer.ts +106 -88
  172. package/src/transactions/marginManager.ts +414 -348
  173. package/src/transactions/marginPool.ts +140 -103
  174. package/src/transactions/marginRegistry.ts +103 -70
  175. package/src/transactions/marginTPSL.ts +151 -87
  176. package/src/transactions/poolProxy.ts +384 -205
  177. package/src/utils/constants.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"marginMaintainer.mjs","names":["#config","#marginMaintainerCap"],"sources":["../../src/transactions/marginMaintainer.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tTransaction,\n\tTransactionArgument,\n\tTransactionObjectArgument,\n} from '@mysten/sui/transactions';\n\nimport type { DeepBookConfig } from '../utils/config.js';\nimport type { MarginPoolConfigParams, InterestConfigParams } from '../types/index.js';\nimport { FLOAT_SCALAR } from '../utils/config.js';\nimport { convertQuantity, convertRate } from '../utils/conversion.js';\n\n/**\n * DeepBookMaintainerContract class for managing maintainer actions.\n */\nexport class MarginMaintainerContract {\n\t#config: DeepBookConfig;\n\n\t/**\n\t * @param {DeepBookConfig} config Configuration for MarginMaintainerContract\n\t */\n\tconstructor(config: DeepBookConfig) {\n\t\tthis.#config = config;\n\t}\n\n\t/**\n\t * @returns The admin capability required for admin operations\n\t * @throws Error if the admin capability is not set\n\t */\n\t#marginMaintainerCap() {\n\t\tconst marginMaintainerCap = this.#config.marginMaintainerCap;\n\t\tif (!marginMaintainerCap) {\n\t\t\tthrow new Error('MARGIN_ADMIN_CAP environment variable not set');\n\t\t}\n\t\treturn marginMaintainerCap;\n\t}\n\n\t/**\n\t * @description Create a new margin pool\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {TransactionArgument} poolConfig The configuration for the pool\n\t * @returns A function that takes a Transaction object\n\t */\n\tcreateMarginPool = (coinKey: string, poolConfig: TransactionArgument) => (tx: Transaction) => {\n\t\tconst coin = this.#config.getCoin(coinKey);\n\t\ttx.moveCall({\n\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::create_margin_pool`,\n\t\t\targuments: [\n\t\t\t\ttx.object(this.#config.MARGIN_REGISTRY_ID),\n\t\t\t\tpoolConfig,\n\t\t\t\ttx.object(this.#marginMaintainerCap()),\n\t\t\t\ttx.object.clock(),\n\t\t\t],\n\t\t\ttypeArguments: [coin.type],\n\t\t});\n\t};\n\n\t/**\n\t * @description Create a new protocol config\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool (with optional rate limit)\n\t * @param {InterestConfigParams} interestConfig The configuration for the interest\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewProtocolConfig =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolConfig: MarginPoolConfigParams,\n\t\t\tinterestConfig: InterestConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst hasRateLimit =\n\t\t\t\tmarginPoolConfig.rateLimitCapacity !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitRefillRatePerMs !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitEnabled !== undefined;\n\t\t\tconst marginPoolConfigObject = hasRateLimit\n\t\t\t\t? this.newMarginPoolConfigWithRateLimit(coinKey, {\n\t\t\t\t\t\t...marginPoolConfig,\n\t\t\t\t\t\trateLimitCapacity: marginPoolConfig.rateLimitCapacity!,\n\t\t\t\t\t\trateLimitRefillRatePerMs: marginPoolConfig.rateLimitRefillRatePerMs!,\n\t\t\t\t\t\trateLimitEnabled: marginPoolConfig.rateLimitEnabled!,\n\t\t\t\t\t})(tx)\n\t\t\t\t: this.newMarginPoolConfig(coinKey, marginPoolConfig)(tx);\n\t\t\tconst interestConfigObject = this.newInterestConfig(interestConfig)(tx);\n\t\t\treturn tx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::protocol_config::new_protocol_config`,\n\t\t\t\targuments: [marginPoolConfigObject, interestConfigObject],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Create a new margin pool config\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewMarginPoolConfig =\n\t\t(coinKey: string, marginPoolConfig: MarginPoolConfigParams) => (tx: Transaction) => {\n\t\t\tconst coin = this.#config.getCoin(coinKey);\n\t\t\tconst { supplyCap, maxUtilizationRate, protocolSpread, minBorrow } = marginPoolConfig;\n\t\t\treturn tx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::protocol_config::new_margin_pool_config`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.pure.u64(convertQuantity(supplyCap, coin.scalar)),\n\t\t\t\t\ttx.pure.u64(convertRate(maxUtilizationRate, FLOAT_SCALAR)),\n\t\t\t\t\ttx.pure.u64(convertRate(protocolSpread, FLOAT_SCALAR)),\n\t\t\t\t\ttx.pure.u64(convertQuantity(minBorrow, coin.scalar)),\n\t\t\t\t],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Create a new margin pool config with rate limit\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool with rate limit\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewMarginPoolConfigWithRateLimit =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolConfig: Required<\n\t\t\t\tPick<\n\t\t\t\t\tMarginPoolConfigParams,\n\t\t\t\t\t'rateLimitCapacity' | 'rateLimitRefillRatePerMs' | 'rateLimitEnabled'\n\t\t\t\t>\n\t\t\t> &\n\t\t\t\tMarginPoolConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst coin = this.#config.getCoin(coinKey);\n\t\t\tconst {\n\t\t\t\tsupplyCap,\n\t\t\t\tmaxUtilizationRate,\n\t\t\t\tprotocolSpread,\n\t\t\t\tminBorrow,\n\t\t\t\trateLimitCapacity,\n\t\t\t\trateLimitRefillRatePerMs,\n\t\t\t\trateLimitEnabled,\n\t\t\t} = marginPoolConfig;\n\t\t\treturn tx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::protocol_config::new_margin_pool_config_with_rate_limit`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.pure.u64(convertQuantity(supplyCap, coin.scalar)),\n\t\t\t\t\ttx.pure.u64(convertRate(maxUtilizationRate, FLOAT_SCALAR)),\n\t\t\t\t\ttx.pure.u64(convertRate(protocolSpread, FLOAT_SCALAR)),\n\t\t\t\t\ttx.pure.u64(convertQuantity(minBorrow, coin.scalar)),\n\t\t\t\t\ttx.pure.u64(convertQuantity(rateLimitCapacity, coin.scalar)),\n\t\t\t\t\ttx.pure.u64(convertQuantity(rateLimitRefillRatePerMs, coin.scalar)),\n\t\t\t\t\ttx.pure.bool(rateLimitEnabled),\n\t\t\t\t],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Create a new interest config\n\t * @param {InterestConfigParams} interestConfig The configuration for the interest\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewInterestConfig = (interestConfig: InterestConfigParams) => (tx: Transaction) => {\n\t\tconst { baseRate, baseSlope, optimalUtilization, excessSlope } = interestConfig;\n\t\treturn tx.moveCall({\n\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::protocol_config::new_interest_config`,\n\t\t\targuments: [\n\t\t\t\ttx.pure.u64(convertRate(baseRate, FLOAT_SCALAR)),\n\t\t\t\ttx.pure.u64(convertRate(baseSlope, FLOAT_SCALAR)),\n\t\t\t\ttx.pure.u64(convertRate(optimalUtilization, FLOAT_SCALAR)),\n\t\t\t\ttx.pure.u64(convertRate(excessSlope, FLOAT_SCALAR)),\n\t\t\t],\n\t\t});\n\t};\n\n\t/**\n\t * @description Enable a deepbook pool for loan\n\t * @param {string} deepbookPoolKey The key to identify the deepbook pool\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @returns A function that takes a Transaction object\n\t */\n\tenableDeepbookPoolForLoan =\n\t\t(deepbookPoolKey: string, coinKey: string, marginPoolCap: TransactionObjectArgument) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst deepbookPool = this.#config.getPool(deepbookPoolKey);\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::enable_deepbook_pool_for_loan`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(marginPool.address),\n\t\t\t\t\ttx.object(this.#config.MARGIN_REGISTRY_ID),\n\t\t\t\t\ttx.pure.id(deepbookPool.address),\n\t\t\t\t\ttx.object(marginPoolCap),\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Disable a deepbook pool for loan\n\t * @param {string} deepbookPoolKey The key to identify the deepbook pool\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @returns A function that takes a Transaction object\n\t */\n\tdisableDeepbookPoolForLoan =\n\t\t(deepbookPoolKey: string, coinKey: string, marginPoolCap: TransactionObjectArgument) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst deepbookPool = this.#config.getPool(deepbookPoolKey);\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::disable_deepbook_pool_for_loan`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(marginPool.address),\n\t\t\t\t\ttx.object(this.#config.MARGIN_REGISTRY_ID),\n\t\t\t\t\ttx.pure.id(deepbookPool.address),\n\t\t\t\t\ttx.object(marginPoolCap),\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Update the interest params\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @param {InterestConfigParams} interestConfig The configuration for the interest\n\t * @returns A function that takes a Transaction object\n\t */\n\tupdateInterestParams =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolCap: TransactionObjectArgument,\n\t\t\tinterestConfig: InterestConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\tconst interestConfigObject = this.newInterestConfig(interestConfig)(tx);\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::update_interest_params`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(marginPool.address),\n\t\t\t\t\ttx.object(this.#config.MARGIN_REGISTRY_ID),\n\t\t\t\t\tinterestConfigObject,\n\t\t\t\t\ttx.object(marginPoolCap),\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Update the margin pool config\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool (with optional rate limit)\n\t * @returns A function that takes a Transaction object\n\t */\n\tupdateMarginPoolConfig =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolCap: TransactionObjectArgument,\n\t\t\tmarginPoolConfig: MarginPoolConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\tconst hasRateLimit =\n\t\t\t\tmarginPoolConfig.rateLimitCapacity !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitRefillRatePerMs !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitEnabled !== undefined;\n\t\t\tconst marginPoolConfigObject = hasRateLimit\n\t\t\t\t? this.newMarginPoolConfigWithRateLimit(coinKey, {\n\t\t\t\t\t\t...marginPoolConfig,\n\t\t\t\t\t\trateLimitCapacity: marginPoolConfig.rateLimitCapacity!,\n\t\t\t\t\t\trateLimitRefillRatePerMs: marginPoolConfig.rateLimitRefillRatePerMs!,\n\t\t\t\t\t\trateLimitEnabled: marginPoolConfig.rateLimitEnabled!,\n\t\t\t\t\t})(tx)\n\t\t\t\t: this.newMarginPoolConfig(coinKey, marginPoolConfig)(tx);\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::update_margin_pool_config`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(marginPool.address),\n\t\t\t\t\ttx.object(this.#config.MARGIN_REGISTRY_ID),\n\t\t\t\t\tmarginPoolConfigObject,\n\t\t\t\t\ttx.object(marginPoolCap),\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t});\n\t\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"marginMaintainer.mjs","names":["#config","marginPoolMoveCalls.createMarginPool","#marginMaintainerCap","protocolConfigMoveCalls.newProtocolConfig","protocolConfigMoveCalls.newMarginPoolConfig","protocolConfigMoveCalls.newMarginPoolConfigWithRateLimit","protocolConfigMoveCalls.newInterestConfig","marginPoolMoveCalls.enableDeepbookPoolForLoan","marginPoolMoveCalls.disableDeepbookPoolForLoan","marginPoolMoveCalls.updateInterestParams","marginPoolMoveCalls.updateMarginPoolConfig"],"sources":["../../src/transactions/marginMaintainer.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tTransaction,\n\tTransactionArgument,\n\tTransactionObjectArgument,\n} from '@mysten/sui/transactions';\n\nimport type { DeepBookConfig } from '../utils/config.js';\nimport type { MarginPoolConfigParams, InterestConfigParams } from '../types/index.js';\nimport { FLOAT_SCALAR } from '../utils/config.js';\nimport { convertQuantity, convertRate } from '../utils/conversion.js';\nimport * as marginPoolMoveCalls from '../contracts/deepbook_margin/margin_pool.js';\nimport * as protocolConfigMoveCalls from '../contracts/deepbook_margin/protocol_config.js';\n\n/**\n * DeepBookMaintainerContract class for managing maintainer actions.\n */\nexport class MarginMaintainerContract {\n\t#config: DeepBookConfig;\n\n\t/**\n\t * @param {DeepBookConfig} config Configuration for MarginMaintainerContract\n\t */\n\tconstructor(config: DeepBookConfig) {\n\t\tthis.#config = config;\n\t}\n\n\t/**\n\t * @returns The admin capability required for admin operations\n\t * @throws Error if the admin capability is not set\n\t */\n\t#marginMaintainerCap() {\n\t\tconst marginMaintainerCap = this.#config.marginMaintainerCap;\n\t\tif (!marginMaintainerCap) {\n\t\t\tthrow new Error('MARGIN_ADMIN_CAP environment variable not set');\n\t\t}\n\t\treturn marginMaintainerCap;\n\t}\n\n\t/**\n\t * @description Create a new margin pool\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {TransactionArgument} poolConfig The configuration for the pool\n\t * @returns A function that takes a Transaction object\n\t */\n\tcreateMarginPool = (coinKey: string, poolConfig: TransactionArgument) => (tx: Transaction) => {\n\t\tconst coin = this.#config.getCoin(coinKey);\n\t\ttx.add(\n\t\t\tmarginPoolMoveCalls.createMarginPool({\n\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\targuments: {\n\t\t\t\t\tregistry: this.#config.MARGIN_REGISTRY_ID,\n\t\t\t\t\tconfig: poolConfig,\n\t\t\t\t\tmaintainerCap: this.#marginMaintainerCap(),\n\t\t\t\t},\n\t\t\t\ttypeArguments: [coin.type],\n\t\t\t}),\n\t\t);\n\t};\n\n\t/**\n\t * @description Create a new protocol config\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool (with optional rate limit)\n\t * @param {InterestConfigParams} interestConfig The configuration for the interest\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewProtocolConfig =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolConfig: MarginPoolConfigParams,\n\t\t\tinterestConfig: InterestConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst hasRateLimit =\n\t\t\t\tmarginPoolConfig.rateLimitCapacity !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitRefillRatePerMs !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitEnabled !== undefined;\n\t\t\tconst marginPoolConfigObject = hasRateLimit\n\t\t\t\t? this.newMarginPoolConfigWithRateLimit(coinKey, {\n\t\t\t\t\t\t...marginPoolConfig,\n\t\t\t\t\t\trateLimitCapacity: marginPoolConfig.rateLimitCapacity!,\n\t\t\t\t\t\trateLimitRefillRatePerMs: marginPoolConfig.rateLimitRefillRatePerMs!,\n\t\t\t\t\t\trateLimitEnabled: marginPoolConfig.rateLimitEnabled!,\n\t\t\t\t\t})(tx)\n\t\t\t\t: this.newMarginPoolConfig(coinKey, marginPoolConfig)(tx);\n\t\t\tconst interestConfigObject = this.newInterestConfig(interestConfig)(tx);\n\t\t\treturn tx.add(\n\t\t\t\tprotocolConfigMoveCalls.newProtocolConfig({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tmarginPoolConfig: marginPoolConfigObject,\n\t\t\t\t\t\tinterestConfig: interestConfigObject,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Create a new margin pool config\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewMarginPoolConfig =\n\t\t(coinKey: string, marginPoolConfig: MarginPoolConfigParams) => (tx: Transaction) => {\n\t\t\tconst coin = this.#config.getCoin(coinKey);\n\t\t\tconst { supplyCap, maxUtilizationRate, protocolSpread, minBorrow } = marginPoolConfig;\n\t\t\treturn tx.add(\n\t\t\t\tprotocolConfigMoveCalls.newMarginPoolConfig({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tsupplyCap: convertQuantity(supplyCap, coin.scalar),\n\t\t\t\t\t\tmaxUtilizationRate: convertRate(maxUtilizationRate, FLOAT_SCALAR),\n\t\t\t\t\t\tprotocolSpread: convertRate(protocolSpread, FLOAT_SCALAR),\n\t\t\t\t\t\tminBorrow: convertQuantity(minBorrow, coin.scalar),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Create a new margin pool config with rate limit\n\t * @param {string} coinKey The key to identify the coin\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool with rate limit\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewMarginPoolConfigWithRateLimit =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolConfig: Required<\n\t\t\t\tPick<\n\t\t\t\t\tMarginPoolConfigParams,\n\t\t\t\t\t'rateLimitCapacity' | 'rateLimitRefillRatePerMs' | 'rateLimitEnabled'\n\t\t\t\t>\n\t\t\t> &\n\t\t\t\tMarginPoolConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst coin = this.#config.getCoin(coinKey);\n\t\t\tconst {\n\t\t\t\tsupplyCap,\n\t\t\t\tmaxUtilizationRate,\n\t\t\t\tprotocolSpread,\n\t\t\t\tminBorrow,\n\t\t\t\trateLimitCapacity,\n\t\t\t\trateLimitRefillRatePerMs,\n\t\t\t\trateLimitEnabled,\n\t\t\t} = marginPoolConfig;\n\t\t\treturn tx.add(\n\t\t\t\tprotocolConfigMoveCalls.newMarginPoolConfigWithRateLimit({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tsupplyCap: convertQuantity(supplyCap, coin.scalar),\n\t\t\t\t\t\tmaxUtilizationRate: convertRate(maxUtilizationRate, FLOAT_SCALAR),\n\t\t\t\t\t\tprotocolSpread: convertRate(protocolSpread, FLOAT_SCALAR),\n\t\t\t\t\t\tminBorrow: convertQuantity(minBorrow, coin.scalar),\n\t\t\t\t\t\trateLimitCapacity: convertQuantity(rateLimitCapacity, coin.scalar),\n\t\t\t\t\t\trateLimitRefillRatePerMs: convertQuantity(rateLimitRefillRatePerMs, coin.scalar),\n\t\t\t\t\t\trateLimitEnabled,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Create a new interest config\n\t * @param {InterestConfigParams} interestConfig The configuration for the interest\n\t * @returns A function that takes a Transaction object\n\t */\n\tnewInterestConfig = (interestConfig: InterestConfigParams) => (tx: Transaction) => {\n\t\tconst { baseRate, baseSlope, optimalUtilization, excessSlope } = interestConfig;\n\t\treturn tx.add(\n\t\t\tprotocolConfigMoveCalls.newInterestConfig({\n\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\targuments: {\n\t\t\t\t\tbaseRate: convertRate(baseRate, FLOAT_SCALAR),\n\t\t\t\t\tbaseSlope: convertRate(baseSlope, FLOAT_SCALAR),\n\t\t\t\t\toptimalUtilization: convertRate(optimalUtilization, FLOAT_SCALAR),\n\t\t\t\t\texcessSlope: convertRate(excessSlope, FLOAT_SCALAR),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t};\n\n\t/**\n\t * @description Enable a deepbook pool for loan\n\t * @param {string} deepbookPoolKey The key to identify the deepbook pool\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @returns A function that takes a Transaction object\n\t */\n\tenableDeepbookPoolForLoan =\n\t\t(deepbookPoolKey: string, coinKey: string, marginPoolCap: TransactionObjectArgument) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst deepbookPool = this.#config.getPool(deepbookPoolKey);\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\ttx.add(\n\t\t\t\tmarginPoolMoveCalls.enableDeepbookPoolForLoan({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: marginPool.address,\n\t\t\t\t\t\tregistry: this.#config.MARGIN_REGISTRY_ID,\n\t\t\t\t\t\tdeepbookPoolId: deepbookPool.address,\n\t\t\t\t\t\tmarginPoolCap,\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Disable a deepbook pool for loan\n\t * @param {string} deepbookPoolKey The key to identify the deepbook pool\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @returns A function that takes a Transaction object\n\t */\n\tdisableDeepbookPoolForLoan =\n\t\t(deepbookPoolKey: string, coinKey: string, marginPoolCap: TransactionObjectArgument) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst deepbookPool = this.#config.getPool(deepbookPoolKey);\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\ttx.add(\n\t\t\t\tmarginPoolMoveCalls.disableDeepbookPoolForLoan({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: marginPool.address,\n\t\t\t\t\t\tregistry: this.#config.MARGIN_REGISTRY_ID,\n\t\t\t\t\t\tdeepbookPoolId: deepbookPool.address,\n\t\t\t\t\t\tmarginPoolCap,\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Update the interest params\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @param {InterestConfigParams} interestConfig The configuration for the interest\n\t * @returns A function that takes a Transaction object\n\t */\n\tupdateInterestParams =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolCap: TransactionObjectArgument,\n\t\t\tinterestConfig: InterestConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\tconst interestConfigObject = this.newInterestConfig(interestConfig)(tx);\n\t\t\ttx.add(\n\t\t\t\tmarginPoolMoveCalls.updateInterestParams({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: marginPool.address,\n\t\t\t\t\t\tregistry: this.#config.MARGIN_REGISTRY_ID,\n\t\t\t\t\t\tinterestConfig: interestConfigObject,\n\t\t\t\t\t\tmarginPoolCap,\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Update the margin pool config\n\t * @param {string} coinKey The key to identify the margin pool\n\t * @param {TransactionObjectArgument} marginPoolCap The margin pool cap\n\t * @param {MarginPoolConfigParams} marginPoolConfig The configuration for the margin pool (with optional rate limit)\n\t * @returns A function that takes a Transaction object\n\t */\n\tupdateMarginPoolConfig =\n\t\t(\n\t\t\tcoinKey: string,\n\t\t\tmarginPoolCap: TransactionObjectArgument,\n\t\t\tmarginPoolConfig: MarginPoolConfigParams,\n\t\t) =>\n\t\t(tx: Transaction) => {\n\t\t\tconst marginPool = this.#config.getMarginPool(coinKey);\n\t\t\tconst hasRateLimit =\n\t\t\t\tmarginPoolConfig.rateLimitCapacity !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitRefillRatePerMs !== undefined &&\n\t\t\t\tmarginPoolConfig.rateLimitEnabled !== undefined;\n\t\t\tconst marginPoolConfigObject = hasRateLimit\n\t\t\t\t? this.newMarginPoolConfigWithRateLimit(coinKey, {\n\t\t\t\t\t\t...marginPoolConfig,\n\t\t\t\t\t\trateLimitCapacity: marginPoolConfig.rateLimitCapacity!,\n\t\t\t\t\t\trateLimitRefillRatePerMs: marginPoolConfig.rateLimitRefillRatePerMs!,\n\t\t\t\t\t\trateLimitEnabled: marginPoolConfig.rateLimitEnabled!,\n\t\t\t\t\t})(tx)\n\t\t\t\t: this.newMarginPoolConfig(coinKey, marginPoolConfig)(tx);\n\t\t\ttx.add(\n\t\t\t\tmarginPoolMoveCalls.updateMarginPoolConfig({\n\t\t\t\t\tpackage: this.#config.MARGIN_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: marginPool.address,\n\t\t\t\t\t\tregistry: this.#config.MARGIN_REGISTRY_ID,\n\t\t\t\t\t\tmarginPoolConfig: marginPoolConfigObject,\n\t\t\t\t\t\tmarginPoolCap,\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [marginPool.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"marginManager.d.mts","names":[],"sources":["../../src/transactions/marginManager.ts"],"mappings":"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"}
1
+ {"version":3,"file":"marginManager.d.mts","names":[],"sources":["../../src/transactions/marginManager.ts"],"mappings":"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"}