@exponent-labs/exponent-sdk 0.0.9 → 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/build/addressLookupTableUtil.js +3 -2
- package/build/addressLookupTableUtil.js.map +1 -1
- package/build/events.d.ts +3 -3
- package/build/events.js +49 -47
- package/build/events.js.map +1 -1
- package/build/flavors.d.ts +3 -3
- package/build/flavors.js +34 -38
- package/build/flavors.js.map +1 -1
- package/build/index.js +7 -17
- package/build/index.js.map +1 -1
- package/build/lpPosition.d.ts +6 -5
- package/build/lpPosition.js +37 -19
- package/build/lpPosition.js.map +1 -1
- package/build/market.d.ts +34 -34
- package/build/market.js +207 -203
- package/build/market.js.map +1 -1
- package/build/syPosition.d.ts +2 -2
- package/build/syPosition.js +21 -17
- package/build/syPosition.js.map +1 -1
- package/build/tokenUtil.d.ts +2 -2
- package/build/tokenUtil.js +7 -6
- package/build/tokenUtil.js.map +1 -1
- package/build/utils/altUtil.d.ts +3 -3
- package/build/utils/altUtil.js +18 -11
- package/build/utils/altUtil.js.map +1 -1
- package/build/utils/binSolver.js +2 -1
- package/build/utils/binSolver.js.map +1 -1
- package/build/utils/binSolver.test.js +6 -5
- package/build/utils/binSolver.test.js.map +1 -1
- package/build/utils/index.js +4 -3
- package/build/utils/index.js.map +1 -1
- package/build/vault.d.ts +12 -11
- package/build/vault.js +69 -68
- package/build/vault.js.map +1 -1
- package/build/ytPosition.d.ts +9 -8
- package/build/ytPosition.js +42 -34
- package/build/ytPosition.js.map +1 -1
- package/package.json +22 -22
- package/src/addressLookupTableUtil.ts +2 -1
- package/src/events.ts +60 -45
- package/src/flavors.ts +33 -39
- package/src/lpPosition.ts +49 -21
- package/src/market.ts +307 -229
- package/src/syPosition.ts +38 -26
- package/src/tokenUtil.ts +7 -5
- package/src/utils/altUtil.ts +17 -12
- package/src/utils/binSolver.test.ts +2 -0
- package/src/utils/index.ts +2 -0
- package/src/vault.ts +108 -91
- package/src/ytPosition.ts +57 -37
package/build/index.js
CHANGED
|
@@ -15,23 +15,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) ||
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
35
25
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
26
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
27
|
};
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkE;AAAzD,gGAAA,MAAM,OAAA;AACf,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AACd,2CAA0D;AAAjD,wGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,mCAAuC;AAA9B,sGAAA,YAAY,OAAA;AAGrB,mDAAkC;AAClC,gDAA6B;AAC7B,qDAAoC;AACpC,2CAA6C;AAApC,4GAAA,cAAc,OAAA"}
|
package/build/lpPosition.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Program, web3 } from "@coral-xyz/anchor";
|
|
2
|
-
import { Market } from "./market";
|
|
3
|
-
import { Environment } from "./environment";
|
|
4
|
-
import { ExponentCore } from "@exponent-labs/exponent-idl";
|
|
5
2
|
import { ExponentFetcher } from "@exponent-labs/exponent-fetcher";
|
|
3
|
+
import { ExponentCore } from "@exponent-labs/exponent-idl";
|
|
4
|
+
import { Environment } from "./environment";
|
|
5
|
+
import { Market } from "./market";
|
|
6
6
|
export interface EmissionTracker {
|
|
7
7
|
lastSeenIndex: number;
|
|
8
8
|
staged: bigint;
|
|
@@ -22,8 +22,9 @@ export declare class LpPosition {
|
|
|
22
22
|
state: LpPositionState;
|
|
23
23
|
coreProgram: Program<ExponentCore>;
|
|
24
24
|
constructor(env: Environment, connection: web3.Connection, selfAddress: web3.PublicKey, state: LpPositionState);
|
|
25
|
-
static load(env: Environment, connection: web3.Connection, address: web3.PublicKey): Promise<LpPosition>;
|
|
26
|
-
|
|
25
|
+
static load(env: Environment, connection: web3.Connection, address: web3.PublicKey, market?: Market): Promise<LpPosition>;
|
|
26
|
+
static loadAllByOwner(env: Environment, connection: web3.Connection, owner: web3.PublicKey, markets: (Market | web3.PublicKey)[]): Promise<LpPosition[]>;
|
|
27
|
+
reload(connection?: web3.Connection): Promise<LpPosition>;
|
|
27
28
|
get lpBalance(): bigint;
|
|
28
29
|
get owner(): web3.PublicKey;
|
|
29
30
|
get marketSdk(): Market;
|
package/build/lpPosition.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LpPosition = void 0;
|
|
4
4
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
-
const market_1 = require("./market");
|
|
6
|
-
const exponent_idl_1 = require("@exponent-labs/exponent-idl");
|
|
7
5
|
const exponent_fetcher_1 = require("@exponent-labs/exponent-fetcher");
|
|
6
|
+
const exponent_idl_1 = require("@exponent-labs/exponent-idl");
|
|
7
|
+
const exponent_pda_1 = require("@exponent-labs/exponent-pda");
|
|
8
8
|
const precise_number_1 = require("@exponent-labs/precise-number");
|
|
9
|
+
const market_1 = require("./market");
|
|
9
10
|
class LpPosition {
|
|
10
11
|
env;
|
|
11
12
|
connection;
|
|
@@ -20,24 +21,41 @@ class LpPosition {
|
|
|
20
21
|
const mockWallet = new market_1.MyWallet(anchor_1.web3.Keypair.generate());
|
|
21
22
|
this.coreProgram = new anchor_1.Program(exponent_idl_1.IDL, new anchor_1.AnchorProvider(connection, mockWallet));
|
|
22
23
|
}
|
|
23
|
-
static async load(env, connection, address) {
|
|
24
|
+
static async load(env, connection, address, market) {
|
|
24
25
|
const fetcher = new exponent_fetcher_1.ExponentFetcher({ connection });
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
owner:
|
|
29
|
-
balanceLp:
|
|
30
|
-
market,
|
|
31
|
-
emissionTrackers:
|
|
32
|
-
farms:
|
|
26
|
+
const fetchedLpPosition = await fetcher.fetchLpPosition(address);
|
|
27
|
+
const loadedMarket = market ?? (await market_1.Market.load(env, connection, fetchedLpPosition.market));
|
|
28
|
+
const lpPositionState = {
|
|
29
|
+
owner: fetchedLpPosition.owner,
|
|
30
|
+
balanceLp: fetchedLpPosition.lpBalance,
|
|
31
|
+
market: loadedMarket,
|
|
32
|
+
emissionTrackers: fetchedLpPosition.emissions,
|
|
33
|
+
farms: fetchedLpPosition.farms,
|
|
33
34
|
fetcher: fetcher,
|
|
34
35
|
};
|
|
35
|
-
return new LpPosition(env, connection, address,
|
|
36
|
+
return new LpPosition(env, connection, address, lpPositionState);
|
|
37
|
+
}
|
|
38
|
+
static async loadAllByOwner(env, connection, owner, markets) {
|
|
39
|
+
const pda = new exponent_pda_1.ExponentPDA(env.coreProgramId);
|
|
40
|
+
const addresses = markets.map((m) => pda.marketLpPosition({
|
|
41
|
+
market: m instanceof anchor_1.web3.PublicKey ? m : m.selfAddress,
|
|
42
|
+
owner,
|
|
43
|
+
}));
|
|
44
|
+
const positionPromises = addresses.map((addr) => {
|
|
45
|
+
try {
|
|
46
|
+
return LpPosition.load(env, connection, addr);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return Promise.resolve(null);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const positions = await Promise.all(positionPromises);
|
|
53
|
+
return positions.filter((p) => p !== null);
|
|
36
54
|
}
|
|
37
|
-
async reload(
|
|
38
|
-
const
|
|
39
|
-
this.state =
|
|
40
|
-
return
|
|
55
|
+
async reload(connection = this.connection) {
|
|
56
|
+
const lpPosition = await LpPosition.load(this.env, connection, this.selfAddress);
|
|
57
|
+
this.state = lpPosition.state;
|
|
58
|
+
return lpPosition;
|
|
41
59
|
}
|
|
42
60
|
get lpBalance() {
|
|
43
61
|
return this.state.balanceLp;
|
|
@@ -71,8 +89,8 @@ class LpPosition {
|
|
|
71
89
|
return null;
|
|
72
90
|
const marketFarm = this.state.market.state.lpFarm.farmEmissions[marketFarmIndex];
|
|
73
91
|
const positionFarm = this.state.farms[marketFarmIndex];
|
|
74
|
-
const
|
|
75
|
-
const deltaTimeFarm =
|
|
92
|
+
const timeNow = new Date().getTime() / 1000;
|
|
93
|
+
const deltaTimeFarm = timeNow - this.marketSdk.state.lpFarm.lastSeenTimestamp;
|
|
76
94
|
const lpStakedTotal = this.marketSdk.state.lpEscrowAmount;
|
|
77
95
|
const tokensEmitted = Number(marketFarm.tokenRate) * deltaTimeFarm;
|
|
78
96
|
const increaseAmount = Number(tokensEmitted) / Number(lpStakedTotal);
|
|
@@ -83,7 +101,7 @@ class LpPosition {
|
|
|
83
101
|
}
|
|
84
102
|
async getClaimableMarketEmissions() {
|
|
85
103
|
const syPosition = this.marketSdk.state.syPosition;
|
|
86
|
-
return this.state.market.emissions.map((
|
|
104
|
+
return this.state.market.emissions.map((_, index) => {
|
|
87
105
|
const marketEmission = this.state.market.marketEmissions.trackers[index];
|
|
88
106
|
const positionEmission = this.state.emissionTrackers[index];
|
|
89
107
|
if (!positionEmission)
|
package/build/lpPosition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lpPosition.js","sourceRoot":"","sources":["../src/lpPosition.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;
|
|
1
|
+
{"version":3,"file":"lpPosition.js","sourceRoot":"","sources":["../src/lpPosition.ts"],"names":[],"mappings":"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"}
|
package/build/market.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="bn.js" />
|
|
2
|
+
import { BN, Program, Wallet, web3 } from "@coral-xyz/anchor";
|
|
2
3
|
import { LiquidityNetBalanceLimits, LpFarm } from "@exponent-labs/exponent-fetcher";
|
|
3
|
-
import { Environment } from "./environment";
|
|
4
4
|
import { ExponentCore } from "@exponent-labs/exponent-idl";
|
|
5
|
-
import { BN } from "@coral-xyz/anchor";
|
|
6
5
|
import { ExponentPDA } from "@exponent-labs/exponent-pda";
|
|
7
|
-
import {
|
|
6
|
+
import { AnchorizedPNum, CpiAccountsRaw, CpiAccountsRawJson, Flavor, SyPosition } from "@exponent-labs/exponent-types";
|
|
8
7
|
import { LiquidityAdd, MarketCalculator } from "@exponent-labs/market-math";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { CpiAccountsRawJson } from "@exponent-labs/exponent-types";
|
|
8
|
+
import { Environment } from "./environment";
|
|
9
|
+
import { Vault } from "./vault";
|
|
12
10
|
export { LiquidityAdd };
|
|
13
11
|
interface Emission {
|
|
14
12
|
/** Token account that holds emission tokens */
|
|
@@ -99,7 +97,7 @@ export declare class Market {
|
|
|
99
97
|
xponPda: ExponentPDA;
|
|
100
98
|
constructor(state: MarketArgs, selfAddress: web3.PublicKey, env: Environment, connection: web3.Connection);
|
|
101
99
|
static load(env: Environment, connection: web3.Connection, address: web3.PublicKey, vault?: Vault, options?: MarketLoadOptions): Promise<Market>;
|
|
102
|
-
reload(
|
|
100
|
+
reload(connection?: web3.Connection): Promise<Market>;
|
|
103
101
|
/** Convert to a JSON representation */
|
|
104
102
|
toJson(): MarketJson;
|
|
105
103
|
get vault(): Vault;
|
|
@@ -142,9 +140,11 @@ export declare class Market {
|
|
|
142
140
|
get secondsRemaining(): number;
|
|
143
141
|
get absolutePtYield(): number;
|
|
144
142
|
/** Annualize a rate given the number of seconds remaining until maturity */
|
|
145
|
-
static annualize(
|
|
143
|
+
static annualize(rate: number, secondsRemaining: number): number;
|
|
144
|
+
static annualizeApy(rate: number, secondsRemaining: number): number;
|
|
146
145
|
/** Annualized PT fixed rate */
|
|
147
146
|
get ptApr(): number;
|
|
147
|
+
get ptApy(): number;
|
|
148
148
|
/** The fee rate taken off of trade fees (typically around 20%) expressed as a BPS number */
|
|
149
149
|
get feeTreasuryBps(): number;
|
|
150
150
|
/** The fee rate on assets when trading PT
|
|
@@ -154,7 +154,7 @@ export declare class Market {
|
|
|
154
154
|
get feeRatePtTrade(): number;
|
|
155
155
|
/** The fee rate taken off of trade fees (typically around 20%) expressed as a rational number */
|
|
156
156
|
get feeTreasuryRate(): number;
|
|
157
|
-
/** Calculate
|
|
157
|
+
/** Calculate amount of LP tokens to expect for tokens in */
|
|
158
158
|
lpOutForTokensIn(syInIntent: bigint, ptInIntent: bigint): LiquidityAdd;
|
|
159
159
|
marketCalculator(): MarketCalculator;
|
|
160
160
|
/** Deposit a pair of tokens as liquidity to the market
|
|
@@ -165,7 +165,7 @@ export declare class Market {
|
|
|
165
165
|
*
|
|
166
166
|
* The token accounts themselves are optional, and will be derived from the depositor's wallet if not provided
|
|
167
167
|
*/
|
|
168
|
-
ixDepositLiquidity({ ptInIntent, syInIntent, minLpOut, depositor, ptSrc, sySrc, lpDst, }: {
|
|
168
|
+
ixDepositLiquidity({ ptInIntent, syInIntent, minLpOut, depositor, ptSrc: ptSrcParam, sySrc: sySrcParam, lpDst: lpDstParam, }: {
|
|
169
169
|
/** Intended (maximum) amount of PT in */
|
|
170
170
|
ptInIntent: bigint;
|
|
171
171
|
/** Intended (maximum) amount of SY in */
|
|
@@ -181,7 +181,7 @@ export declare class Market {
|
|
|
181
181
|
signer: web3.PublicKey;
|
|
182
182
|
adminAction: MarketAdminAction;
|
|
183
183
|
}): Promise<web3.TransactionInstruction>;
|
|
184
|
-
ixModifyFarm({ newRate, untilTimestamp, signer, farmMint, farmTokenProgram, farmTokenSrc, }: {
|
|
184
|
+
ixModifyFarm({ newRate, untilTimestamp, signer, farmMint, farmTokenProgram, farmTokenSrc: farmTokenSrcParam, }: {
|
|
185
185
|
newRate: bigint;
|
|
186
186
|
untilTimestamp: number;
|
|
187
187
|
signer: web3.PublicKey;
|
|
@@ -198,7 +198,7 @@ export declare class Market {
|
|
|
198
198
|
*
|
|
199
199
|
* The token accounts themselves are optional, and will be derived from the withdrawer's wallet if not provided
|
|
200
200
|
*/
|
|
201
|
-
ixWithdrawLiquidity({ lpIn, withdrawer, minPtOut, minSyOut, ptDst, syDst, lpSrc, }: {
|
|
201
|
+
ixWithdrawLiquidity({ lpIn, withdrawer, minPtOut, minSyOut, ptDst: ptDstParam, syDst: syDstParam, lpSrc: lpSrcParam, }: {
|
|
202
202
|
lpIn: bigint;
|
|
203
203
|
withdrawer: web3.PublicKey;
|
|
204
204
|
minPtOut: bigint;
|
|
@@ -246,7 +246,7 @@ export declare class Market {
|
|
|
246
246
|
ixs: web3.TransactionInstruction[];
|
|
247
247
|
setupIxs: web3.TransactionInstruction[];
|
|
248
248
|
}>;
|
|
249
|
-
ixTradePt({ trader, traderPt, syConstraint, isBuy, tokenPt, tokenSy, }: {
|
|
249
|
+
ixTradePt({ trader, traderPt, syConstraint, isBuy, tokenPt: tokenPtParam, tokenSy: tokenSyParam, }: {
|
|
250
250
|
trader: web3.PublicKey;
|
|
251
251
|
traderPt: bigint;
|
|
252
252
|
syConstraint: bigint;
|
|
@@ -267,7 +267,7 @@ export declare class Market {
|
|
|
267
267
|
*
|
|
268
268
|
* The token accounts themselves are optional, and will be derived from the trader's wallet if not provided
|
|
269
269
|
*/
|
|
270
|
-
ixSellYt({ trader, ytIn, minSyOut, ytSrc, ptSrc, syDst, }: {
|
|
270
|
+
ixSellYt({ trader, ytIn, minSyOut, ytSrc: ytSrcParam, ptSrc: ptSrcParam, syDst: syDstParam, }: {
|
|
271
271
|
trader: web3.PublicKey;
|
|
272
272
|
ytIn: bigint;
|
|
273
273
|
minSyOut: bigint;
|
|
@@ -288,7 +288,7 @@ export declare class Market {
|
|
|
288
288
|
*
|
|
289
289
|
* The token accounts themselves are optional, and will be derived from the trader's wallet if not provided
|
|
290
290
|
*/
|
|
291
|
-
ixBuyYt({ trader, ytOut, maxSyIn, ytTrader, ptTrader, syTrader, }: {
|
|
291
|
+
ixBuyYt({ trader, ytOut, maxSyIn, ytTrader: ytTraderParam, ptTrader: ptTraderParam, syTrader: syTraderParam, }: {
|
|
292
292
|
trader: web3.PublicKey;
|
|
293
293
|
ytOut: bigint;
|
|
294
294
|
maxSyIn: bigint;
|
|
@@ -304,25 +304,25 @@ export declare class Market {
|
|
|
304
304
|
feePayer?: web3.PublicKey;
|
|
305
305
|
}): Promise<web3.TransactionInstruction>;
|
|
306
306
|
/** Deposit LP tokens into the farming module to earn rewards */
|
|
307
|
-
ixDepositLp({ owner, amount, lpSrc }: {
|
|
307
|
+
ixDepositLp({ owner, amount, lpSrc: lpSrcParam, }: {
|
|
308
308
|
owner: web3.PublicKey;
|
|
309
309
|
amount: bigint;
|
|
310
310
|
lpSrc?: web3.PublicKey;
|
|
311
311
|
}): Promise<web3.TransactionInstruction>;
|
|
312
312
|
/** Withdraw LP tokens from the farming module */
|
|
313
|
-
ixWithdrawLp({ owner, amount, lpDst }: {
|
|
313
|
+
ixWithdrawLp({ owner, amount, lpDst: lpDstParam, }: {
|
|
314
314
|
owner: web3.PublicKey;
|
|
315
315
|
amount: bigint;
|
|
316
316
|
lpDst?: web3.PublicKey;
|
|
317
317
|
}): Promise<web3.TransactionInstruction>;
|
|
318
|
-
ixWrapperCollectInterest({ claimer, tokenSyDst }: {
|
|
318
|
+
ixWrapperCollectInterest({ claimer, tokenSyDst: tokenSyDstParam, }: {
|
|
319
319
|
claimer: web3.PublicKey;
|
|
320
320
|
tokenSyDst?: web3.PublicKey;
|
|
321
321
|
}): Promise<{
|
|
322
322
|
ixs: web3.TransactionInstruction[];
|
|
323
323
|
setupIxs: web3.TransactionInstruction[];
|
|
324
324
|
}>;
|
|
325
|
-
ixWrapperBuyPt({ owner, ptOut, maxBaseIn, tokenSyTrader, tokenPtTrader, tokenBaseTrader, }: {
|
|
325
|
+
ixWrapperBuyPt({ owner, ptOut, maxBaseIn, tokenSyTrader: tokenSyTraderParam, tokenPtTrader: tokenPtTraderParam, tokenBaseTrader: tokenBaseTraderParam, }: {
|
|
326
326
|
owner: web3.PublicKey;
|
|
327
327
|
ptOut: bigint;
|
|
328
328
|
maxBaseIn: bigint;
|
|
@@ -333,7 +333,7 @@ export declare class Market {
|
|
|
333
333
|
ixs: web3.TransactionInstruction[];
|
|
334
334
|
setupIxs: web3.TransactionInstruction[];
|
|
335
335
|
}>;
|
|
336
|
-
ixWrapperSellPt({ owner, amount, minBaseOut, tokenSyTrader, tokenPtTrader, tokenBaseTrader, }: {
|
|
336
|
+
ixWrapperSellPt({ owner, amount, minBaseOut, tokenSyTrader: tokenSyTraderParam, tokenPtTrader: tokenPtTraderParam, tokenBaseTrader: tokenBaseTraderParam, }: {
|
|
337
337
|
owner: web3.PublicKey;
|
|
338
338
|
amount: bigint;
|
|
339
339
|
minBaseOut: bigint;
|
|
@@ -344,7 +344,7 @@ export declare class Market {
|
|
|
344
344
|
ixs: web3.TransactionInstruction[];
|
|
345
345
|
setupIxs: web3.TransactionInstruction[];
|
|
346
346
|
}>;
|
|
347
|
-
ixWrapperBuyYt({ owner, ytOut, maxBaseIn, tokenSyTrader, tokenPtTrader, tokenYtTrader, tokenBaseTrader, }: {
|
|
347
|
+
ixWrapperBuyYt({ owner, ytOut, maxBaseIn, tokenSyTrader: tokenSyTraderParam, tokenPtTrader: tokenPtTraderParam, tokenYtTrader: tokenYtTraderParam, tokenBaseTrader: tokenBaseTraderParam, }: {
|
|
348
348
|
owner: web3.PublicKey;
|
|
349
349
|
ytOut: bigint;
|
|
350
350
|
maxBaseIn: bigint;
|
|
@@ -356,7 +356,7 @@ export declare class Market {
|
|
|
356
356
|
ixs: web3.TransactionInstruction[];
|
|
357
357
|
setupIxs: web3.TransactionInstruction[];
|
|
358
358
|
}>;
|
|
359
|
-
ixWrapperSellYt({ owner, amount, minBaseOut, tokenBaseTrader, tokenSyTrader, tokenYtTrader, tokenPtTrader, }: {
|
|
359
|
+
ixWrapperSellYt({ owner, amount, minBaseOut, tokenBaseTrader: tokenBaseTraderParam, tokenSyTrader: tokenSyTraderParam, tokenYtTrader: tokenYtTraderParam, tokenPtTrader: tokenPtTraderParam, }: {
|
|
360
360
|
owner: web3.PublicKey;
|
|
361
361
|
amount: bigint;
|
|
362
362
|
minBaseOut: bigint;
|
|
@@ -377,7 +377,7 @@ export declare class Market {
|
|
|
377
377
|
setupIxs: web3.TransactionInstruction[];
|
|
378
378
|
}>;
|
|
379
379
|
/** Provide liquidity from a base asset - and receive YT and LP tokens in return */
|
|
380
|
-
ixProvideLiquidityNoPriceImpact({ depositor, amountBase, minLpOut, tokenSyDepositor, tokenYtDepositor, tokenPtDepositor, tokenBaseDepositor, tokenLpDepositor, }: {
|
|
380
|
+
ixProvideLiquidityNoPriceImpact({ depositor, amountBase, minLpOut, tokenSyDepositor: tokenSyDepositorParam, tokenYtDepositor: tokenYtDepositorParam, tokenPtDepositor: tokenPtDepositorParam, tokenBaseDepositor: tokenBaseDepositorParam, tokenLpDepositor: tokenLpDepositorParam, }: {
|
|
381
381
|
depositor: web3.PublicKey;
|
|
382
382
|
amountBase: bigint;
|
|
383
383
|
minLpOut: bigint;
|
|
@@ -390,7 +390,7 @@ export declare class Market {
|
|
|
390
390
|
ixs: web3.TransactionInstruction[];
|
|
391
391
|
setupIxs: web3.TransactionInstruction[];
|
|
392
392
|
}>;
|
|
393
|
-
ixProvideLiquidityBase({ depositor, amountBase, minLpOut, externalPtToBuy, externalSyConstraint, tokenSyDepositor, tokenYtDepositor, tokenPtDepositor, tokenBaseDepositor, tokenLpDepositor, }: {
|
|
393
|
+
ixProvideLiquidityBase({ depositor, amountBase, minLpOut, externalPtToBuy, externalSyConstraint, tokenSyDepositor: tokenSyDepositorParam, tokenYtDepositor: tokenYtDepositorParam, tokenPtDepositor: tokenPtDepositorParam, tokenBaseDepositor: tokenBaseDepositorParam, tokenLpDepositor: tokenLpDepositorParam, }: {
|
|
394
394
|
depositor: web3.PublicKey;
|
|
395
395
|
amountBase: bigint;
|
|
396
396
|
minLpOut: bigint;
|
|
@@ -405,7 +405,7 @@ export declare class Market {
|
|
|
405
405
|
ixs: web3.TransactionInstruction[];
|
|
406
406
|
setupIxs: web3.TransactionInstruction[];
|
|
407
407
|
}>;
|
|
408
|
-
ixProvideLiquidityClassic({ depositor, amountBase, amountPt, minLpOut, tokenSyDepositor, tokenYtDepositor, tokenPtDepositor, tokenBaseDepositor, tokenLpDepositor, }: {
|
|
408
|
+
ixProvideLiquidityClassic({ depositor, amountBase, amountPt, minLpOut, tokenSyDepositor: tokenSyDepositorParam, tokenYtDepositor: tokenYtDepositorParam, tokenPtDepositor: tokenPtDepositorParam, tokenBaseDepositor: tokenBaseDepositorParam, tokenLpDepositor: tokenLpDepositorParam, }: {
|
|
409
409
|
depositor: web3.PublicKey;
|
|
410
410
|
amountBase: bigint;
|
|
411
411
|
amountPt: bigint;
|
|
@@ -419,7 +419,7 @@ export declare class Market {
|
|
|
419
419
|
ixs: web3.TransactionInstruction[];
|
|
420
420
|
setupIxs: web3.TransactionInstruction[];
|
|
421
421
|
}>;
|
|
422
|
-
ixWithdrawLiquidityToBase({ owner, amountLp, minBaseOut, tokenSyWithdrawer, tokenYtWithdrawer, tokenPtWithdrawer, tokenBaseWithdrawer, tokenLpWithdrawer, }: {
|
|
422
|
+
ixWithdrawLiquidityToBase({ owner, amountLp, minBaseOut, tokenSyWithdrawer: tokenSyWithdrawerParam, tokenYtWithdrawer: tokenYtWithdrawerParam, tokenPtWithdrawer: tokenPtWithdrawerParam, tokenBaseWithdrawer: tokenBaseWithdrawerParam, tokenLpWithdrawer: tokenLpWithdrawerParam, }: {
|
|
423
423
|
owner: web3.PublicKey;
|
|
424
424
|
amountLp: bigint;
|
|
425
425
|
minBaseOut: bigint;
|
|
@@ -432,10 +432,9 @@ export declare class Market {
|
|
|
432
432
|
ixs: web3.TransactionInstruction[];
|
|
433
433
|
setupIxs: web3.TransactionInstruction[];
|
|
434
434
|
}>;
|
|
435
|
-
ixWithdrawLiquidityClassic({ owner, amountLp,
|
|
435
|
+
ixWithdrawLiquidityClassic({ owner, amountLp, tokenSyWithdrawer: tokenSyWithdrawerParam, tokenYtWithdrawer: tokenYtWithdrawerParam, tokenPtWithdrawer: tokenPtWithdrawerParam, tokenBaseWithdrawer: tokenBaseWithdrawerParam, tokenLpWithdrawer: tokenLpWithdrawerParam, }: {
|
|
436
436
|
owner: web3.PublicKey;
|
|
437
437
|
amountLp: bigint;
|
|
438
|
-
minBaseOut: bigint;
|
|
439
438
|
tokenSyWithdrawer?: web3.PublicKey;
|
|
440
439
|
tokenYtWithdrawer?: web3.PublicKey;
|
|
441
440
|
tokenPtWithdrawer?: web3.PublicKey;
|
|
@@ -445,7 +444,7 @@ export declare class Market {
|
|
|
445
444
|
ixs: web3.TransactionInstruction[];
|
|
446
445
|
setupIxs: web3.TransactionInstruction[];
|
|
447
446
|
}>;
|
|
448
|
-
claimFarmEmissions({ owner, mint, tokenProgram, tokenDst, }: {
|
|
447
|
+
claimFarmEmissions({ owner, mint, tokenProgram, tokenDst: tokenDstParam, }: {
|
|
449
448
|
owner: web3.PublicKey;
|
|
450
449
|
mint: web3.PublicKey;
|
|
451
450
|
tokenProgram: web3.PublicKey;
|
|
@@ -464,7 +463,7 @@ export declare class Market {
|
|
|
464
463
|
extendAddressLookupTableExtensionAccounts: web3.PublicKey[];
|
|
465
464
|
addMarketEmissionIx: web3.TransactionInstruction;
|
|
466
465
|
}>;
|
|
467
|
-
addFarm({ signer, farmMint, farmRewardTokenProgram, emissionsRate, untilTimestamp, farmRewardSrc, feePayer, }: {
|
|
466
|
+
addFarm({ signer, farmMint, farmRewardTokenProgram, emissionsRate, untilTimestamp, farmRewardSrc: farmRewardSrcParam, feePayer: feePayerParam, }: {
|
|
468
467
|
signer: web3.PublicKey;
|
|
469
468
|
farmMint: web3.PublicKey;
|
|
470
469
|
farmRewardTokenProgram: web3.PublicKey;
|
|
@@ -476,11 +475,11 @@ export declare class Market {
|
|
|
476
475
|
ixs: web3.TransactionInstruction[];
|
|
477
476
|
}>;
|
|
478
477
|
/** Calculate available liquidity for PT trades
|
|
479
|
-
* @param
|
|
480
|
-
* @param
|
|
478
|
+
* @param isBuy - true if buying PT with SY, false if selling PT for SY
|
|
479
|
+
* @param sizePt - amount of PT to trade (in PT decimals)
|
|
481
480
|
* @returns amount of PT that can be traded given current liquidity
|
|
482
481
|
*/
|
|
483
|
-
liquidityAvailable(
|
|
482
|
+
liquidityAvailable(isBuy: boolean, sizePt: bigint): bigint;
|
|
484
483
|
}
|
|
485
484
|
export type MarketJson = {
|
|
486
485
|
/** The market's public key */
|
|
@@ -540,6 +539,7 @@ export type MarketJson = {
|
|
|
540
539
|
cpiAccounts: CpiAccountsRawJson;
|
|
541
540
|
/** Annualized yield for PT */
|
|
542
541
|
ptApr: number;
|
|
542
|
+
ptApy: number;
|
|
543
543
|
/** Emission tokens */
|
|
544
544
|
emissions: {
|
|
545
545
|
trackers: {
|