@exponent-labs/exponent-sdk 0.1.3 → 0.1.5
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 +2 -3
- package/build/addressLookupTableUtil.js.map +1 -1
- package/build/events.d.ts +0 -1
- package/build/flavors.d.ts +2 -2
- package/build/flavors.js +18 -19
- package/build/flavors.js.map +1 -1
- package/build/lpPosition.js.map +1 -1
- package/build/market.d.ts +14 -2
- package/build/market.js +25 -0
- package/build/market.js.map +1 -1
- package/build/syPosition.js +24 -4
- package/build/syPosition.js.map +1 -1
- package/build/tokenUtil.js +2 -3
- package/build/tokenUtil.js.map +1 -1
- package/build/utils/altUtil.js +2 -3
- package/build/utils/altUtil.js.map +1 -1
- package/build/utils/binSolver.js +1 -2
- package/build/utils/binSolver.js.map +1 -1
- package/build/utils/index.js +3 -4
- package/build/utils/index.js.map +1 -1
- package/build/vault.d.ts +1 -2
- package/build/vault.js.map +1 -1
- package/build/ytPosition.d.ts +1 -3
- package/build/ytPosition.js +9 -4
- package/build/ytPosition.js.map +1 -1
- package/package.json +23 -23
- package/src/flavors.ts +4 -7
- package/src/lpPosition.ts +1 -1
- package/src/market.ts +34 -2
- package/src/syPosition.ts +14 -0
- package/src/vault.ts +2 -3
- package/src/ytPosition.ts +14 -6
package/build/ytPosition.d.ts
CHANGED
|
@@ -13,9 +13,7 @@ export declare class YtPosition {
|
|
|
13
13
|
vault: Vault;
|
|
14
14
|
coreProgram: Program<ExponentCore>;
|
|
15
15
|
constructor(env: Environment, connection: web3.Connection, selfAddress: web3.PublicKey, state: YtPositionState, vault: Vault);
|
|
16
|
-
/** Loads the YT position by address, and loads Vault, too
|
|
17
|
-
* DEPRECATED - use loadByOwner instead - loading the vault is expensive
|
|
18
|
-
*/
|
|
16
|
+
/** Loads the YT position by address, and loads Vault, too */
|
|
19
17
|
static load(env: Environment, connection: web3.Connection, address: web3.PublicKey, vault?: Vault): Promise<YtPosition>;
|
|
20
18
|
/** Loads the YT position by owner, but require a loaded Vault */
|
|
21
19
|
static loadByOwner(env: Environment, connection: web3.Connection, owner: web3.PublicKey, vault: Vault): Promise<YtPosition>;
|
package/build/ytPosition.js
CHANGED
|
@@ -25,9 +25,7 @@ class YtPosition {
|
|
|
25
25
|
const mockWallet = new market_1.MyWallet(anchor_1.web3.Keypair.generate());
|
|
26
26
|
this.coreProgram = new anchor_1.Program(exponent_idl_1.IDL, new anchor_1.AnchorProvider(connection, mockWallet));
|
|
27
27
|
}
|
|
28
|
-
/** Loads the YT position by address, and loads Vault, too
|
|
29
|
-
* DEPRECATED - use loadByOwner instead - loading the vault is expensive
|
|
30
|
-
*/
|
|
28
|
+
/** Loads the YT position by address, and loads Vault, too */
|
|
31
29
|
static async load(env, connection, address, vault) {
|
|
32
30
|
const fetcher = new exponent_fetcher_1.ExponentFetcher({ connection });
|
|
33
31
|
const ytPositionState = await fetcher.fetchYtPosition(address);
|
|
@@ -89,7 +87,14 @@ class YtPosition {
|
|
|
89
87
|
return this.vault.syEmissions.map((e, index) => {
|
|
90
88
|
// Use initial index if user doesn't have a position yet (lastSeenIndex is 0)
|
|
91
89
|
const lastSeenIndex = this.state.emissions[index]?.lastSeenIndex ?? 0;
|
|
92
|
-
|
|
90
|
+
console.log("lastSeenIndex: ", lastSeenIndex);
|
|
91
|
+
// use finalIndex from the vault's emissions
|
|
92
|
+
const finalIndex = Number(precise_number_1.PreciseNumber.fromRaw(this.vault.state.emissions[index]?.finalIndex?.[0] || e.index[0]).valueString);
|
|
93
|
+
console.log("finalIndex: ", finalIndex);
|
|
94
|
+
console.log("totalSyBalance: ", totalSyBalance);
|
|
95
|
+
console.log("finalIndex - lastSeenIndex: ", finalIndex - Number(lastSeenIndex));
|
|
96
|
+
const earnedEmission = totalSyBalance * (finalIndex - Number(lastSeenIndex));
|
|
97
|
+
console.log("earnedEmission: ", earnedEmission);
|
|
93
98
|
return {
|
|
94
99
|
mint: e.mint,
|
|
95
100
|
amount: Math.floor(earnedEmission) + Number(this.state.emissions[index]?.staged ?? 0),
|
package/build/ytPosition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ytPosition.js","sourceRoot":"","sources":["../src/ytPosition.ts"],"names":[],"mappings":";;;AAAA,8CAAqE;AACrE,iDAAmF;AAEnF,sEAAmH;AACnH,8DAA+D;AAC/D,8DAAyD;AAGzD,kEAA6D;AAG7D,qCAAmC;AAEnC,mCAA+B;AAE/B,MAAa,UAAU;IAGZ;IACA;IACA;IACA;IACA;IANF,WAAW,CAAuB;IACzC,YACS,GAAgB,EAChB,UAA2B,EAC3B,WAA2B,EAC3B,KAAsB,EACtB,KAAY;QAJZ,QAAG,GAAH,GAAG,CAAa;QAChB,eAAU,GAAV,UAAU,CAAiB;QAC3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,UAAK,GAAL,KAAK,CAAiB;QACtB,UAAK,GAAL,KAAK,CAAO;QAEnB,MAAM,UAAU,GAAG,IAAI,iBAAQ,CAAC,aAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAO,
|
|
1
|
+
{"version":3,"file":"ytPosition.js","sourceRoot":"","sources":["../src/ytPosition.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exponent-labs/exponent-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"main": "build/index.js",
|
|
5
5
|
"types": "build/index.d.ts",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -9,29 +9,29 @@
|
|
|
9
9
|
"test": "jest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@coral-xyz/anchor": "0.
|
|
13
|
-
"@exponent-labs/exponent-fetcher": "0.1.
|
|
14
|
-
"@exponent-labs/exponent-idl": "0.1.
|
|
15
|
-
"@exponent-labs/exponent-pda": "0.1.
|
|
16
|
-
"@exponent-labs/generic-sy-idl": "0.1.
|
|
17
|
-
"@exponent-labs/generic-sy-pda": "0.1.
|
|
18
|
-
"@exponent-labs/generic-sy-sdk": "0.1.
|
|
19
|
-
"@exponent-labs/jito-restaking-sy-idl": "0.1.
|
|
20
|
-
"@exponent-labs/jito-restaking-sy-sdk": "0.1.
|
|
21
|
-
"@exponent-labs/kamino-sy-sdk": "0.1.
|
|
22
|
-
"@exponent-labs/marginfi-sy-pda": "0.1.
|
|
23
|
-
"@exponent-labs/marginfi-sy-sdk": "0.1.
|
|
24
|
-
"@exponent-labs/market-math": "0.1.
|
|
25
|
-
"@exponent-labs/perena-sy-idl": "0.1.
|
|
26
|
-
"@exponent-labs/perena-sy-pda": "0.1.
|
|
27
|
-
"@exponent-labs/perena-sy-sdk": "0.1.
|
|
12
|
+
"@coral-xyz/anchor": "0.31.0",
|
|
13
|
+
"@exponent-labs/exponent-fetcher": "0.1.5",
|
|
14
|
+
"@exponent-labs/exponent-idl": "0.1.5",
|
|
15
|
+
"@exponent-labs/exponent-pda": "0.1.5",
|
|
16
|
+
"@exponent-labs/generic-sy-idl": "0.1.5",
|
|
17
|
+
"@exponent-labs/generic-sy-pda": "0.1.5",
|
|
18
|
+
"@exponent-labs/generic-sy-sdk": "0.1.5",
|
|
19
|
+
"@exponent-labs/jito-restaking-sy-idl": "0.1.5",
|
|
20
|
+
"@exponent-labs/jito-restaking-sy-sdk": "0.1.5",
|
|
21
|
+
"@exponent-labs/kamino-sy-sdk": "0.1.5",
|
|
22
|
+
"@exponent-labs/marginfi-sy-pda": "0.1.5",
|
|
23
|
+
"@exponent-labs/marginfi-sy-sdk": "0.1.5",
|
|
24
|
+
"@exponent-labs/market-math": "0.1.5",
|
|
25
|
+
"@exponent-labs/perena-sy-idl": "0.1.5",
|
|
26
|
+
"@exponent-labs/perena-sy-pda": "0.1.5",
|
|
27
|
+
"@exponent-labs/perena-sy-sdk": "0.1.5",
|
|
28
28
|
"@solana/spl-token": "0.4.8",
|
|
29
|
-
"@exponent-labs/precise-number": "0.1.
|
|
30
|
-
"@exponent-labs/exponent-admin-pda": "0.1.
|
|
31
|
-
"@exponent-labs/jito-restaking-sy-pda": "0.1.
|
|
32
|
-
"@exponent-labs/kamino-sy-idl": "0.1.
|
|
33
|
-
"@exponent-labs/exponent-types": "0.1.
|
|
34
|
-
"@exponent-labs/kamino-sy-pda": "0.1.
|
|
29
|
+
"@exponent-labs/precise-number": "0.1.5",
|
|
30
|
+
"@exponent-labs/exponent-admin-pda": "0.1.5",
|
|
31
|
+
"@exponent-labs/jito-restaking-sy-pda": "0.1.5",
|
|
32
|
+
"@exponent-labs/kamino-sy-idl": "0.1.5",
|
|
33
|
+
"@exponent-labs/exponent-types": "0.1.5",
|
|
34
|
+
"@exponent-labs/kamino-sy-pda": "0.1.5",
|
|
35
35
|
"bs58": "5.0.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
package/src/flavors.ts
CHANGED
|
@@ -526,17 +526,14 @@ export function makeFlavorPerenaSync(data: FlavorPerenaState): FlavorPerena {
|
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
|
|
529
|
-
export function makeFlavorGenericSync(
|
|
530
|
-
data: FlavorGenericState,
|
|
531
|
-
syConfig?: { skipFragmetricWrap?: boolean },
|
|
532
|
-
): FlavorGeneric {
|
|
529
|
+
export function makeFlavorGenericSync(data: FlavorGenericState, syConfig?: { skipWrap?: boolean }): FlavorGeneric {
|
|
533
530
|
const sySdk = new GenericSySdk(data.genericSyState, undefined, syConfig)
|
|
534
531
|
return {
|
|
535
532
|
...data,
|
|
536
533
|
flavor: "generic",
|
|
537
534
|
ixMintSy: (args) => sySdk.ixMintSy(args),
|
|
538
535
|
ixRedeemSy: (args) => sySdk.ixRedeemSy(args),
|
|
539
|
-
preIxs: async () => [],
|
|
536
|
+
preIxs: async () => [...sySdk.preInstructions()],
|
|
540
537
|
postIxs: async () => [],
|
|
541
538
|
}
|
|
542
539
|
}
|
|
@@ -563,7 +560,7 @@ export async function makeFlavor(
|
|
|
563
560
|
/** The actual SY program linked to the market */
|
|
564
561
|
syProgram: web3.PublicKey,
|
|
565
562
|
cpiAccounts: CpiAccountsRaw,
|
|
566
|
-
syConfig?: {
|
|
563
|
+
syConfig?: { skipWrap?: boolean },
|
|
567
564
|
): Promise<Flavor> {
|
|
568
565
|
const fd = flavorFinder(env, syProgram)
|
|
569
566
|
if (fd === "marginfi") {
|
|
@@ -743,7 +740,7 @@ async function makeGenericFlavor(
|
|
|
743
740
|
fetcher: ExponentFetcher,
|
|
744
741
|
genericStandardProgramId: web3.PublicKey,
|
|
745
742
|
cpiAccounts: CpiAccountsRaw,
|
|
746
|
-
syConfig?: {
|
|
743
|
+
syConfig?: { skipWrap?: boolean },
|
|
747
744
|
): Promise<FlavorGeneric> {
|
|
748
745
|
const genericSyMeta = cpiAccounts.depositSy[1].pubkey
|
|
749
746
|
|
package/src/lpPosition.ts
CHANGED
|
@@ -31,7 +31,7 @@ export class LpPosition {
|
|
|
31
31
|
public state: LpPositionState,
|
|
32
32
|
) {
|
|
33
33
|
const mockWallet = new MyWallet(web3.Keypair.generate())
|
|
34
|
-
this.coreProgram = new Program(IDL as ExponentCore, new AnchorProvider(connection, mockWallet))
|
|
34
|
+
this.coreProgram = new Program<ExponentCore>(IDL as ExponentCore, new AnchorProvider(connection, mockWallet))
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
static async load(env: Environment, connection: web3.Connection, address: web3.PublicKey, market?: Market) {
|
package/src/market.ts
CHANGED
|
@@ -108,6 +108,7 @@ type MarketArgs = {
|
|
|
108
108
|
lastSeenStaged: number
|
|
109
109
|
}[]
|
|
110
110
|
}
|
|
111
|
+
seedId: number[]
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
//TODO Put it in the shared package because this code is repeated in many packages
|
|
@@ -143,7 +144,7 @@ export class MyWallet implements Wallet {
|
|
|
143
144
|
|
|
144
145
|
interface MarketLoadOptions {
|
|
145
146
|
syConfig?: {
|
|
146
|
-
|
|
147
|
+
skipWrap?: boolean
|
|
147
148
|
}
|
|
148
149
|
}
|
|
149
150
|
|
|
@@ -159,7 +160,7 @@ export class Market {
|
|
|
159
160
|
) {
|
|
160
161
|
this.xponPda = new ExponentPDA(env.coreProgramId)
|
|
161
162
|
const mockWallet = new MyWallet(web3.Keypair.generate())
|
|
162
|
-
this.coreProgram = new Program(IDL as ExponentCore, new AnchorProvider(connection, mockWallet))
|
|
163
|
+
this.coreProgram = new Program<ExponentCore>(IDL as ExponentCore, new AnchorProvider(connection, mockWallet))
|
|
163
164
|
}
|
|
164
165
|
|
|
165
166
|
static async load(
|
|
@@ -384,6 +385,13 @@ export class Market {
|
|
|
384
385
|
return Number(this.lpSupply) === 0 ? 0 : liquidityPoolTvl / Number(this.lpSupply)
|
|
385
386
|
}
|
|
386
387
|
|
|
388
|
+
// Calculate total value of liquidity in asset units
|
|
389
|
+
get liquidityPoolTvl(): number {
|
|
390
|
+
return (
|
|
391
|
+
Number(this.syBalance) * this.flavor.currentSyExchangeRate + Number(this.ptBalance) / this.currentPtPriceInAsset
|
|
392
|
+
)
|
|
393
|
+
}
|
|
394
|
+
|
|
387
395
|
get secondsRemaining(): number {
|
|
388
396
|
const timeNow = Date.now() / 1000
|
|
389
397
|
return Math.max(0, Math.round(this.state.expirationTs - timeNow))
|
|
@@ -1543,6 +1551,8 @@ export class Market {
|
|
|
1543
1551
|
const tokenLpDepositor =
|
|
1544
1552
|
tokenLpDepositorParam || getAssociatedTokenAddressSync(this.mintLp, depositor, true, TOKEN_PROGRAM_ID)
|
|
1545
1553
|
|
|
1554
|
+
console.log("Mint Base: ", this.flavor.mintBase.toBase58())
|
|
1555
|
+
|
|
1546
1556
|
const tokenSyDepositorAtaIx = createAssociatedTokenAccountIdempotentInstruction(
|
|
1547
1557
|
depositor,
|
|
1548
1558
|
tokenSyDepositor,
|
|
@@ -2232,6 +2242,28 @@ export class Market {
|
|
|
2232
2242
|
}
|
|
2233
2243
|
}
|
|
2234
2244
|
}
|
|
2245
|
+
|
|
2246
|
+
/**
|
|
2247
|
+
* Reallocate market data
|
|
2248
|
+
* @param additionalBytes - number of additional bytes to allocate
|
|
2249
|
+
* @returns transaction instruction to realloc market
|
|
2250
|
+
*/
|
|
2251
|
+
async realloc_market({ signer, additionalBytes }: { signer: web3.PublicKey; additionalBytes: number }) {
|
|
2252
|
+
const ix = await this.coreProgram.methods
|
|
2253
|
+
.reallocMarket(new BN(additionalBytes))
|
|
2254
|
+
.accountsStrict({
|
|
2255
|
+
adminState: getExponentAdminStatePda(),
|
|
2256
|
+
market: this.selfAddress,
|
|
2257
|
+
systemProgram: web3.SystemProgram.programId,
|
|
2258
|
+
signer: signer,
|
|
2259
|
+
rent: web3.SYSVAR_RENT_PUBKEY,
|
|
2260
|
+
})
|
|
2261
|
+
.instruction()
|
|
2262
|
+
|
|
2263
|
+
return {
|
|
2264
|
+
ixs: [ix],
|
|
2265
|
+
}
|
|
2266
|
+
}
|
|
2235
2267
|
}
|
|
2236
2268
|
|
|
2237
2269
|
export type MarketJson = {
|
package/src/syPosition.ts
CHANGED
|
@@ -154,6 +154,20 @@ async function makeSyPositionGeneric(
|
|
|
154
154
|
interfaceIndex = 4 // InterfaceType.Meteora
|
|
155
155
|
} else if ("fragmetricSupportedAsset" in interfaceType) {
|
|
156
156
|
interfaceIndex = 5 // InterfaceType.FragmetricSupportedAsset
|
|
157
|
+
} else if ("sanctum" in interfaceType) {
|
|
158
|
+
interfaceIndex = 6 // InterfaceType.Sanctum
|
|
159
|
+
} else if ("jupiterPerps" in interfaceType) {
|
|
160
|
+
interfaceIndex = 7 // InterfaceType.JupiterPerps
|
|
161
|
+
} else if ("adrena" in interfaceType) {
|
|
162
|
+
interfaceIndex = 8 // InterfaceType.Adrena
|
|
163
|
+
} else if ("hyloLpToken" in interfaceType) {
|
|
164
|
+
interfaceIndex = 9 // InterfaceType.HyloLpToken
|
|
165
|
+
} else if ("jupiterLend" in interfaceType) {
|
|
166
|
+
interfaceIndex = 10 // InterfaceType.JupiterLend
|
|
167
|
+
} else if ("kaminoVault" in interfaceType) {
|
|
168
|
+
interfaceIndex = 11 // InterfaceType.KaminoVault
|
|
169
|
+
} else if ("solstice" in interfaceType) {
|
|
170
|
+
interfaceIndex = 12 // InterfaceType.Solstice
|
|
157
171
|
} else {
|
|
158
172
|
throw new Error("Unsupported interface type")
|
|
159
173
|
}
|
package/src/vault.ts
CHANGED
|
@@ -86,7 +86,7 @@ interface SyEmission {
|
|
|
86
86
|
|
|
87
87
|
interface VaultLoadOptions {
|
|
88
88
|
syConfig?: {
|
|
89
|
-
|
|
89
|
+
skipWrap?: boolean
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -99,7 +99,7 @@ export class Vault {
|
|
|
99
99
|
public env: Environment,
|
|
100
100
|
public connection: web3.Connection,
|
|
101
101
|
) {
|
|
102
|
-
this.coreProgram = new Program(
|
|
102
|
+
this.coreProgram = new Program<ExponentCore>(
|
|
103
103
|
IDL as ExponentCore,
|
|
104
104
|
new AnchorProvider(connection, new MyWallet(web3.Keypair.generate())),
|
|
105
105
|
)
|
|
@@ -119,7 +119,6 @@ export class Vault {
|
|
|
119
119
|
const fetcher = new ExponentFetcher({ connection })
|
|
120
120
|
const vault = await fetcher.fetchVault(address)
|
|
121
121
|
|
|
122
|
-
|
|
123
122
|
const alt = await fetchAddressLookupTable(connection, vault.addressLookupTable)
|
|
124
123
|
const cpiAccounts = makeCpiAccountMetaLists(alt, vault.cpiAccounts)
|
|
125
124
|
const flavor = await makeFlavor(fetcher, env, vault.syProgram, cpiAccounts, options.syConfig)
|
package/src/ytPosition.ts
CHANGED
|
@@ -23,12 +23,10 @@ export class YtPosition {
|
|
|
23
23
|
public vault: Vault,
|
|
24
24
|
) {
|
|
25
25
|
const mockWallet = new MyWallet(web3.Keypair.generate())
|
|
26
|
-
this.coreProgram = new Program(IDL as ExponentCore, new AnchorProvider(connection, mockWallet))
|
|
26
|
+
this.coreProgram = new Program<ExponentCore>(IDL as ExponentCore, new AnchorProvider(connection, mockWallet))
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
/** Loads the YT position by address, and loads Vault, too
|
|
30
|
-
* DEPRECATED - use loadByOwner instead - loading the vault is expensive
|
|
31
|
-
*/
|
|
29
|
+
/** Loads the YT position by address, and loads Vault, too */
|
|
32
30
|
static async load(env: Environment, connection: web3.Connection, address: web3.PublicKey, vault?: Vault) {
|
|
33
31
|
const fetcher = new ExponentFetcher({ connection })
|
|
34
32
|
const ytPositionState = await fetcher.fetchYtPosition(address)
|
|
@@ -114,9 +112,19 @@ export class YtPosition {
|
|
|
114
112
|
return this.vault.syEmissions.map((e, index) => {
|
|
115
113
|
// Use initial index if user doesn't have a position yet (lastSeenIndex is 0)
|
|
116
114
|
const lastSeenIndex = this.state.emissions[index]?.lastSeenIndex ?? 0
|
|
115
|
+
console.log("lastSeenIndex: ", lastSeenIndex)
|
|
116
|
+
|
|
117
|
+
// use finalIndex from the vault's emissions
|
|
118
|
+
const finalIndex = Number(
|
|
119
|
+
PreciseNumber.fromRaw(this.vault.state.emissions[index]?.finalIndex?.[0] || e.index[0]).valueString,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
console.log("finalIndex: ", finalIndex)
|
|
123
|
+
console.log("totalSyBalance: ", totalSyBalance)
|
|
124
|
+
console.log("finalIndex - lastSeenIndex: ", finalIndex - Number(lastSeenIndex))
|
|
117
125
|
|
|
118
|
-
const earnedEmission =
|
|
119
|
-
|
|
126
|
+
const earnedEmission = totalSyBalance * (finalIndex - Number(lastSeenIndex))
|
|
127
|
+
console.log("earnedEmission: ", earnedEmission)
|
|
120
128
|
|
|
121
129
|
return {
|
|
122
130
|
mint: e.mint,
|