flash-sdk 2.11.0 → 2.11.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -2420,6 +2420,10 @@ export declare class PerpetualsClient {
2420
2420
  instructions: TransactionInstruction[];
2421
2421
  additionalSigners: Signer[];
2422
2422
  }>;
2423
+ addLiquidityAndStake: (inputSymbol: string, amountIn: BN, minLpAmountOut: BN, poolConfig: PoolConfig, skipBalanceChecks?: boolean) => Promise<{
2424
+ instructions: TransactionInstruction[];
2425
+ additionalSigners: Signer[];
2426
+ }>;
2423
2427
  removeLiquidity: (recieveTokenSymbol: string, liquidityAmountIn: BN, minTokenAmountOut: BN, poolConfig: PoolConfig, closeLpATA?: boolean, createUserATA?: boolean, closeUsersWSOLATA?: boolean) => Promise<{
2424
2428
  instructions: TransactionInstruction[];
2425
2429
  additionalSigners: Signer[];
@@ -3140,6 +3140,133 @@ var PerpetualsClient = (function () {
3140
3140
  });
3141
3141
  });
3142
3142
  };
3143
+ this.addLiquidityAndStake = function (inputSymbol, amountIn, minLpAmountOut, poolConfig, skipBalanceChecks) {
3144
+ if (skipBalanceChecks === void 0) { skipBalanceChecks = false; }
3145
+ return __awaiter(_this, void 0, void 0, function () {
3146
+ var publicKey, wrappedSolAccount, preInstructions, instructions, postInstructions, additionalSigners, userInputTokenAccount, lpTokenMint, inputCustodyConfig, lpTokenAccount, flpStakeAccount, poolStakedFlpVault, accCreationLamports, lamports, unWrappedSolBalance, _a, tokenAccountBalance, _b, custodyAccountMetas, custodyOracleAccountMetas, markets, _i, _c, custody, _d, _e, market, instruction;
3147
+ return __generator(this, function (_f) {
3148
+ switch (_f.label) {
3149
+ case 0:
3150
+ publicKey = this.provider.wallet.publicKey;
3151
+ preInstructions = [];
3152
+ instructions = [];
3153
+ postInstructions = [];
3154
+ additionalSigners = [];
3155
+ lpTokenMint = poolConfig.lpTokenMint;
3156
+ inputCustodyConfig = poolConfig.custodies.find(function (i) { return i.mintKey.equals(poolConfig.getTokenFromSymbol(inputSymbol).mintKey); });
3157
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(lpTokenMint, publicKey)];
3158
+ case 1:
3159
+ lpTokenAccount = _f.sent();
3160
+ flpStakeAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("stake"), publicKey.toBuffer(), poolConfig.poolAddress.toBuffer()], this.programId)[0];
3161
+ poolStakedFlpVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("staked_lp_token_account"), poolConfig.poolAddress.toBuffer(), lpTokenMint.toBuffer()], this.programId)[0];
3162
+ if (!(inputSymbol == 'SOL')) return [3, 4];
3163
+ console.log("inputSymbol === SOL", inputSymbol);
3164
+ wrappedSolAccount = new web3_js_1.Keypair();
3165
+ return [4, (0, spl_token_1.getMinimumBalanceForRentExemptAccount)(this.provider.connection)];
3166
+ case 2:
3167
+ accCreationLamports = (_f.sent());
3168
+ console.log("accCreationLamports:", accCreationLamports);
3169
+ lamports = amountIn.add(new anchor_1.BN(accCreationLamports));
3170
+ console.log("lamports:", lamports.toNumber());
3171
+ _a = anchor_1.BN.bind;
3172
+ return [4, this.provider.connection.getBalance(publicKey)];
3173
+ case 3:
3174
+ unWrappedSolBalance = new (_a.apply(anchor_1.BN, [void 0, _f.sent()]))();
3175
+ if (unWrappedSolBalance.lt(lamports)) {
3176
+ throw "Insufficient SOL Funds";
3177
+ }
3178
+ preInstructions = [
3179
+ web3_js_1.SystemProgram.createAccount({
3180
+ fromPubkey: publicKey,
3181
+ newAccountPubkey: wrappedSolAccount.publicKey,
3182
+ lamports: lamports.toNumber(),
3183
+ space: 165,
3184
+ programId: spl_token_1.TOKEN_PROGRAM_ID,
3185
+ }),
3186
+ (0, spl_token_1.createInitializeAccount3Instruction)(wrappedSolAccount.publicKey, spl_token_1.NATIVE_MINT, publicKey),
3187
+ ];
3188
+ postInstructions = [
3189
+ (0, spl_token_1.createCloseAccountInstruction)(wrappedSolAccount.publicKey, publicKey, publicKey),
3190
+ ];
3191
+ additionalSigners.push(wrappedSolAccount);
3192
+ return [3, 7];
3193
+ case 4:
3194
+ userInputTokenAccount = (0, spl_token_1.getAssociatedTokenAddressSync)(inputCustodyConfig.mintKey, publicKey, true);
3195
+ return [4, (0, utils_1.checkIfAccountExists)(userInputTokenAccount, this.provider.connection)];
3196
+ case 5:
3197
+ if (!(_f.sent())) {
3198
+ throw "Insufficient Funds , token Account doesn't exist";
3199
+ }
3200
+ if (!!skipBalanceChecks) return [3, 7];
3201
+ _b = anchor_1.BN.bind;
3202
+ return [4, this.provider.connection.getTokenAccountBalance(userInputTokenAccount)];
3203
+ case 6:
3204
+ tokenAccountBalance = new (_b.apply(anchor_1.BN, [void 0, (_f.sent()).value.amount]))();
3205
+ if (tokenAccountBalance.lt(amountIn)) {
3206
+ throw "Insufficient Funds need more ".concat(amountIn.sub(tokenAccountBalance), " tokens");
3207
+ }
3208
+ _f.label = 7;
3209
+ case 7:
3210
+ custodyAccountMetas = [];
3211
+ custodyOracleAccountMetas = [];
3212
+ markets = [];
3213
+ for (_i = 0, _c = poolConfig.custodies; _i < _c.length; _i++) {
3214
+ custody = _c[_i];
3215
+ custodyAccountMetas.push({
3216
+ pubkey: custody.custodyAccount,
3217
+ isSigner: false,
3218
+ isWritable: false,
3219
+ });
3220
+ custodyOracleAccountMetas.push({
3221
+ pubkey: this.useExtOracleAccount ? custody.extOracleAccount : custody.intOracleAccount,
3222
+ isSigner: false,
3223
+ isWritable: false,
3224
+ });
3225
+ }
3226
+ for (_d = 0, _e = poolConfig.markets; _d < _e.length; _d++) {
3227
+ market = _e[_d];
3228
+ markets.push({
3229
+ pubkey: market.marketAccount,
3230
+ isSigner: false,
3231
+ isWritable: false,
3232
+ });
3233
+ }
3234
+ return [4, this.programPerpComposability.methods.addLiquidityAndStake({
3235
+ amountIn: amountIn,
3236
+ minLpAmountOut: minLpAmountOut,
3237
+ }).accounts({
3238
+ perpProgram: this.programId,
3239
+ owner: publicKey,
3240
+ feePayer: publicKey,
3241
+ fundingAccount: inputSymbol == 'SOL' ? wrappedSolAccount.publicKey : userInputTokenAccount,
3242
+ lpTokenAccount: lpTokenAccount,
3243
+ transferAuthority: poolConfig.transferAuthority,
3244
+ perpetuals: poolConfig.perpetuals,
3245
+ pool: poolConfig.poolAddress,
3246
+ custody: inputCustodyConfig.custodyAccount,
3247
+ custodyOracleAccount: this.useExtOracleAccount ? inputCustodyConfig.extOracleAccount : inputCustodyConfig.intOracleAccount,
3248
+ custodyTokenAccount: inputCustodyConfig.tokenAccount,
3249
+ lpTokenMint: lpTokenMint,
3250
+ flpStakeAccount: flpStakeAccount,
3251
+ poolStakedFlpVault: poolStakedFlpVault,
3252
+ systemProgram: web3_js_1.SystemProgram.programId,
3253
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
3254
+ eventAuthority: this.eventAuthority.publicKey,
3255
+ ixSysvar: web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY
3256
+ })
3257
+ .remainingAccounts(__spreadArray(__spreadArray(__spreadArray([], custodyAccountMetas, true), custodyOracleAccountMetas, true), markets, true))
3258
+ .instruction()];
3259
+ case 8:
3260
+ instruction = _f.sent();
3261
+ instructions.push(instruction);
3262
+ return [2, {
3263
+ instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
3264
+ additionalSigners: additionalSigners
3265
+ }];
3266
+ }
3267
+ });
3268
+ });
3269
+ };
3143
3270
  this.removeLiquidity = function (recieveTokenSymbol, liquidityAmountIn, minTokenAmountOut, poolConfig, closeLpATA, createUserATA, closeUsersWSOLATA) {
3144
3271
  if (closeLpATA === void 0) { closeLpATA = false; }
3145
3272
  if (createUserATA === void 0) { createUserATA = true; }
@@ -3536,7 +3663,7 @@ var PerpetualsClient = (function () {
3536
3663
  _a.trys.push([1, 3, , 4]);
3537
3664
  rewardCustodyConfig = poolConfig.custodies.find(function (i) { return i.mintKey.equals(poolConfig.getTokenFromSymbol(rewardSymbol).mintKey); });
3538
3665
  compoundingTokenMint = this.getPoolCompoundingTokenKey(poolConfig.poolName);
3539
- compoundingVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("compounding_lp_token_account"), poolConfig.poolAddress.toBuffer(), compoundingTokenMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
3666
+ compoundingVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("compounding_lp_token_account"), poolConfig.poolAddress.toBuffer(), poolConfig.lpTokenMint.toBuffer()], this.programId)[0];
3540
3667
  metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), compoundingTokenMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
