@exponent-labs/exponent-sdk 0.9.0 → 0.9.1
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/client/vaults/index.d.ts +2 -0
- package/build/client/vaults/index.js +2 -0
- package/build/client/vaults/index.js.map +1 -1
- package/build/client/vaults/types/index.d.ts +2 -0
- package/build/client/vaults/types/index.js +2 -0
- package/build/client/vaults/types/index.js.map +1 -1
- package/build/client/vaults/types/kaminoFarmEntry.d.ts +15 -0
- package/build/client/vaults/types/kaminoFarmEntry.js +17 -0
- package/build/client/vaults/types/kaminoFarmEntry.js.map +1 -0
- package/build/client/vaults/types/kaminoObligationEntry.d.ts +24 -7
- package/build/client/vaults/types/kaminoObligationEntry.js +2 -1
- package/build/client/vaults/types/kaminoObligationEntry.js.map +1 -1
- package/build/client/vaults/types/obligationType.d.ts +1 -1
- package/build/client/vaults/types/positionUpdate.d.ts +9 -0
- package/build/client/vaults/types/positionUpdate.js +23 -0
- package/build/client/vaults/types/positionUpdate.js.map +1 -1
- package/build/client/vaults/types/proposalAction.d.ts +54 -54
- package/build/client/vaults/types/proposalAction.js +0 -3
- package/build/client/vaults/types/proposalAction.js.map +1 -1
- package/build/client/vaults/types/reserveFarmMapping.d.ts +19 -0
- package/build/client/vaults/types/reserveFarmMapping.js +18 -0
- package/build/client/vaults/types/reserveFarmMapping.js.map +1 -0
- package/build/client/vaults/types/strategyPosition.d.ts +6 -1
- package/build/client/vaults/types/strategyPosition.js +5 -0
- package/build/client/vaults/types/strategyPosition.js.map +1 -1
- package/build/exponentVaults/aumCalculator.d.ts +25 -4
- package/build/exponentVaults/aumCalculator.js +236 -15
- package/build/exponentVaults/aumCalculator.js.map +1 -1
- package/build/exponentVaults/fetcher.d.ts +52 -0
- package/build/exponentVaults/fetcher.js +199 -0
- package/build/exponentVaults/fetcher.js.map +1 -0
- package/build/exponentVaults/index.d.ts +10 -9
- package/build/exponentVaults/index.js +25 -8
- package/build/exponentVaults/index.js.map +1 -1
- package/build/exponentVaults/kamino-farms.d.ts +144 -0
- package/build/exponentVaults/kamino-farms.js +396 -0
- package/build/exponentVaults/kamino-farms.js.map +1 -0
- package/build/exponentVaults/loopscale/client.d.ts +240 -0
- package/build/exponentVaults/loopscale/client.js +590 -0
- package/build/exponentVaults/loopscale/client.js.map +1 -0
- package/build/exponentVaults/loopscale/client.test.d.ts +1 -0
- package/build/exponentVaults/loopscale/client.test.js +183 -0
- package/build/exponentVaults/loopscale/client.test.js.map +1 -0
- package/build/exponentVaults/loopscale/helpers.d.ts +29 -0
- package/build/exponentVaults/loopscale/helpers.js +119 -0
- package/build/exponentVaults/loopscale/helpers.js.map +1 -0
- package/build/exponentVaults/loopscale/index.d.ts +3 -0
- package/build/exponentVaults/loopscale/index.js +12 -0
- package/build/exponentVaults/loopscale/index.js.map +1 -0
- package/build/exponentVaults/loopscale/prepared-transactions.d.ts +13 -0
- package/build/exponentVaults/loopscale/prepared-transactions.js +271 -0
- package/build/exponentVaults/loopscale/prepared-transactions.js.map +1 -0
- package/build/exponentVaults/loopscale/prepared-transactions.test.d.ts +1 -0
- package/build/exponentVaults/loopscale/prepared-transactions.test.js +400 -0
- package/build/exponentVaults/loopscale/prepared-transactions.test.js.map +1 -0
- package/build/exponentVaults/loopscale/prepared-types.d.ts +62 -0
- package/build/exponentVaults/loopscale/prepared-types.js +3 -0
- package/build/exponentVaults/loopscale/prepared-types.js.map +1 -0
- package/build/exponentVaults/loopscale/response-plan.d.ts +69 -0
- package/build/exponentVaults/loopscale/response-plan.js +141 -0
- package/build/exponentVaults/loopscale/response-plan.js.map +1 -0
- package/build/exponentVaults/loopscale/response-plan.test.d.ts +1 -0
- package/build/exponentVaults/loopscale/response-plan.test.js +139 -0
- package/build/exponentVaults/loopscale/response-plan.test.js.map +1 -0
- package/build/exponentVaults/loopscale/send-plan.d.ts +75 -0
- package/build/exponentVaults/loopscale/send-plan.js +235 -0
- package/build/exponentVaults/loopscale/send-plan.js.map +1 -0
- package/build/exponentVaults/loopscale/types.d.ts +443 -0
- package/build/exponentVaults/loopscale/types.js +3 -0
- package/build/exponentVaults/loopscale/types.js.map +1 -0
- package/build/exponentVaults/loopscale-client.d.ts +113 -524
- package/build/exponentVaults/loopscale-client.js +296 -539
- package/build/exponentVaults/loopscale-client.js.map +1 -1
- package/build/exponentVaults/loopscale-client.test.d.ts +1 -0
- package/build/exponentVaults/loopscale-client.test.js +162 -0
- package/build/exponentVaults/loopscale-client.test.js.map +1 -0
- package/build/exponentVaults/loopscale-client.types.d.ts +425 -0
- package/build/exponentVaults/loopscale-client.types.js +3 -0
- package/build/exponentVaults/loopscale-client.types.js.map +1 -0
- package/build/exponentVaults/loopscale-execution.d.ts +125 -0
- package/build/exponentVaults/loopscale-execution.js +341 -0
- package/build/exponentVaults/loopscale-execution.js.map +1 -0
- package/build/exponentVaults/loopscale-execution.test.d.ts +1 -0
- package/build/exponentVaults/loopscale-execution.test.js +139 -0
- package/build/exponentVaults/loopscale-execution.test.js.map +1 -0
- package/build/exponentVaults/loopscale-vault.d.ts +115 -0
- package/build/exponentVaults/loopscale-vault.js +275 -0
- package/build/exponentVaults/loopscale-vault.js.map +1 -0
- package/build/exponentVaults/loopscale-vault.test.d.ts +1 -0
- package/build/exponentVaults/loopscale-vault.test.js +102 -0
- package/build/exponentVaults/loopscale-vault.test.js.map +1 -0
- package/build/exponentVaults/policyBuilders.d.ts +62 -0
- package/build/exponentVaults/policyBuilders.js +119 -2
- package/build/exponentVaults/policyBuilders.js.map +1 -1
- package/build/exponentVaults/pricePathResolver.d.ts +45 -0
- package/build/exponentVaults/pricePathResolver.js +198 -0
- package/build/exponentVaults/pricePathResolver.js.map +1 -0
- package/build/exponentVaults/pricePathResolver.test.d.ts +1 -0
- package/build/exponentVaults/pricePathResolver.test.js +369 -0
- package/build/exponentVaults/pricePathResolver.test.js.map +1 -0
- package/build/exponentVaults/syncTransaction.js +4 -1
- package/build/exponentVaults/syncTransaction.js.map +1 -1
- package/build/exponentVaults/titan-quote.js +170 -36
- package/build/exponentVaults/titan-quote.js.map +1 -1
- package/build/exponentVaults/vault-instruction-types.d.ts +363 -0
- package/build/exponentVaults/vault-instruction-types.js +128 -0
- package/build/exponentVaults/vault-instruction-types.js.map +1 -0
- package/build/exponentVaults/vault-interaction.d.ts +156 -313
- package/build/exponentVaults/vault-interaction.js +1581 -353
- package/build/exponentVaults/vault-interaction.js.map +1 -1
- package/build/exponentVaults/vault.d.ts +51 -2
- package/build/exponentVaults/vault.js +324 -48
- package/build/exponentVaults/vault.js.map +1 -1
- package/build/exponentVaults/vaultTransactionBuilder.d.ts +100 -134
- package/build/exponentVaults/vaultTransactionBuilder.js +359 -266
- package/build/exponentVaults/vaultTransactionBuilder.js.map +1 -1
- package/build/exponentVaults/vaultTransactionBuilder.test.d.ts +1 -0
- package/build/exponentVaults/vaultTransactionBuilder.test.js +214 -0
- package/build/exponentVaults/vaultTransactionBuilder.test.js.map +1 -0
- package/build/marketThree.d.ts +6 -2
- package/build/marketThree.js +10 -8
- package/build/marketThree.js.map +1 -1
- package/package.json +32 -32
- package/src/client/vaults/index.ts +2 -0
- package/src/client/vaults/types/index.ts +2 -0
- package/src/client/vaults/types/kaminoFarmEntry.ts +32 -0
- package/src/client/vaults/types/kaminoObligationEntry.ts +6 -3
- package/src/client/vaults/types/positionUpdate.ts +62 -0
- package/src/client/vaults/types/proposalAction.ts +0 -3
- package/src/client/vaults/types/reserveFarmMapping.ts +35 -0
- package/src/client/vaults/types/strategyPosition.ts +18 -1
- package/src/exponentVaults/aumCalculator.ts +353 -16
- package/src/exponentVaults/fetcher.ts +257 -0
- package/src/exponentVaults/index.ts +64 -40
- package/src/exponentVaults/kamino-farms.ts +538 -0
- package/src/exponentVaults/loopscale/client.ts +808 -0
- package/src/exponentVaults/loopscale/helpers.ts +172 -0
- package/src/exponentVaults/loopscale/index.ts +57 -0
- package/src/exponentVaults/loopscale/prepared-transactions.ts +435 -0
- package/src/exponentVaults/loopscale/prepared-types.ts +73 -0
- package/src/exponentVaults/loopscale/types.ts +466 -0
- package/src/exponentVaults/policyBuilders.ts +170 -0
- package/src/exponentVaults/pricePathResolver.test.ts +466 -0
- package/src/exponentVaults/pricePathResolver.ts +273 -0
- package/src/exponentVaults/syncTransaction.ts +6 -1
- package/src/exponentVaults/titan-quote.ts +231 -45
- package/src/exponentVaults/vault-instruction-types.ts +493 -0
- package/src/exponentVaults/vault-interaction.ts +2227 -636
- package/src/exponentVaults/vault.ts +474 -63
- package/src/exponentVaults/vaultTransactionBuilder.test.ts +256 -0
- package/src/exponentVaults/vaultTransactionBuilder.ts +555 -413
- package/src/marketThree.ts +14 -6
- package/src/exponentVaults/loopscale-client.ts +0 -1373
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exponentVaults/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAuC;AAA9B,sGAAA,aAAa,OAAA;AACtB,iCAMgB;AALd,+GAAA,sBAAsB,OAAA;AACtB,2GAAA,kBAAkB,OAAA;AAClB,gHAAA,uBAAuB,OAAA;AACvB,4GAAA,mBAAmB,OAAA;AACnB,iHAAA,wBAAwB,OAAA;AAE1B,iDAA6D;AAApD,8GAAA,aAAa,OAAA;AAAE,6GAAA,YAAY,OAAA;AAEpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exponentVaults/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { PublicKey } from "@solana/web3.js";
|
|
4
|
+
export declare const KAMINO_FARM_ACCOUNT_DISCRIMINATOR_LEN = 8;
|
|
5
|
+
export declare const KAMINO_FARM_GLOBAL_CONFIG_OFFSET = 32;
|
|
6
|
+
export declare const KAMINO_FARM_GLOBAL_CONFIG_TREASURY_FEE_BPS_OFFSET = 32;
|
|
7
|
+
export declare const KAMINO_FARM_TOKEN_MINT_OFFSET = 64;
|
|
8
|
+
export declare const KAMINO_FARM_TOKEN_PROGRAM_OFFSET = 104;
|
|
9
|
+
export declare const KAMINO_FARM_REWARD_INFOS_OFFSET = 184;
|
|
10
|
+
export declare const KAMINO_FARM_REWARD_INFO_SIZE = 704;
|
|
11
|
+
export declare const KAMINO_FARM_REWARD_TOKEN_MINT_OFFSET = 0;
|
|
12
|
+
export declare const KAMINO_FARM_REWARD_TOKEN_PROGRAM_OFFSET = 40;
|
|
13
|
+
export declare const KAMINO_FARM_REWARD_VAULT_OFFSET = 120;
|
|
14
|
+
export declare const KAMINO_FARM_REWARDS_AVAILABLE_OFFSET = 152;
|
|
15
|
+
export declare const KAMINO_FARM_REWARD_SCHEDULE_CURVE_OFFSET = 160;
|
|
16
|
+
export declare const KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINTS = 20;
|
|
17
|
+
export declare const KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINT_SIZE = 16;
|
|
18
|
+
export declare const KAMINO_FARM_LAST_ISSUANCE_TS_OFFSET = 488;
|
|
19
|
+
export declare const KAMINO_FARM_REWARDS_ISSUED_UNCLAIMED_OFFSET = 496;
|
|
20
|
+
export declare const KAMINO_FARM_REWARDS_ISSUED_CUMULATIVE_OFFSET = 504;
|
|
21
|
+
export declare const KAMINO_FARM_REWARD_PER_SHARE_SCALED_OFFSET = 512;
|
|
22
|
+
export declare const KAMINO_FARM_REWARD_TYPE_OFFSET = 536;
|
|
23
|
+
export declare const KAMINO_FARM_REWARDS_PER_SECOND_DECIMALS_OFFSET = 537;
|
|
24
|
+
export declare const KAMINO_FARM_NUM_REWARD_TOKENS_OFFSET = 7224;
|
|
25
|
+
export declare const KAMINO_FARM_TOTAL_STAKED_AMOUNT_OFFSET = 7240;
|
|
26
|
+
export declare const KAMINO_FARM_FARM_VAULT_OFFSET = 7248;
|
|
27
|
+
export declare const KAMINO_FARM_FARM_VAULTS_AUTHORITY_OFFSET = 7280;
|
|
28
|
+
export declare const KAMINO_FARM_FARM_VAULTS_AUTHORITY_BUMP_OFFSET = 7312;
|
|
29
|
+
export declare const KAMINO_FARM_DELEGATE_AUTHORITY_OFFSET = 7320;
|
|
30
|
+
export declare const KAMINO_FARM_TIME_UNIT_OFFSET = 7352;
|
|
31
|
+
export declare const KAMINO_FARM_IS_FARM_DELEGATED_OFFSET = 7354;
|
|
32
|
+
export declare const KAMINO_FARM_DEPOSIT_WARMUP_PERIOD_OFFSET = 7392;
|
|
33
|
+
export declare const KAMINO_FARM_WITHDRAWAL_COOLDOWN_PERIOD_OFFSET = 7396;
|
|
34
|
+
export declare const KAMINO_FARM_TOTAL_ACTIVE_STAKE_SCALED_OFFSET = 7400;
|
|
35
|
+
export declare const KAMINO_FARM_TOTAL_PENDING_STAKE_SCALED_OFFSET = 7416;
|
|
36
|
+
export declare const KAMINO_FARM_TOTAL_PENDING_AMOUNT_OFFSET = 7432;
|
|
37
|
+
export declare const KAMINO_FARM_SCOPE_PRICES_OFFSET = 7528;
|
|
38
|
+
export declare const KAMINO_FARM_SCOPE_ORACLE_PRICE_ID_OFFSET = 7560;
|
|
39
|
+
export declare const KAMINO_FARM_SCOPE_ORACLE_MAX_AGE_OFFSET = 7568;
|
|
40
|
+
export declare const KAMINO_FARM_USER_OWNER_OFFSET = 40;
|
|
41
|
+
export declare const KAMINO_FARM_USER_REWARDS_TALLY_SCALED_OFFSET = 80;
|
|
42
|
+
export declare const KAMINO_FARM_USER_REWARDS_ISSUED_UNCLAIMED_OFFSET = 240;
|
|
43
|
+
export declare const KAMINO_FARM_USER_LAST_CLAIM_TS_OFFSET = 320;
|
|
44
|
+
export declare const KAMINO_FARM_USER_ACTIVE_STAKE_SCALED_OFFSET = 400;
|
|
45
|
+
export declare const KAMINO_FARM_USER_PENDING_DEPOSIT_STAKE_SCALED_OFFSET = 416;
|
|
46
|
+
export declare const KAMINO_FARM_USER_PENDING_WITHDRAWAL_UNSTAKE_SCALED_OFFSET = 440;
|
|
47
|
+
export declare const KAMINO_FARM_USER_DELEGATEE_OFFSET = 472;
|
|
48
|
+
export declare const KAMINO_SCOPE_ACCOUNT_DISCRIMINATOR_LEN = 8;
|
|
49
|
+
export declare const KAMINO_SCOPE_ORACLE_PRICES_ARRAY_OFFSET = 32;
|
|
50
|
+
export declare const KAMINO_SCOPE_DATED_PRICE_SIZE = 56;
|
|
51
|
+
export declare const KAMINO_SCOPE_PRICE_VALUE_OFFSET = 0;
|
|
52
|
+
export declare const KAMINO_SCOPE_PRICE_EXP_OFFSET = 8;
|
|
53
|
+
export declare const KAMINO_SCOPE_LAST_UPDATED_SLOT_OFFSET = 16;
|
|
54
|
+
export declare const KAMINO_SCOPE_UNIX_TIMESTAMP_OFFSET = 24;
|
|
55
|
+
export declare enum KaminoFarmTimeUnit {
|
|
56
|
+
Seconds = 0,
|
|
57
|
+
Slots = 1
|
|
58
|
+
}
|
|
59
|
+
export declare enum KaminoFarmRewardType {
|
|
60
|
+
Proportional = 0,
|
|
61
|
+
Constant = 1
|
|
62
|
+
}
|
|
63
|
+
export type KaminoFarmRewardSchedulePoint = {
|
|
64
|
+
tsStart: bigint;
|
|
65
|
+
rewardPerTimeUnit: bigint;
|
|
66
|
+
};
|
|
67
|
+
export type KaminoFarmRewardInfoView = {
|
|
68
|
+
rewardMint: PublicKey;
|
|
69
|
+
tokenProgram: PublicKey;
|
|
70
|
+
rewardsVault: PublicKey;
|
|
71
|
+
rewardsAvailable: bigint;
|
|
72
|
+
rewardScheduleCurve: KaminoFarmRewardSchedulePoint[];
|
|
73
|
+
lastIssuanceTs: bigint;
|
|
74
|
+
rewardsIssuedUnclaimed: bigint;
|
|
75
|
+
rewardsIssuedCumulative: bigint;
|
|
76
|
+
rewardPerShareScaled: bigint;
|
|
77
|
+
rewardType: KaminoFarmRewardType;
|
|
78
|
+
rewardsPerSecondDecimals: number;
|
|
79
|
+
};
|
|
80
|
+
export type KaminoFarmStateView = {
|
|
81
|
+
globalConfig: PublicKey;
|
|
82
|
+
underlyingMint: PublicKey;
|
|
83
|
+
tokenProgram: PublicKey;
|
|
84
|
+
farmVault: PublicKey;
|
|
85
|
+
farmVaultsAuthority: PublicKey;
|
|
86
|
+
farmVaultsAuthorityBump: bigint;
|
|
87
|
+
delegateAuthority: PublicKey;
|
|
88
|
+
timeUnit: KaminoFarmTimeUnit;
|
|
89
|
+
isDelegated: boolean;
|
|
90
|
+
depositWarmupPeriod: number;
|
|
91
|
+
withdrawalCooldownPeriod: number;
|
|
92
|
+
totalStakedAmount: bigint;
|
|
93
|
+
totalActiveStakeScaled: bigint;
|
|
94
|
+
totalPendingStakeScaled: bigint;
|
|
95
|
+
totalPendingAmount: bigint;
|
|
96
|
+
numRewardTokens: number;
|
|
97
|
+
scopePrices: PublicKey;
|
|
98
|
+
scopeOraclePriceId: bigint;
|
|
99
|
+
scopeOracleMaxAge: bigint;
|
|
100
|
+
rewardInfos: KaminoFarmRewardInfoView[];
|
|
101
|
+
};
|
|
102
|
+
export type KaminoFarmUserStateView = {
|
|
103
|
+
owner: PublicKey;
|
|
104
|
+
rewardsTallyScaled: bigint[];
|
|
105
|
+
rewardsIssuedUnclaimed: bigint[];
|
|
106
|
+
lastClaimTs: bigint[];
|
|
107
|
+
activeStakeScaled: bigint;
|
|
108
|
+
pendingDepositStakeScaled: bigint;
|
|
109
|
+
pendingWithdrawalUnstakeScaled: bigint;
|
|
110
|
+
delegatee: PublicKey;
|
|
111
|
+
};
|
|
112
|
+
export type KaminoScopeDatedPrice = {
|
|
113
|
+
value: bigint;
|
|
114
|
+
exp: bigint;
|
|
115
|
+
lastUpdatedSlot: bigint;
|
|
116
|
+
unixTimestamp: bigint;
|
|
117
|
+
};
|
|
118
|
+
export type KaminoFarmProjectedRewards = {
|
|
119
|
+
projectedRewardInfos: KaminoFarmRewardInfoView[];
|
|
120
|
+
projectedRewardsTallyScaled: bigint[];
|
|
121
|
+
projectedRewardsIssuedUnclaimed: bigint[];
|
|
122
|
+
};
|
|
123
|
+
export declare function readU128LE(data: Buffer, offset: number): bigint;
|
|
124
|
+
export declare function decodeKaminoFarmState(data: Buffer): KaminoFarmStateView;
|
|
125
|
+
export declare function decodeKaminoFarmUserState(data: Buffer): KaminoFarmUserStateView;
|
|
126
|
+
export declare function decodeKaminoScopeDatedPrice(data: Buffer, priceId: bigint): KaminoScopeDatedPrice;
|
|
127
|
+
export declare function kaminoFarmUsesScopeOracle(farm: KaminoFarmStateView): boolean;
|
|
128
|
+
export declare function getKaminoFarmScopePricesAddress(farm: KaminoFarmStateView): PublicKey | null;
|
|
129
|
+
export declare function convertKaminoStakeToAmount(stake: bigint, totalStake: bigint, totalAmount: bigint): bigint;
|
|
130
|
+
export declare function calculateKaminoFarmPrincipalAmount(farm: KaminoFarmStateView, user: KaminoFarmUserStateView): bigint;
|
|
131
|
+
export declare function projectKaminoFarmGlobalReward(farm: KaminoFarmStateView, rewardInfo: KaminoFarmRewardInfoView, scopePrice: KaminoScopeDatedPrice | null, params: {
|
|
132
|
+
currentSlot: bigint;
|
|
133
|
+
currentUnixTimestamp: bigint;
|
|
134
|
+
}): KaminoFarmRewardInfoView;
|
|
135
|
+
export declare function projectKaminoFarmGlobalRewards(farm: KaminoFarmStateView, scopePrice: KaminoScopeDatedPrice | null, params: {
|
|
136
|
+
currentSlot: bigint;
|
|
137
|
+
currentUnixTimestamp: bigint;
|
|
138
|
+
}): KaminoFarmRewardInfoView[];
|
|
139
|
+
export declare function projectKaminoFarmUserReward(farm: KaminoFarmStateView, user: KaminoFarmUserStateView, rewardInfo: KaminoFarmRewardInfoView, rewardIndex: number): {
|
|
140
|
+
rewardsTallyScaled: bigint;
|
|
141
|
+
rewardsIssuedUnclaimed: bigint;
|
|
142
|
+
};
|
|
143
|
+
export declare function projectKaminoFarmUserRewards(farm: KaminoFarmStateView, user: KaminoFarmUserStateView, projectedRewardInfos: KaminoFarmRewardInfoView[]): KaminoFarmProjectedRewards;
|
|
144
|
+
export declare function applyKaminoFarmTreasuryFee(reward: bigint, treasuryFeeBps: bigint): bigint;
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KAMINO_SCOPE_LAST_UPDATED_SLOT_OFFSET = exports.KAMINO_SCOPE_PRICE_EXP_OFFSET = exports.KAMINO_SCOPE_PRICE_VALUE_OFFSET = exports.KAMINO_SCOPE_DATED_PRICE_SIZE = exports.KAMINO_SCOPE_ORACLE_PRICES_ARRAY_OFFSET = exports.KAMINO_SCOPE_ACCOUNT_DISCRIMINATOR_LEN = exports.KAMINO_FARM_USER_DELEGATEE_OFFSET = exports.KAMINO_FARM_USER_PENDING_WITHDRAWAL_UNSTAKE_SCALED_OFFSET = exports.KAMINO_FARM_USER_PENDING_DEPOSIT_STAKE_SCALED_OFFSET = exports.KAMINO_FARM_USER_ACTIVE_STAKE_SCALED_OFFSET = exports.KAMINO_FARM_USER_LAST_CLAIM_TS_OFFSET = exports.KAMINO_FARM_USER_REWARDS_ISSUED_UNCLAIMED_OFFSET = exports.KAMINO_FARM_USER_REWARDS_TALLY_SCALED_OFFSET = exports.KAMINO_FARM_USER_OWNER_OFFSET = exports.KAMINO_FARM_SCOPE_ORACLE_MAX_AGE_OFFSET = exports.KAMINO_FARM_SCOPE_ORACLE_PRICE_ID_OFFSET = exports.KAMINO_FARM_SCOPE_PRICES_OFFSET = exports.KAMINO_FARM_TOTAL_PENDING_AMOUNT_OFFSET = exports.KAMINO_FARM_TOTAL_PENDING_STAKE_SCALED_OFFSET = exports.KAMINO_FARM_TOTAL_ACTIVE_STAKE_SCALED_OFFSET = exports.KAMINO_FARM_WITHDRAWAL_COOLDOWN_PERIOD_OFFSET = exports.KAMINO_FARM_DEPOSIT_WARMUP_PERIOD_OFFSET = exports.KAMINO_FARM_IS_FARM_DELEGATED_OFFSET = exports.KAMINO_FARM_TIME_UNIT_OFFSET = exports.KAMINO_FARM_DELEGATE_AUTHORITY_OFFSET = exports.KAMINO_FARM_FARM_VAULTS_AUTHORITY_BUMP_OFFSET = exports.KAMINO_FARM_FARM_VAULTS_AUTHORITY_OFFSET = exports.KAMINO_FARM_FARM_VAULT_OFFSET = exports.KAMINO_FARM_TOTAL_STAKED_AMOUNT_OFFSET = exports.KAMINO_FARM_NUM_REWARD_TOKENS_OFFSET = exports.KAMINO_FARM_REWARDS_PER_SECOND_DECIMALS_OFFSET = exports.KAMINO_FARM_REWARD_TYPE_OFFSET = exports.KAMINO_FARM_REWARD_PER_SHARE_SCALED_OFFSET = exports.KAMINO_FARM_REWARDS_ISSUED_CUMULATIVE_OFFSET = exports.KAMINO_FARM_REWARDS_ISSUED_UNCLAIMED_OFFSET = exports.KAMINO_FARM_LAST_ISSUANCE_TS_OFFSET = exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINT_SIZE = exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINTS = exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_OFFSET = exports.KAMINO_FARM_REWARDS_AVAILABLE_OFFSET = exports.KAMINO_FARM_REWARD_VAULT_OFFSET = exports.KAMINO_FARM_REWARD_TOKEN_PROGRAM_OFFSET = exports.KAMINO_FARM_REWARD_TOKEN_MINT_OFFSET = exports.KAMINO_FARM_REWARD_INFO_SIZE = exports.KAMINO_FARM_REWARD_INFOS_OFFSET = exports.KAMINO_FARM_TOKEN_PROGRAM_OFFSET = exports.KAMINO_FARM_TOKEN_MINT_OFFSET = exports.KAMINO_FARM_GLOBAL_CONFIG_TREASURY_FEE_BPS_OFFSET = exports.KAMINO_FARM_GLOBAL_CONFIG_OFFSET = exports.KAMINO_FARM_ACCOUNT_DISCRIMINATOR_LEN = void 0;
|
|
4
|
+
exports.applyKaminoFarmTreasuryFee = exports.projectKaminoFarmUserRewards = exports.projectKaminoFarmUserReward = exports.projectKaminoFarmGlobalRewards = exports.projectKaminoFarmGlobalReward = exports.calculateKaminoFarmPrincipalAmount = exports.convertKaminoStakeToAmount = exports.getKaminoFarmScopePricesAddress = exports.kaminoFarmUsesScopeOracle = exports.decodeKaminoScopeDatedPrice = exports.decodeKaminoFarmUserState = exports.decodeKaminoFarmState = exports.readU128LE = exports.KaminoFarmRewardType = exports.KaminoFarmTimeUnit = exports.KAMINO_SCOPE_UNIX_TIMESTAMP_OFFSET = void 0;
|
|
5
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
+
const U64_MAX = 18446744073709551615n;
|
|
7
|
+
const DECIMAL_WAD = 1000000000000000000n;
|
|
8
|
+
const BPS_DIV_FACTOR = 10000n;
|
|
9
|
+
const DEFAULT_PUBLIC_KEY = web3_js_1.PublicKey.default;
|
|
10
|
+
exports.KAMINO_FARM_ACCOUNT_DISCRIMINATOR_LEN = 8;
|
|
11
|
+
exports.KAMINO_FARM_GLOBAL_CONFIG_OFFSET = 32;
|
|
12
|
+
exports.KAMINO_FARM_GLOBAL_CONFIG_TREASURY_FEE_BPS_OFFSET = 32;
|
|
13
|
+
exports.KAMINO_FARM_TOKEN_MINT_OFFSET = 64;
|
|
14
|
+
exports.KAMINO_FARM_TOKEN_PROGRAM_OFFSET = 104;
|
|
15
|
+
exports.KAMINO_FARM_REWARD_INFOS_OFFSET = 184;
|
|
16
|
+
exports.KAMINO_FARM_REWARD_INFO_SIZE = 704;
|
|
17
|
+
exports.KAMINO_FARM_REWARD_TOKEN_MINT_OFFSET = 0;
|
|
18
|
+
exports.KAMINO_FARM_REWARD_TOKEN_PROGRAM_OFFSET = 40;
|
|
19
|
+
exports.KAMINO_FARM_REWARD_VAULT_OFFSET = 120;
|
|
20
|
+
exports.KAMINO_FARM_REWARDS_AVAILABLE_OFFSET = 152;
|
|
21
|
+
exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_OFFSET = 160;
|
|
22
|
+
exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINTS = 20;
|
|
23
|
+
exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINT_SIZE = 16;
|
|
24
|
+
exports.KAMINO_FARM_LAST_ISSUANCE_TS_OFFSET = 488;
|
|
25
|
+
exports.KAMINO_FARM_REWARDS_ISSUED_UNCLAIMED_OFFSET = 496;
|
|
26
|
+
exports.KAMINO_FARM_REWARDS_ISSUED_CUMULATIVE_OFFSET = 504;
|
|
27
|
+
exports.KAMINO_FARM_REWARD_PER_SHARE_SCALED_OFFSET = 512;
|
|
28
|
+
exports.KAMINO_FARM_REWARD_TYPE_OFFSET = 536;
|
|
29
|
+
exports.KAMINO_FARM_REWARDS_PER_SECOND_DECIMALS_OFFSET = 537;
|
|
30
|
+
exports.KAMINO_FARM_NUM_REWARD_TOKENS_OFFSET = 7224;
|
|
31
|
+
exports.KAMINO_FARM_TOTAL_STAKED_AMOUNT_OFFSET = 7240;
|
|
32
|
+
exports.KAMINO_FARM_FARM_VAULT_OFFSET = 7248;
|
|
33
|
+
exports.KAMINO_FARM_FARM_VAULTS_AUTHORITY_OFFSET = 7280;
|
|
34
|
+
exports.KAMINO_FARM_FARM_VAULTS_AUTHORITY_BUMP_OFFSET = 7312;
|
|
35
|
+
exports.KAMINO_FARM_DELEGATE_AUTHORITY_OFFSET = 7320;
|
|
36
|
+
exports.KAMINO_FARM_TIME_UNIT_OFFSET = 7352;
|
|
37
|
+
exports.KAMINO_FARM_IS_FARM_DELEGATED_OFFSET = 7354;
|
|
38
|
+
exports.KAMINO_FARM_DEPOSIT_WARMUP_PERIOD_OFFSET = 7392;
|
|
39
|
+
exports.KAMINO_FARM_WITHDRAWAL_COOLDOWN_PERIOD_OFFSET = 7396;
|
|
40
|
+
exports.KAMINO_FARM_TOTAL_ACTIVE_STAKE_SCALED_OFFSET = 7400;
|
|
41
|
+
exports.KAMINO_FARM_TOTAL_PENDING_STAKE_SCALED_OFFSET = 7416;
|
|
42
|
+
exports.KAMINO_FARM_TOTAL_PENDING_AMOUNT_OFFSET = 7432;
|
|
43
|
+
exports.KAMINO_FARM_SCOPE_PRICES_OFFSET = 7528;
|
|
44
|
+
exports.KAMINO_FARM_SCOPE_ORACLE_PRICE_ID_OFFSET = 7560;
|
|
45
|
+
exports.KAMINO_FARM_SCOPE_ORACLE_MAX_AGE_OFFSET = 7568;
|
|
46
|
+
exports.KAMINO_FARM_USER_OWNER_OFFSET = 40;
|
|
47
|
+
exports.KAMINO_FARM_USER_REWARDS_TALLY_SCALED_OFFSET = 80;
|
|
48
|
+
exports.KAMINO_FARM_USER_REWARDS_ISSUED_UNCLAIMED_OFFSET = 240;
|
|
49
|
+
exports.KAMINO_FARM_USER_LAST_CLAIM_TS_OFFSET = 320;
|
|
50
|
+
exports.KAMINO_FARM_USER_ACTIVE_STAKE_SCALED_OFFSET = 400;
|
|
51
|
+
exports.KAMINO_FARM_USER_PENDING_DEPOSIT_STAKE_SCALED_OFFSET = 416;
|
|
52
|
+
exports.KAMINO_FARM_USER_PENDING_WITHDRAWAL_UNSTAKE_SCALED_OFFSET = 440;
|
|
53
|
+
exports.KAMINO_FARM_USER_DELEGATEE_OFFSET = 472;
|
|
54
|
+
exports.KAMINO_SCOPE_ACCOUNT_DISCRIMINATOR_LEN = 8;
|
|
55
|
+
exports.KAMINO_SCOPE_ORACLE_PRICES_ARRAY_OFFSET = 32;
|
|
56
|
+
exports.KAMINO_SCOPE_DATED_PRICE_SIZE = 56;
|
|
57
|
+
exports.KAMINO_SCOPE_PRICE_VALUE_OFFSET = 0;
|
|
58
|
+
exports.KAMINO_SCOPE_PRICE_EXP_OFFSET = 8;
|
|
59
|
+
exports.KAMINO_SCOPE_LAST_UPDATED_SLOT_OFFSET = 16;
|
|
60
|
+
exports.KAMINO_SCOPE_UNIX_TIMESTAMP_OFFSET = 24;
|
|
61
|
+
var KaminoFarmTimeUnit;
|
|
62
|
+
(function (KaminoFarmTimeUnit) {
|
|
63
|
+
KaminoFarmTimeUnit[KaminoFarmTimeUnit["Seconds"] = 0] = "Seconds";
|
|
64
|
+
KaminoFarmTimeUnit[KaminoFarmTimeUnit["Slots"] = 1] = "Slots";
|
|
65
|
+
})(KaminoFarmTimeUnit || (exports.KaminoFarmTimeUnit = KaminoFarmTimeUnit = {}));
|
|
66
|
+
var KaminoFarmRewardType;
|
|
67
|
+
(function (KaminoFarmRewardType) {
|
|
68
|
+
KaminoFarmRewardType[KaminoFarmRewardType["Proportional"] = 0] = "Proportional";
|
|
69
|
+
KaminoFarmRewardType[KaminoFarmRewardType["Constant"] = 1] = "Constant";
|
|
70
|
+
})(KaminoFarmRewardType || (exports.KaminoFarmRewardType = KaminoFarmRewardType = {}));
|
|
71
|
+
function readPubkey(data, offset) {
|
|
72
|
+
return new web3_js_1.PublicKey(data.subarray(offset, offset + 32));
|
|
73
|
+
}
|
|
74
|
+
function readU64LE(data, offset) {
|
|
75
|
+
return data.readBigUInt64LE(offset);
|
|
76
|
+
}
|
|
77
|
+
function readU128LE(data, offset) {
|
|
78
|
+
return data.readBigUInt64LE(offset) + (data.readBigUInt64LE(offset + 8) << 64n);
|
|
79
|
+
}
|
|
80
|
+
exports.readU128LE = readU128LE;
|
|
81
|
+
function tenPow(exp) {
|
|
82
|
+
const POWERS = [
|
|
83
|
+
1n,
|
|
84
|
+
10n,
|
|
85
|
+
100n,
|
|
86
|
+
1000n,
|
|
87
|
+
10000n,
|
|
88
|
+
100000n,
|
|
89
|
+
1000000n,
|
|
90
|
+
10000000n,
|
|
91
|
+
100000000n,
|
|
92
|
+
1000000000n,
|
|
93
|
+
10000000000n,
|
|
94
|
+
100000000000n,
|
|
95
|
+
1000000000000n,
|
|
96
|
+
10000000000000n,
|
|
97
|
+
100000000000000n,
|
|
98
|
+
1000000000000000n,
|
|
99
|
+
10000000000000000n,
|
|
100
|
+
100000000000000000n,
|
|
101
|
+
1000000000000000000n,
|
|
102
|
+
10000000000000000000n,
|
|
103
|
+
];
|
|
104
|
+
if (exp < 0 || exp >= POWERS.length) {
|
|
105
|
+
throw new Error(`Invalid power-of-ten exponent ${exp}`);
|
|
106
|
+
}
|
|
107
|
+
return POWERS[exp];
|
|
108
|
+
}
|
|
109
|
+
function decodeKaminoFarmState(data) {
|
|
110
|
+
const base = exports.KAMINO_FARM_ACCOUNT_DISCRIMINATOR_LEN;
|
|
111
|
+
const numRewardTokens = Number(readU64LE(data, base + exports.KAMINO_FARM_NUM_REWARD_TOKENS_OFFSET));
|
|
112
|
+
if (numRewardTokens < 0 || numRewardTokens > 10) {
|
|
113
|
+
throw new Error(`Invalid Kamino farm reward count: ${numRewardTokens}`);
|
|
114
|
+
}
|
|
115
|
+
const rewardInfos = [];
|
|
116
|
+
for (let i = 0; i < numRewardTokens; i += 1) {
|
|
117
|
+
const rewardBase = base + exports.KAMINO_FARM_REWARD_INFOS_OFFSET + (i * exports.KAMINO_FARM_REWARD_INFO_SIZE);
|
|
118
|
+
const rewardScheduleCurve = [];
|
|
119
|
+
for (let pointIndex = 0; pointIndex < exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINTS; pointIndex += 1) {
|
|
120
|
+
const pointBase = rewardBase
|
|
121
|
+
+ exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_OFFSET
|
|
122
|
+
+ (pointIndex * exports.KAMINO_FARM_REWARD_SCHEDULE_CURVE_POINT_SIZE);
|
|
123
|
+
rewardScheduleCurve.push({
|
|
124
|
+
tsStart: readU64LE(data, pointBase),
|
|
125
|
+
rewardPerTimeUnit: readU64LE(data, pointBase + 8),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
rewardInfos.push({
|
|
129
|
+
rewardMint: readPubkey(data, rewardBase + exports.KAMINO_FARM_REWARD_TOKEN_MINT_OFFSET),
|
|
130
|
+
tokenProgram: readPubkey(data, rewardBase + exports.KAMINO_FARM_REWARD_TOKEN_PROGRAM_OFFSET),
|
|
131
|
+
rewardsVault: readPubkey(data, rewardBase + exports.KAMINO_FARM_REWARD_VAULT_OFFSET),
|
|
132
|
+
rewardsAvailable: readU64LE(data, rewardBase + exports.KAMINO_FARM_REWARDS_AVAILABLE_OFFSET),
|
|
133
|
+
rewardScheduleCurve,
|
|
134
|
+
lastIssuanceTs: readU64LE(data, rewardBase + exports.KAMINO_FARM_LAST_ISSUANCE_TS_OFFSET),
|
|
135
|
+
rewardsIssuedUnclaimed: readU64LE(data, rewardBase + exports.KAMINO_FARM_REWARDS_ISSUED_UNCLAIMED_OFFSET),
|
|
136
|
+
rewardsIssuedCumulative: readU64LE(data, rewardBase + exports.KAMINO_FARM_REWARDS_ISSUED_CUMULATIVE_OFFSET),
|
|
137
|
+
rewardPerShareScaled: readU128LE(data, rewardBase + exports.KAMINO_FARM_REWARD_PER_SHARE_SCALED_OFFSET),
|
|
138
|
+
rewardType: data[rewardBase + exports.KAMINO_FARM_REWARD_TYPE_OFFSET],
|
|
139
|
+
rewardsPerSecondDecimals: data[rewardBase + exports.KAMINO_FARM_REWARDS_PER_SECOND_DECIMALS_OFFSET],
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
const delegateAuthority = readPubkey(data, base + exports.KAMINO_FARM_DELEGATE_AUTHORITY_OFFSET);
|
|
143
|
+
return {
|
|
144
|
+
globalConfig: readPubkey(data, base + exports.KAMINO_FARM_GLOBAL_CONFIG_OFFSET),
|
|
145
|
+
underlyingMint: readPubkey(data, base + exports.KAMINO_FARM_TOKEN_MINT_OFFSET),
|
|
146
|
+
tokenProgram: readPubkey(data, base + exports.KAMINO_FARM_TOKEN_PROGRAM_OFFSET),
|
|
147
|
+
farmVault: readPubkey(data, base + exports.KAMINO_FARM_FARM_VAULT_OFFSET),
|
|
148
|
+
farmVaultsAuthority: readPubkey(data, base + exports.KAMINO_FARM_FARM_VAULTS_AUTHORITY_OFFSET),
|
|
149
|
+
farmVaultsAuthorityBump: readU64LE(data, base + exports.KAMINO_FARM_FARM_VAULTS_AUTHORITY_BUMP_OFFSET),
|
|
150
|
+
delegateAuthority,
|
|
151
|
+
timeUnit: data[base + exports.KAMINO_FARM_TIME_UNIT_OFFSET],
|
|
152
|
+
isDelegated: data[base + exports.KAMINO_FARM_IS_FARM_DELEGATED_OFFSET] !== 0
|
|
153
|
+
|| !delegateAuthority.equals(DEFAULT_PUBLIC_KEY),
|
|
154
|
+
depositWarmupPeriod: data.readUInt32LE(base + exports.KAMINO_FARM_DEPOSIT_WARMUP_PERIOD_OFFSET),
|
|
155
|
+
withdrawalCooldownPeriod: data.readUInt32LE(base + exports.KAMINO_FARM_WITHDRAWAL_COOLDOWN_PERIOD_OFFSET),
|
|
156
|
+
totalStakedAmount: readU64LE(data, base + exports.KAMINO_FARM_TOTAL_STAKED_AMOUNT_OFFSET),
|
|
157
|
+
totalActiveStakeScaled: readU128LE(data, base + exports.KAMINO_FARM_TOTAL_ACTIVE_STAKE_SCALED_OFFSET),
|
|
158
|
+
totalPendingStakeScaled: readU128LE(data, base + exports.KAMINO_FARM_TOTAL_PENDING_STAKE_SCALED_OFFSET),
|
|
159
|
+
totalPendingAmount: readU64LE(data, base + exports.KAMINO_FARM_TOTAL_PENDING_AMOUNT_OFFSET),
|
|
160
|
+
numRewardTokens,
|
|
161
|
+
scopePrices: readPubkey(data, base + exports.KAMINO_FARM_SCOPE_PRICES_OFFSET),
|
|
162
|
+
scopeOraclePriceId: readU64LE(data, base + exports.KAMINO_FARM_SCOPE_ORACLE_PRICE_ID_OFFSET),
|
|
163
|
+
scopeOracleMaxAge: readU64LE(data, base + exports.KAMINO_FARM_SCOPE_ORACLE_MAX_AGE_OFFSET),
|
|
164
|
+
rewardInfos,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
exports.decodeKaminoFarmState = decodeKaminoFarmState;
|
|
168
|
+
function decodeKaminoFarmUserState(data) {
|
|
169
|
+
const base = exports.KAMINO_FARM_ACCOUNT_DISCRIMINATOR_LEN;
|
|
170
|
+
const rewardsTallyScaled = [];
|
|
171
|
+
const rewardsIssuedUnclaimed = [];
|
|
172
|
+
const lastClaimTs = [];
|
|
173
|
+
for (let i = 0; i < 10; i += 1) {
|
|
174
|
+
rewardsTallyScaled.push(readU128LE(data, base + exports.KAMINO_FARM_USER_REWARDS_TALLY_SCALED_OFFSET + (i * 16)));
|
|
175
|
+
rewardsIssuedUnclaimed.push(readU64LE(data, base + exports.KAMINO_FARM_USER_REWARDS_ISSUED_UNCLAIMED_OFFSET + (i * 8)));
|
|
176
|
+
lastClaimTs.push(readU64LE(data, base + exports.KAMINO_FARM_USER_LAST_CLAIM_TS_OFFSET + (i * 8)));
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
owner: readPubkey(data, base + exports.KAMINO_FARM_USER_OWNER_OFFSET),
|
|
180
|
+
rewardsTallyScaled,
|
|
181
|
+
rewardsIssuedUnclaimed,
|
|
182
|
+
lastClaimTs,
|
|
183
|
+
activeStakeScaled: readU128LE(data, base + exports.KAMINO_FARM_USER_ACTIVE_STAKE_SCALED_OFFSET),
|
|
184
|
+
pendingDepositStakeScaled: readU128LE(data, base + exports.KAMINO_FARM_USER_PENDING_DEPOSIT_STAKE_SCALED_OFFSET),
|
|
185
|
+
pendingWithdrawalUnstakeScaled: readU128LE(data, base + exports.KAMINO_FARM_USER_PENDING_WITHDRAWAL_UNSTAKE_SCALED_OFFSET),
|
|
186
|
+
delegatee: readPubkey(data, base + exports.KAMINO_FARM_USER_DELEGATEE_OFFSET),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
exports.decodeKaminoFarmUserState = decodeKaminoFarmUserState;
|
|
190
|
+
function decodeKaminoScopeDatedPrice(data, priceId) {
|
|
191
|
+
const priceOffset = exports.KAMINO_SCOPE_ACCOUNT_DISCRIMINATOR_LEN
|
|
192
|
+
+ exports.KAMINO_SCOPE_ORACLE_PRICES_ARRAY_OFFSET
|
|
193
|
+
+ (Number(priceId) * exports.KAMINO_SCOPE_DATED_PRICE_SIZE);
|
|
194
|
+
return {
|
|
195
|
+
value: readU64LE(data, priceOffset + exports.KAMINO_SCOPE_PRICE_VALUE_OFFSET),
|
|
196
|
+
exp: readU64LE(data, priceOffset + exports.KAMINO_SCOPE_PRICE_EXP_OFFSET),
|
|
197
|
+
lastUpdatedSlot: readU64LE(data, priceOffset + exports.KAMINO_SCOPE_LAST_UPDATED_SLOT_OFFSET),
|
|
198
|
+
unixTimestamp: readU64LE(data, priceOffset + exports.KAMINO_SCOPE_UNIX_TIMESTAMP_OFFSET),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
exports.decodeKaminoScopeDatedPrice = decodeKaminoScopeDatedPrice;
|
|
202
|
+
function kaminoFarmUsesScopeOracle(farm) {
|
|
203
|
+
return farm.scopeOraclePriceId !== U64_MAX;
|
|
204
|
+
}
|
|
205
|
+
exports.kaminoFarmUsesScopeOracle = kaminoFarmUsesScopeOracle;
|
|
206
|
+
function getKaminoFarmScopePricesAddress(farm) {
|
|
207
|
+
if (!kaminoFarmUsesScopeOracle(farm) || farm.scopePrices.equals(DEFAULT_PUBLIC_KEY)) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
return farm.scopePrices;
|
|
211
|
+
}
|
|
212
|
+
exports.getKaminoFarmScopePricesAddress = getKaminoFarmScopePricesAddress;
|
|
213
|
+
function convertKaminoStakeToAmount(stake, totalStake, totalAmount) {
|
|
214
|
+
if (stake === 0n) {
|
|
215
|
+
return 0n;
|
|
216
|
+
}
|
|
217
|
+
if (totalStake === 0n) {
|
|
218
|
+
return totalAmount;
|
|
219
|
+
}
|
|
220
|
+
return (stake * totalAmount) / totalStake;
|
|
221
|
+
}
|
|
222
|
+
exports.convertKaminoStakeToAmount = convertKaminoStakeToAmount;
|
|
223
|
+
function calculateKaminoFarmPrincipalAmount(farm, user) {
|
|
224
|
+
const activeAmount = convertKaminoStakeToAmount(user.activeStakeScaled, farm.totalActiveStakeScaled, farm.totalStakedAmount);
|
|
225
|
+
const pendingStake = user.pendingDepositStakeScaled + user.pendingWithdrawalUnstakeScaled;
|
|
226
|
+
const pendingAmount = convertKaminoStakeToAmount(pendingStake, farm.totalPendingStakeScaled, farm.totalPendingAmount);
|
|
227
|
+
return activeAmount + pendingAmount;
|
|
228
|
+
}
|
|
229
|
+
exports.calculateKaminoFarmPrincipalAmount = calculateKaminoFarmPrincipalAmount;
|
|
230
|
+
function getCurrentFarmTs(farm, params) {
|
|
231
|
+
return farm.timeUnit === KaminoFarmTimeUnit.Slots
|
|
232
|
+
? params.currentSlot
|
|
233
|
+
: params.currentUnixTimestamp;
|
|
234
|
+
}
|
|
235
|
+
// Read-only mirror of KFarms RewardScheduleCurve::most_recent_curve_starting_point and
|
|
236
|
+
// RewardScheduleCurve::get_cumulative_amount_issued_since_last_ts.
|
|
237
|
+
// Source:
|
|
238
|
+
// https://github.com/Kamino-Finance/kfarms/blob/ae4be1b33808bae692edd9b06aecfac24714b100/programs/kfarms/src/state.rs#L344-L397
|
|
239
|
+
// Differences:
|
|
240
|
+
// - operates on decoded JS views
|
|
241
|
+
// - throws JS errors instead of returning Anchor errors
|
|
242
|
+
function getCumulativeAmountIssuedSinceLastTs(rewardScheduleCurve, lastIssuedTs, currentTs) {
|
|
243
|
+
if (lastIssuedTs > currentTs) {
|
|
244
|
+
throw new Error("Kamino farm reward schedule has lastIssuedTs > currentTs");
|
|
245
|
+
}
|
|
246
|
+
let startIndex = rewardScheduleCurve.length - 1;
|
|
247
|
+
for (let i = 0; i < rewardScheduleCurve.length; i += 1) {
|
|
248
|
+
if (rewardScheduleCurve[i].tsStart > lastIssuedTs) {
|
|
249
|
+
if (i === 0) {
|
|
250
|
+
throw new Error("Kamino farm reward schedule first point starts after lastIssuedTs");
|
|
251
|
+
}
|
|
252
|
+
startIndex = i - 1;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
let cumulativeAmount = 0n;
|
|
257
|
+
for (let i = startIndex; i < rewardScheduleCurve.length; i += 1) {
|
|
258
|
+
const point = rewardScheduleCurve[i];
|
|
259
|
+
if (point.tsStart >= currentTs) {
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
const startTs = point.tsStart > lastIssuedTs ? point.tsStart : lastIssuedTs;
|
|
263
|
+
const endTs = i < rewardScheduleCurve.length - 1 && rewardScheduleCurve[i + 1].tsStart < currentTs
|
|
264
|
+
? rewardScheduleCurve[i + 1].tsStart
|
|
265
|
+
: currentTs;
|
|
266
|
+
cumulativeAmount += point.rewardPerTimeUnit * (endTs - startTs);
|
|
267
|
+
}
|
|
268
|
+
return cumulativeAmount;
|
|
269
|
+
}
|
|
270
|
+
function applyKaminoFarmScopePrice(farm, amount, scopePrice, currentTs) {
|
|
271
|
+
if (!kaminoFarmUsesScopeOracle(farm)) {
|
|
272
|
+
return amount;
|
|
273
|
+
}
|
|
274
|
+
if (!scopePrice) {
|
|
275
|
+
throw new Error(`Missing scope prices for Kamino farm ${farm.scopePrices.toBase58()}`);
|
|
276
|
+
}
|
|
277
|
+
if (currentTs < scopePrice.unixTimestamp) {
|
|
278
|
+
throw new Error("Kamino farm scope price timestamp is in the future");
|
|
279
|
+
}
|
|
280
|
+
if (currentTs - scopePrice.unixTimestamp > farm.scopeOracleMaxAge) {
|
|
281
|
+
throw new Error("Kamino farm scope price is too old");
|
|
282
|
+
}
|
|
283
|
+
return (amount * scopePrice.value) / tenPow(Number(scopePrice.exp));
|
|
284
|
+
}
|
|
285
|
+
// Read-only mirror of KFarms refresh_global_reward.
|
|
286
|
+
// Source:
|
|
287
|
+
// https://github.com/Kamino-Finance/kfarms/blob/ae4be1b33808bae692edd9b06aecfac24714b100/programs/kfarms/src/farm_operations.rs#L759-L850
|
|
288
|
+
// Differences:
|
|
289
|
+
// - custody farms only
|
|
290
|
+
// - operates on copied views and returns projected reward info
|
|
291
|
+
function projectKaminoFarmGlobalReward(farm, rewardInfo, scopePrice, params) {
|
|
292
|
+
const currentTs = getCurrentFarmTs(farm, params);
|
|
293
|
+
if (currentTs === rewardInfo.lastIssuanceTs) {
|
|
294
|
+
return rewardInfo;
|
|
295
|
+
}
|
|
296
|
+
if (farm.totalActiveStakeScaled === 0n) {
|
|
297
|
+
return {
|
|
298
|
+
...rewardInfo,
|
|
299
|
+
lastIssuanceTs: currentTs,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const cumulativeAmount = getCumulativeAmountIssuedSinceLastTs(rewardInfo.rewardScheduleCurve, rewardInfo.lastIssuanceTs, currentTs);
|
|
303
|
+
const rewardTypeAmount = rewardInfo.rewardType === KaminoFarmRewardType.Constant
|
|
304
|
+
? cumulativeAmount * farm.totalStakedAmount
|
|
305
|
+
: cumulativeAmount;
|
|
306
|
+
const decimalAdjustedAmount = rewardTypeAmount / tenPow(rewardInfo.rewardsPerSecondDecimals);
|
|
307
|
+
const oracleAdjustedAmount = applyKaminoFarmScopePrice(farm, decimalAdjustedAmount, scopePrice, currentTs);
|
|
308
|
+
if (oracleAdjustedAmount === 0n) {
|
|
309
|
+
return rewardInfo;
|
|
310
|
+
}
|
|
311
|
+
const rewards = oracleAdjustedAmount < rewardInfo.rewardsAvailable
|
|
312
|
+
? oracleAdjustedAmount
|
|
313
|
+
: rewardInfo.rewardsAvailable;
|
|
314
|
+
const rewardTimesWad = rewards * DECIMAL_WAD;
|
|
315
|
+
const addedRewardPerShareScaled = farm.isDelegated
|
|
316
|
+
? rewardTimesWad / farm.totalActiveStakeScaled
|
|
317
|
+
: (rewardTimesWad * DECIMAL_WAD) / farm.totalActiveStakeScaled;
|
|
318
|
+
return {
|
|
319
|
+
...rewardInfo,
|
|
320
|
+
lastIssuanceTs: currentTs,
|
|
321
|
+
rewardsIssuedUnclaimed: rewardInfo.rewardsIssuedUnclaimed + rewards,
|
|
322
|
+
rewardsIssuedCumulative: rewardInfo.rewardsIssuedCumulative + rewards,
|
|
323
|
+
rewardsAvailable: rewardInfo.rewardsAvailable - rewards,
|
|
324
|
+
rewardPerShareScaled: rewardInfo.rewardPerShareScaled + addedRewardPerShareScaled,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
exports.projectKaminoFarmGlobalReward = projectKaminoFarmGlobalReward;
|
|
328
|
+
// Read-only mirror of KFarms refresh_global_rewards.
|
|
329
|
+
// Source:
|
|
330
|
+
// https://github.com/Kamino-Finance/kfarms/blob/ae4be1b33808bae692edd9b06aecfac24714b100/programs/kfarms/src/farm_operations.rs#L852-L862
|
|
331
|
+
// Differences:
|
|
332
|
+
// - operates on copied reward infos
|
|
333
|
+
function projectKaminoFarmGlobalRewards(farm, scopePrice, params) {
|
|
334
|
+
return farm.rewardInfos.map((rewardInfo) => projectKaminoFarmGlobalReward(farm, rewardInfo, scopePrice, params));
|
|
335
|
+
}
|
|
336
|
+
exports.projectKaminoFarmGlobalRewards = projectKaminoFarmGlobalRewards;
|
|
337
|
+
// Read-only mirror of KFarms user_refresh_reward.
|
|
338
|
+
// Source:
|
|
339
|
+
// https://github.com/Kamino-Finance/kfarms/blob/ae4be1b33808bae692edd9b06aecfac24714b100/programs/kfarms/src/farm_operations.rs#L553-L592
|
|
340
|
+
// Differences:
|
|
341
|
+
// - returns projected tally / rewards instead of mutating UserState
|
|
342
|
+
// - clamps small negative valuation deltas to zero instead of throwing so
|
|
343
|
+
// read-only AUM can tolerate post-harvest rounding drift
|
|
344
|
+
function projectKaminoFarmUserReward(farm, user, rewardInfo, rewardIndex) {
|
|
345
|
+
const rewardsTallyScaled = user.rewardsTallyScaled[rewardIndex] ?? 0n;
|
|
346
|
+
const rewardsIssuedUnclaimed = user.rewardsIssuedUnclaimed[rewardIndex] ?? 0n;
|
|
347
|
+
const rewardPerShareTimesStake = rewardInfo.rewardPerShareScaled * user.activeStakeScaled;
|
|
348
|
+
const newRewardTallyScaled = farm.isDelegated
|
|
349
|
+
? rewardPerShareTimesStake
|
|
350
|
+
: rewardPerShareTimesStake / DECIMAL_WAD;
|
|
351
|
+
if (newRewardTallyScaled < rewardsTallyScaled) {
|
|
352
|
+
return {
|
|
353
|
+
rewardsTallyScaled,
|
|
354
|
+
rewardsIssuedUnclaimed,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
const reward = (newRewardTallyScaled - rewardsTallyScaled) / DECIMAL_WAD;
|
|
358
|
+
return {
|
|
359
|
+
rewardsTallyScaled: rewardsTallyScaled + (reward * DECIMAL_WAD),
|
|
360
|
+
rewardsIssuedUnclaimed: rewardsIssuedUnclaimed + reward,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
exports.projectKaminoFarmUserReward = projectKaminoFarmUserReward;
|
|
364
|
+
// Read-only mirror of KFarms user_refresh_all_rewards.
|
|
365
|
+
// Source:
|
|
366
|
+
// https://github.com/Kamino-Finance/kfarms/blob/ae4be1b33808bae692edd9b06aecfac24714b100/programs/kfarms/src/farm_operations.rs#L595-L605
|
|
367
|
+
// Differences:
|
|
368
|
+
// - returns projected arrays instead of mutating UserState
|
|
369
|
+
function projectKaminoFarmUserRewards(farm, user, projectedRewardInfos) {
|
|
370
|
+
const projectedRewardsTallyScaled = [...user.rewardsTallyScaled];
|
|
371
|
+
const projectedRewardsIssuedUnclaimed = [...user.rewardsIssuedUnclaimed];
|
|
372
|
+
if (user.activeStakeScaled === 0n) {
|
|
373
|
+
return {
|
|
374
|
+
projectedRewardInfos,
|
|
375
|
+
projectedRewardsTallyScaled,
|
|
376
|
+
projectedRewardsIssuedUnclaimed,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
for (let rewardIndex = 0; rewardIndex < farm.numRewardTokens; rewardIndex += 1) {
|
|
380
|
+
const projected = projectKaminoFarmUserReward(farm, user, projectedRewardInfos[rewardIndex], rewardIndex);
|
|
381
|
+
projectedRewardsTallyScaled[rewardIndex] = projected.rewardsTallyScaled;
|
|
382
|
+
projectedRewardsIssuedUnclaimed[rewardIndex] = projected.rewardsIssuedUnclaimed;
|
|
383
|
+
}
|
|
384
|
+
return {
|
|
385
|
+
projectedRewardInfos,
|
|
386
|
+
projectedRewardsTallyScaled,
|
|
387
|
+
projectedRewardsIssuedUnclaimed,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
exports.projectKaminoFarmUserRewards = projectKaminoFarmUserRewards;
|
|
391
|
+
function applyKaminoFarmTreasuryFee(reward, treasuryFeeBps) {
|
|
392
|
+
const rewardTreasury = (reward * treasuryFeeBps) / BPS_DIV_FACTOR;
|
|
393
|
+
return reward - rewardTreasury;
|
|
394
|
+
}
|
|
395
|
+
exports.applyKaminoFarmTreasuryFee = applyKaminoFarmTreasuryFee;
|
|
396
|
+
//# sourceMappingURL=kamino-farms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kamino-farms.js","sourceRoot":"","sources":["../../src/exponentVaults/kamino-farms.ts"],"names":[],"mappings":"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"}
|