aftermath-ts-sdk 1.2.51 → 1.2.52-perps.3
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/README.md +62 -28
- package/dist/general/apiHelpers/eventsApiHelpers.d.ts +1 -1
- package/dist/general/apiHelpers/eventsApiHelpers.d.ts.map +1 -1
- package/dist/general/apiHelpers/eventsApiHelpers.js +4 -1
- package/dist/general/apiHelpers/transactionsApiHelpers.d.ts +6 -0
- package/dist/general/apiHelpers/transactionsApiHelpers.d.ts.map +1 -1
- package/dist/general/apiHelpers/transactionsApiHelpers.js +46 -0
- package/dist/general/dynamicGas/dynamicGas.d.ts +34 -0
- package/dist/general/dynamicGas/dynamicGas.d.ts.map +1 -1
- package/dist/general/dynamicGas/dynamicGas.js +34 -0
- package/dist/general/dynamicGas/dynamicGasTypes.d.ts +25 -0
- package/dist/general/dynamicGas/dynamicGasTypes.d.ts.map +1 -1
- package/dist/general/prices/coinGeckoTypes.d.ts +2 -0
- package/dist/general/prices/coinGeckoTypes.d.ts.map +1 -1
- package/dist/general/prices/prices.d.ts +73 -0
- package/dist/general/prices/prices.d.ts.map +1 -1
- package/dist/general/prices/prices.js +73 -0
- package/dist/general/providers/aftermath.d.ts +107 -27
- package/dist/general/providers/aftermath.d.ts.map +1 -1
- package/dist/general/providers/aftermath.js +110 -30
- package/dist/general/providers/aftermathApi.d.ts +128 -10
- package/dist/general/providers/aftermathApi.d.ts.map +1 -1
- package/dist/general/providers/aftermathApi.js +133 -14
- package/dist/general/types/castingTypes.d.ts +15 -7
- package/dist/general/types/castingTypes.d.ts.map +1 -1
- package/dist/general/types/castingTypes.js +6 -0
- package/dist/general/types/configTypes.d.ts +14 -8
- package/dist/general/types/configTypes.d.ts.map +1 -1
- package/dist/general/types/generalTypes.d.ts +229 -7
- package/dist/general/types/generalTypes.d.ts.map +1 -1
- package/dist/general/types/moveErrorsInterface.d.ts +1 -1
- package/dist/general/types/moveErrorsInterface.d.ts.map +1 -1
- package/dist/general/types/suiTypes.d.ts +0 -16
- package/dist/general/types/suiTypes.d.ts.map +1 -1
- package/dist/general/types/suiTypes.js +3 -25
- package/dist/general/utils/caller.d.ts +6 -3
- package/dist/general/utils/caller.d.ts.map +1 -1
- package/dist/general/utils/caller.js +22 -4
- package/dist/general/utils/casting.d.ts +156 -5
- package/dist/general/utils/casting.d.ts.map +1 -1
- package/dist/general/utils/casting.js +159 -18
- package/dist/general/utils/fixedUtils.d.ts +89 -2
- package/dist/general/utils/fixedUtils.d.ts.map +1 -1
- package/dist/general/utils/fixedUtils.js +81 -4
- package/dist/general/utils/helpers.d.ts +327 -10
- package/dist/general/utils/helpers.d.ts.map +1 -1
- package/dist/general/utils/helpers.js +409 -91
- package/dist/general/utils/iFixedUtils.d.ts +64 -0
- package/dist/general/utils/iFixedUtils.d.ts.map +1 -1
- package/dist/general/utils/iFixedUtils.js +64 -0
- package/dist/general/wallet/wallet.d.ts +76 -1
- package/dist/general/wallet/wallet.d.ts.map +1 -1
- package/dist/general/wallet/wallet.js +75 -5
- package/dist/packages/auth/auth.d.ts +113 -4
- package/dist/packages/auth/auth.d.ts.map +1 -1
- package/dist/packages/auth/auth.js +190 -59
- package/dist/packages/auth/authTypes.d.ts +66 -0
- package/dist/packages/auth/authTypes.d.ts.map +1 -1
- package/dist/packages/coin/api/coinApi.d.ts.map +1 -1
- package/dist/packages/coin/api/coinApi.js +29 -20
- package/dist/packages/coin/coin.d.ts +256 -1
- package/dist/packages/coin/coin.d.ts.map +1 -1
- package/dist/packages/coin/coin.js +246 -15
- package/dist/packages/coin/coinTypes.d.ts +95 -0
- package/dist/packages/coin/coinTypes.d.ts.map +1 -1
- package/dist/packages/dca/api/dcaApi.d.ts +2 -0
- package/dist/packages/dca/api/dcaApi.d.ts.map +1 -1
- package/dist/packages/dca/api/dcaApi.js +6 -3
- package/dist/packages/dca/dca.d.ts +125 -35
- package/dist/packages/dca/dca.d.ts.map +1 -1
- package/dist/packages/dca/dca.js +135 -43
- package/dist/packages/dca/dcaTypes.d.ts +217 -42
- package/dist/packages/dca/dcaTypes.d.ts.map +1 -1
- package/dist/packages/farms/api/farmsApi.d.ts +725 -58
- package/dist/packages/farms/api/farmsApi.d.ts.map +1 -1
- package/dist/packages/farms/api/farmsApi.js +1149 -153
- package/dist/packages/farms/api/farmsApiCasting.d.ts +34 -18
- package/dist/packages/farms/api/farmsApiCasting.d.ts.map +1 -1
- package/dist/packages/farms/api/farmsApiCasting.js +218 -17
- package/dist/packages/farms/api/farmsApiCastingTypes.d.ts +117 -21
- package/dist/packages/farms/api/farmsApiCastingTypes.d.ts.map +1 -1
- package/dist/packages/farms/farms.d.ts +200 -12
- package/dist/packages/farms/farms.d.ts.map +1 -1
- package/dist/packages/farms/farms.js +204 -50
- package/dist/packages/farms/farmsStakedPosition.d.ts +143 -8
- package/dist/packages/farms/farmsStakedPosition.d.ts.map +1 -1
- package/dist/packages/farms/farmsStakedPosition.js +243 -137
- package/dist/packages/farms/farmsStakingPool.d.ts +171 -3
- package/dist/packages/farms/farmsStakingPool.d.ts.map +1 -1
- package/dist/packages/farms/farmsStakingPool.js +233 -73
- package/dist/packages/farms/farmsTypes.d.ts +310 -2
- package/dist/packages/farms/farmsTypes.d.ts.map +1 -1
- package/dist/packages/farms/farmsTypes.js +47 -0
- package/dist/packages/faucet/api/faucetApi.d.ts +9 -17
- package/dist/packages/faucet/api/faucetApi.d.ts.map +1 -1
- package/dist/packages/faucet/api/faucetApi.js +44 -49
- package/dist/packages/faucet/api/faucetApiCasting.d.ts.map +1 -1
- package/dist/packages/faucet/api/faucetApiCasting.js +8 -5
- package/dist/packages/faucet/api/faucetApiCastingTypes.d.ts +1 -4
- package/dist/packages/faucet/api/faucetApiCastingTypes.d.ts.map +1 -1
- package/dist/packages/faucet/faucet.d.ts +1 -1
- package/dist/packages/faucet/faucet.d.ts.map +1 -1
- package/dist/packages/faucet/faucet.js +1 -1
- package/dist/packages/faucet/faucetTypes.d.ts +2 -3
- package/dist/packages/faucet/faucetTypes.d.ts.map +1 -1
- package/dist/packages/limitOrders/api/limitOrdersApi.d.ts +12 -0
- package/dist/packages/limitOrders/api/limitOrdersApi.d.ts.map +1 -0
- package/dist/packages/limitOrders/api/limitOrdersApi.js +25 -0
- package/dist/packages/limitOrders/index.d.ts +2 -0
- package/dist/packages/limitOrders/index.d.ts.map +1 -0
- package/dist/packages/limitOrders/index.js +17 -0
- package/dist/packages/limitOrders/limitOrders.d.ts +143 -0
- package/dist/packages/limitOrders/limitOrders.d.ts.map +1 -0
- package/dist/packages/limitOrders/limitOrders.js +190 -0
- package/dist/packages/limitOrders/limitOrdersTypes.d.ts +211 -0
- package/dist/packages/limitOrders/limitOrdersTypes.d.ts.map +1 -0
- package/dist/packages/multisig/multisig.d.ts +34 -5
- package/dist/packages/multisig/multisig.d.ts.map +1 -1
- package/dist/packages/multisig/multisig.js +33 -4
- package/dist/packages/multisig/multisigTypes.d.ts +17 -0
- package/dist/packages/multisig/multisigTypes.d.ts.map +1 -1
- package/dist/packages/nftAmm/nftAmm.d.ts +1 -1
- package/dist/packages/nftAmm/nftAmm.d.ts.map +1 -1
- package/dist/packages/perpetuals/api/perpetualsApi.d.ts +38 -23
- package/dist/packages/perpetuals/api/perpetualsApi.d.ts.map +1 -1
- package/dist/packages/perpetuals/api/perpetualsApi.js +740 -299
- package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts +10 -6
- package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts.map +1 -1
- package/dist/packages/perpetuals/api/perpetualsApiCasting.js +112 -42
- package/dist/packages/perpetuals/perpetuals.d.ts +33 -4
- package/dist/packages/perpetuals/perpetuals.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetuals.js +105 -18
- package/dist/packages/perpetuals/perpetualsAccount.d.ts +107 -33
- package/dist/packages/perpetuals/perpetualsAccount.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsAccount.js +569 -68
- package/dist/packages/perpetuals/perpetualsCastingTypes.d.ts +104 -25
- package/dist/packages/perpetuals/perpetualsCastingTypes.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsMarket.d.ts +31 -9
- package/dist/packages/perpetuals/perpetualsMarket.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsMarket.js +85 -77
- package/dist/packages/perpetuals/perpetualsTypes.d.ts +348 -380
- package/dist/packages/perpetuals/perpetualsTypes.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsTypes.js +43 -113
- package/dist/packages/pools/api/poolsApiCasting.d.ts.map +1 -1
- package/dist/packages/pools/api/poolsApiCasting.js +0 -1
- package/dist/packages/pools/pool.d.ts +333 -106
- package/dist/packages/pools/pool.d.ts.map +1 -1
- package/dist/packages/pools/pool.js +347 -119
- package/dist/packages/pools/pools.d.ts +307 -39
- package/dist/packages/pools/pools.d.ts.map +1 -1
- package/dist/packages/pools/pools.js +323 -54
- package/dist/packages/pools/poolsTypes.d.ts +267 -2
- package/dist/packages/pools/poolsTypes.d.ts.map +1 -1
- package/dist/packages/referralVault/referralVault.d.ts +38 -1
- package/dist/packages/referralVault/referralVault.d.ts.map +1 -1
- package/dist/packages/referralVault/referralVault.js +37 -0
- package/dist/packages/router/api/routerApi.d.ts +2 -2
- package/dist/packages/router/api/routerApi.d.ts.map +1 -1
- package/dist/packages/router/api/routerApi.js +19 -11
- package/dist/packages/router/router.d.ts +214 -18
- package/dist/packages/router/router.d.ts.map +1 -1
- package/dist/packages/router/router.js +216 -20
- package/dist/packages/router/routerTypes.d.ts +202 -17
- package/dist/packages/router/routerTypes.d.ts.map +1 -1
- package/dist/packages/staking/staking.d.ts +306 -45
- package/dist/packages/staking/staking.d.ts.map +1 -1
- package/dist/packages/staking/staking.js +313 -51
- package/dist/packages/staking/stakingTypes.d.ts +431 -6
- package/dist/packages/staking/stakingTypes.d.ts.map +1 -1
- package/dist/packages/staking/stakingTypes.js +19 -0
- package/dist/packages/sui/sui.d.ts +40 -1
- package/dist/packages/sui/sui.d.ts.map +1 -1
- package/dist/packages/sui/sui.js +39 -0
- package/dist/packages/suiFrens/stakedSuiFren.d.ts +1 -1
- package/dist/packages/suiFrens/stakedSuiFren.d.ts.map +1 -1
- package/dist/packages/suiFrens/suiFren.d.ts +1 -1
- package/dist/packages/suiFrens/suiFren.d.ts.map +1 -1
- package/dist/packages/suiFrens/suiFrens.d.ts +1 -1
- package/dist/packages/suiFrens/suiFrens.d.ts.map +1 -1
- package/dist/packages/userData/api/userDataApi.d.ts +6 -0
- package/dist/packages/userData/api/userDataApi.d.ts.map +1 -0
- package/dist/packages/userData/api/userDataApi.js +12 -0
- package/dist/packages/userData/index.d.ts +2 -0
- package/dist/packages/userData/index.d.ts.map +1 -0
- package/dist/packages/userData/index.js +17 -0
- package/dist/packages/userData/userData.d.ts +89 -0
- package/dist/packages/userData/userData.d.ts.map +1 -0
- package/dist/packages/userData/userData.js +119 -0
- package/dist/packages/userData/userDataTypes.d.ts +29 -0
- package/dist/packages/userData/userDataTypes.d.ts.map +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/package.json +1 -1
- package/dist/general/historicalData/historicalData.d.ts +0 -15
- package/dist/general/historicalData/historicalData.d.ts.map +0 -1
- package/dist/general/historicalData/historicalData.js +0 -45
- package/dist/general/historicalData/historicalDataTypes.d.ts +0 -10
- package/dist/general/historicalData/historicalDataTypes.d.ts.map +0 -1
- package/dist/packages/dca/api/dcaApiCasting.d.ts +0 -11
- package/dist/packages/dca/api/dcaApiCasting.d.ts.map +0 -1
- package/dist/packages/dca/api/dcaApiCasting.js +0 -186
- package/dist/packages/dca/api/dcaApiCastingTypes.d.ts +0 -142
- package/dist/packages/dca/api/dcaApiCastingTypes.d.ts.map +0 -1
- package/dist/packages/oracle/api/oracleApi.d.ts +0 -13
- package/dist/packages/oracle/api/oracleApi.d.ts.map +0 -1
- package/dist/packages/oracle/api/oracleApi.js +0 -35
- package/dist/packages/oracle/oracle.d.ts +0 -15
- package/dist/packages/oracle/oracle.d.ts.map +0 -1
- package/dist/packages/oracle/oracle.js +0 -46
- package/dist/packages/oracle/oracleTypes.d.ts +0 -2
- package/dist/packages/oracle/oracleTypes.d.ts.map +0 -1
- package/dist/packages/oracle/oracleTypes.js +0 -2
- /package/dist/{general/historicalData/historicalDataTypes.js → packages/limitOrders/limitOrdersTypes.js} +0 -0
- /package/dist/packages/{dca/api/dcaApiCastingTypes.js → userData/userDataTypes.js} +0 -0
|
@@ -8,24 +8,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
-
var t = {};
|
|
13
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
-
t[p] = s[p];
|
|
15
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
-
t[p[i]] = s[p[i]];
|
|
19
|
-
}
|
|
20
|
-
return t;
|
|
21
|
-
};
|
|
22
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
12
|
exports.PerpetualsApi = void 0;
|
|
24
13
|
const transactions_1 = require("@mysten/sui/transactions");
|
|
25
14
|
const utils_1 = require("../../../general/utils");
|
|
26
15
|
const sui_1 = require("../../sui");
|
|
27
|
-
const perpetualsTypes_1 = require("../perpetualsTypes");
|
|
28
|
-
const perpetuals_1 = require("../perpetuals");
|
|
29
16
|
const eventsApiHelpers_1 = require("../../../general/apiHelpers/eventsApiHelpers");
|
|
30
17
|
const transactionsApiHelpers_1 = require("../../../general/apiHelpers/transactionsApiHelpers");
|
|
31
18
|
const bcs_1 = require("@mysten/sui/bcs");
|
|
@@ -36,12 +23,72 @@ class PerpetualsApi {
|
|
|
36
23
|
constructor(Provider) {
|
|
37
24
|
this.Provider = Provider;
|
|
38
25
|
// =========================================================================
|
|
26
|
+
// Objects
|
|
27
|
+
// =========================================================================
|
|
28
|
+
// public fetchMarket = async (inputs: {
|
|
29
|
+
// marketId: PerpetualsMarketId;
|
|
30
|
+
// collateralCoinType: CoinType;
|
|
31
|
+
// }): Promise<PerpetualsMarketData> => {
|
|
32
|
+
// const { collateralCoinType } = inputs;
|
|
33
|
+
// return this.Provider.Objects().fetchCastObject({
|
|
34
|
+
// objectId: inputs.marketId,
|
|
35
|
+
// objectFromSuiObjectResponse: (data) =>
|
|
36
|
+
// Casting.perpetuals.clearingHouseFromOnChain(
|
|
37
|
+
// data,
|
|
38
|
+
// collateralCoinType
|
|
39
|
+
// ),
|
|
40
|
+
// });
|
|
41
|
+
// };
|
|
42
|
+
// =========================================================================
|
|
43
|
+
// Inspections
|
|
44
|
+
// =========================================================================
|
|
45
|
+
// public fetchOrderbookPrice = async (inputs: {
|
|
46
|
+
// collateralCoinType: ObjectId;
|
|
47
|
+
// marketId: PerpetualsMarketId;
|
|
48
|
+
// // marketInitialSharedVersion: ObjectVersion;
|
|
49
|
+
// }): Promise<number> => {
|
|
50
|
+
// const {
|
|
51
|
+
// collateralCoinType,
|
|
52
|
+
// marketId,
|
|
53
|
+
// // marketInitialSharedVersion
|
|
54
|
+
// } = inputs;
|
|
55
|
+
// const tx = new Transaction();
|
|
56
|
+
// this.getBookPriceTx({
|
|
57
|
+
// tx,
|
|
58
|
+
// marketId,
|
|
59
|
+
// collateralCoinType,
|
|
60
|
+
// // marketInitialSharedVersion,
|
|
61
|
+
// });
|
|
62
|
+
// const bytes =
|
|
63
|
+
// await this.Provider.Inspections().fetchFirstBytesFromTxOutput({
|
|
64
|
+
// tx,
|
|
65
|
+
// });
|
|
66
|
+
// return PerpetualsApiCasting.orderbookPriceFromBytes(bytes);
|
|
67
|
+
// };
|
|
68
|
+
// public fetchAllMarketIds = async (inputs: {
|
|
69
|
+
// collateralCoinType: CoinType;
|
|
70
|
+
// }): Promise<PerpetualsMarketId[]> => {
|
|
71
|
+
// const { collateralCoinType } = inputs;
|
|
72
|
+
// const marketIdsData = await this.Provider.indexerCaller.fetchIndexer<
|
|
73
|
+
// {
|
|
74
|
+
// marketId: ObjectId;
|
|
75
|
+
// }[]
|
|
76
|
+
// >(
|
|
77
|
+
// `perpetuals/markets/${Helpers.addLeadingZeroesToType(
|
|
78
|
+
// collateralCoinType
|
|
79
|
+
// )}`
|
|
80
|
+
// );
|
|
81
|
+
// return marketIdsData.map((data) =>
|
|
82
|
+
// Helpers.addLeadingZeroesToType(data.marketId)
|
|
83
|
+
// );
|
|
84
|
+
// };
|
|
85
|
+
// =========================================================================
|
|
39
86
|
// Transaction Commands
|
|
40
87
|
// =========================================================================
|
|
41
88
|
this.depositCollateralTx = (inputs) => {
|
|
42
89
|
const { tx, collateralCoinType, accountCapId } = inputs;
|
|
43
90
|
return tx.moveCall({
|
|
44
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.
|
|
91
|
+
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "deposit_collateral"),
|
|
45
92
|
typeArguments: [collateralCoinType],
|
|
46
93
|
arguments: [
|
|
47
94
|
typeof accountCapId === "string"
|
|
@@ -58,7 +105,7 @@ class PerpetualsApi {
|
|
|
58
105
|
this.allocateCollateralTx = (inputs) => {
|
|
59
106
|
const { tx, collateralCoinType, accountCapId, marketId, amount } = inputs;
|
|
60
107
|
return tx.moveCall({
|
|
61
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
108
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "allocate_collateral"),
|
|
62
109
|
typeArguments: [collateralCoinType],
|
|
63
110
|
arguments: [
|
|
64
111
|
tx.sharedObjectRef({
|
|
@@ -76,7 +123,7 @@ class PerpetualsApi {
|
|
|
76
123
|
this.deallocateCollateralTx = (inputs) => {
|
|
77
124
|
const { tx, collateralCoinType, accountCapId, marketId, amount } = inputs;
|
|
78
125
|
return tx.moveCall({
|
|
79
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
126
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "deallocate_collateral"),
|
|
80
127
|
typeArguments: [collateralCoinType],
|
|
81
128
|
arguments: [
|
|
82
129
|
tx.sharedObjectRef({
|
|
@@ -95,7 +142,7 @@ class PerpetualsApi {
|
|
|
95
142
|
this.createMarketPositionTx = (inputs) => {
|
|
96
143
|
const { tx, collateralCoinType, accountCapId, marketId } = inputs;
|
|
97
144
|
return tx.moveCall({
|
|
98
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
145
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "create_market_position"),
|
|
99
146
|
typeArguments: [collateralCoinType],
|
|
100
147
|
arguments: [
|
|
101
148
|
tx.sharedObjectRef({
|
|
@@ -112,7 +159,7 @@ class PerpetualsApi {
|
|
|
112
159
|
this.shareClearingHouseTx = (inputs) => {
|
|
113
160
|
const { tx, collateralCoinType, marketId } = inputs;
|
|
114
161
|
return tx.moveCall({
|
|
115
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
162
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "share_clearing_house"),
|
|
116
163
|
typeArguments: [collateralCoinType],
|
|
117
164
|
arguments: [
|
|
118
165
|
typeof marketId === "string" ? tx.object(marketId) : marketId,
|
|
@@ -122,7 +169,7 @@ class PerpetualsApi {
|
|
|
122
169
|
this.startSessionTx = (inputs) => {
|
|
123
170
|
const { tx, collateralCoinType, accountCapId, marketId } = inputs;
|
|
124
171
|
return tx.moveCall({
|
|
125
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
172
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "start_session"),
|
|
126
173
|
typeArguments: [collateralCoinType],
|
|
127
174
|
arguments: [
|
|
128
175
|
tx.sharedObjectRef({
|
|
@@ -142,7 +189,7 @@ class PerpetualsApi {
|
|
|
142
189
|
this.endSessionTx = (inputs) => {
|
|
143
190
|
const { tx, collateralCoinType, sessionPotatoId } = inputs;
|
|
144
191
|
return tx.moveCall({
|
|
145
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
192
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "end_session"),
|
|
146
193
|
typeArguments: [collateralCoinType],
|
|
147
194
|
arguments: [
|
|
148
195
|
typeof sessionPotatoId === "string"
|
|
@@ -154,7 +201,7 @@ class PerpetualsApi {
|
|
|
154
201
|
this.placeMarketOrderTx = (inputs) => {
|
|
155
202
|
const { tx, collateralCoinType, sessionPotatoId, side, size } = inputs;
|
|
156
203
|
return tx.moveCall({
|
|
157
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
204
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "place_market_order"),
|
|
158
205
|
typeArguments: [collateralCoinType],
|
|
159
206
|
arguments: [
|
|
160
207
|
typeof sessionPotatoId === "string"
|
|
@@ -168,7 +215,7 @@ class PerpetualsApi {
|
|
|
168
215
|
this.placeLimitOrderTx = (inputs) => {
|
|
169
216
|
const { tx, collateralCoinType, sessionPotatoId, side, size, price, orderType, } = inputs;
|
|
170
217
|
return tx.moveCall({
|
|
171
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
218
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "place_limit_order"),
|
|
172
219
|
typeArguments: [collateralCoinType],
|
|
173
220
|
arguments: [
|
|
174
221
|
typeof sessionPotatoId === "string"
|
|
@@ -184,7 +231,23 @@ class PerpetualsApi {
|
|
|
184
231
|
this.cancelOrdersTx = (inputs) => {
|
|
185
232
|
const { tx, collateralCoinType, accountCapId, marketId, orderIds } = inputs;
|
|
186
233
|
return tx.moveCall({
|
|
187
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
234
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "cancel_orders"),
|
|
235
|
+
typeArguments: [collateralCoinType],
|
|
236
|
+
arguments: [
|
|
237
|
+
tx.sharedObjectRef({
|
|
238
|
+
objectId: marketId,
|
|
239
|
+
initialSharedVersion: inputs.marketInitialSharedVersion,
|
|
240
|
+
mutable: true,
|
|
241
|
+
}),
|
|
242
|
+
tx.object(accountCapId),
|
|
243
|
+
tx.pure(bcs_1.bcs.vector(bcs_1.bcs.u128()).serialize(orderIds)),
|
|
244
|
+
],
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
this.reduceOrdersTx = (inputs) => {
|
|
248
|
+
const { tx, packageId, collateralCoinType, accountCapId, marketId, orderIds, sizesToSubtract, } = inputs;
|
|
249
|
+
return tx.moveCall({
|
|
250
|
+
target: utils_1.Helpers.transactions.createTxTarget(packageId, PerpetualsApi.constants.moduleNames.interface, "reduce_orders"),
|
|
188
251
|
typeArguments: [collateralCoinType],
|
|
189
252
|
arguments: [
|
|
190
253
|
tx.sharedObjectRef({
|
|
@@ -194,13 +257,14 @@ class PerpetualsApi {
|
|
|
194
257
|
}),
|
|
195
258
|
tx.object(accountCapId),
|
|
196
259
|
tx.pure(bcs_1.bcs.vector(bcs_1.bcs.u128()).serialize(orderIds)),
|
|
260
|
+
tx.pure(bcs_1.bcs.vector(bcs_1.bcs.u64()).serialize(sizesToSubtract)),
|
|
197
261
|
],
|
|
198
262
|
});
|
|
199
263
|
};
|
|
200
264
|
this.withdrawCollateralTx = (inputs) => {
|
|
201
265
|
const { tx, collateralCoinType, accountCapId, amount } = inputs;
|
|
202
266
|
return tx.moveCall({
|
|
203
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.
|
|
267
|
+
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "withdraw_collateral"),
|
|
204
268
|
typeArguments: [collateralCoinType],
|
|
205
269
|
arguments: [
|
|
206
270
|
typeof accountCapId === "string"
|
|
@@ -213,9 +277,9 @@ class PerpetualsApi {
|
|
|
213
277
|
this.createAccountTx = (inputs) => {
|
|
214
278
|
const { tx, collateralCoinType } = inputs;
|
|
215
279
|
return tx.moveCall({
|
|
216
|
-
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.
|
|
280
|
+
target: utils_1.Helpers.transactions.createTxTarget(this.addresses.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "create_account"),
|
|
217
281
|
typeArguments: [collateralCoinType],
|
|
218
|
-
arguments: [tx.object(this.addresses.
|
|
282
|
+
arguments: [tx.object(this.addresses.objects.registry)],
|
|
219
283
|
});
|
|
220
284
|
};
|
|
221
285
|
// public getHotPotatoFieldsTx = (
|
|
@@ -250,7 +314,7 @@ class PerpetualsApi {
|
|
|
250
314
|
// const { tx, collateralCoinType, sessionPotatoId } = inputs;
|
|
251
315
|
// return tx.moveCall({
|
|
252
316
|
// target: Helpers.transactions.createTxTarget(
|
|
253
|
-
//
|
|
317
|
+
// inputs.packageId,
|
|
254
318
|
// PerpetualsApi.constants.moduleNames.clearingHouse,
|
|
255
319
|
// "get_hot_potato_fields"
|
|
256
320
|
// ),
|
|
@@ -262,56 +326,10 @@ class PerpetualsApi {
|
|
|
262
326
|
// ],
|
|
263
327
|
// });
|
|
264
328
|
// };
|
|
265
|
-
this.placeSLTPOrderTx = (inputs) => {
|
|
266
|
-
throw new Error("TODO");
|
|
267
|
-
// const { tx } = inputs;
|
|
268
|
-
// if ("price" in inputs) {
|
|
269
|
-
// this.placeLimitOrderTx({ ...inputs, tx });
|
|
270
|
-
// } else {
|
|
271
|
-
// this.placeMarketOrderTx({ ...inputs, tx });
|
|
272
|
-
// }
|
|
273
|
-
// const orderType = PerpetualsOrderType.PostOnly;
|
|
274
|
-
// const side =
|
|
275
|
-
// inputs.side === PerpetualsOrderSide.Ask
|
|
276
|
-
// ? PerpetualsOrderSide.Bid
|
|
277
|
-
// : PerpetualsOrderSide.Ask;
|
|
278
|
-
// const orderPrice =
|
|
279
|
-
// "price" in inputs ? inputs.price : inputs.marketPrice;
|
|
280
|
-
// if (
|
|
281
|
-
// "slPrice" in inputs &&
|
|
282
|
-
// ((inputs.side === PerpetualsOrderSide.Ask &&
|
|
283
|
-
// inputs.slPrice > orderPrice) ||
|
|
284
|
-
// (inputs.side === PerpetualsOrderSide.Bid &&
|
|
285
|
-
// inputs.slPrice < orderPrice))
|
|
286
|
-
// ) {
|
|
287
|
-
// this.placeLimitOrderTx({
|
|
288
|
-
// ...inputs,
|
|
289
|
-
// tx,
|
|
290
|
-
// orderType,
|
|
291
|
-
// side,
|
|
292
|
-
// price: inputs.slPrice,
|
|
293
|
-
// });
|
|
294
|
-
// }
|
|
295
|
-
// if (
|
|
296
|
-
// "tpPrice" in inputs &&
|
|
297
|
-
// ((inputs.side === PerpetualsOrderSide.Ask &&
|
|
298
|
-
// inputs.tpPrice < orderPrice) ||
|
|
299
|
-
// (inputs.side === PerpetualsOrderSide.Bid &&
|
|
300
|
-
// inputs.tpPrice > orderPrice))
|
|
301
|
-
// ) {
|
|
302
|
-
// this.placeLimitOrderTx({
|
|
303
|
-
// ...inputs,
|
|
304
|
-
// tx,
|
|
305
|
-
// orderType,
|
|
306
|
-
// side,
|
|
307
|
-
// price: inputs.tpPrice,
|
|
308
|
-
// });
|
|
309
|
-
// }
|
|
310
|
-
};
|
|
311
329
|
this.getPositionTx = (inputs) => {
|
|
312
330
|
const { tx, marketId, collateralCoinType } = inputs;
|
|
313
331
|
return tx.moveCall({
|
|
314
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
332
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_position"),
|
|
315
333
|
typeArguments: [collateralCoinType],
|
|
316
334
|
arguments: [
|
|
317
335
|
tx.sharedObjectRef({
|
|
@@ -326,7 +344,7 @@ class PerpetualsApi {
|
|
|
326
344
|
this.getOrderbookTx = (inputs) => {
|
|
327
345
|
const { tx, collateralCoinType } = inputs;
|
|
328
346
|
return tx.moveCall({
|
|
329
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
347
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_orderbook"),
|
|
330
348
|
typeArguments: [collateralCoinType],
|
|
331
349
|
arguments: [tx.object(inputs.marketId)],
|
|
332
350
|
});
|
|
@@ -334,7 +352,7 @@ class PerpetualsApi {
|
|
|
334
352
|
this.getBookPriceTx = (inputs) => {
|
|
335
353
|
const { tx, marketId, collateralCoinType } = inputs;
|
|
336
354
|
return tx.moveCall({
|
|
337
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
355
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_book_price"),
|
|
338
356
|
typeArguments: [collateralCoinType],
|
|
339
357
|
arguments: [
|
|
340
358
|
tx.object(marketId),
|
|
@@ -349,7 +367,7 @@ class PerpetualsApi {
|
|
|
349
367
|
this.getBestPriceTx = (inputs) => {
|
|
350
368
|
const { tx, marketId, collateralCoinType } = inputs;
|
|
351
369
|
return tx.moveCall({
|
|
352
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
370
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_best_price"),
|
|
353
371
|
typeArguments: [collateralCoinType],
|
|
354
372
|
arguments: [
|
|
355
373
|
tx.sharedObjectRef({
|
|
@@ -364,7 +382,7 @@ class PerpetualsApi {
|
|
|
364
382
|
this.inspectOrdersTx = (inputs) => {
|
|
365
383
|
const { tx, orderbookId } = inputs;
|
|
366
384
|
return tx.moveCall({
|
|
367
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
385
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.orderbook, "inspect_orders"),
|
|
368
386
|
typeArguments: [],
|
|
369
387
|
arguments: [
|
|
370
388
|
typeof orderbookId === "string"
|
|
@@ -379,7 +397,7 @@ class PerpetualsApi {
|
|
|
379
397
|
this.getOrderSizeTx = (inputs) => {
|
|
380
398
|
const { tx, orderbookId } = inputs;
|
|
381
399
|
return tx.moveCall({
|
|
382
|
-
target: utils_1.Helpers.transactions.createTxTarget(
|
|
400
|
+
target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.orderbook, "get_order_size"),
|
|
383
401
|
typeArguments: [],
|
|
384
402
|
arguments: [
|
|
385
403
|
typeof orderbookId === "string"
|
|
@@ -406,57 +424,113 @@ class PerpetualsApi {
|
|
|
406
424
|
coinId }, inputs));
|
|
407
425
|
return tx;
|
|
408
426
|
});
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
};
|
|
422
|
-
this.buildCancelOrdersTx
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
427
|
+
// public buildCancelOrderTx = (
|
|
428
|
+
// inputs: ApiPerpetualsCancelOrderBody
|
|
429
|
+
// ): Transaction => {
|
|
430
|
+
// const {
|
|
431
|
+
// packageId,
|
|
432
|
+
// orderId,
|
|
433
|
+
// marketId,
|
|
434
|
+
// marketInitialSharedVersion,
|
|
435
|
+
// collateralChange,
|
|
436
|
+
// basePriceFeedId,
|
|
437
|
+
// collateralPriceFeedId,
|
|
438
|
+
// ...otherInputs
|
|
439
|
+
// } = inputs;
|
|
440
|
+
// return this.buildCancelOrdersTx({
|
|
441
|
+
// ...otherInputs,
|
|
442
|
+
// orderDatas: [
|
|
443
|
+
// {
|
|
444
|
+
// packageId,
|
|
445
|
+
// orderId,
|
|
446
|
+
// marketId,
|
|
447
|
+
// marketInitialSharedVersion,
|
|
448
|
+
// collateralChange,
|
|
449
|
+
// basePriceFeedId,
|
|
450
|
+
// collateralPriceFeedId,
|
|
451
|
+
// },
|
|
452
|
+
// ],
|
|
453
|
+
// });
|
|
454
|
+
// };
|
|
455
|
+
// public buildCancelOrdersTx = (
|
|
456
|
+
// inputs: ApiPerpetualsCancelOrdersBody
|
|
457
|
+
// ): Transaction => {
|
|
458
|
+
// const { orderDatas, collateralCoinType, accountCapId } = inputs;
|
|
459
|
+
// if (orderDatas.length <= 0)
|
|
460
|
+
// throw new Error("cannot have order datas of length zero");
|
|
461
|
+
// const tx = new Transaction();
|
|
462
|
+
// tx.setSender(inputs.walletAddress);
|
|
463
|
+
// const marketIdToOrderIds = orderDatas.reduce(
|
|
464
|
+
// (acc, order) => {
|
|
465
|
+
// if (order.marketId in acc) {
|
|
466
|
+
// return {
|
|
467
|
+
// ...acc,
|
|
468
|
+
// [order.marketId]: [...acc[order.marketId], order],
|
|
469
|
+
// };
|
|
470
|
+
// }
|
|
471
|
+
// return {
|
|
472
|
+
// ...acc,
|
|
473
|
+
// [order.marketId]: [order],
|
|
474
|
+
// };
|
|
475
|
+
// },
|
|
476
|
+
// {} as Record<
|
|
477
|
+
// PerpetualsMarketId,
|
|
478
|
+
// {
|
|
479
|
+
// packageId: PackageId;
|
|
480
|
+
// orderId: PerpetualsOrderId;
|
|
481
|
+
// marketId: PerpetualsMarketId;
|
|
482
|
+
// marketInitialSharedVersion: ObjectVersion;
|
|
483
|
+
// collateralChange: Balance;
|
|
484
|
+
// basePriceFeedId: ObjectId;
|
|
485
|
+
// collateralPriceFeedId: ObjectId;
|
|
486
|
+
// }[]
|
|
487
|
+
// >
|
|
488
|
+
// );
|
|
489
|
+
// for (const [marketId, orders] of Object.entries(marketIdToOrderIds)) {
|
|
490
|
+
// if (orders.length <= 0) continue;
|
|
491
|
+
// const marketInitialSharedVersion =
|
|
492
|
+
// orders[0].marketInitialSharedVersion;
|
|
493
|
+
// const packageId = orders[0].packageId;
|
|
494
|
+
// this.cancelOrdersTx({
|
|
495
|
+
// tx,
|
|
496
|
+
// collateralCoinType,
|
|
497
|
+
// accountCapId,
|
|
498
|
+
// marketId,
|
|
499
|
+
// marketInitialSharedVersion,
|
|
500
|
+
// packageId,
|
|
501
|
+
// orderIds: orders.map((order) => order.orderId),
|
|
502
|
+
// });
|
|
503
|
+
// const netCollateralChange = Helpers.sumBigInt(
|
|
504
|
+
// orders.map((order) => order.collateralChange)
|
|
505
|
+
// );
|
|
506
|
+
// if (netCollateralChange < BigInt(0)) {
|
|
507
|
+
// this.deallocateCollateralTx({
|
|
508
|
+
// tx,
|
|
509
|
+
// accountCapId,
|
|
510
|
+
// collateralCoinType,
|
|
511
|
+
// marketId,
|
|
512
|
+
// marketInitialSharedVersion,
|
|
513
|
+
// packageId,
|
|
514
|
+
// amount: Helpers.absBigInt(netCollateralChange),
|
|
515
|
+
// basePriceFeedId: orders[0].basePriceFeedId,
|
|
516
|
+
// collateralPriceFeedId: orders[0].collateralPriceFeedId,
|
|
517
|
+
// });
|
|
518
|
+
// } else if (netCollateralChange > BigInt(0)) {
|
|
519
|
+
// this.allocateCollateralTx({
|
|
520
|
+
// tx,
|
|
521
|
+
// accountCapId,
|
|
522
|
+
// collateralCoinType,
|
|
523
|
+
// marketId,
|
|
524
|
+
// marketInitialSharedVersion,
|
|
525
|
+
// packageId,
|
|
526
|
+
// amount: netCollateralChange,
|
|
527
|
+
// });
|
|
528
|
+
// } else {
|
|
529
|
+
// // no collateral change
|
|
530
|
+
// }
|
|
531
|
+
// }
|
|
532
|
+
// return tx;
|
|
533
|
+
// };
|
|
460
534
|
this.buildWithdrawCollateralTx = (inputs) => {
|
|
461
535
|
const tx = new transactions_1.Transaction();
|
|
462
536
|
tx.setSender(inputs.walletAddress);
|
|
@@ -471,16 +545,6 @@ class PerpetualsApi {
|
|
|
471
545
|
tx.transferObjects([accountCap], inputs.walletAddress);
|
|
472
546
|
return tx;
|
|
473
547
|
};
|
|
474
|
-
this.fetchBuildPlaceSLTPOrderTx = (inputs) => {
|
|
475
|
-
throw new Error("TODO");
|
|
476
|
-
// const { tx, sessionPotatoId } = this.createTxAndStartSession(inputs);
|
|
477
|
-
// this.placeSLTPOrderTx({
|
|
478
|
-
// ...inputs,
|
|
479
|
-
// tx,
|
|
480
|
-
// sessionPotatoId,
|
|
481
|
-
// });
|
|
482
|
-
// return tx;
|
|
483
|
-
};
|
|
484
548
|
this.buildTransferCollateralTx = (inputs) => {
|
|
485
549
|
const { walletAddress, collateralCoinType, fromAccountCapId, toAccountCapId, amount, } = inputs;
|
|
486
550
|
const tx = new transactions_1.Transaction();
|
|
@@ -499,28 +563,460 @@ class PerpetualsApi {
|
|
|
499
563
|
});
|
|
500
564
|
return tx;
|
|
501
565
|
};
|
|
502
|
-
// TODO: add to sdk
|
|
503
566
|
this.buildAllocateCollateralTx = transactionsApiHelpers_1.TransactionsApiHelpers.createBuildTxFunc(this.allocateCollateralTx);
|
|
504
|
-
// TODO: add to sdk
|
|
505
567
|
this.buildDeallocateCollateralTx = transactionsApiHelpers_1.TransactionsApiHelpers.createBuildTxFunc(this.deallocateCollateralTx);
|
|
568
|
+
// public buildReduceOrdersTx = (
|
|
569
|
+
// inputs: ApiPerpetualsReduceOrdersBody
|
|
570
|
+
// ): Transaction => {
|
|
571
|
+
// const {
|
|
572
|
+
// walletAddress,
|
|
573
|
+
// collateralChange,
|
|
574
|
+
// accountCapId,
|
|
575
|
+
// collateralCoinType,
|
|
576
|
+
// marketId,
|
|
577
|
+
// marketInitialSharedVersion,
|
|
578
|
+
// packageId,
|
|
579
|
+
// basePriceFeedId,
|
|
580
|
+
// collateralPriceFeedId,
|
|
581
|
+
// orderIds,
|
|
582
|
+
// sizesToSubtract,
|
|
583
|
+
// } = inputs;
|
|
584
|
+
// const tx = new Transaction();
|
|
585
|
+
// tx.setSender(walletAddress);
|
|
586
|
+
// this.reduceOrdersTx({
|
|
587
|
+
// tx,
|
|
588
|
+
// packageId,
|
|
589
|
+
// collateralCoinType,
|
|
590
|
+
// accountCapId,
|
|
591
|
+
// marketId,
|
|
592
|
+
// marketInitialSharedVersion,
|
|
593
|
+
// orderIds,
|
|
594
|
+
// sizesToSubtract,
|
|
595
|
+
// });
|
|
596
|
+
// if (collateralChange < BigInt(0)) {
|
|
597
|
+
// this.deallocateCollateralTx({
|
|
598
|
+
// tx,
|
|
599
|
+
// accountCapId,
|
|
600
|
+
// collateralCoinType,
|
|
601
|
+
// marketId,
|
|
602
|
+
// marketInitialSharedVersion,
|
|
603
|
+
// packageId,
|
|
604
|
+
// basePriceFeedId,
|
|
605
|
+
// collateralPriceFeedId,
|
|
606
|
+
// amount: Helpers.absBigInt(collateralChange),
|
|
607
|
+
// });
|
|
608
|
+
// } else if (collateralChange > BigInt(0)) {
|
|
609
|
+
// this.allocateCollateralTx({
|
|
610
|
+
// tx,
|
|
611
|
+
// accountCapId,
|
|
612
|
+
// collateralCoinType,
|
|
613
|
+
// marketId,
|
|
614
|
+
// marketInitialSharedVersion,
|
|
615
|
+
// packageId,
|
|
616
|
+
// amount: collateralChange,
|
|
617
|
+
// });
|
|
618
|
+
// } else {
|
|
619
|
+
// // no collateral change
|
|
620
|
+
// }
|
|
621
|
+
// return tx;
|
|
622
|
+
// };
|
|
506
623
|
// =========================================================================
|
|
507
624
|
// Helpers
|
|
508
625
|
// =========================================================================
|
|
509
626
|
this.getAccountCapType = (inputs) => {
|
|
510
|
-
return `${this.addresses.
|
|
627
|
+
return `${this.addresses.packages.events}::${PerpetualsApi.constants.moduleNames.account}::Account<${inputs.collateralCoinType}>`;
|
|
511
628
|
};
|
|
512
629
|
// =========================================================================
|
|
630
|
+
// Private Helpers
|
|
631
|
+
// =========================================================================
|
|
632
|
+
// private fetchOrdersSizes = async (inputs: {
|
|
633
|
+
// orderIds: PerpetualsOrderId[];
|
|
634
|
+
// collateralCoinType: ObjectId;
|
|
635
|
+
// marketId: PerpetualsMarketId;
|
|
636
|
+
// }): Promise<bigint[]> => {
|
|
637
|
+
// const { orderIds, marketId, collateralCoinType } = inputs;
|
|
638
|
+
// if (orderIds.length <= 0) return [];
|
|
639
|
+
// const tx = new Transaction();
|
|
640
|
+
// const orderbookId = this.getOrderbookTx({
|
|
641
|
+
// tx,
|
|
642
|
+
// collateralCoinType,
|
|
643
|
+
// marketId,
|
|
644
|
+
// });
|
|
645
|
+
// for (const orderId of orderIds) {
|
|
646
|
+
// this.getOrderSizeTx({
|
|
647
|
+
// tx,
|
|
648
|
+
// orderId,
|
|
649
|
+
// orderbookId,
|
|
650
|
+
// });
|
|
651
|
+
// }
|
|
652
|
+
// const { allBytes } =
|
|
653
|
+
// await this.Provider.Inspections().fetchAllBytesFromTx({
|
|
654
|
+
// tx,
|
|
655
|
+
// });
|
|
656
|
+
// const sizes = allBytes
|
|
657
|
+
// .slice(1)
|
|
658
|
+
// .map((bytes) => Casting.bigIntFromBytes(bytes[0]));
|
|
659
|
+
// return sizes;
|
|
660
|
+
// };
|
|
661
|
+
// private fetchOrderbookOrders = async (inputs: {
|
|
662
|
+
// collateralCoinType: ObjectId;
|
|
663
|
+
// marketId: PerpetualsMarketId;
|
|
664
|
+
// side: PerpetualsOrderSide;
|
|
665
|
+
// fromPrice: PerpetualsOrderPrice;
|
|
666
|
+
// toPrice: PerpetualsOrderPrice;
|
|
667
|
+
// }): Promise<PerpetualsOrderInfo[]> => {
|
|
668
|
+
// const { collateralCoinType, marketId, side, fromPrice, toPrice } =
|
|
669
|
+
// inputs;
|
|
670
|
+
// const tx = new Transaction();
|
|
671
|
+
// const orderbookId = this.getOrderbookTx({
|
|
672
|
+
// tx,
|
|
673
|
+
// collateralCoinType,
|
|
674
|
+
// marketId,
|
|
675
|
+
// });
|
|
676
|
+
// this.inspectOrdersTx({ tx, orderbookId, side, fromPrice, toPrice });
|
|
677
|
+
// const bytes =
|
|
678
|
+
// await this.Provider.Inspections().fetchFirstBytesFromTxOutput({
|
|
679
|
+
// tx,
|
|
680
|
+
// });
|
|
681
|
+
// const orderInfos: any[] = bcs
|
|
682
|
+
// .vector(perpetualsRegistry.OrderInfo)
|
|
683
|
+
// .parse(new Uint8Array(bytes));
|
|
684
|
+
// return orderInfos.map((orderInfo) =>
|
|
685
|
+
// Casting.perpetuals.orderInfoFromRaw(orderInfo)
|
|
686
|
+
// );
|
|
687
|
+
// };
|
|
688
|
+
// public fetchExecutionPrice = async (
|
|
689
|
+
// inputs: ApiPerpetualsExecutionPriceBody & {
|
|
690
|
+
// collateralCoinType: CoinType;
|
|
691
|
+
// marketId: PerpetualsMarketId;
|
|
692
|
+
// }
|
|
693
|
+
// ): Promise<ApiPerpetualsExecutionPriceResponse> => {
|
|
694
|
+
// const {
|
|
695
|
+
// // collateral,
|
|
696
|
+
// collateralCoinType,
|
|
697
|
+
// marketId,
|
|
698
|
+
// side,
|
|
699
|
+
// size,
|
|
700
|
+
// price,
|
|
701
|
+
// lotSize,
|
|
702
|
+
// basePriceFeedId,
|
|
703
|
+
// collateralPriceFeedId,
|
|
704
|
+
// } = inputs;
|
|
705
|
+
// // TODO: change this
|
|
706
|
+
// const collateral = BigInt(1000000000000000);
|
|
707
|
+
// // const accountCapId = perpetualsBcsRegistry
|
|
708
|
+
// // .ser(`Account<${collateralCoinType}>`, {
|
|
709
|
+
// // id: {
|
|
710
|
+
// // id: {
|
|
711
|
+
// // bytes: "0x0000000000000000000000000000000000000000000000000000000000000321",
|
|
712
|
+
// // },
|
|
713
|
+
// // },
|
|
714
|
+
// // accountId: 0,
|
|
715
|
+
// // collateral,
|
|
716
|
+
// // })
|
|
717
|
+
// // .toBytes();
|
|
718
|
+
// const depositCoinBytes = perpetualsRegistry.Coin.serialize({
|
|
719
|
+
// id: "0x0000000000000000000000000000000000000000000000000000000000000123",
|
|
720
|
+
// balance: {
|
|
721
|
+
// value: BigInt(1000000000000000),
|
|
722
|
+
// },
|
|
723
|
+
// }).toBytes();
|
|
724
|
+
// const walletAddress = InspectionsApiHelpers.constants.devInspectSigner;
|
|
725
|
+
// const tx = new Transaction();
|
|
726
|
+
// tx.setSender(walletAddress);
|
|
727
|
+
// const accountCapId = this.createAccountTx({
|
|
728
|
+
// ...inputs,
|
|
729
|
+
// tx,
|
|
730
|
+
// });
|
|
731
|
+
// this.depositCollateralTx({
|
|
732
|
+
// tx,
|
|
733
|
+
// collateralCoinType,
|
|
734
|
+
// accountCapId,
|
|
735
|
+
// coinBytes: depositCoinBytes,
|
|
736
|
+
// });
|
|
737
|
+
// const { sessionPotatoId } = this.createTxAndStartSession({
|
|
738
|
+
// tx,
|
|
739
|
+
// accountCapId,
|
|
740
|
+
// collateralCoinType,
|
|
741
|
+
// marketId,
|
|
742
|
+
// walletAddress,
|
|
743
|
+
// basePriceFeedId,
|
|
744
|
+
// collateralPriceFeedId,
|
|
745
|
+
// collateralChange: collateral,
|
|
746
|
+
// hasPosition: false,
|
|
747
|
+
// });
|
|
748
|
+
// this.placeLimitOrderTx({
|
|
749
|
+
// tx,
|
|
750
|
+
// side,
|
|
751
|
+
// size,
|
|
752
|
+
// collateralCoinType,
|
|
753
|
+
// sessionPotatoId,
|
|
754
|
+
// orderType: PerpetualsOrderType.Standard,
|
|
755
|
+
// price:
|
|
756
|
+
// price ??
|
|
757
|
+
// (side === PerpetualsOrderSide.Bid
|
|
758
|
+
// ? BigInt("0x7FFFFFFFFFFFFFFF") // 2^63 - 1
|
|
759
|
+
// : BigInt(1)),
|
|
760
|
+
// });
|
|
761
|
+
// this.getHotPotatoFieldsTx({
|
|
762
|
+
// tx,
|
|
763
|
+
// collateralCoinType,
|
|
764
|
+
// sessionPotatoId,
|
|
765
|
+
// });
|
|
766
|
+
// this.endSessionAndTransferAccount({
|
|
767
|
+
// ...inputs,
|
|
768
|
+
// tx,
|
|
769
|
+
// sessionPotatoId,
|
|
770
|
+
// walletAddress,
|
|
771
|
+
// collateralChange: BigInt(0),
|
|
772
|
+
// });
|
|
773
|
+
// const { events } =
|
|
774
|
+
// await this.Provider.Inspections().fetchAllBytesFromTx({
|
|
775
|
+
// tx,
|
|
776
|
+
// });
|
|
777
|
+
// const filledTakerEvent = EventsApiHelpers.findCastEventOrUndefined({
|
|
778
|
+
// events,
|
|
779
|
+
// eventType: this.eventTypes.filledTakerOrder,
|
|
780
|
+
// castFunction: Casting.perpetuals.filledTakerOrderEventFromOnChain,
|
|
781
|
+
// });
|
|
782
|
+
// const sizeNum = lotSize * Math.abs(Number(size));
|
|
783
|
+
// if (!filledTakerEvent) {
|
|
784
|
+
// return {
|
|
785
|
+
// executionPrice: 0,
|
|
786
|
+
// sizeFilled: 0,
|
|
787
|
+
// sizePosted: sizeNum,
|
|
788
|
+
// fills: [],
|
|
789
|
+
// };
|
|
790
|
+
// }
|
|
791
|
+
// const filledOrderEvents =
|
|
792
|
+
// Aftermath.helpers.events.findCastEventsOrUndefined({
|
|
793
|
+
// events,
|
|
794
|
+
// eventType: this.eventTypes.filledTakerOrder,
|
|
795
|
+
// castFunction:
|
|
796
|
+
// Casting.perpetuals.filledTakerOrderEventFromOnChain,
|
|
797
|
+
// });
|
|
798
|
+
// const fills: PerpetualsFilledOrderData[] = filledOrderEvents.map(
|
|
799
|
+
// (event) => {
|
|
800
|
+
// const size = Math.abs(
|
|
801
|
+
// Casting.IFixed.numberFromIFixed(event.baseAssetDelta)
|
|
802
|
+
// );
|
|
803
|
+
// const sizeUsd = Math.abs(
|
|
804
|
+
// Casting.IFixed.numberFromIFixed(event.quoteAssetDelta)
|
|
805
|
+
// );
|
|
806
|
+
// const price = sizeUsd / size;
|
|
807
|
+
// return {
|
|
808
|
+
// size,
|
|
809
|
+
// price,
|
|
810
|
+
// };
|
|
811
|
+
// }
|
|
812
|
+
// );
|
|
813
|
+
// const executionPrice = Perpetuals.calcEntryPrice(filledTakerEvent);
|
|
814
|
+
// const sizeFilled = Math.abs(
|
|
815
|
+
// Casting.IFixed.numberFromIFixed(filledTakerEvent.baseAssetDelta)
|
|
816
|
+
// );
|
|
817
|
+
// const sizePosted = sizeNum - sizeFilled;
|
|
818
|
+
// return {
|
|
819
|
+
// executionPrice,
|
|
820
|
+
// sizeFilled,
|
|
821
|
+
// sizePosted,
|
|
822
|
+
// fills,
|
|
823
|
+
// };
|
|
824
|
+
// // const { fillReceipts, postReceipt } =
|
|
825
|
+
// // await this.fetchMarketOrderReceipts(inputs);
|
|
826
|
+
// // const sizePosted = postReceipt !== undefined ? postReceipt.size : 0;
|
|
827
|
+
// // if (fillReceipts.length <= 0)
|
|
828
|
+
// // return price !== undefined
|
|
829
|
+
// // ? // simulating limit order
|
|
830
|
+
// // {
|
|
831
|
+
// // executionPrice: Perpetuals.orderPriceToPrice({
|
|
832
|
+
// // orderPrice: price,
|
|
833
|
+
// // lotSize,
|
|
834
|
+
// // tickSize,
|
|
835
|
+
// // }),
|
|
836
|
+
// // sizeFilled: 0,
|
|
837
|
+
// // sizePosted: Number(sizePosted),
|
|
838
|
+
// // }
|
|
839
|
+
// // : // simulating market order
|
|
840
|
+
// // {
|
|
841
|
+
// // executionPrice: 0,
|
|
842
|
+
// // sizeFilled: 0,
|
|
843
|
+
// // sizePosted: 0,
|
|
844
|
+
// // };
|
|
845
|
+
// // const sizeFilled = Helpers.sumBigInt(
|
|
846
|
+
// // fillReceipts.map((receipt) => receipt.size)
|
|
847
|
+
// // );
|
|
848
|
+
// // const executionPrice = fillReceipts.reduce((acc, receipt) => {
|
|
849
|
+
// // const orderPrice = PerpetualsOrderUtils.price(
|
|
850
|
+
// // receipt.orderId,
|
|
851
|
+
// // inputs.side === PerpetualsOrderSide.Ask
|
|
852
|
+
// // ? PerpetualsOrderSide.Bid
|
|
853
|
+
// // : PerpetualsOrderSide.Ask
|
|
854
|
+
// // );
|
|
855
|
+
// // const orderPriceNum = Perpetuals.orderPriceToPrice({
|
|
856
|
+
// // orderPrice,
|
|
857
|
+
// // lotSize,
|
|
858
|
+
// // tickSize,
|
|
859
|
+
// // });
|
|
860
|
+
// // return (
|
|
861
|
+
// // acc +
|
|
862
|
+
// // orderPriceNum * (Number(receipt.size) / Number(sizeFilled))
|
|
863
|
+
// // );
|
|
864
|
+
// // }, 0);
|
|
865
|
+
// // return {
|
|
866
|
+
// // executionPrice,
|
|
867
|
+
// // sizeFilled: Number(sizeFilled),
|
|
868
|
+
// // sizePosted: Number(sizePosted),
|
|
869
|
+
// // };
|
|
870
|
+
// };
|
|
871
|
+
// private createTxAndStartSession = (inputs: {
|
|
872
|
+
// tx?: Transaction;
|
|
873
|
+
// collateralCoinType: CoinType;
|
|
874
|
+
// accountCapId: ObjectId | TransactionArgument;
|
|
875
|
+
// marketId: PerpetualsMarketId;
|
|
876
|
+
// marketInitialSharedVersion: ObjectVersion;
|
|
877
|
+
// basePriceFeedId: ObjectId;
|
|
878
|
+
// collateralPriceFeedId: ObjectId;
|
|
879
|
+
// walletAddress: SuiAddress;
|
|
880
|
+
// collateralChange: Balance;
|
|
881
|
+
// hasPosition: boolean;
|
|
882
|
+
// }) => {
|
|
883
|
+
// const { collateralChange, walletAddress, hasPosition } = inputs;
|
|
884
|
+
// const { tx: inputsTx, ...nonTxInputs } = inputs;
|
|
885
|
+
// const tx = inputsTx ?? new Transaction();
|
|
886
|
+
// tx.setSender(walletAddress);
|
|
887
|
+
// if (!hasPosition) {
|
|
888
|
+
// this.createMarketPositionTx({
|
|
889
|
+
// ...nonTxInputs,
|
|
890
|
+
// tx,
|
|
891
|
+
// });
|
|
892
|
+
// }
|
|
893
|
+
// if (collateralChange > BigInt(0)) {
|
|
894
|
+
// this.allocateCollateralTx({
|
|
895
|
+
// ...nonTxInputs,
|
|
896
|
+
// tx,
|
|
897
|
+
// amount: collateralChange,
|
|
898
|
+
// });
|
|
899
|
+
// }
|
|
900
|
+
// const sessionPotatoId = this.startSessionTx({
|
|
901
|
+
// ...nonTxInputs,
|
|
902
|
+
// tx,
|
|
903
|
+
// });
|
|
904
|
+
// return { tx, sessionPotatoId };
|
|
905
|
+
// };
|
|
906
|
+
// private endSessionAndShareMarket = (inputs: {
|
|
907
|
+
// tx: Transaction;
|
|
908
|
+
// collateralCoinType: CoinType;
|
|
909
|
+
// sessionPotatoId: ObjectId | TransactionArgument;
|
|
910
|
+
// }) => {
|
|
911
|
+
// const marketId = this.endSessionTx(inputs);
|
|
912
|
+
// this.shareClearingHouseTx({
|
|
913
|
+
// ...inputs,
|
|
914
|
+
// marketId,
|
|
915
|
+
// });
|
|
916
|
+
// };
|
|
917
|
+
// =========================================================================
|
|
918
|
+
// Public Static Helpers
|
|
919
|
+
// =========================================================================
|
|
920
|
+
// public static bucketOrders = (inputs: {
|
|
921
|
+
// orders: PerpetualsOrderInfo[];
|
|
922
|
+
// side: PerpetualsOrderSide;
|
|
923
|
+
// lotSize: number;
|
|
924
|
+
// tickSize: number;
|
|
925
|
+
// priceBucketSize: number;
|
|
926
|
+
// initialBucketedOrders?: OrderbookDataPoint[];
|
|
927
|
+
// }): OrderbookDataPoint[] => {
|
|
928
|
+
// const {
|
|
929
|
+
// orders,
|
|
930
|
+
// side,
|
|
931
|
+
// lotSize,
|
|
932
|
+
// tickSize,
|
|
933
|
+
// priceBucketSize,
|
|
934
|
+
// initialBucketedOrders,
|
|
935
|
+
// } = inputs;
|
|
936
|
+
// let dataPoints: OrderbookDataPoint[] = initialBucketedOrders ?? [];
|
|
937
|
+
// const roundPrice = (price: number, bucketSize: number): number => {
|
|
938
|
+
// return Math.round(price / bucketSize) * bucketSize;
|
|
939
|
+
// };
|
|
940
|
+
// const comparePrices = (
|
|
941
|
+
// price1: number,
|
|
942
|
+
// price2: number,
|
|
943
|
+
// bucketSize: number
|
|
944
|
+
// ): boolean => {
|
|
945
|
+
// return Math.abs(price1 - price2) < bucketSize;
|
|
946
|
+
// };
|
|
947
|
+
// orders.forEach((order) => {
|
|
948
|
+
// const actualPrice = Perpetuals.orderPriceToPrice({
|
|
949
|
+
// lotSize,
|
|
950
|
+
// tickSize: Math.abs(tickSize),
|
|
951
|
+
// orderPrice: order.price,
|
|
952
|
+
// });
|
|
953
|
+
// const roundedPrice = roundPrice(actualPrice, priceBucketSize);
|
|
954
|
+
// const size =
|
|
955
|
+
// lotSize *
|
|
956
|
+
// Math.abs(Number(order.size)) *
|
|
957
|
+
// (tickSize < 0 ? -1 : 1);
|
|
958
|
+
// const sizeUsd = size * actualPrice;
|
|
959
|
+
// const placementIndex = dataPoints.findIndex(
|
|
960
|
+
// (dataPoint: OrderbookDataPoint) =>
|
|
961
|
+
// comparePrices(
|
|
962
|
+
// roundedPrice,
|
|
963
|
+
// dataPoint.price,
|
|
964
|
+
// priceBucketSize
|
|
965
|
+
// )
|
|
966
|
+
// );
|
|
967
|
+
// if (placementIndex < 0) {
|
|
968
|
+
// if (size > 0) {
|
|
969
|
+
// const newDataPoint: OrderbookDataPoint = {
|
|
970
|
+
// size,
|
|
971
|
+
// sizeUsd,
|
|
972
|
+
// totalSize: size,
|
|
973
|
+
// totalSizeUsd: sizeUsd,
|
|
974
|
+
// price: roundedPrice,
|
|
975
|
+
// };
|
|
976
|
+
// const insertIndex = dataPoints.findIndex((dataPoint) =>
|
|
977
|
+
// side === PerpetualsOrderSide.Ask
|
|
978
|
+
// ? roundedPrice < dataPoint.price
|
|
979
|
+
// : roundedPrice > dataPoint.price
|
|
980
|
+
// );
|
|
981
|
+
// if (insertIndex < 0) {
|
|
982
|
+
// dataPoints.push(newDataPoint);
|
|
983
|
+
// } else {
|
|
984
|
+
// dataPoints.splice(insertIndex, 0, newDataPoint);
|
|
985
|
+
// }
|
|
986
|
+
// }
|
|
987
|
+
// } else {
|
|
988
|
+
// dataPoints[placementIndex].size += size;
|
|
989
|
+
// dataPoints[placementIndex].sizeUsd += sizeUsd;
|
|
990
|
+
// dataPoints[placementIndex].totalSize += size;
|
|
991
|
+
// dataPoints[placementIndex].totalSizeUsd += sizeUsd;
|
|
992
|
+
// }
|
|
993
|
+
// });
|
|
994
|
+
// dataPoints = dataPoints.filter((data) => data.size >= lotSize);
|
|
995
|
+
// for (let index = 0; index < dataPoints.length; index++) {
|
|
996
|
+
// if (index > 0) {
|
|
997
|
+
// dataPoints[index].totalSize =
|
|
998
|
+
// dataPoints[index - 1].totalSize + dataPoints[index].size;
|
|
999
|
+
// dataPoints[index].totalSizeUsd =
|
|
1000
|
+
// dataPoints[index - 1].totalSizeUsd +
|
|
1001
|
+
// dataPoints[index].sizeUsd;
|
|
1002
|
+
// } else {
|
|
1003
|
+
// dataPoints[index].totalSize = dataPoints[index].size;
|
|
1004
|
+
// dataPoints[index].totalSizeUsd = dataPoints[index].sizeUsd;
|
|
1005
|
+
// }
|
|
1006
|
+
// }
|
|
1007
|
+
// if (side === PerpetualsOrderSide.Ask) {
|
|
1008
|
+
// dataPoints.reverse();
|
|
1009
|
+
// }
|
|
1010
|
+
// return dataPoints;
|
|
1011
|
+
// };
|
|
1012
|
+
// =========================================================================
|
|
513
1013
|
// Event Types
|
|
514
1014
|
// =========================================================================
|
|
515
|
-
this.eventType = (eventName) => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.
|
|
516
|
-
const
|
|
517
|
-
|
|
518
|
-
if (!perpetuals || !oracle)
|
|
1015
|
+
this.eventType = (eventName) => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.packages.events, PerpetualsApi.constants.moduleNames.events, eventName);
|
|
1016
|
+
const addresses = this.Provider.addresses.perpetuals;
|
|
1017
|
+
if (!addresses)
|
|
519
1018
|
throw new Error("not all required addresses have been set in provider");
|
|
520
|
-
this.addresses =
|
|
521
|
-
perpetuals,
|
|
522
|
-
oracle,
|
|
523
|
-
};
|
|
1019
|
+
this.addresses = addresses;
|
|
524
1020
|
this.eventTypes = {
|
|
525
1021
|
// Collateral
|
|
526
1022
|
withdrewCollateral: this.eventType("WithdrewCollateral"),
|
|
@@ -530,101 +1026,112 @@ class PerpetualsApi {
|
|
|
530
1026
|
deallocatedCollateral: this.eventType("DeallocatedCollateral"),
|
|
531
1027
|
// Liquidation
|
|
532
1028
|
liquidated: this.eventType("LiquidatedPosition"),
|
|
1029
|
+
filledTakerOrderLiquidator: this.eventType("FilledTakerOrderLiquidator"),
|
|
533
1030
|
// Account
|
|
534
1031
|
createdAccount: this.eventType("CreatedAccount"),
|
|
535
1032
|
// Order
|
|
536
1033
|
canceledOrder: this.eventType("CanceledOrder"),
|
|
537
1034
|
postedOrder: this.eventType("PostedOrder"),
|
|
538
|
-
|
|
1035
|
+
filledMakerOrders: this.eventType("FilledMakerOrders"),
|
|
539
1036
|
filledTakerOrder: this.eventType("FilledTakerOrder"),
|
|
1037
|
+
reducedOrder: this.eventType("ReducedOrder"),
|
|
540
1038
|
// Order Receipts
|
|
541
1039
|
postedOrderReceipt: this.eventType("OrderbookPostReceipt"),
|
|
542
1040
|
// Twap
|
|
543
1041
|
updatedPremiumTwap: this.eventType("UpdatedPremiumTwap"),
|
|
544
1042
|
updatedSpreadTwap: this.eventType("UpdatedSpreadTwap"),
|
|
1043
|
+
// Funding
|
|
1044
|
+
updatedFunding: this.eventType("UpdatedFunding"),
|
|
1045
|
+
// Version
|
|
1046
|
+
updatedMarketVersion: this.eventType("UpdatedClearingHouseVersion"),
|
|
1047
|
+
// Stop Order
|
|
1048
|
+
createdStopOrderTicket: this.eventType("CreatedStopOrderTicket"),
|
|
1049
|
+
deletedStopOrderTicket: this.eventType("DeletedStopOrderTicket"),
|
|
545
1050
|
};
|
|
546
1051
|
this.moveErrors = {
|
|
547
|
-
[this.addresses.
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
1052
|
+
[this.addresses.packages.perpetuals]: {
|
|
1053
|
+
["ANY"]: {
|
|
1054
|
+
// Clearing House
|
|
1055
|
+
// Cannot deposit/withdraw zero coins to/from the account's collateral.
|
|
1056
|
+
0: "Deposit Or Withdraw Amount Zero",
|
|
1057
|
+
// Orderbook size or price are invalid values
|
|
1058
|
+
1: "Invalid Size Or Price",
|
|
1059
|
+
// When trying to access a particular insurance fund, but it does not exist.
|
|
1060
|
+
2: "Invalid Insurance Fund Id",
|
|
1061
|
+
// Index price returned from oracle is 0 or invalid value
|
|
1062
|
+
3: "Bad Index Price",
|
|
1063
|
+
// Registry already contains the specified collateral type
|
|
1064
|
+
4: "Invalid Collateral Type",
|
|
1065
|
+
// Order value in USD is too low
|
|
1066
|
+
5: "Order Usd Value Too Low",
|
|
1067
|
+
// Wrong number of sizes passed to liquidation.
|
|
1068
|
+
// It must match the number of liqee's positions.
|
|
1069
|
+
6: "Invalid Number Of Sizes",
|
|
1070
|
+
// MarketManager
|
|
1071
|
+
// Tried to create a new market with invalid parameters.
|
|
1072
|
+
1000: "Invalid Market Parameters",
|
|
1073
|
+
// Tried to call `update_funding` before enough time has passed since the
|
|
1074
|
+
// last update.
|
|
1075
|
+
1001: "Updating Funding Too Early",
|
|
1076
|
+
// Margin ratio update proposal already exists for market
|
|
1077
|
+
1002: "Proposal Already Exists",
|
|
1078
|
+
// Margin ratio update proposal cannot be commited too early
|
|
1079
|
+
1003: "Premature Proposal",
|
|
1080
|
+
// Margin ratio update proposal delay is outside the valid range
|
|
1081
|
+
1004: "Invalid Proposal Delay",
|
|
1082
|
+
// Market does not exist
|
|
1083
|
+
1005: "Market Does Not Exist",
|
|
1084
|
+
// Tried to update a config with a value outside of the allowed range
|
|
1085
|
+
1006: "Value Out Of Range",
|
|
1086
|
+
// Margin ratio update proposal does not exist for market
|
|
1087
|
+
1007: "Proposal Does Not Exist",
|
|
1088
|
+
// Exchange has no available fees to withdraw
|
|
1089
|
+
1008: "No Fees Accrued",
|
|
1090
|
+
// Tried to withdraw more insurance funds than the allowed amount
|
|
1091
|
+
1009: "Insufficient Insurance Surplus",
|
|
1092
|
+
// Cannot create a market for which a price feed does not exist
|
|
1093
|
+
1010: "No Price Feed For Market",
|
|
1094
|
+
// Account Manager
|
|
1095
|
+
// Tried accessing a nonexistent account.
|
|
1096
|
+
2000: "Account Not Found",
|
|
1097
|
+
// Tried accessing a nonexistent account position.
|
|
1098
|
+
2001: "Position Not Found",
|
|
1099
|
+
// Tried creating a new position when the account already has the maximum
|
|
1100
|
+
// allowed number of open positions.
|
|
1101
|
+
2002: "Max Positions Exceeded",
|
|
1102
|
+
// An operation brought an account below initial margin requirements.
|
|
1103
|
+
// 2003: "Initial Margin Requirement Violated",
|
|
1104
|
+
2003: "Margin Requirements Violated, Try Lowering Size",
|
|
1105
|
+
// Account is above MMR, so can't be liquidated.
|
|
1106
|
+
2004: "Account Above MMR",
|
|
1107
|
+
// Cannot realize bad debt via means other than calling 'liquidate'.
|
|
1108
|
+
2005: "Account Bad Debt",
|
|
1109
|
+
// Cannot withdraw more than the account's free collateral.
|
|
1110
|
+
2006: "Insufficient Free Collateral",
|
|
1111
|
+
// Cannot delete a position that is not worthless
|
|
1112
|
+
2007: "Position Not Null",
|
|
1113
|
+
// Tried placing a new pending order when the position already has the maximum
|
|
1114
|
+
// allowed number of pending orders.
|
|
1115
|
+
2008: "Max Pending Orders Exceeded",
|
|
1116
|
+
// Used for checking both liqee and liqor positions during liquidation
|
|
1117
|
+
2009: "Account Below IMR",
|
|
1118
|
+
// When leaving liqee's account with a margin ratio above tolerance,
|
|
1119
|
+
// meaning that liqor has overbought position
|
|
1120
|
+
2010: "Account Above Tolerance",
|
|
1121
|
+
// Orderbook & OrderedMap
|
|
1122
|
+
// While searching for a key, but it doesn't exist.
|
|
1123
|
+
3000: "Key Does Not Exist",
|
|
1124
|
+
// While inserting already existing key.
|
|
1125
|
+
3001: "Key Already Exists",
|
|
1126
|
+
// When attempting to destroy a non-empty map
|
|
1127
|
+
3002: "Destroying Not Empty Map",
|
|
1128
|
+
// Invalid user tries to modify an order
|
|
1129
|
+
3003: "Invalid User For Order",
|
|
1130
|
+
// Orderbook flag requirements violated
|
|
1131
|
+
3004: "Flag Requirements Violated",
|
|
1132
|
+
// Minimum size matched not reached
|
|
1133
|
+
3005: "Not Enough Liquidity",
|
|
1134
|
+
},
|
|
628
1135
|
},
|
|
629
1136
|
};
|
|
630
1137
|
}
|
|
@@ -642,69 +1149,3 @@ PerpetualsApi.constants = {
|
|
|
642
1149
|
account: "account",
|
|
643
1150
|
},
|
|
644
1151
|
};
|
|
645
|
-
// =========================================================================
|
|
646
|
-
// Public Static Helpers
|
|
647
|
-
// =========================================================================
|
|
648
|
-
PerpetualsApi.bucketOrders = (inputs) => {
|
|
649
|
-
const { orders, side, lotSize, tickSize, priceBucketSize, initialBucketedOrders, } = inputs;
|
|
650
|
-
let dataPoints = initialBucketedOrders !== null && initialBucketedOrders !== void 0 ? initialBucketedOrders : [];
|
|
651
|
-
const roundPrice = (price, bucketSize) => {
|
|
652
|
-
return Math.round(price / bucketSize) * bucketSize;
|
|
653
|
-
};
|
|
654
|
-
const comparePrices = (price1, price2, bucketSize) => {
|
|
655
|
-
return Math.abs(price1 - price2) < bucketSize / 2;
|
|
656
|
-
};
|
|
657
|
-
orders.forEach((order) => {
|
|
658
|
-
const actualPrice = perpetuals_1.Perpetuals.orderPriceToPrice({
|
|
659
|
-
lotSize,
|
|
660
|
-
tickSize: Math.abs(tickSize),
|
|
661
|
-
orderPrice: order.price,
|
|
662
|
-
});
|
|
663
|
-
const roundedPrice = roundPrice(actualPrice, priceBucketSize);
|
|
664
|
-
const size = lotSize * Number(order.size) * (tickSize < 0 ? -1 : 1);
|
|
665
|
-
const sizeUsd = size * actualPrice;
|
|
666
|
-
const placementIndex = dataPoints.findIndex((dataPoint) => comparePrices(roundedPrice, dataPoint.price, priceBucketSize));
|
|
667
|
-
if (placementIndex < 0) {
|
|
668
|
-
const newDataPoint = {
|
|
669
|
-
size,
|
|
670
|
-
sizeUsd,
|
|
671
|
-
totalSize: size,
|
|
672
|
-
totalSizeUsd: sizeUsd,
|
|
673
|
-
price: roundedPrice,
|
|
674
|
-
};
|
|
675
|
-
const insertIndex = dataPoints.findIndex((dataPoint) => side === perpetualsTypes_1.PerpetualsOrderSide.Ask
|
|
676
|
-
? roundedPrice <= dataPoint.price
|
|
677
|
-
: roundedPrice >= dataPoint.price);
|
|
678
|
-
if (insertIndex < 0) {
|
|
679
|
-
dataPoints.push(newDataPoint);
|
|
680
|
-
}
|
|
681
|
-
else {
|
|
682
|
-
dataPoints.splice(insertIndex, 0, newDataPoint);
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
else {
|
|
686
|
-
dataPoints[placementIndex].size += size;
|
|
687
|
-
dataPoints[placementIndex].sizeUsd += sizeUsd;
|
|
688
|
-
dataPoints[placementIndex].totalSize += size;
|
|
689
|
-
dataPoints[placementIndex].totalSizeUsd += sizeUsd;
|
|
690
|
-
}
|
|
691
|
-
});
|
|
692
|
-
dataPoints = dataPoints.filter((data) => data.size > 0 && data.sizeUsd > 0);
|
|
693
|
-
for (let index = 0; index < dataPoints.length; index++) {
|
|
694
|
-
if (index > 0) {
|
|
695
|
-
dataPoints[index].totalSize =
|
|
696
|
-
dataPoints[index - 1].totalSize + dataPoints[index].size;
|
|
697
|
-
dataPoints[index].totalSizeUsd =
|
|
698
|
-
dataPoints[index - 1].totalSizeUsd +
|
|
699
|
-
dataPoints[index].sizeUsd;
|
|
700
|
-
}
|
|
701
|
-
else {
|
|
702
|
-
dataPoints[index].totalSize = dataPoints[index].size;
|
|
703
|
-
dataPoints[index].totalSizeUsd = dataPoints[index].sizeUsd;
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
if (side === perpetualsTypes_1.PerpetualsOrderSide.Ask) {
|
|
707
|
-
dataPoints.reverse();
|
|
708
|
-
}
|
|
709
|
-
return dataPoints;
|
|
710
|
-
};
|