@0dotxyz/p0-ts-sdk 2.7.4 → 2.8.0-alpha.0
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/index.cjs +619 -39
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +101 -8
- package/dist/index.d.ts +101 -8
- package/dist/index.js +612 -40
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.cts +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/{types-DJqANTTA.d.cts → types-CqP5W-Bu.d.cts} +252 -9
- package/dist/{types-sisv3J7l.d.ts → types-DEoJ8ewV.d.ts} +252 -9
- package/dist/types-cfCsUNXw.d.cts +230 -0
- package/dist/types-cfCsUNXw.d.ts +230 -0
- package/dist/vendor.cjs +100 -9
- package/dist/vendor.cjs.map +1 -1
- package/dist/vendor.d.cts +6880 -6981
- package/dist/vendor.d.ts +6880 -6981
- package/dist/vendor.js +81 -3
- package/dist/vendor.js.map +1 -1
- package/package.json +1 -1
- package/dist/types-DLZaKA17.d.cts +0 -88
- package/dist/types-DLZaKA17.d.ts +0 -88
package/dist/index.js
CHANGED
|
@@ -14326,13 +14326,13 @@ var marginfi_0_1_10_default = {
|
|
|
14326
14326
|
type: "u16"
|
|
14327
14327
|
},
|
|
14328
14328
|
{
|
|
14329
|
-
name: "
|
|
14330
|
-
|
|
14331
|
-
|
|
14332
|
-
|
|
14333
|
-
|
|
14334
|
-
|
|
14335
|
-
|
|
14329
|
+
name: "scope_entry_index",
|
|
14330
|
+
docs: [
|
|
14331
|
+
"Entry index into the Scope OraclePrices price list. Only read when",
|
|
14332
|
+
"oracle_setup == OracleSetup::Scope; ignored (and zero) for every other setup.",
|
|
14333
|
+
"Occupies what was previously _padding0, so the layout is unchanged."
|
|
14334
|
+
],
|
|
14335
|
+
type: "u16"
|
|
14336
14336
|
},
|
|
14337
14337
|
{
|
|
14338
14338
|
name: "oracle_max_confidence",
|
|
@@ -19283,6 +19283,144 @@ var marginfi_0_1_10_default = {
|
|
|
19283
19283
|
},
|
|
19284
19284
|
{
|
|
19285
19285
|
name: "FixedJuplend"
|
|
19286
|
+
},
|
|
19287
|
+
{
|
|
19288
|
+
name: "Scope"
|
|
19289
|
+
},
|
|
19290
|
+
{
|
|
19291
|
+
name: "PythMSOL"
|
|
19292
|
+
},
|
|
19293
|
+
{
|
|
19294
|
+
name: "KaminoMSOL"
|
|
19295
|
+
},
|
|
19296
|
+
{
|
|
19297
|
+
name: "JuplendMSOL"
|
|
19298
|
+
},
|
|
19299
|
+
{
|
|
19300
|
+
name: "PythLST"
|
|
19301
|
+
},
|
|
19302
|
+
{
|
|
19303
|
+
name: "KaminoLST"
|
|
19304
|
+
},
|
|
19305
|
+
{
|
|
19306
|
+
name: "JuplendLST"
|
|
19307
|
+
},
|
|
19308
|
+
{
|
|
19309
|
+
name: "PTPyth"
|
|
19310
|
+
},
|
|
19311
|
+
{
|
|
19312
|
+
name: "PTFixed"
|
|
19313
|
+
},
|
|
19314
|
+
{
|
|
19315
|
+
name: "Reserved27"
|
|
19316
|
+
},
|
|
19317
|
+
{
|
|
19318
|
+
name: "Reserved28"
|
|
19319
|
+
},
|
|
19320
|
+
{
|
|
19321
|
+
name: "Reserved29"
|
|
19322
|
+
},
|
|
19323
|
+
{
|
|
19324
|
+
name: "Reserved30"
|
|
19325
|
+
},
|
|
19326
|
+
{
|
|
19327
|
+
name: "Reserved31"
|
|
19328
|
+
},
|
|
19329
|
+
{
|
|
19330
|
+
name: "Reserved32"
|
|
19331
|
+
},
|
|
19332
|
+
{
|
|
19333
|
+
name: "Reserved33"
|
|
19334
|
+
},
|
|
19335
|
+
{
|
|
19336
|
+
name: "Reserved34"
|
|
19337
|
+
},
|
|
19338
|
+
{
|
|
19339
|
+
name: "Reserved35"
|
|
19340
|
+
},
|
|
19341
|
+
{
|
|
19342
|
+
name: "Reserved36"
|
|
19343
|
+
},
|
|
19344
|
+
{
|
|
19345
|
+
name: "Reserved37"
|
|
19346
|
+
},
|
|
19347
|
+
{
|
|
19348
|
+
name: "Reserved38"
|
|
19349
|
+
},
|
|
19350
|
+
{
|
|
19351
|
+
name: "Reserved39"
|
|
19352
|
+
},
|
|
19353
|
+
{
|
|
19354
|
+
name: "Reserved40"
|
|
19355
|
+
},
|
|
19356
|
+
{
|
|
19357
|
+
name: "Reserved41"
|
|
19358
|
+
},
|
|
19359
|
+
{
|
|
19360
|
+
name: "Reserved42"
|
|
19361
|
+
},
|
|
19362
|
+
{
|
|
19363
|
+
name: "Reserved43"
|
|
19364
|
+
},
|
|
19365
|
+
{
|
|
19366
|
+
name: "Reserved44"
|
|
19367
|
+
},
|
|
19368
|
+
{
|
|
19369
|
+
name: "Reserved45"
|
|
19370
|
+
},
|
|
19371
|
+
{
|
|
19372
|
+
name: "Reserved46"
|
|
19373
|
+
},
|
|
19374
|
+
{
|
|
19375
|
+
name: "Reserved47"
|
|
19376
|
+
},
|
|
19377
|
+
{
|
|
19378
|
+
name: "Reserved48"
|
|
19379
|
+
},
|
|
19380
|
+
{
|
|
19381
|
+
name: "Reserved49"
|
|
19382
|
+
},
|
|
19383
|
+
{
|
|
19384
|
+
name: "Reserved50"
|
|
19385
|
+
},
|
|
19386
|
+
{
|
|
19387
|
+
name: "Reserved51"
|
|
19388
|
+
},
|
|
19389
|
+
{
|
|
19390
|
+
name: "Reserved52"
|
|
19391
|
+
},
|
|
19392
|
+
{
|
|
19393
|
+
name: "Reserved53"
|
|
19394
|
+
},
|
|
19395
|
+
{
|
|
19396
|
+
name: "Reserved54"
|
|
19397
|
+
},
|
|
19398
|
+
{
|
|
19399
|
+
name: "Reserved55"
|
|
19400
|
+
},
|
|
19401
|
+
{
|
|
19402
|
+
name: "Reserved56"
|
|
19403
|
+
},
|
|
19404
|
+
{
|
|
19405
|
+
name: "Reserved57"
|
|
19406
|
+
},
|
|
19407
|
+
{
|
|
19408
|
+
name: "Reserved58"
|
|
19409
|
+
},
|
|
19410
|
+
{
|
|
19411
|
+
name: "Reserved59"
|
|
19412
|
+
},
|
|
19413
|
+
{
|
|
19414
|
+
name: "Reserved60"
|
|
19415
|
+
},
|
|
19416
|
+
{
|
|
19417
|
+
name: "Reserved61"
|
|
19418
|
+
},
|
|
19419
|
+
{
|
|
19420
|
+
name: "Reserved62"
|
|
19421
|
+
},
|
|
19422
|
+
{
|
|
19423
|
+
name: "Reserved63"
|
|
19286
19424
|
}
|
|
19287
19425
|
]
|
|
19288
19426
|
}
|
|
@@ -20703,6 +20841,16 @@ var OracleSetup = /* @__PURE__ */ ((OracleSetup3) => {
|
|
|
20703
20841
|
OracleSetup3["JuplendPythPull"] = "JuplendPythPull";
|
|
20704
20842
|
OracleSetup3["JuplendSwitchboardPull"] = "JuplendSwitchboardPull";
|
|
20705
20843
|
OracleSetup3["FixedJuplend"] = "FixedJuplend";
|
|
20844
|
+
OracleSetup3["Scope"] = "Scope";
|
|
20845
|
+
OracleSetup3["PythMSOL"] = "PythMSOL";
|
|
20846
|
+
OracleSetup3["KaminoMSOL"] = "KaminoMSOL";
|
|
20847
|
+
OracleSetup3["JuplendMSOL"] = "JuplendMSOL";
|
|
20848
|
+
OracleSetup3["PythLST"] = "PythLST";
|
|
20849
|
+
OracleSetup3["KaminoLST"] = "KaminoLST";
|
|
20850
|
+
OracleSetup3["JuplendLST"] = "JuplendLST";
|
|
20851
|
+
OracleSetup3["PTPyth"] = "PTPyth";
|
|
20852
|
+
OracleSetup3["PTFixed"] = "PTFixed";
|
|
20853
|
+
OracleSetup3["Unknown"] = "Unknown";
|
|
20706
20854
|
return OracleSetup3;
|
|
20707
20855
|
})(OracleSetup || {});
|
|
20708
20856
|
var AssetTag = /* @__PURE__ */ ((AssetTag3) => {
|
|
@@ -21764,8 +21912,26 @@ function serializeOracleSetupToIndex(oracleSetup) {
|
|
|
21764
21912
|
return 16;
|
|
21765
21913
|
case "FixedJuplend" /* FixedJuplend */:
|
|
21766
21914
|
return 17;
|
|
21915
|
+
case "Scope" /* Scope */:
|
|
21916
|
+
return 18;
|
|
21917
|
+
case "PythMSOL" /* PythMSOL */:
|
|
21918
|
+
return 19;
|
|
21919
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
21920
|
+
return 20;
|
|
21921
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
21922
|
+
return 21;
|
|
21923
|
+
case "PythLST" /* PythLST */:
|
|
21924
|
+
return 22;
|
|
21925
|
+
case "KaminoLST" /* KaminoLST */:
|
|
21926
|
+
return 23;
|
|
21927
|
+
case "JuplendLST" /* JuplendLST */:
|
|
21928
|
+
return 24;
|
|
21929
|
+
case "PTPyth" /* PTPyth */:
|
|
21930
|
+
return 25;
|
|
21931
|
+
case "PTFixed" /* PTFixed */:
|
|
21932
|
+
return 26;
|
|
21767
21933
|
default:
|
|
21768
|
-
|
|
21934
|
+
throw new Error(`Cannot serialize oracle setup "${oracleSetup}"`);
|
|
21769
21935
|
}
|
|
21770
21936
|
}
|
|
21771
21937
|
function serializeOracleSetup(oracleSetup) {
|
|
@@ -21806,6 +21972,24 @@ function serializeOracleSetup(oracleSetup) {
|
|
|
21806
21972
|
return { juplendSwitchboardPull: {} };
|
|
21807
21973
|
case "FixedJuplend" /* FixedJuplend */:
|
|
21808
21974
|
return { fixedJuplend: {} };
|
|
21975
|
+
case "Scope" /* Scope */:
|
|
21976
|
+
return { scope: {} };
|
|
21977
|
+
case "PythMSOL" /* PythMSOL */:
|
|
21978
|
+
return { pythMsol: {} };
|
|
21979
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
21980
|
+
return { kaminoMsol: {} };
|
|
21981
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
21982
|
+
return { juplendMsol: {} };
|
|
21983
|
+
case "PythLST" /* PythLST */:
|
|
21984
|
+
return { pythLst: {} };
|
|
21985
|
+
case "KaminoLST" /* KaminoLST */:
|
|
21986
|
+
return { kaminoLst: {} };
|
|
21987
|
+
case "JuplendLST" /* JuplendLST */:
|
|
21988
|
+
return { juplendLst: {} };
|
|
21989
|
+
case "PTPyth" /* PTPyth */:
|
|
21990
|
+
return { ptPyth: {} };
|
|
21991
|
+
case "PTFixed" /* PTFixed */:
|
|
21992
|
+
return { ptFixed: {} };
|
|
21809
21993
|
default:
|
|
21810
21994
|
throw new Error(`Invalid oracle setup "${oracleSetup}"`);
|
|
21811
21995
|
}
|
|
@@ -21919,7 +22103,8 @@ function toBankConfigDto(bankConfig) {
|
|
|
21919
22103
|
interestRateConfig: toInterestRateConfigDto(bankConfig.interestRateConfig),
|
|
21920
22104
|
configFlags: bankConfig.configFlags,
|
|
21921
22105
|
oracleMaxConfidence: bankConfig.oracleMaxConfidence,
|
|
21922
|
-
fixedPrice: bankConfig.fixedPrice.toString()
|
|
22106
|
+
fixedPrice: bankConfig.fixedPrice.toString(),
|
|
22107
|
+
scopeEntryIndex: bankConfig.scopeEntryIndex
|
|
21923
22108
|
};
|
|
21924
22109
|
}
|
|
21925
22110
|
function toInterestRateConfigDto(interestRateConfig) {
|
|
@@ -22025,7 +22210,8 @@ function bankConfigToBankConfigRaw(config) {
|
|
|
22025
22210
|
totalAssetValueInitLimit: new BN9(config.totalAssetValueInitLimit.toString()),
|
|
22026
22211
|
oracleMaxAge: config.oracleMaxAge,
|
|
22027
22212
|
oracleMaxConfidence: config.oracleMaxConfidence,
|
|
22028
|
-
fixedPrice: bigNumberToWrappedI80F48(config.fixedPrice)
|
|
22213
|
+
fixedPrice: bigNumberToWrappedI80F48(config.fixedPrice),
|
|
22214
|
+
scopeEntryIndex: config.scopeEntryIndex
|
|
22029
22215
|
};
|
|
22030
22216
|
}
|
|
22031
22217
|
function bankConfigRawToDto(bankConfigRaw) {
|
|
@@ -22046,7 +22232,8 @@ function bankConfigRawToDto(bankConfigRaw) {
|
|
|
22046
22232
|
interestRateConfig: bankConfigRaw.interestRateConfig,
|
|
22047
22233
|
configFlags: bankConfigRaw.configFlags,
|
|
22048
22234
|
oracleMaxConfidence: bankConfigRaw.oracleMaxConfidence,
|
|
22049
|
-
fixedPrice: bankConfigRaw.fixedPrice
|
|
22235
|
+
fixedPrice: bankConfigRaw.fixedPrice,
|
|
22236
|
+
scopeEntryIndex: bankConfigRaw.scopeEntryIndex
|
|
22050
22237
|
};
|
|
22051
22238
|
}
|
|
22052
22239
|
|
|
@@ -22334,7 +22521,8 @@ function dtoToBankConfig(bankConfigDto) {
|
|
|
22334
22521
|
oracleMaxAge: bankConfigDto.oracleMaxAge,
|
|
22335
22522
|
interestRateConfig: dtoToInterestRateConfig(bankConfigDto.interestRateConfig),
|
|
22336
22523
|
oracleMaxConfidence: bankConfigDto.oracleMaxConfidence,
|
|
22337
|
-
fixedPrice: new BigNumber3(bankConfigDto.fixedPrice)
|
|
22524
|
+
fixedPrice: new BigNumber3(bankConfigDto.fixedPrice),
|
|
22525
|
+
scopeEntryIndex: bankConfigDto.scopeEntryIndex ?? 0
|
|
22338
22526
|
};
|
|
22339
22527
|
}
|
|
22340
22528
|
function dtoToInterestRateConfig(interestRateConfigDto) {
|
|
@@ -22447,7 +22635,8 @@ function dtoToBankConfigRaw(bankConfigDto) {
|
|
|
22447
22635
|
oracleMaxAge: bankConfigDto.oracleMaxAge,
|
|
22448
22636
|
interestRateConfig: bankConfigDto.interestRateConfig,
|
|
22449
22637
|
oracleMaxConfidence: bankConfigDto.oracleMaxConfidence,
|
|
22450
|
-
fixedPrice: bankConfigDto.fixedPrice
|
|
22638
|
+
fixedPrice: bankConfigDto.fixedPrice,
|
|
22639
|
+
scopeEntryIndex: bankConfigDto.scopeEntryIndex ?? 0
|
|
22451
22640
|
};
|
|
22452
22641
|
}
|
|
22453
22642
|
function parseBankConfigRaw(bankConfigRaw) {
|
|
@@ -22487,6 +22676,7 @@ function parseBankConfigRaw(bankConfigRaw) {
|
|
|
22487
22676
|
};
|
|
22488
22677
|
const oracleMaxConfidence = bankConfigRaw.oracleMaxConfidence;
|
|
22489
22678
|
const fixedPrice = wrappedI80F48toBigNumber(bankConfigRaw.fixedPrice);
|
|
22679
|
+
const scopeEntryIndex = bankConfigRaw.scopeEntryIndex ?? 0;
|
|
22490
22680
|
return {
|
|
22491
22681
|
assetWeightInit,
|
|
22492
22682
|
assetWeightMaint,
|
|
@@ -22504,7 +22694,8 @@ function parseBankConfigRaw(bankConfigRaw) {
|
|
|
22504
22694
|
oracleMaxAge,
|
|
22505
22695
|
interestRateConfig,
|
|
22506
22696
|
oracleMaxConfidence,
|
|
22507
|
-
fixedPrice
|
|
22697
|
+
fixedPrice,
|
|
22698
|
+
scopeEntryIndex
|
|
22508
22699
|
};
|
|
22509
22700
|
}
|
|
22510
22701
|
function parseRiskTier(riskTierRaw) {
|
|
@@ -22566,18 +22757,36 @@ function parseOracleSetup(oracleSetupRaw) {
|
|
|
22566
22757
|
return "SolendPythPull" /* SolendPythPull */;
|
|
22567
22758
|
case "solendswitchboardpull":
|
|
22568
22759
|
return "SolendSwitchboardPull" /* SolendSwitchboardPull */;
|
|
22569
|
-
case "
|
|
22760
|
+
case "fixedkamino":
|
|
22570
22761
|
return "FixedKamino" /* FixedKamino */;
|
|
22571
|
-
case "
|
|
22762
|
+
case "fixeddrift":
|
|
22572
22763
|
return "FixedDrift" /* FixedDrift */;
|
|
22573
22764
|
case "juplendpythpull":
|
|
22574
22765
|
return "JuplendPythPull" /* JuplendPythPull */;
|
|
22575
22766
|
case "juplendswitchboardpull":
|
|
22576
22767
|
return "JuplendSwitchboardPull" /* JuplendSwitchboardPull */;
|
|
22577
|
-
case "
|
|
22768
|
+
case "fixedjuplend":
|
|
22578
22769
|
return "FixedJuplend" /* FixedJuplend */;
|
|
22770
|
+
case "scope":
|
|
22771
|
+
return "Scope" /* Scope */;
|
|
22772
|
+
case "pythmsol":
|
|
22773
|
+
return "PythMSOL" /* PythMSOL */;
|
|
22774
|
+
case "kaminomsol":
|
|
22775
|
+
return "KaminoMSOL" /* KaminoMSOL */;
|
|
22776
|
+
case "juplendmsol":
|
|
22777
|
+
return "JuplendMSOL" /* JuplendMSOL */;
|
|
22778
|
+
case "pythlst":
|
|
22779
|
+
return "PythLST" /* PythLST */;
|
|
22780
|
+
case "kaminolst":
|
|
22781
|
+
return "KaminoLST" /* KaminoLST */;
|
|
22782
|
+
case "juplendlst":
|
|
22783
|
+
return "JuplendLST" /* JuplendLST */;
|
|
22784
|
+
case "ptpyth":
|
|
22785
|
+
return "PTPyth" /* PTPyth */;
|
|
22786
|
+
case "ptfixed":
|
|
22787
|
+
return "PTFixed" /* PTFixed */;
|
|
22579
22788
|
default:
|
|
22580
|
-
return "
|
|
22789
|
+
return "Unknown" /* Unknown */;
|
|
22581
22790
|
}
|
|
22582
22791
|
}
|
|
22583
22792
|
function getActiveEmodeFlags(flags) {
|
|
@@ -25708,6 +25917,17 @@ var categorizePythBanks = (banks) => {
|
|
|
25708
25917
|
const juplendPythPullBanks = banks.filter(
|
|
25709
25918
|
(bank) => bank.config.oracleSetup === "JuplendPythPull" /* JuplendPythPull */
|
|
25710
25919
|
);
|
|
25920
|
+
const pythMultipliedBanks = banks.filter(
|
|
25921
|
+
(bank) => [
|
|
25922
|
+
"PythMSOL" /* PythMSOL */,
|
|
25923
|
+
"KaminoMSOL" /* KaminoMSOL */,
|
|
25924
|
+
"JuplendMSOL" /* JuplendMSOL */,
|
|
25925
|
+
"PythLST" /* PythLST */,
|
|
25926
|
+
"KaminoLST" /* KaminoLST */,
|
|
25927
|
+
"JuplendLST" /* JuplendLST */,
|
|
25928
|
+
"PTPyth" /* PTPyth */
|
|
25929
|
+
].includes(bank.config.oracleSetup)
|
|
25930
|
+
);
|
|
25711
25931
|
return {
|
|
25712
25932
|
pythLegacyBanks,
|
|
25713
25933
|
pythPushBanks,
|
|
@@ -25715,7 +25935,8 @@ var categorizePythBanks = (banks) => {
|
|
|
25715
25935
|
pythPushKaminosBanks,
|
|
25716
25936
|
driftPythPullBanks,
|
|
25717
25937
|
solendPythPullBanks,
|
|
25718
|
-
juplendPythPullBanks
|
|
25938
|
+
juplendPythPullBanks,
|
|
25939
|
+
pythMultipliedBanks
|
|
25719
25940
|
};
|
|
25720
25941
|
};
|
|
25721
25942
|
var convertVoteAccCoeffsToBankCoeffs = (pythStakedCollateralBanks, validatorVoteAccountByBank, voteAccCoeffs) => {
|
|
@@ -25732,7 +25953,7 @@ var extractPythOracleKeys = (pythBanks) => {
|
|
|
25732
25953
|
const keys = pythBanks.map((bank) => bank.config.oracleKeys[0].toBase58());
|
|
25733
25954
|
return [...keys];
|
|
25734
25955
|
};
|
|
25735
|
-
var mapPythBanksToOraclePrices = (pythPushBanks,
|
|
25956
|
+
var mapPythBanksToOraclePrices = (pythPushBanks, multipliedBanks, oraclePrices, priceCoeffByBank) => {
|
|
25736
25957
|
const bankOraclePriceMap = /* @__PURE__ */ new Map();
|
|
25737
25958
|
pythPushBanks.forEach((bank) => {
|
|
25738
25959
|
const oracleKey = bank.config.oracleKeys[0].toBase58();
|
|
@@ -25741,7 +25962,7 @@ var mapPythBanksToOraclePrices = (pythPushBanks, pythStakedCollateralBanks, orac
|
|
|
25741
25962
|
bankOraclePriceMap.set(bank.address.toBase58(), oraclePrice);
|
|
25742
25963
|
}
|
|
25743
25964
|
});
|
|
25744
|
-
|
|
25965
|
+
multipliedBanks.forEach((bank) => {
|
|
25745
25966
|
const priceCoeff = priceCoeffByBank[bank.address.toBase58()];
|
|
25746
25967
|
const oracleKey = bank.config.oracleKeys[0]?.toBase58();
|
|
25747
25968
|
if (oracleKey && priceCoeff !== void 0) {
|
|
@@ -25759,7 +25980,7 @@ var mapPythBanksToOraclePrices = (pythPushBanks, pythStakedCollateralBanks, orac
|
|
|
25759
25980
|
};
|
|
25760
25981
|
var adjustPriceComponent = (priceComponent, priceCoeff) => ({
|
|
25761
25982
|
price: priceComponent.price.multipliedBy(priceCoeff),
|
|
25762
|
-
confidence: priceComponent.confidence,
|
|
25983
|
+
confidence: priceComponent.confidence.multipliedBy(priceCoeff),
|
|
25763
25984
|
lowestPrice: priceComponent.lowestPrice.multipliedBy(priceCoeff),
|
|
25764
25985
|
highestPrice: priceComponent.highestPrice.multipliedBy(priceCoeff)
|
|
25765
25986
|
});
|
|
@@ -25811,6 +26032,7 @@ var ORACLE_SOURCES = {
|
|
|
25811
26032
|
switchboard: "Switchboard",
|
|
25812
26033
|
pyth: "Pyth",
|
|
25813
26034
|
fixed: "Fixed",
|
|
26035
|
+
scope: "Scope",
|
|
25814
26036
|
unknown: "Unknown"
|
|
25815
26037
|
};
|
|
25816
26038
|
function getOracleSourceNameFromKey(oracleSourceKey) {
|
|
@@ -25837,14 +26059,25 @@ function getOracleSourceFromOracleSetup(oracleSetup) {
|
|
|
25837
26059
|
case "DriftPythPull" /* DriftPythPull */:
|
|
25838
26060
|
case "SolendPythPull" /* SolendPythPull */:
|
|
25839
26061
|
case "JuplendPythPull" /* JuplendPythPull */:
|
|
26062
|
+
case "PythMSOL" /* PythMSOL */:
|
|
26063
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
26064
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
26065
|
+
case "PythLST" /* PythLST */:
|
|
26066
|
+
case "KaminoLST" /* KaminoLST */:
|
|
26067
|
+
case "JuplendLST" /* JuplendLST */:
|
|
26068
|
+
case "PTPyth" /* PTPyth */:
|
|
25840
26069
|
oracleSourceKey = "pyth";
|
|
25841
26070
|
break;
|
|
25842
26071
|
case "Fixed" /* Fixed */:
|
|
25843
26072
|
case "FixedKamino" /* FixedKamino */:
|
|
25844
26073
|
case "FixedDrift" /* FixedDrift */:
|
|
25845
26074
|
case "FixedJuplend" /* FixedJuplend */:
|
|
26075
|
+
case "PTFixed" /* PTFixed */:
|
|
25846
26076
|
oracleSourceKey = "fixed";
|
|
25847
26077
|
break;
|
|
26078
|
+
case "Scope" /* Scope */:
|
|
26079
|
+
oracleSourceKey = "scope";
|
|
26080
|
+
break;
|
|
25848
26081
|
default:
|
|
25849
26082
|
oracleSourceKey = "unknown";
|
|
25850
26083
|
break;
|
|
@@ -27319,6 +27552,19 @@ function computeBankRiskAccountKeys(bank) {
|
|
|
27319
27552
|
if (bank.config.assetTag === 3 /* KAMINO */ || bank.config.assetTag === 4 /* DRIFT */ || bank.config.assetTag === 5 /* SOLEND */ || bank.config.assetTag === 6 /* JUPLEND */) {
|
|
27320
27553
|
keys.push(bank.config.oracleKeys[1]);
|
|
27321
27554
|
}
|
|
27555
|
+
switch (bank.config.oracleSetup) {
|
|
27556
|
+
case "PythMSOL" /* PythMSOL */:
|
|
27557
|
+
case "PythLST" /* PythLST */:
|
|
27558
|
+
case "PTPyth" /* PTPyth */:
|
|
27559
|
+
keys.push(bank.config.oracleKeys[1]);
|
|
27560
|
+
break;
|
|
27561
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
27562
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
27563
|
+
case "KaminoLST" /* KaminoLST */:
|
|
27564
|
+
case "JuplendLST" /* JuplendLST */:
|
|
27565
|
+
keys.push(bank.config.oracleKeys[2]);
|
|
27566
|
+
break;
|
|
27567
|
+
}
|
|
27322
27568
|
if (bank.config.assetTag === 2 /* STAKED */) {
|
|
27323
27569
|
keys.push(bank.config.oracleKeys[1], bank.config.oracleKeys[2]);
|
|
27324
27570
|
const onrampKey = bank.config.oracleKeys[3];
|
|
@@ -72073,7 +72319,9 @@ function decodeExponentVault(data) {
|
|
|
72073
72319
|
finalSyExchangeRate: exponentNumberToBigNumber(
|
|
72074
72320
|
get("final_sy_exchange_rate", "finalSyExchangeRate")
|
|
72075
72321
|
),
|
|
72076
|
-
status: Number(get("status", "status") ?? 0)
|
|
72322
|
+
status: Number(get("status", "status") ?? 0),
|
|
72323
|
+
startTs: Number(get("start_ts", "startTs") ?? 0),
|
|
72324
|
+
duration: Number(get("duration", "duration") ?? 0)
|
|
72077
72325
|
};
|
|
72078
72326
|
}
|
|
72079
72327
|
function decodeExponentMarketVault(data) {
|
|
@@ -74942,6 +75190,82 @@ function makeRefreshIntegrationBanksIxs(marginfiAccount, bankMap, banksToExclude
|
|
|
74942
75190
|
keys: [...kaminoRefreshIxs.keys, ...updateDriftMarketIxs.keys, ...updateJupLendRateIxs.keys]
|
|
74943
75191
|
};
|
|
74944
75192
|
}
|
|
75193
|
+
new PublicKey("HFn8GnPADiny6XqUoWE8uRPPxb29ikn4yTuPa9MF2fWJ");
|
|
75194
|
+
var SCOPE_ORACLE_PRICES_DISCRIMINATOR = Buffer.from([89, 128, 118, 221, 6, 72, 180, 146]);
|
|
75195
|
+
var SCOPE_MAX_ENTRIES = 512;
|
|
75196
|
+
var ENTRIES_OFFSET = 40;
|
|
75197
|
+
var DATED_PRICE_SIZE = 56;
|
|
75198
|
+
var SCOPE_ORACLE_PRICES_SIZE = ENTRIES_OFFSET + SCOPE_MAX_ENTRIES * DATED_PRICE_SIZE;
|
|
75199
|
+
function decodeScopePriceAtIndex(data, entryIndex) {
|
|
75200
|
+
if (data.length !== SCOPE_ORACLE_PRICES_SIZE) {
|
|
75201
|
+
throw new Error(`Invalid Scope OraclePrices account size: ${data.length}`);
|
|
75202
|
+
}
|
|
75203
|
+
if (!data.subarray(0, 8).equals(SCOPE_ORACLE_PRICES_DISCRIMINATOR)) {
|
|
75204
|
+
throw new Error("Invalid Scope OraclePrices discriminator");
|
|
75205
|
+
}
|
|
75206
|
+
if (entryIndex < 0 || entryIndex >= SCOPE_MAX_ENTRIES) {
|
|
75207
|
+
throw new Error(`Scope entry index out of range: ${entryIndex}`);
|
|
75208
|
+
}
|
|
75209
|
+
const offset = ENTRIES_OFFSET + entryIndex * DATED_PRICE_SIZE;
|
|
75210
|
+
const value = data.readBigUInt64LE(offset);
|
|
75211
|
+
const exp = data.readBigUInt64LE(offset + 8);
|
|
75212
|
+
const lastUpdatedSlot = data.readBigUInt64LE(offset + 16);
|
|
75213
|
+
const unixTimestamp = data.readBigUInt64LE(offset + 24);
|
|
75214
|
+
const price = new BigNumber3(value.toString()).shiftedBy(-Number(exp));
|
|
75215
|
+
return {
|
|
75216
|
+
price,
|
|
75217
|
+
lastUpdatedSlot: Number(lastUpdatedSlot),
|
|
75218
|
+
unixTimestamp: Number(unixTimestamp)
|
|
75219
|
+
};
|
|
75220
|
+
}
|
|
75221
|
+
new PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD");
|
|
75222
|
+
var MARINADE_STATE_SIZE = 520;
|
|
75223
|
+
var MSOL_PRICE_OFFSET = 512;
|
|
75224
|
+
var MSOL_PRICE_PRECISION = new BigNumber3(2).pow(32);
|
|
75225
|
+
function decodeMarinadeState(data) {
|
|
75226
|
+
if (data.length !== MARINADE_STATE_SIZE) {
|
|
75227
|
+
throw new Error(`Invalid Marinade State account size: ${data.length}`);
|
|
75228
|
+
}
|
|
75229
|
+
const msolPriceRaw = data.readBigUInt64LE(MSOL_PRICE_OFFSET);
|
|
75230
|
+
return {
|
|
75231
|
+
msolPrice: new BigNumber3(msolPriceRaw.toString()).div(MSOL_PRICE_PRECISION)
|
|
75232
|
+
};
|
|
75233
|
+
}
|
|
75234
|
+
new PublicKey(
|
|
75235
|
+
"SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy"
|
|
75236
|
+
);
|
|
75237
|
+
new PublicKey(
|
|
75238
|
+
"SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY"
|
|
75239
|
+
);
|
|
75240
|
+
new PublicKey(
|
|
75241
|
+
"SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn"
|
|
75242
|
+
);
|
|
75243
|
+
var ACCOUNT_TYPE_STAKE_POOL = 1;
|
|
75244
|
+
var TOTAL_LAMPORTS_OFFSET = 258;
|
|
75245
|
+
var POOL_TOKEN_SUPPLY_OFFSET = 266;
|
|
75246
|
+
var LAST_UPDATE_EPOCH_OFFSET = 274;
|
|
75247
|
+
function decodeStakePool(data) {
|
|
75248
|
+
if (data.length < LAST_UPDATE_EPOCH_OFFSET + 8) {
|
|
75249
|
+
throw new Error(`Invalid StakePool account size: ${data.length}`);
|
|
75250
|
+
}
|
|
75251
|
+
if (data[0] !== ACCOUNT_TYPE_STAKE_POOL) {
|
|
75252
|
+
throw new Error(`Invalid StakePool account type: ${data[0]}`);
|
|
75253
|
+
}
|
|
75254
|
+
const totalLamports = data.readBigUInt64LE(TOTAL_LAMPORTS_OFFSET);
|
|
75255
|
+
const poolTokenSupply = data.readBigUInt64LE(POOL_TOKEN_SUPPLY_OFFSET);
|
|
75256
|
+
const lastUpdateEpoch = Number(data.readBigUInt64LE(LAST_UPDATE_EPOCH_OFFSET));
|
|
75257
|
+
if (poolTokenSupply === 0n) {
|
|
75258
|
+
throw new Error("StakePool has zero token supply");
|
|
75259
|
+
}
|
|
75260
|
+
return {
|
|
75261
|
+
totalLamports,
|
|
75262
|
+
poolTokenSupply,
|
|
75263
|
+
lastUpdateEpoch,
|
|
75264
|
+
exchangeRate: new BigNumber3(totalLamports.toString()).div(
|
|
75265
|
+
new BigNumber3(poolTokenSupply.toString())
|
|
75266
|
+
)
|
|
75267
|
+
};
|
|
75268
|
+
}
|
|
74945
75269
|
var GAMMA_VAULT_PROGRAM_ID = new PublicKey(
|
|
74946
75270
|
"GaMmanX9i4jGmqDZZD2tbD6B2v9p21btenPneMXnTczV"
|
|
74947
75271
|
);
|
|
@@ -80549,16 +80873,17 @@ function chunkArray(array4, chunkSize) {
|
|
|
80549
80873
|
}
|
|
80550
80874
|
|
|
80551
80875
|
// src/services/price/services/pyth-oracle.service.ts
|
|
80552
|
-
var fetchPythOracleData = async (banks, opts) => {
|
|
80876
|
+
var fetchPythOracleData = async (banks, opts, priceCoeffByBank = {}) => {
|
|
80553
80877
|
const {
|
|
80554
80878
|
pythPushBanks,
|
|
80555
80879
|
pythStakedCollateralBanks,
|
|
80556
80880
|
pythPushKaminosBanks,
|
|
80557
80881
|
driftPythPullBanks,
|
|
80558
80882
|
solendPythPullBanks,
|
|
80559
|
-
juplendPythPullBanks
|
|
80883
|
+
juplendPythPullBanks,
|
|
80884
|
+
pythMultipliedBanks
|
|
80560
80885
|
} = categorizePythBanks(banks);
|
|
80561
|
-
if (!pythPushBanks.length && !pythStakedCollateralBanks.length && !pythPushKaminosBanks.length && !driftPythPullBanks.length && !solendPythPullBanks.length && !juplendPythPullBanks.length) {
|
|
80886
|
+
if (!pythPushBanks.length && !pythStakedCollateralBanks.length && !pythPushKaminosBanks.length && !driftPythPullBanks.length && !solendPythPullBanks.length && !juplendPythPullBanks.length && !pythMultipliedBanks.length) {
|
|
80562
80887
|
return {
|
|
80563
80888
|
bankOraclePriceMap: /* @__PURE__ */ new Map()
|
|
80564
80889
|
};
|
|
@@ -80569,9 +80894,9 @@ var fetchPythOracleData = async (banks, opts) => {
|
|
|
80569
80894
|
...pythPushKaminosBanks,
|
|
80570
80895
|
...driftPythPullBanks,
|
|
80571
80896
|
...solendPythPullBanks,
|
|
80572
|
-
...juplendPythPullBanks
|
|
80897
|
+
...juplendPythPullBanks,
|
|
80898
|
+
...pythMultipliedBanks
|
|
80573
80899
|
];
|
|
80574
|
-
const priceCoeffByBank = {};
|
|
80575
80900
|
const pythOracleKeys = extractPythOracleKeys(combinedPythBanks);
|
|
80576
80901
|
const uniquePythOracleKeys = Array.from(new Set(pythOracleKeys));
|
|
80577
80902
|
let oraclePrices;
|
|
@@ -80586,10 +80911,15 @@ var fetchPythOracleData = async (banks, opts) => {
|
|
|
80586
80911
|
}
|
|
80587
80912
|
const bankOraclePriceMap = mapPythBanksToOraclePrices(
|
|
80588
80913
|
combinedPythBanks,
|
|
80589
|
-
pythStakedCollateralBanks,
|
|
80914
|
+
[...pythStakedCollateralBanks, ...pythMultipliedBanks],
|
|
80590
80915
|
oraclePrices,
|
|
80591
80916
|
priceCoeffByBank
|
|
80592
80917
|
);
|
|
80918
|
+
pythMultipliedBanks.forEach((bank) => {
|
|
80919
|
+
if (priceCoeffByBank[bank.address.toBase58()] === void 0) {
|
|
80920
|
+
bankOraclePriceMap.delete(bank.address.toBase58());
|
|
80921
|
+
}
|
|
80922
|
+
});
|
|
80593
80923
|
return {
|
|
80594
80924
|
bankOraclePriceMap
|
|
80595
80925
|
};
|
|
@@ -80861,16 +81191,242 @@ async function fetchSingleCrossbarChunk(endpoint, swbFeedIdsChunk, isPrimary) {
|
|
|
80861
81191
|
throw error;
|
|
80862
81192
|
}
|
|
80863
81193
|
}
|
|
81194
|
+
var scopeRequestKey = (bank) => `${bank.config.oracleKeys[0].toBase58()}:${bank.config.scopeEntryIndex}`;
|
|
81195
|
+
var fetchScopeOracleData = async (banks, opts) => {
|
|
81196
|
+
const scopeBanks = banks.filter((bank) => getOracleSourceFromBank(bank).key === "scope");
|
|
81197
|
+
if (!scopeBanks.length) {
|
|
81198
|
+
return {
|
|
81199
|
+
bankOraclePriceMap: /* @__PURE__ */ new Map()
|
|
81200
|
+
};
|
|
81201
|
+
}
|
|
81202
|
+
const uniqueRequestKeys = Array.from(new Set(scopeBanks.map(scopeRequestKey)));
|
|
81203
|
+
let oraclePrices;
|
|
81204
|
+
if (opts.mode === "api") {
|
|
81205
|
+
oraclePrices = await fetchScopeOraclePricesFromAPI(
|
|
81206
|
+
uniqueRequestKeys,
|
|
81207
|
+
opts.scopeOnchainData.endpoint,
|
|
81208
|
+
{ queryKey: opts.scopeOnchainData.queryKey }
|
|
81209
|
+
);
|
|
81210
|
+
} else {
|
|
81211
|
+
oraclePrices = await fetchScopeOraclePricesFromChain(uniqueRequestKeys, opts.connection);
|
|
81212
|
+
}
|
|
81213
|
+
const bankOraclePriceMap = /* @__PURE__ */ new Map();
|
|
81214
|
+
const nowSeconds = Math.floor(Date.now() / 1e3);
|
|
81215
|
+
scopeBanks.forEach((bank) => {
|
|
81216
|
+
let oraclePrice = oraclePrices[scopeRequestKey(bank)];
|
|
81217
|
+
const isStale = !oraclePrice || nowSeconds - oraclePrice.timestamp.toNumber() > bank.config.oracleMaxAge;
|
|
81218
|
+
if (isStale) {
|
|
81219
|
+
oraclePrice = {
|
|
81220
|
+
priceRealtime: {
|
|
81221
|
+
price: new BigNumber3(0),
|
|
81222
|
+
confidence: new BigNumber3(0),
|
|
81223
|
+
lowestPrice: new BigNumber3(0),
|
|
81224
|
+
highestPrice: new BigNumber3(0)
|
|
81225
|
+
},
|
|
81226
|
+
priceWeighted: {
|
|
81227
|
+
price: new BigNumber3(0),
|
|
81228
|
+
confidence: new BigNumber3(0),
|
|
81229
|
+
lowestPrice: new BigNumber3(0),
|
|
81230
|
+
highestPrice: new BigNumber3(0)
|
|
81231
|
+
},
|
|
81232
|
+
timestamp: oraclePrice?.timestamp ?? new BigNumber3(0)
|
|
81233
|
+
};
|
|
81234
|
+
}
|
|
81235
|
+
bankOraclePriceMap.set(bank.address.toBase58(), oraclePrice);
|
|
81236
|
+
});
|
|
81237
|
+
return {
|
|
81238
|
+
bankOraclePriceMap
|
|
81239
|
+
};
|
|
81240
|
+
};
|
|
81241
|
+
var fetchScopeOraclePricesFromAPI = async (requestKeys, apiEndpoint, opts) => {
|
|
81242
|
+
const queryKey = opts?.queryKey ?? "scopeKeys";
|
|
81243
|
+
const response = await fetch(`${apiEndpoint}?${queryKey}=${requestKeys.join(",")}`);
|
|
81244
|
+
if (!response.ok) {
|
|
81245
|
+
throw new Error("Failed to fetch scope oracle data");
|
|
81246
|
+
}
|
|
81247
|
+
const { data } = await response.json();
|
|
81248
|
+
return Object.fromEntries(
|
|
81249
|
+
Object.entries(data).map(([key, oraclePrice]) => [
|
|
81250
|
+
key,
|
|
81251
|
+
{
|
|
81252
|
+
priceRealtime: {
|
|
81253
|
+
price: BigNumber3(oraclePrice.priceRealtime.price),
|
|
81254
|
+
confidence: BigNumber3(oraclePrice.priceRealtime.confidence),
|
|
81255
|
+
lowestPrice: BigNumber3(oraclePrice.priceRealtime.lowestPrice),
|
|
81256
|
+
highestPrice: BigNumber3(oraclePrice.priceRealtime.highestPrice)
|
|
81257
|
+
},
|
|
81258
|
+
priceWeighted: {
|
|
81259
|
+
price: BigNumber3(oraclePrice.priceWeighted.price),
|
|
81260
|
+
confidence: BigNumber3(oraclePrice.priceWeighted.confidence),
|
|
81261
|
+
lowestPrice: BigNumber3(oraclePrice.priceWeighted.lowestPrice),
|
|
81262
|
+
highestPrice: BigNumber3(oraclePrice.priceWeighted.highestPrice)
|
|
81263
|
+
},
|
|
81264
|
+
timestamp: BigNumber3(oraclePrice.timestamp)
|
|
81265
|
+
}
|
|
81266
|
+
])
|
|
81267
|
+
);
|
|
81268
|
+
};
|
|
81269
|
+
var fetchScopeOraclePricesFromChain = async (requestKeys, connection) => {
|
|
81270
|
+
const uniqueOracleKeys = Array.from(new Set(requestKeys.map((key) => key.split(":")[0])));
|
|
81271
|
+
const oracleAis = await chunkedGetRawMultipleAccountInfoOrdered(connection, uniqueOracleKeys);
|
|
81272
|
+
const accountDataByKey = {};
|
|
81273
|
+
uniqueOracleKeys.forEach((oracleKey, index) => {
|
|
81274
|
+
accountDataByKey[oracleKey] = oracleAis[index]?.data;
|
|
81275
|
+
});
|
|
81276
|
+
const oraclePriceByRequestKey = {};
|
|
81277
|
+
for (const requestKey of requestKeys) {
|
|
81278
|
+
const [oracleKey, entryIndexRaw] = requestKey.split(":");
|
|
81279
|
+
const data = accountDataByKey[oracleKey];
|
|
81280
|
+
let price = new BigNumber3(0);
|
|
81281
|
+
let timestamp = new BigNumber3(0);
|
|
81282
|
+
if (data) {
|
|
81283
|
+
try {
|
|
81284
|
+
const entry = decodeScopePriceAtIndex(data, Number(entryIndexRaw));
|
|
81285
|
+
price = entry.price;
|
|
81286
|
+
timestamp = new BigNumber3(entry.unixTimestamp);
|
|
81287
|
+
} catch (e) {
|
|
81288
|
+
console.error(`Failed to decode scope entry ${requestKey}`, e);
|
|
81289
|
+
}
|
|
81290
|
+
}
|
|
81291
|
+
oraclePriceByRequestKey[requestKey] = {
|
|
81292
|
+
priceRealtime: {
|
|
81293
|
+
price,
|
|
81294
|
+
confidence: new BigNumber3(0),
|
|
81295
|
+
lowestPrice: price,
|
|
81296
|
+
highestPrice: price
|
|
81297
|
+
},
|
|
81298
|
+
priceWeighted: {
|
|
81299
|
+
price,
|
|
81300
|
+
confidence: new BigNumber3(0),
|
|
81301
|
+
lowestPrice: price,
|
|
81302
|
+
highestPrice: price
|
|
81303
|
+
},
|
|
81304
|
+
timestamp
|
|
81305
|
+
};
|
|
81306
|
+
}
|
|
81307
|
+
return oraclePriceByRequestKey;
|
|
81308
|
+
};
|
|
81309
|
+
function multiplierAccountKey(bank) {
|
|
81310
|
+
switch (bank.config.oracleSetup) {
|
|
81311
|
+
case "PythMSOL" /* PythMSOL */:
|
|
81312
|
+
case "PythLST" /* PythLST */:
|
|
81313
|
+
case "PTPyth" /* PTPyth */:
|
|
81314
|
+
return bank.config.oracleKeys[1];
|
|
81315
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
81316
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
81317
|
+
case "KaminoLST" /* KaminoLST */:
|
|
81318
|
+
case "JuplendLST" /* JuplendLST */:
|
|
81319
|
+
return bank.config.oracleKeys[2];
|
|
81320
|
+
case "PTFixed" /* PTFixed */:
|
|
81321
|
+
return bank.config.oracleKeys[0];
|
|
81322
|
+
default:
|
|
81323
|
+
return void 0;
|
|
81324
|
+
}
|
|
81325
|
+
}
|
|
81326
|
+
function computePtMultiplier(vault, startPrice, nowSeconds) {
|
|
81327
|
+
const maturity = vault.startTs + vault.duration;
|
|
81328
|
+
let expectedRate;
|
|
81329
|
+
if (vault.duration <= 0 || nowSeconds <= vault.startTs) {
|
|
81330
|
+
expectedRate = startPrice;
|
|
81331
|
+
} else if (nowSeconds >= maturity) {
|
|
81332
|
+
expectedRate = new BigNumber3(1);
|
|
81333
|
+
} else {
|
|
81334
|
+
const progress = new BigNumber3(nowSeconds - vault.startTs).div(vault.duration);
|
|
81335
|
+
expectedRate = startPrice.plus(new BigNumber3(1).minus(startPrice).times(progress));
|
|
81336
|
+
}
|
|
81337
|
+
if (vault.ptSupply === 0n) {
|
|
81338
|
+
throw new Error("Exponent vault has zero PT supply");
|
|
81339
|
+
}
|
|
81340
|
+
const syPerPt = new BigNumber3(vault.syForPt.toString()).div(
|
|
81341
|
+
new BigNumber3(vault.ptSupply.toString())
|
|
81342
|
+
);
|
|
81343
|
+
const redemptionCap = syPerPt.times(vault.lastSeenSyExchangeRate);
|
|
81344
|
+
return BigNumber3.min(expectedRate, redemptionCap);
|
|
81345
|
+
}
|
|
81346
|
+
var fetchOracleMultipliers = async (banks, opts) => {
|
|
81347
|
+
const multipliedBanks = banks.filter((bank) => multiplierAccountKey(bank) !== void 0);
|
|
81348
|
+
if (!multipliedBanks.length) {
|
|
81349
|
+
return {};
|
|
81350
|
+
}
|
|
81351
|
+
if (opts.mode === "api") {
|
|
81352
|
+
return fetchOracleMultipliersFromAPI(
|
|
81353
|
+
multipliedBanks.map((bank) => bank.address.toBase58()),
|
|
81354
|
+
opts.multiplierData.endpoint,
|
|
81355
|
+
{ queryKey: opts.multiplierData.queryKey }
|
|
81356
|
+
);
|
|
81357
|
+
}
|
|
81358
|
+
return fetchOracleMultipliersFromChain(multipliedBanks, opts.connection);
|
|
81359
|
+
};
|
|
81360
|
+
var fetchOracleMultipliersFromAPI = async (bankAddresses, apiEndpoint, opts) => {
|
|
81361
|
+
const queryKey = opts?.queryKey ?? "bankAddresses";
|
|
81362
|
+
const response = await fetch(`${apiEndpoint}?${queryKey}=${bankAddresses.join(",")}`);
|
|
81363
|
+
if (!response.ok) {
|
|
81364
|
+
throw new Error("Failed to fetch price multiplier data");
|
|
81365
|
+
}
|
|
81366
|
+
const { data } = await response.json();
|
|
81367
|
+
return Object.fromEntries(
|
|
81368
|
+
Object.entries(data).map(([bankAddress, multiplier]) => [bankAddress, Number(multiplier)])
|
|
81369
|
+
);
|
|
81370
|
+
};
|
|
81371
|
+
var fetchOracleMultipliersFromChain = async (multipliedBanks, connection) => {
|
|
81372
|
+
const accountKeyByBank = new Map(
|
|
81373
|
+
multipliedBanks.map((bank) => [bank.address.toBase58(), multiplierAccountKey(bank).toBase58()])
|
|
81374
|
+
);
|
|
81375
|
+
const uniqueAccountKeys = Array.from(new Set(accountKeyByBank.values()));
|
|
81376
|
+
const accountAis = await chunkedGetRawMultipleAccountInfoOrdered(connection, uniqueAccountKeys);
|
|
81377
|
+
const accountDataByKey = {};
|
|
81378
|
+
uniqueAccountKeys.forEach((accountKey, index) => {
|
|
81379
|
+
accountDataByKey[accountKey] = accountAis[index]?.data;
|
|
81380
|
+
});
|
|
81381
|
+
const multiplierByBank = {};
|
|
81382
|
+
const nowSeconds = Math.floor(Date.now() / 1e3);
|
|
81383
|
+
for (const bank of multipliedBanks) {
|
|
81384
|
+
const bankAddress = bank.address.toBase58();
|
|
81385
|
+
const data = accountDataByKey[accountKeyByBank.get(bankAddress)];
|
|
81386
|
+
if (!data) {
|
|
81387
|
+
console.error(`Missing multiplier account for bank ${bankAddress}`);
|
|
81388
|
+
continue;
|
|
81389
|
+
}
|
|
81390
|
+
try {
|
|
81391
|
+
switch (bank.config.oracleSetup) {
|
|
81392
|
+
case "PythMSOL" /* PythMSOL */:
|
|
81393
|
+
case "KaminoMSOL" /* KaminoMSOL */:
|
|
81394
|
+
case "JuplendMSOL" /* JuplendMSOL */:
|
|
81395
|
+
multiplierByBank[bankAddress] = decodeMarinadeState(data).msolPrice.toNumber();
|
|
81396
|
+
break;
|
|
81397
|
+
case "PythLST" /* PythLST */:
|
|
81398
|
+
case "KaminoLST" /* KaminoLST */:
|
|
81399
|
+
case "JuplendLST" /* JuplendLST */:
|
|
81400
|
+
multiplierByBank[bankAddress] = decodeStakePool(data).exchangeRate.toNumber();
|
|
81401
|
+
break;
|
|
81402
|
+
case "PTPyth" /* PTPyth */:
|
|
81403
|
+
case "PTFixed" /* PTFixed */:
|
|
81404
|
+
multiplierByBank[bankAddress] = computePtMultiplier(
|
|
81405
|
+
decodeExponentVault(data),
|
|
81406
|
+
bank.config.fixedPrice,
|
|
81407
|
+
nowSeconds
|
|
81408
|
+
).toNumber();
|
|
81409
|
+
break;
|
|
81410
|
+
}
|
|
81411
|
+
} catch (e) {
|
|
81412
|
+
console.error(`Failed to compute multiplier for bank ${bankAddress}`, e);
|
|
81413
|
+
}
|
|
81414
|
+
}
|
|
81415
|
+
return multiplierByBank;
|
|
81416
|
+
};
|
|
80864
81417
|
var fetchOracleData = async (banks, opts) => {
|
|
80865
81418
|
const { zeroOracleBanks, isolatedAssetBanks, collateralAssetBanks, fixedAssetBanks } = classifyBanksForOracleStrategy(banks);
|
|
80866
81419
|
const zeroResults = handleZeroOracleBanks(zeroOracleBanks);
|
|
80867
81420
|
const fetchIsolatedPrice = opts?.isolatedBanksOpts?.fetchPrices ?? false;
|
|
80868
81421
|
const isolatedResults = fetchIsolatedPrice ? handleIsolatedAssetBanks(isolatedAssetBanks, opts?.isolatedBanksOpts?.staticPricesByBank) : /* @__PURE__ */ new Map();
|
|
80869
|
-
const
|
|
81422
|
+
const multiplierByBank = await fetchOracleMultipliers(banks, opts.oracleMultiplierOpts);
|
|
81423
|
+
const fixedResults = handleFixedOracleBanks(fixedAssetBanks, multiplierByBank);
|
|
80870
81424
|
const assetBanks = [...collateralAssetBanks, ...fetchIsolatedPrice ? isolatedAssetBanks : []];
|
|
80871
81425
|
const assetResults = await handleAssetBanks(assetBanks, {
|
|
80872
81426
|
pythOpts: opts.pythOpts,
|
|
80873
|
-
swbOpts: opts.swbOpts
|
|
81427
|
+
swbOpts: opts.swbOpts,
|
|
81428
|
+
scopeOpts: opts.scopeOpts,
|
|
81429
|
+
priceCoeffByBank: multiplierByBank
|
|
80874
81430
|
});
|
|
80875
81431
|
return mergeOracleResults([zeroResults, isolatedResults, assetResults, fixedResults], banks);
|
|
80876
81432
|
};
|
|
@@ -80904,10 +81460,11 @@ function classifyBanksForOracleStrategy(banks) {
|
|
|
80904
81460
|
fixedAssetBanks
|
|
80905
81461
|
};
|
|
80906
81462
|
}
|
|
80907
|
-
function handleFixedOracleBanks(banks) {
|
|
81463
|
+
function handleFixedOracleBanks(banks, multiplierByBank) {
|
|
80908
81464
|
const oracleMap = /* @__PURE__ */ new Map();
|
|
80909
81465
|
banks.forEach((bank) => {
|
|
80910
|
-
const
|
|
81466
|
+
const multiplier = multiplierByBank[bank.address.toBase58()];
|
|
81467
|
+
const fixedPrice = bank.config.oracleSetup === "PTFixed" /* PTFixed */ && multiplier !== void 0 ? BigNumber3(multiplier) : bank.config.fixedPrice;
|
|
80911
81468
|
const fixedOraclePrice = {
|
|
80912
81469
|
priceRealtime: {
|
|
80913
81470
|
price: fixedPrice,
|
|
@@ -80976,9 +81533,10 @@ async function handleAssetBanks(banks, opts) {
|
|
|
80976
81533
|
if (banks.length === 0) {
|
|
80977
81534
|
return /* @__PURE__ */ new Map();
|
|
80978
81535
|
}
|
|
80979
|
-
const [pythData, swbData] = await Promise.all([
|
|
80980
|
-
fetchPythOracleData(banks, opts.pythOpts),
|
|
80981
|
-
fetchSwbOracleData(banks, opts.swbOpts)
|
|
81536
|
+
const [pythData, swbData, scopeData] = await Promise.all([
|
|
81537
|
+
fetchPythOracleData(banks, opts.pythOpts, opts.priceCoeffByBank),
|
|
81538
|
+
fetchSwbOracleData(banks, opts.swbOpts),
|
|
81539
|
+
fetchScopeOracleData(banks, opts.scopeOpts)
|
|
80982
81540
|
]);
|
|
80983
81541
|
const bankOraclePriceMap = /* @__PURE__ */ new Map();
|
|
80984
81542
|
pythData.bankOraclePriceMap.forEach((oraclePrice, bankAddress) => {
|
|
@@ -80987,6 +81545,9 @@ async function handleAssetBanks(banks, opts) {
|
|
|
80987
81545
|
swbData.bankOraclePriceMap.forEach((oraclePrice, bankAddress) => {
|
|
80988
81546
|
bankOraclePriceMap.set(bankAddress, oraclePrice);
|
|
80989
81547
|
});
|
|
81548
|
+
scopeData.bankOraclePriceMap.forEach((oraclePrice, bankAddress) => {
|
|
81549
|
+
bankOraclePriceMap.set(bankAddress, oraclePrice);
|
|
81550
|
+
});
|
|
80990
81551
|
banks.forEach((bank) => {
|
|
80991
81552
|
const bankAddress = bank.address.toBase58();
|
|
80992
81553
|
const oraclePrice = bankOraclePriceMap.get(bankAddress);
|
|
@@ -83369,7 +83930,8 @@ var Bank = class _Bank {
|
|
|
83369
83930
|
bankType.config.operationalState,
|
|
83370
83931
|
bankType.config.oracleMaxConfidence,
|
|
83371
83932
|
bankType.config.fixedPrice,
|
|
83372
|
-
bankType.config.configFlags
|
|
83933
|
+
bankType.config.configFlags,
|
|
83934
|
+
bankType.config.scopeEntryIndex
|
|
83373
83935
|
);
|
|
83374
83936
|
return new _Bank(
|
|
83375
83937
|
bankType.address,
|
|
@@ -83538,7 +84100,7 @@ var Bank = class _Bank {
|
|
|
83538
84100
|
}
|
|
83539
84101
|
};
|
|
83540
84102
|
var BankConfig = class _BankConfig {
|
|
83541
|
-
constructor(assetWeightInit, assetWeightMaint, liabilityWeightInit, liabilityWeightMaint, depositLimit, borrowLimit, riskTier, totalAssetValueInitLimit, assetTag, oracleSetup, oracleKeys, oracleMaxAge, interestRateConfig, operationalState, oracleMaxConfidence, fixedPrice, configFlags) {
|
|
84103
|
+
constructor(assetWeightInit, assetWeightMaint, liabilityWeightInit, liabilityWeightMaint, depositLimit, borrowLimit, riskTier, totalAssetValueInitLimit, assetTag, oracleSetup, oracleKeys, oracleMaxAge, interestRateConfig, operationalState, oracleMaxConfidence, fixedPrice, configFlags, scopeEntryIndex = 0) {
|
|
83542
84104
|
this.assetWeightInit = assetWeightInit;
|
|
83543
84105
|
this.assetWeightMaint = assetWeightMaint;
|
|
83544
84106
|
this.liabilityWeightInit = liabilityWeightInit;
|
|
@@ -83556,6 +84118,7 @@ var BankConfig = class _BankConfig {
|
|
|
83556
84118
|
this.oracleMaxConfidence = oracleMaxConfidence;
|
|
83557
84119
|
this.fixedPrice = fixedPrice;
|
|
83558
84120
|
this.configFlags = configFlags;
|
|
84121
|
+
this.scopeEntryIndex = scopeEntryIndex;
|
|
83559
84122
|
}
|
|
83560
84123
|
static fromAccountParsed(bankConfigRaw) {
|
|
83561
84124
|
const bankConfig = parseBankConfigRaw(bankConfigRaw);
|
|
@@ -83576,7 +84139,8 @@ var BankConfig = class _BankConfig {
|
|
|
83576
84139
|
bankConfig.operationalState,
|
|
83577
84140
|
bankConfig.oracleMaxConfidence,
|
|
83578
84141
|
bankConfig.fixedPrice,
|
|
83579
|
-
bankConfig.configFlags
|
|
84142
|
+
bankConfig.configFlags,
|
|
84143
|
+
bankConfig.scopeEntryIndex
|
|
83580
84144
|
);
|
|
83581
84145
|
}
|
|
83582
84146
|
};
|
|
@@ -84755,6 +85319,14 @@ var Project0Client = class _Project0Client {
|
|
|
84755
85319
|
mode: "on-chain",
|
|
84756
85320
|
connection
|
|
84757
85321
|
},
|
|
85322
|
+
scopeOpts: {
|
|
85323
|
+
mode: "on-chain",
|
|
85324
|
+
connection
|
|
85325
|
+
},
|
|
85326
|
+
oracleMultiplierOpts: {
|
|
85327
|
+
mode: "on-chain",
|
|
85328
|
+
connection
|
|
85329
|
+
},
|
|
84758
85330
|
isolatedBanksOpts: {
|
|
84759
85331
|
fetchPrices: true
|
|
84760
85332
|
}
|
|
@@ -84887,6 +85459,6 @@ var EmodeSettings = class _EmodeSettings {
|
|
|
84887
85459
|
}
|
|
84888
85460
|
};
|
|
84889
85461
|
|
|
84890
|
-
export { ADDRESS_LOOKUP_TABLE_FOR_GROUP, ADDRESS_LOOKUP_TABLE_FOR_GROUP_NATIVE_STAKE, ADDRESS_LOOKUP_TABLE_FOR_SWAP, AccountFlags, AccountType, AssetTag, BUNDLE_TX_SIZE, Balance, Bank, BankConfig, BankConfigFlag, BankVaultType, DEFAULT_BRIDGE_MINTS, DEFAULT_CROSSBAR_URL, DEFAULT_FALLBACK_CROSSBAR_URL, DEFAULT_ORACLE_MAX_AGE, DEFAULT_REPAY_ALL_EXTRA_BUFFER_BPS, DISABLED_FLAG, EMPTY_HEALTH_CACHE, EXECUTION_HEADROOM_SECONDS, EmodeEntryFlags, EmodeFlags, EmodeImpactStatus, EmodeSettings, EmodeTag, FLASHLOAN_ENABLED_FLAG, HOURS_PER_YEAR, HealthCache, HealthCacheFlags, HealthCacheSimulationError, HealthCacheStatus, JUPITER_V6_PROGRAM, JUP_SWAP_LUT_PROGRAM_AUTHORITY_INDEX, LST_MINT, MARGINFI_IDL, MARGINFI_PROGRAM, MARGINFI_PROGRAM_STAGING, MARGINFI_PROGRAM_STAGING_ALT, MARGINFI_SPONSORED_SHARD_ID, MAX_ACCOUNT_LOCKS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, MarginRequirementType, MarginfiAccount, MarginfiAccountWrapper, MarginfiGroup, OperationalState, OracleSetup, PDA_BANK_EMISSIONS_AUTH_SEED, PDA_BANK_EMISSIONS_VAULT_SEED, PDA_BANK_FEE_STATE_SEED, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PDA_MARGINFI_ACCOUNT_SEED, PRIORITY_TX_SIZE, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PYTH_SPONSORED_SHARD_ID, PriceBias, Project0Client, RiskTier, SECONDS_PER_YEAR, SINGLE_POOL_PROGRAM_ID, STAKED_ORACLE_DISABLED_FLAG, STAKED_ORACLE_USES_ONRAMP_FLAG, STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWAP_ADAPTERS, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, SwapProvider, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionBuildingError, TransactionBuildingErrorCode, TransactionConfigMap, TransactionType, U64_MAX, USDC_DECIMALS, USDC_MINT, USDT_MINT, VENUE_AVAILABLE_LIQUIDITY_BUFFER, WSOL_MINT, ZERO_ORACLE_KEY, accountConflictsWithBridgeBank, accountFlagToBN, addOracleToBanksIx, addTransactionMetadata, adjustPriceComponent, aprToApy, apyToApr, balanceToDto, bankConfigRawToDto, bankConfigToBankConfigRaw, bankMetadataMapToDto, bankMetadataToDto, bankRateLimiterRawToDto, bankRawToDto, bigNumberToWrappedI80F48, bpsToPercentile, buildCollateralLegIxs, calculateApyFromInterest, calculateInterestFromApy, capConfidenceInterval, categorizePythBanks, checkBatchOracleCrankability, checkJupiterFeeAccount, checkMultipleOraclesCrankability, checkTitanFeeAccount, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, classifyAndValidate, compileFlashloanPrecheck, composeBridgedSwap, composeRemainingAccounts, computeAccountValue, computeAccrualProjectionSeconds, computeActiveEmodePairs, computeAssetHealthComponent, computeAssetUsdValue, computeBalanceUsdValue, computeBankAvailableLiquidity, computeBankBorrowApy, computeBankBorrowCapRemaining, computeBankDepositCapRemaining, computeBankMetrics, computeBankPoolSize, computeBankProjectedAvailableLiquidity, computeBankRateLimitRemaining, computeBankSupplyApy, computeBankTotalBorrows, computeBankTotalBorrowsUsd, computeBankTotalDeposits, computeBankTotalDepositsUsd, computeBaseInterestRate, computeBorrowEstimateForRepay, computeClaimedEmissions, computeClosePositionTokenAmount, computeEmodeImpacts, computeFlashLoanNonSwapBudget, computeFlashloanSwapConstraints, computeFreeCollateralFromBalances, computeFreeCollateralFromCache, computeGroupRateLimitRemainingUsd, computeHealthAccountMetas, computeHealthCacheStatus, computeHealthCheckAccounts, computeHealthComponentsFromBalances, computeHealthComponentsFromCache, computeInterestRates, computeLiabilityHealthComponent, computeLiabilityUsdValue, computeLiquidationPriceForBank, computeLoopingParams, computeLowestEmodeWeights, computeMaxBorrowForBank, computeMaxDepositForBank, computeMaxLeverage, computeMaxWithdrawForBank, computeNetApy, computeProjectedActiveBalancesNoCpi, computeProjectedActiveBanksNoCpi, computeQuantity, computeQuantityUi, computeRateLimitWindowRemainingCapacity, computeRateLimiterRemainingCapacity, computeRemainingCapacity, computeSmartCrank, computeStakedBankMultipliers, computeTotalOutstandingEmissions, computeTvl, computeUsdValue, computeUtilizationRate, computeV0TxSize, computeVenueAvailableLiquidity, convertVoteAccCoeffsToBankCoeffs, createActiveEmodePairFromPairs, createEmptyBalance, decodeAccountRaw, decodeBankRaw, decodeInstruction, decompileV0Transaction, deriveBankEmissionsAuth, deriveBankEmissionsVault, deriveBankFeeVault, deriveBankFeeVaultAuthority, deriveBankInsuranceVault, deriveBankInsuranceVaultAuthority, deriveBankLiquidityVault, deriveBankLiquidityVaultAuthority, deriveFeeState, deriveMarginfiAccount, deserializeInstruction, deserializeLut, deserializeSwapEngineRequest, deserializeSwapEngineResult, dtoToBalance, dtoToBank, dtoToBankConfig, dtoToBankConfigRaw, dtoToBankMetadata, dtoToBankMetadataMap, dtoToBankRateLimiter, dtoToBankRateLimiterRaw, dtoToBankRaw, dtoToEmodeSettings, dtoToEmodeSettingsRaw, dtoToGroup, dtoToHealthCache, dtoToInterestRateConfig, dtoToMarginfiAccount, dtoToOraclePrice, dtoToValidatorStakeGroup, emodeSettingsRawToDto, extractPythOracleKeys, fetchBank, fetchBankIntegrationMetadata, fetchGammaLpVault, fetchGammaWithdrawReceipt, fetchMarginfiAccountActiveBalancesForBank, fetchMarginfiAccountAddresses, fetchMarginfiAccountAddressesHoldingBank, fetchMarginfiAccountData, fetchMultipleBanks, fetchNativeStakeAccounts, fetchOracleData, fetchProgramForMints, fetchPythOracleData, fetchPythOraclePricesFromAPI, fetchPythOraclePricesFromChain, fetchStakeAccount, fetchStakePoolActiveStates, fetchStakePoolMev, fetchSwbOracleAccountsFromAPI, fetchSwbOracleAccountsFromChain, fetchSwbOracleData, fetchSwbOraclePricesFromAPI, fetchSwbOraclePricesFromCrossbar, findRandomAvailableAccountIndex, freezeBankConfigIx, generateDummyAccount, getAccountKeys, getActiveAccountFlags, getActiveBalances, getActiveEmodeEntryFlags, getActiveEmodeFlags, getActiveHealthCacheFlags, getAssetQuantity, getAssetShares, getAssetWeight, getBalance, getBalanceUsdValueWithPriceBias, getBankVaultAuthority, getBankVaultSeeds, getBirdeyeFallbackPricesByFeedId, getBirdeyePricesForMints, getConfig, getDriftCTokenMultiplier, getDriftMetadata, getDriftStatesDto, getEffectiveDepositLimit, getEmodePairs, getExactOutEstimate, getFallbackPricesByFeedId, getFallbackPricesForMints, getHealthCacheStatusDescription, getHealthSimulationTransactions, getJupLendFTokenMultiplier, getJupLendMetadata, getJupLendStatesDto, getJupiterReferralFeeAccount, getJupiterSwapIxsForFlashloan, getKaminoCTokenMultiplier, getKaminoMetadata, getKaminoStatesDto, getLiabilityQuantity, getLiabilityShares, getLiabilityWeight, getOracleSourceFromBank, getOracleSourceFromOracleSetup, getOracleSourceNameFromKey, getPrice, getPriceWithConfidence, getStakedBankMetadataMap, getSwapAdapter, getSwapIxsForFlashloan, getTitanExactOutEstimate, getTitanSwapIxsForFlashloan, getTotalAccountKeys, getTotalAssetQuantity, getTotalLiabilityQuantity, getTxSize, getValidatorVoteAccountByBank, getWritableAccountKeys, groupToDto, hasAccountFlag, hasEmodeEntryFlag, hasEmodeFlag, hasHealthCacheFlag, healthCacheToDto, isBorrowLimitActive, isBridgeConflictError, isDecomposableSwapError, isDepositIx, isDepositLimitActive, isFlashloan, isGroupRateLimiterEnabled, isStandardBorrowable, isStandardDepositable, isV0Tx, isWeightedPrice, isWholePosition, makeAccountTransferToNewAccountTx, makeAddPermissionlessStakedBankIx, makeBeginFlashLoanIx3 as makeBeginFlashLoanIx, makeBorrowIx3 as makeBorrowIx, makeBorrowTx, makeBridgedLoopTx, makeBridgedSwapCollateralTx, makeBridgedSwapDebtTx, makeBulkRepayTx, makeBulkWithdrawTx, makeBundleTipIx, makeCloseMarginfiAccountIx, makeCloseMarginfiAccountTx, makeCrankSwbFeedIx, makeCreateAccountIxWithProjection, makeCreateAccountTxWithProjection, makeCreateMarginfiAccountIx, makeCreateMarginfiAccountTx, makeDepositIx3 as makeDepositIx, makeDepositTx, makeDriftDepositIx3 as makeDriftDepositIx, makeDriftDepositTx, makeDriftWithdrawIx3 as makeDriftWithdrawIx, makeDriftWithdrawTx, makeEndFlashLoanIx3 as makeEndFlashLoanIx, makeFlashLoanTx, makeJuplendDepositIx2 as makeJuplendDepositIx, makeJuplendDepositTx, makeJuplendWithdrawIx2 as makeJuplendWithdrawIx, makeJuplendWithdrawTx, makeKaminoDepositIx3 as makeKaminoDepositIx, makeKaminoDepositTx, makeKaminoWithdrawIx3 as makeKaminoWithdrawIx, makeKaminoWithdrawTx, makeLoopTx, makeMergeStakeAccountsTx, makeMintStakedLstIx, makeMintStakedLstTx, makePoolAddBankIx3 as makePoolAddBankIx, makePoolConfigureBankIx3 as makePoolConfigureBankIx, makePriorityFeeIx, makePriorityFeeMicroIx, makePulseHealthIx2 as makePulseHealthIx, makeRedeemStakedLstIx, makeRedeemStakedLstTx, makeRefreshIntegrationBanksIxs, makeRefreshKaminoBanksIxs, makeRepayIx3 as makeRepayIx, makeRepayTx, makeRepayWithCollatTx, makeRollPtTx, makeSetupIx, makeSmartCrankSwbFeedIx, makeSmartCrankSwbFeedIxForAccounts, makeSwapCollateralTx, makeSwapDebtTx, makeTransferPositionsTx, makeTxPriorityIx, makeUnwrapSolIx, makeUpdateDriftMarketIxs, makeUpdateJupLendRateIxs, makeUpdateSwbFeedIx, makeVaultCompleteWithdrawalIx, makeVaultCompleteWithdrawalTx, makeVaultDepositIx, makeVaultDepositTx, makeVaultDepositWithSwapTx, makeVaultWithdrawIx, makeVaultWithdrawTx, makeVersionedTransaction, makeWithdrawIx3 as makeWithdrawIx, makeWithdrawTx, makeWrapSolIxs, mapBrokenFeedsToOraclePrices, mapJupiterQuoteToSwapQuoteResult, mapPythBanksToOraclePrices, mapSwbBanksToOraclePrices, marginfiAccountToDto, mergeBridgeQuotes, mergeBridgeQuotesDebt, mergeBridgeQuotesLoop, nativeToUi, oraclePriceToDto, parseBalanceRaw, parseBankConfigRaw, parseBankRateLimiterRaw, parseBankRaw, parseEmodeSettingsRaw, parseEmodeTag, parseHealthCacheRaw, parseMarginfiAccountRaw, parseOperationalState, parseOracleSetup, parseOraclePriceData as parsePriceInfo, parseRiskTier, parseRpcPythPriceData, parseSwbOraclePriceData, partitionBanksByCrankability, patchDepositAmount, requireBank, requireTokenProgram, resolveAmount, resolveBridgeCandidateBanks, resolvePinnedSwapRoute, resolveTokenProgramForMint, resolveVaultTokenProgram, runSwapEngine, selectLutsForAccountAction, selectLutsForBanks, selectSwapBridges, serializeBankConfigOpt, serializeInstruction, serializeInterestRateConfig, serializeLut, serializeOperationalState, serializeOracleSetup, serializeOracleSetupToIndex, serializeRiskTier, serializeSwapEngineRequest, serializeSwapEngineResult, sharedBridgeLegContext, shortenAddress, simulateAccountHealthCache, simulateAccountHealthCacheWithFallback, simulateBundle, splitInstructionsToFitTransactions, swapEngineProvidersFromOpts, swapEngineQuoteFieldsFromOpts, toBankConfigDto, toBankDto, toBankRateLimiterDto, toBigNumber, toEmodeSettingsDto, toInterestRateConfigDto, toJupiterConfig, toNumber, tryBridgeCandidates, uiToNative, uiToNativeBigNumber, validatorStakeGroupToDto, wrappedI80F48toBigNumber };
|
|
85462
|
+
export { ADDRESS_LOOKUP_TABLE_FOR_GROUP, ADDRESS_LOOKUP_TABLE_FOR_GROUP_NATIVE_STAKE, ADDRESS_LOOKUP_TABLE_FOR_SWAP, AccountFlags, AccountType, AssetTag, BUNDLE_TX_SIZE, Balance, Bank, BankConfig, BankConfigFlag, BankVaultType, DEFAULT_BRIDGE_MINTS, DEFAULT_CROSSBAR_URL, DEFAULT_FALLBACK_CROSSBAR_URL, DEFAULT_ORACLE_MAX_AGE, DEFAULT_REPAY_ALL_EXTRA_BUFFER_BPS, DISABLED_FLAG, EMPTY_HEALTH_CACHE, EXECUTION_HEADROOM_SECONDS, EmodeEntryFlags, EmodeFlags, EmodeImpactStatus, EmodeSettings, EmodeTag, FLASHLOAN_ENABLED_FLAG, HOURS_PER_YEAR, HealthCache, HealthCacheFlags, HealthCacheSimulationError, HealthCacheStatus, JUPITER_V6_PROGRAM, JUP_SWAP_LUT_PROGRAM_AUTHORITY_INDEX, LST_MINT, MARGINFI_IDL, MARGINFI_PROGRAM, MARGINFI_PROGRAM_STAGING, MARGINFI_PROGRAM_STAGING_ALT, MARGINFI_SPONSORED_SHARD_ID, MAX_ACCOUNT_LOCKS, MAX_CONFIDENCE_INTERVAL_RATIO, MAX_TX_SIZE, MAX_U64, MPL_METADATA_PROGRAM_ID, MarginRequirementType, MarginfiAccount, MarginfiAccountWrapper, MarginfiGroup, OperationalState, OracleSetup, PDA_BANK_EMISSIONS_AUTH_SEED, PDA_BANK_EMISSIONS_VAULT_SEED, PDA_BANK_FEE_STATE_SEED, PDA_BANK_FEE_VAULT_AUTH_SEED, PDA_BANK_FEE_VAULT_SEED, PDA_BANK_INSURANCE_VAULT_AUTH_SEED, PDA_BANK_INSURANCE_VAULT_SEED, PDA_BANK_LIQUIDITY_VAULT_AUTH_SEED, PDA_BANK_LIQUIDITY_VAULT_SEED, PDA_MARGINFI_ACCOUNT_SEED, PRIORITY_TX_SIZE, PYTH_PRICE_CONF_INTERVALS, PYTH_PUSH_ORACLE_ID, PYTH_SPONSORED_SHARD_ID, PriceBias, Project0Client, RiskTier, SECONDS_PER_YEAR, SINGLE_POOL_PROGRAM_ID, STAKED_ORACLE_DISABLED_FLAG, STAKED_ORACLE_USES_ONRAMP_FLAG, STAKE_CONFIG_ID, STAKE_PROGRAM_ID, SWAP_ADAPTERS, SWB_PRICE_CONF_INTERVALS, SYSTEM_PROGRAM_ID, SYSVAR_CLOCK_ID, SYSVAR_RENT_ID, SYSVAR_STAKE_HISTORY_ID, SwapProvider, TRANSFER_ACCOUNT_AUTHORITY_FLAG, TransactionArenaKeyMap, TransactionBuildingError, TransactionBuildingErrorCode, TransactionConfigMap, TransactionType, U64_MAX, USDC_DECIMALS, USDC_MINT, USDT_MINT, VENUE_AVAILABLE_LIQUIDITY_BUFFER, WSOL_MINT, ZERO_ORACLE_KEY, accountConflictsWithBridgeBank, accountFlagToBN, addOracleToBanksIx, addTransactionMetadata, adjustPriceComponent, aprToApy, apyToApr, balanceToDto, bankConfigRawToDto, bankConfigToBankConfigRaw, bankMetadataMapToDto, bankMetadataToDto, bankRateLimiterRawToDto, bankRawToDto, bigNumberToWrappedI80F48, bpsToPercentile, buildCollateralLegIxs, calculateApyFromInterest, calculateInterestFromApy, capConfidenceInterval, categorizePythBanks, checkBatchOracleCrankability, checkJupiterFeeAccount, checkMultipleOraclesCrankability, checkTitanFeeAccount, chunkedGetRawMultipleAccountInfoOrdered, chunkedGetRawMultipleAccountInfoOrderedWithNulls, chunkedGetRawMultipleAccountInfos, classifyAndValidate, compileFlashloanPrecheck, composeBridgedSwap, composeRemainingAccounts, computeAccountValue, computeAccrualProjectionSeconds, computeActiveEmodePairs, computeAssetHealthComponent, computeAssetUsdValue, computeBalanceUsdValue, computeBankAvailableLiquidity, computeBankBorrowApy, computeBankBorrowCapRemaining, computeBankDepositCapRemaining, computeBankMetrics, computeBankPoolSize, computeBankProjectedAvailableLiquidity, computeBankRateLimitRemaining, computeBankRiskAccountKeys, computeBankSupplyApy, computeBankTotalBorrows, computeBankTotalBorrowsUsd, computeBankTotalDeposits, computeBankTotalDepositsUsd, computeBaseInterestRate, computeBorrowEstimateForRepay, computeClaimedEmissions, computeClosePositionTokenAmount, computeEmodeImpacts, computeFlashLoanNonSwapBudget, computeFlashloanSwapConstraints, computeFreeCollateralFromBalances, computeFreeCollateralFromCache, computeGroupRateLimitRemainingUsd, computeHealthAccountMetas, computeHealthCacheStatus, computeHealthCheckAccounts, computeHealthComponentsFromBalances, computeHealthComponentsFromCache, computeInterestRates, computeLiabilityHealthComponent, computeLiabilityUsdValue, computeLiquidationPriceForBank, computeLoopingParams, computeLowestEmodeWeights, computeMaxBorrowForBank, computeMaxDepositForBank, computeMaxLeverage, computeMaxWithdrawForBank, computeNetApy, computeProjectedActiveBalancesNoCpi, computeProjectedActiveBanksNoCpi, computePtMultiplier, computeQuantity, computeQuantityUi, computeRateLimitWindowRemainingCapacity, computeRateLimiterRemainingCapacity, computeRemainingCapacity, computeSmartCrank, computeStakedBankMultipliers, computeTotalOutstandingEmissions, computeTvl, computeUsdValue, computeUtilizationRate, computeV0TxSize, computeVenueAvailableLiquidity, convertVoteAccCoeffsToBankCoeffs, createActiveEmodePairFromPairs, createEmptyBalance, decodeAccountRaw, decodeBankRaw, decodeInstruction, decompileV0Transaction, deriveBankEmissionsAuth, deriveBankEmissionsVault, deriveBankFeeVault, deriveBankFeeVaultAuthority, deriveBankInsuranceVault, deriveBankInsuranceVaultAuthority, deriveBankLiquidityVault, deriveBankLiquidityVaultAuthority, deriveFeeState, deriveMarginfiAccount, deserializeInstruction, deserializeLut, deserializeSwapEngineRequest, deserializeSwapEngineResult, dtoToBalance, dtoToBank, dtoToBankConfig, dtoToBankConfigRaw, dtoToBankMetadata, dtoToBankMetadataMap, dtoToBankRateLimiter, dtoToBankRateLimiterRaw, dtoToBankRaw, dtoToEmodeSettings, dtoToEmodeSettingsRaw, dtoToGroup, dtoToHealthCache, dtoToInterestRateConfig, dtoToMarginfiAccount, dtoToOraclePrice, dtoToValidatorStakeGroup, emodeSettingsRawToDto, extractPythOracleKeys, fetchBank, fetchBankIntegrationMetadata, fetchGammaLpVault, fetchGammaWithdrawReceipt, fetchMarginfiAccountActiveBalancesForBank, fetchMarginfiAccountAddresses, fetchMarginfiAccountAddressesHoldingBank, fetchMarginfiAccountData, fetchMultipleBanks, fetchNativeStakeAccounts, fetchOracleData, fetchOracleMultipliers, fetchOracleMultipliersFromAPI, fetchOracleMultipliersFromChain, fetchProgramForMints, fetchPythOracleData, fetchPythOraclePricesFromAPI, fetchPythOraclePricesFromChain, fetchScopeOracleData, fetchScopeOraclePricesFromAPI, fetchScopeOraclePricesFromChain, fetchStakeAccount, fetchStakePoolActiveStates, fetchStakePoolMev, fetchSwbOracleAccountsFromAPI, fetchSwbOracleAccountsFromChain, fetchSwbOracleData, fetchSwbOraclePricesFromAPI, fetchSwbOraclePricesFromCrossbar, findRandomAvailableAccountIndex, freezeBankConfigIx, generateDummyAccount, getAccountKeys, getActiveAccountFlags, getActiveBalances, getActiveEmodeEntryFlags, getActiveEmodeFlags, getActiveHealthCacheFlags, getAssetQuantity, getAssetShares, getAssetWeight, getBalance, getBalanceUsdValueWithPriceBias, getBankVaultAuthority, getBankVaultSeeds, getBirdeyeFallbackPricesByFeedId, getBirdeyePricesForMints, getConfig, getDriftCTokenMultiplier, getDriftMetadata, getDriftStatesDto, getEffectiveDepositLimit, getEmodePairs, getExactOutEstimate, getFallbackPricesByFeedId, getFallbackPricesForMints, getHealthCacheStatusDescription, getHealthSimulationTransactions, getJupLendFTokenMultiplier, getJupLendMetadata, getJupLendStatesDto, getJupiterReferralFeeAccount, getJupiterSwapIxsForFlashloan, getKaminoCTokenMultiplier, getKaminoMetadata, getKaminoStatesDto, getLiabilityQuantity, getLiabilityShares, getLiabilityWeight, getOracleSourceFromBank, getOracleSourceFromOracleSetup, getOracleSourceNameFromKey, getPrice, getPriceWithConfidence, getStakedBankMetadataMap, getSwapAdapter, getSwapIxsForFlashloan, getTitanExactOutEstimate, getTitanSwapIxsForFlashloan, getTotalAccountKeys, getTotalAssetQuantity, getTotalLiabilityQuantity, getTxSize, getValidatorVoteAccountByBank, getWritableAccountKeys, groupToDto, hasAccountFlag, hasEmodeEntryFlag, hasEmodeFlag, hasHealthCacheFlag, healthCacheToDto, isBorrowLimitActive, isBridgeConflictError, isDecomposableSwapError, isDepositIx, isDepositLimitActive, isFlashloan, isGroupRateLimiterEnabled, isStandardBorrowable, isStandardDepositable, isV0Tx, isWeightedPrice, isWholePosition, makeAccountTransferToNewAccountTx, makeAddPermissionlessStakedBankIx, makeBeginFlashLoanIx3 as makeBeginFlashLoanIx, makeBorrowIx3 as makeBorrowIx, makeBorrowTx, makeBridgedLoopTx, makeBridgedSwapCollateralTx, makeBridgedSwapDebtTx, makeBulkRepayTx, makeBulkWithdrawTx, makeBundleTipIx, makeCloseMarginfiAccountIx, makeCloseMarginfiAccountTx, makeCrankSwbFeedIx, makeCreateAccountIxWithProjection, makeCreateAccountTxWithProjection, makeCreateMarginfiAccountIx, makeCreateMarginfiAccountTx, makeDepositIx3 as makeDepositIx, makeDepositTx, makeDriftDepositIx3 as makeDriftDepositIx, makeDriftDepositTx, makeDriftWithdrawIx3 as makeDriftWithdrawIx, makeDriftWithdrawTx, makeEndFlashLoanIx3 as makeEndFlashLoanIx, makeFlashLoanTx, makeJuplendDepositIx2 as makeJuplendDepositIx, makeJuplendDepositTx, makeJuplendWithdrawIx2 as makeJuplendWithdrawIx, makeJuplendWithdrawTx, makeKaminoDepositIx3 as makeKaminoDepositIx, makeKaminoDepositTx, makeKaminoWithdrawIx3 as makeKaminoWithdrawIx, makeKaminoWithdrawTx, makeLoopTx, makeMergeStakeAccountsTx, makeMintStakedLstIx, makeMintStakedLstTx, makePoolAddBankIx3 as makePoolAddBankIx, makePoolConfigureBankIx3 as makePoolConfigureBankIx, makePriorityFeeIx, makePriorityFeeMicroIx, makePulseHealthIx2 as makePulseHealthIx, makeRedeemStakedLstIx, makeRedeemStakedLstTx, makeRefreshIntegrationBanksIxs, makeRefreshKaminoBanksIxs, makeRepayIx3 as makeRepayIx, makeRepayTx, makeRepayWithCollatTx, makeRollPtTx, makeSetupIx, makeSmartCrankSwbFeedIx, makeSmartCrankSwbFeedIxForAccounts, makeSwapCollateralTx, makeSwapDebtTx, makeTransferPositionsTx, makeTxPriorityIx, makeUnwrapSolIx, makeUpdateDriftMarketIxs, makeUpdateJupLendRateIxs, makeUpdateSwbFeedIx, makeVaultCompleteWithdrawalIx, makeVaultCompleteWithdrawalTx, makeVaultDepositIx, makeVaultDepositTx, makeVaultDepositWithSwapTx, makeVaultWithdrawIx, makeVaultWithdrawTx, makeVersionedTransaction, makeWithdrawIx3 as makeWithdrawIx, makeWithdrawTx, makeWrapSolIxs, mapBrokenFeedsToOraclePrices, mapJupiterQuoteToSwapQuoteResult, mapPythBanksToOraclePrices, mapSwbBanksToOraclePrices, marginfiAccountToDto, mergeBridgeQuotes, mergeBridgeQuotesDebt, mergeBridgeQuotesLoop, nativeToUi, oraclePriceToDto, parseBalanceRaw, parseBankConfigRaw, parseBankRateLimiterRaw, parseBankRaw, parseEmodeSettingsRaw, parseEmodeTag, parseHealthCacheRaw, parseMarginfiAccountRaw, parseOperationalState, parseOracleSetup, parseOraclePriceData as parsePriceInfo, parseRiskTier, parseRpcPythPriceData, parseSwbOraclePriceData, partitionBanksByCrankability, patchDepositAmount, requireBank, requireTokenProgram, resolveAmount, resolveBridgeCandidateBanks, resolvePinnedSwapRoute, resolveTokenProgramForMint, resolveVaultTokenProgram, runSwapEngine, selectLutsForAccountAction, selectLutsForBanks, selectSwapBridges, serializeBankConfigOpt, serializeInstruction, serializeInterestRateConfig, serializeLut, serializeOperationalState, serializeOracleSetup, serializeOracleSetupToIndex, serializeRiskTier, serializeSwapEngineRequest, serializeSwapEngineResult, sharedBridgeLegContext, shortenAddress, simulateAccountHealthCache, simulateAccountHealthCacheWithFallback, simulateBundle, splitInstructionsToFitTransactions, swapEngineProvidersFromOpts, swapEngineQuoteFieldsFromOpts, toBankConfigDto, toBankDto, toBankRateLimiterDto, toBigNumber, toEmodeSettingsDto, toInterestRateConfigDto, toJupiterConfig, toNumber, tryBridgeCandidates, uiToNative, uiToNativeBigNumber, validatorStakeGroupToDto, wrappedI80F48toBigNumber };
|
|
84891
85463
|
//# sourceMappingURL=index.js.map
|
|
84892
85464
|
//# sourceMappingURL=index.js.map
|