@kamino-finance/klend-sdk 5.13.2 → 5.13.4
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/dist/classes/manager.d.ts +8 -0
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +11 -0
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/vault.d.ts +17 -1
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +28 -2
- package/dist/classes/vault.js.map +1 -1
- package/dist/classes/vault_types.d.ts +1 -0
- package/dist/classes/vault_types.d.ts.map +1 -1
- package/dist/client_kamino_manager.d.ts.map +1 -1
- package/dist/client_kamino_manager.js +19 -2
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/utils/metadata.d.ts +14 -0
- package/dist/utils/metadata.d.ts.map +1 -0
- package/dist/utils/metadata.js +78 -0
- package/dist/utils/metadata.js.map +1 -0
- package/dist/utils/seeds.d.ts +6 -0
- package/dist/utils/seeds.d.ts.map +1 -1
- package/dist/utils/seeds.js +10 -0
- package/dist/utils/seeds.js.map +1 -1
- package/package.json +1 -1
- package/src/classes/manager.ts +20 -0
- package/src/classes/vault.ts +72 -2
- package/src/classes/vault_types.ts +1 -0
- package/src/client_kamino_manager.ts +34 -2
- package/src/utils/metadata.ts +115 -0
- package/src/utils/seeds.ts +13 -0
|
@@ -252,10 +252,12 @@ async function main() {
|
|
|
252
252
|
`--mode <string>`,
|
|
253
253
|
'simulate - to print txn simulation, inspect - to get txn simulation in explorer, execute - execute txn, multisig - to get bs58 txn for multisig usage'
|
|
254
254
|
)
|
|
255
|
-
.
|
|
255
|
+
.requiredOption('--name <string>', 'The onchain name of the strat')
|
|
256
|
+
.requiredOption('--tokenName <string>', 'The name of the token in the vault')
|
|
257
|
+
.requiredOption('--extraTokenName <string>', 'The extra string appended to the token symbol')
|
|
256
258
|
.option(`--staging`, 'If true, will use the staging programs')
|
|
257
259
|
.option(`--multisig <string>`, 'If using multisig mode this is required, otherwise will be ignored')
|
|
258
|
-
.action(async ({ mint, mode, name, staging, multisig }) => {
|
|
260
|
+
.action(async ({ mint, mode, name, tokenName, extraTokenName, staging, multisig }) => {
|
|
259
261
|
const env = initializeClient(mode === 'multisig', staging);
|
|
260
262
|
const tokenMint = new PublicKey(mint);
|
|
261
263
|
|
|
@@ -279,6 +281,8 @@ async function main() {
|
|
|
279
281
|
performanceFeeRatePercentage: new Decimal(0.0),
|
|
280
282
|
managementFeeRatePercentage: new Decimal(0.0),
|
|
281
283
|
name,
|
|
284
|
+
vaultTokenSymbol: tokenName,
|
|
285
|
+
vaultTokenName: extraTokenName,
|
|
282
286
|
});
|
|
283
287
|
|
|
284
288
|
const { vault: vaultKp, initVaultIxs: instructions } = await kaminoManager.createVaultIxs(kaminoVaultConfig);
|
|
@@ -294,9 +298,37 @@ async function main() {
|
|
|
294
298
|
await sleep(2000);
|
|
295
299
|
const _populateLUTSig = await processTxn(env.client, env.payer, instructions.populateLUTIxs, mode, 2500, []);
|
|
296
300
|
|
|
301
|
+
const _setSharesMetadataSig = await processTxn(
|
|
302
|
+
env.client,
|
|
303
|
+
env.payer,
|
|
304
|
+
[instructions.initSharesMetadataIx],
|
|
305
|
+
mode,
|
|
306
|
+
2500,
|
|
307
|
+
[]
|
|
308
|
+
);
|
|
297
309
|
mode === 'execute' && console.log('Vault created:', vaultKp.publicKey.toBase58());
|
|
298
310
|
});
|
|
299
311
|
|
|
312
|
+
commands
|
|
313
|
+
.command('set-shares-metadata')
|
|
314
|
+
.requiredOption('--vault <string>', 'Vault address')
|
|
315
|
+
.requiredOption('--symbol <string>', 'The symbol of the kVault token')
|
|
316
|
+
.requiredOption('--extraName <string>', 'The name of the kVault token, appended to the symbol')
|
|
317
|
+
.action(async ({ vault, symbol, extraName }) => {
|
|
318
|
+
const env = initializeClient(false, false);
|
|
319
|
+
const kVault = new KaminoVault(new PublicKey(vault));
|
|
320
|
+
|
|
321
|
+
const kaminoManager = new KaminoManager(
|
|
322
|
+
env.connection,
|
|
323
|
+
DEFAULT_RECENT_SLOT_DURATION_MS,
|
|
324
|
+
env.kLendProgramId,
|
|
325
|
+
env.kVaultProgramId
|
|
326
|
+
);
|
|
327
|
+
const ix = await kaminoManager.getSetSharesMetadataIx(kVault, symbol, extraName);
|
|
328
|
+
|
|
329
|
+
await processTxn(env.client, env.payer, [ix], 'execute', 2500, []);
|
|
330
|
+
});
|
|
331
|
+
|
|
300
332
|
commands
|
|
301
333
|
.command('update-vault-pending-admin')
|
|
302
334
|
.requiredOption('--vault <string>', 'Vault address')
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Connection, PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';
|
|
2
|
+
import {
|
|
3
|
+
getKVaultSharesMetadataPda,
|
|
4
|
+
initializeSharesMetadata,
|
|
5
|
+
InitializeSharesMetadataAccounts,
|
|
6
|
+
InitializeSharesMetadataArgs,
|
|
7
|
+
METADATA_PROGRAM_ID,
|
|
8
|
+
updateSharesMetadata,
|
|
9
|
+
UpdateSharesMetadataAccounts,
|
|
10
|
+
UpdateSharesMetadataArgs,
|
|
11
|
+
} from '../lib';
|
|
12
|
+
|
|
13
|
+
export function resolveMetadata(
|
|
14
|
+
kTokenMint: PublicKey,
|
|
15
|
+
extra: string,
|
|
16
|
+
inputToken?: string,
|
|
17
|
+
inputName?: string,
|
|
18
|
+
inputSymbol?: string,
|
|
19
|
+
inputUri?: string
|
|
20
|
+
): { name: string; symbol: string; uri: string } {
|
|
21
|
+
let name;
|
|
22
|
+
let symbol;
|
|
23
|
+
if (inputToken) {
|
|
24
|
+
const { name: resolvedName, symbol: resolvedSymbol } = resolveMetadataFromToken(inputToken, extra);
|
|
25
|
+
name = inputName ?? resolvedName;
|
|
26
|
+
symbol = inputSymbol ?? resolvedSymbol;
|
|
27
|
+
} else {
|
|
28
|
+
if (!inputSymbol) {
|
|
29
|
+
throw Error('Symbol required');
|
|
30
|
+
}
|
|
31
|
+
if (!inputName) {
|
|
32
|
+
throw Error('Name required');
|
|
33
|
+
}
|
|
34
|
+
name = inputName;
|
|
35
|
+
symbol = inputSymbol;
|
|
36
|
+
}
|
|
37
|
+
const uri = inputUri ?? resolveMetadataUriFromMint(kTokenMint);
|
|
38
|
+
|
|
39
|
+
return { name, symbol, uri };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function resolveMetadataFromToken(token: string, extra: string): { name: string; symbol: string } {
|
|
43
|
+
console.log('token', token);
|
|
44
|
+
console.log('extra', extra);
|
|
45
|
+
const name = `Kamino Vault ${token} ${extra}`;
|
|
46
|
+
const symbol = `kV${token.toUpperCase()}`;
|
|
47
|
+
return { name, symbol };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function resolveMetadataUriFromMint(mint: PublicKey): string {
|
|
51
|
+
return `https://api.kamino.finance/kvault-tokens/${mint.toBase58()}/metadata`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export async function getInitializeKVaultSharesMetadataIx(
|
|
55
|
+
connection: Connection,
|
|
56
|
+
vaultAdmin: PublicKey,
|
|
57
|
+
vault: PublicKey,
|
|
58
|
+
sharesMint: PublicKey,
|
|
59
|
+
baseVaultAuthority: PublicKey,
|
|
60
|
+
name: string,
|
|
61
|
+
symbol: string,
|
|
62
|
+
uri: string
|
|
63
|
+
): Promise<TransactionInstruction> {
|
|
64
|
+
const [sharesMintMetadata] = getKVaultSharesMetadataPda(sharesMint);
|
|
65
|
+
|
|
66
|
+
const args: InitializeSharesMetadataArgs = {
|
|
67
|
+
name,
|
|
68
|
+
symbol,
|
|
69
|
+
uri,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const accounts: InitializeSharesMetadataAccounts = {
|
|
73
|
+
vaultAdminAuthority: vaultAdmin,
|
|
74
|
+
vaultState: vault,
|
|
75
|
+
sharesMint,
|
|
76
|
+
baseVaultAuthority,
|
|
77
|
+
sharesMetadata: sharesMintMetadata,
|
|
78
|
+
systemProgram: SystemProgram.programId,
|
|
79
|
+
rent: SYSVAR_RENT_PUBKEY,
|
|
80
|
+
metadataProgram: METADATA_PROGRAM_ID,
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const ix = initializeSharesMetadata(args, accounts);
|
|
84
|
+
return ix;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export async function getUpdateSharesMetadataIx(
|
|
88
|
+
connection: Connection,
|
|
89
|
+
vaultAdmin: PublicKey,
|
|
90
|
+
vault: PublicKey,
|
|
91
|
+
sharesMint: PublicKey,
|
|
92
|
+
baseVaultAuthority: PublicKey,
|
|
93
|
+
name: string,
|
|
94
|
+
symbol: string,
|
|
95
|
+
uri: string
|
|
96
|
+
): Promise<TransactionInstruction> {
|
|
97
|
+
const [sharesMintMetadata] = getKVaultSharesMetadataPda(sharesMint);
|
|
98
|
+
|
|
99
|
+
const args: UpdateSharesMetadataArgs = {
|
|
100
|
+
name,
|
|
101
|
+
symbol,
|
|
102
|
+
uri,
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const accounts: UpdateSharesMetadataAccounts = {
|
|
106
|
+
vaultAdminAuthority: vaultAdmin,
|
|
107
|
+
vaultState: vault,
|
|
108
|
+
baseVaultAuthority,
|
|
109
|
+
sharesMetadata: sharesMintMetadata,
|
|
110
|
+
metadataProgram: METADATA_PROGRAM_ID,
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const ix = updateSharesMetadata(args, accounts);
|
|
114
|
+
return ix;
|
|
115
|
+
}
|
package/src/utils/seeds.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PublicKey } from '@solana/web3.js';
|
|
2
2
|
import { PROGRAM_ID } from '../idl_codegen/programId';
|
|
3
3
|
import { farmsId } from '@kamino-finance/farms-sdk';
|
|
4
|
+
import { METADATA_PROGRAM_ID, METADATA_SEED } from '../classes/vault';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Lending market authority seed
|
|
@@ -204,3 +205,15 @@ export function obligationFarmStatePda(farm: PublicKey, obligation: PublicKey) {
|
|
|
204
205
|
farmsId
|
|
205
206
|
)[0];
|
|
206
207
|
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Returns the PDA for the kVault shares metadata
|
|
211
|
+
* @param mint
|
|
212
|
+
* @returns [pda, bump]
|
|
213
|
+
*/
|
|
214
|
+
export function getKVaultSharesMetadataPda(mint: PublicKey): [PublicKey, number] {
|
|
215
|
+
return PublicKey.findProgramAddressSync(
|
|
216
|
+
[Buffer.from(METADATA_SEED), METADATA_PROGRAM_ID.toBuffer(), mint.toBuffer()],
|
|
217
|
+
METADATA_PROGRAM_ID
|
|
218
|
+
);
|
|
219
|
+
}
|