@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,5 +1,6 @@
1
1
  import { convertQuantity, convertRate } from "../utils/conversion.mjs";
2
2
  import { DEEP_SCALAR, FLOAT_SCALAR } from "../utils/config.mjs";
3
+ import { stake, submitProposal, unstake, vote } from "../contracts/deepbook/pool.mjs";
3
4
 
4
5
  //#region src/transactions/governance.ts
5
6
  /**
@@ -18,16 +19,16 @@ var GovernanceContract = class {
18
19
  const baseCoin = this.#config.getCoin(pool.baseCoin);
19
20
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
20
21
  const stakeInput = convertQuantity(stakeAmount, DEEP_SCALAR);
21
- tx.moveCall({
22
- target: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::stake`,
23
- arguments: [
24
- tx.object(pool.address),
25
- tx.object(balanceManager.address),
22
+ tx.add(stake({
23
+ package: this.#config.DEEPBOOK_PACKAGE_ID,
24
+ arguments: {
25
+ self: pool.address,
26
+ balanceManager: balanceManager.address,
26
27
  tradeProof,
27
- tx.pure.u64(stakeInput)
28
- ],
28
+ amount: stakeInput
29
+ },
29
30
  typeArguments: [baseCoin.type, quoteCoin.type]
30
- });
31
+ }));
31
32
  };
32
33
  this.unstake = (poolKey, balanceManagerKey) => (tx) => {
33
34
  const pool = this.#config.getPool(poolKey);
@@ -35,15 +36,15 @@ var GovernanceContract = class {
35
36
  const tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));
36
37
  const baseCoin = this.#config.getCoin(pool.baseCoin);
37
38
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
38
- tx.moveCall({
39
- target: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::unstake`,
40
- arguments: [
41
- tx.object(pool.address),
42
- tx.object(balanceManager.address),
39
+ tx.add(unstake({
40
+ package: this.#config.DEEPBOOK_PACKAGE_ID,
41
+ arguments: {
42
+ self: pool.address,
43
+ balanceManager: balanceManager.address,
43
44
  tradeProof
44
- ],
45
+ },
45
46
  typeArguments: [baseCoin.type, quoteCoin.type]
46
- });
47
+ }));
47
48
  };
48
49
  this.submitProposal = (params) => (tx) => {
49
50
  const { poolKey, balanceManagerKey, takerFee, makerFee, stakeRequired } = params;
@@ -52,18 +53,18 @@ var GovernanceContract = class {
52
53
  const tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));
53
54
  const baseCoin = this.#config.getCoin(pool.baseCoin);
54
55
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
55
- tx.moveCall({
56
- target: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::submit_proposal`,
57
- arguments: [
58
- tx.object(pool.address),
59
- tx.object(balanceManager.address),
56
+ tx.add(submitProposal({
57
+ package: this.#config.DEEPBOOK_PACKAGE_ID,
58
+ arguments: {
59
+ self: pool.address,
60
+ balanceManager: balanceManager.address,
60
61
  tradeProof,
61
- tx.pure.u64(convertRate(takerFee, FLOAT_SCALAR)),
62
- tx.pure.u64(convertRate(makerFee, FLOAT_SCALAR)),
63
- tx.pure.u64(convertQuantity(stakeRequired, DEEP_SCALAR))
64
- ],
62
+ takerFee: convertRate(takerFee, FLOAT_SCALAR),
63
+ makerFee: convertRate(makerFee, FLOAT_SCALAR),
64
+ stakeRequired: convertQuantity(stakeRequired, DEEP_SCALAR)
65
+ },
65
66
  typeArguments: [baseCoin.type, quoteCoin.type]
66
- });
67
+ }));
67
68
  };
68
69
  this.vote = (poolKey, balanceManagerKey, proposal_id) => (tx) => {
69
70
  const pool = this.#config.getPool(poolKey);
@@ -71,16 +72,16 @@ var GovernanceContract = class {
71
72
  const tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));
72
73
  const baseCoin = this.#config.getCoin(pool.baseCoin);
73
74
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
74
- tx.moveCall({
75
- target: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::vote`,
76
- arguments: [
77
- tx.object(pool.address),
78
- tx.object(balanceManager.address),
75
+ tx.add(vote({
76
+ package: this.#config.DEEPBOOK_PACKAGE_ID,
77
+ arguments: {
78
+ self: pool.address,
79
+ balanceManager: balanceManager.address,
79
80
  tradeProof,
80
- tx.pure.id(proposal_id)
81
- ],
81
+ proposalId: proposal_id
82
+ },
82
83
  typeArguments: [baseCoin.type, quoteCoin.type]
83
- });
84
+ }));
84
85
  };
85
86
  this.#config = config;
86
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"governance.mjs","names":["#config"],"sources":["../../src/transactions/governance.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport type { Transaction } from '@mysten/sui/transactions';\n\nimport type { ProposalParams } from '../types/index.js';\nimport type { DeepBookConfig } from '../utils/config.js';\nimport { DEEP_SCALAR, FLOAT_SCALAR } from '../utils/config.js';\nimport { convertQuantity, convertRate } from '../utils/conversion.js';\n\n/**\n * GovernanceContract class for managing governance operations in DeepBook.\n */\nexport class GovernanceContract {\n\t#config: DeepBookConfig;\n\n\t/**\n\t * @param {DeepBookConfig} config Configuration for GovernanceContract\n\t */\n\tconstructor(config: DeepBookConfig) {\n\t\tthis.#config = config;\n\t}\n\n\t/**\n\t * @description Stake a specified amount in the pool\n\t * @param {string} poolKey The key to identify the pool\n\t * @param {string} balanceManagerKey The key to identify the BalanceManager\n\t * @param {number} stakeAmount The amount to stake\n\t * @returns A function that takes a Transaction object\n\t */\n\tstake =\n\t\t(poolKey: string, balanceManagerKey: string, stakeAmount: number) => (tx: Transaction) => {\n\t\t\tconst pool = this.#config.getPool(poolKey);\n\t\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\t\t\tconst stakeInput = convertQuantity(stakeAmount, DEEP_SCALAR);\n\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::stake`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(pool.address),\n\t\t\t\t\ttx.object(balanceManager.address),\n\t\t\t\t\ttradeProof,\n\t\t\t\t\ttx.pure.u64(stakeInput),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t\t});\n\t\t};\n\n\t/**\n\t * @description Unstake from the pool\n\t * @param {string} poolKey The key to identify the pool\n\t * @param {string} balanceManagerKey The key to identify the BalanceManager\n\t * @returns A function that takes a Transaction object\n\t */\n\tunstake = (poolKey: string, balanceManagerKey: string) => (tx: Transaction) => {\n\t\tconst pool = this.#config.getPool(poolKey);\n\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::unstake`,\n\t\t\targuments: [tx.object(pool.address), tx.object(balanceManager.address), tradeProof],\n\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t});\n\t};\n\n\t/**\n\t * @description Submit a governance proposal\n\t * @param {ProposalParams} params Parameters for the proposal\n\t * @returns A function that takes a Transaction object\n\t */\n\tsubmitProposal = (params: ProposalParams) => (tx: Transaction) => {\n\t\tconst { poolKey, balanceManagerKey, takerFee, makerFee, stakeRequired } = params;\n\n\t\tconst pool = this.#config.getPool(poolKey);\n\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::submit_proposal`,\n\t\t\targuments: [\n\t\t\t\ttx.object(pool.address),\n\t\t\t\ttx.object(balanceManager.address),\n\t\t\t\ttradeProof,\n\t\t\t\ttx.pure.u64(convertRate(takerFee, FLOAT_SCALAR)),\n\t\t\t\ttx.pure.u64(convertRate(makerFee, FLOAT_SCALAR)),\n\t\t\t\ttx.pure.u64(convertQuantity(stakeRequired, DEEP_SCALAR)),\n\t\t\t],\n\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t});\n\t};\n\n\t/**\n\t * @description Vote on a proposal\n\t * @param {string} poolKey The key to identify the pool\n\t * @param {string} balanceManagerKey The key to identify the BalanceManager\n\t * @param {string} proposal_id The ID of the proposal to vote on\n\t * @returns A function that takes a Transaction object\n\t */\n\tvote = (poolKey: string, balanceManagerKey: string, proposal_id: string) => (tx: Transaction) => {\n\t\tconst pool = this.#config.getPool(poolKey);\n\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\n\t\ttx.moveCall({\n\t\t\ttarget: `${this.#config.DEEPBOOK_PACKAGE_ID}::pool::vote`,\n\t\t\targuments: [\n\t\t\t\ttx.object(pool.address),\n\t\t\t\ttx.object(balanceManager.address),\n\t\t\t\ttradeProof,\n\t\t\t\ttx.pure.id(proposal_id),\n\t\t\t],\n\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t});\n\t};\n}\n"],"mappings":";;;;;;;AAYA,IAAa,qBAAb,MAAgC;CAC/B;;;;CAKA,YAAY,QAAwB;gBAYlC,SAAiB,mBAA2B,iBAAyB,OAAoB;GACzF,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;GACtD,MAAM,aAAa,gBAAgB,aAAa,YAAY;AAE5D,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKA,OAAQ,oBAAoB;IAC5C,WAAW;KACV,GAAG,OAAO,KAAK,QAAQ;KACvB,GAAG,OAAO,eAAe,QAAQ;KACjC;KACA,GAAG,KAAK,IAAI,WAAW;KACvB;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC;;kBASO,SAAiB,uBAA+B,OAAoB;GAC9E,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;AAEtD,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKA,OAAQ,oBAAoB;IAC5C,WAAW;KAAC,GAAG,OAAO,KAAK,QAAQ;KAAE,GAAG,OAAO,eAAe,QAAQ;KAAE;KAAW;IACnF,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC;;yBAQe,YAA4B,OAAoB;GACjE,MAAM,EAAE,SAAS,mBAAmB,UAAU,UAAU,kBAAkB;GAE1E,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;AAEtD,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKA,OAAQ,oBAAoB;IAC5C,WAAW;KACV,GAAG,OAAO,KAAK,QAAQ;KACvB,GAAG,OAAO,eAAe,QAAQ;KACjC;KACA,GAAG,KAAK,IAAI,YAAY,UAAU,aAAa,CAAC;KAChD,GAAG,KAAK,IAAI,YAAY,UAAU,aAAa,CAAC;KAChD,GAAG,KAAK,IAAI,gBAAgB,eAAe,YAAY,CAAC;KACxD;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC;;eAUK,SAAiB,mBAA2B,iBAAyB,OAAoB;GAChG,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;AAEtD,MAAG,SAAS;IACX,QAAQ,GAAG,MAAKA,OAAQ,oBAAoB;IAC5C,WAAW;KACV,GAAG,OAAO,KAAK,QAAQ;KACvB,GAAG,OAAO,eAAe,QAAQ;KACjC;KACA,GAAG,KAAK,GAAG,YAAY;KACvB;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC;;AAtGF,QAAKA,SAAU"}
1
+ {"version":3,"file":"governance.mjs","names":["#config","poolMoveCalls.stake","poolMoveCalls.unstake","poolMoveCalls.submitProposal","poolMoveCalls.vote"],"sources":["../../src/transactions/governance.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport type { Transaction } from '@mysten/sui/transactions';\n\nimport type { ProposalParams } from '../types/index.js';\nimport type { DeepBookConfig } from '../utils/config.js';\nimport { DEEP_SCALAR, FLOAT_SCALAR } from '../utils/config.js';\nimport { convertQuantity, convertRate } from '../utils/conversion.js';\nimport * as poolMoveCalls from '../contracts/deepbook/pool.js';\n\n/**\n * GovernanceContract class for managing governance operations in DeepBook.\n */\nexport class GovernanceContract {\n\t#config: DeepBookConfig;\n\n\t/**\n\t * @param {DeepBookConfig} config Configuration for GovernanceContract\n\t */\n\tconstructor(config: DeepBookConfig) {\n\t\tthis.#config = config;\n\t}\n\n\t/**\n\t * @description Stake a specified amount in the pool\n\t * @param {string} poolKey The key to identify the pool\n\t * @param {string} balanceManagerKey The key to identify the BalanceManager\n\t * @param {number} stakeAmount The amount to stake\n\t * @returns A function that takes a Transaction object\n\t */\n\tstake =\n\t\t(poolKey: string, balanceManagerKey: string, stakeAmount: number) => (tx: Transaction) => {\n\t\t\tconst pool = this.#config.getPool(poolKey);\n\t\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\t\t\tconst stakeInput = convertQuantity(stakeAmount, DEEP_SCALAR);\n\n\t\t\ttx.add(\n\t\t\t\tpoolMoveCalls.stake({\n\t\t\t\t\tpackage: this.#config.DEEPBOOK_PACKAGE_ID,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: pool.address,\n\t\t\t\t\t\tbalanceManager: balanceManager.address,\n\t\t\t\t\t\ttradeProof,\n\t\t\t\t\t\tamount: stakeInput,\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t};\n\n\t/**\n\t * @description Unstake from the pool\n\t * @param {string} poolKey The key to identify the pool\n\t * @param {string} balanceManagerKey The key to identify the BalanceManager\n\t * @returns A function that takes a Transaction object\n\t */\n\tunstake = (poolKey: string, balanceManagerKey: string) => (tx: Transaction) => {\n\t\tconst pool = this.#config.getPool(poolKey);\n\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\n\t\ttx.add(\n\t\t\tpoolMoveCalls.unstake({\n\t\t\t\tpackage: this.#config.DEEPBOOK_PACKAGE_ID,\n\t\t\t\targuments: {\n\t\t\t\t\tself: pool.address,\n\t\t\t\t\tbalanceManager: balanceManager.address,\n\t\t\t\t\ttradeProof,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t\t}),\n\t\t);\n\t};\n\n\t/**\n\t * @description Submit a governance proposal\n\t * @param {ProposalParams} params Parameters for the proposal\n\t * @returns A function that takes a Transaction object\n\t */\n\tsubmitProposal = (params: ProposalParams) => (tx: Transaction) => {\n\t\tconst { poolKey, balanceManagerKey, takerFee, makerFee, stakeRequired } = params;\n\n\t\tconst pool = this.#config.getPool(poolKey);\n\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\n\t\ttx.add(\n\t\t\tpoolMoveCalls.submitProposal({\n\t\t\t\tpackage: this.#config.DEEPBOOK_PACKAGE_ID,\n\t\t\t\targuments: {\n\t\t\t\t\tself: pool.address,\n\t\t\t\t\tbalanceManager: balanceManager.address,\n\t\t\t\t\ttradeProof,\n\t\t\t\t\ttakerFee: convertRate(takerFee, FLOAT_SCALAR),\n\t\t\t\t\tmakerFee: convertRate(makerFee, FLOAT_SCALAR),\n\t\t\t\t\tstakeRequired: convertQuantity(stakeRequired, DEEP_SCALAR),\n\t\t\t\t},\n\t\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t\t}),\n\t\t);\n\t};\n\n\t/**\n\t * @description Vote on a proposal\n\t * @param {string} poolKey The key to identify the pool\n\t * @param {string} balanceManagerKey The key to identify the BalanceManager\n\t * @param {string} proposal_id The ID of the proposal to vote on\n\t * @returns A function that takes a Transaction object\n\t */\n\tvote = (poolKey: string, balanceManagerKey: string, proposal_id: string) => (tx: Transaction) => {\n\t\tconst pool = this.#config.getPool(poolKey);\n\t\tconst balanceManager = this.#config.getBalanceManager(balanceManagerKey);\n\t\tconst tradeProof = tx.add(this.#config.balanceManager.generateProof(balanceManagerKey));\n\t\tconst baseCoin = this.#config.getCoin(pool.baseCoin);\n\t\tconst quoteCoin = this.#config.getCoin(pool.quoteCoin);\n\n\t\ttx.add(\n\t\t\tpoolMoveCalls.vote({\n\t\t\t\tpackage: this.#config.DEEPBOOK_PACKAGE_ID,\n\t\t\t\targuments: {\n\t\t\t\t\tself: pool.address,\n\t\t\t\t\tbalanceManager: balanceManager.address,\n\t\t\t\t\ttradeProof,\n\t\t\t\t\tproposalId: proposal_id,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [baseCoin.type, quoteCoin.type],\n\t\t\t}),\n\t\t);\n\t};\n}\n"],"mappings":";;;;;;;;AAaA,IAAa,qBAAb,MAAgC;CAC/B;;;;CAKA,YAAY,QAAwB;gBAYlC,SAAiB,mBAA2B,iBAAyB,OAAoB;GACzF,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;GACtD,MAAM,aAAa,gBAAgB,aAAa,YAAY;AAE5D,MAAG,IACFC,MAAoB;IACnB,SAAS,MAAKD,OAAQ;IACtB,WAAW;KACV,MAAM,KAAK;KACX,gBAAgB,eAAe;KAC/B;KACA,QAAQ;KACR;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC,CACF;;kBASQ,SAAiB,uBAA+B,OAAoB;GAC9E,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;AAEtD,MAAG,IACFE,QAAsB;IACrB,SAAS,MAAKF,OAAQ;IACtB,WAAW;KACV,MAAM,KAAK;KACX,gBAAgB,eAAe;KAC/B;KACA;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC,CACF;;yBAQgB,YAA4B,OAAoB;GACjE,MAAM,EAAE,SAAS,mBAAmB,UAAU,UAAU,kBAAkB;GAE1E,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;AAEtD,MAAG,IACFG,eAA6B;IAC5B,SAAS,MAAKH,OAAQ;IACtB,WAAW;KACV,MAAM,KAAK;KACX,gBAAgB,eAAe;KAC/B;KACA,UAAU,YAAY,UAAU,aAAa;KAC7C,UAAU,YAAY,UAAU,aAAa;KAC7C,eAAe,gBAAgB,eAAe,YAAY;KAC1D;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC,CACF;;eAUM,SAAiB,mBAA2B,iBAAyB,OAAoB;GAChG,MAAM,OAAO,MAAKA,OAAQ,QAAQ,QAAQ;GAC1C,MAAM,iBAAiB,MAAKA,OAAQ,kBAAkB,kBAAkB;GACxE,MAAM,aAAa,GAAG,IAAI,MAAKA,OAAQ,eAAe,cAAc,kBAAkB,CAAC;GACvF,MAAM,WAAW,MAAKA,OAAQ,QAAQ,KAAK,SAAS;GACpD,MAAM,YAAY,MAAKA,OAAQ,QAAQ,KAAK,UAAU;AAEtD,MAAG,IACFI,KAAmB;IAClB,SAAS,MAAKJ,OAAQ;IACtB,WAAW;KACV,MAAM,KAAK;KACX,gBAAgB,eAAe;KAC/B;KACA,YAAY;KACZ;IACD,eAAe,CAAC,SAAS,MAAM,UAAU,KAAK;IAC9C,CAAC,CACF;;AAlHD,QAAKA,SAAU"}
@@ -80,6 +80,16 @@ declare class MarginAdminContract {
80
80
  * @returns A function that takes a Transaction object
81
81
  */
82
82
  setMaxOrderTtl: (poolKey: string, maxOrderTtlMs: number | bigint) => (tx: Transaction) => void;
83
+ /**
84
+ * @description Set the minimum risk ratio required to open a new position on
85
+ * a pool. Distinct from the borrow floor: this gates position opening, not
86
+ * borrowing. Stored in 9-decimal float scaling (1.0 = `FLOAT_SCALAR`); the SDK
87
+ * applies the scaling, so callers pass a human-readable ratio (e.g. `1.25`).
88
+ * @param {string} poolKey The key of the pool to update
89
+ * @param {number | bigint} minOpenRiskRatio Minimum open risk ratio (e.g. 1.25)
90
+ * @returns A function that takes a Transaction object
91
+ */
92
+ setMinOpenRiskRatio: (poolKey: string, minOpenRiskRatio: number | bigint) => (tx: Transaction) => void;
83
93
  /**
84
94
  * @description Add the PythConfig to the margin registry
85
95
  * @param {Transaction} tx The transaction object
@@ -1 +1 @@
1
- {"version":3,"file":"marginAdmin.d.mts","names":[],"sources":["../../src/transactions/marginAdmin.ts"],"mappings":";;;;;;;;AAeA;cAAa,mBAAA;EAAA;EAMQ;;;cAAR,MAAA,EAAQ,cAAA;EAsDW;;;;EAlC/B,iBAAA,SAA2B,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAmGoC;;;;EApF9E,mBAAA,GAAuB,eAAA,cAA6B,EAAA,EAAI,WAAA;EA0LN;;;;;;EAxKlD,oBAAA,GACE,OAAA,UAAiB,UAAA,EAAY,mBAAA,MAAyB,EAAA,EAAI,WAAA;EAuQY;;;;;EAjPxE,kBAAA,GAAsB,OAAA,cAAqB,EAAA,EAAI,WAAA;EA6TrB;;;;;EAxS1B,mBAAA,GAAuB,OAAA,cAAqB,EAAA,EAAI,WAAA;EA2VwB;;;;;;EArUxE,gBAAA,GAAoB,OAAA,UAAiB,UAAA,EAAY,mBAAA,MAAyB,EAAA,EAAI,WAAA;EAnG/C;;;;;;;;;;EA8H/B,iBAAA,GAAqB,OAAA,UAAiB,SAAA,uBAAgC,EAAA,EAAI,WAAA;EA5Fd;;;;;;;;EAqH5D,cAAA,GAAkB,OAAA,UAAiB,QAAA,uBAA+B,EAAA,EAAI,WAAA;EA1E1B;;;;;;;;;;EAqG5C,cAAA,GAAkB,OAAA,UAAiB,aAAA,uBAAoC,EAAA,EAAI,WAAA;EApDL;;;;;;EA2EtE,SAAA,GAAa,MAAA,EAAQ,mBAAA,MAAyB,EAAA,EAAI,WAAA;EAvBhC;;;;;EAwClB,YAAA,SAAsB,EAAA,EAAI,WAAA;EAjBb;;;;;EA8Bb,aAAA,GAAiB,OAAA,cAAqB,EAAA,EAAI,WAAA;EAA1C;;;;;EAgBA,cAAA,GAAkB,OAAA,cAAqB,EAAA,EAAI,WAAA;EAAA;;;;;;EAiB3C,aAAA,GAAiB,OAAA,UAAiB,gBAAA,EAAkB,gBAAA,MAAsB,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAAf;;;;;;EAiC1E,yBAAA,GAA6B,OAAA,UAAiB,QAAA,cAAsB,EAAA,EAAI,WAAA;EAqBxE;;;;;;;EAAA,eAAA,GACE,OAAA,UAAiB,UAAA,UAAoB,oBAAA,cAAkC,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EA4B1E;;;;;;EAFd,aAAA,GAEE,UAAA,EAAY,KAAA;IAAQ,OAAA;IAAiB,UAAA;IAAoB,oBAAA;EAAA,IACzD,aAAA,cAEA,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAuBK;;;;EAAtB,YAAA,SAAsB,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAgBK;;;;;EAA1C,cAAA,GAAkB,UAAA,cAAwB,EAAA,EAAI,WAAA;EAmC9C;;;;;;EAjBA,sBAAA,GAA0B,OAAA,UAAiB,UAAA,cAAwB,EAAA,EAAI,WAAA;;;;;;;EAiBvE,gCAAA,GAAoC,OAAA,cAAqB,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;AAAA"}
1
+ {"version":3,"file":"marginAdmin.d.mts","names":[],"sources":["../../src/transactions/marginAdmin.ts"],"mappings":";;;;;;;;AAkBA;cAAa,mBAAA;EAAA;EAMQ;;;cAAR,MAAA,EAAQ,cAAA;EAwDW;;;;EApC/B,iBAAA,SAA2B,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAwGoC;;;;EA3F9E,mBAAA,GAAuB,eAAA,cAA6B,EAAA,EAAI,WAAA;EAiOnC;;;;;;EA3MrB,oBAAA,GACE,OAAA,UAAiB,UAAA,EAAY,mBAAA,MAAyB,EAAA,EAAI,WAAA;EAiR6B;;;;;EA1PzF,kBAAA,GAAsB,OAAA,cAAqB,EAAA,EAAI,WAAA;EAsV9B;;;;;EAhUjB,mBAAA,GAAuB,OAAA,cAAqB,EAAA,EAAI,WAAA;EA6YwB;;;;;;EAtXxE,gBAAA,GAAoB,OAAA,UAAiB,UAAA,EAAY,mBAAA,MAAyB,EAAA,EAAI,WAAA;EAxG9E;;;;;;;;;;EAoIA,iBAAA,GAAqB,OAAA,UAAiB,SAAA,uBAAgC,EAAA,EAAI,WAAA;EAhGvD;;;;;;;;EA0HnB,cAAA,GAAkB,OAAA,UAAiB,QAAA,uBAA+B,EAAA,EAAI,WAAA;EA7EtB;;;;;;;;;;EAyGhD,cAAA,GAAkB,OAAA,UAAiB,aAAA,uBAAoC,EAAA,EAAI,WAAA;EAtDD;;;;;;;;;EAiF1E,mBAAA,GACE,OAAA,UAAiB,gBAAA,uBAAuC,EAAA,EAAI,WAAA;EA5Ba;;;;;;EAoD3E,SAAA,GAAa,MAAA,EAAQ,mBAAA,MAAyB,EAAA,EAAI,WAAA;EAAlD;;;;;EAmBA,YAAA,SAAsB,EAAA,EAAI,WAAA;EAAA;;;;;EAe1B,aAAA,GAAiB,OAAA,cAAqB,EAAA,EAAI,WAAA;EAkB1C;;;;;EAAA,cAAA,GAAkB,OAAA,cAAqB,EAAA,EAAI,WAAA;EAmBS;;;;;;EAApD,aAAA,GAAiB,OAAA,UAAiB,gBAAA,EAAkB,gBAAA,MAAsB,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAmC3C;;;;;;EAA9C,yBAAA,GAA6B,OAAA,UAAiB,QAAA,cAAsB,EAAA,EAAI,WAAA;EAwBK;;;;;;;EAD7E,eAAA,GACE,OAAA,UAAiB,UAAA,UAAoB,oBAAA,cAAkC,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EA8BtF;;;;;;EAFF,aAAA,GAEE,UAAA,EAAY,KAAA;IAAQ,OAAA;IAAiB,UAAA;IAAoB,oBAAA;EAAA,IACzD,aAAA,cAEA,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAuC6B;;;;EAd9C,YAAA,SAAsB,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;EAiCkC;;;;;EAnBvE,cAAA,GAAkB,UAAA,cAAwB,EAAA,EAAI,WAAA;EAsC0B;;;;;;EAnBxE,sBAAA,GAA0B,OAAA,UAAiB,UAAA,cAAwB,EAAA,EAAI,WAAA;;;;;;;EAmBvE,gCAAA,GAAoC,OAAA,cAAqB,EAAA,EAAI,WAAA,KAAW,0BAAA,CAAA,iBAAA;AAAA"}
@@ -1,5 +1,8 @@
1
1
  import { convertRate } from "../utils/conversion.mjs";
2
2
  import { FLOAT_SCALAR } from "../utils/config.mjs";
3
+ import { addConfig, disableDeepbookPool, disableVersion, disableVersionPauseCap, enableDeepbookPool, enableVersion, mintMaintainerCap, mintPauseCap, newPoolConfig, newPoolConfigWithLeverage, registerDeepbookPool, removeConfig, revokePauseCap, setMaxOrderTtl, setMaxPriceAge, setMinOpenRiskRatio, setPriceTolerance, updateRiskParams } from "../contracts/deepbook_margin/margin_registry.mjs";
4
+ import { adminWithdrawDefaultReferralFees } from "../contracts/deepbook_margin/margin_pool.mjs";
5
+ import { newCoinTypeDataFromCurrency, newPythConfig } from "../contracts/deepbook_margin/oracle.mjs";
3
6
  import { hexToBytes } from "@noble/hashes/utils.js";
4
7
 
5
8
  //#region src/transactions/marginAdmin.ts
@@ -13,14 +16,13 @@ var MarginAdminContract = class {
13
16
  */
14
17
  constructor(config) {
15
18
  this.mintMaintainerCap = () => (tx) => {
16
- return tx.moveCall({
17
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::mint_maintainer_cap`,
18
- arguments: [
19
- tx.object(this.#config.MARGIN_REGISTRY_ID),
20
- tx.object(this.#marginAdminCap()),
21
- tx.object.clock()
22
- ]
23
- });
19
+ return tx.add(mintMaintainerCap({
20
+ package: this.#config.MARGIN_PACKAGE_ID,
21
+ arguments: {
22
+ self: this.#config.MARGIN_REGISTRY_ID,
23
+ AdminCap: this.#marginAdminCap()
24
+ }
25
+ }));
24
26
  };
25
27
  this.revokeMaintainerCap = (maintainerCapId) => (tx) => {
26
28
  tx.moveCall({
@@ -37,248 +39,263 @@ var MarginAdminContract = class {
37
39
  const pool = this.#config.getPool(poolKey);
38
40
  const baseCoin = this.#config.getCoin(pool.baseCoin);
39
41
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
40
- tx.moveCall({
41
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::register_deepbook_pool`,
42
- arguments: [
43
- tx.object(this.#config.MARGIN_REGISTRY_ID),
44
- tx.object(this.#marginAdminCap()),
45
- tx.object(pool.address),
46
- poolConfig,
47
- tx.object.clock()
48
- ],
42
+ tx.add(registerDeepbookPool({
43
+ package: this.#config.MARGIN_PACKAGE_ID,
44
+ arguments: {
45
+ self: this.#config.MARGIN_REGISTRY_ID,
46
+ AdminCap: this.#marginAdminCap(),
47
+ pool: pool.address,
48
+ poolConfig
49
+ },
49
50
  typeArguments: [baseCoin.type, quoteCoin.type]
50
- });
51
+ }));
51
52
  };
52
53
  this.enableDeepbookPool = (poolKey) => (tx) => {
53
54
  const pool = this.#config.getPool(poolKey);
54
55
  const baseCoin = this.#config.getCoin(pool.baseCoin);
55
56
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
56
- tx.moveCall({
57
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::enable_deepbook_pool`,
58
- arguments: [
59
- tx.object(this.#config.MARGIN_REGISTRY_ID),
60
- tx.object(this.#marginAdminCap()),
61
- tx.object(pool.address),
62
- tx.object.clock()
63
- ],
57
+ tx.add(enableDeepbookPool({
58
+ package: this.#config.MARGIN_PACKAGE_ID,
59
+ arguments: {
60
+ self: this.#config.MARGIN_REGISTRY_ID,
61
+ AdminCap: this.#marginAdminCap(),
62
+ pool: pool.address
63
+ },
64
64
  typeArguments: [baseCoin.type, quoteCoin.type]
65
- });
65
+ }));
66
66
  };
67
67
  this.disableDeepbookPool = (poolKey) => (tx) => {
68
68
  const pool = this.#config.getPool(poolKey);
69
69
  const baseCoin = this.#config.getCoin(pool.baseCoin);
70
70
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
71
- tx.moveCall({
72
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::disable_deepbook_pool`,
73
- arguments: [
74
- tx.object(this.#config.MARGIN_REGISTRY_ID),
75
- tx.object(this.#marginAdminCap()),
76
- tx.object(pool.address),
77
- tx.object.clock()
78
- ],
71
+ tx.add(disableDeepbookPool({
72
+ package: this.#config.MARGIN_PACKAGE_ID,
73
+ arguments: {
74
+ self: this.#config.MARGIN_REGISTRY_ID,
75
+ AdminCap: this.#marginAdminCap(),
76
+ pool: pool.address
77
+ },
79
78
  typeArguments: [baseCoin.type, quoteCoin.type]
80
- });
79
+ }));
81
80
  };
82
81
  this.updateRiskParams = (poolKey, poolConfig) => (tx) => {
83
82
  const pool = this.#config.getPool(poolKey);
84
83
  const baseCoin = this.#config.getCoin(pool.baseCoin);
85
84
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
86
- tx.moveCall({
87
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::update_risk_params`,
88
- arguments: [
89
- tx.object(this.#config.MARGIN_REGISTRY_ID),
90
- tx.object(this.#marginAdminCap()),
91
- tx.object(pool.address),
92
- poolConfig,
93
- tx.object.clock()
94
- ],
85
+ tx.add(updateRiskParams({
86
+ package: this.#config.MARGIN_PACKAGE_ID,
87
+ arguments: {
88
+ self: this.#config.MARGIN_REGISTRY_ID,
89
+ AdminCap: this.#marginAdminCap(),
90
+ pool: pool.address,
91
+ poolConfig
92
+ },
95
93
  typeArguments: [baseCoin.type, quoteCoin.type]
96
- });
94
+ }));
97
95
  };
98
96
  this.setPriceTolerance = (poolKey, tolerance) => (tx) => {
99
97
  const pool = this.#config.getPool(poolKey);
100
98
  const baseCoin = this.#config.getCoin(pool.baseCoin);
101
99
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
102
- tx.moveCall({
103
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::set_price_tolerance`,
104
- arguments: [
105
- tx.object(this.#config.MARGIN_REGISTRY_ID),
106
- tx.object(this.#marginAdminCap()),
107
- tx.object(pool.address),
108
- tx.pure.u64(convertRate(tolerance, FLOAT_SCALAR)),
109
- tx.object.clock()
110
- ],
100
+ tx.add(setPriceTolerance({
101
+ package: this.#config.MARGIN_PACKAGE_ID,
102
+ arguments: {
103
+ self: this.#config.MARGIN_REGISTRY_ID,
104
+ AdminCap: this.#marginAdminCap(),
105
+ pool: pool.address,
106
+ tolerance: convertRate(tolerance, FLOAT_SCALAR)
107
+ },
111
108
  typeArguments: [baseCoin.type, quoteCoin.type]
112
- });
109
+ }));
113
110
  };
114
111
  this.setMaxPriceAge = (poolKey, maxAgeMs) => (tx) => {
115
112
  const pool = this.#config.getPool(poolKey);
116
113
  const baseCoin = this.#config.getCoin(pool.baseCoin);
117
114
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
118
- tx.moveCall({
119
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::set_max_price_age`,
120
- arguments: [
121
- tx.object(this.#config.MARGIN_REGISTRY_ID),
122
- tx.object(this.#marginAdminCap()),
123
- tx.object(pool.address),
124
- tx.pure.u64(maxAgeMs),
125
- tx.object.clock()
126
- ],
115
+ tx.add(setMaxPriceAge({
116
+ package: this.#config.MARGIN_PACKAGE_ID,
117
+ arguments: {
118
+ self: this.#config.MARGIN_REGISTRY_ID,
119
+ AdminCap: this.#marginAdminCap(),
120
+ pool: pool.address,
121
+ maxAgeMs
122
+ },
127
123
  typeArguments: [baseCoin.type, quoteCoin.type]
128
- });
124
+ }));
129
125
  };
130
126
  this.setMaxOrderTtl = (poolKey, maxOrderTtlMs) => (tx) => {
131
127
  const pool = this.#config.getPool(poolKey);
132
128
  const baseCoin = this.#config.getCoin(pool.baseCoin);
133
129
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
134
- tx.moveCall({
135
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::set_max_order_ttl`,
136
- arguments: [
137
- tx.object(this.#config.MARGIN_REGISTRY_ID),
138
- tx.object(this.#marginAdminCap()),
139
- tx.object(pool.address),
140
- tx.pure.u64(maxOrderTtlMs),
141
- tx.object.clock()
142
- ],
130
+ tx.add(setMaxOrderTtl({
131
+ package: this.#config.MARGIN_PACKAGE_ID,
132
+ arguments: {
133
+ self: this.#config.MARGIN_REGISTRY_ID,
134
+ AdminCap: this.#marginAdminCap(),
135
+ pool: pool.address,
136
+ maxOrderTtlMs
137
+ },
143
138
  typeArguments: [baseCoin.type, quoteCoin.type]
144
- });
139
+ }));
140
+ };
141
+ this.setMinOpenRiskRatio = (poolKey, minOpenRiskRatio) => (tx) => {
142
+ const pool = this.#config.getPool(poolKey);
143
+ const baseCoin = this.#config.getCoin(pool.baseCoin);
144
+ const quoteCoin = this.#config.getCoin(pool.quoteCoin);
145
+ tx.add(setMinOpenRiskRatio({
146
+ package: this.#config.MARGIN_PACKAGE_ID,
147
+ arguments: {
148
+ self: this.#config.MARGIN_REGISTRY_ID,
149
+ AdminCap: this.#marginAdminCap(),
150
+ pool: pool.address,
151
+ minOpenRiskRatio: convertRate(minOpenRiskRatio, FLOAT_SCALAR)
152
+ },
153
+ typeArguments: [baseCoin.type, quoteCoin.type]
154
+ }));
145
155
  };
146
156
  this.addConfig = (config$1) => (tx) => {
147
- tx.moveCall({
148
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::add_config`,
149
- arguments: [
150
- tx.object(this.#config.MARGIN_REGISTRY_ID),
151
- tx.object(this.#marginAdminCap()),
152
- config$1
153
- ],
157
+ tx.add(addConfig({
158
+ package: this.#config.MARGIN_PACKAGE_ID,
159
+ arguments: {
160
+ self: this.#config.MARGIN_REGISTRY_ID,
161
+ AdminCap: this.#marginAdminCap(),
162
+ config: config$1
163
+ },
154
164
  typeArguments: [`${this.#config.MARGIN_PACKAGE_ID}::oracle::PythConfig`]
155
- });
165
+ }));
156
166
  };
157
167
  this.removeConfig = () => (tx) => {
158
- tx.moveCall({
159
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::remove_config`,
160
- arguments: [tx.object(this.#config.MARGIN_REGISTRY_ID), tx.object(this.#marginAdminCap())],
168
+ tx.add(removeConfig({
169
+ package: this.#config.MARGIN_PACKAGE_ID,
170
+ arguments: {
171
+ self: this.#config.MARGIN_REGISTRY_ID,
172
+ AdminCap: this.#marginAdminCap()
173
+ },
161
174
  typeArguments: [`${this.#config.MARGIN_PACKAGE_ID}::oracle::PythConfig`]
162
- });
175
+ }));
163
176
  };
164
177
  this.enableVersion = (version) => (tx) => {
165
- tx.moveCall({
166
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::enable_version`,
167
- arguments: [
168
- tx.object(this.#config.MARGIN_REGISTRY_ID),
169
- tx.pure.u64(version),
170
- tx.object(this.#marginAdminCap())
171
- ]
172
- });
178
+ tx.add(enableVersion({
179
+ package: this.#config.MARGIN_PACKAGE_ID,
180
+ arguments: {
181
+ self: this.#config.MARGIN_REGISTRY_ID,
182
+ version,
183
+ AdminCap: this.#marginAdminCap()
184
+ }
185
+ }));
173
186
  };
174
187
  this.disableVersion = (version) => (tx) => {
175
- tx.moveCall({
176
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::disable_version`,
177
- arguments: [
178
- tx.object(this.#config.MARGIN_REGISTRY_ID),
179
- tx.pure.u64(version),
180
- tx.object(this.#marginAdminCap())
181
- ]
182
- });
188
+ tx.add(disableVersion({
189
+ package: this.#config.MARGIN_PACKAGE_ID,
190
+ arguments: {
191
+ self: this.#config.MARGIN_REGISTRY_ID,
192
+ version,
193
+ AdminCap: this.#marginAdminCap()
194
+ }
195
+ }));
183
196
  };
184
197
  this.newPoolConfig = (poolKey, poolConfigParams) => (tx) => {
185
198
  const pool = this.#config.getPool(poolKey);
186
199
  const baseCoin = this.#config.getCoin(pool.baseCoin);
187
200
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
188
201
  const { minWithdrawRiskRatio, minBorrowRiskRatio, liquidationRiskRatio, targetLiquidationRiskRatio, userLiquidationReward, poolLiquidationReward } = poolConfigParams;
189
- return tx.moveCall({
190
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::new_pool_config`,
191
- arguments: [
192
- tx.object(this.#config.MARGIN_REGISTRY_ID),
193
- tx.pure.u64(convertRate(minWithdrawRiskRatio, FLOAT_SCALAR)),
194
- tx.pure.u64(convertRate(minBorrowRiskRatio, FLOAT_SCALAR)),
195
- tx.pure.u64(convertRate(liquidationRiskRatio, FLOAT_SCALAR)),
196
- tx.pure.u64(convertRate(targetLiquidationRiskRatio, FLOAT_SCALAR)),
197
- tx.pure.u64(convertRate(userLiquidationReward, FLOAT_SCALAR)),
198
- tx.pure.u64(convertRate(poolLiquidationReward, FLOAT_SCALAR))
199
- ],
202
+ return tx.add(newPoolConfig({
203
+ package: this.#config.MARGIN_PACKAGE_ID,
204
+ arguments: {
205
+ self: this.#config.MARGIN_REGISTRY_ID,
206
+ minWithdrawRiskRatio: convertRate(minWithdrawRiskRatio, FLOAT_SCALAR),
207
+ minBorrowRiskRatio: convertRate(minBorrowRiskRatio, FLOAT_SCALAR),
208
+ liquidationRiskRatio: convertRate(liquidationRiskRatio, FLOAT_SCALAR),
209
+ targetLiquidationRiskRatio: convertRate(targetLiquidationRiskRatio, FLOAT_SCALAR),
210
+ userLiquidationReward: convertRate(userLiquidationReward, FLOAT_SCALAR),
211
+ poolLiquidationReward: convertRate(poolLiquidationReward, FLOAT_SCALAR)
212
+ },
200
213
  typeArguments: [baseCoin.type, quoteCoin.type]
201
- });
214
+ }));
202
215
  };
203
216
  this.newPoolConfigWithLeverage = (poolKey, leverage) => (tx) => {
204
217
  const pool = this.#config.getPool(poolKey);
205
218
  const baseCoin = this.#config.getCoin(pool.baseCoin);
206
219
  const quoteCoin = this.#config.getCoin(pool.quoteCoin);
207
- tx.moveCall({
208
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::new_pool_config_with_leverage`,
209
- arguments: [tx.object(this.#config.MARGIN_REGISTRY_ID), tx.pure.u64(convertRate(leverage, FLOAT_SCALAR))],
220
+ tx.add(newPoolConfigWithLeverage({
221
+ package: this.#config.MARGIN_PACKAGE_ID,
222
+ arguments: {
223
+ self: this.#config.MARGIN_REGISTRY_ID,
224
+ leverage: convertRate(leverage, FLOAT_SCALAR)
225
+ },
210
226
  typeArguments: [baseCoin.type, quoteCoin.type]
211
- });
227
+ }));
212
228
  };
213
229
  this.newCoinTypeData = (coinKey, maxConfBps, maxEwmaDifferenceBps) => (tx) => {
214
230
  const coin = this.#config.getCoin(coinKey);
215
231
  if (!coin.feed) throw new Error("Coin feed not found");
216
232
  const priceFeedInput = new Uint8Array(hexToBytes(coin["feed"].startsWith("0x") ? coin.feed.slice(2) : coin["feed"]));
217
- return tx.moveCall({
218
- target: `${this.#config.MARGIN_PACKAGE_ID}::oracle::new_coin_type_data_from_currency`,
219
- arguments: [
220
- tx.object(coin.currencyId),
221
- tx.pure.vector("u8", priceFeedInput),
222
- tx.pure.u64(maxConfBps),
223
- tx.pure.u64(maxEwmaDifferenceBps)
224
- ],
233
+ return tx.add(newCoinTypeDataFromCurrency({
234
+ package: this.#config.MARGIN_PACKAGE_ID,
235
+ arguments: {
236
+ currency: coin.currencyId,
237
+ priceFeedId: Array.from(priceFeedInput),
238
+ maxConfBps,
239
+ maxEwmaDifferenceBps
240
+ },
225
241
  typeArguments: [coin.type]
226
- });
242
+ }));
227
243
  };
228
244
  this.newPythConfig = (coinSetups, maxAgeSeconds) => (tx) => {
229
245
  const coinTypeDataList = [];
230
246
  for (const setup of coinSetups) coinTypeDataList.push(this.newCoinTypeData(setup.coinKey, setup.maxConfBps, setup.maxEwmaDifferenceBps)(tx));
231
- return tx.moveCall({
232
- target: `${this.#config.MARGIN_PACKAGE_ID}::oracle::new_pyth_config`,
233
- arguments: [tx.makeMoveVec({
234
- elements: coinTypeDataList,
235
- type: `${this.#config.MARGIN_PACKAGE_ID}::oracle::CoinTypeData`
236
- }), tx.pure.u64(maxAgeSeconds)]
237
- });
247
+ return tx.add(newPythConfig({
248
+ package: this.#config.MARGIN_PACKAGE_ID,
249
+ arguments: {
250
+ setups: tx.makeMoveVec({
251
+ elements: coinTypeDataList,
252
+ type: `${this.#config.MARGIN_PACKAGE_ID}::oracle::CoinTypeData`
253
+ }),
254
+ maxAgeSecs: maxAgeSeconds
255
+ }
256
+ }));
238
257
  };
239
258
  this.mintPauseCap = () => (tx) => {
240
- return tx.moveCall({
241
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::mint_pause_cap`,
242
- arguments: [
243
- tx.object(this.#config.MARGIN_REGISTRY_ID),
244
- tx.object(this.#marginAdminCap()),
245
- tx.object.clock()
246
- ]
247
- });
259
+ return tx.add(mintPauseCap({
260
+ package: this.#config.MARGIN_PACKAGE_ID,
261
+ arguments: {
262
+ self: this.#config.MARGIN_REGISTRY_ID,
263
+ AdminCap: this.#marginAdminCap()
264
+ }
265
+ }));
248
266
  };
249
267
  this.revokePauseCap = (pauseCapId) => (tx) => {
250
- tx.moveCall({
251
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::revoke_pause_cap`,
252
- arguments: [
253
- tx.object(this.#config.MARGIN_REGISTRY_ID),
254
- tx.object(this.#marginAdminCap()),
255
- tx.object.clock(),
256
- tx.pure.id(pauseCapId)
257
- ]
258
- });
268
+ tx.add(revokePauseCap({
269
+ package: this.#config.MARGIN_PACKAGE_ID,
270
+ arguments: {
271
+ self: this.#config.MARGIN_REGISTRY_ID,
272
+ AdminCap: this.#marginAdminCap(),
273
+ pauseCapId
274
+ }
275
+ }));
259
276
  };
260
277
  this.disableVersionPauseCap = (version, pauseCapId) => (tx) => {
261
- tx.moveCall({
262
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_registry::disable_version_pause_cap`,
263
- arguments: [
264
- tx.object(this.#config.MARGIN_REGISTRY_ID),
265
- tx.pure.u64(version),
266
- tx.object(pauseCapId)
267
- ]
268
- });
278
+ tx.add(disableVersionPauseCap({
279
+ package: this.#config.MARGIN_PACKAGE_ID,
280
+ arguments: {
281
+ self: this.#config.MARGIN_REGISTRY_ID,
282
+ version,
283
+ pauseCap: pauseCapId
284
+ }
285
+ }));
269
286
  };
270
287
  this.adminWithdrawDefaultReferralFees = (coinKey) => (tx) => {
271
288
  const coin = this.#config.getCoin(coinKey);
272
289
  const marginPool = this.#config.getMarginPool(coinKey);
273
- return tx.moveCall({
274
- target: `${this.#config.MARGIN_PACKAGE_ID}::margin_pool::admin_withdraw_default_referral_fees`,
275
- arguments: [
276
- tx.object(marginPool.address),
277
- tx.object(this.#config.MARGIN_REGISTRY_ID),
278
- tx.object(this.#marginAdminCap())
279
- ],
290
+ return tx.add(adminWithdrawDefaultReferralFees({
291
+ package: this.#config.MARGIN_PACKAGE_ID,
292
+ arguments: {
293
+ self: marginPool.address,
294
+ registry: this.#config.MARGIN_REGISTRY_ID,
295
+ AdminCap: this.#marginAdminCap()
296
+ },
280
297
  typeArguments: [coin.type]
281
- });
298
+ }));
282
299
  };
283
300
  this.#config = config;
284
301
  }