@kamino-finance/klend-sdk 5.11.15 → 5.11.17
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 +1 -1
- package/dist/classes/manager.d.ts.map +1 -1
- package/dist/classes/manager.js +3 -3
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/market.d.ts.map +1 -1
- package/dist/classes/market.js +3 -0
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/types.d.ts +2 -0
- package/dist/classes/types.d.ts.map +1 -1
- package/dist/classes/vault.d.ts +1 -1
- package/dist/classes/vault.d.ts.map +1 -1
- package/dist/classes/vault.js +25 -6
- package/dist/classes/vault.js.map +1 -1
- package/dist/client_kamino_manager.d.ts.map +1 -1
- package/dist/client_kamino_manager.js +49 -38
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/utils/ata.d.ts +15 -2
- package/dist/utils/ata.d.ts.map +1 -1
- package/dist/utils/ata.js +68 -3
- package/dist/utils/ata.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +2 -1
- package/dist/utils/constants.js.map +1 -1
- package/package.json +1 -1
- package/src/classes/manager.ts +5 -6
- package/src/classes/market.ts +4 -0
- package/src/classes/types.ts +3 -0
- package/src/classes/vault.ts +45 -13
- package/src/client_kamino_manager.ts +178 -42
- package/src/utils/ata.ts +102 -4
- package/src/utils/constants.ts +2 -0
package/dist/utils/ata.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
2
2
|
import Decimal from 'decimal.js';
|
|
3
|
-
import { AnchorProvider } from '@coral-xyz/anchor';
|
|
4
3
|
/**
|
|
5
4
|
* Create an idempotent create ATA instruction
|
|
6
5
|
* Overrides the create ATA ix to use the idempotent version as the spl-token library does not provide this ix yet
|
|
@@ -29,6 +28,20 @@ export declare function createAtasIdempotent(user: PublicKey, mints: Array<{
|
|
|
29
28
|
}>;
|
|
30
29
|
export declare function getTransferWsolIxns(owner: PublicKey, ata: PublicKey, amountLamports: Decimal): TransactionInstruction[];
|
|
31
30
|
export declare function removeBudgetAndAtaIxns(ixns: TransactionInstruction[], mints: string[]): TransactionInstruction[];
|
|
32
|
-
export declare function getTokenAccountBalance(
|
|
31
|
+
export declare function getTokenAccountBalance(connection: Connection, tokenAccount: PublicKey): Promise<number>;
|
|
33
32
|
export declare function getTokenAccountBalanceDecimal(connection: Connection, mint: PublicKey, owner: PublicKey, tokenProgram?: PublicKey): Promise<Decimal>;
|
|
33
|
+
export type CreateWsolAtaIxs = {
|
|
34
|
+
wsolAta: PublicKey;
|
|
35
|
+
createAtaIxs: TransactionInstruction[];
|
|
36
|
+
closeAtaIxs: TransactionInstruction[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Creates a wSOL ata if missing and syncs the balance. If the ata exists and it has more or equal no wrapping happens
|
|
40
|
+
* @param connection - Solana RPC connection (read)
|
|
41
|
+
* @param amount min amount to have in the wSOL ata. If the ata exists and it has more or equal no wrapping happens
|
|
42
|
+
* @param owner - owner of the ata
|
|
43
|
+
* @returns wsolAta: the keypair of the ata, used to sign the initialization transaction; createAtaIxs: a list with ixs to initialize the ata and wrap SOL if needed; closeAtaIxs: a list with ixs to close the ata
|
|
44
|
+
*/
|
|
45
|
+
export declare const createWsolAtaIfMissing: (connection: Connection, amount: Decimal, owner: PublicKey) => Promise<CreateWsolAtaIxs>;
|
|
46
|
+
export declare const isWsolInfoInvalid: (wsolAtaAccountInfo: any) => boolean;
|
|
34
47
|
//# sourceMappingURL=ata.d.ts.map
|
package/dist/utils/ata.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ata.d.ts","sourceRoot":"","sources":["../../src/utils/ata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ata.d.ts","sourceRoot":"","sources":["../../src/utils/ata.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,UAAU,EACV,SAAS,EAET,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,OAAO,MAAM,YAAY,CAAC;AAGjC;;;;;;;;;GASG;AACH,wBAAgB,iDAAiD,CAC/D,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,KAAK,GAAE,SAAiB,EACxB,YAAY,GAAE,SAA4B,EAC1C,GAAG,CAAC,EAAE,SAAS,GACd,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAcrC;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,EAChB,kBAAkB,UAAO,EACzB,SAAS,YAAmB,EAC5B,wBAAwB,YAA8B,GACrD,SAAS,CASX;AAED,eAAO,MAAM,8BAA8B,eAC7B,UAAU,QAChB,SAAS,SACR,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,SAAS,CAAA;CAAE,CAAC,KACzD,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAAC,YAAY,EAAE,sBAAsB,EAAE,CAAA;CAAE,CAgBvE,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,SAAS,CAAA;CAAE,CAAC,GACzD,KAAK,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAehE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,4BA0B5F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,sBAAsB,EAAE,CAgBhH;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7G;AAGD,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,EAChB,YAAY,GAAE,SAA4B,GACzC,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,SAAS,CAAC;IACnB,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,eACrB,UAAU,UACd,OAAO,SACR,SAAS,KACf,OAAO,CAAC,gBAAgB,CA0D1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,uBAAwB,GAAG,KAAG,OAQ3D,CAAC"}
|
package/dist/utils/ata.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getAtasWithCreateIxnsIfMissing = void 0;
|
|
6
|
+
exports.isWsolInfoInvalid = exports.createWsolAtaIfMissing = exports.getAtasWithCreateIxnsIfMissing = void 0;
|
|
7
7
|
exports.createAssociatedTokenAccountIdempotentInstruction = createAssociatedTokenAccountIdempotentInstruction;
|
|
8
8
|
exports.getAssociatedTokenAddress = getAssociatedTokenAddress;
|
|
9
9
|
exports.createAtasIdempotent = createAtasIdempotent;
|
|
@@ -14,6 +14,7 @@ exports.getTokenAccountBalanceDecimal = getTokenAccountBalanceDecimal;
|
|
|
14
14
|
const spl_token_1 = require("@solana/spl-token");
|
|
15
15
|
const web3_js_1 = require("@solana/web3.js");
|
|
16
16
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
17
|
+
const dist_1 = require("@kamino-finance/kliquidity-sdk/dist");
|
|
17
18
|
/**
|
|
18
19
|
* Create an idempotent create ATA instruction
|
|
19
20
|
* Overrides the create ATA ix to use the idempotent version as the spl-token library does not provide this ix yet
|
|
@@ -100,8 +101,8 @@ function removeBudgetAndAtaIxns(ixns, mints) {
|
|
|
100
101
|
return true;
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
|
-
async function getTokenAccountBalance(
|
|
104
|
-
const tokenAccountBalance = await
|
|
104
|
+
async function getTokenAccountBalance(connection, tokenAccount) {
|
|
105
|
+
const tokenAccountBalance = await connection.getTokenAccountBalance(tokenAccount);
|
|
105
106
|
return Number(tokenAccountBalance.value.amount).valueOf();
|
|
106
107
|
}
|
|
107
108
|
/// Get the balance of a token account in decimal format (tokens, not lamports)
|
|
@@ -114,4 +115,68 @@ async function getTokenAccountBalanceDecimal(connection, mint, owner, tokenProgr
|
|
|
114
115
|
const { value } = await connection.getTokenAccountBalance(ata);
|
|
115
116
|
return new decimal_js_1.default(value.uiAmountString);
|
|
116
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Creates a wSOL ata if missing and syncs the balance. If the ata exists and it has more or equal no wrapping happens
|
|
120
|
+
* @param connection - Solana RPC connection (read)
|
|
121
|
+
* @param amount min amount to have in the wSOL ata. If the ata exists and it has more or equal no wrapping happens
|
|
122
|
+
* @param owner - owner of the ata
|
|
123
|
+
* @returns wsolAta: the keypair of the ata, used to sign the initialization transaction; createAtaIxs: a list with ixs to initialize the ata and wrap SOL if needed; closeAtaIxs: a list with ixs to close the ata
|
|
124
|
+
*/
|
|
125
|
+
const createWsolAtaIfMissing = async (connection, amount, owner) => {
|
|
126
|
+
const createIxns = [];
|
|
127
|
+
const closeIxns = [];
|
|
128
|
+
const wsolAta = (0, spl_token_1.getAssociatedTokenAddressSync)(spl_token_1.NATIVE_MINT, owner, true, spl_token_1.TOKEN_PROGRAM_ID);
|
|
129
|
+
const solDeposit = amount;
|
|
130
|
+
const wsolAtaAccountInfo = await connection.getAccountInfo(wsolAta);
|
|
131
|
+
// This checks if we need to create it
|
|
132
|
+
if ((0, exports.isWsolInfoInvalid)(wsolAtaAccountInfo)) {
|
|
133
|
+
createIxns.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(owner, wsolAta, owner, spl_token_1.NATIVE_MINT, spl_token_1.TOKEN_PROGRAM_ID));
|
|
134
|
+
}
|
|
135
|
+
let wsolExistingBalanceLamports = new decimal_js_1.default(0);
|
|
136
|
+
try {
|
|
137
|
+
if (wsolAtaAccountInfo != null) {
|
|
138
|
+
const uiAmount = (await getTokenAccountBalanceDecimal(connection, spl_token_1.NATIVE_MINT, owner)).toNumber();
|
|
139
|
+
wsolExistingBalanceLamports = (0, dist_1.collToLamportsDecimal)(new decimal_js_1.default(uiAmount), dist_1.DECIMALS_SOL);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
console.log('Err Token Balance', err);
|
|
144
|
+
}
|
|
145
|
+
if (solDeposit !== null && solDeposit.gt(wsolExistingBalanceLamports)) {
|
|
146
|
+
createIxns.push(web3_js_1.SystemProgram.transfer({
|
|
147
|
+
fromPubkey: owner,
|
|
148
|
+
toPubkey: wsolAta,
|
|
149
|
+
lamports: BigInt(solDeposit.sub(wsolExistingBalanceLamports).floor().toString()),
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
if (createIxns.length > 0) {
|
|
153
|
+
// Primitive way of wrapping SOL
|
|
154
|
+
createIxns.push(new web3_js_1.TransactionInstruction({
|
|
155
|
+
keys: [
|
|
156
|
+
{
|
|
157
|
+
pubkey: wsolAta,
|
|
158
|
+
isSigner: false,
|
|
159
|
+
isWritable: true,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
data: Buffer.from(new Uint8Array([17])),
|
|
163
|
+
programId: spl_token_1.TOKEN_PROGRAM_ID,
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
closeIxns.push((0, spl_token_1.createCloseAccountInstruction)(wsolAta, owner, owner, [], spl_token_1.TOKEN_PROGRAM_ID));
|
|
167
|
+
return {
|
|
168
|
+
wsolAta,
|
|
169
|
+
createAtaIxs: createIxns,
|
|
170
|
+
closeAtaIxs: closeIxns,
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
exports.createWsolAtaIfMissing = createWsolAtaIfMissing;
|
|
174
|
+
const isWsolInfoInvalid = (wsolAtaAccountInfo) => {
|
|
175
|
+
const res = wsolAtaAccountInfo === null ||
|
|
176
|
+
(wsolAtaAccountInfo !== null &&
|
|
177
|
+
wsolAtaAccountInfo.data.length === 0 &&
|
|
178
|
+
wsolAtaAccountInfo.owner.eq(web3_js_1.PublicKey.default));
|
|
179
|
+
return res;
|
|
180
|
+
};
|
|
181
|
+
exports.isWsolInfoInvalid = isWsolInfoInvalid;
|
|
117
182
|
//# sourceMappingURL=ata.js.map
|
package/dist/utils/ata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ata.js","sourceRoot":"","sources":["../../src/utils/ata.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ata.js","sourceRoot":"","sources":["../../src/utils/ata.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,4 +55,5 @@ export declare const SOL_PADDING_FOR_INTEREST: BN;
|
|
|
55
55
|
*/
|
|
56
56
|
export declare const MIN_INITIAL_DEPOSIT = 100000;
|
|
57
57
|
export declare const MIN_VAULT_INITIAL_DEPOSIT = 1000000000;
|
|
58
|
+
export declare const VAULT_INITIAL_DEPOSIT = 1000;
|
|
58
59
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,eAAO,MAAM,kBAAkB,EAAE,SAAwE,CAAC;AAC1G,eAAO,MAAM,wBAAwB,EAAE,MAA8B,CAAC;AACtE,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAE9C,eAAO,MAAM,uBAAuB,SAAwC,CAAC;AAE7E,eAAO,MAAM,gBAAgB,QAAmC,CAAC;AAEjE,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzD,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,GAAG,CAE9C;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,UAMlD;AAED,eAAO,MAAM,YAAY,0DAA0D,CAAC;AAEpF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,GAAG,GAAE,cAAc,GAAG,SAA0B,aAM5E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAwB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAsB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,yBAAyB,UAAY,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,wBAAwB,IAAoB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAC3C,eAAO,MAAM,yBAAyB,aAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,eAAO,MAAM,kBAAkB,EAAE,SAAwE,CAAC;AAC1G,eAAO,MAAM,wBAAwB,EAAE,MAA8B,CAAC;AACtE,eAAO,MAAM,OAAO,yBAAyB,CAAC;AAE9C,eAAO,MAAM,uBAAuB,SAAwC,CAAC;AAE7E,eAAO,MAAM,gBAAgB,QAAmC,CAAC;AAEjE,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzD,wBAAgB,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,GAAG,CAE9C;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,UAMlD;AAED,eAAO,MAAM,YAAY,0DAA0D,CAAC;AAEpF,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wBAAgB,YAAY,CAAC,GAAG,GAAE,cAAc,GAAG,SAA0B,aAM5E;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAwB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAsB,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAsB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,yBAAyB,UAAY,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,wBAAwB,IAAoB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,mBAAmB,SAAU,CAAC;AAC3C,eAAO,MAAM,yBAAyB,aAAgB,CAAC;AAEvD,eAAO,MAAM,qBAAqB,OAAO,CAAC"}
|
package/dist/utils/constants.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.MIN_VAULT_INITIAL_DEPOSIT = exports.MIN_INITIAL_DEPOSIT = exports.SOL_PADDING_FOR_INTEREST = exports.DEFAULT_MAX_COMPUTE_UNITS = exports.DEPOSITS_LIMIT = exports.BORROWS_LIMIT = exports.MAINNET_BETA_CHAIN_ID = exports.SOL_DECIMALS = exports.MIN_AUTODELEVERAGE_BONUS_BPS = exports.SLOTS_PER_YEAR = exports.SLOTS_PER_DAY = exports.SLOTS_PER_HOUR = exports.SLOTS_PER_MINUTE = exports.SLOTS_PER_SECOND = exports.ONE_HUNDRED_PCT_IN_BPS = exports.CDN_ENDPOINT = exports.TOTAL_NUMBER_OF_IDS_TO_CHECK = exports.SECONDS_PER_YEAR = exports.INITIAL_COLLATERAL_RATE = exports.U64_MAX = exports.DEFAULT_KLEND_PROGRAM_ID = exports.STAGING_PROGRAM_ID = void 0;
|
|
6
|
+
exports.VAULT_INITIAL_DEPOSIT = exports.MIN_VAULT_INITIAL_DEPOSIT = exports.MIN_INITIAL_DEPOSIT = exports.SOL_PADDING_FOR_INTEREST = exports.DEFAULT_MAX_COMPUTE_UNITS = exports.DEPOSITS_LIMIT = exports.BORROWS_LIMIT = exports.MAINNET_BETA_CHAIN_ID = exports.SOL_DECIMALS = exports.MIN_AUTODELEVERAGE_BONUS_BPS = exports.SLOTS_PER_YEAR = exports.SLOTS_PER_DAY = exports.SLOTS_PER_HOUR = exports.SLOTS_PER_MINUTE = exports.SLOTS_PER_SECOND = exports.ONE_HUNDRED_PCT_IN_BPS = exports.CDN_ENDPOINT = exports.TOTAL_NUMBER_OF_IDS_TO_CHECK = exports.SECONDS_PER_YEAR = exports.INITIAL_COLLATERAL_RATE = exports.U64_MAX = exports.DEFAULT_KLEND_PROGRAM_ID = exports.STAGING_PROGRAM_ID = void 0;
|
|
7
7
|
exports.isENV = isENV;
|
|
8
8
|
exports.getApiEndpoint = getApiEndpoint;
|
|
9
9
|
exports.getProgramId = getProgramId;
|
|
@@ -81,4 +81,5 @@ exports.SOL_PADDING_FOR_INTEREST = new bn_js_1.default('1000000');
|
|
|
81
81
|
*/
|
|
82
82
|
exports.MIN_INITIAL_DEPOSIT = 100_000;
|
|
83
83
|
exports.MIN_VAULT_INITIAL_DEPOSIT = 1_000_000_000;
|
|
84
|
+
exports.VAULT_INITIAL_DEPOSIT = 1000;
|
|
84
85
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;AAiBA,sBAEC;AAED,wCAMC;AAMD,oCAMC;AAvCD,4DAAiC;AACjC,wDAAsD;AACtD,6CAA4C;AAC5C,kDAAuB;AAEV,QAAA,kBAAkB,GAAc,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AAC7F,QAAA,wBAAwB,GAAW,sBAAU,CAAC,QAAQ,EAAE,CAAC;AACzD,QAAA,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACtB,QAAA,uBAAuB,GAAG,IAAI,oBAAO,CAAC,wBAAwB,CAAC,CAAC;AAEhE,QAAA,gBAAgB,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAI/C,SAAgB,KAAK,CAAC,KAAU;IAC9B,OAAO,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,CAAC;AAChF,CAAC;AAED,SAAgB,cAAc,CAAC,SAAoB;IACjD,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAU,CAAC,EAAE,CAAC;QACjC,OAAO,gDAAgD,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,6DAA6D,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7F,CAAC;AACH,CAAC;AAEY,QAAA,YAAY,GAAG,uDAAuD,CAAC;AAEvE,QAAA,sBAAsB,GAAG,MAAM,CAAC;AAE7C,SAAgB,YAAY,CAAC,MAAkC,cAAc;IAC3E,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC3B,OAAO,sBAAU,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,0BAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACU,QAAA,gBAAgB,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEtD;;;GAGG;AACU,QAAA,cAAc,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEpD;;;GAGG;AACU,QAAA,aAAa,GAAG,sBAAc,GAAG,EAAE,CAAC;AAEjD;;;GAGG;AACU,QAAA,cAAc,GAAG,qBAAa,GAAG,GAAG,CAAC;AAElD;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAElC,QAAA,YAAY,GAAG,CAAC,CAAC;AAEjB,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAE5B,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,cAAc,GAAG,CAAC,CAAC;AAEnB,QAAA,yBAAyB,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACU,QAAA,wBAAwB,GAAG,IAAI,eAAE,CAAC,SAAS,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,yBAAyB,GAAG,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;;;;AAiBA,sBAEC;AAED,wCAMC;AAMD,oCAMC;AAvCD,4DAAiC;AACjC,wDAAsD;AACtD,6CAA4C;AAC5C,kDAAuB;AAEV,QAAA,kBAAkB,GAAc,IAAI,mBAAS,CAAC,6CAA6C,CAAC,CAAC;AAC7F,QAAA,wBAAwB,GAAW,sBAAU,CAAC,QAAQ,EAAE,CAAC;AACzD,QAAA,OAAO,GAAG,sBAAsB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACtB,QAAA,uBAAuB,GAAG,IAAI,oBAAO,CAAC,wBAAwB,CAAC,CAAC;AAEhE,QAAA,gBAAgB,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpD,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAI/C,SAAgB,KAAK,CAAC,KAAU;IAC9B,OAAO,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,CAAC;AAChF,CAAC;AAED,SAAgB,cAAc,CAAC,SAAoB;IACjD,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAU,CAAC,EAAE,CAAC;QACjC,OAAO,gDAAgD,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,6DAA6D,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7F,CAAC;AACH,CAAC;AAEY,QAAA,YAAY,GAAG,uDAAuD,CAAC;AAEvE,QAAA,sBAAsB,GAAG,MAAM,CAAC;AAE7C,SAAgB,YAAY,CAAC,MAAkC,cAAc;IAC3E,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC3B,OAAO,sBAAU,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,0BAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACU,QAAA,gBAAgB,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEtD;;;GAGG;AACU,QAAA,cAAc,GAAG,wBAAgB,GAAG,EAAE,CAAC;AAEpD;;;GAGG;AACU,QAAA,aAAa,GAAG,sBAAc,GAAG,EAAE,CAAC;AAEjD;;;GAGG;AACU,QAAA,cAAc,GAAG,qBAAa,GAAG,GAAG,CAAC;AAElD;;GAEG;AACU,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAElC,QAAA,YAAY,GAAG,CAAC,CAAC;AAEjB,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAE5B,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,cAAc,GAAG,CAAC,CAAC;AAEnB,QAAA,yBAAyB,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACU,QAAA,wBAAwB,GAAG,IAAI,eAAE,CAAC,SAAS,CAAC,CAAC;AAE1D;;GAEG;AACU,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,yBAAyB,GAAG,aAAa,CAAC;AAE1C,QAAA,qBAAqB,GAAG,IAAI,CAAC"}
|
package/package.json
CHANGED
package/src/classes/manager.ts
CHANGED
|
@@ -31,7 +31,6 @@ import {
|
|
|
31
31
|
assertNever,
|
|
32
32
|
CreateKaminoMarketParams,
|
|
33
33
|
createReserveIxs,
|
|
34
|
-
DEFAULT_RECENT_SLOT_DURATION_MS,
|
|
35
34
|
ENV,
|
|
36
35
|
getReserveOracleConfigs,
|
|
37
36
|
initLendingMarket,
|
|
@@ -100,19 +99,19 @@ export class KaminoManager {
|
|
|
100
99
|
|
|
101
100
|
constructor(
|
|
102
101
|
connection: Connection,
|
|
102
|
+
recentSlotDurationMs: number,
|
|
103
103
|
kaminoLendProgramId?: PublicKey,
|
|
104
|
-
kaminoVaultProgramId?: PublicKey
|
|
105
|
-
recentSlotDurationMs?: number
|
|
104
|
+
kaminoVaultProgramId?: PublicKey
|
|
106
105
|
) {
|
|
107
106
|
this._connection = connection;
|
|
107
|
+
this.recentSlotDurationMs = recentSlotDurationMs;
|
|
108
108
|
this._kaminoVaultProgramId = kaminoVaultProgramId ? kaminoVaultProgramId : kaminoVaultId;
|
|
109
109
|
this._kaminoLendProgramId = kaminoLendProgramId ? kaminoLendProgramId : PROGRAM_ID;
|
|
110
|
-
this.recentSlotDurationMs = recentSlotDurationMs ? recentSlotDurationMs : DEFAULT_RECENT_SLOT_DURATION_MS;
|
|
111
110
|
this._vaultClient = new KaminoVaultClient(
|
|
112
111
|
connection,
|
|
112
|
+
this.recentSlotDurationMs,
|
|
113
113
|
this._kaminoVaultProgramId,
|
|
114
|
-
this._kaminoLendProgramId
|
|
115
|
-
this.recentSlotDurationMs
|
|
114
|
+
this._kaminoLendProgramId
|
|
116
115
|
);
|
|
117
116
|
}
|
|
118
117
|
|
package/src/classes/market.ts
CHANGED
|
@@ -101,6 +101,10 @@ export class KaminoMarket {
|
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
if (recentSlotDurationMs <= 0) {
|
|
105
|
+
throw new Error('Recent slot duration cannot be 0');
|
|
106
|
+
}
|
|
107
|
+
|
|
104
108
|
const reserves = withReserves
|
|
105
109
|
? await getReservesForMarket(marketAddress, connection, programId, recentSlotDurationMs)
|
|
106
110
|
: new Map<PublicKey, KaminoReserve>();
|
package/src/classes/types.ts
CHANGED
|
@@ -3,9 +3,11 @@ import Decimal from 'decimal.js/decimal';
|
|
|
3
3
|
|
|
4
4
|
/** the populateLUTIxs should be executed in a separate transaction as we cannot create and populate a lookup table in the same tx */
|
|
5
5
|
export type InitVaultIxs = {
|
|
6
|
+
createAtaIfNeededIxs: TransactionInstruction[];
|
|
6
7
|
initVaultIxs: TransactionInstruction[];
|
|
7
8
|
createLUTIx: TransactionInstruction;
|
|
8
9
|
populateLUTIxs: TransactionInstruction[];
|
|
10
|
+
cleanupIxs: TransactionInstruction[];
|
|
9
11
|
};
|
|
10
12
|
|
|
11
13
|
export type AcceptVaultOwnershipIxs = {
|
|
@@ -59,3 +61,4 @@ export type APYs = {
|
|
|
59
61
|
grossAPY: Decimal;
|
|
60
62
|
netAPY: Decimal;
|
|
61
63
|
};
|
|
64
|
+
|
package/src/classes/vault.ts
CHANGED
|
@@ -64,9 +64,17 @@ import {
|
|
|
64
64
|
import { deposit } from '../idl_codegen_kamino_vault/instructions';
|
|
65
65
|
import { withdraw } from '../idl_codegen_kamino_vault/instructions';
|
|
66
66
|
import { PROGRAM_ID } from '../idl_codegen/programId';
|
|
67
|
-
import {
|
|
67
|
+
import { ReserveWithAddress } from './reserve';
|
|
68
68
|
import { Fraction } from './fraction';
|
|
69
|
-
import {
|
|
69
|
+
import {
|
|
70
|
+
createAtasIdempotent,
|
|
71
|
+
createWsolAtaIfMissing,
|
|
72
|
+
lendingMarketAuthPda,
|
|
73
|
+
PublicKeySet,
|
|
74
|
+
SECONDS_PER_YEAR,
|
|
75
|
+
U64_MAX,
|
|
76
|
+
VAULT_INITIAL_DEPOSIT,
|
|
77
|
+
} from '../utils';
|
|
70
78
|
import bs58 from 'bs58';
|
|
71
79
|
import { getAccountOwner, getProgramAccounts } from '../utils/rpc';
|
|
72
80
|
import {
|
|
@@ -115,14 +123,14 @@ export class KaminoVaultClient {
|
|
|
115
123
|
|
|
116
124
|
constructor(
|
|
117
125
|
connection: Connection,
|
|
126
|
+
recentSlotDurationMs: number,
|
|
118
127
|
kaminoVaultprogramId?: PublicKey,
|
|
119
|
-
kaminoLendProgramId?: PublicKey
|
|
120
|
-
recentSlotDurationMs?: number
|
|
128
|
+
kaminoLendProgramId?: PublicKey
|
|
121
129
|
) {
|
|
122
130
|
this._connection = connection;
|
|
131
|
+
this.recentSlotDurationMs = recentSlotDurationMs;
|
|
123
132
|
this._kaminoVaultProgramId = kaminoVaultprogramId ? kaminoVaultprogramId : kaminoVaultId;
|
|
124
133
|
this._kaminoLendProgramId = kaminoLendProgramId ? kaminoLendProgramId : PROGRAM_ID;
|
|
125
|
-
this.recentSlotDurationMs = recentSlotDurationMs ? recentSlotDurationMs : DEFAULT_RECENT_SLOT_DURATION_MS;
|
|
126
134
|
}
|
|
127
135
|
|
|
128
136
|
getConnection() {
|
|
@@ -199,12 +207,27 @@ export class KaminoVaultClient {
|
|
|
199
207
|
this._kaminoVaultProgramId
|
|
200
208
|
)[0];
|
|
201
209
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
210
|
+
let adminTokenAccount: PublicKey;
|
|
211
|
+
const prerequisiteIxs: TransactionInstruction[] = [];
|
|
212
|
+
const cleanupIxs: TransactionInstruction[] = [];
|
|
213
|
+
if (vaultConfig.tokenMint.equals(NATIVE_MINT)) {
|
|
214
|
+
const { wsolAta, createAtaIxs, closeAtaIxs } = await createWsolAtaIfMissing(
|
|
215
|
+
this.getConnection(),
|
|
216
|
+
new Decimal(VAULT_INITIAL_DEPOSIT),
|
|
217
|
+
vaultConfig.admin
|
|
218
|
+
);
|
|
219
|
+
adminTokenAccount = wsolAta;
|
|
220
|
+
|
|
221
|
+
prerequisiteIxs.push(...createAtaIxs);
|
|
222
|
+
cleanupIxs.push(...closeAtaIxs);
|
|
223
|
+
} else {
|
|
224
|
+
adminTokenAccount = getAssociatedTokenAddressSync(
|
|
225
|
+
vaultConfig.tokenMint,
|
|
226
|
+
vaultConfig.admin,
|
|
227
|
+
false,
|
|
228
|
+
vaultConfig.tokenMintProgramId
|
|
229
|
+
);
|
|
230
|
+
}
|
|
208
231
|
|
|
209
232
|
const initVaultAccounts: InitVaultAccounts = {
|
|
210
233
|
adminAuthority: vaultConfig.admin,
|
|
@@ -277,7 +300,16 @@ export class KaminoVaultClient {
|
|
|
277
300
|
ixns.push(setNameIx);
|
|
278
301
|
}
|
|
279
302
|
|
|
280
|
-
return {
|
|
303
|
+
return {
|
|
304
|
+
vault: vaultState,
|
|
305
|
+
initVaultIxs: {
|
|
306
|
+
createAtaIfNeededIxs: prerequisiteIxs,
|
|
307
|
+
initVaultIxs: ixns,
|
|
308
|
+
createLUTIx,
|
|
309
|
+
populateLUTIxs: insertIntoLUTIxs,
|
|
310
|
+
cleanupIxs,
|
|
311
|
+
},
|
|
312
|
+
};
|
|
281
313
|
}
|
|
282
314
|
|
|
283
315
|
/**
|
|
@@ -1315,7 +1347,7 @@ export class KaminoVaultClient {
|
|
|
1315
1347
|
};
|
|
1316
1348
|
|
|
1317
1349
|
const withdrawFromAvailableArgs: WithdrawFromAvailableArgs = {
|
|
1318
|
-
sharesAmount: new BN(shareAmountLamports.toString()),
|
|
1350
|
+
sharesAmount: new BN(shareAmountLamports.floor().toString()),
|
|
1319
1351
|
};
|
|
1320
1352
|
|
|
1321
1353
|
return withdrawFromAvailable(withdrawFromAvailableArgs, withdrawFromAvailableAccounts, this._kaminoVaultProgramId);
|