@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
@@ -0,0 +1,1298 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+ import { type Transaction } from '@mysten/sui/transactions';
5
+ import { normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
6
+ export interface UpdateCurrentPriceArguments {
7
+ registry: RawTransactionArgument<string>;
8
+ pool: RawTransactionArgument<string>;
9
+ basePriceInfoObject: RawTransactionArgument<string>;
10
+ quotePriceInfoObject: RawTransactionArgument<string>;
11
+ }
12
+ export interface UpdateCurrentPriceOptions {
13
+ package?: string;
14
+ arguments:
15
+ | UpdateCurrentPriceArguments
16
+ | [
17
+ registry: RawTransactionArgument<string>,
18
+ pool: RawTransactionArgument<string>,
19
+ basePriceInfoObject: RawTransactionArgument<string>,
20
+ quotePriceInfoObject: RawTransactionArgument<string>,
21
+ ];
22
+ typeArguments: [string, string];
23
+ }
24
+ /**
25
+ * Updates the current price for a pool using safe oracle price calculation. Anyone
26
+ * can call this to update the price oracle used for order validation.
27
+ */
28
+ export function updateCurrentPrice(options: UpdateCurrentPriceOptions) {
29
+ const packageAddress = options.package ?? '@deepbook/margin';
30
+ const argumentsTypes = [null, null, null, null, '0x2::clock::Clock'] satisfies (string | null)[];
31
+ const parameterNames = ['registry', 'pool', 'basePriceInfoObject', 'quotePriceInfoObject'];
32
+ return (tx: Transaction) =>
33
+ tx.moveCall({
34
+ package: packageAddress,
35
+ module: 'pool_proxy',
36
+ function: 'update_current_price',
37
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
38
+ typeArguments: options.typeArguments,
39
+ });
40
+ }
41
+ export interface PlaceLimitOrderArguments {
42
+ Registry: RawTransactionArgument<string>;
43
+ MarginManager: RawTransactionArgument<string>;
44
+ Pool: RawTransactionArgument<string>;
45
+ ClientOrderId: RawTransactionArgument<number | bigint>;
46
+ OrderType: RawTransactionArgument<number>;
47
+ SelfMatchingOption: RawTransactionArgument<number>;
48
+ Price: RawTransactionArgument<number | bigint>;
49
+ Quantity: RawTransactionArgument<number | bigint>;
50
+ IsBid: RawTransactionArgument<boolean>;
51
+ PayWithDeep: RawTransactionArgument<boolean>;
52
+ ExpireTimestamp: RawTransactionArgument<number | bigint>;
53
+ }
54
+ export interface PlaceLimitOrderOptions {
55
+ package?: string;
56
+ arguments:
57
+ | PlaceLimitOrderArguments
58
+ | [
59
+ Registry: RawTransactionArgument<string>,
60
+ MarginManager: RawTransactionArgument<string>,
61
+ Pool: RawTransactionArgument<string>,
62
+ ClientOrderId: RawTransactionArgument<number | bigint>,
63
+ OrderType: RawTransactionArgument<number>,
64
+ SelfMatchingOption: RawTransactionArgument<number>,
65
+ Price: RawTransactionArgument<number | bigint>,
66
+ Quantity: RawTransactionArgument<number | bigint>,
67
+ IsBid: RawTransactionArgument<boolean>,
68
+ PayWithDeep: RawTransactionArgument<boolean>,
69
+ ExpireTimestamp: RawTransactionArgument<number | bigint>,
70
+ ];
71
+ typeArguments: [string, string];
72
+ }
73
+ /** DEPRECATED. Use `place_limit_order_v2`. */
74
+ export function placeLimitOrder(options: PlaceLimitOrderOptions) {
75
+ const packageAddress = options.package ?? '@deepbook/margin';
76
+ const argumentsTypes = [
77
+ null,
78
+ null,
79
+ null,
80
+ 'u64',
81
+ 'u8',
82
+ 'u8',
83
+ 'u64',
84
+ 'u64',
85
+ 'bool',
86
+ 'bool',
87
+ 'u64',
88
+ '0x2::clock::Clock',
89
+ ] satisfies (string | null)[];
90
+ const parameterNames = [
91
+ 'Registry',
92
+ 'MarginManager',
93
+ 'Pool',
94
+ 'ClientOrderId',
95
+ 'OrderType',
96
+ 'SelfMatchingOption',
97
+ 'Price',
98
+ 'Quantity',
99
+ 'IsBid',
100
+ 'PayWithDeep',
101
+ 'ExpireTimestamp',
102
+ ];
103
+ return (tx: Transaction) =>
104
+ tx.moveCall({
105
+ package: packageAddress,
106
+ module: 'pool_proxy',
107
+ function: 'place_limit_order',
108
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
109
+ typeArguments: options.typeArguments,
110
+ });
111
+ }
112
+ export interface PlaceMarketOrderArguments {
113
+ Registry: RawTransactionArgument<string>;
114
+ MarginManager: RawTransactionArgument<string>;
115
+ Pool: RawTransactionArgument<string>;
116
+ ClientOrderId: RawTransactionArgument<number | bigint>;
117
+ SelfMatchingOption: RawTransactionArgument<number>;
118
+ Quantity: RawTransactionArgument<number | bigint>;
119
+ IsBid: RawTransactionArgument<boolean>;
120
+ PayWithDeep: RawTransactionArgument<boolean>;
121
+ }
122
+ export interface PlaceMarketOrderOptions {
123
+ package?: string;
124
+ arguments:
125
+ | PlaceMarketOrderArguments
126
+ | [
127
+ Registry: RawTransactionArgument<string>,
128
+ MarginManager: RawTransactionArgument<string>,
129
+ Pool: RawTransactionArgument<string>,
130
+ ClientOrderId: RawTransactionArgument<number | bigint>,
131
+ SelfMatchingOption: RawTransactionArgument<number>,
132
+ Quantity: RawTransactionArgument<number | bigint>,
133
+ IsBid: RawTransactionArgument<boolean>,
134
+ PayWithDeep: RawTransactionArgument<boolean>,
135
+ ];
136
+ typeArguments: [string, string];
137
+ }
138
+ /** DEPRECATED. Use `place_market_order_v2`. */
139
+ export function placeMarketOrder(options: PlaceMarketOrderOptions) {
140
+ const packageAddress = options.package ?? '@deepbook/margin';
141
+ const argumentsTypes = [
142
+ null,
143
+ null,
144
+ null,
145
+ 'u64',
146
+ 'u8',
147
+ 'u64',
148
+ 'bool',
149
+ 'bool',
150
+ '0x2::clock::Clock',
151
+ ] satisfies (string | null)[];
152
+ const parameterNames = [
153
+ 'Registry',
154
+ 'MarginManager',
155
+ 'Pool',
156
+ 'ClientOrderId',
157
+ 'SelfMatchingOption',
158
+ 'Quantity',
159
+ 'IsBid',
160
+ 'PayWithDeep',
161
+ ];
162
+ return (tx: Transaction) =>
163
+ tx.moveCall({
164
+ package: packageAddress,
165
+ module: 'pool_proxy',
166
+ function: 'place_market_order',
167
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
168
+ typeArguments: options.typeArguments,
169
+ });
170
+ }
171
+ export interface PlaceReduceOnlyLimitOrderArguments {
172
+ Registry: RawTransactionArgument<string>;
173
+ MarginManager: RawTransactionArgument<string>;
174
+ Pool: RawTransactionArgument<string>;
175
+ MarginPool: RawTransactionArgument<string>;
176
+ ClientOrderId: RawTransactionArgument<number | bigint>;
177
+ OrderType: RawTransactionArgument<number>;
178
+ SelfMatchingOption: RawTransactionArgument<number>;
179
+ Price: RawTransactionArgument<number | bigint>;
180
+ Quantity: RawTransactionArgument<number | bigint>;
181
+ IsBid: RawTransactionArgument<boolean>;
182
+ PayWithDeep: RawTransactionArgument<boolean>;
183
+ ExpireTimestamp: RawTransactionArgument<number | bigint>;
184
+ }
185
+ export interface PlaceReduceOnlyLimitOrderOptions {
186
+ package?: string;
187
+ arguments:
188
+ | PlaceReduceOnlyLimitOrderArguments
189
+ | [
190
+ Registry: RawTransactionArgument<string>,
191
+ MarginManager: RawTransactionArgument<string>,
192
+ Pool: RawTransactionArgument<string>,
193
+ MarginPool: RawTransactionArgument<string>,
194
+ ClientOrderId: RawTransactionArgument<number | bigint>,
195
+ OrderType: RawTransactionArgument<number>,
196
+ SelfMatchingOption: RawTransactionArgument<number>,
197
+ Price: RawTransactionArgument<number | bigint>,
198
+ Quantity: RawTransactionArgument<number | bigint>,
199
+ IsBid: RawTransactionArgument<boolean>,
200
+ PayWithDeep: RawTransactionArgument<boolean>,
201
+ ExpireTimestamp: RawTransactionArgument<number | bigint>,
202
+ ];
203
+ typeArguments: [string, string, string];
204
+ }
205
+ /** DEPRECATED. Use `place_reduce_only_limit_order_v2`. */
206
+ export function placeReduceOnlyLimitOrder(options: PlaceReduceOnlyLimitOrderOptions) {
207
+ const packageAddress = options.package ?? '@deepbook/margin';
208
+ const argumentsTypes = [
209
+ null,
210
+ null,
211
+ null,
212
+ null,
213
+ 'u64',
214
+ 'u8',
215
+ 'u8',
216
+ 'u64',
217
+ 'u64',
218
+ 'bool',
219
+ 'bool',
220
+ 'u64',
221
+ '0x2::clock::Clock',
222
+ ] satisfies (string | null)[];
223
+ const parameterNames = [
224
+ 'Registry',
225
+ 'MarginManager',
226
+ 'Pool',
227
+ 'MarginPool',
228
+ 'ClientOrderId',
229
+ 'OrderType',
230
+ 'SelfMatchingOption',
231
+ 'Price',
232
+ 'Quantity',
233
+ 'IsBid',
234
+ 'PayWithDeep',
235
+ 'ExpireTimestamp',
236
+ ];
237
+ return (tx: Transaction) =>
238
+ tx.moveCall({
239
+ package: packageAddress,
240
+ module: 'pool_proxy',
241
+ function: 'place_reduce_only_limit_order',
242
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
243
+ typeArguments: options.typeArguments,
244
+ });
245
+ }
246
+ export interface PlaceReduceOnlyMarketOrderArguments {
247
+ Registry: RawTransactionArgument<string>;
248
+ MarginManager: RawTransactionArgument<string>;
249
+ Pool: RawTransactionArgument<string>;
250
+ MarginPool: RawTransactionArgument<string>;
251
+ ClientOrderId: RawTransactionArgument<number | bigint>;
252
+ SelfMatchingOption: RawTransactionArgument<number>;
253
+ Quantity: RawTransactionArgument<number | bigint>;
254
+ IsBid: RawTransactionArgument<boolean>;
255
+ PayWithDeep: RawTransactionArgument<boolean>;
256
+ }
257
+ export interface PlaceReduceOnlyMarketOrderOptions {
258
+ package?: string;
259
+ arguments:
260
+ | PlaceReduceOnlyMarketOrderArguments
261
+ | [
262
+ Registry: RawTransactionArgument<string>,
263
+ MarginManager: RawTransactionArgument<string>,
264
+ Pool: RawTransactionArgument<string>,
265
+ MarginPool: RawTransactionArgument<string>,
266
+ ClientOrderId: RawTransactionArgument<number | bigint>,
267
+ SelfMatchingOption: RawTransactionArgument<number>,
268
+ Quantity: RawTransactionArgument<number | bigint>,
269
+ IsBid: RawTransactionArgument<boolean>,
270
+ PayWithDeep: RawTransactionArgument<boolean>,
271
+ ];
272
+ typeArguments: [string, string, string];
273
+ }
274
+ /** DEPRECATED. Use `place_reduce_only_market_order_v2`. */
275
+ export function placeReduceOnlyMarketOrder(options: PlaceReduceOnlyMarketOrderOptions) {
276
+ const packageAddress = options.package ?? '@deepbook/margin';
277
+ const argumentsTypes = [
278
+ null,
279
+ null,
280
+ null,
281
+ null,
282
+ 'u64',
283
+ 'u8',
284
+ 'u64',
285
+ 'bool',
286
+ 'bool',
287
+ '0x2::clock::Clock',
288
+ ] satisfies (string | null)[];
289
+ const parameterNames = [
290
+ 'Registry',
291
+ 'MarginManager',
292
+ 'Pool',
293
+ 'MarginPool',
294
+ 'ClientOrderId',
295
+ 'SelfMatchingOption',
296
+ 'Quantity',
297
+ 'IsBid',
298
+ 'PayWithDeep',
299
+ ];
300
+ return (tx: Transaction) =>
301
+ tx.moveCall({
302
+ package: packageAddress,
303
+ module: 'pool_proxy',
304
+ function: 'place_reduce_only_market_order',
305
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
306
+ typeArguments: options.typeArguments,
307
+ });
308
+ }
309
+ export interface PlaceLimitOrderV2Arguments {
310
+ registry: RawTransactionArgument<string>;
311
+ marginManager: RawTransactionArgument<string>;
312
+ pool: RawTransactionArgument<string>;
313
+ baseMarginPool: RawTransactionArgument<string>;
314
+ quoteMarginPool: RawTransactionArgument<string>;
315
+ baseOracle: RawTransactionArgument<string>;
316
+ quoteOracle: RawTransactionArgument<string>;
317
+ clientOrderId: RawTransactionArgument<number | bigint>;
318
+ orderType: RawTransactionArgument<number>;
319
+ selfMatchingOption: RawTransactionArgument<number>;
320
+ price: RawTransactionArgument<number | bigint>;
321
+ quantity: RawTransactionArgument<number | bigint>;
322
+ isBid: RawTransactionArgument<boolean>;
323
+ payWithDeep: RawTransactionArgument<boolean>;
324
+ expireTimestamp: RawTransactionArgument<number | bigint>;
325
+ }
326
+ export interface PlaceLimitOrderV2Options {
327
+ package?: string;
328
+ arguments:
329
+ | PlaceLimitOrderV2Arguments
330
+ | [
331
+ registry: RawTransactionArgument<string>,
332
+ marginManager: RawTransactionArgument<string>,
333
+ pool: RawTransactionArgument<string>,
334
+ baseMarginPool: RawTransactionArgument<string>,
335
+ quoteMarginPool: RawTransactionArgument<string>,
336
+ baseOracle: RawTransactionArgument<string>,
337
+ quoteOracle: RawTransactionArgument<string>,
338
+ clientOrderId: RawTransactionArgument<number | bigint>,
339
+ orderType: RawTransactionArgument<number>,
340
+ selfMatchingOption: RawTransactionArgument<number>,
341
+ price: RawTransactionArgument<number | bigint>,
342
+ quantity: RawTransactionArgument<number | bigint>,
343
+ isBid: RawTransactionArgument<boolean>,
344
+ payWithDeep: RawTransactionArgument<boolean>,
345
+ expireTimestamp: RawTransactionArgument<number | bigint>,
346
+ ];
347
+ typeArguments: [string, string];
348
+ }
349
+ /** Places a limit order in the pool. */
350
+ export function placeLimitOrderV2(options: PlaceLimitOrderV2Options) {
351
+ const packageAddress = options.package ?? '@deepbook/margin';
352
+ const argumentsTypes = [
353
+ null,
354
+ null,
355
+ null,
356
+ null,
357
+ null,
358
+ null,
359
+ null,
360
+ 'u64',
361
+ 'u8',
362
+ 'u8',
363
+ 'u64',
364
+ 'u64',
365
+ 'bool',
366
+ 'bool',
367
+ 'u64',
368
+ '0x2::clock::Clock',
369
+ ] satisfies (string | null)[];
370
+ const parameterNames = [
371
+ 'registry',
372
+ 'marginManager',
373
+ 'pool',
374
+ 'baseMarginPool',
375
+ 'quoteMarginPool',
376
+ 'baseOracle',
377
+ 'quoteOracle',
378
+ 'clientOrderId',
379
+ 'orderType',
380
+ 'selfMatchingOption',
381
+ 'price',
382
+ 'quantity',
383
+ 'isBid',
384
+ 'payWithDeep',
385
+ 'expireTimestamp',
386
+ ];
387
+ return (tx: Transaction) =>
388
+ tx.moveCall({
389
+ package: packageAddress,
390
+ module: 'pool_proxy',
391
+ function: 'place_limit_order_v2',
392
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
393
+ typeArguments: options.typeArguments,
394
+ });
395
+ }
396
+ export interface PlaceMarketOrderV2Arguments {
397
+ registry: RawTransactionArgument<string>;
398
+ marginManager: RawTransactionArgument<string>;
399
+ pool: RawTransactionArgument<string>;
400
+ baseMarginPool: RawTransactionArgument<string>;
401
+ quoteMarginPool: RawTransactionArgument<string>;
402
+ baseOracle: RawTransactionArgument<string>;
403
+ quoteOracle: RawTransactionArgument<string>;
404
+ clientOrderId: RawTransactionArgument<number | bigint>;
405
+ selfMatchingOption: RawTransactionArgument<number>;
406
+ quantity: RawTransactionArgument<number | bigint>;
407
+ isBid: RawTransactionArgument<boolean>;
408
+ payWithDeep: RawTransactionArgument<boolean>;
409
+ }
410
+ export interface PlaceMarketOrderV2Options {
411
+ package?: string;
412
+ arguments:
413
+ | PlaceMarketOrderV2Arguments
414
+ | [
415
+ registry: RawTransactionArgument<string>,
416
+ marginManager: RawTransactionArgument<string>,
417
+ pool: RawTransactionArgument<string>,
418
+ baseMarginPool: RawTransactionArgument<string>,
419
+ quoteMarginPool: RawTransactionArgument<string>,
420
+ baseOracle: RawTransactionArgument<string>,
421
+ quoteOracle: RawTransactionArgument<string>,
422
+ clientOrderId: RawTransactionArgument<number | bigint>,
423
+ selfMatchingOption: RawTransactionArgument<number>,
424
+ quantity: RawTransactionArgument<number | bigint>,
425
+ isBid: RawTransactionArgument<boolean>,
426
+ payWithDeep: RawTransactionArgument<boolean>,
427
+ ];
428
+ typeArguments: [string, string];
429
+ }
430
+ /** Places a market order in the pool. */
431
+ export function placeMarketOrderV2(options: PlaceMarketOrderV2Options) {
432
+ const packageAddress = options.package ?? '@deepbook/margin';
433
+ const argumentsTypes = [
434
+ null,
435
+ null,
436
+ null,
437
+ null,
438
+ null,
439
+ null,
440
+ null,
441
+ 'u64',
442
+ 'u8',
443
+ 'u64',
444
+ 'bool',
445
+ 'bool',
446
+ '0x2::clock::Clock',
447
+ ] satisfies (string | null)[];
448
+ const parameterNames = [
449
+ 'registry',
450
+ 'marginManager',
451
+ 'pool',
452
+ 'baseMarginPool',
453
+ 'quoteMarginPool',
454
+ 'baseOracle',
455
+ 'quoteOracle',
456
+ 'clientOrderId',
457
+ 'selfMatchingOption',
458
+ 'quantity',
459
+ 'isBid',
460
+ 'payWithDeep',
461
+ ];
462
+ return (tx: Transaction) =>
463
+ tx.moveCall({
464
+ package: packageAddress,
465
+ module: 'pool_proxy',
466
+ function: 'place_market_order_v2',
467
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
468
+ typeArguments: options.typeArguments,
469
+ });
470
+ }
471
+ export interface PlaceReduceOnlyLimitOrderV2Arguments {
472
+ registry: RawTransactionArgument<string>;
473
+ marginManager: RawTransactionArgument<string>;
474
+ pool: RawTransactionArgument<string>;
475
+ baseMarginPool: RawTransactionArgument<string>;
476
+ quoteMarginPool: RawTransactionArgument<string>;
477
+ baseOracle: RawTransactionArgument<string>;
478
+ quoteOracle: RawTransactionArgument<string>;
479
+ clientOrderId: RawTransactionArgument<number | bigint>;
480
+ orderType: RawTransactionArgument<number>;
481
+ selfMatchingOption: RawTransactionArgument<number>;
482
+ price: RawTransactionArgument<number | bigint>;
483
+ quantity: RawTransactionArgument<number | bigint>;
484
+ isBid: RawTransactionArgument<boolean>;
485
+ payWithDeep: RawTransactionArgument<boolean>;
486
+ expireTimestamp: RawTransactionArgument<number | bigint>;
487
+ }
488
+ export interface PlaceReduceOnlyLimitOrderV2Options {
489
+ package?: string;
490
+ arguments:
491
+ | PlaceReduceOnlyLimitOrderV2Arguments
492
+ | [
493
+ registry: RawTransactionArgument<string>,
494
+ marginManager: RawTransactionArgument<string>,
495
+ pool: RawTransactionArgument<string>,
496
+ baseMarginPool: RawTransactionArgument<string>,
497
+ quoteMarginPool: RawTransactionArgument<string>,
498
+ baseOracle: RawTransactionArgument<string>,
499
+ quoteOracle: RawTransactionArgument<string>,
500
+ clientOrderId: RawTransactionArgument<number | bigint>,
501
+ orderType: RawTransactionArgument<number>,
502
+ selfMatchingOption: RawTransactionArgument<number>,
503
+ price: RawTransactionArgument<number | bigint>,
504
+ quantity: RawTransactionArgument<number | bigint>,
505
+ isBid: RawTransactionArgument<boolean>,
506
+ payWithDeep: RawTransactionArgument<boolean>,
507
+ expireTimestamp: RawTransactionArgument<number | bigint>,
508
+ ];
509
+ typeArguments: [string, string];
510
+ }
511
+ /** Places a reduce-only order in the pool. Used when margin trading is disabled. */
512
+ export function placeReduceOnlyLimitOrderV2(options: PlaceReduceOnlyLimitOrderV2Options) {
513
+ const packageAddress = options.package ?? '@deepbook/margin';
514
+ const argumentsTypes = [
515
+ null,
516
+ null,
517
+ null,
518
+ null,
519
+ null,
520
+ null,
521
+ null,
522
+ 'u64',
523
+ 'u8',
524
+ 'u8',
525
+ 'u64',
526
+ 'u64',
527
+ 'bool',
528
+ 'bool',
529
+ 'u64',
530
+ '0x2::clock::Clock',
531
+ ] satisfies (string | null)[];
532
+ const parameterNames = [
533
+ 'registry',
534
+ 'marginManager',
535
+ 'pool',
536
+ 'baseMarginPool',
537
+ 'quoteMarginPool',
538
+ 'baseOracle',
539
+ 'quoteOracle',
540
+ 'clientOrderId',
541
+ 'orderType',
542
+ 'selfMatchingOption',
543
+ 'price',
544
+ 'quantity',
545
+ 'isBid',
546
+ 'payWithDeep',
547
+ 'expireTimestamp',
548
+ ];
549
+ return (tx: Transaction) =>
550
+ tx.moveCall({
551
+ package: packageAddress,
552
+ module: 'pool_proxy',
553
+ function: 'place_reduce_only_limit_order_v2',
554
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
555
+ typeArguments: options.typeArguments,
556
+ });
557
+ }
558
+ export interface PlaceReduceOnlyMarketOrderV2Arguments {
559
+ registry: RawTransactionArgument<string>;
560
+ marginManager: RawTransactionArgument<string>;
561
+ pool: RawTransactionArgument<string>;
562
+ baseMarginPool: RawTransactionArgument<string>;
563
+ quoteMarginPool: RawTransactionArgument<string>;
564
+ baseOracle: RawTransactionArgument<string>;
565
+ quoteOracle: RawTransactionArgument<string>;
566
+ clientOrderId: RawTransactionArgument<number | bigint>;
567
+ selfMatchingOption: RawTransactionArgument<number>;
568
+ quantity: RawTransactionArgument<number | bigint>;
569
+ isBid: RawTransactionArgument<boolean>;
570
+ payWithDeep: RawTransactionArgument<boolean>;
571
+ }
572
+ export interface PlaceReduceOnlyMarketOrderV2Options {
573
+ package?: string;
574
+ arguments:
575
+ | PlaceReduceOnlyMarketOrderV2Arguments
576
+ | [
577
+ registry: RawTransactionArgument<string>,
578
+ marginManager: RawTransactionArgument<string>,
579
+ pool: RawTransactionArgument<string>,
580
+ baseMarginPool: RawTransactionArgument<string>,
581
+ quoteMarginPool: RawTransactionArgument<string>,
582
+ baseOracle: RawTransactionArgument<string>,
583
+ quoteOracle: RawTransactionArgument<string>,
584
+ clientOrderId: RawTransactionArgument<number | bigint>,
585
+ selfMatchingOption: RawTransactionArgument<number>,
586
+ quantity: RawTransactionArgument<number | bigint>,
587
+ isBid: RawTransactionArgument<boolean>,
588
+ payWithDeep: RawTransactionArgument<boolean>,
589
+ ];
590
+ typeArguments: [string, string];
591
+ }
592
+ /**
593
+ * Places a reduce-only market order in the pool. Used when margin trading is
594
+ * disabled.
595
+ *
596
+ * Superseded by `place_reduce_only_market_order_and_repay_loan`. A market (taker)
597
+ * fill always pays the spread, which lowers the oracle-valued `risk_ratio` while
598
+ * the debt is unchanged, so the swap-only monotonic check here rejects essentially
599
+ * every taker fill. The `_and_repay` variant deleverages with the proceeds so the
600
+ * net-state ratio actually improves. Kept callable for existing integrators; its
601
+ * reduce-only _direction_ guard matches the other entries — a bid needs base
602
+ * (short-side) debt, the ask needs quote (long-side) debt and sells up to gross
603
+ * base held — with no size cap.
604
+ */
605
+ export function placeReduceOnlyMarketOrderV2(options: PlaceReduceOnlyMarketOrderV2Options) {
606
+ const packageAddress = options.package ?? '@deepbook/margin';
607
+ const argumentsTypes = [
608
+ null,
609
+ null,
610
+ null,
611
+ null,
612
+ null,
613
+ null,
614
+ null,
615
+ 'u64',
616
+ 'u8',
617
+ 'u64',
618
+ 'bool',
619
+ 'bool',
620
+ '0x2::clock::Clock',
621
+ ] satisfies (string | null)[];
622
+ const parameterNames = [
623
+ 'registry',
624
+ 'marginManager',
625
+ 'pool',
626
+ 'baseMarginPool',
627
+ 'quoteMarginPool',
628
+ 'baseOracle',
629
+ 'quoteOracle',
630
+ 'clientOrderId',
631
+ 'selfMatchingOption',
632
+ 'quantity',
633
+ 'isBid',
634
+ 'payWithDeep',
635
+ ];
636
+ return (tx: Transaction) =>
637
+ tx.moveCall({
638
+ package: packageAddress,
639
+ module: 'pool_proxy',
640
+ function: 'place_reduce_only_market_order_v2',
641
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
642
+ typeArguments: options.typeArguments,
643
+ });
644
+ }
645
+ export interface PlaceReduceOnlyMarketOrderAndRepayLoanArguments {
646
+ registry: RawTransactionArgument<string>;
647
+ marginManager: RawTransactionArgument<string>;
648
+ pool: RawTransactionArgument<string>;
649
+ baseMarginPool: RawTransactionArgument<string>;
650
+ quoteMarginPool: RawTransactionArgument<string>;
651
+ baseOracle: RawTransactionArgument<string>;
652
+ quoteOracle: RawTransactionArgument<string>;
653
+ clientOrderId: RawTransactionArgument<number | bigint>;
654
+ selfMatchingOption: RawTransactionArgument<number>;
655
+ quantity: RawTransactionArgument<number | bigint>;
656
+ isBid: RawTransactionArgument<boolean>;
657
+ payWithDeep: RawTransactionArgument<boolean>;
658
+ }
659
+ export interface PlaceReduceOnlyMarketOrderAndRepayLoanOptions {
660
+ package?: string;
661
+ arguments:
662
+ | PlaceReduceOnlyMarketOrderAndRepayLoanArguments
663
+ | [
664
+ registry: RawTransactionArgument<string>,
665
+ marginManager: RawTransactionArgument<string>,
666
+ pool: RawTransactionArgument<string>,
667
+ baseMarginPool: RawTransactionArgument<string>,
668
+ quoteMarginPool: RawTransactionArgument<string>,
669
+ baseOracle: RawTransactionArgument<string>,
670
+ quoteOracle: RawTransactionArgument<string>,
671
+ clientOrderId: RawTransactionArgument<number | bigint>,
672
+ selfMatchingOption: RawTransactionArgument<number>,
673
+ quantity: RawTransactionArgument<number | bigint>,
674
+ isBid: RawTransactionArgument<boolean>,
675
+ payWithDeep: RawTransactionArgument<boolean>,
676
+ ];
677
+ typeArguments: [string, string];
678
+ }
679
+ /**
680
+ * Atomically winds down a leveraged position: places a reduce-only market order,
681
+ * repays the loan with the proceeds, then requires the net (post-repay) risk ratio
682
+ * to be at least the pre-trade ratio.
683
+ *
684
+ * The post-repay check is the point. A market close pays the spread, which alone
685
+ * lowers the oracle-valued ratio (debt is unchanged until repay) and would abort
686
+ * the plain reduce-only path. Repaying first deleverages and absorbs the slippage
687
+ * (still bounded by the `assert_price` band), and lets a manager in the
688
+ * `liquidation..min_borrow` band climb out — it cannot reach the borrow floor in a
689
+ * single swap.
690
+ */
691
+ export function placeReduceOnlyMarketOrderAndRepayLoan(
692
+ options: PlaceReduceOnlyMarketOrderAndRepayLoanOptions,
693
+ ) {
694
+ const packageAddress = options.package ?? '@deepbook/margin';
695
+ const argumentsTypes = [
696
+ null,
697
+ null,
698
+ null,
699
+ null,
700
+ null,
701
+ null,
702
+ null,
703
+ 'u64',
704
+ 'u8',
705
+ 'u64',
706
+ 'bool',
707
+ 'bool',
708
+ '0x2::clock::Clock',
709
+ ] satisfies (string | null)[];
710
+ const parameterNames = [
711
+ 'registry',
712
+ 'marginManager',
713
+ 'pool',
714
+ 'baseMarginPool',
715
+ 'quoteMarginPool',
716
+ 'baseOracle',
717
+ 'quoteOracle',
718
+ 'clientOrderId',
719
+ 'selfMatchingOption',
720
+ 'quantity',
721
+ 'isBid',
722
+ 'payWithDeep',
723
+ ];
724
+ return (tx: Transaction) =>
725
+ tx.moveCall({
726
+ package: packageAddress,
727
+ module: 'pool_proxy',
728
+ function: 'place_reduce_only_market_order_and_repay_loan',
729
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
730
+ typeArguments: options.typeArguments,
731
+ });
732
+ }
733
+ export interface PlaceReduceOnlyLimitOrderAndRepayLoanArguments {
734
+ registry: RawTransactionArgument<string>;
735
+ marginManager: RawTransactionArgument<string>;
736
+ pool: RawTransactionArgument<string>;
737
+ baseMarginPool: RawTransactionArgument<string>;
738
+ quoteMarginPool: RawTransactionArgument<string>;
739
+ baseOracle: RawTransactionArgument<string>;
740
+ quoteOracle: RawTransactionArgument<string>;
741
+ clientOrderId: RawTransactionArgument<number | bigint>;
742
+ orderType: RawTransactionArgument<number>;
743
+ selfMatchingOption: RawTransactionArgument<number>;
744
+ price: RawTransactionArgument<number | bigint>;
745
+ quantity: RawTransactionArgument<number | bigint>;
746
+ isBid: RawTransactionArgument<boolean>;
747
+ payWithDeep: RawTransactionArgument<boolean>;
748
+ expireTimestamp: RawTransactionArgument<number | bigint>;
749
+ }
750
+ export interface PlaceReduceOnlyLimitOrderAndRepayLoanOptions {
751
+ package?: string;
752
+ arguments:
753
+ | PlaceReduceOnlyLimitOrderAndRepayLoanArguments
754
+ | [
755
+ registry: RawTransactionArgument<string>,
756
+ marginManager: RawTransactionArgument<string>,
757
+ pool: RawTransactionArgument<string>,
758
+ baseMarginPool: RawTransactionArgument<string>,
759
+ quoteMarginPool: RawTransactionArgument<string>,
760
+ baseOracle: RawTransactionArgument<string>,
761
+ quoteOracle: RawTransactionArgument<string>,
762
+ clientOrderId: RawTransactionArgument<number | bigint>,
763
+ orderType: RawTransactionArgument<number>,
764
+ selfMatchingOption: RawTransactionArgument<number>,
765
+ price: RawTransactionArgument<number | bigint>,
766
+ quantity: RawTransactionArgument<number | bigint>,
767
+ isBid: RawTransactionArgument<boolean>,
768
+ payWithDeep: RawTransactionArgument<boolean>,
769
+ expireTimestamp: RawTransactionArgument<number | bigint>,
770
+ ];
771
+ typeArguments: [string, string];
772
+ }
773
+ /**
774
+ * Reduce-only **limit** order that atomically repays the loan with the taker
775
+ * fills. It is the limit/maker behaviour of `place_reduce_only_limit_order_v2`
776
+ * plus the repay-then-net-monotonic gate of
777
+ * `place_reduce_only_market_order_and_repay_loan`: the portion that crosses the
778
+ * book fills immediately and settles, the rest rests as a maker, then the settled
779
+ * (taker) proceeds repay the debt before the monotonic check on the net
780
+ * (post-repay) state.
781
+ *
782
+ * This is the danger-band tool for a _price-bounded_ reduce: a crossing
783
+ * reduce-only limit pays the spread on its taker fills, which alone would abort
784
+ * `place_reduce_only_limit_order_v2`'s swap-only monotonic check; repaying first
785
+ * deleverages so the net ratio holds. The resting remainder only locks balance
786
+ * (counted in assets), so it doesn't move the ratio. Unfilled-and-resting behaves
787
+ * exactly like `place_reduce_only_limit_order_v2` (nothing to repay).
788
+ */
789
+ export function placeReduceOnlyLimitOrderAndRepayLoan(
790
+ options: PlaceReduceOnlyLimitOrderAndRepayLoanOptions,
791
+ ) {
792
+ const packageAddress = options.package ?? '@deepbook/margin';
793
+ const argumentsTypes = [
794
+ null,
795
+ null,
796
+ null,
797
+ null,
798
+ null,
799
+ null,
800
+ null,
801
+ 'u64',
802
+ 'u8',
803
+ 'u8',
804
+ 'u64',
805
+ 'u64',
806
+ 'bool',
807
+ 'bool',
808
+ 'u64',
809
+ '0x2::clock::Clock',
810
+ ] satisfies (string | null)[];
811
+ const parameterNames = [
812
+ 'registry',
813
+ 'marginManager',
814
+ 'pool',
815
+ 'baseMarginPool',
816
+ 'quoteMarginPool',
817
+ 'baseOracle',
818
+ 'quoteOracle',
819
+ 'clientOrderId',
820
+ 'orderType',
821
+ 'selfMatchingOption',
822
+ 'price',
823
+ 'quantity',
824
+ 'isBid',
825
+ 'payWithDeep',
826
+ 'expireTimestamp',
827
+ ];
828
+ return (tx: Transaction) =>
829
+ tx.moveCall({
830
+ package: packageAddress,
831
+ module: 'pool_proxy',
832
+ function: 'place_reduce_only_limit_order_and_repay_loan',
833
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
834
+ typeArguments: options.typeArguments,
835
+ });
836
+ }
837
+ export interface PlaceMarketOrderAndRepayLoanArguments {
838
+ registry: RawTransactionArgument<string>;
839
+ marginManager: RawTransactionArgument<string>;
840
+ pool: RawTransactionArgument<string>;
841
+ baseMarginPool: RawTransactionArgument<string>;
842
+ quoteMarginPool: RawTransactionArgument<string>;
843
+ baseOracle: RawTransactionArgument<string>;
844
+ quoteOracle: RawTransactionArgument<string>;
845
+ clientOrderId: RawTransactionArgument<number | bigint>;
846
+ selfMatchingOption: RawTransactionArgument<number>;
847
+ quantity: RawTransactionArgument<number | bigint>;
848
+ isBid: RawTransactionArgument<boolean>;
849
+ payWithDeep: RawTransactionArgument<boolean>;
850
+ }
851
+ export interface PlaceMarketOrderAndRepayLoanOptions {
852
+ package?: string;
853
+ arguments:
854
+ | PlaceMarketOrderAndRepayLoanArguments
855
+ | [
856
+ registry: RawTransactionArgument<string>,
857
+ marginManager: RawTransactionArgument<string>,
858
+ pool: RawTransactionArgument<string>,
859
+ baseMarginPool: RawTransactionArgument<string>,
860
+ quoteMarginPool: RawTransactionArgument<string>,
861
+ baseOracle: RawTransactionArgument<string>,
862
+ quoteOracle: RawTransactionArgument<string>,
863
+ clientOrderId: RawTransactionArgument<number | bigint>,
864
+ selfMatchingOption: RawTransactionArgument<number>,
865
+ quantity: RawTransactionArgument<number | bigint>,
866
+ isBid: RawTransactionArgument<boolean>,
867
+ payWithDeep: RawTransactionArgument<boolean>,
868
+ ];
869
+ typeArguments: [string, string];
870
+ }
871
+ /**
872
+ * Atomically places a market order and repays the loan with the proceeds, gating
873
+ * on a **monotonic** net-state check: if any debt remains after the repay, the
874
+ * post-repay `risk_ratio` must be at least the pre-trade ratio (improve-or-hold).
875
+ * A full close drives debt to 0 (`risk_ratio` MAX), which always passes.
876
+ *
877
+ * This is the everyday close / deleverage tool. The monotonic gate — rather than
878
+ * the `min_open` opening floor used by `place_market_order_v2` — lets a position
879
+ * in the `liquidation..min_borrow` danger band wind down _partially_: a small
880
+ * close that lifts the ratio from, say, 1.12 to 1.15 is allowed even though 1.15
881
+ * is still below `min_open`, which the opening floor would reject.
882
+ *
883
+ * Not reduce-only and uncapped, but the monotonic check makes a quantity cap
884
+ * unnecessary: a market (taker) fill settles immediately, so any genuinely
885
+ * exposure-_increasing_ trade lowers the ratio and aborts here, while any
886
+ * deleveraging trade is allowed at any size — an overshoot past the debt is fine
887
+ * (surplus is the manager's own holding) and `assert_price` still bounds slippage.
888
+ * Requires margin trading enabled; in reduce-only mode use
889
+ * `place_reduce_only_market_order_and_repay_loan`.
890
+ */
891
+ export function placeMarketOrderAndRepayLoan(options: PlaceMarketOrderAndRepayLoanOptions) {
892
+ const packageAddress = options.package ?? '@deepbook/margin';
893
+ const argumentsTypes = [
894
+ null,
895
+ null,
896
+ null,
897
+ null,
898
+ null,
899
+ null,
900
+ null,
901
+ 'u64',
902
+ 'u8',
903
+ 'u64',
904
+ 'bool',
905
+ 'bool',
906
+ '0x2::clock::Clock',
907
+ ] satisfies (string | null)[];
908
+ const parameterNames = [
909
+ 'registry',
910
+ 'marginManager',
911
+ 'pool',
912
+ 'baseMarginPool',
913
+ 'quoteMarginPool',
914
+ 'baseOracle',
915
+ 'quoteOracle',
916
+ 'clientOrderId',
917
+ 'selfMatchingOption',
918
+ 'quantity',
919
+ 'isBid',
920
+ 'payWithDeep',
921
+ ];
922
+ return (tx: Transaction) =>
923
+ tx.moveCall({
924
+ package: packageAddress,
925
+ module: 'pool_proxy',
926
+ function: 'place_market_order_and_repay_loan',
927
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
928
+ typeArguments: options.typeArguments,
929
+ });
930
+ }
931
+ export interface ModifyOrderArguments {
932
+ registry: RawTransactionArgument<string>;
933
+ marginManager: RawTransactionArgument<string>;
934
+ pool: RawTransactionArgument<string>;
935
+ orderId: RawTransactionArgument<number | bigint>;
936
+ newQuantity: RawTransactionArgument<number | bigint>;
937
+ }
938
+ export interface ModifyOrderOptions {
939
+ package?: string;
940
+ arguments:
941
+ | ModifyOrderArguments
942
+ | [
943
+ registry: RawTransactionArgument<string>,
944
+ marginManager: RawTransactionArgument<string>,
945
+ pool: RawTransactionArgument<string>,
946
+ orderId: RawTransactionArgument<number | bigint>,
947
+ newQuantity: RawTransactionArgument<number | bigint>,
948
+ ];
949
+ typeArguments: [string, string];
950
+ }
951
+ /** Modifies an order */
952
+ export function modifyOrder(options: ModifyOrderOptions) {
953
+ const packageAddress = options.package ?? '@deepbook/margin';
954
+ const argumentsTypes = [null, null, null, 'u128', 'u64', '0x2::clock::Clock'] satisfies (
955
+ | string
956
+ | null
957
+ )[];
958
+ const parameterNames = ['registry', 'marginManager', 'pool', 'orderId', 'newQuantity'];
959
+ return (tx: Transaction) =>
960
+ tx.moveCall({
961
+ package: packageAddress,
962
+ module: 'pool_proxy',
963
+ function: 'modify_order',
964
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
965
+ typeArguments: options.typeArguments,
966
+ });
967
+ }
968
+ export interface CancelOrderArguments {
969
+ registry: RawTransactionArgument<string>;
970
+ marginManager: RawTransactionArgument<string>;
971
+ pool: RawTransactionArgument<string>;
972
+ orderId: RawTransactionArgument<number | bigint>;
973
+ }
974
+ export interface CancelOrderOptions {
975
+ package?: string;
976
+ arguments:
977
+ | CancelOrderArguments
978
+ | [
979
+ registry: RawTransactionArgument<string>,
980
+ marginManager: RawTransactionArgument<string>,
981
+ pool: RawTransactionArgument<string>,
982
+ orderId: RawTransactionArgument<number | bigint>,
983
+ ];
984
+ typeArguments: [string, string];
985
+ }
986
+ /** Cancels an order */
987
+ export function cancelOrder(options: CancelOrderOptions) {
988
+ const packageAddress = options.package ?? '@deepbook/margin';
989
+ const argumentsTypes = [null, null, null, 'u128', '0x2::clock::Clock'] satisfies (
990
+ | string
991
+ | null
992
+ )[];
993
+ const parameterNames = ['registry', 'marginManager', 'pool', 'orderId'];
994
+ return (tx: Transaction) =>
995
+ tx.moveCall({
996
+ package: packageAddress,
997
+ module: 'pool_proxy',
998
+ function: 'cancel_order',
999
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1000
+ typeArguments: options.typeArguments,
1001
+ });
1002
+ }
1003
+ export interface CancelOrdersArguments {
1004
+ registry: RawTransactionArgument<string>;
1005
+ marginManager: RawTransactionArgument<string>;
1006
+ pool: RawTransactionArgument<string>;
1007
+ orderIds: RawTransactionArgument<Array<number | bigint>>;
1008
+ }
1009
+ export interface CancelOrdersOptions {
1010
+ package?: string;
1011
+ arguments:
1012
+ | CancelOrdersArguments
1013
+ | [
1014
+ registry: RawTransactionArgument<string>,
1015
+ marginManager: RawTransactionArgument<string>,
1016
+ pool: RawTransactionArgument<string>,
1017
+ orderIds: RawTransactionArgument<Array<number | bigint>>,
1018
+ ];
1019
+ typeArguments: [string, string];
1020
+ }
1021
+ /** Cancel multiple orders within a vector. */
1022
+ export function cancelOrders(options: CancelOrdersOptions) {
1023
+ const packageAddress = options.package ?? '@deepbook/margin';
1024
+ const argumentsTypes = [null, null, null, 'vector<u128>', '0x2::clock::Clock'] satisfies (
1025
+ | string
1026
+ | null
1027
+ )[];
1028
+ const parameterNames = ['registry', 'marginManager', 'pool', 'orderIds'];
1029
+ return (tx: Transaction) =>
1030
+ tx.moveCall({
1031
+ package: packageAddress,
1032
+ module: 'pool_proxy',
1033
+ function: 'cancel_orders',
1034
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1035
+ typeArguments: options.typeArguments,
1036
+ });
1037
+ }
1038
+ export interface CancelAllOrdersArguments {
1039
+ registry: RawTransactionArgument<string>;
1040
+ marginManager: RawTransactionArgument<string>;
1041
+ pool: RawTransactionArgument<string>;
1042
+ }
1043
+ export interface CancelAllOrdersOptions {
1044
+ package?: string;
1045
+ arguments:
1046
+ | CancelAllOrdersArguments
1047
+ | [
1048
+ registry: RawTransactionArgument<string>,
1049
+ marginManager: RawTransactionArgument<string>,
1050
+ pool: RawTransactionArgument<string>,
1051
+ ];
1052
+ typeArguments: [string, string];
1053
+ }
1054
+ /** Cancels all orders for the given account. */
1055
+ export function cancelAllOrders(options: CancelAllOrdersOptions) {
1056
+ const packageAddress = options.package ?? '@deepbook/margin';
1057
+ const argumentsTypes = [null, null, null, '0x2::clock::Clock'] satisfies (string | null)[];
1058
+ const parameterNames = ['registry', 'marginManager', 'pool'];
1059
+ return (tx: Transaction) =>
1060
+ tx.moveCall({
1061
+ package: packageAddress,
1062
+ module: 'pool_proxy',
1063
+ function: 'cancel_all_orders',
1064
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1065
+ typeArguments: options.typeArguments,
1066
+ });
1067
+ }
1068
+ export interface WithdrawSettledAmountsArguments {
1069
+ registry: RawTransactionArgument<string>;
1070
+ marginManager: RawTransactionArgument<string>;
1071
+ pool: RawTransactionArgument<string>;
1072
+ }
1073
+ export interface WithdrawSettledAmountsOptions {
1074
+ package?: string;
1075
+ arguments:
1076
+ | WithdrawSettledAmountsArguments
1077
+ | [
1078
+ registry: RawTransactionArgument<string>,
1079
+ marginManager: RawTransactionArgument<string>,
1080
+ pool: RawTransactionArgument<string>,
1081
+ ];
1082
+ typeArguments: [string, string];
1083
+ }
1084
+ /** Withdraw settled amounts to balance_manager. */
1085
+ export function withdrawSettledAmounts(options: WithdrawSettledAmountsOptions) {
1086
+ const packageAddress = options.package ?? '@deepbook/margin';
1087
+ const argumentsTypes = [null, null, null] satisfies (string | null)[];
1088
+ const parameterNames = ['registry', 'marginManager', 'pool'];
1089
+ return (tx: Transaction) =>
1090
+ tx.moveCall({
1091
+ package: packageAddress,
1092
+ module: 'pool_proxy',
1093
+ function: 'withdraw_settled_amounts',
1094
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1095
+ typeArguments: options.typeArguments,
1096
+ });
1097
+ }
1098
+ export interface WithdrawSettledAmountsPermissionlessArguments {
1099
+ registry: RawTransactionArgument<string>;
1100
+ marginManager: RawTransactionArgument<string>;
1101
+ pool: RawTransactionArgument<string>;
1102
+ }
1103
+ export interface WithdrawSettledAmountsPermissionlessOptions {
1104
+ package?: string;
1105
+ arguments:
1106
+ | WithdrawSettledAmountsPermissionlessArguments
1107
+ | [
1108
+ registry: RawTransactionArgument<string>,
1109
+ marginManager: RawTransactionArgument<string>,
1110
+ pool: RawTransactionArgument<string>,
1111
+ ];
1112
+ typeArguments: [string, string];
1113
+ }
1114
+ /**
1115
+ * Withdraw settled amounts to balance_manager permissionlessly. Anyone can call
1116
+ * this function to settle balances for a margin manager.
1117
+ */
1118
+ export function withdrawSettledAmountsPermissionless(
1119
+ options: WithdrawSettledAmountsPermissionlessOptions,
1120
+ ) {
1121
+ const packageAddress = options.package ?? '@deepbook/margin';
1122
+ const argumentsTypes = [null, null, null] satisfies (string | null)[];
1123
+ const parameterNames = ['registry', 'marginManager', 'pool'];
1124
+ return (tx: Transaction) =>
1125
+ tx.moveCall({
1126
+ package: packageAddress,
1127
+ module: 'pool_proxy',
1128
+ function: 'withdraw_settled_amounts_permissionless',
1129
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1130
+ typeArguments: options.typeArguments,
1131
+ });
1132
+ }
1133
+ export interface StakeArguments {
1134
+ registry: RawTransactionArgument<string>;
1135
+ marginManager: RawTransactionArgument<string>;
1136
+ pool: RawTransactionArgument<string>;
1137
+ amount: RawTransactionArgument<number | bigint>;
1138
+ }
1139
+ export interface StakeOptions {
1140
+ package?: string;
1141
+ arguments:
1142
+ | StakeArguments
1143
+ | [
1144
+ registry: RawTransactionArgument<string>,
1145
+ marginManager: RawTransactionArgument<string>,
1146
+ pool: RawTransactionArgument<string>,
1147
+ amount: RawTransactionArgument<number | bigint>,
1148
+ ];
1149
+ typeArguments: [string, string];
1150
+ }
1151
+ /** Stake DEEP tokens to the pool. */
1152
+ export function stake(options: StakeOptions) {
1153
+ const packageAddress = options.package ?? '@deepbook/margin';
1154
+ const argumentsTypes = [null, null, null, 'u64'] satisfies (string | null)[];
1155
+ const parameterNames = ['registry', 'marginManager', 'pool', 'amount'];
1156
+ return (tx: Transaction) =>
1157
+ tx.moveCall({
1158
+ package: packageAddress,
1159
+ module: 'pool_proxy',
1160
+ function: 'stake',
1161
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1162
+ typeArguments: options.typeArguments,
1163
+ });
1164
+ }
1165
+ export interface UnstakeArguments {
1166
+ registry: RawTransactionArgument<string>;
1167
+ marginManager: RawTransactionArgument<string>;
1168
+ pool: RawTransactionArgument<string>;
1169
+ }
1170
+ export interface UnstakeOptions {
1171
+ package?: string;
1172
+ arguments:
1173
+ | UnstakeArguments
1174
+ | [
1175
+ registry: RawTransactionArgument<string>,
1176
+ marginManager: RawTransactionArgument<string>,
1177
+ pool: RawTransactionArgument<string>,
1178
+ ];
1179
+ typeArguments: [string, string];
1180
+ }
1181
+ /** Unstake DEEP tokens from the pool. */
1182
+ export function unstake(options: UnstakeOptions) {
1183
+ const packageAddress = options.package ?? '@deepbook/margin';
1184
+ const argumentsTypes = [null, null, null] satisfies (string | null)[];
1185
+ const parameterNames = ['registry', 'marginManager', 'pool'];
1186
+ return (tx: Transaction) =>
1187
+ tx.moveCall({
1188
+ package: packageAddress,
1189
+ module: 'pool_proxy',
1190
+ function: 'unstake',
1191
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1192
+ typeArguments: options.typeArguments,
1193
+ });
1194
+ }
1195
+ export interface SubmitProposalArguments {
1196
+ registry: RawTransactionArgument<string>;
1197
+ marginManager: RawTransactionArgument<string>;
1198
+ pool: RawTransactionArgument<string>;
1199
+ takerFee: RawTransactionArgument<number | bigint>;
1200
+ makerFee: RawTransactionArgument<number | bigint>;
1201
+ stakeRequired: RawTransactionArgument<number | bigint>;
1202
+ }
1203
+ export interface SubmitProposalOptions {
1204
+ package?: string;
1205
+ arguments:
1206
+ | SubmitProposalArguments
1207
+ | [
1208
+ registry: RawTransactionArgument<string>,
1209
+ marginManager: RawTransactionArgument<string>,
1210
+ pool: RawTransactionArgument<string>,
1211
+ takerFee: RawTransactionArgument<number | bigint>,
1212
+ makerFee: RawTransactionArgument<number | bigint>,
1213
+ stakeRequired: RawTransactionArgument<number | bigint>,
1214
+ ];
1215
+ typeArguments: [string, string];
1216
+ }
1217
+ /** Submit proposal using the margin manager. */
1218
+ export function submitProposal(options: SubmitProposalOptions) {
1219
+ const packageAddress = options.package ?? '@deepbook/margin';
1220
+ const argumentsTypes = [null, null, null, 'u64', 'u64', 'u64'] satisfies (string | null)[];
1221
+ const parameterNames = [
1222
+ 'registry',
1223
+ 'marginManager',
1224
+ 'pool',
1225
+ 'takerFee',
1226
+ 'makerFee',
1227
+ 'stakeRequired',
1228
+ ];
1229
+ return (tx: Transaction) =>
1230
+ tx.moveCall({
1231
+ package: packageAddress,
1232
+ module: 'pool_proxy',
1233
+ function: 'submit_proposal',
1234
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1235
+ typeArguments: options.typeArguments,
1236
+ });
1237
+ }
1238
+ export interface VoteArguments {
1239
+ registry: RawTransactionArgument<string>;
1240
+ marginManager: RawTransactionArgument<string>;
1241
+ pool: RawTransactionArgument<string>;
1242
+ proposalId: RawTransactionArgument<string>;
1243
+ }
1244
+ export interface VoteOptions {
1245
+ package?: string;
1246
+ arguments:
1247
+ | VoteArguments
1248
+ | [
1249
+ registry: RawTransactionArgument<string>,
1250
+ marginManager: RawTransactionArgument<string>,
1251
+ pool: RawTransactionArgument<string>,
1252
+ proposalId: RawTransactionArgument<string>,
1253
+ ];
1254
+ typeArguments: [string, string];
1255
+ }
1256
+ /** Vote on a proposal using the margin manager. */
1257
+ export function vote(options: VoteOptions) {
1258
+ const packageAddress = options.package ?? '@deepbook/margin';
1259
+ const argumentsTypes = [null, null, null, '0x2::object::ID'] satisfies (string | null)[];
1260
+ const parameterNames = ['registry', 'marginManager', 'pool', 'proposalId'];
1261
+ return (tx: Transaction) =>
1262
+ tx.moveCall({
1263
+ package: packageAddress,
1264
+ module: 'pool_proxy',
1265
+ function: 'vote',
1266
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1267
+ typeArguments: options.typeArguments,
1268
+ });
1269
+ }
1270
+ export interface ClaimRebatesArguments {
1271
+ registry: RawTransactionArgument<string>;
1272
+ marginManager: RawTransactionArgument<string>;
1273
+ pool: RawTransactionArgument<string>;
1274
+ }
1275
+ export interface ClaimRebatesOptions {
1276
+ package?: string;
1277
+ arguments:
1278
+ | ClaimRebatesArguments
1279
+ | [
1280
+ registry: RawTransactionArgument<string>,
1281
+ marginManager: RawTransactionArgument<string>,
1282
+ pool: RawTransactionArgument<string>,
1283
+ ];
1284
+ typeArguments: [string, string];
1285
+ }
1286
+ export function claimRebates(options: ClaimRebatesOptions) {
1287
+ const packageAddress = options.package ?? '@deepbook/margin';
1288
+ const argumentsTypes = [null, null, null] satisfies (string | null)[];
1289
+ const parameterNames = ['registry', 'marginManager', 'pool'];
1290
+ return (tx: Transaction) =>
1291
+ tx.moveCall({
1292
+ package: packageAddress,
1293
+ module: 'pool_proxy',
1294
+ function: 'claim_rebates',
1295
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
1296
+ typeArguments: options.typeArguments,
1297
+ });
1298
+ }