flash-sdk 2.9.3 → 2.10.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/PerpetualsClient.d.ts +16 -2
- package/dist/PerpetualsClient.js +155 -1
- package/dist/PoolConfig.d.ts +14 -1
- package/dist/PoolConfig.js +9 -2
- package/dist/PoolConfig.json +123 -0
- package/dist/idl/reward_distribution.d.ts +261 -0
- package/dist/idl/reward_distribution.js +263 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
@@ -8,11 +8,12 @@ import { OraclePrice } from "./OraclePrice";
|
|
8
8
|
import { CustodyAccount } from "./CustodyAccount";
|
9
9
|
import { Perpetuals } from "./idl/perpetuals";
|
10
10
|
import { PerpComposability } from "./idl/perp_composability";
|
11
|
+
import { FbnftRewards } from "./idl/fbnft_rewards";
|
12
|
+
import { RewardDistribution } from "./idl/reward_distribution";
|
11
13
|
import { SendTransactionOpts } from "./utils/rpc";
|
12
14
|
import { MarketConfig, PoolConfig, Token } from "./PoolConfig";
|
13
15
|
import { max } from "bn.js";
|
14
16
|
import { MarketAccount } from "./MarketAccount";
|
15
|
-
import { FbnftRewards } from "./idl/fbnft_rewards";
|
16
17
|
export type PerpClientOptions = {
|
17
18
|
postSendTxCallback?: ({ txid }: {
|
18
19
|
txid: string;
|
@@ -25,6 +26,7 @@ export declare class PerpetualsClient {
|
|
25
26
|
program: Program<Perpetuals>;
|
26
27
|
programPerpComposability: Program<PerpComposability>;
|
27
28
|
programFbnftReward: Program<FbnftRewards>;
|
29
|
+
programRewardDistribution: Program<RewardDistribution>;
|
28
30
|
admin: PublicKey;
|
29
31
|
programId: PublicKey;
|
30
32
|
composabilityProgramId: PublicKey;
|
@@ -49,7 +51,7 @@ export declare class PerpetualsClient {
|
|
49
51
|
private prioritizationFee;
|
50
52
|
private useExtOracleAccount;
|
51
53
|
private txConfirmationCommitment;
|
52
|
-
constructor(provider: AnchorProvider, programId: PublicKey, composabilityProgramId: PublicKey, fbNftRewardProgramId: PublicKey, opts: PerpClientOptions, useExtOracleAccount?: boolean);
|
54
|
+
constructor(provider: AnchorProvider, programId: PublicKey, composabilityProgramId: PublicKey, fbNftRewardProgramId: PublicKey, rewardDistributionProgramId: PublicKey, opts: PerpClientOptions, useExtOracleAccount?: boolean);
|
53
55
|
setPrioritizationFee: (fee: number) => void;
|
54
56
|
loadAddressLookupTable: (poolConfig: PoolConfig) => Promise<void>;
|
55
57
|
findProgramAddress: (label: string, extraSeeds?: any) => {
|
@@ -2405,5 +2407,17 @@ export declare class PerpetualsClient {
|
|
2405
2407
|
instructions: TransactionInstruction[];
|
2406
2408
|
additionalSigners: Signer[];
|
2407
2409
|
}>;
|
2410
|
+
initRewardDistribution: (rewardSymbol: string, poolConfig: PoolConfig) => Promise<{
|
2411
|
+
instructions: TransactionInstruction[];
|
2412
|
+
additionalSigners: Signer[];
|
2413
|
+
}>;
|
2414
|
+
rewardDistribution: (counter: BN, owner: PublicKey, rewardAmount: BN, rewardSymbol: string, poolConfig: PoolConfig) => Promise<{
|
2415
|
+
instructions: TransactionInstruction[];
|
2416
|
+
additionalSigners: Signer[];
|
2417
|
+
}>;
|
2418
|
+
collectReward: (counter: BN, owner: PublicKey, rewardSymbol: string, poolConfig: PoolConfig, createUserATA?: boolean) => Promise<{
|
2419
|
+
instructions: TransactionInstruction[];
|
2420
|
+
additionalSigners: Signer[];
|
2421
|
+
}>;
|
2408
2422
|
sendTransaction(ixs: TransactionInstruction[], opts?: SendTransactionOpts): Promise<string>;
|
2409
2423
|
}
|
package/dist/PerpetualsClient.js
CHANGED
@@ -71,13 +71,14 @@ var OraclePrice_1 = require("./OraclePrice");
|
|
71
71
|
var perpetuals_1 = require("./idl/perpetuals");
|
72
72
|
var perp_composability_1 = require("./idl/perp_composability");
|
73
73
|
var fbnft_rewards_1 = require("./idl/fbnft_rewards");
|
74
|
+
var reward_distribution_1 = require("./idl/reward_distribution");
|
74
75
|
var rpc_1 = require("./utils/rpc");
|
75
76
|
var utils_1 = require("./utils");
|
76
77
|
var constants_1 = require("./constants");
|
77
78
|
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
78
79
|
var getNftAccounts_1 = require("./utils/getNftAccounts");
|
79
80
|
var PerpetualsClient = (function () {
|
80
|
-
function PerpetualsClient(provider, programId, composabilityProgramId, fbNftRewardProgramId, opts, useExtOracleAccount) {
|
81
|
+
function PerpetualsClient(provider, programId, composabilityProgramId, fbNftRewardProgramId, rewardDistributionProgramId, opts, useExtOracleAccount) {
|
81
82
|
if (useExtOracleAccount === void 0) { useExtOracleAccount = false; }
|
82
83
|
var _this = this;
|
83
84
|
var _a;
|
@@ -4474,11 +4475,164 @@ var PerpetualsClient = (function () {
|
|
4474
4475
|
}
|
4475
4476
|
});
|
4476
4477
|
}); };
|
4478
|
+
this.initRewardDistribution = function (rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
|
4479
|
+
var publicKey, rewardMint, instructions, additionalSigners, fbNftProgramData, rewardVault, rewardTokenAccount, transferAuthority, initRewardVault, err_28;
|
4480
|
+
return __generator(this, function (_a) {
|
4481
|
+
switch (_a.label) {
|
4482
|
+
case 0:
|
4483
|
+
publicKey = this.provider.wallet.publicKey;
|
4484
|
+
rewardMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
|
4485
|
+
instructions = [];
|
4486
|
+
additionalSigners = [];
|
4487
|
+
_a.label = 1;
|
4488
|
+
case 1:
|
4489
|
+
_a.trys.push([1, 3, , 4]);
|
4490
|
+
fbNftProgramData = web3_js_1.PublicKey.findProgramAddressSync([this.programRewardDistribution.programId.toBuffer()], new web3_js_1.PublicKey("BPFLoaderUpgradeab1e11111111111111111111111"))[0];
|
4491
|
+
rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programRewardDistribution.programId)[0];
|
4492
|
+
rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programRewardDistribution.programId)[0];
|
4493
|
+
transferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programRewardDistribution.programId)[0];
|
4494
|
+
return [4, this.programRewardDistribution.methods
|
4495
|
+
.initRewardVault()
|
4496
|
+
.accounts({
|
4497
|
+
admin: publicKey,
|
4498
|
+
transferAuthority: transferAuthority,
|
4499
|
+
rewardVault: rewardVault,
|
4500
|
+
rewardMint: rewardMint,
|
4501
|
+
rewardTokenAccount: rewardTokenAccount,
|
4502
|
+
programData: fbNftProgramData,
|
4503
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
4504
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
4505
|
+
rent: web3_js_1.SYSVAR_RENT_PUBKEY
|
4506
|
+
})
|
4507
|
+
.instruction()];
|
4508
|
+
case 2:
|
4509
|
+
initRewardVault = _a.sent();
|
4510
|
+
instructions.push(initRewardVault);
|
4511
|
+
return [3, 4];
|
4512
|
+
case 3:
|
4513
|
+
err_28 = _a.sent();
|
4514
|
+
console.log("rewardDistribution InitRewardVault error:: ", err_28);
|
4515
|
+
throw err_28;
|
4516
|
+
case 4: return [2, {
|
4517
|
+
instructions: __spreadArray([], instructions, true),
|
4518
|
+
additionalSigners: additionalSigners
|
4519
|
+
}];
|
4520
|
+
}
|
4521
|
+
});
|
4522
|
+
}); };
|
4523
|
+
this.rewardDistribution = function (counter, owner, rewardAmount, rewardSymbol, poolConfig) { return __awaiter(_this, void 0, void 0, function () {
|
4524
|
+
var publicKey, rewardCustodyMint, instructions, additionalSigners, fundingAccount, rewardVault, rewardTokenAccount, rewardRecord, distributeReward, err_29;
|
4525
|
+
return __generator(this, function (_a) {
|
4526
|
+
switch (_a.label) {
|
4527
|
+
case 0:
|
4528
|
+
publicKey = this.provider.wallet.publicKey;
|
4529
|
+
rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
|
4530
|
+
instructions = [];
|
4531
|
+
additionalSigners = [];
|
4532
|
+
_a.label = 1;
|
4533
|
+
case 1:
|
4534
|
+
_a.trys.push([1, 4, , 5]);
|
4535
|
+
return [4, (0, spl_token_1.getAssociatedTokenAddress)(rewardCustodyMint, publicKey)];
|
4536
|
+
case 2:
|
4537
|
+
fundingAccount = _a.sent();
|
4538
|
+
rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programRewardDistribution.programId)[0];
|
4539
|
+
rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programRewardDistribution.programId)[0];
|
4540
|
+
rewardRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_record"), owner.toBuffer(), rewardVault.toBuffer(), counter.toArrayLike(Buffer, 'le', 8)], this.programRewardDistribution.programId)[0];
|
4541
|
+
return [4, this.programRewardDistribution.methods
|
4542
|
+
.distributeRewards({
|
4543
|
+
rewardAmount: rewardAmount
|
4544
|
+
})
|
4545
|
+
.accounts({
|
4546
|
+
admin: publicKey,
|
4547
|
+
owner: owner,
|
4548
|
+
fundingAccount: fundingAccount,
|
4549
|
+
rewardVault: rewardVault,
|
4550
|
+
rewardTokenAccount: rewardTokenAccount,
|
4551
|
+
rewardRecord: rewardRecord,
|
4552
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
4553
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
4554
|
+
rent: web3_js_1.SYSVAR_RENT_PUBKEY
|
4555
|
+
})
|
4556
|
+
.instruction()];
|
4557
|
+
case 3:
|
4558
|
+
distributeReward = _a.sent();
|
4559
|
+
instructions.push(distributeReward);
|
4560
|
+
return [3, 5];
|
4561
|
+
case 4:
|
4562
|
+
err_29 = _a.sent();
|
4563
|
+
console.log("rewardDistribution distributeReward error:: ", err_29);
|
4564
|
+
throw err_29;
|
4565
|
+
case 5: return [2, {
|
4566
|
+
instructions: __spreadArray([], instructions, true),
|
4567
|
+
additionalSigners: additionalSigners
|
4568
|
+
}];
|
4569
|
+
}
|
4570
|
+
});
|
4571
|
+
}); };
|
4572
|
+
this.collectReward = function (counter, owner, rewardSymbol, poolConfig, createUserATA) {
|
4573
|
+
if (createUserATA === void 0) { createUserATA = true; }
|
4574
|
+
return __awaiter(_this, void 0, void 0, function () {
|
4575
|
+
var publicKey, rewardCustodyMint, instructions, additionalSigners, receivingTokenAccount, _a, rewardVault, rewardTokenAccount, rewardRecord, transferAuthority, collectNftReward, err_30;
|
4576
|
+
return __generator(this, function (_b) {
|
4577
|
+
switch (_b.label) {
|
4578
|
+
case 0:
|
4579
|
+
publicKey = this.provider.wallet.publicKey;
|
4580
|
+
rewardCustodyMint = poolConfig.getTokenFromSymbol(rewardSymbol).mintKey;
|
4581
|
+
instructions = [];
|
4582
|
+
additionalSigners = [];
|
4583
|
+
_b.label = 1;
|
4584
|
+
case 1:
|
4585
|
+
_b.trys.push([1, 6, , 7]);
|
4586
|
+
return [4, (0, spl_token_1.getAssociatedTokenAddress)(rewardCustodyMint, publicKey)];
|
4587
|
+
case 2:
|
4588
|
+
receivingTokenAccount = _b.sent();
|
4589
|
+
_a = createUserATA;
|
4590
|
+
if (!_a) return [3, 4];
|
4591
|
+
return [4, (0, utils_1.checkIfAccountExists)(receivingTokenAccount, this.provider.connection)];
|
4592
|
+
case 3:
|
4593
|
+
_a = !(_b.sent());
|
4594
|
+
_b.label = 4;
|
4595
|
+
case 4:
|
4596
|
+
if (_a) {
|
4597
|
+
instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(publicKey, receivingTokenAccount, publicKey, rewardCustodyMint));
|
4598
|
+
}
|
4599
|
+
rewardVault = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_vault")], this.programRewardDistribution.programId)[0];
|
4600
|
+
rewardTokenAccount = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_token_account")], this.programRewardDistribution.programId)[0];
|
4601
|
+
rewardRecord = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("reward_record"), owner.toBuffer(), rewardVault.toBuffer(), counter.toArrayLike(Buffer, 'le', 8)], this.programRewardDistribution.programId)[0];
|
4602
|
+
transferAuthority = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("transfer_authority")], this.programRewardDistribution.programId)[0];
|
4603
|
+
return [4, this.programRewardDistribution.methods
|
4604
|
+
.collectReward()
|
4605
|
+
.accounts({
|
4606
|
+
owner: publicKey,
|
4607
|
+
receivingAccount: receivingTokenAccount,
|
4608
|
+
rewardVault: rewardVault,
|
4609
|
+
rewardTokenAccount: rewardTokenAccount,
|
4610
|
+
rewardRecord: rewardRecord,
|
4611
|
+
transferAuthority: transferAuthority,
|
4612
|
+
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
4613
|
+
})
|
4614
|
+
.instruction()];
|
4615
|
+
case 5:
|
4616
|
+
collectNftReward = _b.sent();
|
4617
|
+
instructions.push(collectNftReward);
|
4618
|
+
return [3, 7];
|
4619
|
+
case 6:
|
4620
|
+
err_30 = _b.sent();
|
4621
|
+
throw err_30;
|
4622
|
+
case 7: return [2, {
|
4623
|
+
instructions: __spreadArray([], instructions, true),
|
4624
|
+
additionalSigners: additionalSigners
|
4625
|
+
}];
|
4626
|
+
}
|
4627
|
+
});
|
4628
|
+
});
|
4629
|
+
};
|
4477
4630
|
this.provider = provider;
|
4478
4631
|
(0, anchor_1.setProvider)(provider);
|
4479
4632
|
this.program = new anchor_1.Program(perpetuals_1.IDL, programId);
|
4480
4633
|
this.programPerpComposability = new anchor_1.Program(perp_composability_1.IDL, composabilityProgramId);
|
4481
4634
|
this.programFbnftReward = new anchor_1.Program(fbnft_rewards_1.IDL, fbNftRewardProgramId);
|
4635
|
+
this.programRewardDistribution = new anchor_1.Program(reward_distribution_1.IDL, rewardDistributionProgramId);
|
4482
4636
|
this.programId = programId;
|
4483
4637
|
this.composabilityProgramId = composabilityProgramId;
|
4484
4638
|
this.admin = this.provider.wallet.publicKey;
|
package/dist/PoolConfig.d.ts
CHANGED
@@ -59,10 +59,23 @@ export declare class PoolConfig {
|
|
59
59
|
addressLookupTableAddresses: PublicKey[];
|
60
60
|
backupOracle: PublicKey;
|
61
61
|
nftCollectionAddress: PublicKey;
|
62
|
+
rewardDistributionProgram: {
|
63
|
+
programId: PublicKey;
|
64
|
+
transferAuthority: PublicKey;
|
65
|
+
rewardVault: PublicKey;
|
66
|
+
rewardMint: PublicKey;
|
67
|
+
rewardTokenAccount: PublicKey;
|
68
|
+
};
|
62
69
|
tokens: Token[];
|
63
70
|
custodies: CustodyConfig[];
|
64
71
|
markets: MarketConfig[];
|
65
|
-
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,
|
72
|
+
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, rewardDistributionProgram: {
|
73
|
+
programId: PublicKey;
|
74
|
+
transferAuthority: PublicKey;
|
75
|
+
rewardVault: PublicKey;
|
76
|
+
rewardMint: PublicKey;
|
77
|
+
rewardTokenAccount: PublicKey;
|
78
|
+
}, tokens: Token[], custodies: CustodyConfig[], markets: MarketConfig[]);
|
66
79
|
getAllTokenMints(): PublicKey[];
|
67
80
|
getMarketConfigByPk(marketAccountPk: PublicKey): MarketConfig;
|
68
81
|
getMarketConfig(targetCustody: PublicKey, collateralCustody: PublicKey, side: Side): MarketConfig | null;
|
package/dist/PoolConfig.js
CHANGED
@@ -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, 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, rewardDistributionProgram, tokens, custodies, markets) {
|
23
23
|
var _this = this;
|
24
24
|
this.programId = programId;
|
25
25
|
this.perpComposibilityProgramId = perpComposibilityProgramId;
|
@@ -37,6 +37,7 @@ var PoolConfig = (function () {
|
|
37
37
|
this.addressLookupTableAddresses = addressLookupTableAddresses;
|
38
38
|
this.backupOracle = backupOracle;
|
39
39
|
this.nftCollectionAddress = nftCollectionAddress;
|
40
|
+
this.rewardDistributionProgram = rewardDistributionProgram;
|
40
41
|
this.tokens = tokens;
|
41
42
|
this.custodies = custodies;
|
42
43
|
this.markets = markets;
|
@@ -162,7 +163,13 @@ var PoolConfig = (function () {
|
|
162
163
|
catch (error) {
|
163
164
|
console.log("ERROR: buildPoolconfigFromJson unable to load markets ");
|
164
165
|
}
|
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),
|
166
|
+
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), {
|
167
|
+
programId: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.programId),
|
168
|
+
rewardMint: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.rewardMint),
|
169
|
+
rewardTokenAccount: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.rewardTokenAccount),
|
170
|
+
rewardVault: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.rewardVault),
|
171
|
+
transferAuthority: new web3_js_1.PublicKey(poolConfig.rewardDistributionProgram.transferAuthority),
|
172
|
+
}, tokens, custodies, markets);
|
166
173
|
};
|
167
174
|
PoolConfig.fromIdsByName = function (name, cluster) {
|
168
175
|
var poolConfig = PoolConfig_json_1.default.pools.find(function (pool) { return pool['poolName'] === name && cluster === pool['cluster']; });
|
package/dist/PoolConfig.json
CHANGED
@@ -26,6 +26,13 @@
|
|
26
26
|
],
|
27
27
|
"backupOracle": "AjAubETeBLhebBxLcErmzbavZfqF9bCxkpRAdyJtoi9G",
|
28
28
|
"nftCollectionAddress": "H4EQ8pcE7PQSQGG1WYW4hAA1nizU6ULYipHZcYk9b64u",
|
29
|
+
"rewardDistributionProgram": {
|
30
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
31
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
32
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
33
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
34
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
35
|
+
},
|
29
36
|
"tokens": [
|
30
37
|
{
|
31
38
|
"symbol": "USDC",
|
@@ -250,6 +257,13 @@
|
|
250
257
|
],
|
251
258
|
"backupOracle": "AjAubETeBLhebBxLcErmzbavZfqF9bCxkpRAdyJtoi9G",
|
252
259
|
"nftCollectionAddress": "H4EQ8pcE7PQSQGG1WYW4hAA1nizU6ULYipHZcYk9b64u",
|
260
|
+
"rewardDistributionProgram": {
|
261
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
262
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
263
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
264
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
265
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
266
|
+
},
|
253
267
|
"tokens": [
|
254
268
|
{
|
255
269
|
"symbol": "USDC",
|
@@ -569,6 +583,13 @@
|
|
569
583
|
],
|
570
584
|
"backupOracle": "AjAubETeBLhebBxLcErmzbavZfqF9bCxkpRAdyJtoi9G",
|
571
585
|
"nftCollectionAddress": "H4EQ8pcE7PQSQGG1WYW4hAA1nizU6ULYipHZcYk9b64u",
|
586
|
+
"rewardDistributionProgram": {
|
587
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
588
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
589
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
590
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
591
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
592
|
+
},
|
572
593
|
"tokens": [
|
573
594
|
{
|
574
595
|
"symbol": "USDC",
|
@@ -635,6 +656,17 @@
|
|
635
656
|
"isVirtual": false,
|
636
657
|
"pythTicker": "Crypto.RAY/USD",
|
637
658
|
"pythPriceId": "0x91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a"
|
659
|
+
},
|
660
|
+
{
|
661
|
+
"symbol": "KMNO",
|
662
|
+
"mintKey": "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS",
|
663
|
+
"decimals": 6,
|
664
|
+
"usdPrecision": 4,
|
665
|
+
"tokenPrecision": 4,
|
666
|
+
"isStable": false,
|
667
|
+
"isVirtual": false,
|
668
|
+
"pythTicker": "Crypto.KMNO/USD",
|
669
|
+
"pythPriceId": "0xb17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0"
|
638
670
|
}
|
639
671
|
],
|
640
672
|
"custodies": [
|
@@ -733,6 +765,22 @@
|
|
733
765
|
"extOracleAddress": "Hhipna3EoWR7u8pDruUg8RxhP5F6XLh6SEHMVDmZhWi8",
|
734
766
|
"pythTicker": "Crypto.RAY/USD",
|
735
767
|
"pythPriceId": "0x91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a"
|
768
|
+
},
|
769
|
+
{
|
770
|
+
"custodyId": 6,
|
771
|
+
"custodyAccount": "5JtPiHFmkb1nv1Qvs3sryLgXmjs8p5iQexAseC2Ljjzg",
|
772
|
+
"tokenAccount": "EofwtSbFk3fsVWYKdYp5nzkhK5At8yRM6YA2YxNE5iWV",
|
773
|
+
"symbol": "KMNO",
|
774
|
+
"mintKey": "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS",
|
775
|
+
"decimals": 6,
|
776
|
+
"usdPrecision": 4,
|
777
|
+
"tokenPrecision": 4,
|
778
|
+
"isStable": false,
|
779
|
+
"isVirtual": false,
|
780
|
+
"intOracleAddress": "4tNprL7ziCzxHotNnuNWE8Z8znvQbg2irng4SEyjy9rs",
|
781
|
+
"extOracleAddress": "ArjngUHXrQPr1wH9Bqrji9hdDQirM6ijbzc1Jj1fXUk7",
|
782
|
+
"pythTicker": "Crypto.KMNO/USD",
|
783
|
+
"pythPriceId": "0xb17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0"
|
736
784
|
}
|
737
785
|
],
|
738
786
|
"markets": [
|
@@ -865,6 +913,32 @@
|
|
865
913
|
"collateralCustodyId": 0,
|
866
914
|
"targetMint": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R",
|
867
915
|
"collateralMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
|
916
|
+
},
|
917
|
+
{
|
918
|
+
"marketId": 10,
|
919
|
+
"marketAccount": "FaT568uYioPFsf2rFgSSFrNyrqHZfG9LZBReaq56dSYJ",
|
920
|
+
"pool": "D6bfytnxoZBSzJM7fcixg5sgWJ2hj8SbwkPvb2r8XpbH",
|
921
|
+
"targetCustody": "5JtPiHFmkb1nv1Qvs3sryLgXmjs8p5iQexAseC2Ljjzg",
|
922
|
+
"collateralCustody": "5JtPiHFmkb1nv1Qvs3sryLgXmjs8p5iQexAseC2Ljjzg",
|
923
|
+
"side": "long",
|
924
|
+
"maxLev": 50,
|
925
|
+
"targetCustodyId": 6,
|
926
|
+
"collateralCustodyId": 6,
|
927
|
+
"targetMint": "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS",
|
928
|
+
"collateralMint": "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS"
|
929
|
+
},
|
930
|
+
{
|
931
|
+
"marketId": 11,
|
932
|
+
"marketAccount": "Hfkgp91DXQivzd8XihGHh7ansPm1SFfosNZ5CN3yz1PW",
|
933
|
+
"pool": "D6bfytnxoZBSzJM7fcixg5sgWJ2hj8SbwkPvb2r8XpbH",
|
934
|
+
"targetCustody": "5JtPiHFmkb1nv1Qvs3sryLgXmjs8p5iQexAseC2Ljjzg",
|
935
|
+
"collateralCustody": "6fiadNoZVTha5NdaktZgJ3PHm7bncZpiqGvFbCsrUv72",
|
936
|
+
"side": "short",
|
937
|
+
"maxLev": 50,
|
938
|
+
"targetCustodyId": 6,
|
939
|
+
"collateralCustodyId": 0,
|
940
|
+
"targetMint": "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS",
|
941
|
+
"collateralMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
|
868
942
|
}
|
869
943
|
]
|
870
944
|
},
|
@@ -888,6 +962,13 @@
|
|
888
962
|
],
|
889
963
|
"backupOracle": "AjAubETeBLhebBxLcErmzbavZfqF9bCxkpRAdyJtoi9G",
|
890
964
|
"nftCollectionAddress": "H4EQ8pcE7PQSQGG1WYW4hAA1nizU6ULYipHZcYk9b64u",
|
965
|
+
"rewardDistributionProgram": {
|
966
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
967
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
968
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
969
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
970
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
971
|
+
},
|
891
972
|
"tokens": [
|
892
973
|
{
|
893
974
|
"symbol": "USDC",
|
@@ -995,6 +1076,13 @@
|
|
995
1076
|
],
|
996
1077
|
"backupOracle": "AjAubETeBLhebBxLcErmzbavZfqF9bCxkpRAdyJtoi9G",
|
997
1078
|
"nftCollectionAddress": "H4EQ8pcE7PQSQGG1WYW4hAA1nizU6ULYipHZcYk9b64u",
|
1079
|
+
"rewardDistributionProgram": {
|
1080
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
1081
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
1082
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
1083
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
1084
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
1085
|
+
},
|
998
1086
|
"tokens": [
|
999
1087
|
{
|
1000
1088
|
"symbol": "USDC",
|
@@ -1102,6 +1190,13 @@
|
|
1102
1190
|
],
|
1103
1191
|
"backupOracle": "AHaKsRB4tsGSzFfFqAxUpfRRmsUj5EhwHSxSXK2UGRp5",
|
1104
1192
|
"nftCollectionAddress": "3rkRzHdN7dXy5CQfX3Lz6UBBJ2F9n58VEpvDSmbaVHt9",
|
1193
|
+
"rewardDistributionProgram": {
|
1194
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
1195
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
1196
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
1197
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
1198
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
1199
|
+
},
|
1105
1200
|
"tokens": [
|
1106
1201
|
{
|
1107
1202
|
"symbol": "USDC",
|
@@ -1326,6 +1421,13 @@
|
|
1326
1421
|
],
|
1327
1422
|
"backupOracle": "AHaKsRB4tsGSzFfFqAxUpfRRmsUj5EhwHSxSXK2UGRp5",
|
1328
1423
|
"nftCollectionAddress": "3rkRzHdN7dXy5CQfX3Lz6UBBJ2F9n58VEpvDSmbaVHt9",
|
1424
|
+
"rewardDistributionProgram": {
|
1425
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
1426
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
1427
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
1428
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
1429
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
1430
|
+
},
|
1329
1431
|
"tokens": [
|
1330
1432
|
{
|
1331
1433
|
"symbol": "USDC",
|
@@ -1645,6 +1747,13 @@
|
|
1645
1747
|
],
|
1646
1748
|
"backupOracle": "AHaKsRB4tsGSzFfFqAxUpfRRmsUj5EhwHSxSXK2UGRp5",
|
1647
1749
|
"nftCollectionAddress": "3rkRzHdN7dXy5CQfX3Lz6UBBJ2F9n58VEpvDSmbaVHt9",
|
1750
|
+
"rewardDistributionProgram": {
|
1751
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
1752
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
1753
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
1754
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
1755
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
1756
|
+
},
|
1648
1757
|
"tokens": [
|
1649
1758
|
{
|
1650
1759
|
"symbol": "USDC",
|
@@ -2017,6 +2126,13 @@
|
|
2017
2126
|
],
|
2018
2127
|
"backupOracle": "AHaKsRB4tsGSzFfFqAxUpfRRmsUj5EhwHSxSXK2UGRp5",
|
2019
2128
|
"nftCollectionAddress": "3rkRzHdN7dXy5CQfX3Lz6UBBJ2F9n58VEpvDSmbaVHt9",
|
2129
|
+
"rewardDistributionProgram": {
|
2130
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
2131
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
2132
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
2133
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
2134
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
2135
|
+
},
|
2020
2136
|
"tokens": [
|
2021
2137
|
{
|
2022
2138
|
"symbol": "USDC",
|
@@ -2124,6 +2240,13 @@
|
|
2124
2240
|
],
|
2125
2241
|
"backupOracle": "AHaKsRB4tsGSzFfFqAxUpfRRmsUj5EhwHSxSXK2UGRp5",
|
2126
2242
|
"nftCollectionAddress": "3rkRzHdN7dXy5CQfX3Lz6UBBJ2F9n58VEpvDSmbaVHt9",
|
2243
|
+
"rewardDistributionProgram": {
|
2244
|
+
"programId": "FARTfzmezUtejeF42vfyvX96NWq1BuAcXFiAQuz6wZZg",
|
2245
|
+
"transferAuthority": "4cgNvcrPFxmgJVyQNJqM8Sb6eJnDktr5mWA3gSkdNcyT",
|
2246
|
+
"rewardVault": "DrXUtn8BRUYAo1i3ZTkPRXqU7w2KGbCjiskzH8wGExGK",
|
2247
|
+
"rewardMint": "Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr",
|
2248
|
+
"rewardTokenAccount": "6X9LbFxtvjGxBEgHiE3KLQjJtAqkThqrhCufLhrPfMEp"
|
2249
|
+
},
|
2127
2250
|
"tokens": [
|
2128
2251
|
{
|
2129
2252
|
"symbol": "USDC",
|