flash-sdk 2.0.34 → 2.0.36

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.
@@ -12,6 +12,7 @@ import { SendTransactionOpts } from "./utils/rpc";
12
12
  import { MarketConfig, PoolConfig, Token } from "./PoolConfig";
13
13
  import { max } from "bn.js";
14
14
  import { MarketAccount } from "./MarketAccount";
15
+ import { FbnftRewards } from "./idl/fbnft_rewards";
15
16
  export type PerpClientOptions = {
16
17
  postSendTxCallback?: ({ txid }: {
17
18
  txid: string;
@@ -23,6 +24,7 @@ export declare class PerpetualsClient {
23
24
  provider: AnchorProvider;
24
25
  program: Program<Perpetuals>;
25
26
  programPerpComposability: Program<PerpComposability>;
27
+ programFbnftReward: Program<FbnftRewards>;
26
28
  admin: PublicKey;
27
29
  programId: PublicKey;
28
30
  composabilityProgramId: PublicKey;
@@ -46,7 +48,7 @@ export declare class PerpetualsClient {
46
48
  private postSendTxCallback?;
47
49
  private prioritizationFee;
48
50
  private txConfirmationCommitment;
49
- constructor(provider: AnchorProvider, programId: PublicKey, composabilityProgramId: PublicKey, opts: PerpClientOptions);
51
+ constructor(provider: AnchorProvider, programId: PublicKey, composabilityProgramId: PublicKey, fbNftRewardProgramId: PublicKey, opts: PerpClientOptions);
50
52
  setPrioritizationFee: (fee: number) => void;
51
53
  loadAddressLookupTable: (poolConfig: PoolConfig) => Promise<void>;
52
54
  findProgramAddress: (label: string, extraSeeds?: any) => {
@@ -2141,6 +2143,7 @@ export declare class PerpetualsClient {
2141
2143
  removeCustody: (poolName: string, tokenMint: PublicKey, ratios: TokenRatios[]) => Promise<void>;
2142
2144
  getLiquidationState: (positionAccount: PublicKey, poolName: string, tokenMint: PublicKey, collateralMint: PublicKey, poolConfig: PoolConfig) => Promise<any>;
2143
2145
  liquidate: (positionAccount: PublicKey, poolConfig: PoolConfig, tokenMint: PublicKey, collateralMint: PublicKey, marketPk: PublicKey) => Promise<TransactionInstruction>;
2146
+ getApyPercentageUi: (rewardCustodyAccount: CustodyAccount, previousSnapShotRewardPerLpStaked: BN, lpTokenUsdPrice: BN) => string;
2144
2147
  getAddLiquidityAmountAndFeeSync: (amountIn: BN, poolAccount: PoolAccount, inputTokenPrice: OraclePrice, inputTokenEmaPrice: OraclePrice, inputTokenCustodyAccount: CustodyAccount, lpTokenSupplyAmount: BN, poolAumUsdMax: BN, poolConfig: PoolConfig) => AddLiquidityAmountAndFee;
2145
2148
  getRemoveLiquidityAmountAndFeeSync: (lpAmountIn: BN, poolAccount: PoolAccount, outputTokenPrice: OraclePrice, outputTokenEmaPrice: OraclePrice, outputTokenCustodyAccount: CustodyAccount, lpTokenSupply: BN, poolAumUsdMax: BN, poolConfig: PoolConfig) => RemoveLiquidityAmountAndFee;
2146
2149
  private getNewRatioHelper;
@@ -2289,6 +2292,18 @@ export declare class PerpetualsClient {
2289
2292
  instructions: TransactionInstruction[];
2290
2293
  additionalSigners: Signer[];
2291
2294
  }>;
2295
+ initRewardVault: (nftCount: BN, rewardSymbol: string, collectionMint: PublicKey, poolConfig: PoolConfig) => Promise<{
2296
+ instructions: TransactionInstruction[];
2297
+ additionalSigners: Signer[];
2298
+ }>;
2299
+ distributeReward: (rewardAmount: BN, rewardSymbol: string, poolConfig: PoolConfig) => Promise<{
2300
+ instructions: TransactionInstruction[];
2301
+ additionalSigners: Signer[];
2302
+ }>;
2303
+ collectNftReward: (rewardSymbol: string, poolConfig: PoolConfig, nftMint: PublicKey) => Promise<{
2304
+ instructions: TransactionInstruction[];
2305
+ additionalSigners: Signer[];
2306
+ }>;
2292
2307
  setPoolConfig: (permissions: Permissions, oracleAuthority: PublicKey, maxAumUsd: BN, stakingFeeShareBps: BN, poolConfig: PoolConfig) => Promise<{
2293
2308
  instructions: TransactionInstruction[];
2294
2309
  additionalSigners: Signer[];
@@ -70,13 +70,14 @@ var types_1 = require("./types");
70
70
  var OraclePrice_1 = require("./OraclePrice");
71
71
  var perpetuals_1 = require("./idl/perpetuals");
72
72
  var perp_composability_1 = require("./idl/perp_composability");
73
+ var fbnft_rewards_1 = require("./idl/fbnft_rewards");
73
74
  var rpc_1 = require("./utils/rpc");
74
75
  var utils_1 = require("./utils");
75
76
  var constants_1 = require("./constants");
76
77
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
77
78
  var getNftAccounts_1 = require("./utils/getNftAccounts");
78
79
  var PerpetualsClient = (function () {
79
- function PerpetualsClient(provider, programId, composabilityProgramId, opts) {
80
+ function PerpetualsClient(provider, programId, composabilityProgramId, fbNftRewardProgramId, opts) {
80
81
  var _this = this;
81
82
  var _a;
82
83
  this.addressLookupTables = [];
@@ -567,6 +568,13 @@ var PerpetualsClient = (function () {
567
568
  }
568
569
  });
569
570
  }); };
571
+ this.getApyPercentageUi = function (rewardCustodyAccount, previousSnapShotRewardPerLpStaked, lpTokenUsdPrice) {
572
+ var currentRewardPerLpStaked = rewardCustodyAccount.feesStats.rewardPerLpStaked;
573
+ var difference = currentRewardPerLpStaked.sub(previousSnapShotRewardPerLpStaked);
574
+ var anualizedRewardUi = new bignumber_js_1.default(difference.toString()).multipliedBy(365).dividedBy(lpTokenUsdPrice.toString());
575
+ var percentage = anualizedRewardUi.multipliedBy(100);
576
+ return percentage.toString();
577
+ };
570
578
  this.getAddLiquidityAmountAndFeeSync = function (amountIn, poolAccount, inputTokenPrice, inputTokenEmaPrice, inputTokenCustodyAccount, lpTokenSupplyAmount, poolAumUsdMax, poolConfig) {
571
579
  if (inputTokenCustodyAccount.isVirtual) {
572
580
  throw new Error("Virtual custody, cannot add liquidity");
@@ -3275,9 +3283,7 @@ var PerpetualsClient = (function () {
3275
3283
  for (_i = 0, flpStakeAccounts_1 = flpStakeAccounts; _i < flpStakeAccounts_1.length; _i++) {
3276
3284
  flpStakeAccount = flpStakeAccounts_1[_i];
3277
3285
  account = flpStakeAccount.account;
3278
- if (account.stakeStats.pendingActivation.gt(constants_1.BN_ZERO)) {
3279
- pendingActivationAccounts.push(flpStakeAccount.publicKey);
3280
- }
3286
+ pendingActivationAccounts.push(flpStakeAccount.publicKey);
3281
3287
  }
3282
3288
  refreshStakeInstructions = [];
3283
3289
  console.log("total no of pendingActivationAccounts: ", pendingActivationAccounts.length);
@@ -3530,7 +3536,7 @@ var PerpetualsClient = (function () {
3530
3536
  tradingAccount.push({
3531
3537
  pubkey: nftTradingAccount,
3532
3538
  isSigner: false,
3533
- isWritable: false,
3539
+ isWritable: true,
3534
3540
  });
3535
3541
  }
3536
3542
  return [4, this.program.methods
@@ -3567,8 +3573,155 @@ var PerpetualsClient = (function () {
3567
3573
  }
3568
3574
  });
3569
3575
  }); };
3576
+ this.initRewardVault = function (nftCount, rewardSymbol, collectionMint, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
3577
+ var publicKey, rewardCustodyMint, instructions, additionalSigners, fbNftProgramData, rewardVault, rewardTokenAccount, nftTransferAuthority, initRewardVault, err_16;
3578
+ return __generator(this, function (_a) {
3579
+ switch (_a.label) {
3580
+ case 0:
3581
+ publicKey = this.provider.wallet.publicKey;
3582
+ rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
3583
+ instructions = [];
3584
+ additionalSigners = [];
3585
+ _a.label = 1;
3586
+ case 1:
3587
+ _a.trys.push([1, 3, , 4]);
3588
+ fbNftProgramData = web3_js_1.PublicKey.findProgramAddressSync([this.programFbnftReward.programId.toBuffer()], new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111"))[0];
3589
+ rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
3590
+ rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
3591
+ nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
3592
+ return [4, this.programFbnftReward.methods
3593
+ .initRewardVault({
3594
+ nftCount: nftCount
3595
+ })
3596
+ .accounts({
3597
+ admin: publicKey,
3598
+ transferAuthority: nftTransferAuthority,
3599
+ rewardVault: rewardVault,
3600
+ rewardMint: rewardCustodyMint,
3601
+ rewardTokenAccount: rewardTokenAccount,
3602
+ collectionMint: collectionMint,
3603
+ programData: fbNftProgramData,
3604
+ systemProgram: web3_js_1.SystemProgram.programId,
3605
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
3606
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY
3607
+ })
3608
+ .instruction()];
3609
+ case 2:
3610
+ initRewardVault = _a.sent();
3611
+ instructions.push(initRewardVault);
3612
+ return [3, 4];
3613
+ case 3:
3614
+ err_16 = _a.sent();
3615
+ console.log("perpClient InitRewardVault error:: ", err_16);
3616
+ throw err_16;
3617
+ case 4: return [2, {
3618
+ instructions: __spreadArray([], instructions, true),
3619
+ additionalSigners: additionalSigners
3620
+ }];
3621
+ }
3622
+ });
3623
+ }); };
3624
+ this.distributeReward = function (rewardAmount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
3625
+ var publicKey, rewardCustodyMint, instructions, additionalSigners, fundingAccount, rewardVault, rewardTokenAccount, distributeReward, err_17;
3626
+ return __generator(this, function (_a) {
3627
+ switch (_a.label) {
3628
+ case 0:
3629
+ publicKey = this.provider.wallet.publicKey;
3630
+ rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
3631
+ instructions = [];
3632
+ additionalSigners = [];
3633
+ _a.label = 1;
3634
+ case 1:
3635
+ _a.trys.push([1, 4, , 5]);
3636
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(rewardCustodyMint, publicKey)];
3637
+ case 2:
3638
+ fundingAccount = _a.sent();
3639
+ rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
3640
+ rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
3641
+ return [4, this.programFbnftReward.methods
3642
+ .distributeRewards({
3643
+ rewardAmount: rewardAmount
3644
+ })
3645
+ .accounts({
3646
+ admin: publicKey,
3647
+ fundingAccount: fundingAccount,
3648
+ rewardVault: rewardVault,
3649
+ rewardTokenAccount: rewardTokenAccount,
3650
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
3651
+ })
3652
+ .instruction()];
3653
+ case 3:
3654
+ distributeReward = _a.sent();
3655
+ instructions.push(distributeReward);
3656
+ return [3, 5];
3657
+ case 4:
3658
+ err_17 = _a.sent();
3659
+ console.log("perpClient distributeReward error:: ", err_17);
3660
+ throw err_17;
3661
+ case 5: return [2, {
3662
+ instructions: __spreadArray([], instructions, true),
3663
+ additionalSigners: additionalSigners
3664
+ }];
3665
+ }
3666
+ });
3667
+ }); };
3668
+ this.collectNftReward = function (rewardSymbol, poolConfig, nftMint) { return __awaiter(_this, void 0, void 0, function () {
3669
+ var publicKey, rewardCustodyMint, instructions, additionalSigners, nftTokenAccount, metadataAccount, receivingTokenAccount, rewardRecord, rewardVault, rewardTokenAccount, nftTransferAuthority, collectNftReward, err_18;
3670
+ return __generator(this, function (_a) {
3671
+ switch (_a.label) {
3672
+ case 0:
3673
+ publicKey = this.provider.wallet.publicKey;
3674
+ rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
3675
+ instructions = [];
3676
+ additionalSigners = [];
3677
+ _a.label = 1;
3678
+ case 1:
3679
+ _a.trys.push([1, 5, , 6]);
3680
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(nftMint, publicKey)];
3681
+ case 2:
3682
+ nftTokenAccount = _a.sent();
3683
+ metadataAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("metadata"), constants_1.METAPLEX_PROGRAM_ID.toBuffer(), nftMint.toBuffer()], constants_1.METAPLEX_PROGRAM_ID)[0];
3684
+ return [4, (0, spl_token_1.getAssociatedTokenAddress)(rewardCustodyMint, publicKey)];
3685
+ case 3:
3686
+ receivingTokenAccount = _a.sent();
3687
+ rewardRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_record"), nftMint.toBuffer()], this.programFbnftReward.programId)[0];
3688
+ rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programFbnftReward.programId)[0];
3689
+ rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programFbnftReward.programId)[0];
3690
+ nftTransferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programFbnftReward.programId)[0];
3691
+ 32 - 8 - 24 / 3;
3692
+ return [4, this.programFbnftReward.methods
3693
+ .collectReward()
3694
+ .accounts({
3695
+ owner: publicKey,
3696
+ feePayer: publicKey,
3697
+ nftMint: nftMint,
3698
+ nftTokenAccount: nftTokenAccount,
3699
+ metadataAccount: metadataAccount,
3700
+ receivingAccount: receivingTokenAccount,
3701
+ rewardRecord: rewardRecord,
3702
+ rewardVault: rewardVault,
3703
+ rewardTokenAccount: rewardTokenAccount,
3704
+ transferAuthority: nftTransferAuthority,
3705
+ systemProgram: web3_js_1.SystemProgram.programId,
3706
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
3707
+ })
3708
+ .instruction()];
3709
+ case 4:
3710
+ collectNftReward = _a.sent();
3711
+ instructions.push(collectNftReward);
3712
+ return [3, 6];
3713
+ case 5:
3714
+ err_18 = _a.sent();
3715
+ throw err_18;
3716
+ case 6: return [2, {
3717
+ instructions: __spreadArray([], instructions, true),
3718
+ additionalSigners: additionalSigners
3719
+ }];
3720
+ }
3721
+ });
3722
+ }); };
3570
3723
  this.setPoolConfig = function (permissions, oracleAuthority, maxAumUsd, stakingFeeShareBps, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
3571
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPoolConfigInstruction, err_16;
3724
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPoolConfigInstruction, err_19;
3572
3725
  return __generator(this, function (_a) {
3573
3726
  switch (_a.label) {
3574
3727
  case 0:
@@ -3598,9 +3751,9 @@ var PerpetualsClient = (function () {
3598
3751
  instructions.push(setPoolConfigInstruction);
3599
3752
  return [3, 4];
3600
3753
  case 3:
3601
- err_16 = _a.sent();
3602
- console.log("perpClient setPool error:: ", err_16);
3603
- throw err_16;
3754
+ err_19 = _a.sent();
3755
+ console.log("perpClient setPool error:: ", err_19);
3756
+ throw err_19;
3604
3757
  case 4: return [2, {
3605
3758
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
3606
3759
  additionalSigners: additionalSigners
@@ -3609,7 +3762,7 @@ var PerpetualsClient = (function () {
3609
3762
  });
3610
3763
  }); };
3611
3764
  this.setPermissions = function (permissions) { return __awaiter(_this, void 0, void 0, function () {
3612
- var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_17;
3765
+ var publicKey, preInstructions, instructions, postInstructions, additionalSigners, setPermissionsInstruction, err_20;
3613
3766
  return __generator(this, function (_a) {
3614
3767
  switch (_a.label) {
3615
3768
  case 0:
@@ -3636,9 +3789,9 @@ var PerpetualsClient = (function () {
3636
3789
  instructions.push(setPermissionsInstruction);
3637
3790
  return [3, 4];
3638
3791
  case 3:
3639
- err_17 = _a.sent();
3640
- console.log("perpClient setPool error:: ", err_17);
3641
- throw err_17;
3792
+ err_20 = _a.sent();
3793
+ console.log("perpClient setPool error:: ", err_20);
3794
+ throw err_20;
3642
3795
  case 4: return [2, {
3643
3796
  instructions: __spreadArray(__spreadArray(__spreadArray([], preInstructions, true), instructions, true), postInstructions, true),
3644
3797
  additionalSigners: additionalSigners
@@ -3650,6 +3803,7 @@ var PerpetualsClient = (function () {
3650
3803
  (0, anchor_1.setProvider)(provider);
3651
3804
  this.program = new anchor_1.Program(perpetuals_1.IDL, programId);
3652
3805
  this.programPerpComposability = new anchor_1.Program(perp_composability_1.IDL, composabilityProgramId);
3806
+ this.programFbnftReward = new anchor_1.Program(fbnft_rewards_1.IDL, fbNftRewardProgramId);
3653
3807
  this.programId = programId;
3654
3808
  this.composabilityProgramId = composabilityProgramId;
3655
3809
  this.admin = this.provider.wallet.publicKey;
@@ -39,6 +39,7 @@ export type Token = {
39
39
  export declare class PoolConfig {
40
40
  programId: PublicKey;
41
41
  perpComposibilityProgramId: PublicKey;
42
+ fbNftRewardProgramId: PublicKey;
42
43
  cluster: Cluster;
43
44
  poolName: string;
44
45
  poolAddress: PublicKey;
@@ -55,7 +56,7 @@ export declare class PoolConfig {
55
56
  tokens: Token[];
56
57
  custodies: CustodyConfig[];
57
58
  markets: MarketConfig[];
58
- constructor(programId: PublicKey, perpComposibilityProgramId: PublicKey, cluster: Cluster, poolName: string, poolAddress: PublicKey, lpTokenMint: PublicKey, flpTokenAccount: PublicKey, lpDecimals: number, lpTokenSymbol: string, perpetuals: PublicKey, transferAuthority: PublicKey, multisig: PublicKey, addressLookupTableAddresses: PublicKey[], backupOracle: PublicKey, nftCollectionAddress: PublicKey, tokens: Token[], custodies: CustodyConfig[], markets: MarketConfig[]);
59
+ constructor(programId: PublicKey, perpComposibilityProgramId: PublicKey, fbNftRewardProgramId: PublicKey, cluster: Cluster, poolName: string, poolAddress: PublicKey, lpTokenMint: PublicKey, flpTokenAccount: PublicKey, lpDecimals: number, lpTokenSymbol: string, perpetuals: PublicKey, transferAuthority: PublicKey, multisig: PublicKey, addressLookupTableAddresses: PublicKey[], backupOracle: PublicKey, nftCollectionAddress: PublicKey, tokens: Token[], custodies: CustodyConfig[], markets: MarketConfig[]);
59
60
  getAllTokenMints(): PublicKey[];
60
61
  getMarketConfigByPk(marketAccountPk: PublicKey): MarketConfig;
61
62
  getMarketConfig(targetCustody: PublicKey, collateralCustody: PublicKey, side: Side): MarketConfig | null;
@@ -19,10 +19,11 @@ 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, cluster, poolName, poolAddress, lpTokenMint, flpTokenAccount, lpDecimals, lpTokenSymbol, perpetuals, transferAuthority, multisig, addressLookupTableAddresses, backupOracle, nftCollectionAddress, tokens, custodies, markets) {
22
+ function PoolConfig(programId, perpComposibilityProgramId, fbNftRewardProgramId, cluster, poolName, poolAddress, lpTokenMint, flpTokenAccount, lpDecimals, lpTokenSymbol, perpetuals, transferAuthority, multisig, addressLookupTableAddresses, backupOracle, nftCollectionAddress, tokens, custodies, markets) {
23
23
  var _this = this;
24
24
  this.programId = programId;
25
25
  this.perpComposibilityProgramId = perpComposibilityProgramId;
26
+ this.fbNftRewardProgramId = fbNftRewardProgramId;
26
27
  this.cluster = cluster;
27
28
  this.poolName = poolName;
28
29
  this.poolAddress = poolAddress;
@@ -161,7 +162,7 @@ var PoolConfig = (function () {
161
162
  catch (error) {
162
163
  console.log("ERROR: buildPoolconfigFromJson unable to load markets ");
163
164
  }
164
- return new PoolConfig(new web3_js_1.PublicKey(poolConfig.programId), new web3_js_1.PublicKey(poolConfig.perpComposibilityProgramId), poolConfig.cluster, poolConfig.poolName, new web3_js_1.PublicKey(poolConfig.poolAddress), new web3_js_1.PublicKey(poolConfig.lpTokenMint), 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), tokens, custodies, markets);
165
+ 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.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), tokens, custodies, markets);
165
166
  };
166
167
  PoolConfig.fromIdsByName = function (name, cluster) {
167
168
  var poolConfig = PoolConfig_json_1.default.pools.find(function (pool) { return pool['poolName'] === name && cluster === pool['cluster']; });
@@ -9,6 +9,7 @@
9
9
  {
10
10
  "programId": "FLASH6Lo6h3iasJKWDs2F8TkW2UKf3s15C8PMGuVfgBn",
11
11
  "perpComposibilityProgramId": "FSWAPViR8ny5K96hezav8jynVubP2dJ2L7SbKzds2hwm",
12
+ "fbNftRewardProgramId": "FB8mxzFuW99ExD1B14hFqoeWWS1UdbuK6iY2PVPpKFQi",
12
13
  "cluster": "mainnet-beta",
13
14
  "poolName": "Crypto.1",
14
15
  "poolAddress": "HfF7GCcEc76xubFCHLLXRdYcgRzwjEPdfKWqzRS8Ncog",
@@ -204,6 +205,7 @@
204
205
  {
205
206
  "programId": "FLASH6Lo6h3iasJKWDs2F8TkW2UKf3s15C8PMGuVfgBn",
206
207
  "perpComposibilityProgramId": "FSWAPViR8ny5K96hezav8jynVubP2dJ2L7SbKzds2hwm",
208
+ "fbNftRewardProgramId": "FB8mxzFuW99ExD1B14hFqoeWWS1UdbuK6iY2PVPpKFQi",
207
209
  "cluster": "mainnet-beta",
208
210
  "poolName": "Virtual.1",
209
211
  "poolAddress": "KwhpybQPe9xuZFmAfcjLHj3ukownWex1ratyascAC1X",
@@ -482,6 +484,7 @@
482
484
  {
483
485
  "programId": "FTN6rgbaaxwT8mpRuC55EFTwpHB3BwnHJ91Lqv4ZVCfW",
484
486
  "perpComposibilityProgramId": "SWAP4AE4N1if9qKD7dgfQgmRBRv1CtWG8xDs4HP14ST",
487
+ "fbNftRewardProgramId": "FB8mxzFuW99ExD1B14hFqoeWWS1UdbuK6iY2PVPpKFQi",
485
488
  "cluster": "devnet",
486
489
  "poolName": "devnet.1",
487
490
  "poolAddress": "7jA4ZSGwaBxXk5EmPKDCSc5RtZNHxyoxy22iQt3D2mH9",
@@ -677,6 +680,7 @@
677
680
  {
678
681
  "programId": "FTN6rgbaaxwT8mpRuC55EFTwpHB3BwnHJ91Lqv4ZVCfW",
679
682
  "perpComposibilityProgramId": "SWAP4AE4N1if9qKD7dgfQgmRBRv1CtWG8xDs4HP14ST",
683
+ "fbNftRewardProgramId": "FB8mxzFuW99ExD1B14hFqoeWWS1UdbuK6iY2PVPpKFQi",
680
684
  "cluster": "devnet",
681
685
  "poolName": "devnet.2",
682
686
  "poolAddress": "5MCtcNsF3dxna8ArzMamyciWDV3TBkiAzY1NqLtNiXvw",
@@ -0,0 +1,285 @@
1
+ export type FbnftRewards = {
2
+ "version": "0.1.0";
3
+ "name": "fbnft_rewards";
4
+ "instructions": [
5
+ {
6
+ "name": "initRewardVault";
7
+ "accounts": [
8
+ {
9
+ "name": "admin";
10
+ "isMut": true;
11
+ "isSigner": true;
12
+ },
13
+ {
14
+ "name": "transferAuthority";
15
+ "isMut": true;
16
+ "isSigner": false;
17
+ },
18
+ {
19
+ "name": "rewardVault";
20
+ "isMut": true;
21
+ "isSigner": false;
22
+ },
23
+ {
24
+ "name": "rewardMint";
25
+ "isMut": false;
26
+ "isSigner": false;
27
+ },
28
+ {
29
+ "name": "rewardTokenAccount";
30
+ "isMut": true;
31
+ "isSigner": false;
32
+ },
33
+ {
34
+ "name": "collectionMint";
35
+ "isMut": false;
36
+ "isSigner": false;
37
+ },
38
+ {
39
+ "name": "programData";
40
+ "isMut": false;
41
+ "isSigner": false;
42
+ },
43
+ {
44
+ "name": "systemProgram";
45
+ "isMut": false;
46
+ "isSigner": false;
47
+ },
48
+ {
49
+ "name": "tokenProgram";
50
+ "isMut": false;
51
+ "isSigner": false;
52
+ },
53
+ {
54
+ "name": "rent";
55
+ "isMut": false;
56
+ "isSigner": false;
57
+ }
58
+ ];
59
+ "args": [
60
+ {
61
+ "name": "params";
62
+ "type": {
63
+ "defined": "InitRewardVaultParams";
64
+ };
65
+ }
66
+ ];
67
+ },
68
+ {
69
+ "name": "distributeRewards";
70
+ "accounts": [
71
+ {
72
+ "name": "admin";
73
+ "isMut": false;
74
+ "isSigner": true;
75
+ },
76
+ {
77
+ "name": "fundingAccount";
78
+ "isMut": true;
79
+ "isSigner": false;
80
+ },
81
+ {
82
+ "name": "rewardVault";
83
+ "isMut": true;
84
+ "isSigner": false;
85
+ },
86
+ {
87
+ "name": "rewardTokenAccount";
88
+ "isMut": true;
89
+ "isSigner": false;
90
+ },
91
+ {
92
+ "name": "tokenProgram";
93
+ "isMut": false;
94
+ "isSigner": false;
95
+ }
96
+ ];
97
+ "args": [
98
+ {
99
+ "name": "params";
100
+ "type": {
101
+ "defined": "DistributeRewardsParams";
102
+ };
103
+ }
104
+ ];
105
+ },
106
+ {
107
+ "name": "collectReward";
108
+ "accounts": [
109
+ {
110
+ "name": "owner";
111
+ "isMut": true;
112
+ "isSigner": true;
113
+ },
114
+ {
115
+ "name": "feePayer";
116
+ "isMut": true;
117
+ "isSigner": true;
118
+ },
119
+ {
120
+ "name": "nftMint";
121
+ "isMut": true;
122
+ "isSigner": false;
123
+ },
124
+ {
125
+ "name": "nftTokenAccount";
126
+ "isMut": false;
127
+ "isSigner": false;
128
+ },
129
+ {
130
+ "name": "metadataAccount";
131
+ "isMut": true;
132
+ "isSigner": false;
133
+ },
134
+ {
135
+ "name": "receivingAccount";
136
+ "isMut": true;
137
+ "isSigner": false;
138
+ },
139
+ {
140
+ "name": "rewardRecord";
141
+ "isMut": true;
142
+ "isSigner": false;
143
+ },
144
+ {
145
+ "name": "rewardVault";
146
+ "isMut": true;
147
+ "isSigner": false;
148
+ },
149
+ {
150
+ "name": "rewardTokenAccount";
151
+ "isMut": true;
152
+ "isSigner": false;
153
+ },
154
+ {
155
+ "name": "transferAuthority";
156
+ "isMut": false;
157
+ "isSigner": false;
158
+ },
159
+ {
160
+ "name": "systemProgram";
161
+ "isMut": false;
162
+ "isSigner": false;
163
+ },
164
+ {
165
+ "name": "tokenProgram";
166
+ "isMut": false;
167
+ "isSigner": false;
168
+ }
169
+ ];
170
+ "args": [];
171
+ }
172
+ ];
173
+ "accounts": [
174
+ {
175
+ "name": "rewardVault";
176
+ "type": {
177
+ "kind": "struct";
178
+ "fields": [
179
+ {
180
+ "name": "admin";
181
+ "type": "publicKey";
182
+ },
183
+ {
184
+ "name": "collection";
185
+ "type": "publicKey";
186
+ },
187
+ {
188
+ "name": "rewardMint";
189
+ "type": "publicKey";
190
+ },
191
+ {
192
+ "name": "transferAuthority";
193
+ "type": "publicKey";
194
+ },
195
+ {
196
+ "name": "rewardTokenAccount";
197
+ "type": "publicKey";
198
+ },
199
+ {
200
+ "name": "lpTokenAccount";
201
+ "type": "publicKey";
202
+ },
203
+ {
204
+ "name": "nftCount";
205
+ "type": "u64";
206
+ },
207
+ {
208
+ "name": "accruedAmount";
209
+ "type": "u128";
210
+ },
211
+ {
212
+ "name": "paidAmount";
213
+ "type": "u128";
214
+ },
215
+ {
216
+ "name": "rewardsPerNft";
217
+ "type": "u64";
218
+ },
219
+ {
220
+ "name": "bump";
221
+ "type": "u8";
222
+ },
223
+ {
224
+ "name": "transferAuthorityBump";
225
+ "type": "u8";
226
+ },
227
+ {
228
+ "name": "tokenAccountBump";
229
+ "type": "u8";
230
+ }
231
+ ];
232
+ };
233
+ },
234
+ {
235
+ "name": "rewardRecord";
236
+ "type": {
237
+ "kind": "struct";
238
+ "fields": [
239
+ {
240
+ "name": "mint";
241
+ "type": "publicKey";
242
+ },
243
+ {
244
+ "name": "rewardDebt";
245
+ "type": "u64";
246
+ }
247
+ ];
248
+ };
249
+ }
250
+ ];
251
+ "types": [
252
+ {
253
+ "name": "InitRewardVaultParams";
254
+ "type": {
255
+ "kind": "struct";
256
+ "fields": [
257
+ {
258
+ "name": "nftCount";
259
+ "type": "u64";
260
+ }
261
+ ];
262
+ };
263
+ },
264
+ {
265
+ "name": "DistributeRewardsParams";
266
+ "type": {
267
+ "kind": "struct";
268
+ "fields": [
269
+ {
270
+ "name": "rewardAmount";
271
+ "type": "u64";
272
+ }
273
+ ];
274
+ };
275
+ }
276
+ ];
277
+ "errors": [
278
+ {
279
+ "code": 6000;
280
+ "name": "InvalidCollection";
281
+ "msg": "Unsuppported NFT collection";
282
+ }
283
+ ];
284
+ };
285
+ export declare const IDL: FbnftRewards;