@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 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;
@@ -40,5 +40,6 @@ export * from './resupply';
40
40
  export * from './curvance';
41
41
  export * from './cooler';
42
42
  export * from './ripe';
43
+ export * from './alchemix';
43
44
  export * from './twyne';
44
45
  export * from './fraxlend';
@@ -2,8 +2,30 @@
2
2
  export type MidnightConfigChain = {
3
3
  /** Core Midnight contract. */
4
4
  midnight: string;
5
- /** MidnightBundlesV1 periphery (spot supply/borrow/repay bundles). */
6
- midnightBundles: string;
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;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.0.60",
7
+ "version": "0.0.62",
8
8
  "description": "Hold and initialize lending protocol data across a stack",
9
9
  "files": [
10
10
  "dist"