3541
3668
  return [4, this.program.methods
3542
3669
  .initCompounding({
@@ -54,6 +54,7 @@ export declare class PoolConfig {
54
54
  flpTokenAccount: PublicKey;
55
55
  lpDecimals: number;
56
56
  lpTokenSymbol: string;
57
+ stakedLpTokenSymbol: string;
57
58
  perpetuals: PublicKey;
58
59
  transferAuthority: PublicKey;
59
60
  multisig: PublicKey;
@@ -70,7 +71,7 @@ export declare class PoolConfig {
70
71
  tokens: Token[];
71
72
  custodies: CustodyConfig[];
72
73
  markets: MarketConfig[];
73
- constructor(programId: PublicKey, perpComposibilityProgramId: PublicKey, fbNftRewardProgramId: PublicKey, cluster: Cluster, poolName: string, poolAddress: PublicKey, lpTokenMint: PublicKey, sFlpTokenMint: PublicKey, flpTokenAccount: PublicKey, lpDecimals: number, lpTokenSymbol: string, perpetuals: PublicKey, transferAuthority: PublicKey, multisig: PublicKey, addressLookupTableAddresses: PublicKey[], backupOracle: PublicKey, nftCollectionAddress: PublicKey, rewardDistributionProgram: {
74
+ constructor(programId: PublicKey, perpComposibilityProgramId: PublicKey, fbNftRewardProgramId: PublicKey, cluster: Cluster, poolName: string, poolAddress: PublicKey, lpTokenMint: PublicKey, sFlpTokenMint: PublicKey, flpTokenAccount: PublicKey, lpDecimals: number, lpTokenSymbol: string, stakedLpTokenSymbol: string, perpetuals: PublicKey, transferAuthority: PublicKey, multisig: PublicKey, addressLookupTableAddresses: PublicKey[], backupOracle: PublicKey, nftCollectionAddress: PublicKey, rewardDistributionProgram: {
74
75
  programId: PublicKey;
75
76
  transferAuthority: PublicKey;
76
77
  rewardVault: PublicKey;
@@ -19,7 +19,7 @@ var web3_js_1 = require("@solana/web3.js");
19
19
  var PoolConfig_json_1 = __importDefault(require("./PoolConfig.json"));
20
20
  var types_1 = require("./types");
21
21
  var PoolConfig = (function () {
22
- function PoolConfig(programId, perpComposibilityProgramId, fbNftRewardProgramId, cluster, poolName, poolAddress, lpTokenMint, sFlpTokenMint, flpTokenAccount, lpDecimals, lpTokenSymbol, perpetuals, transferAuthority, multisig, addressLookupTableAddresses, backupOracle, nftCollectionAddress, rewardDistributionProgram, tokens, custodies, markets) {
22
+ function PoolConfig(programId, perpComposibilityProgramId, fbNftRewardProgramId, cluster, poolName, poolAddress, lpTokenMint, sFlpTokenMint, flpTokenAccount, lpDecimals, lpTokenSymbol, stakedLpTokenSymbol, perpetuals, transferAuthority, multisig, addressLookupTableAddresses, backupOracle, nftCollectionAddress, rewardDistributionProgram, tokens, custodies, markets) {
23
23
  var _this = this;
24
24
  this.programId = programId;
25
25
  this.perpComposibilityProgramId = perpComposibilityProgramId;
@@ -32,6 +32,7 @@ var PoolConfig = (function () {
32
32
  this.flpTokenAccount = flpTokenAccount;
33
33
  this.lpDecimals = lpDecimals;
34
34
  this.lpTokenSymbol = lpTokenSymbol;
35
+ this.stakedLpTokenSymbol = stakedLpTokenSymbol;
35
36
  this.perpetuals = perpetuals;
36
37
  this.transferAuthority = transferAuthority;
37
38
  this.multisig = multisig;
@@ -164,7 +165,7 @@ var PoolConfig = (function () {
164
165
  catch (error) {
165
166
  console.log("ERROR: buildPoolconfigFromJson unable to load markets ");
166
167
  }
167
- return new PoolConfig(new web3_js_1.PublicKey(poolConfig.programId), new web3_js_1.PublicKey(poolConfig.perpComposibilityProgramId), new web3_js_1.PublicKey(poolConfig.fbNftRewardProgramId), poolConfig.cluster, poolConfig.poolName, new web3_js_1.PublicKey(poolConfig.poolAddress), new web3_js_1.PublicKey(poolConfig.lpTokenMint), new web3_js_1.PublicKey(poolConfig.sFlpTokenMint), new web3_js_1.PublicKey(poolConfig.flpTokenAccount), poolConfig.lpDecimals, poolConfig.lpTokenSymbol, new web3_js_1.PublicKey(poolConfig.perpetuals), new web3_js_1.PublicKey(poolConfig.transferAuthority), new web3_js_1.PublicKey(poolConfig.multisig), addressLookupTableAddresses, new web3_js_1.PublicKey(poolConfig.backupOracle), new web3_js_1.PublicKey(poolConfig.nftCollectionAddress), {
168
+ return new PoolConfig(new web3_js_1.PublicKey(poolConfig.programId), new web3_js_1.PublicKey(poolConfig.perpComposibilityProgramId), new web3_js_1.PublicKey(poolConfig.fbNftRewardProgramId), poolConfig.cluster, poolConfig.poolName, new web3_js_1.PublicKey(poolConfig.poolAddress), new web3_js_1.PublicKey(poolConfig.lpTokenMint), new web3_js_1.PublicKey(poolConfig.sFlpTokenMint), new web3_js_1.PublicKey(poolConfig.flpTokenAccount), poolConfig.lpDecimals, poolConfig.lpTokenSymbol, poolConfig.stakedLpTokenSymbol, new web3_js_1.PublicKey(poolConfig.perpetuals), new web3_js_1.PublicKey(poolConfig.transferAuthority), new web3_js_1.PublicKey(poolConfig.multisig), addressLookupTableAddresses, new web3_js_1.PublicKey(poolConfig.backupOracle), new web3_js_1.PublicKey(poolConfig.nftCollectionAddress), {
168
169
  programId: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.programId),
169
170
  rewardMint: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.rewardMint),
170
171
  rewardTokenAccount: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.rewardTokenAccount),
@@ -19,6 +19,7 @@
19
19
  "metadataAccount": "H9kfgaiHv8LnQUBWVoM8x69bidG2d16uWPDbMS3JCP5c",
20
20
  "lpDecimals": 6,
21
21
  "lpTokenSymbol": "FLP.1",
22
+ "stakedLpTokenSymbol": "sFLP.1",
22
23
  "perpetuals": "7DWCtB5Z8rPiyBMKUwqyC95R9tJpbhoQhLM9LbK3Z5QZ",
23
24
  "transferAuthority": "81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG",
24
25
  "multisig": "3FqKnAQrvr6G6AqCAWKdqg9fVe6ceAk3A5Y1ibeQqV2V",
@@ -251,6 +252,7 @@
251
252
  "metadataAccount": "HD5cfUWyMw8J1CaRENKw8zruY9DMJDWni5iejg4onY7G",
252
253
  "lpDecimals": 6,
253
254
  "lpTokenSymbol": "FLP.2",
255
+ "stakedLpTokenSymbol": "sFLP.2",
254
256
  "perpetuals": "7DWCtB5Z8rPiyBMKUwqyC95R9tJpbhoQhLM9LbK3Z5QZ",
255
257
  "transferAuthority": "81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG",
256
258
  "multisig": "3FqKnAQrvr6G6AqCAWKdqg9fVe6ceAk3A5Y1ibeQqV2V",
@@ -578,6 +580,7 @@
578
580
  "metadataAccount": "G86ybpQVnnQUBPPPHNT9jERuSPJ9HFEo5PDcSaMQhRMX",
579
581
  "lpDecimals": 6,
580
582
  "lpTokenSymbol": "FLP.3",
583
+ "stakedLpTokenSymbol": "sFLP.3",
581
584
  "perpetuals": "7DWCtB5Z8rPiyBMKUwqyC95R9tJpbhoQhLM9LbK3Z5QZ",
582
585
  "transferAuthority": "81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG",
583
586
  "multisig": "3FqKnAQrvr6G6AqCAWKdqg9fVe6ceAk3A5Y1ibeQqV2V",
@@ -958,6 +961,7 @@
958
961
  "metadataAccount": "8HPm3sNXqFxNkEDYBMwX1BnXxxfn4XY6Jt5b8ikv6m7b",
959
962
  "lpDecimals": 6,
960
963
  "lpTokenSymbol": "FLP.4",
964
+ "stakedLpTokenSymbol": "sFLP.4",
961
965
  "perpetuals": "7DWCtB5Z8rPiyBMKUwqyC95R9tJpbhoQhLM9LbK3Z5QZ",
962
966
  "transferAuthority": "81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG",
963
967
  "multisig": "3FqKnAQrvr6G6AqCAWKdqg9fVe6ceAk3A5Y1ibeQqV2V",
@@ -1073,6 +1077,7 @@
1073
1077
  "metadataAccount": "BR4ZZ8wkomYSbiap9jDfTPCBT348eciPWBnLHUXKu5rL",
1074
1078
  "lpDecimals": 6,
1075
1079
  "lpTokenSymbol": "FLP.5",
1080
+ "stakedLpTokenSymbol": "sFLP.5",
1076
1081
  "perpetuals": "7DWCtB5Z8rPiyBMKUwqyC95R9tJpbhoQhLM9LbK3Z5QZ",
1077
1082
  "transferAuthority": "81xGAvJ27ZeRThU2JEfKAUeT4Fx6qCCd8WHZpujZbiiG",
1078
1083
  "multisig": "3FqKnAQrvr6G6AqCAWKdqg9fVe6ceAk3A5Y1ibeQqV2V",
@@ -1183,11 +1188,12 @@
1183
1188
  "poolName": "devnet.1",
1184
1189
  "poolAddress": "7jA4ZSGwaBxXk5EmPKDCSc5RtZNHxyoxy22iQt3D2mH9",
1185
1190
  "lpTokenMint": "H4h7nsZaz53KZHMdSXc5byBjcbymEFYX6an8UVbh51yU",
1186
- "sFlpTokenMint": "9Fzv4s5t2bNwwJoeeywMwypop3JegsuDb1eDbMnPr4TX",
1191
+ "sFlpTokenMint": "AJPPBo7PqA1uLoVLVRX4UPdzVsb4S2Qvw8V1XiyCTiLA",
1187
1192
  "flpTokenAccount": "5saGiRTc9iszokguCfPs7vtgmhsCpqYLfbRgemvsxM4T",
1188
1193
  "metadataAccount": "7NvA4CEqr9Tei1MDDKrbYFKV5D39fkPPEfRv5Z5ZXZEb",
1189
1194
  "lpDecimals": 6,
1190
1195
  "lpTokenSymbol": "FLP.1",
1196
+ "stakedLpTokenSymbol": "sFLP.1",
1191
1197
  "perpetuals": "445GcRLAJ64DcxSRbvQTkbwXgWUyubAxzQUQ2wL73KLS",
1192
1198
  "transferAuthority": "EPyHAAHUYnFATwd8CJ7owLnozFeS8pFsr3RNJD1eueYq",
1193
1199
  "multisig": "Eu3cBFRo18AeN9BFb5ndzk2PEmBT7yWEhh3VkG21pyGo",
@@ -1415,11 +1421,12 @@
1415
1421
  "poolName": "devnet.2",
1416
1422
  "poolAddress": "5MCtcNsF3dxna8ArzMamyciWDV3TBkiAzY1NqLtNiXvw",
1417
1423
  "lpTokenMint": "CEBnqSukYQjcRiKiZKmkbJSDYojtc4GdSipKJ5bSYvHd",
1418
- "sFlpTokenMint": "9Fzv4s5t2bNwwJoeeywMwypop3JegsuDb1eDbMnPr4TX",
1424
+ "sFlpTokenMint": "C6UBsabfTL8dCygt53jf4gf6KdwPBRKXihquJyy6RJUe",
1419
1425
  "flpTokenAccount": "CEBnqSukYQjcRiKiZKmkbJSDYojtc4GdSipKJ5bSYvHd",
1420
1426
  "metadataAccount": "CeUy9d6CGyj4mL3JVhYKK2A462yjpb4FGyWUyA7zDoWi",
1421
1427
  "lpDecimals": 6,
1422
1428
  "lpTokenSymbol": "FLP.2",
1429
+ "stakedLpTokenSymbol": "sFLP.2",
1423
1430
  "perpetuals": "445GcRLAJ64DcxSRbvQTkbwXgWUyubAxzQUQ2wL73KLS",
1424
1431
  "transferAuthority": "EPyHAAHUYnFATwd8CJ7owLnozFeS8pFsr3RNJD1eueYq",
1425
1432
  "multisig": "Eu3cBFRo18AeN9BFb5ndzk2PEmBT7yWEhh3VkG21pyGo",
@@ -1742,11 +1749,12 @@
1742
1749
  "poolName": "devnet.3",
1743
1750
  "poolAddress": "FpRXePeSYyPZrBKrCSvLNSQGYT6gkgZXGDCBWVVRkNRT",
1744
1751
  "lpTokenMint": "BAh7XbUKRFYtt5a9FjJqeyUqqrx3SZqayiPosYiZFneJ",
1745
- "sFlpTokenMint": "9Fzv4s5t2bNwwJoeeywMwypop3JegsuDb1eDbMnPr4TX",
1752
+ "sFlpTokenMint": "CU1z35oJ56ZFq1jgsaKPzbWT72BPKQ2UBDP35Lm1uo9C",
1746
1753
  "flpTokenAccount": "5HYrb2rKjF2b2ye5EiZAYeBYNeNEUzCct3N2rBmVjzLu",
1747
1754
  "metadataAccount": "Hm6oanS5hrcu3QMC4jumKq2U5aUaJrfasE1sQ2Lct3zF",
1748
1755
  "lpDecimals": 6,
1749
1756
  "lpTokenSymbol": "FLP.3",
1757
+ "stakedLpTokenSymbol": "sFLP.3",
1750
1758
  "perpetuals": "445GcRLAJ64DcxSRbvQTkbwXgWUyubAxzQUQ2wL73KLS",
1751
1759
  "transferAuthority": "EPyHAAHUYnFATwd8CJ7owLnozFeS8pFsr3RNJD1eueYq",
1752
1760
  "multisig": "Eu3cBFRo18AeN9BFb5ndzk2PEmBT7yWEhh3VkG21pyGo",
@@ -2122,11 +2130,12 @@
2122
2130
  "poolName": "devnet.4",
2123
2131
  "poolAddress": "2SLfjsonPtdBugZke3UJzQ8s7DcHQHJxqUuVN1wrthnc",
2124
2132
  "lpTokenMint": "58YkJCFQZ3htRUtkHMdUZNfdpEcjGTFi1jx3DceZvd6N",
2125
- "sFlpTokenMint": "9Fzv4s5t2bNwwJoeeywMwypop3JegsuDb1eDbMnPr4TX",
2133
+ "sFlpTokenMint": "82Jj9HJbrz4w2ZeFaGpco76sR6BmQLYYgoSkAeyHqAgj",
2126
2134
  "flpTokenAccount": "5HYrb2rKjF2b2ye5EiZAYeBYNeNEUzCct3N2rBmVjzLu",
2127
2135
  "metadataAccount": "Hm6oanS5hrcu3QMC4jumKq2U5aUaJrfasE1sQ2Lct3zF",
2128
2136
  "lpDecimals": 6,
2129
2137
  "lpTokenSymbol": "FLP.4",
2138
+ "stakedLpTokenSymbol": "sFLP.4",
2130
2139
  "perpetuals": "445GcRLAJ64DcxSRbvQTkbwXgWUyubAxzQUQ2wL73KLS",
2131
2140
  "transferAuthority": "EPyHAAHUYnFATwd8CJ7owLnozFeS8pFsr3RNJD1eueYq",
2132
2141
  "multisig": "Eu3cBFRo18AeN9BFb5ndzk2PEmBT7yWEhh3VkG21pyGo",
@@ -2237,11 +2246,12 @@
2237
2246
  "poolName": "devnet.5",
2238
2247
  "poolAddress": "74MmsAH8H4S95KbBgWA4XP4vHcxe7jxEopjUkMabQUa",
2239
2248
  "lpTokenMint": "FBZ3eWtCmwkEnEMQ1t7dStRV5Xb5B41xfwWNsBmSUxFT",
2240
- "sFlpTokenMint": "9Fzv4s5t2bNwwJoeeywMwypop3JegsuDb1eDbMnPr4TX",
2249
+ "sFlpTokenMint": "A2aKhBQiNTTZmXrR1bUoRwMCGuDtaQ8Hi8uesozqoc3x",
2241
2250
  "flpTokenAccount": "11111111111111111111111111111111",
2242
2251
  "metadataAccount": "5J42aH92z42HaUzSHoaA4iCCBE1iUsVt2u5oaYdN5yPx",
2243
2252
  "lpDecimals": 6,
2244
2253
  "lpTokenSymbol": "FLP.5",
2254
+ "stakedLpTokenSymbol": "sFLP.5",
2245
2255
  "perpetuals": "445GcRLAJ64DcxSRbvQTkbwXgWUyubAxzQUQ2wL73KLS",
2246
2256
  "transferAuthority": "EPyHAAHUYnFATwd8CJ7owLnozFeS8pFsr3RNJD1eueYq",
2247
2257
  "multisig": "Eu3cBFRo18AeN9BFb5ndzk2PEmBT7yWEhh3VkG21pyGo",
@@ -624,6 +624,114 @@ export type PerpComposability = {
624
624
  }
625
625
  ];
626
626
  "args": [];
627
+ },
628
+ {
629
+ "name": "addLiquidityAndStake";
630
+ "accounts": [
631
+ {
632
+ "name": "perpProgram";
633
+ "isMut": false;
634
+ "isSigner": false;
635
+ },
636
+ {
637
+ "name": "owner";
638
+ "isMut": false;
639
+ "isSigner": true;
640
+ },
641
+ {
642
+ "name": "feePayer";
643
+ "isMut": true;
644
+ "isSigner": true;
645
+ },
646
+ {
647
+ "name": "fundingAccount";
648
+ "isMut": true;
649
+ "isSigner": false;
650
+ },
651
+ {
652
+ "name": "lpTokenAccount";
653
+ "isMut": true;
654
+ "isSigner": false;
655
+ },
656
+ {
657
+ "name": "transferAuthority";
658
+ "isMut": false;
659
+ "isSigner": false;
660
+ },
661
+ {
662
+ "name": "perpetuals";
663
+ "isMut": false;
664
+ "isSigner": false;
665
+ },
666
+ {
667
+ "name": "pool";
668
+ "isMut": true;
669
+ "isSigner": false;
670
+ },
671
+ {
672
+ "name": "custody";
673
+ "isMut": true;
674
+ "isSigner": false;
675
+ },
676
+ {
677
+ "name": "custodyOracleAccount";
678
+ "isMut": false;
679
+ "isSigner": false;
680
+ },
681
+ {
682
+ "name": "custodyTokenAccount";
683
+ "isMut": true;
684
+ "isSigner": false;
685
+ },
686
+ {
687
+ "name": "lpTokenMint";
688
+ "isMut": true;
689
+ "isSigner": false;
690
+ },
691
+ {
692
+ "name": "flpStakeAccount";
693
+ "isMut": true;
694
+ "isSigner": false;
695
+ },
696
+ {
697
+ "name": "poolStakedFlpVault";
698
+ "isMut": true;
699
+ "isSigner": false;
700
+ },
701
+ {
702
+ "name": "systemProgram";
703
+ "isMut": false;
704
+ "isSigner": false;
705
+ },
706
+ {
707
+ "name": "tokenProgram";
708
+ "isMut": false;
709
+ "isSigner": false;
710
+ },
711
+ {
712
+ "name": "eventAuthority";
713
+ "isMut": false;
714
+ "isSigner": false;
715
+ },
716
+ {
717
+ "name": "program";
718
+ "isMut": false;
719
+ "isSigner": false;
720
+ },
721
+ {
722
+ "name": "ixSysvar";
723
+ "isMut": false;
724
+ "isSigner": false;
725
+ }
726
+ ];
727
+ "args": [
728
+ {
729
+ "name": "params";
730
+ "type": {
731
+ "defined": "AddLiquidityAndStakeParams";
732
+ };
733
+ }
734
+ ];
627
735
  }
628
736
  ];
629
737
  "types": [
@@ -738,6 +846,22 @@ export type PerpComposability = {
738
846
  "fields": [];
739
847
  };
740
848
  },
849
+ {
850
+ "name": "AddLiquidityAndStakeParams";
851
+ "type": {
852
+ "kind": "struct";
853
+ "fields": [
854
+ {
855
+ "name": "amountIn";
856
+ "type": "u64";
857
+ },
858
+ {
859
+ "name": "minLpAmountOut";
860
+ "type": "u64";
861
+ }
862
+ ];
863
+ };
864
+ },
741
865
  {
742
866
  "name": "Privilege";
743
867
  "type": {
@@ -627,6 +627,114 @@ exports.IDL = {
627
627
  }
628
628
  ],
629
629
  "args": []
630
+ },
631
+ {
632
+ "name": "addLiquidityAndStake",
633
+ "accounts": [
634
+ {
635
+ "name": "perpProgram",
636
+ "isMut": false,
637
+ "isSigner": false
638
+ },
639
+ {
640
+ "name": "owner",
641
+ "isMut": false,
642
+ "isSigner": true
643
+ },
644
+ {
645
+ "name": "feePayer",
646
+ "isMut": true,
647
+ "isSigner": true
648
+ },
649
+ {
650
+ "name": "fundingAccount",
651
+ "isMut": true,
652
+ "isSigner": false
653
+ },
654
+ {
655
+ "name": "lpTokenAccount",
656
+ "isMut": true,
657
+ "isSigner": false
658
+ },
659
+ {
660
+ "name": "transferAuthority",
661
+ "isMut": false,
662
+ "isSigner": false
663
+ },
664
+ {
665
+ "name": "perpetuals",
666
+ "isMut": false,
667
+ "isSigner": false
668
+ },
669
+ {
670
+ "name": "pool",
671
+ "isMut": true,
672
+ "isSigner": false
673
+ },
674
+ {
675
+ "name": "custody",
676
+ "isMut": true,
677
+ "isSigner": false
678
+ },
679
+ {
680
+ "name": "custodyOracleAccount",
681
+ "isMut": false,
682
+ "isSigner": false
683
+ },
684
+ {
685
+ "name": "custodyTokenAccount",
686
+ "isMut": true,
687
+ "isSigner": false
688
+ },
689
+ {
690
+ "name": "lpTokenMint",
691
+ "isMut": true,
692
+ "isSigner": false
693
+ },
694
+ {
695
+ "name": "flpStakeAccount",
696
+ "isMut": true,
697
+ "isSigner": false
698
+ },
699
+ {
700
+ "name": "poolStakedFlpVault",
701
+ "isMut": true,
702
+ "isSigner": false
703
+ },
704
+ {
705
+ "name": "systemProgram",
706
+ "isMut": false,
707
+ "isSigner": false
708
+ },
709
+ {
710
+ "name": "tokenProgram",
711
+ "isMut": false,
712
+ "isSigner": false
713
+ },
714
+ {
715
+ "name": "eventAuthority",
716
+ "isMut": false,
717
+ "isSigner": false
718
+ },
719
+ {
720
+ "name": "program",
721
+ "isMut": false,
722
+ "isSigner": false
723
+ },
724
+ {
725
+ "name": "ixSysvar",
726
+ "isMut": false,
727
+ "isSigner": false
728
+ }
729
+ ],
730
+ "args": [
731
+ {
732
+ "name": "params",
733
+ "type": {
734
+ "defined": "AddLiquidityAndStakeParams"
735
+ }
736
+ }
737
+ ]
630
738
  }
631
739
  ],
632
740
  "types": [
@@ -741,6 +849,22 @@ exports.IDL = {
741
849
  "fields": []
742
850
  }
743
851
  },
852
+ {
853
+ "name": "AddLiquidityAndStakeParams",
854
+ "type": {
855
+ "kind": "struct",
856
+ "fields": [
857
+ {
858
+ "name": "amountIn",
859
+ "type": "u64"
860
+ },
861
+ {
862
+ "name": "minLpAmountOut",
863
+ "type": "u64"
864
+ }
865
+ ]
866
+ }
867
+ },
744
868
  {
745
869
  "name": "Privilege",
746
870
  "type": {