11import {
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 : / c o l l a t e r a l T o k e n P r o g r a m | l i q u i d i t y T o k e n P r o g r a m / ,
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 : / s y s v a r I n f o | i n s t r u c t i o n S y s v a r A c c o u n t / ,
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