@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.
- package/CHANGELOG.md +60 -0
- package/dist/client.d.mts +5 -0
- package/dist/client.d.mts.map +1 -1
- package/dist/client.mjs +7 -0
- package/dist/client.mjs.map +1 -1
- package/dist/contracts/deepbook/balance_manager.mjs +413 -0
- package/dist/contracts/deepbook/balance_manager.mjs.map +1 -0
- package/dist/contracts/deepbook/balances.d.mts +4 -4
- package/dist/contracts/deepbook/big_vector.mjs +43 -0
- package/dist/contracts/deepbook/big_vector.mjs.map +1 -0
- package/dist/contracts/deepbook/book.mjs +29 -0
- package/dist/contracts/deepbook/book.mjs.map +1 -0
- package/dist/contracts/deepbook/deep_price.d.mts +3 -3
- package/dist/contracts/deepbook/deep_price.mjs +1 -1
- package/dist/contracts/deepbook/deps/std/type_name.mjs +17 -0
- package/dist/contracts/deepbook/deps/std/type_name.mjs.map +1 -0
- package/dist/contracts/deepbook/deps/sui/bag.mjs +43 -0
- package/dist/contracts/deepbook/deps/sui/bag.mjs.map +1 -0
- package/dist/contracts/deepbook/deps/sui/balance.mjs +21 -0
- package/dist/contracts/deepbook/deps/sui/balance.mjs.map +1 -0
- package/dist/contracts/deepbook/deps/sui/table.mjs +38 -0
- package/dist/contracts/deepbook/deps/sui/table.mjs.map +1 -0
- package/dist/contracts/deepbook/deps/sui/vec_map.mjs +37 -0
- package/dist/contracts/deepbook/deps/sui/vec_map.mjs.map +1 -0
- package/dist/contracts/deepbook/deps/sui/versioned.mjs +19 -0
- package/dist/contracts/deepbook/deps/sui/versioned.mjs.map +1 -0
- package/dist/contracts/deepbook/governance.mjs +49 -0
- package/dist/contracts/deepbook/governance.mjs.map +1 -0
- package/dist/contracts/deepbook/history.mjs +56 -0
- package/dist/contracts/deepbook/history.mjs.map +1 -0
- package/dist/contracts/deepbook/order.d.mts +12 -12
- package/dist/contracts/deepbook/pool.mjs +1739 -0
- package/dist/contracts/deepbook/pool.mjs.map +1 -0
- package/dist/contracts/deepbook/registry.mjs +295 -0
- package/dist/contracts/deepbook/registry.mjs.map +1 -0
- package/dist/contracts/deepbook/state.mjs +89 -0
- package/dist/contracts/deepbook/state.mjs.map +1 -0
- package/dist/contracts/deepbook/trade_params.mjs +21 -0
- package/dist/contracts/deepbook/trade_params.mjs.map +1 -0
- package/dist/contracts/deepbook/vault.mjs +42 -0
- package/dist/contracts/deepbook/vault.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/deepbook/balance_manager.mjs +53 -0
- package/dist/contracts/deepbook_margin/deps/deepbook/balance_manager.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/std/type_name.mjs +17 -0
- package/dist/contracts/deepbook_margin/deps/std/type_name.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/sui/bag.mjs +43 -0
- package/dist/contracts/deepbook_margin/deps/sui/bag.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/sui/balance.mjs +21 -0
- package/dist/contracts/deepbook_margin/deps/sui/balance.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/sui/table.mjs +38 -0
- package/dist/contracts/deepbook_margin/deps/sui/table.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/sui/vec_map.mjs +37 -0
- package/dist/contracts/deepbook_margin/deps/sui/vec_map.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/sui/vec_set.mjs +26 -0
- package/dist/contracts/deepbook_margin/deps/sui/vec_set.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/deps/sui/versioned.mjs +19 -0
- package/dist/contracts/deepbook_margin/deps/sui/versioned.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/margin_manager.mjs +989 -0
- package/dist/contracts/deepbook_margin/margin_manager.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/margin_pool.mjs +550 -0
- package/dist/contracts/deepbook_margin/margin_pool.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/margin_registry.mjs +786 -0
- package/dist/contracts/deepbook_margin/margin_registry.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/margin_state.mjs +30 -0
- package/dist/contracts/deepbook_margin/margin_state.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/oracle.mjs +82 -0
- package/dist/contracts/deepbook_margin/oracle.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/pool_proxy.mjs +644 -0
- package/dist/contracts/deepbook_margin/pool_proxy.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/position_manager.mjs +32 -0
- package/dist/contracts/deepbook_margin/position_manager.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/protocol_config.mjs +122 -0
- package/dist/contracts/deepbook_margin/protocol_config.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/protocol_fees.mjs +58 -0
- package/dist/contracts/deepbook_margin/protocol_fees.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/rate_limiter.mjs +26 -0
- package/dist/contracts/deepbook_margin/rate_limiter.mjs.map +1 -0
- package/dist/contracts/deepbook_margin/tpsl.mjs +171 -0
- package/dist/contracts/deepbook_margin/tpsl.mjs.map +1 -0
- package/dist/contracts/margin_liquidation/deps/sui/bag.mjs +43 -0
- package/dist/contracts/margin_liquidation/deps/sui/bag.mjs.map +1 -0
- package/dist/contracts/margin_liquidation/liquidation_vault.mjs +179 -0
- package/dist/contracts/margin_liquidation/liquidation_vault.mjs.map +1 -0
- package/dist/contracts/utils/index.d.mts +1 -1
- package/dist/contracts/utils/index.mjs +92 -3
- package/dist/contracts/utils/index.mjs.map +1 -1
- package/dist/queries/registryQueries.mjs +13 -0
- package/dist/queries/registryQueries.mjs.map +1 -1
- package/dist/transactions/balanceManager.d.mts.map +1 -1
- package/dist/transactions/balanceManager.mjs +119 -100
- package/dist/transactions/balanceManager.mjs.map +1 -1
- package/dist/transactions/deepbook.d.mts.map +1 -1
- package/dist/transactions/deepbook.mjs +464 -439
- package/dist/transactions/deepbook.mjs.map +1 -1
- package/dist/transactions/deepbookAdmin.d.mts.map +1 -1
- package/dist/transactions/deepbookAdmin.mjs +151 -135
- package/dist/transactions/deepbookAdmin.mjs.map +1 -1
- package/dist/transactions/flashLoans.d.mts.map +1 -1
- package/dist/transactions/flashLoans.mjs +29 -22
- package/dist/transactions/flashLoans.mjs.map +1 -1
- package/dist/transactions/governance.d.mts.map +1 -1
- package/dist/transactions/governance.mjs +34 -33
- package/dist/transactions/governance.mjs.map +1 -1
- package/dist/transactions/marginAdmin.d.mts +10 -0
- package/dist/transactions/marginAdmin.d.mts.map +1 -1
- package/dist/transactions/marginAdmin.mjs +186 -169
- package/dist/transactions/marginAdmin.mjs.map +1 -1
- package/dist/transactions/marginLiquidations.d.mts +3 -3
- package/dist/transactions/marginLiquidations.d.mts.map +1 -1
- package/dist/transactions/marginLiquidations.mjs +53 -54
- package/dist/transactions/marginLiquidations.mjs.map +1 -1
- package/dist/transactions/marginMaintainer.d.mts.map +1 -1
- package/dist/transactions/marginMaintainer.mjs +83 -83
- package/dist/transactions/marginMaintainer.mjs.map +1 -1
- package/dist/transactions/marginManager.d.mts.map +1 -1
- package/dist/transactions/marginManager.mjs +330 -311
- package/dist/transactions/marginManager.mjs.map +1 -1
- package/dist/transactions/marginPool.d.mts.map +1 -1
- package/dist/transactions/marginPool.mjs +93 -89
- package/dist/transactions/marginPool.mjs.map +1 -1
- package/dist/transactions/marginRegistry.d.mts +22 -15
- package/dist/transactions/marginRegistry.d.mts.map +1 -1
- package/dist/transactions/marginRegistry.mjs +101 -68
- package/dist/transactions/marginRegistry.mjs.map +1 -1
- package/dist/transactions/marginTPSL.d.mts +27 -9
- package/dist/transactions/marginTPSL.d.mts.map +1 -1
- package/dist/transactions/marginTPSL.mjs +108 -82
- package/dist/transactions/marginTPSL.mjs.map +1 -1
- package/dist/transactions/poolProxy.d.mts +32 -0
- package/dist/transactions/poolProxy.d.mts.map +1 -1
- package/dist/transactions/poolProxy.mjs +269 -189
- package/dist/transactions/poolProxy.mjs.map +1 -1
- package/dist/utils/constants.mjs +4 -4
- package/dist/utils/constants.mjs.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +8 -0
- package/src/contracts/deepbook/balance_manager.ts +46 -5
- package/src/contracts/deepbook/constants.ts +13 -0
- package/src/contracts/deepbook/pool.ts +133 -0
- package/src/contracts/deepbook/registry.ts +136 -1
- package/src/contracts/deepbook_margin/deps/deepbook/balance_manager.ts +49 -0
- package/src/contracts/deepbook_margin/deps/std/type_name.ts +24 -0
- package/src/contracts/deepbook_margin/deps/sui/bag.ts +41 -0
- package/src/contracts/deepbook_margin/deps/sui/balance.ts +19 -0
- package/src/contracts/deepbook_margin/deps/sui/table.ts +36 -0
- package/src/contracts/deepbook_margin/deps/sui/vec_map.ts +33 -0
- package/src/contracts/deepbook_margin/deps/sui/vec_set.ts +22 -0
- package/src/contracts/deepbook_margin/deps/sui/versioned.ts +13 -0
- package/src/contracts/deepbook_margin/margin_constants.ts +329 -0
- package/src/contracts/deepbook_margin/margin_manager.ts +1772 -0
- package/src/contracts/deepbook_margin/margin_pool.ts +1129 -0
- package/src/contracts/deepbook_margin/margin_registry.ts +1207 -0
- package/src/contracts/deepbook_margin/margin_state.ts +26 -0
- package/src/contracts/deepbook_margin/oracle.ts +99 -0
- package/src/contracts/deepbook_margin/pool_proxy.ts +1298 -0
- package/src/contracts/deepbook_margin/position_manager.ts +28 -0
- package/src/contracts/deepbook_margin/protocol_config.ts +163 -0
- package/src/contracts/deepbook_margin/protocol_fees.ts +153 -0
- package/src/contracts/deepbook_margin/rate_limiter.ts +80 -0
- package/src/contracts/deepbook_margin/tpsl.ts +559 -0
- package/src/contracts/margin_liquidation/deps/sui/bag.ts +41 -0
- package/src/contracts/margin_liquidation/liquidation_vault.ts +401 -0
- package/src/queries/registryQueries.ts +15 -0
- package/src/transactions/balanceManager.ts +140 -90
- package/src/transactions/deepbook.ts +586 -494
- package/src/transactions/deepbookAdmin.ts +154 -146
- package/src/transactions/flashLoans.ts +29 -20
- package/src/transactions/governance.ts +50 -37
- package/src/transactions/marginAdmin.ts +247 -188
- package/src/transactions/marginLiquidations.ts +70 -55
- package/src/transactions/marginMaintainer.ts +106 -88
- package/src/transactions/marginManager.ts +414 -348
- package/src/transactions/marginPool.ts +140 -103
- package/src/transactions/marginRegistry.ts +103 -70
- package/src/transactions/marginTPSL.ts +151 -87
- package/src/transactions/poolProxy.ts +384 -205
- 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.
|
|
22
|
-
|
|
23
|
-
arguments:
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
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.
|
|
39
|
-
|
|
40
|
-
arguments:
|
|
41
|
-
|
|
42
|
-
|
|
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.
|
|
56
|
-
|
|
57
|
-
arguments:
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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.
|
|
75
|
-
|
|
76
|
-
arguments:
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
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.
|
|
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":";;;;;;;;
|
|
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.
|
|
17
|
-
|
|
18
|
-
arguments:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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.
|
|
41
|
-
|
|
42
|
-
arguments:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
poolConfig
|
|
47
|
-
|
|
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.
|
|
57
|
-
|
|
58
|
-
arguments:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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.
|
|
72
|
-
|
|
73
|
-
arguments:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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.
|
|
87
|
-
|
|
88
|
-
arguments:
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
poolConfig
|
|
93
|
-
|
|
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.
|
|
103
|
-
|
|
104
|
-
arguments:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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.
|
|
119
|
-
|
|
120
|
-
arguments:
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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.
|
|
135
|
-
|
|
136
|
-
arguments:
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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.
|
|
148
|
-
|
|
149
|
-
arguments:
|
|
150
|
-
|
|
151
|
-
|
|
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.
|
|
159
|
-
|
|
160
|
-
arguments:
|
|
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.
|
|
166
|
-
|
|
167
|
-
arguments:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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.
|
|
176
|
-
|
|
177
|
-
arguments:
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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.
|
|
190
|
-
|
|
191
|
-
arguments:
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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.
|
|
208
|
-
|
|
209
|
-
arguments:
|
|
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.
|
|
218
|
-
|
|
219
|
-
arguments:
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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.
|
|
232
|
-
|
|
233
|
-
arguments:
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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.
|
|
241
|
-
|
|
242
|
-
arguments:
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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.
|
|
251
|
-
|
|
252
|
-
arguments:
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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.
|
|
262
|
-
|
|
263
|
-
arguments:
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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.
|
|
274
|
-
|
|
275
|
-
arguments:
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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
|
}
|