zo-sdk 0.0.50 → 0.1.0
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 +40 -8
- 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 +39 -7
- package/dist/consts/index.mjs.map +1 -1
- package/dist/consts/price_id_to_object_id.mainnet.json +9 -1
- package/dist/data.cjs +2 -2
- package/dist/data.cjs.map +1 -1
- package/dist/data.mjs +2 -2
- package/dist/data.mjs.map +1 -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 +134 -39
- package/src/consts/price_id_to_object_id.mainnet.json +10 -2
- package/src/data.ts +2 -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
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ZO SDK - Multi-LP Token Architecture
|
|
2
2
|
|
|
3
|
-
A TypeScript SDK for interacting with
|
|
3
|
+
A re-architected TypeScript SDK for interacting with multiple LP tokens on Sui Network: ZLP (ZO Liquidity Provider), SLP (Sudo Liquidity Provider), and USDZ (USD Stablecoin).
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -10,7 +10,160 @@ npm install zo-sdk
|
|
|
10
10
|
yarn add zo-sdk
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Architecture Overview
|
|
14
|
+
|
|
15
|
+
The SDK has been re-architected to support multiple LP tokens through a unified interface pattern:
|
|
16
|
+
|
|
17
|
+
- **ZLP (ZO Liquidity Provider)**: Original ZO Protocol LP token
|
|
18
|
+
- **SLP (Sudo Liquidity Provider)**: Sudo SDK-based LP token
|
|
19
|
+
- **USDZ (USD Stablecoin)**: Stablecoin LP token
|
|
20
|
+
|
|
21
|
+
### Key Components
|
|
22
|
+
|
|
23
|
+
1. **Common Interfaces**: Unified API surface for all LP tokens (`IBaseAPI`, `IBaseDataAPI`)
|
|
24
|
+
2. **Abstract Base Classes**: Shared implementation logic (`BaseAPI`, `BaseDataAPI`)
|
|
25
|
+
3. **Concrete Implementations**: LP-specific functionality (`ZLPAPI`, `SLPAPI`, `USDZAPI`)
|
|
26
|
+
4. **Factory Pattern**: Type-safe SDK instance creation (`SDKFactory`)
|
|
27
|
+
5. **Legacy Compatibility**: Backward compatible API for existing integrations
|
|
28
|
+
|
|
29
|
+
## New SDK Usage (Recommended)
|
|
30
|
+
|
|
31
|
+
### Factory-based Approach
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { SDK, LPToken, Network } from 'zo-sdk'
|
|
35
|
+
import { SuiClient } from '@mysten/sui/client'
|
|
36
|
+
|
|
37
|
+
// Initialize Sui client
|
|
38
|
+
const provider = new SuiClient({ url: 'https://fullnode.mainnet.sui.io' })
|
|
39
|
+
const network = Network.MAINNET
|
|
40
|
+
const apiEndpoint = 'https://api.zo.xyz'
|
|
41
|
+
const connectionURL = 'wss://api.zo.xyz/ws'
|
|
42
|
+
|
|
43
|
+
// Create LP-specific API instances
|
|
44
|
+
const zlpAPI = SDK.createZLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
45
|
+
const slpAPI = SDK.createSLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
46
|
+
const usdzAPI = SDK.createUSDZAPI(network, provider, apiEndpoint, connectionURL)
|
|
47
|
+
|
|
48
|
+
// Or use generic factory
|
|
49
|
+
const api = SDK.createAPI(LPToken.ZLP, network, provider, apiEndpoint, connectionURL)
|
|
50
|
+
|
|
51
|
+
// Create DataAPI instances for read-only operations
|
|
52
|
+
const zlpDataAPI = SDK.createZLPDataAPI(network, provider, apiEndpoint, connectionURL)
|
|
53
|
+
const slpDataAPI = SDK.createSLPDataAPI(network, provider, apiEndpoint, connectionURL)
|
|
54
|
+
const usdzDataAPI = SDK.createUSDZDataAPI(network, provider, apiEndpoint, connectionURL)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### API vs DataAPI
|
|
58
|
+
|
|
59
|
+
The SDK provides two types of interfaces:
|
|
60
|
+
|
|
61
|
+
- **API Classes** (`ZLPAPI`, `SLPAPI`, `USDZAPI`): Full functionality including trading operations that create transactions
|
|
62
|
+
- **DataAPI Classes** (`ZLPDataAPI`, `SLPDataAPI`, `USDZDataAPI`): Read-only operations for querying blockchain state
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
// API instances include both data access and transaction creation
|
|
66
|
+
const zlpAPI = SDK.createZLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
67
|
+
const marketData = await zlpAPI.dataAPI.valuateMarket() // Data access
|
|
68
|
+
const depositTx = await zlpAPI.deposit('usdc', ['coinId'], 1000000) // Transaction creation
|
|
69
|
+
|
|
70
|
+
// DataAPI instances are for read-only operations only
|
|
71
|
+
const zlpDataAPI = SDK.createZLPDataAPI(network, provider, apiEndpoint, connectionURL)
|
|
72
|
+
const marketData = await zlpDataAPI.valuateMarket() // Data access only
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Common Operations Across All LP Tokens
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// Market valuation (all LP tokens)
|
|
79
|
+
const zlpMarket = await zlpAPI.dataAPI.valuateMarket()
|
|
80
|
+
const slpMarket = await slpAPI.dataAPI.valuateMarket()
|
|
81
|
+
const usdzMarket = await usdzAPI.dataAPI.valuateMarket()
|
|
82
|
+
|
|
83
|
+
// Deposit operations (all LP tokens)
|
|
84
|
+
const depositTx = await zlpAPI.deposit(
|
|
85
|
+
'usdc', // coin type
|
|
86
|
+
['coinObjectId'], // coin object IDs
|
|
87
|
+
1000000, // amount
|
|
88
|
+
0, // minimum amount out
|
|
89
|
+
'referralAddress', // optional referral
|
|
90
|
+
'senderAddress' // optional sender
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// Similar for SLP and USDZ
|
|
94
|
+
const slpDepositTx = await slpAPI.deposit('usdc', ['coinObjectId'], 1000000)
|
|
95
|
+
const usdzDepositTx = await usdzAPI.deposit('usdc', ['coinObjectId'], 1000000)
|
|
96
|
+
|
|
97
|
+
// Withdraw operations
|
|
98
|
+
const withdrawTx = await zlpAPI.withdraw(
|
|
99
|
+
'usdc', // coin to withdraw
|
|
100
|
+
['lpCoinObjectId'], // LP coin object IDs
|
|
101
|
+
1000000, // amount
|
|
102
|
+
0 // minimum amount out
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
// Swap operations
|
|
106
|
+
const swapTx = await zlpAPI.swap(
|
|
107
|
+
'usdc', // from token
|
|
108
|
+
'sui', // to token
|
|
109
|
+
BigInt(1000000), // amount
|
|
110
|
+
['coinObjectId'], // coin objects
|
|
111
|
+
0 // minimum amount out
|
|
112
|
+
)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### LP-Specific Features
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
// ZLP-specific: Advanced trading operations
|
|
119
|
+
// Open leveraged position
|
|
120
|
+
const openPositionTx = await zlpAPI.openPosition(
|
|
121
|
+
'usdc', // collateral token
|
|
122
|
+
'btc', // index token
|
|
123
|
+
BigInt(1000000), // size
|
|
124
|
+
BigInt(100000), // collateral amount
|
|
125
|
+
['coinObjectId'], // coin objects
|
|
126
|
+
true, // long position
|
|
127
|
+
BigInt(50000), // reserve amount
|
|
128
|
+
30000, // index price
|
|
129
|
+
1.5, // collateral price
|
|
130
|
+
false, // is limit order
|
|
131
|
+
false, // is IOC order
|
|
132
|
+
0.003, // price slippage
|
|
133
|
+
0.5, // collateral slippage
|
|
134
|
+
BigInt(500), // relayer fee
|
|
135
|
+
'referralAddress', // referral
|
|
136
|
+
'senderAddress' // sender
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
// SLP-specific: Sudo SDK operations
|
|
140
|
+
// Stake SLP tokens
|
|
141
|
+
const stakeTx = await slpAPI.stake(
|
|
142
|
+
['slpCoinObjectId'], // LP coin objects
|
|
143
|
+
BigInt(1000000), // amount
|
|
144
|
+
'poolId' // staking pool
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
// Unstake SLP tokens
|
|
148
|
+
const unstakeTx = await slpAPI.unstake(
|
|
149
|
+
credentials, // SLP credentials
|
|
150
|
+
BigInt(500000), // amount
|
|
151
|
+
'poolId' // staking pool
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
// USDZ-specific: Stablecoin operations
|
|
155
|
+
// (Similar deposit/withdraw/swap operations optimized for stablecoin use cases)
|
|
156
|
+
const usdzSwapTx = await usdzAPI.swap(
|
|
157
|
+
'usdc', // from stable
|
|
158
|
+
'usdt', // to stable
|
|
159
|
+
BigInt(1000000), // amount
|
|
160
|
+
['coinObjectId'] // coin objects
|
|
161
|
+
)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Legacy SDK Usage (Backward Compatible)
|
|
165
|
+
|
|
166
|
+
### Quick Start
|
|
14
167
|
|
|
15
168
|
```typescript
|
|
16
169
|
import { API, Network } from 'zo-sdk'
|
|
@@ -76,7 +229,13 @@ const tx = await api.openPosition(
|
|
|
76
229
|
BigInt(100000), // reserve amount
|
|
77
230
|
30000, // index price
|
|
78
231
|
1.5, // collateral price
|
|
79
|
-
|
|
232
|
+
false, // is limit order
|
|
233
|
+
false, // is IOC order
|
|
234
|
+
0.003, // price slippage
|
|
235
|
+
0.5, // collateral slippage
|
|
236
|
+
BigInt(500), // relayer fee
|
|
237
|
+
'referralAddress', // referral address
|
|
238
|
+
'senderAddress' // sender address
|
|
80
239
|
)
|
|
81
240
|
|
|
82
241
|
// Decrease a position
|
|
@@ -103,11 +262,11 @@ const tx = await api.cancelOrder(
|
|
|
103
262
|
### Data Queries
|
|
104
263
|
|
|
105
264
|
```typescript
|
|
106
|
-
// Get
|
|
107
|
-
const
|
|
265
|
+
// Get market information
|
|
266
|
+
const marketInfo = await api.getMarketInfo()
|
|
108
267
|
|
|
109
|
-
// Get
|
|
110
|
-
const
|
|
268
|
+
// Get oracle price for a token
|
|
269
|
+
const price = await api.getOraclePrice('sui')
|
|
111
270
|
|
|
112
271
|
// Get vault information
|
|
113
272
|
const vaultInfo = await api.getVaultInfo('sui')
|
|
@@ -117,24 +276,67 @@ const symbolInfo = await api.getSymbolInfo('btc', true) // true for long
|
|
|
117
276
|
|
|
118
277
|
// Get market valuation
|
|
119
278
|
const valuation = await api.valuateMarket()
|
|
279
|
+
|
|
280
|
+
// Get position cap info list
|
|
281
|
+
const positionCaps = await api.getPositionCapInfoList('ownerAddress')
|
|
282
|
+
|
|
283
|
+
// Get order cap info list
|
|
284
|
+
const orderCaps = await api.getOrderCapInfoList('ownerAddress')
|
|
285
|
+
|
|
286
|
+
// Get position information
|
|
287
|
+
const positions = await api.getPositionInfoList(positionCaps, 'ownerAddress')
|
|
288
|
+
|
|
289
|
+
// Get order information
|
|
290
|
+
const orders = await api.getOrderInfoList(orderCaps, 'ownerAddress')
|
|
120
291
|
```
|
|
121
292
|
|
|
122
293
|
### Staking Operations
|
|
123
294
|
|
|
124
295
|
```typescript
|
|
125
|
-
// Stake ZLP
|
|
126
|
-
const
|
|
127
|
-
['zlpCoinObjectId'],
|
|
128
|
-
BigInt(1000000),
|
|
129
|
-
'poolId'
|
|
296
|
+
// Stake ZLP tokens
|
|
297
|
+
const stakeTx = await api.stake(
|
|
298
|
+
['zlpCoinObjectId'], // ZLP coin object IDs
|
|
299
|
+
BigInt(1000000), // amount to stake
|
|
300
|
+
'poolId' // staking pool ID
|
|
130
301
|
)
|
|
131
302
|
|
|
132
|
-
// Unstake ZLP
|
|
133
|
-
const
|
|
134
|
-
credentials,
|
|
135
|
-
BigInt(1000000),
|
|
136
|
-
'poolId'
|
|
303
|
+
// Unstake ZLP tokens
|
|
304
|
+
const unstakeTx = await api.unstake(
|
|
305
|
+
credentials, // staking credentials
|
|
306
|
+
BigInt(1000000), // amount to unstake
|
|
307
|
+
'poolId' // staking pool ID
|
|
137
308
|
)
|
|
309
|
+
|
|
310
|
+
// Get staked information
|
|
311
|
+
const stakedInfo = await api.getStaked('ownerAddress')
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Type Safety and Interfaces
|
|
315
|
+
|
|
316
|
+
The SDK is built with TypeScript and provides comprehensive type definitions:
|
|
317
|
+
|
|
318
|
+
```typescript
|
|
319
|
+
import type {
|
|
320
|
+
IBaseAPI,
|
|
321
|
+
IBaseDataAPI,
|
|
322
|
+
IZLPAPI,
|
|
323
|
+
ISLPAPI,
|
|
324
|
+
IUSDZAPI,
|
|
325
|
+
IBaseMarketValuationInfo,
|
|
326
|
+
IBaseVaultInfo,
|
|
327
|
+
IBaseSymbolInfo,
|
|
328
|
+
IBasePositionInfo,
|
|
329
|
+
IBaseOrderInfo
|
|
330
|
+
} from 'zo-sdk'
|
|
331
|
+
|
|
332
|
+
// All APIs implement their respective interfaces
|
|
333
|
+
const zlpAPI: IZLPAPI = SDK.createZLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
334
|
+
const slpAPI: ISLPAPI = SDK.createSLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
335
|
+
const usdzAPI: IUSDZAPI = SDK.createUSDZAPI(network, provider, apiEndpoint, connectionURL)
|
|
336
|
+
|
|
337
|
+
// Type-safe data structures
|
|
338
|
+
const marketInfo: IBaseMarketValuationInfo = await zlpAPI.dataAPI.valuateMarket()
|
|
339
|
+
const vaultInfo: IBaseVaultInfo = await zlpAPI.dataAPI.getVaultInfo('usdc')
|
|
138
340
|
```
|
|
139
341
|
|
|
140
342
|
## Error Handling
|
|
@@ -144,11 +346,61 @@ The SDK throws errors for invalid operations and network issues. Always wrap API
|
|
|
144
346
|
```typescript
|
|
145
347
|
try {
|
|
146
348
|
const marketInfo = await api.getMarketInfo()
|
|
349
|
+
const depositTx = await api.deposit('usdc', ['coinId'], 1000000)
|
|
147
350
|
} catch (error) {
|
|
148
|
-
console.error('
|
|
351
|
+
console.error('SDK operation failed:', error)
|
|
352
|
+
// Handle specific error types
|
|
353
|
+
if (error.message.includes('Unsupported LP token')) {
|
|
354
|
+
console.error('Invalid LP token type provided')
|
|
355
|
+
}
|
|
149
356
|
}
|
|
150
357
|
```
|
|
151
358
|
|
|
359
|
+
## Migration Guide
|
|
360
|
+
|
|
361
|
+
### From Legacy SDK (v0.0.x)
|
|
362
|
+
|
|
363
|
+
If you're upgrading from an older version of the SDK:
|
|
364
|
+
|
|
365
|
+
```typescript
|
|
366
|
+
// Old way (still supported for backward compatibility)
|
|
367
|
+
import { API, Network } from 'zo-sdk'
|
|
368
|
+
const api = API.getInstance(network, provider, apiEndpoint, connectionURL)
|
|
369
|
+
|
|
370
|
+
// New way (recommended)
|
|
371
|
+
import { SDK, LPToken, Network } from 'zo-sdk'
|
|
372
|
+
const zlpAPI = SDK.createZLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
373
|
+
const slpAPI = SDK.createSLPAPI(network, provider, apiEndpoint, connectionURL)
|
|
374
|
+
const usdzAPI = SDK.createUSDZAPI(network, provider, apiEndpoint, connectionURL)
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Key Changes
|
|
378
|
+
|
|
379
|
+
1. **Multi-LP Token Support**: The SDK now supports ZLP, SLP, and USDZ tokens
|
|
380
|
+
2. **Factory Pattern**: Use `SDK.createXXXAPI()` methods instead of singleton instances
|
|
381
|
+
3. **Separate DataAPI**: Read-only operations are available through dedicated DataAPI classes
|
|
382
|
+
4. **Enhanced Type Safety**: Comprehensive TypeScript interfaces for all operations
|
|
383
|
+
5. **Modular Architecture**: Each LP token has its own implementation while sharing common interfaces
|
|
384
|
+
|
|
152
385
|
## Documentation
|
|
153
386
|
|
|
154
|
-
|
|
387
|
+
### API Reference
|
|
388
|
+
|
|
389
|
+
- **Factory Methods**: `SDK.createZLPAPI()`, `SDK.createSLPAPI()`, `SDK.createUSDZAPI()`
|
|
390
|
+
- **Base Interfaces**: `IBaseAPI`, `IBaseDataAPI` for common operations
|
|
391
|
+
- **LP-Specific Interfaces**: `IZLPAPI`, `ISLPAPI`, `IUSDZAPI` for specialized features
|
|
392
|
+
- **Data Types**: `IBaseMarketValuationInfo`, `IBaseVaultInfo`, `IBaseSymbolInfo`, etc.
|
|
393
|
+
|
|
394
|
+
### Source Code
|
|
395
|
+
|
|
396
|
+
For detailed implementation details and advanced usage:
|
|
397
|
+
|
|
398
|
+
- **Interfaces**: `/src/interfaces/` - TypeScript interface definitions
|
|
399
|
+
- **Implementations**: `/src/implementations/` - Concrete API implementations
|
|
400
|
+
- **Abstract Classes**: `/src/abstract/` - Shared base functionality
|
|
401
|
+
- **Factory**: `/src/factory/SDKFactory.ts` - SDK instance creation
|
|
402
|
+
- **Legacy API**: `/src/api.ts` - Backward compatible API
|
|
403
|
+
|
|
404
|
+
### Examples
|
|
405
|
+
|
|
406
|
+
Check the source code comments and type definitions for comprehensive examples of all available methods and their parameters.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for all API implementations
|
|
4
|
+
* Extends BaseDataAPI with trading functionality
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BaseAPI = void 0;
|
|
8
|
+
const transactions_1 = require("@mysten/sui/transactions");
|
|
9
|
+
const utils_1 = require("@mysten/sui/utils");
|
|
10
|
+
const consts_1 = require("../consts/index.cjs");
|
|
11
|
+
const BaseDataAPI_1 = require("./BaseDataAPI.cjs");
|
|
12
|
+
const kiosk_1 = require("@mysten/kiosk");
|
|
13
|
+
class BaseAPI extends BaseDataAPI_1.BaseDataAPI {
|
|
14
|
+
constructor(network, provider, apiEndpoint, connectionURL, lpToken) {
|
|
15
|
+
super(network, provider, apiEndpoint, connectionURL, lpToken);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Processes coin objects for transactions
|
|
19
|
+
* Handles SUI gas coin and merges multiple coin objects if needed
|
|
20
|
+
*/
|
|
21
|
+
processCoins(tx, coin, coinObjects) {
|
|
22
|
+
if (coin === 'sui') {
|
|
23
|
+
return tx.gas;
|
|
24
|
+
}
|
|
25
|
+
if (coinObjects.length > 1) {
|
|
26
|
+
tx.mergeCoins(tx.object(coinObjects[0]), coinObjects.slice(1).map(coinObject => tx.object(coinObject)));
|
|
27
|
+
}
|
|
28
|
+
return tx.object(coinObjects[0]);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Processes slippage for price calculations
|
|
32
|
+
*/
|
|
33
|
+
processSlippage(indexPrice, long, slippage) {
|
|
34
|
+
const raw = long ? indexPrice * (1 + slippage) : indexPrice * (1 - slippage);
|
|
35
|
+
return BigInt(Math.round(raw * 1e18));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Determines trade allowance based on order type
|
|
39
|
+
*/
|
|
40
|
+
getTradeAllowance(isLimitOrder, isIocOrder) {
|
|
41
|
+
if (isLimitOrder) {
|
|
42
|
+
return isIocOrder ? consts_1.ALLOW_TRADE_NO_TRADE : consts_1.ALLOW_TRADE_CAN_TRADE;
|
|
43
|
+
}
|
|
44
|
+
return consts_1.ALLOW_TRADE_MUST_TRADE;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Helper method to initialize oracle transaction block
|
|
48
|
+
* This is commonly used across all LP token implementations
|
|
49
|
+
*/
|
|
50
|
+
async initOracleTransaction(tokens, tx) {
|
|
51
|
+
if (!tx) {
|
|
52
|
+
tx = new transactions_1.Transaction();
|
|
53
|
+
}
|
|
54
|
+
return await this.initOracleTxb(tokens, tx);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Helper method to add clock object to transaction
|
|
58
|
+
*/
|
|
59
|
+
addClockToTransaction(tx) {
|
|
60
|
+
return tx.object(utils_1.SUI_CLOCK_OBJECT_ID);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Helper method to create move call arguments array
|
|
64
|
+
*/
|
|
65
|
+
createMoveCallArgs(tx, args) {
|
|
66
|
+
return args.map(arg => {
|
|
67
|
+
if (typeof arg === 'string' && arg.startsWith('0x')) {
|
|
68
|
+
return tx.object(arg);
|
|
69
|
+
}
|
|
70
|
+
if (typeof arg === 'number') {
|
|
71
|
+
return tx.pure.u64(arg);
|
|
72
|
+
}
|
|
73
|
+
if (typeof arg === 'bigint') {
|
|
74
|
+
return tx.pure.u256(arg);
|
|
75
|
+
}
|
|
76
|
+
return arg;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Helper method to validate transaction parameters
|
|
81
|
+
*/
|
|
82
|
+
validateTransactionParams(params) {
|
|
83
|
+
const { coin, coinObjects, amount, minAmountOut } = params;
|
|
84
|
+
if (coin && !this.consts.coins[coin]) {
|
|
85
|
+
throw new Error(`Unsupported coin: ${coin}`);
|
|
86
|
+
}
|
|
87
|
+
if (coinObjects && coinObjects.length === 0) {
|
|
88
|
+
throw new Error('At least one coin object is required');
|
|
89
|
+
}
|
|
90
|
+
if (amount !== undefined && amount <= 0) {
|
|
91
|
+
throw new Error('Amount must be greater than 0');
|
|
92
|
+
}
|
|
93
|
+
if (minAmountOut !== undefined && minAmountOut < 0) {
|
|
94
|
+
throw new Error('Minimum amount out cannot be negative');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Helper method to validate position parameters
|
|
99
|
+
*/
|
|
100
|
+
validatePositionParams(params) {
|
|
101
|
+
const { collateralToken, indexToken, size, collateralAmount } = params;
|
|
102
|
+
if (!this.consts.coins[collateralToken]) {
|
|
103
|
+
throw new Error(`Unsupported collateral token: ${collateralToken}`);
|
|
104
|
+
}
|
|
105
|
+
if (!this.consts.coins[indexToken]) {
|
|
106
|
+
throw new Error(`Unsupported index token: ${indexToken}`);
|
|
107
|
+
}
|
|
108
|
+
if (size <= 0n) {
|
|
109
|
+
throw new Error('Position size must be greater than 0');
|
|
110
|
+
}
|
|
111
|
+
if (collateralAmount <= 0n) {
|
|
112
|
+
throw new Error('Collateral amount must be greater than 0');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.BaseAPI = BaseAPI;
|
|
117
|
+
//# sourceMappingURL=BaseAPI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAPI.cjs","sourceRoot":"","sources":["../../src/abstract/BaseAPI.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,2DAAsD;AACtD,6CAAuD;AAEvD,gDAA+F;AAE/F,mDAA2C;AAC3C,yCAA0D;AAE1D,MAAsB,OAAQ,SAAQ,yBAAW;IAC/C,YACE,OAAgB,EAChB,QAAmB,EACnB,WAAmB,EACnB,aAAqB,EACrB,OAAgB;QAEhB,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC;IAED;;;OAGG;IACO,YAAY,CAAC,EAAe,EAAE,IAAY,EAAE,WAAqB;QACzE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC,GAAG,CAAA;QACf,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,UAAU,CACX,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACzB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAC9D,CAAA;QACH,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,UAAkB,EAAE,IAAa,EAAE,QAAgB;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAA;QAC5E,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAA;IACvC,CAAC;IAED;;OAEG;IACO,iBAAiB,CAAC,YAAqB,EAAE,UAAmB;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,UAAU,CAAC,CAAC,CAAC,6BAAoB,CAAC,CAAC,CAAC,8BAAqB,CAAA;QAClE,CAAC;QACD,OAAO,+BAAsB,CAAA;IAC/B,CAAC;IAsRD;;;OAGG;IACO,KAAK,CAAC,qBAAqB,CAAC,MAAgB,EAAE,EAAgB;QACtE,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,EAAE,GAAG,IAAI,0BAAW,EAAE,CAAA;QACxB,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,EAAe;QAC7C,OAAO,EAAE,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAA;IACvC,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,EAAe,EAAE,IAAW;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACzB,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACO,yBAAyB,CAAC,MAKnC;QACC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;QAE1D,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACO,sBAAsB,CAAC,MAMhC;QACC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAA;QAEtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,eAAe,EAAE,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,gBAAgB,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;CACF;AA9ZD,0BA8ZC"}
|
|
@@ -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.cjs";
|
|
8
|
+
import type { IBaseAPI, IBaseCredential } from "../interfaces/index.cjs";
|
|
9
|
+
import { BaseDataAPI } from "./BaseDataAPI.cjs";
|
|
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.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseAPI.d.cts","sourceRoot":"","sources":["../../src/abstract/BaseAPI.ts"],"names":[],"mappings":"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"}
|