zo-sdk 0.0.51 → 0.1.1
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 +272 -20
- package/dist/abstract/BaseAPI.cjs +117 -0
- package/dist/abstract/BaseAPI.cjs.map +1 -0
- package/dist/abstract/BaseAPI.d.cts +131 -0
- package/dist/abstract/BaseAPI.d.cts.map +1 -0
- package/dist/abstract/BaseAPI.d.mts +131 -0
- package/dist/abstract/BaseAPI.d.mts.map +1 -0
- package/dist/abstract/BaseAPI.mjs +113 -0
- package/dist/abstract/BaseAPI.mjs.map +1 -0
- package/dist/abstract/BaseDataAPI.cjs +139 -0
- package/dist/abstract/BaseDataAPI.cjs.map +1 -0
- package/dist/abstract/BaseDataAPI.d.cts +89 -0
- package/dist/abstract/BaseDataAPI.d.cts.map +1 -0
- package/dist/abstract/BaseDataAPI.d.mts +89 -0
- package/dist/abstract/BaseDataAPI.d.mts.map +1 -0
- package/dist/abstract/BaseDataAPI.mjs +135 -0
- package/dist/abstract/BaseDataAPI.mjs.map +1 -0
- package/dist/abstract/index.cjs +12 -0
- package/dist/abstract/index.cjs.map +1 -0
- package/dist/abstract/index.d.cts +7 -0
- package/dist/abstract/index.d.cts.map +1 -0
- package/dist/abstract/index.d.mts +7 -0
- package/dist/abstract/index.d.mts.map +1 -0
- package/dist/abstract/index.mjs +7 -0
- package/dist/abstract/index.mjs.map +1 -0
- package/dist/bcs.cjs +42 -0
- package/dist/bcs.cjs.map +1 -0
- package/dist/bcs.d.cts +91 -0
- package/dist/bcs.d.cts.map +1 -0
- package/dist/bcs.d.mts +91 -0
- package/dist/bcs.d.mts.map +1 -0
- package/dist/bcs.mjs +39 -0
- package/dist/bcs.mjs.map +1 -0
- package/dist/consts/deployments-slp-mainnet.json +710 -0
- package/dist/consts/deployments-slp-testnet.json +109 -0
- package/dist/consts/deployments-usdz-mainnet.json +180 -0
- package/dist/consts/deployments-usdz-testnet.json +98 -0
- package/dist/consts/{deployments-mainnet.json → deployments-zlp-mainnet.json} +278 -42
- package/dist/consts/index.cjs +49 -13
- package/dist/consts/index.cjs.map +1 -1
- package/dist/consts/index.d.cts +81 -11
- package/dist/consts/index.d.cts.map +1 -1
- package/dist/consts/index.d.mts +81 -11
- package/dist/consts/index.d.mts.map +1 -1
- package/dist/consts/index.mjs +48 -12
- package/dist/consts/index.mjs.map +1 -1
- package/dist/consts/price_id_to_object_id.mainnet.json +9 -1
- package/dist/factory/SDKFactory.cjs +185 -0
- package/dist/factory/SDKFactory.cjs.map +1 -0
- package/dist/factory/SDKFactory.d.cts +74 -0
- package/dist/factory/SDKFactory.d.cts.map +1 -0
- package/dist/factory/SDKFactory.d.mts +74 -0
- package/dist/factory/SDKFactory.d.mts.map +1 -0
- package/dist/factory/SDKFactory.mjs +179 -0
- package/dist/factory/SDKFactory.mjs.map +1 -0
- package/dist/implementations/SLPAPI.cjs +829 -0
- package/dist/implementations/SLPAPI.cjs.map +1 -0
- package/dist/implementations/SLPAPI.d.cts +120 -0
- package/dist/implementations/SLPAPI.d.cts.map +1 -0
- package/dist/implementations/SLPAPI.d.mts +120 -0
- package/dist/implementations/SLPAPI.d.mts.map +1 -0
- package/dist/implementations/SLPAPI.mjs +825 -0
- package/dist/implementations/SLPAPI.mjs.map +1 -0
- package/dist/implementations/SLPDataAPI.cjs +916 -0
- package/dist/implementations/SLPDataAPI.cjs.map +1 -0
- package/dist/implementations/SLPDataAPI.d.cts +102 -0
- package/dist/implementations/SLPDataAPI.d.cts.map +1 -0
- package/dist/implementations/SLPDataAPI.d.mts +102 -0
- package/dist/implementations/SLPDataAPI.d.mts.map +1 -0
- package/dist/implementations/SLPDataAPI.mjs +912 -0
- package/dist/implementations/SLPDataAPI.mjs.map +1 -0
- package/dist/implementations/USDZAPI.cjs +522 -0
- package/dist/implementations/USDZAPI.cjs.map +1 -0
- package/dist/implementations/USDZAPI.d.cts +118 -0
- package/dist/implementations/USDZAPI.d.cts.map +1 -0
- package/dist/implementations/USDZAPI.d.mts +118 -0
- package/dist/implementations/USDZAPI.d.mts.map +1 -0
- package/dist/implementations/USDZAPI.mjs +518 -0
- package/dist/implementations/USDZAPI.mjs.map +1 -0
- package/dist/implementations/USDZDataAPI.cjs +697 -0
- package/dist/implementations/USDZDataAPI.cjs.map +1 -0
- package/dist/implementations/USDZDataAPI.d.cts +86 -0
- package/dist/implementations/USDZDataAPI.d.cts.map +1 -0
- package/dist/implementations/USDZDataAPI.d.mts +86 -0
- package/dist/implementations/USDZDataAPI.d.mts.map +1 -0
- package/dist/implementations/USDZDataAPI.mjs +693 -0
- package/dist/implementations/USDZDataAPI.mjs.map +1 -0
- package/dist/implementations/ZLPAPI.cjs +809 -0
- package/dist/implementations/ZLPAPI.cjs.map +1 -0
- package/dist/implementations/ZLPAPI.d.cts +121 -0
- package/dist/implementations/ZLPAPI.d.cts.map +1 -0
- package/dist/implementations/ZLPAPI.d.mts +121 -0
- package/dist/implementations/ZLPAPI.d.mts.map +1 -0
- package/dist/implementations/ZLPAPI.mjs +805 -0
- package/dist/implementations/ZLPAPI.mjs.map +1 -0
- package/dist/implementations/ZLPDataAPI.cjs +724 -0
- package/dist/implementations/ZLPDataAPI.cjs.map +1 -0
- package/dist/implementations/ZLPDataAPI.d.cts +83 -0
- package/dist/implementations/ZLPDataAPI.d.cts.map +1 -0
- package/dist/implementations/ZLPDataAPI.d.mts +83 -0
- package/dist/implementations/ZLPDataAPI.d.mts.map +1 -0
- package/dist/implementations/ZLPDataAPI.mjs +720 -0
- package/dist/implementations/ZLPDataAPI.mjs.map +1 -0
- package/dist/implementations/index.cjs +22 -0
- package/dist/implementations/index.cjs.map +1 -0
- package/dist/implementations/index.d.cts +11 -0
- package/dist/implementations/index.d.cts.map +1 -0
- package/dist/implementations/index.d.mts +11 -0
- package/dist/implementations/index.d.mts.map +1 -0
- package/dist/implementations/index.mjs +13 -0
- package/dist/implementations/index.mjs.map +1 -0
- package/dist/index.cjs +47 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +45 -0
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +45 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +45 -0
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/base.cjs +8 -0
- package/dist/interfaces/base.cjs.map +1 -0
- package/dist/interfaces/base.d.cts +293 -0
- package/dist/interfaces/base.d.cts.map +1 -0
- package/dist/interfaces/base.d.mts +293 -0
- package/dist/interfaces/base.d.mts.map +1 -0
- package/dist/interfaces/base.mjs +6 -0
- package/dist/interfaces/base.mjs.map +1 -0
- package/dist/interfaces/index.cjs +29 -0
- package/dist/interfaces/index.cjs.map +1 -0
- package/dist/interfaces/index.d.cts +13 -0
- package/dist/interfaces/index.d.cts.map +1 -0
- package/dist/interfaces/index.d.mts +13 -0
- package/dist/interfaces/index.d.mts.map +1 -0
- package/dist/interfaces/index.mjs +13 -0
- package/dist/interfaces/index.mjs.map +1 -0
- package/dist/interfaces/slp.cjs +9 -0
- package/dist/interfaces/slp.cjs.map +1 -0
- package/dist/interfaces/slp.d.cts +115 -0
- package/dist/interfaces/slp.d.cts.map +1 -0
- package/dist/interfaces/slp.d.mts +115 -0
- package/dist/interfaces/slp.d.mts.map +1 -0
- package/dist/interfaces/slp.mjs +7 -0
- package/dist/interfaces/slp.mjs.map +1 -0
- package/dist/interfaces/usdz.cjs +7 -0
- package/dist/interfaces/usdz.cjs.map +1 -0
- package/dist/interfaces/usdz.d.cts +40 -0
- package/dist/interfaces/usdz.d.cts.map +1 -0
- package/dist/interfaces/usdz.d.mts +40 -0
- package/dist/interfaces/usdz.d.mts.map +1 -0
- package/dist/interfaces/usdz.mjs +6 -0
- package/dist/interfaces/usdz.mjs.map +1 -0
- package/dist/interfaces/zlp.cjs +7 -0
- package/dist/interfaces/zlp.cjs.map +1 -0
- package/dist/interfaces/zlp.d.cts +45 -0
- package/dist/interfaces/zlp.d.cts.map +1 -0
- package/dist/interfaces/zlp.d.mts +45 -0
- package/dist/interfaces/zlp.d.mts.map +1 -0
- package/dist/interfaces/zlp.mjs +6 -0
- package/dist/interfaces/zlp.mjs.map +1 -0
- package/dist/oracle.cjs +7 -35
- package/dist/oracle.cjs.map +1 -1
- package/dist/oracle.d.cts +3 -4
- package/dist/oracle.d.cts.map +1 -1
- package/dist/oracle.d.mts +3 -4
- package/dist/oracle.d.mts.map +1 -1
- package/dist/oracle.mjs +8 -32
- package/dist/oracle.mjs.map +1 -1
- package/package.json +1 -1
- package/src/abstract/BaseAPI.ts +429 -0
- package/src/abstract/BaseDataAPI.ts +204 -0
- package/src/abstract/index.ts +7 -0
- package/src/bcs.ts +45 -0
- package/src/consts/deployments-slp-mainnet.json +710 -0
- package/src/consts/deployments-slp-testnet.json +109 -0
- package/src/consts/deployments-usdz-mainnet.json +180 -0
- package/src/consts/deployments-usdz-testnet.json +98 -0
- package/src/consts/{deployments-mainnet.json → deployments-zlp-mainnet.json} +279 -43
- package/src/consts/index.ts +143 -41
- package/src/consts/price_id_to_object_id.mainnet.json +10 -2
- package/src/factory/SDKFactory.ts +282 -0
- package/src/implementations/SLPAPI.ts +1207 -0
- package/src/implementations/SLPDataAPI.ts +1188 -0
- package/src/implementations/USDZAPI.ts +715 -0
- package/src/implementations/USDZDataAPI.ts +826 -0
- package/src/implementations/ZLPAPI.ts +1130 -0
- package/src/implementations/ZLPDataAPI.ts +856 -0
- package/src/implementations/index.ts +14 -0
- package/src/index.ts +53 -0
- package/src/interfaces/base.ts +556 -0
- package/src/interfaces/index.ts +45 -0
- package/src/interfaces/slp.ts +156 -0
- package/src/interfaces/usdz.ts +71 -0
- package/src/interfaces/zlp.ts +96 -0
- package/src/oracle.ts +12 -42
- package/tsconfig.json +4 -2
- package/dist/consts/staking/deployments-mainnet.json +0 -12
- package/dist/consts/staking/deployments-testnet.json +0 -11
- package/src/consts/staking/deployments-mainnet.json +0 -12
- package/src/consts/staking/deployments-testnet.json +0 -11
- /package/dist/consts/{deployments-testnet.json → deployments-zlp-testnet.json} +0 -0
- /package/src/consts/{deployments-testnet.json → deployments-zlp-testnet.json} +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for all API implementations
|
|
3
|
+
* Extends BaseDataAPI with trading functionality
|
|
4
|
+
*/
|
|
5
|
+
import type { SuiClient } from "@mysten/sui/client";
|
|
6
|
+
import { Transaction } from "@mysten/sui/transactions";
|
|
7
|
+
import type { Network, LPToken } from "../consts/index.mjs";
|
|
8
|
+
import type { IBaseAPI, IBaseCredential } from "../interfaces/index.mjs";
|
|
9
|
+
import { BaseDataAPI } from "./BaseDataAPI.mjs";
|
|
10
|
+
import { KioskClient, KioskOwnerCap } from "@mysten/kiosk";
|
|
11
|
+
export declare abstract class BaseAPI extends BaseDataAPI implements IBaseAPI {
|
|
12
|
+
constructor(network: Network, provider: SuiClient, apiEndpoint: string, connectionURL: string, lpToken: LPToken);
|
|
13
|
+
/**
|
|
14
|
+
* Processes coin objects for transactions
|
|
15
|
+
* Handles SUI gas coin and merges multiple coin objects if needed
|
|
16
|
+
*/
|
|
17
|
+
protected processCoins(tx: Transaction, coin: string, coinObjects: string[]): {
|
|
18
|
+
$kind: "Input";
|
|
19
|
+
Input: number;
|
|
20
|
+
type?: "object";
|
|
21
|
+
} | {
|
|
22
|
+
$kind: "GasCoin";
|
|
23
|
+
GasCoin: true;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Processes slippage for price calculations
|
|
27
|
+
*/
|
|
28
|
+
protected processSlippage(indexPrice: number, long: boolean, slippage: number): bigint;
|
|
29
|
+
/**
|
|
30
|
+
* Determines trade allowance based on order type
|
|
31
|
+
*/
|
|
32
|
+
protected getTradeAllowance(isLimitOrder: boolean, isIocOrder: boolean): number;
|
|
33
|
+
abstract deposit(coin: string, coinObjects: string[], amount: number, minAmountOut?: number, referralAddress?: string, sender?: string): Promise<Transaction>;
|
|
34
|
+
abstract withdraw(coin: string, lpCoinObjects: string[], amount: number, minAmountOut?: number): Promise<Transaction>;
|
|
35
|
+
abstract swap(fromToken: string, toToken: string, fromAmount: bigint, fromCoinObjects: string[]): Promise<Transaction>;
|
|
36
|
+
abstract stake(lpCoinObjects: string[], amount: bigint, pool: string, tx?: Transaction): Promise<Transaction>;
|
|
37
|
+
abstract unstake(credentials: IBaseCredential[], amount: bigint, pool: string, tx?: Transaction): Promise<Transaction>;
|
|
38
|
+
abstract openPosition(collateralToken: string, indexToken: string, size: bigint, collateralAmount: bigint, coinObjects: string[], long: boolean, reserveAmount: bigint, indexPrice: number, collateralPrice: number, isLimitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, referralAddress?: string, sender?: string): Promise<Transaction>;
|
|
39
|
+
abstract decreasePosition(pcpId: string, collateralToken: string, indexToken: string, amount: bigint, long: boolean, indexPrice: number, collateralPrice: number, isTriggerOrder?: boolean, isTakeProfitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, coinObjects?: string[]): Promise<Transaction>;
|
|
40
|
+
abstract decreaseMultiPositions(positions: Array<{
|
|
41
|
+
pcpId: string;
|
|
42
|
+
collateralToken: string;
|
|
43
|
+
indexToken: string;
|
|
44
|
+
amount: bigint;
|
|
45
|
+
long: boolean;
|
|
46
|
+
indexPrice: number;
|
|
47
|
+
collateralPrice: number;
|
|
48
|
+
isTriggerOrder?: boolean;
|
|
49
|
+
isTakeProfitOrder?: boolean;
|
|
50
|
+
isIocOrder?: boolean;
|
|
51
|
+
pricesSlippage?: number;
|
|
52
|
+
collateralSlippage?: number;
|
|
53
|
+
relayerFee?: bigint;
|
|
54
|
+
coinObjects?: string[];
|
|
55
|
+
}>, tx?: Transaction): Promise<Transaction>;
|
|
56
|
+
abstract pledgeInPosition(pcpId: string, collateralToken: string, indexToken: string, amount: number, coinObjects: string[], long: boolean): Promise<Transaction>;
|
|
57
|
+
abstract redeemFromPosition(pcpId: string, collateralToken: string, indexToken: string, amount: number, long: boolean): Promise<Transaction>;
|
|
58
|
+
abstract cancelOrder(orderCapId: string, collateralToken: string, indexToken: string, long: boolean, type: string, isV11Order?: boolean): Promise<Transaction>;
|
|
59
|
+
abstract cancelMultiOrders(orders: Array<{
|
|
60
|
+
orderCapId: string;
|
|
61
|
+
collateralToken: string;
|
|
62
|
+
indexToken: string;
|
|
63
|
+
long: boolean;
|
|
64
|
+
type: string;
|
|
65
|
+
isV11Order?: boolean;
|
|
66
|
+
}>, tx?: Transaction): Promise<Transaction>;
|
|
67
|
+
abstract clearClosedPosition(pcpId: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction): void;
|
|
68
|
+
abstract clearOpenPositionOrder(orderCapId: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction, isV11Order?: boolean): void;
|
|
69
|
+
abstract clearDecreasePositionOrder(orderCapId: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction, isV11Order?: boolean): void;
|
|
70
|
+
abstract openPositionWithSCard(collateralToken: string, indexToken: string, size: bigint, collateralAmount: bigint, coinObjects: string[], long: boolean, reserveAmount: bigint, indexPrice: number, collateralPrice: number, kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string, isLimitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, referralAddress?: string, sender?: string): Promise<Transaction>;
|
|
71
|
+
abstract decreasePositionWithSCard(pcpId: string, collateralToken: string, indexToken: string, amount: bigint, long: boolean, indexPrice: number, collateralPrice: number, kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string, isTriggerOrder?: boolean, isTakeProfitOrder?: boolean, isIocOrder?: boolean, pricesSlippage?: number, collateralSlippage?: number, relayerFee?: bigint, coinObjects?: string[]): Promise<Transaction>;
|
|
72
|
+
abstract decreaseMultiPositionsWithSCard(positions: Array<{
|
|
73
|
+
pcpId: string;
|
|
74
|
+
collateralToken: string;
|
|
75
|
+
indexToken: string;
|
|
76
|
+
amount: bigint;
|
|
77
|
+
long: boolean;
|
|
78
|
+
indexPrice: number;
|
|
79
|
+
collateralPrice: number;
|
|
80
|
+
isTriggerOrder?: boolean;
|
|
81
|
+
isTakeProfitOrder?: boolean;
|
|
82
|
+
isIocOrder?: boolean;
|
|
83
|
+
pricesSlippage?: number;
|
|
84
|
+
collateralSlippage?: number;
|
|
85
|
+
relayerFee?: bigint;
|
|
86
|
+
coinObjects?: string[];
|
|
87
|
+
}>, kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string, tx?: Transaction): Promise<Transaction>;
|
|
88
|
+
abstract claimTokenFromSCard(token: string, coinObjects: string[], kioskClient: KioskClient, kioskCap: KioskOwnerCap, scard: string): Promise<Transaction>;
|
|
89
|
+
abstract addReferral(referrer: string, tx?: Transaction): Transaction;
|
|
90
|
+
abstract adminUpdatePriceFeed(collateralToken: string, indexToken: string): Promise<Transaction>;
|
|
91
|
+
abstract adminSettlePosition(positionId: string, owner: string, collateralToken: string, indexToken: string, long: boolean): Promise<Transaction>;
|
|
92
|
+
abstract adminDecreasePosition(positionId: string, owner: string, collateralToken: string, indexToken: string, positionAmount: number, amount: bigint, long: boolean, collateralPrice?: number, collateralSlippage?: number, relayerFee?: bigint): Promise<Transaction>;
|
|
93
|
+
abstract adminClearClosedPosition(positionId: string, owner: string, collateralToken: string, indexToken: string, long: boolean, tx: Transaction): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Helper method to initialize oracle transaction block
|
|
96
|
+
* This is commonly used across all LP token implementations
|
|
97
|
+
*/
|
|
98
|
+
protected initOracleTransaction(tokens: string[], tx?: Transaction): Promise<Transaction>;
|
|
99
|
+
/**
|
|
100
|
+
* Helper method to add clock object to transaction
|
|
101
|
+
*/
|
|
102
|
+
protected addClockToTransaction(tx: Transaction): {
|
|
103
|
+
$kind: "Input";
|
|
104
|
+
Input: number;
|
|
105
|
+
type?: "object";
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Helper method to create move call arguments array
|
|
109
|
+
*/
|
|
110
|
+
protected createMoveCallArgs(tx: Transaction, args: any[]): any[];
|
|
111
|
+
/**
|
|
112
|
+
* Helper method to validate transaction parameters
|
|
113
|
+
*/
|
|
114
|
+
protected validateTransactionParams(params: {
|
|
115
|
+
coin?: string;
|
|
116
|
+
coinObjects?: string[];
|
|
117
|
+
amount?: number;
|
|
118
|
+
minAmountOut?: number;
|
|
119
|
+
}): void;
|
|
120
|
+
/**
|
|
121
|
+
* Helper method to validate position parameters
|
|
122
|
+
*/
|
|
123
|
+
protected validatePositionParams(params: {
|
|
124
|
+
collateralToken: string;
|
|
125
|
+
indexToken: string;
|
|
126
|
+
size: bigint;
|
|
127
|
+
collateralAmount: bigint;
|
|
128
|
+
long: boolean;
|
|
129
|
+
}): void;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=BaseAPI.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAPI.d.mts","sourceRoot":"","sources":["../../src/abstract/BaseAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for all API implementations
|
|
3
|
+
* Extends BaseDataAPI with trading functionality
|
|
4
|
+
*/
|
|
5
|
+
import { Transaction } from "@mysten/sui/transactions";
|
|
6
|
+
import { SUI_CLOCK_OBJECT_ID } from "@mysten/sui/utils";
|
|
7
|
+
import { ALLOW_TRADE_CAN_TRADE, ALLOW_TRADE_MUST_TRADE, ALLOW_TRADE_NO_TRADE } from "../consts/index.mjs";
|
|
8
|
+
import { BaseDataAPI } from "./BaseDataAPI.mjs";
|
|
9
|
+
import { KioskClient } from "@mysten/kiosk";
|
|
10
|
+
export class BaseAPI extends BaseDataAPI {
|
|
11
|
+
constructor(network, provider, apiEndpoint, connectionURL, lpToken) {
|
|
12
|
+
super(network, provider, apiEndpoint, connectionURL, lpToken);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Processes coin objects for transactions
|
|
16
|
+
* Handles SUI gas coin and merges multiple coin objects if needed
|
|
17
|
+
*/
|
|
18
|
+
processCoins(tx, coin, coinObjects) {
|
|
19
|
+
if (coin === 'sui') {
|
|
20
|
+
return tx.gas;
|
|
21
|
+
}
|
|
22
|
+
if (coinObjects.length > 1) {
|
|
23
|
+
tx.mergeCoins(tx.object(coinObjects[0]), coinObjects.slice(1).map(coinObject => tx.object(coinObject)));
|
|
24
|
+
}
|
|
25
|
+
return tx.object(coinObjects[0]);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Processes slippage for price calculations
|
|
29
|
+
*/
|
|
30
|
+
processSlippage(indexPrice, long, slippage) {
|
|
31
|
+
const raw = long ? indexPrice * (1 + slippage) : indexPrice * (1 - slippage);
|
|
32
|
+
return BigInt(Math.round(raw * 1e18));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Determines trade allowance based on order type
|
|
36
|
+
*/
|
|
37
|
+
getTradeAllowance(isLimitOrder, isIocOrder) {
|
|
38
|
+
if (isLimitOrder) {
|
|
39
|
+
return isIocOrder ? ALLOW_TRADE_NO_TRADE : ALLOW_TRADE_CAN_TRADE;
|
|
40
|
+
}
|
|
41
|
+
return ALLOW_TRADE_MUST_TRADE;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Helper method to initialize oracle transaction block
|
|
45
|
+
* This is commonly used across all LP token implementations
|
|
46
|
+
*/
|
|
47
|
+
async initOracleTransaction(tokens, tx) {
|
|
48
|
+
if (!tx) {
|
|
49
|
+
tx = new Transaction();
|
|
50
|
+
}
|
|
51
|
+
return await this.initOracleTxb(tokens, tx);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Helper method to add clock object to transaction
|
|
55
|
+
*/
|
|
56
|
+
addClockToTransaction(tx) {
|
|
57
|
+
return tx.object(SUI_CLOCK_OBJECT_ID);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Helper method to create move call arguments array
|
|
61
|
+
*/
|
|
62
|
+
createMoveCallArgs(tx, args) {
|
|
63
|
+
return args.map(arg => {
|
|
64
|
+
if (typeof arg === 'string' && arg.startsWith('0x')) {
|
|
65
|
+
return tx.object(arg);
|
|
66
|
+
}
|
|
67
|
+
if (typeof arg === 'number') {
|
|
68
|
+
return tx.pure.u64(arg);
|
|
69
|
+
}
|
|
70
|
+
if (typeof arg === 'bigint') {
|
|
71
|
+
return tx.pure.u256(arg);
|
|
72
|
+
}
|
|
73
|
+
return arg;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Helper method to validate transaction parameters
|
|
78
|
+
*/
|
|
79
|
+
validateTransactionParams(params) {
|
|
80
|
+
const { coin, coinObjects, amount, minAmountOut } = params;
|
|
81
|
+
if (coin && !this.consts.coins[coin]) {
|
|
82
|
+
throw new Error(`Unsupported coin: ${coin}`);
|
|
83
|
+
}
|
|
84
|
+
if (coinObjects && coinObjects.length === 0) {
|
|
85
|
+
throw new Error('At least one coin object is required');
|
|
86
|
+
}
|
|
87
|
+
if (amount !== undefined && amount <= 0) {
|
|
88
|
+
throw new Error('Amount must be greater than 0');
|
|
89
|
+
}
|
|
90
|
+
if (minAmountOut !== undefined && minAmountOut < 0) {
|
|
91
|
+
throw new Error('Minimum amount out cannot be negative');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Helper method to validate position parameters
|
|
96
|
+
*/
|
|
97
|
+
validatePositionParams(params) {
|
|
98
|
+
const { collateralToken, indexToken, size, collateralAmount } = params;
|
|
99
|
+
if (!this.consts.coins[collateralToken]) {
|
|
100
|
+
throw new Error(`Unsupported collateral token: ${collateralToken}`);
|
|
101
|
+
}
|
|
102
|
+
if (!this.consts.coins[indexToken]) {
|
|
103
|
+
throw new Error(`Unsupported index token: ${indexToken}`);
|
|
104
|
+
}
|
|
105
|
+
if (size <= 0n) {
|
|
106
|
+
throw new Error('Position size must be greater than 0');
|
|
107
|
+
}
|
|
108
|
+
if (collateralAmount <= 0n) {
|
|
109
|
+
throw new Error('Collateral amount must be greater than 0');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=BaseAPI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAPI.mjs","sourceRoot":"","sources":["../../src/abstract/BaseAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for all DataAPI implementations
|
|
4
|
+
* Provides common functionality and enforces interface contracts
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BaseDataAPI = void 0;
|
|
8
|
+
const oracle_1 = require("../oracle.cjs");
|
|
9
|
+
class BaseDataAPI extends oracle_1.OracleAPI {
|
|
10
|
+
constructor(network, provider, apiEndpoint, connectionURL, lpToken) {
|
|
11
|
+
super(network, provider, connectionURL, lpToken);
|
|
12
|
+
// Cache management
|
|
13
|
+
this.vaultInfoCache = {};
|
|
14
|
+
this.symbolInfoCache = {};
|
|
15
|
+
this.marketInfoCache = null;
|
|
16
|
+
this.positionConfigCache = {};
|
|
17
|
+
this.rebaseFeeModelCache = null;
|
|
18
|
+
this.lastUpdate = 0;
|
|
19
|
+
this.CACHE_DURATION = 1000 * 60 * 3; // 3 minutes
|
|
20
|
+
this.provider = provider;
|
|
21
|
+
this.apiEndpoint = apiEndpoint;
|
|
22
|
+
this.connectionURL = connectionURL;
|
|
23
|
+
this.lpToken = lpToken;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Validates and clears cache if expired
|
|
27
|
+
*/
|
|
28
|
+
validateCache() {
|
|
29
|
+
super.validateCache();
|
|
30
|
+
if (this.lastUpdate + this.CACHE_DURATION < Date.now()) {
|
|
31
|
+
this.clearCache();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Clears all cached data
|
|
36
|
+
*/
|
|
37
|
+
clearCache() {
|
|
38
|
+
this.lastUpdate = Date.now();
|
|
39
|
+
this.vaultInfoCache = {};
|
|
40
|
+
this.symbolInfoCache = {};
|
|
41
|
+
this.marketInfoCache = null;
|
|
42
|
+
this.positionConfigCache = {};
|
|
43
|
+
this.rebaseFeeModelCache = null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets cached vault info or fetches if not cached
|
|
47
|
+
*/
|
|
48
|
+
async getCachedVaultInfo(vault) {
|
|
49
|
+
this.validateCache();
|
|
50
|
+
if (!this.vaultInfoCache[vault]) {
|
|
51
|
+
this.vaultInfoCache[vault] = await this.getVaultInfo(vault);
|
|
52
|
+
}
|
|
53
|
+
return this.vaultInfoCache[vault];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gets cached symbol info or fetches if not cached
|
|
57
|
+
*/
|
|
58
|
+
async getCachedSymbolInfo(tokenId, long) {
|
|
59
|
+
this.validateCache();
|
|
60
|
+
const key = `${tokenId}_${long}`;
|
|
61
|
+
if (!this.symbolInfoCache[key]) {
|
|
62
|
+
this.symbolInfoCache[key] = await this.getSymbolInfo(tokenId, long);
|
|
63
|
+
}
|
|
64
|
+
return this.symbolInfoCache[key];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Gets cached market info or fetches if not cached
|
|
68
|
+
*/
|
|
69
|
+
async getCachedMarketInfo() {
|
|
70
|
+
this.validateCache();
|
|
71
|
+
if (!this.marketInfoCache) {
|
|
72
|
+
this.marketInfoCache = await this.getMarketInfo();
|
|
73
|
+
}
|
|
74
|
+
return this.marketInfoCache;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets cached position config or fetches if not cached
|
|
78
|
+
*/
|
|
79
|
+
async getCachedPositionConfig(indexToken, long) {
|
|
80
|
+
this.validateCache();
|
|
81
|
+
const key = `${indexToken}_${long}`;
|
|
82
|
+
if (!this.positionConfigCache[key]) {
|
|
83
|
+
this.positionConfigCache[key] = await this.getPositionConfig(indexToken, long);
|
|
84
|
+
}
|
|
85
|
+
return this.positionConfigCache[key];
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Gets cached rebase fee model or fetches if not cached
|
|
89
|
+
*/
|
|
90
|
+
async getCachedRebaseFeeModel() {
|
|
91
|
+
this.validateCache();
|
|
92
|
+
if (!this.rebaseFeeModelCache) {
|
|
93
|
+
this.rebaseFeeModelCache = await this.getRebaseFeeModel();
|
|
94
|
+
}
|
|
95
|
+
return this.rebaseFeeModelCache;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Helper method to handle API requests with error handling
|
|
99
|
+
*/
|
|
100
|
+
async makeAPIRequest(endpoint) {
|
|
101
|
+
try {
|
|
102
|
+
const response = await fetch(`${this.apiEndpoint}${endpoint}`);
|
|
103
|
+
if (!response.ok) {
|
|
104
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
105
|
+
}
|
|
106
|
+
return await response.json();
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error(`Error fetching data from ${endpoint}:`, error);
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Helper method to parse numeric values from API responses
|
|
115
|
+
*/
|
|
116
|
+
parseNumericValue(value, decimals = 0) {
|
|
117
|
+
if (typeof value === 'string') {
|
|
118
|
+
return Number(value) / Math.pow(10, decimals);
|
|
119
|
+
}
|
|
120
|
+
if (typeof value === 'bigint') {
|
|
121
|
+
return Number(value) / Math.pow(10, decimals);
|
|
122
|
+
}
|
|
123
|
+
return Number(value) || 0;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Helper method to parse bigint values from API responses
|
|
127
|
+
*/
|
|
128
|
+
parseBigIntValue(value) {
|
|
129
|
+
if (typeof value === 'string') {
|
|
130
|
+
return BigInt(value);
|
|
131
|
+
}
|
|
132
|
+
if (typeof value === 'bigint') {
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
return BigInt(Number(value) || 0);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.BaseDataAPI = BaseDataAPI;
|
|
139
|
+
//# sourceMappingURL=BaseDataAPI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseDataAPI.cjs","sourceRoot":"","sources":["../../src/abstract/BaseDataAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for all DataAPI implementations
|
|
3
|
+
* Provides common functionality and enforces interface contracts
|
|
4
|
+
*/
|
|
5
|
+
import type { SuiClient } from "@mysten/sui/client";
|
|
6
|
+
import type { Transaction } from "@mysten/sui/transactions";
|
|
7
|
+
import type { Network, LPToken } from "../consts/index.cjs";
|
|
8
|
+
import type { IBaseDataAPI, IBaseMarketValuationInfo, IBaseMarketInfo, IBaseVaultInfo, IBaseSymbolInfo, IBasePositionInfo, IBasePositionConfig, IBasePositionCapInfo, IBaseOrderInfo, IBaseOrderCapInfo, IBaseHistoryResponse, IBaseStaked, IBaseRebaseFeeModel, IBaseStakePool } from "../interfaces/index.cjs";
|
|
9
|
+
import { OracleAPI } from "../oracle.cjs";
|
|
10
|
+
export declare abstract class BaseDataAPI extends OracleAPI implements IBaseDataAPI {
|
|
11
|
+
readonly provider: SuiClient;
|
|
12
|
+
readonly apiEndpoint: string;
|
|
13
|
+
readonly connectionURL: string;
|
|
14
|
+
readonly lpToken: LPToken;
|
|
15
|
+
protected vaultInfoCache: Record<string, IBaseVaultInfo>;
|
|
16
|
+
protected symbolInfoCache: Record<string, IBaseSymbolInfo>;
|
|
17
|
+
protected marketInfoCache: IBaseMarketInfo | null;
|
|
18
|
+
protected positionConfigCache: Record<string, IBasePositionConfig>;
|
|
19
|
+
protected rebaseFeeModelCache: IBaseRebaseFeeModel | null;
|
|
20
|
+
protected lastUpdate: number;
|
|
21
|
+
protected readonly CACHE_DURATION: number;
|
|
22
|
+
constructor(network: Network, provider: SuiClient, apiEndpoint: string, connectionURL: string, lpToken: LPToken);
|
|
23
|
+
/**
|
|
24
|
+
* Validates and clears cache if expired
|
|
25
|
+
*/
|
|
26
|
+
validateCache(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Clears all cached data
|
|
29
|
+
*/
|
|
30
|
+
protected clearCache(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Gets cached vault info or fetches if not cached
|
|
33
|
+
*/
|
|
34
|
+
protected getCachedVaultInfo(vault: string): Promise<IBaseVaultInfo>;
|
|
35
|
+
/**
|
|
36
|
+
* Gets cached symbol info or fetches if not cached
|
|
37
|
+
*/
|
|
38
|
+
protected getCachedSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
|
|
39
|
+
/**
|
|
40
|
+
* Gets cached market info or fetches if not cached
|
|
41
|
+
*/
|
|
42
|
+
protected getCachedMarketInfo(): Promise<IBaseMarketInfo>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets cached position config or fetches if not cached
|
|
45
|
+
*/
|
|
46
|
+
protected getCachedPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
|
|
47
|
+
/**
|
|
48
|
+
* Gets cached rebase fee model or fetches if not cached
|
|
49
|
+
*/
|
|
50
|
+
protected getCachedRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
|
|
51
|
+
abstract valuateVaults(tx: Transaction): any;
|
|
52
|
+
abstract valuateSymbols(tx: Transaction): any;
|
|
53
|
+
abstract valuate(tx: Transaction): {
|
|
54
|
+
vaultsValuation: any;
|
|
55
|
+
symbolsValuation: any;
|
|
56
|
+
};
|
|
57
|
+
abstract valuateMarket(): Promise<IBaseMarketValuationInfo>;
|
|
58
|
+
abstract fundingFeeRate(indexToken: string, long: boolean, sender?: string): Promise<number>;
|
|
59
|
+
abstract rebaseFeeRate(collateralToken: string, increase: boolean, amount: number, sender?: string): Promise<number>;
|
|
60
|
+
abstract reservingFeeRate(collateralToken: string, amount: number, sender?: string): Promise<number>;
|
|
61
|
+
abstract getMarketInfo(): Promise<IBaseMarketInfo>;
|
|
62
|
+
abstract getVaultInfo(vault: string): Promise<IBaseVaultInfo>;
|
|
63
|
+
abstract getSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
|
|
64
|
+
abstract getPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
|
|
65
|
+
abstract getRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
|
|
66
|
+
abstract getOpenPositions(batchSize: number, symbol: string): Promise<IBasePositionInfo[]>;
|
|
67
|
+
abstract getPositionCapInfoList(owner: string): Promise<IBasePositionCapInfo[]>;
|
|
68
|
+
abstract getPositionInfoList(positionCapInfoList: IBasePositionCapInfo[], owner: string): Promise<IBasePositionInfo[]>;
|
|
69
|
+
abstract getOrderCapInfoList(owner: string): Promise<IBaseOrderCapInfo[]>;
|
|
70
|
+
abstract getOrderInfoList(orderCapInfoList: IBaseOrderCapInfo[], owner: string): Promise<IBaseOrderInfo[]>;
|
|
71
|
+
abstract getHistory(trader: string, page: number, limit: number, orderType?: string, symbol?: string): Promise<IBaseHistoryResponse>;
|
|
72
|
+
abstract getStaked(owner: string): Promise<IBaseStaked>;
|
|
73
|
+
abstract getStakePool(): Promise<IBaseStakePool>;
|
|
74
|
+
abstract hasReferral(referree: string): Promise<boolean>;
|
|
75
|
+
abstract getReferralData(referree: string): Promise<any>;
|
|
76
|
+
/**
|
|
77
|
+
* Helper method to handle API requests with error handling
|
|
78
|
+
*/
|
|
79
|
+
protected makeAPIRequest<T>(endpoint: string): Promise<T>;
|
|
80
|
+
/**
|
|
81
|
+
* Helper method to parse numeric values from API responses
|
|
82
|
+
*/
|
|
83
|
+
protected parseNumericValue(value: any, decimals?: number): number;
|
|
84
|
+
/**
|
|
85
|
+
* Helper method to parse bigint values from API responses
|
|
86
|
+
*/
|
|
87
|
+
protected parseBigIntValue(value: any): bigint;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=BaseDataAPI.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseDataAPI.d.cts","sourceRoot":"","sources":["../../src/abstract/BaseDataAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract base class for all DataAPI implementations
|
|
3
|
+
* Provides common functionality and enforces interface contracts
|
|
4
|
+
*/
|
|
5
|
+
import type { SuiClient } from "@mysten/sui/client";
|
|
6
|
+
import type { Transaction } from "@mysten/sui/transactions";
|
|
7
|
+
import type { Network, LPToken } from "../consts/index.mjs";
|
|
8
|
+
import type { IBaseDataAPI, IBaseMarketValuationInfo, IBaseMarketInfo, IBaseVaultInfo, IBaseSymbolInfo, IBasePositionInfo, IBasePositionConfig, IBasePositionCapInfo, IBaseOrderInfo, IBaseOrderCapInfo, IBaseHistoryResponse, IBaseStaked, IBaseRebaseFeeModel, IBaseStakePool } from "../interfaces/index.mjs";
|
|
9
|
+
import { OracleAPI } from "../oracle.mjs";
|
|
10
|
+
export declare abstract class BaseDataAPI extends OracleAPI implements IBaseDataAPI {
|
|
11
|
+
readonly provider: SuiClient;
|
|
12
|
+
readonly apiEndpoint: string;
|
|
13
|
+
readonly connectionURL: string;
|
|
14
|
+
readonly lpToken: LPToken;
|
|
15
|
+
protected vaultInfoCache: Record<string, IBaseVaultInfo>;
|
|
16
|
+
protected symbolInfoCache: Record<string, IBaseSymbolInfo>;
|
|
17
|
+
protected marketInfoCache: IBaseMarketInfo | null;
|
|
18
|
+
protected positionConfigCache: Record<string, IBasePositionConfig>;
|
|
19
|
+
protected rebaseFeeModelCache: IBaseRebaseFeeModel | null;
|
|
20
|
+
protected lastUpdate: number;
|
|
21
|
+
protected readonly CACHE_DURATION: number;
|
|
22
|
+
constructor(network: Network, provider: SuiClient, apiEndpoint: string, connectionURL: string, lpToken: LPToken);
|
|
23
|
+
/**
|
|
24
|
+
* Validates and clears cache if expired
|
|
25
|
+
*/
|
|
26
|
+
validateCache(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Clears all cached data
|
|
29
|
+
*/
|
|
30
|
+
protected clearCache(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Gets cached vault info or fetches if not cached
|
|
33
|
+
*/
|
|
34
|
+
protected getCachedVaultInfo(vault: string): Promise<IBaseVaultInfo>;
|
|
35
|
+
/**
|
|
36
|
+
* Gets cached symbol info or fetches if not cached
|
|
37
|
+
*/
|
|
38
|
+
protected getCachedSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
|
|
39
|
+
/**
|
|
40
|
+
* Gets cached market info or fetches if not cached
|
|
41
|
+
*/
|
|
42
|
+
protected getCachedMarketInfo(): Promise<IBaseMarketInfo>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets cached position config or fetches if not cached
|
|
45
|
+
*/
|
|
46
|
+
protected getCachedPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
|
|
47
|
+
/**
|
|
48
|
+
* Gets cached rebase fee model or fetches if not cached
|
|
49
|
+
*/
|
|
50
|
+
protected getCachedRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
|
|
51
|
+
abstract valuateVaults(tx: Transaction): any;
|
|
52
|
+
abstract valuateSymbols(tx: Transaction): any;
|
|
53
|
+
abstract valuate(tx: Transaction): {
|
|
54
|
+
vaultsValuation: any;
|
|
55
|
+
symbolsValuation: any;
|
|
56
|
+
};
|
|
57
|
+
abstract valuateMarket(): Promise<IBaseMarketValuationInfo>;
|
|
58
|
+
abstract fundingFeeRate(indexToken: string, long: boolean, sender?: string): Promise<number>;
|
|
59
|
+
abstract rebaseFeeRate(collateralToken: string, increase: boolean, amount: number, sender?: string): Promise<number>;
|
|
60
|
+
abstract reservingFeeRate(collateralToken: string, amount: number, sender?: string): Promise<number>;
|
|
61
|
+
abstract getMarketInfo(): Promise<IBaseMarketInfo>;
|
|
62
|
+
abstract getVaultInfo(vault: string): Promise<IBaseVaultInfo>;
|
|
63
|
+
abstract getSymbolInfo(tokenId: string, long: boolean): Promise<IBaseSymbolInfo>;
|
|
64
|
+
abstract getPositionConfig(indexToken: string, long: boolean): Promise<IBasePositionConfig>;
|
|
65
|
+
abstract getRebaseFeeModel(): Promise<IBaseRebaseFeeModel>;
|
|
66
|
+
abstract getOpenPositions(batchSize: number, symbol: string): Promise<IBasePositionInfo[]>;
|
|
67
|
+
abstract getPositionCapInfoList(owner: string): Promise<IBasePositionCapInfo[]>;
|
|
68
|
+
abstract getPositionInfoList(positionCapInfoList: IBasePositionCapInfo[], owner: string): Promise<IBasePositionInfo[]>;
|
|
69
|
+
abstract getOrderCapInfoList(owner: string): Promise<IBaseOrderCapInfo[]>;
|
|
70
|
+
abstract getOrderInfoList(orderCapInfoList: IBaseOrderCapInfo[], owner: string): Promise<IBaseOrderInfo[]>;
|
|
71
|
+
abstract getHistory(trader: string, page: number, limit: number, orderType?: string, symbol?: string): Promise<IBaseHistoryResponse>;
|
|
72
|
+
abstract getStaked(owner: string): Promise<IBaseStaked>;
|
|
73
|
+
abstract getStakePool(): Promise<IBaseStakePool>;
|
|
74
|
+
abstract hasReferral(referree: string): Promise<boolean>;
|
|
75
|
+
abstract getReferralData(referree: string): Promise<any>;
|
|
76
|
+
/**
|
|
77
|
+
* Helper method to handle API requests with error handling
|
|
78
|
+
*/
|
|
79
|
+
protected makeAPIRequest<T>(endpoint: string): Promise<T>;
|
|
80
|
+
/**
|
|
81
|
+
* Helper method to parse numeric values from API responses
|
|
82
|
+
*/
|
|
83
|
+
protected parseNumericValue(value: any, decimals?: number): number;
|
|
84
|
+
/**
|
|
85
|
+
* Helper method to parse bigint values from API responses
|
|
86
|
+
*/
|
|
87
|
+
protected parseBigIntValue(value: any): bigint;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=BaseDataAPI.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseDataAPI.d.mts","sourceRoot":"","sources":["../../src/abstract/BaseDataAPI.ts"],"names":[],"mappings":"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"}
|