Skip to content

Commit d3af106

Browse files
authored
Merge pull request #57 from macalinao/igm/kamino-lending
Update kamino lending PDAs to include farm pdas
2 parents 9c47857 + f4c11a8 commit d3af106

File tree

100 files changed

+10224
-523
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

100 files changed

+10224
-523
lines changed

.changeset/rotten-coats-press.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@macalinao/coda-visitors": patch
3+
---
4+
5+
Update ATA refs

.changeset/warm-readers-poke.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@macalinao/clients-kamino-lending": minor
3+
---
4+
5+
Update Kamino Lending PDAs

biome.jsonc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
2+
"$schema": "https://biomejs.dev/schemas/2.2.6/schema.json",
33
"extends": ["@macalinao/biome-config/base"],
44
"files": {
55
"ignoreUnknown": false,

bun.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
"": {
55
"name": "@macalinao/coda-monorepo",
66
"devDependencies": {
7-
"@biomejs/biome": "^2.2.5",
7+
"@biomejs/biome": "^2.2.6",
88
"@changesets/cli": "^2.29.7",
99
"@macalinao/biome-config": "^0.1.2",
1010
"husky": "^9.1.7",
1111
"lint-staged": "^16.2.4",
1212
"turbo": "^2.5.8",
1313
"typedoc": "^0.28.14",
14-
"typescript": "catalog:",
14+
"typescript": "^5.9.3",
1515
},
1616
},
1717
"apps/docs": {

clients/kamino-lending/coda.config.mjs

Lines changed: 221 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
import {
2+
accountValueNode,
23
addPdasVisitor,
4+
associatedTokenAccountValueNode,
35
constantPdaSeedNodeFromString,
46
defineConfig,
57
numberTypeNode,
8+
pdaLinkNode,
9+
pdaSeedValueNode,
10+
pdaValueNode,
611
programLinkNode,
712
publicKeyTypeNode,
813
renameVisitor,
14+
SYSVAR_INSTRUCTIONS_VALUE_NODE,
915
stringTypeNode,
16+
TOKEN_PROGRAM_VALUE_NODE,
17+
updateAccountsVisitor,
1018
variablePdaSeedNode,
1119
} from "@macalinao/coda";
1220

@@ -18,6 +26,144 @@ export default defineConfig({
1826
npmPackageName: "@macalinao/clients-kamino-lending",
1927
},
2028
instructionAccountDefaultValues: [
29+
// farms
30+
...["initializeFarm", "stake"].map((instruction) => ({
31+
instruction,
32+
account: "farmVault",
33+
defaultValue: pdaValueNode(pdaLinkNode("farmVault"), [
34+
pdaSeedValueNode("farmState", accountValueNode("farmState")),
35+
pdaSeedValueNode("tokenMint", accountValueNode("tokenMint")),
36+
]),
37+
})),
38+
// note: delegated farms will have a different seed, the "owner" is the delegatee.
39+
...["harvestReward", "stake", "unstake", "withdrawUnstakedDeposits"].map(
40+
(instruction) => ({
41+
instruction,
42+
account: "userState",
43+
defaultValue: pdaValueNode(pdaLinkNode("farmsUserState"), [
44+
pdaSeedValueNode("farmState", accountValueNode("farmState")),
45+
pdaSeedValueNode("owner", accountValueNode("owner")),
46+
]),
47+
}),
48+
),
49+
{
50+
instruction: "initializeUser",
51+
account: "userState",
52+
defaultValue: pdaValueNode(pdaLinkNode("farmsUserState"), [
53+
pdaSeedValueNode("farmState", accountValueNode("farmState")),
54+
pdaSeedValueNode("owner", accountValueNode("delegatee")),
55+
]),
56+
},
57+
{
58+
account: "userRewardAta",
59+
defaultValue: associatedTokenAccountValueNode({
60+
owner: accountValueNode("owner"),
61+
mint: accountValueNode("rewardMint"),
62+
tokenProgram: accountValueNode("tokenProgram"),
63+
}),
64+
},
65+
{
66+
account: "rewardVault",
67+
defaultValue: pdaValueNode(pdaLinkNode("rewardVault"), [
68+
pdaSeedValueNode("farmState", accountValueNode("farmState")),
69+
pdaSeedValueNode("rewardMint", accountValueNode("rewardMint")),
70+
]),
71+
},
72+
{
73+
account: "rewardsVault",
74+
defaultValue: pdaValueNode(pdaLinkNode("rewardVault"), [
75+
pdaSeedValueNode("farmState", accountValueNode("farmState")),
76+
pdaSeedValueNode("rewardMint", accountValueNode("rewardMint")),
77+
]),
78+
},
79+
{
80+
account: "rewardsTreasuryVault",
81+
defaultValue: pdaValueNode(pdaLinkNode("rewardTreasuryVault"), [
82+
pdaSeedValueNode("globalConfig", accountValueNode("globalConfig")),
83+
pdaSeedValueNode("rewardMint", accountValueNode("rewardMint")),
84+
]),
85+
},
86+
{
87+
account: "rewardTreasuryVault",
88+
defaultValue: pdaValueNode(pdaLinkNode("rewardTreasuryVault"), [
89+
pdaSeedValueNode("globalConfig", accountValueNode("globalConfig")),
90+
pdaSeedValueNode("rewardMint", accountValueNode("rewardMint")),
91+
]),
92+
},
93+
{
94+
account: "treasuryVaultAuthority",
95+
defaultValue: pdaValueNode(pdaLinkNode("treasuryVaultsAuthority"), [
96+
pdaSeedValueNode("globalConfig", accountValueNode("globalConfig")),
97+
]),
98+
},
99+
{
100+
account: "treasuryVaultsAuthority",
101+
defaultValue: pdaValueNode(pdaLinkNode("treasuryVaultsAuthority"), [
102+
pdaSeedValueNode("globalConfig", accountValueNode("globalConfig")),
103+
]),
104+
},
105+
{
106+
account: "farmVaultsAuthority",
107+
defaultValue: pdaValueNode(pdaLinkNode("farmVaultsAuthority"), [
108+
pdaSeedValueNode("farmState", accountValueNode("farmState")),
109+
]),
110+
},
111+
112+
// lending
113+
{
114+
account: /collateralTokenProgram|liquidityTokenProgram/,
115+
defaultValue: TOKEN_PROGRAM_VALUE_NODE,
116+
},
117+
{
118+
account: "feeReceiver",
119+
defaultValue: pdaValueNode(pdaLinkNode("reserveFeeVault"), [
120+
pdaSeedValueNode("lendingMarket", accountValueNode("lendingMarket")),
121+
pdaSeedValueNode("mint", accountValueNode("reserveLiquidityMint")),
122+
]),
123+
},
124+
{
125+
account: "reserveLiquiditySupply",
126+
defaultValue: pdaValueNode(pdaLinkNode("reserveLiquiditySupply"), [
127+
pdaSeedValueNode("lendingMarket", accountValueNode("lendingMarket")),
128+
pdaSeedValueNode("mint", accountValueNode("reserveLiquidityMint")),
129+
]),
130+
},
131+
{
132+
account: "reserveLiquidityFeeReceiver",
133+
defaultValue: pdaValueNode(pdaLinkNode("reserveFeeVault"), [
134+
pdaSeedValueNode("lendingMarket", accountValueNode("lendingMarket")),
135+
pdaSeedValueNode("mint", accountValueNode("reserveLiquidityMint")),
136+
]),
137+
},
138+
{
139+
account: "reserveCollateralMint",
140+
defaultValue: pdaValueNode(pdaLinkNode("reserveCollateralMint"), [
141+
pdaSeedValueNode("lendingMarket", accountValueNode("lendingMarket")),
142+
pdaSeedValueNode("mint", accountValueNode("reserveLiquidityMint")),
143+
]),
144+
},
145+
{
146+
account: "reserveCollateralSupply",
147+
defaultValue: pdaValueNode(pdaLinkNode("reserveCollateralSupply"), [
148+
pdaSeedValueNode("lendingMarket", accountValueNode("lendingMarket")),
149+
pdaSeedValueNode("mint", accountValueNode("reserveLiquidityMint")),
150+
]),
151+
},
152+
{
153+
instruction: "initGlobalConfig",
154+
account: "globalConfig",
155+
defaultValue: pdaValueNode(pdaLinkNode("lendingGlobalConfigState")),
156+
},
157+
{
158+
account: "lendingMarketAuthority",
159+
defaultValue: pdaValueNode(pdaLinkNode("lendingMarketAuth"), [
160+
pdaSeedValueNode("lendingMarket", accountValueNode("lendingMarket")),
161+
]),
162+
},
163+
{
164+
account: /sysvarInfo|instructionSysvarAccount/,
165+
defaultValue: SYSVAR_INSTRUCTIONS_VALUE_NODE,
166+
},
21167
{
22168
account: "farmsProgram",
23169
defaultValue: programLinkNode("farms"),
@@ -28,15 +174,61 @@ export default defineConfig({
28174
addPdasVisitor({
29175
farms: [
30176
{
31-
name: "obligationFarmState",
177+
name: "rewardTreasuryVault",
178+
seeds: [
179+
constantPdaSeedNodeFromString("utf8", "tvault"),
180+
variablePdaSeedNode("globalConfig", publicKeyTypeNode()),
181+
variablePdaSeedNode("rewardMint", publicKeyTypeNode()),
182+
],
183+
},
184+
{
185+
name: "treasuryVaultsAuthority",
186+
seeds: [
187+
constantPdaSeedNodeFromString("utf8", "authority"),
188+
variablePdaSeedNode("globalConfig", publicKeyTypeNode()),
189+
],
190+
},
191+
{
192+
name: "farmVaultsAuthority",
193+
seeds: [
194+
constantPdaSeedNodeFromString("utf8", "authority"),
195+
variablePdaSeedNode("farmState", publicKeyTypeNode()),
196+
],
197+
},
198+
{
199+
name: "farmVault",
200+
seeds: [
201+
constantPdaSeedNodeFromString("utf8", "fvault"),
202+
variablePdaSeedNode("farmState", publicKeyTypeNode()),
203+
variablePdaSeedNode("tokenMint", publicKeyTypeNode()),
204+
],
205+
},
206+
{
207+
name: "rewardVault",
208+
seeds: [
209+
constantPdaSeedNodeFromString("utf8", "rvault"),
210+
variablePdaSeedNode("farmState", publicKeyTypeNode()),
211+
variablePdaSeedNode("rewardMint", publicKeyTypeNode()),
212+
],
213+
},
214+
{
215+
name: "farmsUserState",
32216
seeds: [
33217
constantPdaSeedNodeFromString("utf8", "user"),
34-
variablePdaSeedNode("farm", publicKeyTypeNode()),
35-
variablePdaSeedNode("obligation", publicKeyTypeNode()),
218+
variablePdaSeedNode("farmState", publicKeyTypeNode()),
219+
variablePdaSeedNode(
220+
"owner",
221+
publicKeyTypeNode(),
222+
"The user who is farming. This is sometimes the obligation in the case of delegated farms.",
223+
),
36224
],
37225
},
38226
],
39227
kaminoLending: [
228+
{
229+
name: "lendingGlobalConfigState",
230+
seeds: [constantPdaSeedNodeFromString("utf8", "global_config")],
231+
},
40232
{
41233
name: "obligation",
42234
seeds: [
@@ -122,6 +314,7 @@ export default defineConfig({
122314
farms: {
123315
accounts: {
124316
userState: "farmsUserState",
317+
globalConfig: "farmsGlobalConfig",
125318
},
126319
instructions: {
127320
idlMissingTypes: "farmsIdlMissingTypes",
@@ -132,5 +325,30 @@ export default defineConfig({
132325
},
133326
},
134327
}),
328+
updateAccountsVisitor({
329+
// farms
330+
farmsUserState: {
331+
pda: pdaLinkNode("farmsUserState"),
332+
},
333+
// lending
334+
lendingGlobalConfig: {
335+
pda: pdaLinkNode("lendingGlobalConfigState"),
336+
},
337+
obligation: {
338+
pda: pdaLinkNode("obligation"),
339+
},
340+
userMetadata: {
341+
pda: pdaLinkNode("userMetadata"),
342+
},
343+
referrerTokenState: {
344+
pda: pdaLinkNode("referrerTokenState"),
345+
},
346+
referrerState: {
347+
pda: pdaLinkNode("referrerState"),
348+
},
349+
shortUrl: {
350+
pda: pdaLinkNode("shortUrl"),
351+
},
352+
}),
135353
],
136354
});

0 commit comments

Comments
 (0)