@1delta/data-sdk 0.0.60 → 0.0.62
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.js +175 -0
- package/dist/index.mjs +162 -1
- package/dist/lending/alchemix.d.ts +57 -0
- package/dist/lending/index.d.ts +1 -0
- package/dist/lending/midnight.d.ts +59 -2
- package/dist/lending/registry.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -99,6 +99,7 @@ var LENDER_DATA_DEFAULTS = () => ({
|
|
|
99
99
|
curvanceConfig: {},
|
|
100
100
|
coolerConfig: {},
|
|
101
101
|
ripeConfig: {},
|
|
102
|
+
alchemixConfig: {},
|
|
102
103
|
twyneConfig: {},
|
|
103
104
|
twyneMarkets: {},
|
|
104
105
|
fraxlendConfig: {},
|
|
@@ -402,6 +403,21 @@ var resolveTenorApiUrl = (chainId) => {
|
|
|
402
403
|
const cfg = midnightConfig()?.[chainId]?.tenorApiUrl;
|
|
403
404
|
return (cfg && cfg.length > 0 ? cfg : "https://api.tenor.finance/graphql").replace(/\/+$/, "");
|
|
404
405
|
};
|
|
406
|
+
var midnightTenorVaultPeriphery = (chainId) => {
|
|
407
|
+
const c = midnightConfig()?.[String(chainId)];
|
|
408
|
+
if (!c?.tenorVaultExecutor || !c?.tenorSupplyVaultCallback) return void 0;
|
|
409
|
+
return {
|
|
410
|
+
executor: c.tenorVaultExecutor,
|
|
411
|
+
supplyCallback: c.tenorSupplyVaultCallback,
|
|
412
|
+
...c.tenorWithdrawVaultCallback ? { withdrawCallback: c.tenorWithdrawVaultCallback } : {}
|
|
413
|
+
};
|
|
414
|
+
};
|
|
415
|
+
var isMidnightCollateralVault = (chainId, token) => {
|
|
416
|
+
const lower = token.toLowerCase();
|
|
417
|
+
return midnightMarketsByChain(chainId).some(
|
|
418
|
+
(m) => m.collateralParams.some((c) => !!c.collateralVault && c.token.toLowerCase() === lower)
|
|
419
|
+
);
|
|
420
|
+
};
|
|
405
421
|
var midnightMarkets = () => getGlobalData2()?.midnightMarkets;
|
|
406
422
|
var midnightMarketsByChain = (chainId) => getGlobalData2()?.midnightMarkets?.[String(chainId)] ?? [];
|
|
407
423
|
var midnightMarketById = (chainId, marketId) => {
|
|
@@ -934,6 +950,151 @@ var ripeLendersByChain = (chainId) => {
|
|
|
934
950
|
return [...keys];
|
|
935
951
|
};
|
|
936
952
|
|
|
953
|
+
// src/lending/alchemix.ts
|
|
954
|
+
var ALCHEMIX_ETHEREUM_CONFIG = {
|
|
955
|
+
markets: [
|
|
956
|
+
{
|
|
957
|
+
alchemist: "0xfa995B6ABc387376C3e7De5f6d394Ab5B6beE26B",
|
|
958
|
+
positionNft: "0x15da4c7db6404b92894d5214FAc92057Fb8a263d",
|
|
959
|
+
myt: "0x29bcfeD246ce37319d94eBa107db90C453D4c43D",
|
|
960
|
+
debtToken: "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6",
|
|
961
|
+
underlying: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
962
|
+
transmuter: "0x073598132f37756a7E665FB52f1757463120bd3C",
|
|
963
|
+
router: "0xDb852896A23c7E2519b75AeA692caCf834d086Ab",
|
|
964
|
+
mytSymbol: "mixWETH",
|
|
965
|
+
debtSymbol: "alETH",
|
|
966
|
+
isEth: true
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
alchemist: "0xeB83112d925268BeDe86654C13D423a987587e3E",
|
|
970
|
+
positionNft: "0x872a03FabC86b59c883CD9c439E969321b719bEB",
|
|
971
|
+
myt: "0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5",
|
|
972
|
+
debtToken: "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9",
|
|
973
|
+
underlying: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
974
|
+
transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
|
|
975
|
+
router: "0x6733Aa6b2A622e43e8fF61945E8Fbe5f1b6b00FD",
|
|
976
|
+
mytSymbol: "mixUSDC",
|
|
977
|
+
debtSymbol: "alUSD",
|
|
978
|
+
isEth: false
|
|
979
|
+
}
|
|
980
|
+
]
|
|
981
|
+
};
|
|
982
|
+
var ALCHEMIX_OPTIMISM_CONFIG = {
|
|
983
|
+
markets: [
|
|
984
|
+
{
|
|
985
|
+
alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
|
|
986
|
+
positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
|
|
987
|
+
myt: "0x91b8657aea26Caa8A0E9D6DD4E24727Ccf32F822",
|
|
988
|
+
debtToken: "0x3E29D3A9316dAB217754d13b28646B76607c5f04",
|
|
989
|
+
underlying: "0x4200000000000000000000000000000000000006",
|
|
990
|
+
transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
|
|
991
|
+
router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
|
|
992
|
+
mytSymbol: "mixWETH",
|
|
993
|
+
debtSymbol: "alETH",
|
|
994
|
+
isEth: true
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
|
|
998
|
+
positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
|
|
999
|
+
myt: "0xAf510a560744880410f0f65e3341A020FBC2cA41",
|
|
1000
|
+
debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
|
|
1001
|
+
underlying: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
1002
|
+
transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
|
|
1003
|
+
router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
|
|
1004
|
+
mytSymbol: "mixUSDC",
|
|
1005
|
+
debtSymbol: "alUSD",
|
|
1006
|
+
isEth: false
|
|
1007
|
+
}
|
|
1008
|
+
]
|
|
1009
|
+
};
|
|
1010
|
+
var ALCHEMIX_ARBITRUM_CONFIG = {
|
|
1011
|
+
markets: [
|
|
1012
|
+
{
|
|
1013
|
+
alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
|
|
1014
|
+
positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
|
|
1015
|
+
myt: "0xfe8F223F3d81462F55bf8609897B8cEcfA4B195C",
|
|
1016
|
+
debtToken: "0x17573150d67d820542EFb24210371545a4868B03",
|
|
1017
|
+
underlying: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
1018
|
+
transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
|
|
1019
|
+
router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
|
|
1020
|
+
mytSymbol: "mixWETH",
|
|
1021
|
+
debtSymbol: "alETH",
|
|
1022
|
+
isEth: true
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
// `loansPaused` at integration — served (repay/withdraw must keep
|
|
1026
|
+
// working for existing positions); borrows refuse off the live flag.
|
|
1027
|
+
alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
|
|
1028
|
+
positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
|
|
1029
|
+
myt: "0xEba62B842081CeF5a8184318Dc5C4E4aACa9f651",
|
|
1030
|
+
debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
|
|
1031
|
+
underlying: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
1032
|
+
transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
|
|
1033
|
+
router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
|
|
1034
|
+
mytSymbol: "mixUSDC",
|
|
1035
|
+
debtSymbol: "alUSD",
|
|
1036
|
+
isEth: false
|
|
1037
|
+
}
|
|
1038
|
+
]
|
|
1039
|
+
};
|
|
1040
|
+
var ALCHEMIX_BASE_CONFIG = {
|
|
1041
|
+
markets: [
|
|
1042
|
+
{
|
|
1043
|
+
alchemist: "0xEb380d86EeD275C9F2eD77745aB1B2ccf364BF7A",
|
|
1044
|
+
positionNft: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
|
|
1045
|
+
myt: "0xb8BeFE5a6941ca4022a52042075ff269C3C67467",
|
|
1046
|
+
debtToken: "0x877014E21c32feA108B6A1f45f367efc9a2d9B9F",
|
|
1047
|
+
underlying: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
1048
|
+
transmuter: "0x5B1c7180C630d3B2b6782Df70f43aE5Ea80425ba",
|
|
1049
|
+
router: "0x720D1F945279A6D82EeDcC9B7f85767279Ea2F96",
|
|
1050
|
+
mytSymbol: "mixUSDC",
|
|
1051
|
+
debtSymbol: "alUSDb",
|
|
1052
|
+
isEth: false
|
|
1053
|
+
}
|
|
1054
|
+
]
|
|
1055
|
+
};
|
|
1056
|
+
var ALCHEMIX_BUILTIN = {
|
|
1057
|
+
ALCHEMIX: {
|
|
1058
|
+
"1": ALCHEMIX_ETHEREUM_CONFIG,
|
|
1059
|
+
"10": ALCHEMIX_OPTIMISM_CONFIG,
|
|
1060
|
+
"42161": ALCHEMIX_ARBITRUM_CONFIG,
|
|
1061
|
+
"8453": ALCHEMIX_BASE_CONFIG
|
|
1062
|
+
}
|
|
1063
|
+
};
|
|
1064
|
+
var alchemixConfig = () => getGlobalData2()?.alchemixConfig;
|
|
1065
|
+
var alchemixBaseKey = (lender) => lender?.toUpperCase().startsWith("ALCHEMIX") ? "ALCHEMIX" : lender;
|
|
1066
|
+
var alchemixConfigFor = (lender, chainId) => {
|
|
1067
|
+
const base = alchemixBaseKey(lender);
|
|
1068
|
+
const published = getGlobalData2()?.alchemixConfig?.[base]?.[String(chainId)];
|
|
1069
|
+
if (published?.markets?.length) return published;
|
|
1070
|
+
return ALCHEMIX_BUILTIN[base]?.[String(chainId)];
|
|
1071
|
+
};
|
|
1072
|
+
var alchemixMarketsFor = (lender, chainId) => alchemixConfigFor(lender, chainId)?.markets ?? [];
|
|
1073
|
+
var alchemixLendersByChain = (chainId) => {
|
|
1074
|
+
const chain = String(chainId);
|
|
1075
|
+
const cfg = getGlobalData2()?.alchemixConfig ?? {};
|
|
1076
|
+
const keys = /* @__PURE__ */ new Set();
|
|
1077
|
+
for (const lender of Object.keys(cfg)) {
|
|
1078
|
+
if (cfg[lender]?.[chain]?.markets?.length) keys.add(lender);
|
|
1079
|
+
}
|
|
1080
|
+
for (const lender of Object.keys(ALCHEMIX_BUILTIN)) {
|
|
1081
|
+
if (ALCHEMIX_BUILTIN[lender]?.[chain]?.markets?.length) keys.add(lender);
|
|
1082
|
+
}
|
|
1083
|
+
return [...keys];
|
|
1084
|
+
};
|
|
1085
|
+
var alchemixMarketKey = (chainId, alchemist) => `ALCHEMIX_${String(chainId)}_${alchemist.replace(/^0x/i, "").toUpperCase()}`;
|
|
1086
|
+
var parseAlchemixMarketKey = (lender) => {
|
|
1087
|
+
const m = /^ALCHEMIX_(\d+)_(?:0x)?([0-9a-fA-F]{40})$/i.exec(lender ?? "");
|
|
1088
|
+
if (!m) return void 0;
|
|
1089
|
+
return { chainId: m[1], alchemist: `0x${m[2].toLowerCase()}` };
|
|
1090
|
+
};
|
|
1091
|
+
var alchemixMarketByKey = (lender, chainId) => {
|
|
1092
|
+
const parsed = parseAlchemixMarketKey(lender);
|
|
1093
|
+
if (!parsed) return void 0;
|
|
1094
|
+
if (chainId !== void 0 && String(chainId) !== parsed.chainId) return void 0;
|
|
1095
|
+
return alchemixMarketsFor("ALCHEMIX", parsed.chainId).find((m) => m.alchemist.toLowerCase() === parsed.alchemist);
|
|
1096
|
+
};
|
|
1097
|
+
|
|
937
1098
|
// src/lending/twyne.ts
|
|
938
1099
|
var twyneConfig = () => getGlobalData2()?.twyneConfig;
|
|
939
1100
|
var twyneConfigFor = (lender, chainId) => getGlobalData2()?.twyneConfig?.[twyneBaseKey(lender)]?.[String(chainId)];
|
|
@@ -1381,6 +1542,10 @@ async function fetchMainTokensMap() {
|
|
|
1381
1542
|
}
|
|
1382
1543
|
}
|
|
1383
1544
|
|
|
1545
|
+
exports.ALCHEMIX_ARBITRUM_CONFIG = ALCHEMIX_ARBITRUM_CONFIG;
|
|
1546
|
+
exports.ALCHEMIX_BASE_CONFIG = ALCHEMIX_BASE_CONFIG;
|
|
1547
|
+
exports.ALCHEMIX_ETHEREUM_CONFIG = ALCHEMIX_ETHEREUM_CONFIG;
|
|
1548
|
+
exports.ALCHEMIX_OPTIMISM_CONFIG = ALCHEMIX_OPTIMISM_CONFIG;
|
|
1384
1549
|
exports.COOLER_ETHEREUM_CONFIG = COOLER_ETHEREUM_CONFIG;
|
|
1385
1550
|
exports.CURVANCE_MONAD_CONFIG = CURVANCE_MONAD_CONFIG;
|
|
1386
1551
|
exports.DOLOMITE_ROUTER_DEFAULTS = DOLOMITE_ROUTER_DEFAULTS;
|
|
@@ -1402,6 +1567,13 @@ exports.aaveV4Peripherals = aaveV4Peripherals;
|
|
|
1402
1567
|
exports.aaveV4SpokeLenderKey = aaveV4SpokeLenderKey;
|
|
1403
1568
|
exports.aaveV4Spokes = aaveV4Spokes;
|
|
1404
1569
|
exports.aaveWethGateway = aaveWethGateway;
|
|
1570
|
+
exports.alchemixBaseKey = alchemixBaseKey;
|
|
1571
|
+
exports.alchemixConfig = alchemixConfig;
|
|
1572
|
+
exports.alchemixConfigFor = alchemixConfigFor;
|
|
1573
|
+
exports.alchemixLendersByChain = alchemixLendersByChain;
|
|
1574
|
+
exports.alchemixMarketByKey = alchemixMarketByKey;
|
|
1575
|
+
exports.alchemixMarketKey = alchemixMarketKey;
|
|
1576
|
+
exports.alchemixMarketsFor = alchemixMarketsFor;
|
|
1405
1577
|
exports.assertTwyneKeysUnique = assertTwyneKeysUnique;
|
|
1406
1578
|
exports.chainLogoURI = chainLogoURI;
|
|
1407
1579
|
exports.chains = chains;
|
|
@@ -1499,6 +1671,7 @@ exports.inverseMarkets = inverseMarkets;
|
|
|
1499
1671
|
exports.isAaveV4OperationRestricted = isAaveV4OperationRestricted;
|
|
1500
1672
|
exports.isListaSmartLpAsset = isListaSmartLpAsset;
|
|
1501
1673
|
exports.isMidnightCollateralRef = isMidnightCollateralRef;
|
|
1674
|
+
exports.isMidnightCollateralVault = isMidnightCollateralVault;
|
|
1502
1675
|
exports.liquityBranchByIndex = liquityBranchByIndex;
|
|
1503
1676
|
exports.liquityBranchByTroveManager = liquityBranchByTroveManager;
|
|
1504
1677
|
exports.liquityBranchesByChain = liquityBranchesByChain;
|
|
@@ -1533,6 +1706,7 @@ exports.midnightMarketIsEnterable = midnightMarketIsEnterable;
|
|
|
1533
1706
|
exports.midnightMarkets = midnightMarkets;
|
|
1534
1707
|
exports.midnightMarketsByChain = midnightMarketsByChain;
|
|
1535
1708
|
exports.midnightNotEnterableReason = midnightNotEnterableReason;
|
|
1709
|
+
exports.midnightTenorVaultPeriphery = midnightTenorVaultPeriphery;
|
|
1536
1710
|
exports.morphoBundler3 = morphoBundler3;
|
|
1537
1711
|
exports.morphoOracles = morphoOracles;
|
|
1538
1712
|
exports.morphoPools = morphoPools;
|
|
@@ -1540,6 +1714,7 @@ exports.morphoTypeMarkets = morphoTypeMarkets;
|
|
|
1540
1714
|
exports.morphoTypeOracles = morphoTypeOracles;
|
|
1541
1715
|
exports.morphoTypeVaults = morphoTypeVaults;
|
|
1542
1716
|
exports.parseAaveV4SpokeLenderKey = parseAaveV4SpokeLenderKey;
|
|
1717
|
+
exports.parseAlchemixMarketKey = parseAlchemixMarketKey;
|
|
1543
1718
|
exports.parseFraxlendPairKey = parseFraxlendPairKey;
|
|
1544
1719
|
exports.parseGearboxV3LenderKey = parseGearboxV3LenderKey;
|
|
1545
1720
|
exports.parseLlamaLendLenderKey = parseLlamaLendLenderKey;
|
package/dist/index.mjs
CHANGED
|
@@ -97,6 +97,7 @@ var LENDER_DATA_DEFAULTS = () => ({
|
|
|
97
97
|
curvanceConfig: {},
|
|
98
98
|
coolerConfig: {},
|
|
99
99
|
ripeConfig: {},
|
|
100
|
+
alchemixConfig: {},
|
|
100
101
|
twyneConfig: {},
|
|
101
102
|
twyneMarkets: {},
|
|
102
103
|
fraxlendConfig: {},
|
|
@@ -400,6 +401,21 @@ var resolveTenorApiUrl = (chainId) => {
|
|
|
400
401
|
const cfg = midnightConfig()?.[chainId]?.tenorApiUrl;
|
|
401
402
|
return (cfg && cfg.length > 0 ? cfg : "https://api.tenor.finance/graphql").replace(/\/+$/, "");
|
|
402
403
|
};
|
|
404
|
+
var midnightTenorVaultPeriphery = (chainId) => {
|
|
405
|
+
const c = midnightConfig()?.[String(chainId)];
|
|
406
|
+
if (!c?.tenorVaultExecutor || !c?.tenorSupplyVaultCallback) return void 0;
|
|
407
|
+
return {
|
|
408
|
+
executor: c.tenorVaultExecutor,
|
|
409
|
+
supplyCallback: c.tenorSupplyVaultCallback,
|
|
410
|
+
...c.tenorWithdrawVaultCallback ? { withdrawCallback: c.tenorWithdrawVaultCallback } : {}
|
|
411
|
+
};
|
|
412
|
+
};
|
|
413
|
+
var isMidnightCollateralVault = (chainId, token) => {
|
|
414
|
+
const lower = token.toLowerCase();
|
|
415
|
+
return midnightMarketsByChain(chainId).some(
|
|
416
|
+
(m) => m.collateralParams.some((c) => !!c.collateralVault && c.token.toLowerCase() === lower)
|
|
417
|
+
);
|
|
418
|
+
};
|
|
403
419
|
var midnightMarkets = () => getGlobalData2()?.midnightMarkets;
|
|
404
420
|
var midnightMarketsByChain = (chainId) => getGlobalData2()?.midnightMarkets?.[String(chainId)] ?? [];
|
|
405
421
|
var midnightMarketById = (chainId, marketId) => {
|
|
@@ -932,6 +948,151 @@ var ripeLendersByChain = (chainId) => {
|
|
|
932
948
|
return [...keys];
|
|
933
949
|
};
|
|
934
950
|
|
|
951
|
+
// src/lending/alchemix.ts
|
|
952
|
+
var ALCHEMIX_ETHEREUM_CONFIG = {
|
|
953
|
+
markets: [
|
|
954
|
+
{
|
|
955
|
+
alchemist: "0xfa995B6ABc387376C3e7De5f6d394Ab5B6beE26B",
|
|
956
|
+
positionNft: "0x15da4c7db6404b92894d5214FAc92057Fb8a263d",
|
|
957
|
+
myt: "0x29bcfeD246ce37319d94eBa107db90C453D4c43D",
|
|
958
|
+
debtToken: "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6",
|
|
959
|
+
underlying: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
960
|
+
transmuter: "0x073598132f37756a7E665FB52f1757463120bd3C",
|
|
961
|
+
router: "0xDb852896A23c7E2519b75AeA692caCf834d086Ab",
|
|
962
|
+
mytSymbol: "mixWETH",
|
|
963
|
+
debtSymbol: "alETH",
|
|
964
|
+
isEth: true
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
alchemist: "0xeB83112d925268BeDe86654C13D423a987587e3E",
|
|
968
|
+
positionNft: "0x872a03FabC86b59c883CD9c439E969321b719bEB",
|
|
969
|
+
myt: "0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5",
|
|
970
|
+
debtToken: "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9",
|
|
971
|
+
underlying: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
972
|
+
transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
|
|
973
|
+
router: "0x6733Aa6b2A622e43e8fF61945E8Fbe5f1b6b00FD",
|
|
974
|
+
mytSymbol: "mixUSDC",
|
|
975
|
+
debtSymbol: "alUSD",
|
|
976
|
+
isEth: false
|
|
977
|
+
}
|
|
978
|
+
]
|
|
979
|
+
};
|
|
980
|
+
var ALCHEMIX_OPTIMISM_CONFIG = {
|
|
981
|
+
markets: [
|
|
982
|
+
{
|
|
983
|
+
alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
|
|
984
|
+
positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
|
|
985
|
+
myt: "0x91b8657aea26Caa8A0E9D6DD4E24727Ccf32F822",
|
|
986
|
+
debtToken: "0x3E29D3A9316dAB217754d13b28646B76607c5f04",
|
|
987
|
+
underlying: "0x4200000000000000000000000000000000000006",
|
|
988
|
+
transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
|
|
989
|
+
router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
|
|
990
|
+
mytSymbol: "mixWETH",
|
|
991
|
+
debtSymbol: "alETH",
|
|
992
|
+
isEth: true
|
|
993
|
+
},
|
|
994
|
+
{
|
|
995
|
+
alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
|
|
996
|
+
positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
|
|
997
|
+
myt: "0xAf510a560744880410f0f65e3341A020FBC2cA41",
|
|
998
|
+
debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
|
|
999
|
+
underlying: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
1000
|
+
transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
|
|
1001
|
+
router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
|
|
1002
|
+
mytSymbol: "mixUSDC",
|
|
1003
|
+
debtSymbol: "alUSD",
|
|
1004
|
+
isEth: false
|
|
1005
|
+
}
|
|
1006
|
+
]
|
|
1007
|
+
};
|
|
1008
|
+
var ALCHEMIX_ARBITRUM_CONFIG = {
|
|
1009
|
+
markets: [
|
|
1010
|
+
{
|
|
1011
|
+
alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
|
|
1012
|
+
positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
|
|
1013
|
+
myt: "0xfe8F223F3d81462F55bf8609897B8cEcfA4B195C",
|
|
1014
|
+
debtToken: "0x17573150d67d820542EFb24210371545a4868B03",
|
|
1015
|
+
underlying: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
1016
|
+
transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
|
|
1017
|
+
router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
|
|
1018
|
+
mytSymbol: "mixWETH",
|
|
1019
|
+
debtSymbol: "alETH",
|
|
1020
|
+
isEth: true
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
// `loansPaused` at integration — served (repay/withdraw must keep
|
|
1024
|
+
// working for existing positions); borrows refuse off the live flag.
|
|
1025
|
+
alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
|
|
1026
|
+
positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
|
|
1027
|
+
myt: "0xEba62B842081CeF5a8184318Dc5C4E4aACa9f651",
|
|
1028
|
+
debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
|
|
1029
|
+
underlying: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
1030
|
+
transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
|
|
1031
|
+
router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
|
|
1032
|
+
mytSymbol: "mixUSDC",
|
|
1033
|
+
debtSymbol: "alUSD",
|
|
1034
|
+
isEth: false
|
|
1035
|
+
}
|
|
1036
|
+
]
|
|
1037
|
+
};
|
|
1038
|
+
var ALCHEMIX_BASE_CONFIG = {
|
|
1039
|
+
markets: [
|
|
1040
|
+
{
|
|
1041
|
+
alchemist: "0xEb380d86EeD275C9F2eD77745aB1B2ccf364BF7A",
|
|
1042
|
+
positionNft: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
|
|
1043
|
+
myt: "0xb8BeFE5a6941ca4022a52042075ff269C3C67467",
|
|
1044
|
+
debtToken: "0x877014E21c32feA108B6A1f45f367efc9a2d9B9F",
|
|
1045
|
+
underlying: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
1046
|
+
transmuter: "0x5B1c7180C630d3B2b6782Df70f43aE5Ea80425ba",
|
|
1047
|
+
router: "0x720D1F945279A6D82EeDcC9B7f85767279Ea2F96",
|
|
1048
|
+
mytSymbol: "mixUSDC",
|
|
1049
|
+
debtSymbol: "alUSDb",
|
|
1050
|
+
isEth: false
|
|
1051
|
+
}
|
|
1052
|
+
]
|
|
1053
|
+
};
|
|
1054
|
+
var ALCHEMIX_BUILTIN = {
|
|
1055
|
+
ALCHEMIX: {
|
|
1056
|
+
"1": ALCHEMIX_ETHEREUM_CONFIG,
|
|
1057
|
+
"10": ALCHEMIX_OPTIMISM_CONFIG,
|
|
1058
|
+
"42161": ALCHEMIX_ARBITRUM_CONFIG,
|
|
1059
|
+
"8453": ALCHEMIX_BASE_CONFIG
|
|
1060
|
+
}
|
|
1061
|
+
};
|
|
1062
|
+
var alchemixConfig = () => getGlobalData2()?.alchemixConfig;
|
|
1063
|
+
var alchemixBaseKey = (lender) => lender?.toUpperCase().startsWith("ALCHEMIX") ? "ALCHEMIX" : lender;
|
|
1064
|
+
var alchemixConfigFor = (lender, chainId) => {
|
|
1065
|
+
const base = alchemixBaseKey(lender);
|
|
1066
|
+
const published = getGlobalData2()?.alchemixConfig?.[base]?.[String(chainId)];
|
|
1067
|
+
if (published?.markets?.length) return published;
|
|
1068
|
+
return ALCHEMIX_BUILTIN[base]?.[String(chainId)];
|
|
1069
|
+
};
|
|
1070
|
+
var alchemixMarketsFor = (lender, chainId) => alchemixConfigFor(lender, chainId)?.markets ?? [];
|
|
1071
|
+
var alchemixLendersByChain = (chainId) => {
|
|
1072
|
+
const chain = String(chainId);
|
|
1073
|
+
const cfg = getGlobalData2()?.alchemixConfig ?? {};
|
|
1074
|
+
const keys = /* @__PURE__ */ new Set();
|
|
1075
|
+
for (const lender of Object.keys(cfg)) {
|
|
1076
|
+
if (cfg[lender]?.[chain]?.markets?.length) keys.add(lender);
|
|
1077
|
+
}
|
|
1078
|
+
for (const lender of Object.keys(ALCHEMIX_BUILTIN)) {
|
|
1079
|
+
if (ALCHEMIX_BUILTIN[lender]?.[chain]?.markets?.length) keys.add(lender);
|
|
1080
|
+
}
|
|
1081
|
+
return [...keys];
|
|
1082
|
+
};
|
|
1083
|
+
var alchemixMarketKey = (chainId, alchemist) => `ALCHEMIX_${String(chainId)}_${alchemist.replace(/^0x/i, "").toUpperCase()}`;
|
|
1084
|
+
var parseAlchemixMarketKey = (lender) => {
|
|
1085
|
+
const m = /^ALCHEMIX_(\d+)_(?:0x)?([0-9a-fA-F]{40})$/i.exec(lender ?? "");
|
|
1086
|
+
if (!m) return void 0;
|
|
1087
|
+
return { chainId: m[1], alchemist: `0x${m[2].toLowerCase()}` };
|
|
1088
|
+
};
|
|
1089
|
+
var alchemixMarketByKey = (lender, chainId) => {
|
|
1090
|
+
const parsed = parseAlchemixMarketKey(lender);
|
|
1091
|
+
if (!parsed) return void 0;
|
|
1092
|
+
if (chainId !== void 0 && String(chainId) !== parsed.chainId) return void 0;
|
|
1093
|
+
return alchemixMarketsFor("ALCHEMIX", parsed.chainId).find((m) => m.alchemist.toLowerCase() === parsed.alchemist);
|
|
1094
|
+
};
|
|
1095
|
+
|
|
935
1096
|
// src/lending/twyne.ts
|
|
936
1097
|
var twyneConfig = () => getGlobalData2()?.twyneConfig;
|
|
937
1098
|
var twyneConfigFor = (lender, chainId) => getGlobalData2()?.twyneConfig?.[twyneBaseKey(lender)]?.[String(chainId)];
|
|
@@ -1379,4 +1540,4 @@ async function fetchMainTokensMap() {
|
|
|
1379
1540
|
}
|
|
1380
1541
|
}
|
|
1381
1542
|
|
|
1382
|
-
export { COOLER_ETHEREUM_CONFIG, CURVANCE_MONAD_CONFIG, DOLOMITE_ROUTER_DEFAULTS, FRAXLEND_ETHEREUM_CONFIG, GEARBOX_ACCOUNT_COMPRESSOR_V310, REMOTE_CACHE_STORE_TTL_S, RESUPPLY_ETHEREUM_CONFIG, RIPE_BASE_CONFIG, RIPE_HQ_IDS, RIPE_ROBINHOOD_CONFIG, RemoteFetchError, aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, assertTwyneKeysUnique, chainLogoURI, chains, clearRemoteCache, compoundV2Oracles, compoundV2OraclesConfig, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, coolerConfig, coolerConfigFor, coolerLendersByChain, curvanceConfig, curvanceConfigFor, curvanceLendersByChain, curvancePositionManager, curvancePositionManagersFor, dolomiteChains, dolomiteConfigs, dolomiteEmode, dolomiteIsolation, dolomiteIsolationMarket, dolomiteMarketIdByToken, dolomiteOdosExecutorShim, dolomiteRouters, dssChainData, dssConfigFor, dssDebtJoin, dssDebtToken, dssMarketByIlk, eulerConfigs, eulerVaults, exactlyConfig, exactlyMarketByAddress, exactlyMarketByAsset, exactlyMarkets, exactlyMarketsByChain, fetchMainTokensMap, fetchRemoteJson, fetchTokenList, fetchTokenListFile, fetchTokenLists, findAaveV4PositionManager, fluidChains, fluidResolvers, fluidVaultEntries, fluidVaults, flyingTulipAssets, flyingTulipAssetsFor, flyingTulipConfig, flyingTulipConfigFor, flyingTulipLendersByChain, frankencoinChainData, frankencoinConfig, frankencoinConfigFor, frankencoinLendersByChain, frankencoinMarketByPosition, frankencoinMarkets, fraxlendConfig, fraxlendConfigFor, fraxlendLendersByChain, fraxlendPairKey, fraxlendPairsFor, gearboxAccountCompressor, gearboxAddressProviderV310, gearboxBotListV3, gearboxChains, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxResolvers, gearboxV3LenderKey, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeAccess, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, getChainEntries, getSiloV2MarketEntry, getSiloV3MarketEntry, initConfig, initializeChainData, initializeLenderData, inverseChainData, inverseConfig, inverseConfigFor, inverseLendersByChain, inverseMarketByAddress, inverseMarkets, isAaveV4OperationRestricted, isListaSmartLpAsset, isMidnightCollateralRef, liquityBranchByIndex, liquityBranchByTroveManager, liquityBranchesByChain, liquityConfig, liquityConfigFor, liquityLendersByChain, liquityMarkets, listaCollateralProvider, listaCollateralProviders, listaNativeProvider, listaSmartLpByCollateral, llamaLendApiBaseUrl, llamaLendChainData, llamaLendConfig, llamaLendConfigFor, llamaLendLenderKey, llamaLendLendersByChain, llamaLendLeverageZap, llamaLendMarketByController, llamaLendMarketByVault, llamaLendMarkets, llamaLendSupportsDelegation, llamaLendSupportsLeverage, loadCached, loadCachedJson, midnightApiBaseOverride, midnightCollateralRef, midnightConfig, midnightLoanRef, midnightMarketById, midnightMarketIsEnterable, midnightMarkets, midnightMarketsByChain, midnightNotEnterableReason, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, morphoTypeVaults, parseAaveV4SpokeLenderKey, parseFraxlendPairKey, parseGearboxV3LenderKey, parseLlamaLendLenderKey, parseMidnightRef, parseSiloV2LenderKey, parseSiloV3LenderKey, parseTermMaxLenderKey, refreshRemoteCache, resolveMidnightApiBase, resolveTenorApiUrl, resolveTermApiBase, resolveTermOrderStoreBase, resupplyConfig, resupplyConfigFor, resupplyLendersByChain, ripeConfig, ripeConfigFor, ripeLendersByChain, riverChainData, riverConfig, riverConfigFor, riverLendersByChain, riverMarketByIndex, riverMarkets, setMidnightApiBase, setRemoteCacheGithubToken, setRemoteCacheStore, setRemoteCacheWaitUntil, setTenorApiUrl, setTermApiBase, setTermOrderStoreBase, siloMarkets, siloMarketsV3, siloPeripherals, siloPeripheralsV3, siloV2LenderKey, siloV3LenderKey, skyChainData, skyConfig, skyConfigFor, skyLendersByChain, skyMarkets, tellerConfig, tellerConfigByChain, tellerPoolByAddress, tellerPools, tellerPoolsByChain, tenorApiUrlOverride, termApiBaseOverride, termConfig, termMarketById, termMarkets, termMarketsByChain, termMaxApiBaseUrl, termMaxChainIds, termMaxConfig, termMaxConfigByChain, termMaxLenderKey, termOrderStoreBaseOverride, tokenListCacheKey, twyneBaseKey, twyneBeaconFor, twyneChainData, twyneConfig, twyneConfigFor, twyneLendersByChain, twyneMarketByKey, twyneMarketFor, twyneMarketKey, twyneMarkets, twyneMarketsForIntermediateVault, twyneOperator, usddChainData, usddConfig, usddConfigFor, usddLendersByChain, usddMarketByIlk, usddMarkets };
|
|
1543
|
+
export { ALCHEMIX_ARBITRUM_CONFIG, ALCHEMIX_BASE_CONFIG, ALCHEMIX_ETHEREUM_CONFIG, ALCHEMIX_OPTIMISM_CONFIG, COOLER_ETHEREUM_CONFIG, CURVANCE_MONAD_CONFIG, DOLOMITE_ROUTER_DEFAULTS, FRAXLEND_ETHEREUM_CONFIG, GEARBOX_ACCOUNT_COMPRESSOR_V310, REMOTE_CACHE_STORE_TTL_S, RESUPPLY_ETHEREUM_CONFIG, RIPE_BASE_CONFIG, RIPE_HQ_IDS, RIPE_ROBINHOOD_CONFIG, RemoteFetchError, aaveOracles, aaveOraclesConfig, aavePools, aaveReserves, aaveTokens, aaveV4Oracles, aaveV4Peripherals, aaveV4SpokeLenderKey, aaveV4Spokes, aaveWethGateway, alchemixBaseKey, alchemixConfig, alchemixConfigFor, alchemixLendersByChain, alchemixMarketByKey, alchemixMarketKey, alchemixMarketsFor, assertTwyneKeysUnique, chainLogoURI, chains, clearRemoteCache, compoundV2Oracles, compoundV2OraclesConfig, compoundV2Pools, compoundV2Reserves, compoundV2TokenArray, compoundV2Tokens, compoundV3BaseData, compoundV3Bulker, compoundV3OraclesData, compoundV3Pools, compoundV3Reserves, coolerConfig, coolerConfigFor, coolerLendersByChain, curvanceConfig, curvanceConfigFor, curvanceLendersByChain, curvancePositionManager, curvancePositionManagersFor, dolomiteChains, dolomiteConfigs, dolomiteEmode, dolomiteIsolation, dolomiteIsolationMarket, dolomiteMarketIdByToken, dolomiteOdosExecutorShim, dolomiteRouters, dssChainData, dssConfigFor, dssDebtJoin, dssDebtToken, dssMarketByIlk, eulerConfigs, eulerVaults, exactlyConfig, exactlyMarketByAddress, exactlyMarketByAsset, exactlyMarkets, exactlyMarketsByChain, fetchMainTokensMap, fetchRemoteJson, fetchTokenList, fetchTokenListFile, fetchTokenLists, findAaveV4PositionManager, fluidChains, fluidResolvers, fluidVaultEntries, fluidVaults, flyingTulipAssets, flyingTulipAssetsFor, flyingTulipConfig, flyingTulipConfigFor, flyingTulipLendersByChain, frankencoinChainData, frankencoinConfig, frankencoinConfigFor, frankencoinLendersByChain, frankencoinMarketByPosition, frankencoinMarkets, fraxlendConfig, fraxlendConfigFor, fraxlendLendersByChain, fraxlendPairKey, fraxlendPairsFor, gearboxAccountCompressor, gearboxAddressProviderV310, gearboxBotListV3, gearboxChains, gearboxMarketCompressor, gearboxMarketConfigurators, gearboxResolvers, gearboxV3LenderKey, getAaveV4GatewayAddresses, getAaveV4PositionManagers, getAaveV4SpokeAccess, getAaveV4SpokeEntry, getAaveV4SpokePeripherals, getChainEntries, getSiloV2MarketEntry, getSiloV3MarketEntry, initConfig, initializeChainData, initializeLenderData, inverseChainData, inverseConfig, inverseConfigFor, inverseLendersByChain, inverseMarketByAddress, inverseMarkets, isAaveV4OperationRestricted, isListaSmartLpAsset, isMidnightCollateralRef, isMidnightCollateralVault, liquityBranchByIndex, liquityBranchByTroveManager, liquityBranchesByChain, liquityConfig, liquityConfigFor, liquityLendersByChain, liquityMarkets, listaCollateralProvider, listaCollateralProviders, listaNativeProvider, listaSmartLpByCollateral, llamaLendApiBaseUrl, llamaLendChainData, llamaLendConfig, llamaLendConfigFor, llamaLendLenderKey, llamaLendLendersByChain, llamaLendLeverageZap, llamaLendMarketByController, llamaLendMarketByVault, llamaLendMarkets, llamaLendSupportsDelegation, llamaLendSupportsLeverage, loadCached, loadCachedJson, midnightApiBaseOverride, midnightCollateralRef, midnightConfig, midnightLoanRef, midnightMarketById, midnightMarketIsEnterable, midnightMarkets, midnightMarketsByChain, midnightNotEnterableReason, midnightTenorVaultPeriphery, morphoBundler3, morphoOracles, morphoPools, morphoTypeMarkets, morphoTypeOracles, morphoTypeVaults, parseAaveV4SpokeLenderKey, parseAlchemixMarketKey, parseFraxlendPairKey, parseGearboxV3LenderKey, parseLlamaLendLenderKey, parseMidnightRef, parseSiloV2LenderKey, parseSiloV3LenderKey, parseTermMaxLenderKey, refreshRemoteCache, resolveMidnightApiBase, resolveTenorApiUrl, resolveTermApiBase, resolveTermOrderStoreBase, resupplyConfig, resupplyConfigFor, resupplyLendersByChain, ripeConfig, ripeConfigFor, ripeLendersByChain, riverChainData, riverConfig, riverConfigFor, riverLendersByChain, riverMarketByIndex, riverMarkets, setMidnightApiBase, setRemoteCacheGithubToken, setRemoteCacheStore, setRemoteCacheWaitUntil, setTenorApiUrl, setTermApiBase, setTermOrderStoreBase, siloMarkets, siloMarketsV3, siloPeripherals, siloPeripheralsV3, siloV2LenderKey, siloV3LenderKey, skyChainData, skyConfig, skyConfigFor, skyLendersByChain, skyMarkets, tellerConfig, tellerConfigByChain, tellerPoolByAddress, tellerPools, tellerPoolsByChain, tenorApiUrlOverride, termApiBaseOverride, termConfig, termMarketById, termMarkets, termMarketsByChain, termMaxApiBaseUrl, termMaxChainIds, termMaxConfig, termMaxConfigByChain, termMaxLenderKey, termOrderStoreBaseOverride, tokenListCacheKey, twyneBaseKey, twyneBeaconFor, twyneChainData, twyneConfig, twyneConfigFor, twyneLendersByChain, twyneMarketByKey, twyneMarketFor, twyneMarketKey, twyneMarkets, twyneMarketsForIntermediateVault, twyneOperator, usddChainData, usddConfig, usddConfigFor, usddLendersByChain, usddMarketByIlk, usddMarkets };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type AlchemixMarketEntry = {
|
|
2
|
+
/** The Alchemist (a transparent proxy) — doubles as the market id. */
|
|
3
|
+
alchemist: string;
|
|
4
|
+
/** The ERC721Enumerable position NFT (`alchemistPositionNFT()`). */
|
|
5
|
+
positionNft: string;
|
|
6
|
+
/** The MYT — the collateral, an ERC-4626 Morpho Vault V2 (18-dec shares). */
|
|
7
|
+
myt: string;
|
|
8
|
+
/** The alAsset minted as debt (`debtToken()`), 18 decimals everywhere. */
|
|
9
|
+
debtToken: string;
|
|
10
|
+
/** The MYT's `asset()` and the Alchemist's `underlyingToken()`. */
|
|
11
|
+
underlying: string;
|
|
12
|
+
/** The Transmuter mapped to this Alchemist (redeems alAsset 1:1). */
|
|
13
|
+
transmuter: string;
|
|
14
|
+
/** The immutable per-Alchemist `AlchemistRouter`. */
|
|
15
|
+
router: string;
|
|
16
|
+
/** Display symbols — labelling only, never dispatch. */
|
|
17
|
+
mytSymbol: string;
|
|
18
|
+
debtSymbol: string;
|
|
19
|
+
/** True when the underlying is the chain's wrapped native (router has the
|
|
20
|
+
* `*ETH` entrypoints). */
|
|
21
|
+
isEth: boolean;
|
|
22
|
+
};
|
|
23
|
+
export type AlchemixConfigChain = {
|
|
24
|
+
markets: AlchemixMarketEntry[];
|
|
25
|
+
};
|
|
26
|
+
export type AlchemixConfigType = {
|
|
27
|
+
[lender: string]: {
|
|
28
|
+
[chainId: string]: AlchemixConfigChain;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
export declare const ALCHEMIX_ETHEREUM_CONFIG: AlchemixConfigChain;
|
|
32
|
+
export declare const ALCHEMIX_OPTIMISM_CONFIG: AlchemixConfigChain;
|
|
33
|
+
export declare const ALCHEMIX_ARBITRUM_CONFIG: AlchemixConfigChain;
|
|
34
|
+
export declare const ALCHEMIX_BASE_CONFIG: AlchemixConfigChain;
|
|
35
|
+
export declare const alchemixConfig: () => AlchemixConfigType;
|
|
36
|
+
/** The bare dispatch key for any `ALCHEMIX*` key. */
|
|
37
|
+
export declare const alchemixBaseKey: (lender: string) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Deployment roster for the Alchemix lender on a chain. Published metadata
|
|
40
|
+
* wins; the built-in rows are the fallback (the Curvance/Ripe pattern), so the
|
|
41
|
+
* provider works with no `config/alchemix.json` publish. Accepts the bare key
|
|
42
|
+
* or a per-market key.
|
|
43
|
+
*/
|
|
44
|
+
export declare const alchemixConfigFor: (lender: string, chainId: string | number) => AlchemixConfigChain | undefined;
|
|
45
|
+
/** All markets on a chain, or `[]`. */
|
|
46
|
+
export declare const alchemixMarketsFor: (lender: string, chainId: string | number) => AlchemixMarketEntry[];
|
|
47
|
+
/** Bare Alchemix lender keys with a roster on a chain (drives `getLendersForChain`). */
|
|
48
|
+
export declare const alchemixLendersByChain: (chainId: string | number) => string[];
|
|
49
|
+
/** Per-market lender key: `ALCHEMIX_<chainId>_<ALCHEMIST_HEX_UPPER>` (no `0x`). */
|
|
50
|
+
export declare const alchemixMarketKey: (chainId: string | number, alchemist: string) => string;
|
|
51
|
+
/** Inverse of {@link alchemixMarketKey}; undefined for the bare key. Case-insensitive. */
|
|
52
|
+
export declare const parseAlchemixMarketKey: (lender: string) => {
|
|
53
|
+
chainId: string;
|
|
54
|
+
alchemist: string;
|
|
55
|
+
} | undefined;
|
|
56
|
+
/** Resolve a per-market key (or `(chainId, alchemist)`) to its roster entry. */
|
|
57
|
+
export declare const alchemixMarketByKey: (lender: string, chainId?: string | number) => AlchemixMarketEntry | undefined;
|
package/dist/lending/index.d.ts
CHANGED
|
@@ -2,8 +2,30 @@
|
|
|
2
2
|
export type MidnightConfigChain = {
|
|
3
3
|
/** Core Midnight contract. */
|
|
4
4
|
midnight: string;
|
|
5
|
-
/**
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* MidnightBundlesV1 periphery (spot supply/borrow/repay bundles) — the ABI
|
|
7
|
+
* our encoders speak. Absent on chains that only got V2 (Robinhood 4663,
|
|
8
|
+
* Arc 5042): V2 implements none of the five V1 bundle selectors, so it can
|
|
9
|
+
* never stand in here.
|
|
10
|
+
*/
|
|
11
|
+
midnightBundles?: string;
|
|
12
|
+
/** MidnightBundlesV2 (not yet encoded by us; recorded for when it is). */
|
|
13
|
+
midnightBundlesV2?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Tenor's periphery for the vault-as-collateral leg (see
|
|
16
|
+
* {@link MidnightCollateralParam.collateralVault}). The collateral vaults gate
|
|
17
|
+
* who may RECEIVE shares to Midnight and these contracts, so a user, our
|
|
18
|
+
* composer or an aggregator can never hold one — every way into or out of the
|
|
19
|
+
* leg goes through them. Addresses are NOT shared across chains (one CREATE
|
|
20
|
+
* deployer, different nonces), and on Base the address that is the supply
|
|
21
|
+
* callback on Ethereum is the WITHDRAW callback; each was matched by runtime
|
|
22
|
+
* code against the verified Ethereum deployment. Absent = no vault-leg routes.
|
|
23
|
+
*/
|
|
24
|
+
tenorVaultExecutor?: string | null;
|
|
25
|
+
/** `MidnightSupplyVaultSharesCallback` — a borrow take whose proceeds land in the vault. */
|
|
26
|
+
tenorSupplyVaultCallback?: string | null;
|
|
27
|
+
/** `MidnightWithdrawVaultSharesCallback` — funds a borrower's buy offer from vault shares. */
|
|
28
|
+
tenorWithdrawVaultCallback?: string | null;
|
|
7
29
|
/** On-chain mempool log contract where signed offers are published. */
|
|
8
30
|
midnightMempool: string;
|
|
9
31
|
ecrecoverRatifier?: string | null;
|
|
@@ -42,6 +64,28 @@ export type MidnightCollateralParam = {
|
|
|
42
64
|
* the collateral is itself a lending position. See TENOR_PLAN.md §P4.
|
|
43
65
|
*/
|
|
44
66
|
collateralVault?: string | null;
|
|
67
|
+
/**
|
|
68
|
+
* The vault's `receiveSharesGate` is set: only allowlisted contracts (Midnight
|
|
69
|
+
* and Tenor's periphery) may hold its shares. Then nothing can be bought on a
|
|
70
|
+
* DEX, minted by a generic 4626 route or held by the user — the leg is reached
|
|
71
|
+
* only through `tenorVaultExecutor` / `tenorSupplyVaultCallback`.
|
|
72
|
+
*/
|
|
73
|
+
collateralVaultGated?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Where the vault's yield comes from: its ONE Vault V2 adapter supplies ONE
|
|
76
|
+
* Morpho Blue market, so the share earns that market's supply rate net of
|
|
77
|
+
* the vault's fees (WAD strings). Read on-chain by the lender-metadata
|
|
78
|
+
* updater; absent when the vault has any other allocation shape. yield-tracer
|
|
79
|
+
* turns it into the leg's intrinsic yield from the stored
|
|
80
|
+
* `MORPHO_BLUE_<marketId>` row (a "composite" yield — no second fetch).
|
|
81
|
+
*/
|
|
82
|
+
collateralVaultSource?: {
|
|
83
|
+
kind: 'morpho-blue';
|
|
84
|
+
morpho: string;
|
|
85
|
+
marketId: string;
|
|
86
|
+
performanceFee: string;
|
|
87
|
+
managementFee: string;
|
|
88
|
+
};
|
|
45
89
|
};
|
|
46
90
|
/**
|
|
47
91
|
* Who may enter (take offers on) / liquidate a market. Midnight markets can pin
|
|
@@ -124,6 +168,19 @@ export declare const setTenorApiUrl: (url: string | undefined | null) => void;
|
|
|
124
168
|
export declare const tenorApiUrlOverride: () => string | undefined;
|
|
125
169
|
/** Resolve the Tenor GraphQL endpoint for a chain: override → config → hosted default. */
|
|
126
170
|
export declare const resolveTenorApiUrl: (chainId: string) => string;
|
|
171
|
+
/** Tenor's vault-leg periphery on a chain, or `undefined` when any part is missing. */
|
|
172
|
+
export declare const midnightTenorVaultPeriphery: (chainId: string | number) => {
|
|
173
|
+
executor: string;
|
|
174
|
+
supplyCallback: string;
|
|
175
|
+
withdrawCallback?: string;
|
|
176
|
+
} | undefined;
|
|
177
|
+
/**
|
|
178
|
+
* Is `token` a vault-as-collateral share on this chain — a Midnight collateral
|
|
179
|
+
* leg that is an ERC-4626 over its market's own loan token? Such a share is a
|
|
180
|
+
* single-purpose collateral WRAPPER (it exists to be posted on one book), not an
|
|
181
|
+
* earn product, and — when gated — cannot be held outside Midnight at all.
|
|
182
|
+
*/
|
|
183
|
+
export declare const isMidnightCollateralVault: (chainId: string | number, token: string) => boolean;
|
|
127
184
|
export declare const midnightMarkets: () => MidnightMarketsType;
|
|
128
185
|
/** All Midnight market configs on a chain (empty array if none/unloaded). */
|
|
129
186
|
export declare const midnightMarketsByChain: (chainId: string | number) => MidnightMarketConfig[];
|
|
@@ -26,6 +26,7 @@ import type { CompoundV3BaseDataType, CompoundV3BulkerType, CompoundV3OracleData
|
|
|
26
26
|
import type { CurvanceConfigType } from './curvance';
|
|
27
27
|
import type { CoolerConfigType } from './cooler';
|
|
28
28
|
import type { RipeConfigType } from './ripe';
|
|
29
|
+
import type { AlchemixConfigType } from './alchemix';
|
|
29
30
|
import type { TwyneConfigType, TwyneMarketsType } from './twyne';
|
|
30
31
|
import type { DolomiteConfigsType, DolomiteEmodeType, DolomiteIsolationType } from './dolomite';
|
|
31
32
|
import type { UsddConfigType, UsddMarketsType } from './dss';
|
|
@@ -113,6 +114,7 @@ export interface GlobalLenderDataRegistry {
|
|
|
113
114
|
curvanceConfig: CurvanceConfigType;
|
|
114
115
|
coolerConfig: CoolerConfigType;
|
|
115
116
|
ripeConfig: RipeConfigType;
|
|
117
|
+
alchemixConfig: AlchemixConfigType;
|
|
116
118
|
twyneConfig: TwyneConfigType;
|
|
117
119
|
twyneMarkets: TwyneMarketsType;
|
|
118
120
|
fraxlendConfig: FraxlendConfigType;
|