@perena/bankineco-services 1.0.32 → 1.0.34
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/{constants.d.ts → constants/general.d.ts} +3 -4
- package/dist/constants/general.d.ts.map +1 -0
- package/dist/{constants.js → constants/general.js} +4 -5
- package/dist/constants/general.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +18 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/oracle/index.d.ts +1 -0
- package/dist/oracle/index.d.ts.map +1 -1
- package/dist/oracle/index.js +1 -0
- package/dist/oracle/index.js.map +1 -1
- package/dist/oracle/updateMarginfiVaultPendingYield.d.ts +6 -0
- package/dist/oracle/updateMarginfiVaultPendingYield.d.ts.map +1 -0
- package/dist/oracle/updateMarginfiVaultPendingYield.js +23 -0
- package/dist/oracle/updateMarginfiVaultPendingYield.js.map +1 -0
- package/dist/utils/drift.d.ts.map +1 -1
- package/dist/utils/drift.js +1 -1
- package/dist/utils/drift.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/marginfi.d.ts +46 -0
- package/dist/utils/marginfi.d.ts.map +1 -0
- package/dist/utils/marginfi.js +101 -0
- package/dist/utils/marginfi.js.map +1 -0
- package/dist/utils/oracle.d.ts.map +1 -1
- package/dist/utils/oracle.js +2 -1
- package/dist/utils/oracle.js.map +1 -1
- package/package.json +3 -2
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { Environment } from "@perena/bankineco-sdk";
|
|
2
2
|
export declare const LITTLE_ENGINE_TEST_ACCOUNT = "little-engine-test";
|
|
3
|
-
export declare const LITTLE_ENGINE_PROD_ACCOUNT = "little-engine-
|
|
4
|
-
export declare const LITTLE_ENGINE_BOOSTED_ACCOUNT = "little-engine-
|
|
5
|
-
export declare const TREASURY_ACCOUNT = "treasury-account-test2";
|
|
3
|
+
export declare const LITTLE_ENGINE_PROD_ACCOUNT = "little-engine-prod6";
|
|
4
|
+
export declare const LITTLE_ENGINE_BOOSTED_ACCOUNT = "little-engine-prod6-boosted";
|
|
6
5
|
export declare const LE_ACCOUNTS: Record<Environment, string[]>;
|
|
7
6
|
export declare const TEST_LE_CUSTODIAN = "64nZHh2DBKEkH7PC1Vo7DHRE6k5MohcnqcDyM6evwEn8";
|
|
8
7
|
export declare const PROD_LE_CUSTODIAN = "58ubrW9j4SJ28oYoJauGbnSbCCyycrFiQNV6zu3XX5HZ";
|
|
9
8
|
export declare const LE_CUSTODIAN: Record<Environment, string>;
|
|
10
9
|
export declare const LE_YIELD_START_MARKER: Date | undefined;
|
|
11
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=general.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,6BAA6B,gCAAgC,CAAC;AAC3E,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAIrD,CAAC;AAEF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAChF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAChF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAIpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBAErB,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LE_YIELD_START_MARKER = exports.LE_CUSTODIAN = exports.PROD_LE_CUSTODIAN = exports.TEST_LE_CUSTODIAN = exports.LE_ACCOUNTS = exports.
|
|
3
|
+
exports.LE_YIELD_START_MARKER = exports.LE_CUSTODIAN = exports.PROD_LE_CUSTODIAN = exports.TEST_LE_CUSTODIAN = exports.LE_ACCOUNTS = exports.LITTLE_ENGINE_BOOSTED_ACCOUNT = exports.LITTLE_ENGINE_PROD_ACCOUNT = exports.LITTLE_ENGINE_TEST_ACCOUNT = void 0;
|
|
4
4
|
exports.LITTLE_ENGINE_TEST_ACCOUNT = "little-engine-test";
|
|
5
|
-
exports.LITTLE_ENGINE_PROD_ACCOUNT = "little-engine-
|
|
6
|
-
exports.LITTLE_ENGINE_BOOSTED_ACCOUNT = "little-engine-
|
|
7
|
-
exports.TREASURY_ACCOUNT = "treasury-account-test2";
|
|
5
|
+
exports.LITTLE_ENGINE_PROD_ACCOUNT = "little-engine-prod6";
|
|
6
|
+
exports.LITTLE_ENGINE_BOOSTED_ACCOUNT = "little-engine-prod6-boosted";
|
|
8
7
|
exports.LE_ACCOUNTS = {
|
|
9
8
|
local: [],
|
|
10
9
|
test: [exports.LITTLE_ENGINE_TEST_ACCOUNT],
|
|
@@ -20,4 +19,4 @@ exports.LE_CUSTODIAN = {
|
|
|
20
19
|
exports.LE_YIELD_START_MARKER = process.env.LE_YIELD_START_MARKER
|
|
21
20
|
? new Date(process.env.LE_YIELD_START_MARKER)
|
|
22
21
|
: undefined;
|
|
23
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=general.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAClD,QAAA,0BAA0B,GAAG,qBAAqB,CAAC;AACnD,QAAA,6BAA6B,GAAG,6BAA6B,CAAC;AAC9D,QAAA,WAAW,GAAkC;IACxD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,kCAA0B,CAAC;IAClC,IAAI,EAAE,CAAC,kCAA0B,EAAE,qCAA6B,CAAC;CAClE,CAAC;AAEW,QAAA,iBAAiB,GAAG,8CAA8C,CAAC,CAAC,sBAAsB;AAC1F,QAAA,iBAAiB,GAAG,8CAA8C,CAAC;AACnE,QAAA,YAAY,GAAgC;IACvD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,yBAAiB;IACvB,IAAI,EAAE,yBAAiB;CACxB,CAAC;AAEW,QAAA,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACpE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC7C,CAAC,CAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./general"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
|
package/dist/oracle/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oracle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/oracle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC"}
|
package/dist/oracle/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./updateSeedLPPrice"), exports);
|
|
18
18
|
__exportStar(require("./updateLEPendingYield"), exports);
|
|
19
19
|
__exportStar(require("./updateDriftVaultPendingYield"), exports);
|
|
20
|
+
__exportStar(require("./updateMarginfiVaultPendingYield"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/dist/oracle/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oracle/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,iEAA+C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/oracle/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Environment, MarginfiVaultTag } from "@perena/bankineco-sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Runner function for oracle service
|
|
4
|
+
*/
|
|
5
|
+
export declare function runUpdateMarginFiVaultPendingYield(env: Environment, signerKeypairFp: string, rpcUrl: string, marginfiVaultTag: MarginfiVaultTag, reportingDiscount?: number): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=updateMarginfiVaultPendingYield.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateMarginfiVaultPendingYield.d.ts","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAIX,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AA4C/B;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,CAAC,EAAE,MAAM,iBAQ3B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runUpdateMarginFiVaultPendingYield = runUpdateMarginFiVaultPendingYield;
|
|
4
|
+
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const marginfi_1 = require("../utils/marginfi");
|
|
7
|
+
async function updateMarginFiVaultPendingYield(bankineco, marginfiVaultTag, reportingDiscount) {
|
|
8
|
+
const marginfiClient = await (0, marginfi_1.getMarginfiClient)(bankineco.provider.connection);
|
|
9
|
+
const vaultPosition = bankineco_sdk_1.MARGINFI_VAULT_POSITIONS[bankineco.environment][marginfiVaultTag];
|
|
10
|
+
const poolAccounts = bankineco_sdk_1.MARGINFI_POOL_ACCOUNTS[marginfiVaultTag];
|
|
11
|
+
const vault = bankineco.vaultPDA(bankineco.bankPDA(bankineco_sdk_1.USD_STAR_BANK_INDEX), vaultPosition.yieldingMint, vaultPosition.yieldingTokenIndex);
|
|
12
|
+
const marginfiAccount = bankineco.marginfiAccountPDA(vault, poolAccounts.group, vaultPosition.accountIndex, vaultPosition.thirdPartyId);
|
|
13
|
+
const impliedYield = await (0, marginfi_1.getPendingMarginFiYield)(marginfiClient, bankineco, vault, marginfiAccount, poolAccounts.bank);
|
|
14
|
+
await (0, utils_1.updateYieldInfoIfNeeded)(bankineco, vault, impliedYield, reportingDiscount);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Runner function for oracle service
|
|
18
|
+
*/
|
|
19
|
+
async function runUpdateMarginFiVaultPendingYield(env, signerKeypairFp, rpcUrl, marginfiVaultTag, reportingDiscount) {
|
|
20
|
+
const [bankineco] = (0, bankineco_sdk_1.getBankineco)(env, rpcUrl, undefined, signerKeypairFp);
|
|
21
|
+
await updateMarginFiVaultPendingYield(bankineco, marginfiVaultTag, reportingDiscount);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=updateMarginfiVaultPendingYield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateMarginfiVaultPendingYield.js","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":";;AAuDA,gFAaC;AApED,yDAQ+B;AAC/B,oCAAmD;AACnD,gDAA+E;AAE/E,KAAK,UAAU,+BAA+B,CAC5C,SAA2B,EAC3B,gBAAkC,EAClC,iBAA0B;IAE1B,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAiB,EAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE9E,MAAM,aAAa,GACjB,wCAAwB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAE,CAAC;IACrE,MAAM,YAAY,GAAG,sCAAsB,CAAC,gBAAgB,CAAC,CAAC;IAE9D,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAC9B,SAAS,CAAC,OAAO,CAAC,mCAAmB,CAAC,EACtC,aAAa,CAAC,YAAY,EAC1B,aAAa,CAAC,kBAAkB,CACjC,CAAC;IAEF,MAAM,eAAe,GAAG,SAAS,CAAC,kBAAkB,CAClD,KAAK,EACL,YAAY,CAAC,KAAK,EAClB,aAAa,CAAC,YAAY,EAC1B,aAAa,CAAC,YAAY,CAC3B,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,IAAA,kCAAuB,EAChD,cAAc,EACd,SAAS,EACT,KAAK,EACL,eAAe,EACf,YAAY,CAAC,IAAI,CAClB,CAAC;IAEF,MAAM,IAAA,+BAAuB,EAC3B,SAAS,EACT,KAAK,EACL,YAAY,EACZ,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kCAAkC,CACtD,GAAgB,EAChB,eAAuB,EACvB,MAAc,EACd,gBAAkC,EAClC,iBAA0B;IAE1B,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,4BAAY,EAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1E,MAAM,+BAA+B,CACnC,SAAS,EACT,gBAAgB,EAChB,iBAAiB,CAClB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/utils/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,IAAI,EAGL,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;AAEzD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,WAAW,iBAgBnB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,SAAS,wBAwBnB;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,EACjC,UAAU,CAAC,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,MAAM,+DAStB;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EACnB,sBAAsB,EAAE,SAAS,EACjC,UAAU,CAAC,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,MAAM,6DAStB;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,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,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,
|
|
1
|
+
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/utils/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,IAAI,EAGL,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;AAEzD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,WAAW,iBAgBnB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,SAAS,wBAwBnB;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,EACjC,UAAU,CAAC,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,MAAM,+DAStB;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,EAAE,EACV,WAAW,EAAE,MAAM,EACnB,sBAAsB,EAAE,SAAS,EACjC,UAAU,CAAC,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,MAAM,6DAStB;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,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,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,wBAiE/B;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,EAAE,CAAC,CAyBb"}
|
package/dist/utils/drift.js
CHANGED
|
@@ -72,7 +72,7 @@ async function teamDriftInteractionTx(action, bankineco, drift, params) {
|
|
|
72
72
|
}
|
|
73
73
|
else {
|
|
74
74
|
const driftWithdrawalIx = await getDriftWithdrawIx(drift, params.amount, params.driftMarketIndex, eyManagerAta, false, 0);
|
|
75
|
-
const updateYieldAmountIx = await bankineco.updateYieldingAmount(params.bankIndex, params.vaultState, params.externalYieldManager, params.yieldingMint, params.allAvailableAmount ? undefined : params.amount, Boolean(params.allAvailableAmount), undefined, params.yieldingMintProgram);
|
|
75
|
+
const updateYieldAmountIx = await bankineco.updateYieldingAmount(params.bankIndex, params.vaultState, params.externalYieldManager, params.yieldingMint, params.allAvailableAmount ? undefined : params.amount, Boolean(params.allAvailableAmount), undefined, false, params.yieldingMintProgram);
|
|
76
76
|
return new web3_js_2.Transaction().add(driftWithdrawalIx, updateYieldAmountIx);
|
|
77
77
|
}
|
|
78
78
|
}
|
package/dist/utils/drift.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/utils/drift.ts"],"names":[],"mappings":";;AAcA,gDAkBC;AAED,wCA0BC;AAED,sDAEC;AAED,sEASC;AAED,8CAeC;AAED,gDAeC;AAaD,
|
|
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;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,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;AACzB,cAAc,YAAY,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./numeraire"), exports);
|
|
18
18
|
__exportStar(require("./drift"), exports);
|
|
19
19
|
__exportStar(require("./oracle"), exports);
|
|
20
|
+
__exportStar(require("./marginfi"), exports);
|
|
20
21
|
//# 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;AAC5B,0CAAwB;AACxB,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { BN, Wallet } from "@coral-xyz/anchor";
|
|
3
|
+
import { BankinecoProgram } from "@perena/bankineco-sdk";
|
|
4
|
+
import { MarginfiClient, MarginfiAccountWrapper } from "@mrgnlabs/marginfi-client-v2";
|
|
5
|
+
/**
|
|
6
|
+
* Gets the MarginFi client
|
|
7
|
+
*/
|
|
8
|
+
export declare function getMarginfiClient(connection: Connection, wallet?: Wallet): Promise<MarginfiClient>;
|
|
9
|
+
/**
|
|
10
|
+
* Gets the MarginFi account wrapper for a vault
|
|
11
|
+
*/
|
|
12
|
+
export declare function getMarginfiAccountWrapper(client: MarginfiClient, marginfiAccountPk: PublicKey): Promise<MarginfiAccountWrapper>;
|
|
13
|
+
/**
|
|
14
|
+
* Gets the vault's balance in MarginFi for a specific bank
|
|
15
|
+
*
|
|
16
|
+
* @param client - MarginFi client instance (pass to avoid refetching all banks)
|
|
17
|
+
* @param marginfiAccount - MarginFi account address
|
|
18
|
+
* @param marginfiBank - MarginFi bank address
|
|
19
|
+
* @returns Balance in native token amount (with decimals)
|
|
20
|
+
*/
|
|
21
|
+
export declare function getMarginFiVaultBalance(client: MarginfiClient, marginfiAccount: PublicKey, marginfiBank: PublicKey): Promise<BN>;
|
|
22
|
+
/**
|
|
23
|
+
* Calculates pending yield for a MarginFi vault
|
|
24
|
+
*
|
|
25
|
+
* Formula: newYield = currentBalance - (principal + alreadyReportedPending)
|
|
26
|
+
* - currentBalance: Total tokens in MarginFi (principal + accrued yield)
|
|
27
|
+
* - principal: external_yielding_amount (tracked by deposit_in_lp/withdraw_from_lp)
|
|
28
|
+
* - alreadyReportedPending: Yield already reported by oracle
|
|
29
|
+
*
|
|
30
|
+
* @param client - MarginFi client instance
|
|
31
|
+
* @param bankineco - Bankineco program instance
|
|
32
|
+
* @param vaultState - Vault state PDA
|
|
33
|
+
* @param marginfiAccount - MarginFi account PDA
|
|
34
|
+
* @param marginfiBank - MarginFi bank address
|
|
35
|
+
* @returns New unreported yield amount
|
|
36
|
+
*/
|
|
37
|
+
export declare function getPendingMarginFiYield(client: MarginfiClient, bankineco: BankinecoProgram, vaultState: PublicKey, marginfiAccount: PublicKey, marginfiBank: PublicKey): Promise<BN>;
|
|
38
|
+
/**
|
|
39
|
+
* Gets oracle account addresses from MarginFi bank for health checks during withdrawals
|
|
40
|
+
*
|
|
41
|
+
* @param client - MarginFi client instance
|
|
42
|
+
* @param marginfiBank - MarginFi bank address
|
|
43
|
+
* @returns Array of oracle account public keys (filtered for non-default keys)
|
|
44
|
+
*/
|
|
45
|
+
export declare function getMarginFiBankOracleAccounts(client: MarginfiClient, marginfiBank: PublicKey): PublicKey[];
|
|
46
|
+
//# sourceMappingURL=marginfi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marginfi.d.ts","sourceRoot":"","sources":["../../src/utils/marginfi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,iBAAiB,EAAE,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,SAAS,EAC1B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,EAAE,CAAC,CAiCb;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,SAAS,EAC1B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,EAAE,CAAC,CAiCb;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,SAAS,GACtB,SAAS,EAAE,CAoBb"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMarginfiClient = getMarginfiClient;
|
|
4
|
+
exports.getMarginfiAccountWrapper = getMarginfiAccountWrapper;
|
|
5
|
+
exports.getMarginFiVaultBalance = getMarginFiVaultBalance;
|
|
6
|
+
exports.getPendingMarginFiYield = getPendingMarginFiYield;
|
|
7
|
+
exports.getMarginFiBankOracleAccounts = getMarginFiBankOracleAccounts;
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
10
|
+
const marginfi_client_v2_1 = require("@mrgnlabs/marginfi-client-v2");
|
|
11
|
+
/**
|
|
12
|
+
* Gets the MarginFi client
|
|
13
|
+
*/
|
|
14
|
+
async function getMarginfiClient(connection, wallet) {
|
|
15
|
+
const config = (0, marginfi_client_v2_1.getConfig)("production");
|
|
16
|
+
return await marginfi_client_v2_1.MarginfiClient.fetch(config, wallet, connection);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Gets the MarginFi account wrapper for a vault
|
|
20
|
+
*/
|
|
21
|
+
async function getMarginfiAccountWrapper(client, marginfiAccountPk) {
|
|
22
|
+
return await marginfi_client_v2_1.MarginfiAccountWrapper.fetch(marginfiAccountPk, client);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Gets the vault's balance in MarginFi for a specific bank
|
|
26
|
+
*
|
|
27
|
+
* @param client - MarginFi client instance (pass to avoid refetching all banks)
|
|
28
|
+
* @param marginfiAccount - MarginFi account address
|
|
29
|
+
* @param marginfiBank - MarginFi bank address
|
|
30
|
+
* @returns Balance in native token amount (with decimals)
|
|
31
|
+
*/
|
|
32
|
+
async function getMarginFiVaultBalance(client, marginfiAccount, marginfiBank) {
|
|
33
|
+
const account = await getMarginfiAccountWrapper(client, marginfiAccount);
|
|
34
|
+
// Get the balance for this specific bank
|
|
35
|
+
const balance = account.activeBalances.find((b) => b.bankPk.equals(marginfiBank));
|
|
36
|
+
if (!balance) {
|
|
37
|
+
console.log(`[getMarginFiVaultBalance] No active balance found for bank ${marginfiBank.toBase58()}`);
|
|
38
|
+
return new anchor_1.BN(0);
|
|
39
|
+
}
|
|
40
|
+
// Get the bank object to compute underlying tokens
|
|
41
|
+
const bank = client.getBankByPk(marginfiBank);
|
|
42
|
+
if (!bank) {
|
|
43
|
+
throw new Error(`Bank not found: ${marginfiBank.toBase58()}`);
|
|
44
|
+
}
|
|
45
|
+
// Use SDK's computeQuantity to convert shares to native token amount
|
|
46
|
+
// This method handles decimal conversion internally, returns native amount directly
|
|
47
|
+
const quantity = balance.computeQuantity(bank);
|
|
48
|
+
// Convert BigNumber (from bignumber.js) to BN (from anchor)
|
|
49
|
+
const underlyingAmount = new anchor_1.BN(quantity.assets.toFixed(0));
|
|
50
|
+
console.log(`[getMarginFiVaultBalance] Balance: ${underlyingAmount.toString()}`);
|
|
51
|
+
return underlyingAmount;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Calculates pending yield for a MarginFi vault
|
|
55
|
+
*
|
|
56
|
+
* Formula: newYield = currentBalance - (principal + alreadyReportedPending)
|
|
57
|
+
* - currentBalance: Total tokens in MarginFi (principal + accrued yield)
|
|
58
|
+
* - principal: external_yielding_amount (tracked by deposit_in_lp/withdraw_from_lp)
|
|
59
|
+
* - alreadyReportedPending: Yield already reported by oracle
|
|
60
|
+
*
|
|
61
|
+
* @param client - MarginFi client instance
|
|
62
|
+
* @param bankineco - Bankineco program instance
|
|
63
|
+
* @param vaultState - Vault state PDA
|
|
64
|
+
* @param marginfiAccount - MarginFi account PDA
|
|
65
|
+
* @param marginfiBank - MarginFi bank address
|
|
66
|
+
* @returns New unreported yield amount
|
|
67
|
+
*/
|
|
68
|
+
async function getPendingMarginFiYield(client, bankineco, vaultState, marginfiAccount, marginfiBank) {
|
|
69
|
+
// Get current MarginFi balance
|
|
70
|
+
const currentBalance = await getMarginFiVaultBalance(client, marginfiAccount, marginfiBank);
|
|
71
|
+
console.log(`[getPendingMarginFiYield] Current MarginFi balance: ${currentBalance.toString()}`);
|
|
72
|
+
// Get vault's accounting
|
|
73
|
+
const vault = await bankineco.pg.account.vaultGenState.fetch(vaultState);
|
|
74
|
+
const oracleState = await bankineco.pg.account.oracleGenState.fetch(bankineco.oraclePDA(vaultState));
|
|
75
|
+
// external_yielding_amount tracks the principal deposited into MarginFi
|
|
76
|
+
const principal = vault.accounting.externalYieldingAmount;
|
|
77
|
+
console.log(`[getPendingMarginFiYield] Principal in MarginFi: ${principal.toString()}`);
|
|
78
|
+
// New yield = current_balance - principal - already_reported
|
|
79
|
+
const newYield = currentBalance.sub(principal);
|
|
80
|
+
console.log(`[getPendingMarginFiYield] New pending yield: ${newYield.toString()}`);
|
|
81
|
+
return newYield.gt(new anchor_1.BN(0)) ? newYield : new anchor_1.BN(0);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Gets oracle account addresses from MarginFi bank for health checks during withdrawals
|
|
85
|
+
*
|
|
86
|
+
* @param client - MarginFi client instance
|
|
87
|
+
* @param marginfiBank - MarginFi bank address
|
|
88
|
+
* @returns Array of oracle account public keys (filtered for non-default keys)
|
|
89
|
+
*/
|
|
90
|
+
function getMarginFiBankOracleAccounts(client, marginfiBank) {
|
|
91
|
+
const bank = client.getBankByPk(marginfiBank);
|
|
92
|
+
if (!bank) {
|
|
93
|
+
console.warn(`[getMarginFiBankOracleAccounts] Bank not found: ${marginfiBank.toBase58()}`);
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
// Get oracle keys from bank config
|
|
97
|
+
const oracleKeys = bank.config.oracleKeys.filter((key) => !key.equals(web3_js_1.PublicKey.default));
|
|
98
|
+
console.log(`[getMarginFiBankOracleAccounts] Found ${oracleKeys.length} oracle accounts`);
|
|
99
|
+
return oracleKeys;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=marginfi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marginfi.js","sourceRoot":"","sources":["../../src/utils/marginfi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EASjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAOvC,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,eAsBtB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,oBAAoB,EAAE,MAAM;;;;;;;;GAyC7B;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,YAAY,EAAE,EAAE,EAChB,iBAAiB,GAAE,MAAU,EAC7B,OAAO,CAAC,EAAE,IAAI,iBA+Ef"}
|
package/dist/utils/oracle.js
CHANGED
|
@@ -47,7 +47,8 @@ async function updateYieldInfoIfNeeded(bankineco, vaultState, impliedYield, repo
|
|
|
47
47
|
const yieldingMint = vaultInfo.config.yieldingTokenMint;
|
|
48
48
|
const yieldingMintDecimals = vaultInfo.config.yieldingMintDecimals;
|
|
49
49
|
impliedYield = impliedYield.muln(1 - reportingDiscount);
|
|
50
|
-
const impliedYieldWithoutPerformanceFee =
|
|
50
|
+
const impliedYieldWithoutPerformanceFee = (0, bankineco_sdk_1.yieldWithoutPerformanceFee)(impliedYield, vaultInfo.config.performanceFeeBps);
|
|
51
|
+
console.log(impliedYield.toNumber(), impliedYieldWithoutPerformanceFee.toNumber(), vaultInfo.config.performanceFeeBps);
|
|
51
52
|
const diffMs = Date.now() - lastUpdatedTs.toNumber() * 1000;
|
|
52
53
|
const hoursSinceLastUpdate = diffMs / (1000 * 60 * 60);
|
|
53
54
|
const impliedUiYield = (0, bankineco_sdk_1.toUiAmount)(impliedYieldWithoutPerformanceFee, yieldingMintDecimals);
|
package/dist/utils/oracle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@perena/bankineco-services",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.34",
|
|
4
4
|
"description": "Services infra for maintaining Bankineco program on Solana.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@coral-xyz/anchor": "=0.30.1",
|
|
28
28
|
"@drift-labs/sdk": "=2.137.0",
|
|
29
|
-
"@
|
|
29
|
+
"@mrgnlabs/marginfi-client-v2": "^6.2.1",
|
|
30
|
+
"@perena/bankineco-sdk": "=1.0.65",
|
|
30
31
|
"@perena/numeraire-sdk-new": "=1.1.1",
|
|
31
32
|
"@solana/spl-token": "=0.4.13",
|
|
32
33
|
"@solana/web3.js": "=1.98.4",
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,6BAA6B,gCAAgC,CAAC;AAC3E,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAIrD,CAAC;AAEF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAChF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAChF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAIpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,kBAErB,CAAC"}
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAClD,QAAA,0BAA0B,GAAG,qBAAqB,CAAC;AACnD,QAAA,6BAA6B,GAAG,6BAA6B,CAAC;AAC9D,QAAA,gBAAgB,GAAG,wBAAwB,CAAC;AAC5C,QAAA,WAAW,GAAkC;IACxD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,kCAA0B,CAAC;IAClC,IAAI,EAAE,CAAC,kCAA0B,EAAE,qCAA6B,CAAC;CAClE,CAAC;AAEW,QAAA,iBAAiB,GAAG,8CAA8C,CAAC,CAAC,sBAAsB;AAC1F,QAAA,iBAAiB,GAAG,8CAA8C,CAAC;AACnE,QAAA,YAAY,GAAgC;IACvD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,yBAAiB;IACvB,IAAI,EAAE,yBAAiB;CACxB,CAAC;AAEW,QAAA,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACpE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IAC7C,CAAC,CAAC,SAAS,CAAC"}
|