@perena/bankineco-services 1.0.3 → 1.0.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/oracle/updateDriftVaultPendingYield.d.ts +3 -0
- package/dist/oracle/updateDriftVaultPendingYield.d.ts.map +1 -0
- package/dist/oracle/updateDriftVaultPendingYield.js +51 -0
- package/dist/oracle/updateDriftVaultPendingYield.js.map +1 -0
- package/dist/oracle/updateSeedLPPrice.d.ts.map +1 -1
- package/dist/oracle/updateSeedLPPrice.js +3 -10
- package/dist/oracle/updateSeedLPPrice.js.map +1 -1
- package/dist/utils/drift.d.ts +23 -0
- package/dist/utils/drift.d.ts.map +1 -0
- package/dist/utils/drift.js +90 -0
- package/dist/utils/drift.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/oracle.d.ts +6 -0
- package/dist/utils/oracle.d.ts.map +1 -0
- package/dist/utils/oracle.js +31 -0
- package/dist/utils/oracle.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateDriftVaultPendingYield.d.ts","sourceRoot":"","sources":["../../src/oracle/updateDriftVaultPendingYield.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,WAAW,EASZ,MAAM,uBAAuB,CAAC;AA0F/B,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAQf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runUpdateDriftVaultPendingYield = runUpdateDriftVaultPendingYield;
|
|
4
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
+
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
async function updateDriftVaultPendingYield(bankineco, signerKeypairFp) {
|
|
9
|
+
await (0, utils_1.oracleReport)(signerKeypairFp);
|
|
10
|
+
const yieldingMint = new web3_js_1.PublicKey(bankineco_sdk_1.USDC_MINT);
|
|
11
|
+
const decimals = bankineco_sdk_1.USDC_DECIMALS;
|
|
12
|
+
const vaultState = bankineco.vaultPDA(bankineco.bankPDA(bankineco_sdk_1.USD_STAR_BANK_INDEX), yieldingMint, bankineco_sdk_1.DRIFT_USDC_CONTRACT_INDEX);
|
|
13
|
+
const oracleState = bankineco.oraclePDA(vaultState);
|
|
14
|
+
const oracleInfo = await bankineco.pg.account.oracleGenState.fetch(oracleState);
|
|
15
|
+
let associatedOracleIdx = oracleInfo.data.oracleRegistry.findIndex((x) => bankineco.provider.wallet.publicKey.equals(x));
|
|
16
|
+
const signerIsRegisteredOracle = associatedOracleIdx !== -1;
|
|
17
|
+
if (!signerIsRegisteredOracle) {
|
|
18
|
+
// Just to test the logic afterwards, no TX will be sent
|
|
19
|
+
associatedOracleIdx = 0;
|
|
20
|
+
}
|
|
21
|
+
const currentOracleUiYields = oracleInfo.data.oraclePendingYield.map((x) => (0, bankineco_sdk_1.toUiAmount)(x, decimals));
|
|
22
|
+
const currentReportedUiYield = (0, bankineco_sdk_1.toUiAmount)(oracleInfo.data.oraclePendingYield[associatedOracleIdx], decimals);
|
|
23
|
+
const lastUpdatedTs = oracleInfo.data.oracleLastTs[associatedOracleIdx];
|
|
24
|
+
const impliedYield = await (0, utils_1.getPendingDriftYield)(bankineco, vaultState, yieldingMint);
|
|
25
|
+
const impliedUiYield = (0, bankineco_sdk_1.toUiAmount)(impliedYield, bankineco_sdk_1.USDC_DECIMALS);
|
|
26
|
+
const diffMs = Date.now() - lastUpdatedTs.toNumber() * 1000;
|
|
27
|
+
const hoursSinceLastUpdate = diffMs / (1000 * 60 * 60);
|
|
28
|
+
console.log("Current oracle index: ", associatedOracleIdx);
|
|
29
|
+
console.log("All reported yield: ", currentOracleUiYields);
|
|
30
|
+
console.log("Current reported yield: ", currentReportedUiYield);
|
|
31
|
+
console.log("Hours since last update: ", hoursSinceLastUpdate);
|
|
32
|
+
console.log("Implied pending yield: ", impliedUiYield);
|
|
33
|
+
const priceDiffBps = Math.floor(Math.abs((currentReportedUiYield / impliedUiYield - 1) * 100000));
|
|
34
|
+
if (priceDiffBps > 5 || hoursSinceLastUpdate >= 23) {
|
|
35
|
+
console.log("Updating yield to ", impliedUiYield, " vs. a yield of ", currentReportedUiYield);
|
|
36
|
+
if (signerIsRegisteredOracle) {
|
|
37
|
+
console.log("Sending yield update...");
|
|
38
|
+
const sig = await (0, bankineco_sdk_1.signSendAndConfirm)(bankineco.connection, await bankineco.updateYieldingInfo(bankineco_sdk_1.USD_STAR_BANK_INDEX, vaultState, bankineco.provider.publicKey, yieldingMint, impliedYield), [bankineco.provider.wallet]);
|
|
39
|
+
console.log("Success broadcasting yield, tx ", sig);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log("Not updating yield, contract yield is up to date");
|
|
44
|
+
console.log("Difference in bps: ", priceDiffBps);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function runUpdateDriftVaultPendingYield(env, signerKeypairFp, rpcUrl) {
|
|
48
|
+
const bankineco = new bankineco_sdk_1.BankinecoProgram(env, (0, bankineco_sdk_1.createAnchorProvider)(rpcUrl, new anchor_1.Wallet((0, bankineco_sdk_1.readKeypairFile)(signerKeypairFp))));
|
|
49
|
+
await updateDriftVaultPendingYield(bankineco, signerKeypairFp);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=updateDriftVaultPendingYield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateDriftVaultPendingYield.js","sourceRoot":"","sources":["../../src/oracle/updateDriftVaultPendingYield.ts"],"names":[],"mappings":";;AAwGA,0EAWC;AAnHD,8CAA2C;AAC3C,yDAa+B;AAC/B,oCAA8D;AAC9D,6CAA4C;AAE5C,KAAK,UAAU,4BAA4B,CACzC,SAA2B,EAC3B,eAAuB;IAEvB,MAAM,IAAA,oBAAY,EAAC,eAAe,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,IAAI,mBAAS,CAAC,yBAAS,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,6BAAa,CAAC;IAE/B,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CACnC,SAAS,CAAC,OAAO,CAAC,mCAAmB,CAAC,EACtC,YAAY,EACZ,yCAAyB,CAC1B,CAAC;IACF,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAChE,WAAW,CACZ,CAAC;IACF,IAAI,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACvE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAC9C,CAAC;IACF,MAAM,wBAAwB,GAAG,mBAAmB,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,wDAAwD;QACxD,mBAAmB,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,qBAAqB,GAAG,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzE,IAAA,0BAAU,EAAC,CAAC,EAAE,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,sBAAsB,GAAG,IAAA,0BAAU,EACvC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,EACvD,QAAQ,CACT,CAAC;IACF,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,MAAM,IAAA,4BAAoB,EAC7C,SAAS,EACT,UAAU,EACV,YAAY,CACb,CAAC;IACF,MAAM,cAAc,GAAG,IAAA,0BAAU,EAAC,YAAY,EAAE,6BAAa,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC5D,MAAM,oBAAoB,GAAG,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,sBAAsB,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,oBAAoB,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,cAAc,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,sBAAsB,GAAG,cAAc,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CACjE,CAAC;IACF,IAAI,YAAY,GAAG,CAAC,IAAI,oBAAoB,IAAI,EAAE,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CACT,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,CACvB,CAAC;QAEF,IAAI,wBAAwB,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,MAAM,IAAA,kCAAkB,EAClC,SAAS,CAAC,UAAU,EACpB,MAAM,SAAS,CAAC,kBAAkB,CAChC,mCAAmB,EACnB,UAAU,EACV,SAAS,CAAC,QAAQ,CAAC,SAAS,EAC5B,YAAY,EACZ,YAAY,CACb,EACD,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC5B,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,+BAA+B,CACnD,GAAgB,EAChB,eAAuB,EACvB,MAAc;IAEd,MAAM,SAAS,GAAG,IAAI,gCAAgB,CACpC,GAAG,EACH,IAAA,oCAAoB,EAAC,MAAM,EAAE,IAAI,eAAM,CAAC,IAAA,+BAAe,EAAC,eAAe,CAAC,CAAC,CAAC,CAC3E,CAAC;IAEF,MAAM,4BAA4B,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,WAAW,EAQZ,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,WAAW,EAQZ,MAAM,uBAAuB,CAAC;AA+F/B,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAQf"}
|
|
@@ -6,14 +6,7 @@ const anchor_1 = require("@coral-xyz/anchor");
|
|
|
6
6
|
const utils_1 = require("../utils");
|
|
7
7
|
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
8
8
|
async function updatePrice(bankineco, signerKeypairFp) {
|
|
9
|
-
|
|
10
|
-
let reporting_url = "http://116.202.213.144:91/api/report_oracle_1";
|
|
11
|
-
fetch(reporting_url).catch((err) => console.error("API doesnt seam accessible : Fetch failed:", err));
|
|
12
|
-
}
|
|
13
|
-
if ((0, bankineco_sdk_1.readKeypairFile)(signerKeypairFp).publicKey.toString() == bankineco_sdk_1.DEFAULT_ORACLE_TWO) {
|
|
14
|
-
let reporting_url = "http://116.202.213.144:91/api/report_oracle_2";
|
|
15
|
-
fetch(reporting_url).catch((err) => console.error("API doesnt seam accessible : Fetch failed:", err));
|
|
16
|
-
}
|
|
9
|
+
await (0, utils_1.oracleReport)(signerKeypairFp);
|
|
17
10
|
const vaultState = bankineco.vaultPDA(bankineco.bankPDA(bankineco_sdk_1.USD_STAR_BANK_INDEX), new web3_js_1.PublicKey(bankineco_sdk_1.OLD_USD_STAR), bankineco_sdk_1.OLD_USD_STAR_CONTRACT_INDEX);
|
|
18
11
|
const oracleState = bankineco.oraclePDA(vaultState);
|
|
19
12
|
const oracleInfo = await bankineco.pg.account.oracleGenState.fetch(oracleState);
|
|
@@ -36,7 +29,7 @@ async function updatePrice(bankineco, signerKeypairFp) {
|
|
|
36
29
|
return;
|
|
37
30
|
}
|
|
38
31
|
if (impliedPrice == -1) {
|
|
39
|
-
console.log("Error getting Seedpool price
|
|
32
|
+
console.log("Error getting Seedpool price");
|
|
40
33
|
return;
|
|
41
34
|
}
|
|
42
35
|
const diffMs = Date.now() - lastUpdatedTs.toNumber() * 1000;
|
|
@@ -49,8 +42,8 @@ async function updatePrice(bankineco, signerKeypairFp) {
|
|
|
49
42
|
const priceDiffBps = Math.floor(Math.abs((currentReportedUiPrice / impliedPrice - 1) * 100000));
|
|
50
43
|
if (priceDiffBps > 5 || hoursSinceLastUpdate >= 23) {
|
|
51
44
|
console.log("Updating price to ", impliedPrice, " vs. a current price of ", currentReportedUiPrice);
|
|
52
|
-
console.log("Sending price update...");
|
|
53
45
|
if (signerIsRegisteredOracle) {
|
|
46
|
+
console.log("Sending price update...");
|
|
54
47
|
const sig = await (0, bankineco_sdk_1.signSendAndConfirm)(bankineco.connection, await bankineco.updateYieldingPriceGen(bankineco_sdk_1.USD_STAR_BANK_INDEX, vaultState, bankineco.provider.publicKey, new web3_js_1.PublicKey(bankineco_sdk_1.OLD_USD_STAR), (0, bankineco_sdk_1.fromUiAmount)(impliedPrice, 6)), [bankineco.provider.wallet]);
|
|
55
48
|
console.log("Success broadcasting price, tx ", sig);
|
|
56
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DriftClient } from "@drift-labs/sdk";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { AnchorProvider, BN } from "@coral-xyz/anchor";
|
|
4
|
+
import { Transaction } from "@solana/web3.js";
|
|
5
|
+
import { BankinecoProgram } from "@perena/bankineco-sdk";
|
|
6
|
+
export declare function getDriftClient(provider: AnchorProvider, signer?: PublicKey): Promise<DriftClient>;
|
|
7
|
+
export declare function getFirstMarketForMint(mint: PublicKey): import("@drift-labs/sdk").SpotMarketConfig;
|
|
8
|
+
export declare function initializeDriftUserTxIfNeeded(drift: DriftClient, wallet: PublicKey): Promise<Transaction | undefined>;
|
|
9
|
+
export declare function getDriftDepositIx(drift: DriftClient, amount: BN, marketIndex: number, associatedTokenAccount: PublicKey): Promise<import("@solana/web3.js").TransactionInstruction[]>;
|
|
10
|
+
export declare function getDriftWithdrawIx(drift: DriftClient, amount: BN, marketIndex: number, associatedTokenAccount: PublicKey): Promise<import("@solana/web3.js").TransactionInstruction>;
|
|
11
|
+
interface DriftInteractionParams {
|
|
12
|
+
bankIndex: number;
|
|
13
|
+
vaultState: PublicKey;
|
|
14
|
+
externalYieldManager: PublicKey;
|
|
15
|
+
yieldingMint: PublicKey;
|
|
16
|
+
amount: BN;
|
|
17
|
+
yieldingMintProgram?: PublicKey;
|
|
18
|
+
driftMarketIndex: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function teamDriftInteractionTx(action: "deposit" | "withdraw" | "pull-yield", bankineco: BankinecoProgram, drift: DriftClient, params: DriftInteractionParams): Promise<Transaction>;
|
|
21
|
+
export declare function getDriftUserBalance(drift: DriftClient, user: PublicKey, marketIndex: number, subAccountId?: number): Promise<BN>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=drift.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/utils/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EASZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAqBzD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,SAAS,wBAsBnB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,8CAEpD;AAED,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,SAAS,oCAOlB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EACnB,sBAAsB,EAAE,SAAS,+DAOlC;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EACnB,sBAAsB,EAAE,SAAS,6DAGlC;AAED,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC;IACtB,oBAAoB,EAAE,SAAS,CAAC;IAChC,YAAY,EAAE,SAAS,CAAC;IACxB,MAAM,EAAE,EAAE,CAAC;IACX,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,EAC7C,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,sBAAsB,wBA4D/B;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,EAAE,CAAC,CAyBb"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDriftClient = getDriftClient;
|
|
4
|
+
exports.getFirstMarketForMint = getFirstMarketForMint;
|
|
5
|
+
exports.initializeDriftUserTxIfNeeded = initializeDriftUserTxIfNeeded;
|
|
6
|
+
exports.getDriftDepositIx = getDriftDepositIx;
|
|
7
|
+
exports.getDriftWithdrawIx = getDriftWithdrawIx;
|
|
8
|
+
exports.teamDriftInteractionTx = teamDriftInteractionTx;
|
|
9
|
+
exports.getDriftUserBalance = getDriftUserBalance;
|
|
10
|
+
const sdk_1 = require("@drift-labs/sdk");
|
|
11
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
12
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
13
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
14
|
+
const web3_js_2 = require("@solana/web3.js");
|
|
15
|
+
async function getDriftUserClient(provider, drift) {
|
|
16
|
+
const bulkAccountLoader = new sdk_1.BulkAccountLoader(provider.connection, "confirmed", 1000);
|
|
17
|
+
return new sdk_1.User({
|
|
18
|
+
driftClient: drift,
|
|
19
|
+
userAccountPublicKey: await drift.getUserAccountPublicKey(),
|
|
20
|
+
accountSubscription: {
|
|
21
|
+
type: "polling",
|
|
22
|
+
accountLoader: bulkAccountLoader,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
async function getDriftClient(provider, signer) {
|
|
27
|
+
const sdkConfig = (0, sdk_1.initialize)({ env: "mainnet-beta" });
|
|
28
|
+
const bulkAccountLoader = new sdk_1.BulkAccountLoader(provider.connection, "confirmed", 1000);
|
|
29
|
+
const client = new sdk_1.DriftClient({
|
|
30
|
+
connection: provider.connection,
|
|
31
|
+
wallet: provider.wallet,
|
|
32
|
+
programID: new web3_js_1.PublicKey(sdkConfig.DRIFT_PROGRAM_ID),
|
|
33
|
+
accountSubscription: {
|
|
34
|
+
type: "polling",
|
|
35
|
+
accountLoader: bulkAccountLoader,
|
|
36
|
+
},
|
|
37
|
+
authority: signer ? signer : undefined,
|
|
38
|
+
});
|
|
39
|
+
await client.subscribe();
|
|
40
|
+
return client;
|
|
41
|
+
}
|
|
42
|
+
function getFirstMarketForMint(mint) {
|
|
43
|
+
return sdk_1.MainnetSpotMarkets.find((x) => x.mint.equals(mint));
|
|
44
|
+
}
|
|
45
|
+
async function initializeDriftUserTxIfNeeded(drift, wallet) {
|
|
46
|
+
const user = drift.getUser(0, wallet);
|
|
47
|
+
const userExists = await user.exists();
|
|
48
|
+
return !userExists
|
|
49
|
+
? new web3_js_2.Transaction().add(...(await drift.getInitializeUserAccountIxs())[0])
|
|
50
|
+
: undefined;
|
|
51
|
+
}
|
|
52
|
+
async function getDriftDepositIx(drift, amount, marketIndex, associatedTokenAccount) {
|
|
53
|
+
return await drift.getDepositTxnIx(amount, marketIndex, associatedTokenAccount);
|
|
54
|
+
}
|
|
55
|
+
async function getDriftWithdrawIx(drift, amount, marketIndex, associatedTokenAccount) {
|
|
56
|
+
return await drift.getWithdrawIx(amount, marketIndex, associatedTokenAccount);
|
|
57
|
+
}
|
|
58
|
+
async function teamDriftInteractionTx(action, bankineco, drift, params) {
|
|
59
|
+
const eyManagerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(params.yieldingMint, params.externalYieldManager, true, params.yieldingMintProgram);
|
|
60
|
+
if (action === "deposit") {
|
|
61
|
+
const teamWithdrawIx = await bankineco.teamWithdrawsToInvest(params.bankIndex, params.vaultState, params.externalYieldManager, params.yieldingMint, params.amount, params.yieldingMintProgram);
|
|
62
|
+
const driftDepositIx = await getDriftDepositIx(drift, params.amount, params.driftMarketIndex, eyManagerAta);
|
|
63
|
+
return new web3_js_2.Transaction().add(teamWithdrawIx, ...driftDepositIx);
|
|
64
|
+
}
|
|
65
|
+
else if (action === "withdraw") {
|
|
66
|
+
const driftWithdrawalIx = await getDriftWithdrawIx(drift, params.amount, params.driftMarketIndex, eyManagerAta);
|
|
67
|
+
const teamDepositIx = await bankineco.teamDepositsFromInvest(params.bankIndex, params.vaultState, params.externalYieldManager, params.yieldingMint, params.amount, params.yieldingMintProgram);
|
|
68
|
+
return new web3_js_2.Transaction().add(driftWithdrawalIx, teamDepositIx);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const driftWithdrawalIx = await getDriftWithdrawIx(drift, params.amount, params.driftMarketIndex, eyManagerAta);
|
|
72
|
+
const updateYieldAmountIx = await bankineco.updateYieldingAmount(params.bankIndex, params.vaultState, params.externalYieldManager, params.yieldingMint, params.amount, false, params.yieldingMintProgram);
|
|
73
|
+
return new web3_js_2.Transaction().add(driftWithdrawalIx, updateYieldAmountIx);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async function getDriftUserBalance(drift, user, marketIndex, subAccountId) {
|
|
77
|
+
const driftUser = drift.getUser(subAccountId, user);
|
|
78
|
+
const spotPosition = driftUser.getSpotPosition(marketIndex);
|
|
79
|
+
if (!spotPosition) {
|
|
80
|
+
console.log(`[getDriftUserBalance] No spot position found, returning 0`);
|
|
81
|
+
return new anchor_1.BN(0);
|
|
82
|
+
}
|
|
83
|
+
const spotMarketAccount = drift.getSpotMarketAccount(marketIndex);
|
|
84
|
+
if (!spotMarketAccount) {
|
|
85
|
+
throw new Error(`Spot market account not found for market index ${marketIndex}`);
|
|
86
|
+
}
|
|
87
|
+
const tokenBalance = (0, sdk_1.getTokenAmount)(spotPosition.scaledBalance, spotMarketAccount, spotPosition.balanceType);
|
|
88
|
+
return tokenBalance;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/utils/drift.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -15,4 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./numeraire"), exports);
|
|
18
|
+
__exportStar(require("./drift"), exports);
|
|
19
|
+
__exportStar(require("./oracle"), exports);
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0CAAwB;AACxB,2CAAyB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BankinecoProgram } from "@perena/bankineco-sdk";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { BN } from "@coral-xyz/anchor";
|
|
4
|
+
export declare function oracleReport(signerKeypairFp: string): Promise<void>;
|
|
5
|
+
export declare function getPendingDriftYield(bankineco: BankinecoProgram, vaultState: PublicKey, eyMint: PublicKey, eyMintProgram?: PublicKey): Promise<BN>;
|
|
6
|
+
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAQjB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAOvC,wBAAsB,YAAY,CAAC,eAAe,EAAE,MAAM,iBAazD;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,SAAS,EACjB,aAAa,YAAmB,eA2BjC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oracleReport = oracleReport;
|
|
4
|
+
exports.getPendingDriftYield = getPendingDriftYield;
|
|
5
|
+
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
6
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
7
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
const drift_1 = require("./drift");
|
|
9
|
+
async function oracleReport(signerKeypairFp) {
|
|
10
|
+
const signer = (0, bankineco_sdk_1.readKeypairFile)(signerKeypairFp).publicKey;
|
|
11
|
+
const url = {
|
|
12
|
+
[bankineco_sdk_1.DEFAULT_ORACLE_ONE]: "http://116.202.213.144:91/api/report_oracle_1",
|
|
13
|
+
[bankineco_sdk_1.DEFAULT_ORACLE_TWO]: "http://116.202.213.144:91/api/report_oracle_2",
|
|
14
|
+
};
|
|
15
|
+
if (signer.toString() in url) {
|
|
16
|
+
await fetch(url[signer.toString()]).catch((err) => console.error("API doesnt seam accessible : Fetch failed:", err));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function getPendingDriftYield(bankineco, vaultState, eyMint, eyMintProgram = spl_token_1.TOKEN_PROGRAM_ID) {
|
|
20
|
+
const teamInfo = await bankineco.pg.account.teamGenState.fetch(bankineco.teamPDA(vaultState));
|
|
21
|
+
const eyManager = teamInfo.details.externalYieldManager;
|
|
22
|
+
const eyManagerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(eyMint, eyManager, true, eyMintProgram);
|
|
23
|
+
const ataBalance = await (0, bankineco_sdk_1.getTokenBalance)(bankineco.provider, eyManagerAta);
|
|
24
|
+
const drift = await (0, drift_1.getDriftClient)(bankineco.provider, eyManager);
|
|
25
|
+
const totalExternalLiquidity = teamInfo.accounting.netYieldingToDepositBack;
|
|
26
|
+
const liquidityInDrift = await (0, drift_1.getDriftUserBalance)(drift, eyManager, (0, drift_1.getFirstMarketForMint)(new web3_js_1.PublicKey(bankineco_sdk_1.USDC_MINT)).marketIndex);
|
|
27
|
+
const liquidityCirculating = liquidityInDrift.addn(ataBalance);
|
|
28
|
+
const pendingYield = liquidityCirculating.sub(totalExternalLiquidity);
|
|
29
|
+
return pendingYield;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=oracle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":";;AAsBA,oCAaC;AAED,oDA+BC;AApED,yDAS+B;AAC/B,iDAG2B;AAC3B,6CAA4C;AAE5C,mCAIiB;AAEV,KAAK,UAAU,YAAY,CAAC,eAAuB;IACxD,MAAM,MAAM,GAAG,IAAA,+BAAe,EAAC,eAAe,CAAC,CAAC,SAAS,CAAC;IAE1D,MAAM,GAAG,GAA8B;QACrC,CAAC,kCAAkB,CAAC,EAAE,+CAA+C;QACrE,CAAC,kCAAkB,CAAC,EAAE,+CAA+C;KACtE,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAChD,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,GAAG,CAAC,CACjE,CAAC;IACJ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,SAA2B,EAC3B,UAAqB,EACrB,MAAiB,EACjB,aAAa,GAAG,4BAAgB;IAEhC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAC5D,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAC9B,CAAC;IACF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxD,MAAM,YAAY,GAAG,IAAA,yCAA6B,EAChD,MAAM,EACN,SAAS,EACT,IAAI,EACJ,aAAa,CACd,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,IAAA,+BAAe,EAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,MAAM,IAAA,sBAAc,EAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAElE,MAAM,sBAAsB,GAAG,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC;IAC5E,MAAM,gBAAgB,GAAG,MAAM,IAAA,2BAAmB,EAChD,KAAK,EACL,SAAS,EACT,IAAA,6BAAqB,EAAC,IAAI,mBAAS,CAAC,yBAAS,CAAC,CAAC,CAAC,WAAW,CAC5D,CAAC;IACF,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEtE,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@perena/bankineco-services",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Services infra for maintaining Bankineco program on Solana.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -25,11 +25,13 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@coral-xyz/anchor": "=0.30.1",
|
|
28
|
-
"@
|
|
28
|
+
"@drift-labs/sdk": "=2.137.0",
|
|
29
|
+
"@perena/bankineco-sdk": "=1.0.36",
|
|
29
30
|
"@perena/numeraire-sdk": "^1.1.1",
|
|
30
31
|
"@solana/spl-token": "=0.4.13",
|
|
31
32
|
"@solana/web3.js": "=1.98.4",
|
|
32
|
-
"@sqds/multisig": "^2.1.4"
|
|
33
|
+
"@sqds/multisig": "^2.1.4",
|
|
34
|
+
"rpc-websockets": "=7.5.1"
|
|
33
35
|
},
|
|
34
36
|
"devDependencies": {
|
|
35
37
|
"@types/bn.js": "^5.1.0",
|