@1delta/data-sdk 0.0.59 → 0.0.61

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
@@ -98,6 +98,8 @@ var LENDER_DATA_DEFAULTS = () => ({
98
98
  resupplyConfig: {},
99
99
  curvanceConfig: {},
100
100
  coolerConfig: {},
101
+ ripeConfig: {},
102
+ alchemixConfig: {},
101
103
  twyneConfig: {},
102
104
  twyneMarkets: {},
103
105
  fraxlendConfig: {},
@@ -875,6 +877,209 @@ var coolerLendersByChain = (chainId) => {
875
877
  return [...keys];
876
878
  };
877
879
 
880
+ // src/lending/ripe.ts
881
+ var RIPE_HQ_IDS = {
882
+ greenToken: 1,
883
+ savingsGreen: 2,
884
+ ripeToken: 3,
885
+ ledger: 4,
886
+ missionControl: 5,
887
+ priceDesk: 7,
888
+ vaultBook: 8,
889
+ creditEngine: 13,
890
+ teller: 17
891
+ };
892
+ var RIPE_BASE_CONFIG = {
893
+ ripeHq: "0x6162df1b329E157479F8f1407E888260E0EC3d2b",
894
+ teller: "0xae87deB25Bc5030991Aa5E27Cbab38f37a112C13",
895
+ missionControl: "0x559E53F42b68b4995732Dba4aF300796761DBC19",
896
+ ledger: "0x365256e322a47Aa2015F6724783F326e9B24fA47",
897
+ creditEngine: "0xEdd0563D06CC52fb5F264A2366A31d9776f6dcC7",
898
+ priceDesk: "0x2F7901BE53cC94AEF174f1a0764430840360Ef53",
899
+ vaultBook: "0xB758e30C14825519b895Fd9928d5d8748A71a944",
900
+ green: "0xd1Eac76497D06Cf15475A5e3984D5bC03de7C707",
901
+ savingsGreen: "0xaa0f13488CE069A7B5a099457c753A7CFBE04d36",
902
+ ripeToken: "0x2A0a59d6B975828e781EcaC125dBA40d7ee5dDC0"
903
+ };
904
+ var RIPE_ROBINHOOD_CONFIG = {
905
+ ripeHq: "0xD4e82AE1De673bba3B53386A2D2C630AE6630940",
906
+ teller: "0x2D3Cb2B39289f402187D7DC9B609ead6646f2506",
907
+ missionControl: "0xb05f928BAA860ef4548aeB6cF7BB901E402BF8B6",
908
+ ledger: "0x7E1d751D168f09761b88651A4c78C996354FaeB1",
909
+ creditEngine: "0xC0ff2bC7FA74cA232ceDaBDE9901e501dC59384c",
910
+ priceDesk: "0x56Db9c2322e009189049bC57385751fc7922AAb0",
911
+ vaultBook: "0x559E53F42b68b4995732Dba4aF300796761DBC19",
912
+ green: "0x355bB7F0f6c730e4460d620420a300fa08FF82F3",
913
+ savingsGreen: "0x290a52380A88f743813B8C3e9F6B0e61DB5FDF73",
914
+ ripeToken: "0x4D3f37a965b21aB4122e92Dd41D2693E742c883b"
915
+ };
916
+ var RIPE_BUILTIN = {
917
+ RIPE: { "8453": RIPE_BASE_CONFIG, "4663": RIPE_ROBINHOOD_CONFIG }
918
+ };
919
+ var ripeConfig = () => getGlobalData2()?.ripeConfig;
920
+ var ripeConfigFor = (lender, chainId) => {
921
+ const published = getGlobalData2()?.ripeConfig?.[lender]?.[String(chainId)];
922
+ if (published?.ripeHq) return published;
923
+ return RIPE_BUILTIN[lender]?.[String(chainId)];
924
+ };
925
+ var ripeLendersByChain = (chainId) => {
926
+ const chain = String(chainId);
927
+ const cfg = getGlobalData2()?.ripeConfig ?? {};
928
+ const keys = /* @__PURE__ */ new Set();
929
+ for (const lender of Object.keys(cfg)) {
930
+ if (cfg[lender]?.[chain]?.ripeHq) keys.add(lender);
931
+ }
932
+ for (const lender of Object.keys(RIPE_BUILTIN)) {
933
+ if (RIPE_BUILTIN[lender]?.[chain]?.ripeHq) keys.add(lender);
934
+ }
935
+ return [...keys];
936
+ };
937
+
938
+ // src/lending/alchemix.ts
939
+ var ALCHEMIX_ETHEREUM_CONFIG = {
940
+ markets: [
941
+ {
942
+ alchemist: "0xfa995B6ABc387376C3e7De5f6d394Ab5B6beE26B",
943
+ positionNft: "0x15da4c7db6404b92894d5214FAc92057Fb8a263d",
944
+ myt: "0x29bcfeD246ce37319d94eBa107db90C453D4c43D",
945
+ debtToken: "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6",
946
+ underlying: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
947
+ transmuter: "0x073598132f37756a7E665FB52f1757463120bd3C",
948
+ router: "0xDb852896A23c7E2519b75AeA692caCf834d086Ab",
949
+ mytSymbol: "mixWETH",
950
+ debtSymbol: "alETH",
951
+ isEth: true
952
+ },
953
+ {
954
+ alchemist: "0xeB83112d925268BeDe86654C13D423a987587e3E",
955
+ positionNft: "0x872a03FabC86b59c883CD9c439E969321b719bEB",
956
+ myt: "0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5",
957
+ debtToken: "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9",
958
+ underlying: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
959
+ transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
960
+ router: "0x6733Aa6b2A622e43e8fF61945E8Fbe5f1b6b00FD",
961
+ mytSymbol: "mixUSDC",
962
+ debtSymbol: "alUSD",
963
+ isEth: false
964
+ }
965
+ ]
966
+ };
967
+ var ALCHEMIX_OPTIMISM_CONFIG = {
968
+ markets: [
969
+ {
970
+ alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
971
+ positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
972
+ myt: "0x91b8657aea26Caa8A0E9D6DD4E24727Ccf32F822",
973
+ debtToken: "0x3E29D3A9316dAB217754d13b28646B76607c5f04",
974
+ underlying: "0x4200000000000000000000000000000000000006",
975
+ transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
976
+ router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
977
+ mytSymbol: "mixWETH",
978
+ debtSymbol: "alETH",
979
+ isEth: true
980
+ },
981
+ {
982
+ alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
983
+ positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
984
+ myt: "0xAf510a560744880410f0f65e3341A020FBC2cA41",
985
+ debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
986
+ underlying: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
987
+ transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
988
+ router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
989
+ mytSymbol: "mixUSDC",
990
+ debtSymbol: "alUSD",
991
+ isEth: false
992
+ }
993
+ ]
994
+ };
995
+ var ALCHEMIX_ARBITRUM_CONFIG = {
996
+ markets: [
997
+ {
998
+ alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
999
+ positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
1000
+ myt: "0xfe8F223F3d81462F55bf8609897B8cEcfA4B195C",
1001
+ debtToken: "0x17573150d67d820542EFb24210371545a4868B03",
1002
+ underlying: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
1003
+ transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
1004
+ router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
1005
+ mytSymbol: "mixWETH",
1006
+ debtSymbol: "alETH",
1007
+ isEth: true
1008
+ },
1009
+ {
1010
+ // `loansPaused` at integration — served (repay/withdraw must keep
1011
+ // working for existing positions); borrows refuse off the live flag.
1012
+ alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
1013
+ positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
1014
+ myt: "0xEba62B842081CeF5a8184318Dc5C4E4aACa9f651",
1015
+ debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
1016
+ underlying: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
1017
+ transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
1018
+ router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
1019
+ mytSymbol: "mixUSDC",
1020
+ debtSymbol: "alUSD",
1021
+ isEth: false
1022
+ }
1023
+ ]
1024
+ };
1025
+ var ALCHEMIX_BASE_CONFIG = {
1026
+ markets: [
1027
+ {
1028
+ alchemist: "0xEb380d86EeD275C9F2eD77745aB1B2ccf364BF7A",
1029
+ positionNft: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
1030
+ myt: "0xb8BeFE5a6941ca4022a52042075ff269C3C67467",
1031
+ debtToken: "0x877014E21c32feA108B6A1f45f367efc9a2d9B9F",
1032
+ underlying: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
1033
+ transmuter: "0x5B1c7180C630d3B2b6782Df70f43aE5Ea80425ba",
1034
+ router: "0x720D1F945279A6D82EeDcC9B7f85767279Ea2F96",
1035
+ mytSymbol: "mixUSDC",
1036
+ debtSymbol: "alUSDb",
1037
+ isEth: false
1038
+ }
1039
+ ]
1040
+ };
1041
+ var ALCHEMIX_BUILTIN = {
1042
+ ALCHEMIX: {
1043
+ "1": ALCHEMIX_ETHEREUM_CONFIG,
1044
+ "10": ALCHEMIX_OPTIMISM_CONFIG,
1045
+ "42161": ALCHEMIX_ARBITRUM_CONFIG,
1046
+ "8453": ALCHEMIX_BASE_CONFIG
1047
+ }
1048
+ };
1049
+ var alchemixConfig = () => getGlobalData2()?.alchemixConfig;
1050
+ var alchemixBaseKey = (lender) => lender?.toUpperCase().startsWith("ALCHEMIX") ? "ALCHEMIX" : lender;
1051
+ var alchemixConfigFor = (lender, chainId) => {
1052
+ const base = alchemixBaseKey(lender);
1053
+ const published = getGlobalData2()?.alchemixConfig?.[base]?.[String(chainId)];
1054
+ if (published?.markets?.length) return published;
1055
+ return ALCHEMIX_BUILTIN[base]?.[String(chainId)];
1056
+ };
1057
+ var alchemixMarketsFor = (lender, chainId) => alchemixConfigFor(lender, chainId)?.markets ?? [];
1058
+ var alchemixLendersByChain = (chainId) => {
1059
+ const chain = String(chainId);
1060
+ const cfg = getGlobalData2()?.alchemixConfig ?? {};
1061
+ const keys = /* @__PURE__ */ new Set();
1062
+ for (const lender of Object.keys(cfg)) {
1063
+ if (cfg[lender]?.[chain]?.markets?.length) keys.add(lender);
1064
+ }
1065
+ for (const lender of Object.keys(ALCHEMIX_BUILTIN)) {
1066
+ if (ALCHEMIX_BUILTIN[lender]?.[chain]?.markets?.length) keys.add(lender);
1067
+ }
1068
+ return [...keys];
1069
+ };
1070
+ var alchemixMarketKey = (chainId, alchemist) => `ALCHEMIX_${String(chainId)}_${alchemist.replace(/^0x/i, "").toUpperCase()}`;
1071
+ var parseAlchemixMarketKey = (lender) => {
1072
+ const m = /^ALCHEMIX_(\d+)_(?:0x)?([0-9a-fA-F]{40})$/i.exec(lender ?? "");
1073
+ if (!m) return void 0;
1074
+ return { chainId: m[1], alchemist: `0x${m[2].toLowerCase()}` };
1075
+ };
1076
+ var alchemixMarketByKey = (lender, chainId) => {
1077
+ const parsed = parseAlchemixMarketKey(lender);
1078
+ if (!parsed) return void 0;
1079
+ if (chainId !== void 0 && String(chainId) !== parsed.chainId) return void 0;
1080
+ return alchemixMarketsFor("ALCHEMIX", parsed.chainId).find((m) => m.alchemist.toLowerCase() === parsed.alchemist);
1081
+ };
1082
+
878
1083
  // src/lending/twyne.ts
879
1084
  var twyneConfig = () => getGlobalData2()?.twyneConfig;
880
1085
  var twyneConfigFor = (lender, chainId) => getGlobalData2()?.twyneConfig?.[twyneBaseKey(lender)]?.[String(chainId)];
@@ -1322,6 +1527,10 @@ async function fetchMainTokensMap() {
1322
1527
  }
1323
1528
  }
1324
1529
 
1530
+ exports.ALCHEMIX_ARBITRUM_CONFIG = ALCHEMIX_ARBITRUM_CONFIG;
1531
+ exports.ALCHEMIX_BASE_CONFIG = ALCHEMIX_BASE_CONFIG;
1532
+ exports.ALCHEMIX_ETHEREUM_CONFIG = ALCHEMIX_ETHEREUM_CONFIG;
1533
+ exports.ALCHEMIX_OPTIMISM_CONFIG = ALCHEMIX_OPTIMISM_CONFIG;
1325
1534
  exports.COOLER_ETHEREUM_CONFIG = COOLER_ETHEREUM_CONFIG;
1326
1535
  exports.CURVANCE_MONAD_CONFIG = CURVANCE_MONAD_CONFIG;
1327
1536
  exports.DOLOMITE_ROUTER_DEFAULTS = DOLOMITE_ROUTER_DEFAULTS;
@@ -1329,6 +1538,9 @@ exports.FRAXLEND_ETHEREUM_CONFIG = FRAXLEND_ETHEREUM_CONFIG;
1329
1538
  exports.GEARBOX_ACCOUNT_COMPRESSOR_V310 = GEARBOX_ACCOUNT_COMPRESSOR_V310;
1330
1539
  exports.REMOTE_CACHE_STORE_TTL_S = REMOTE_CACHE_STORE_TTL_S;
1331
1540
  exports.RESUPPLY_ETHEREUM_CONFIG = RESUPPLY_ETHEREUM_CONFIG;
1541
+ exports.RIPE_BASE_CONFIG = RIPE_BASE_CONFIG;
1542
+ exports.RIPE_HQ_IDS = RIPE_HQ_IDS;
1543
+ exports.RIPE_ROBINHOOD_CONFIG = RIPE_ROBINHOOD_CONFIG;
1332
1544
  exports.RemoteFetchError = RemoteFetchError;
1333
1545
  exports.aaveOracles = aaveOracles;
1334
1546
  exports.aaveOraclesConfig = aaveOraclesConfig;
@@ -1340,6 +1552,13 @@ exports.aaveV4Peripherals = aaveV4Peripherals;
1340
1552
  exports.aaveV4SpokeLenderKey = aaveV4SpokeLenderKey;
1341
1553
  exports.aaveV4Spokes = aaveV4Spokes;
1342
1554
  exports.aaveWethGateway = aaveWethGateway;
1555
+ exports.alchemixBaseKey = alchemixBaseKey;
1556
+ exports.alchemixConfig = alchemixConfig;
1557
+ exports.alchemixConfigFor = alchemixConfigFor;
1558
+ exports.alchemixLendersByChain = alchemixLendersByChain;
1559
+ exports.alchemixMarketByKey = alchemixMarketByKey;
1560
+ exports.alchemixMarketKey = alchemixMarketKey;
1561
+ exports.alchemixMarketsFor = alchemixMarketsFor;
1343
1562
  exports.assertTwyneKeysUnique = assertTwyneKeysUnique;
1344
1563
  exports.chainLogoURI = chainLogoURI;
1345
1564
  exports.chains = chains;
@@ -1478,6 +1697,7 @@ exports.morphoTypeMarkets = morphoTypeMarkets;
1478
1697
  exports.morphoTypeOracles = morphoTypeOracles;
1479
1698
  exports.morphoTypeVaults = morphoTypeVaults;
1480
1699
  exports.parseAaveV4SpokeLenderKey = parseAaveV4SpokeLenderKey;
1700
+ exports.parseAlchemixMarketKey = parseAlchemixMarketKey;
1481
1701
  exports.parseFraxlendPairKey = parseFraxlendPairKey;
1482
1702
  exports.parseGearboxV3LenderKey = parseGearboxV3LenderKey;
1483
1703
  exports.parseLlamaLendLenderKey = parseLlamaLendLenderKey;
@@ -1493,6 +1713,9 @@ exports.resolveTermOrderStoreBase = resolveTermOrderStoreBase;
1493
1713
  exports.resupplyConfig = resupplyConfig;
1494
1714
  exports.resupplyConfigFor = resupplyConfigFor;
1495
1715
  exports.resupplyLendersByChain = resupplyLendersByChain;
1716
+ exports.ripeConfig = ripeConfig;
1717
+ exports.ripeConfigFor = ripeConfigFor;
1718
+ exports.ripeLendersByChain = ripeLendersByChain;
1496
1719
  exports.riverChainData = riverChainData;
1497
1720
  exports.riverConfig = riverConfig;
1498
1721
  exports.riverConfigFor = riverConfigFor;
package/dist/index.mjs CHANGED
@@ -96,6 +96,8 @@ var LENDER_DATA_DEFAULTS = () => ({
96
96
  resupplyConfig: {},
97
97
  curvanceConfig: {},
98
98
  coolerConfig: {},
99
+ ripeConfig: {},
100
+ alchemixConfig: {},
99
101
  twyneConfig: {},
100
102
  twyneMarkets: {},
101
103
  fraxlendConfig: {},
@@ -873,6 +875,209 @@ var coolerLendersByChain = (chainId) => {
873
875
  return [...keys];
874
876
  };
875
877
 
878
+ // src/lending/ripe.ts
879
+ var RIPE_HQ_IDS = {
880
+ greenToken: 1,
881
+ savingsGreen: 2,
882
+ ripeToken: 3,
883
+ ledger: 4,
884
+ missionControl: 5,
885
+ priceDesk: 7,
886
+ vaultBook: 8,
887
+ creditEngine: 13,
888
+ teller: 17
889
+ };
890
+ var RIPE_BASE_CONFIG = {
891
+ ripeHq: "0x6162df1b329E157479F8f1407E888260E0EC3d2b",
892
+ teller: "0xae87deB25Bc5030991Aa5E27Cbab38f37a112C13",
893
+ missionControl: "0x559E53F42b68b4995732Dba4aF300796761DBC19",
894
+ ledger: "0x365256e322a47Aa2015F6724783F326e9B24fA47",
895
+ creditEngine: "0xEdd0563D06CC52fb5F264A2366A31d9776f6dcC7",
896
+ priceDesk: "0x2F7901BE53cC94AEF174f1a0764430840360Ef53",
897
+ vaultBook: "0xB758e30C14825519b895Fd9928d5d8748A71a944",
898
+ green: "0xd1Eac76497D06Cf15475A5e3984D5bC03de7C707",
899
+ savingsGreen: "0xaa0f13488CE069A7B5a099457c753A7CFBE04d36",
900
+ ripeToken: "0x2A0a59d6B975828e781EcaC125dBA40d7ee5dDC0"
901
+ };
902
+ var RIPE_ROBINHOOD_CONFIG = {
903
+ ripeHq: "0xD4e82AE1De673bba3B53386A2D2C630AE6630940",
904
+ teller: "0x2D3Cb2B39289f402187D7DC9B609ead6646f2506",
905
+ missionControl: "0xb05f928BAA860ef4548aeB6cF7BB901E402BF8B6",
906
+ ledger: "0x7E1d751D168f09761b88651A4c78C996354FaeB1",
907
+ creditEngine: "0xC0ff2bC7FA74cA232ceDaBDE9901e501dC59384c",
908
+ priceDesk: "0x56Db9c2322e009189049bC57385751fc7922AAb0",
909
+ vaultBook: "0x559E53F42b68b4995732Dba4aF300796761DBC19",
910
+ green: "0x355bB7F0f6c730e4460d620420a300fa08FF82F3",
911
+ savingsGreen: "0x290a52380A88f743813B8C3e9F6B0e61DB5FDF73",
912
+ ripeToken: "0x4D3f37a965b21aB4122e92Dd41D2693E742c883b"
913
+ };
914
+ var RIPE_BUILTIN = {
915
+ RIPE: { "8453": RIPE_BASE_CONFIG, "4663": RIPE_ROBINHOOD_CONFIG }
916
+ };
917
+ var ripeConfig = () => getGlobalData2()?.ripeConfig;
918
+ var ripeConfigFor = (lender, chainId) => {
919
+ const published = getGlobalData2()?.ripeConfig?.[lender]?.[String(chainId)];
920
+ if (published?.ripeHq) return published;
921
+ return RIPE_BUILTIN[lender]?.[String(chainId)];
922
+ };
923
+ var ripeLendersByChain = (chainId) => {
924
+ const chain = String(chainId);
925
+ const cfg = getGlobalData2()?.ripeConfig ?? {};
926
+ const keys = /* @__PURE__ */ new Set();
927
+ for (const lender of Object.keys(cfg)) {
928
+ if (cfg[lender]?.[chain]?.ripeHq) keys.add(lender);
929
+ }
930
+ for (const lender of Object.keys(RIPE_BUILTIN)) {
931
+ if (RIPE_BUILTIN[lender]?.[chain]?.ripeHq) keys.add(lender);
932
+ }
933
+ return [...keys];
934
+ };
935
+
936
+ // src/lending/alchemix.ts
937
+ var ALCHEMIX_ETHEREUM_CONFIG = {
938
+ markets: [
939
+ {
940
+ alchemist: "0xfa995B6ABc387376C3e7De5f6d394Ab5B6beE26B",
941
+ positionNft: "0x15da4c7db6404b92894d5214FAc92057Fb8a263d",
942
+ myt: "0x29bcfeD246ce37319d94eBa107db90C453D4c43D",
943
+ debtToken: "0x0100546F2cD4C9D97f798fFC9755E47865FF7Ee6",
944
+ underlying: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
945
+ transmuter: "0x073598132f37756a7E665FB52f1757463120bd3C",
946
+ router: "0xDb852896A23c7E2519b75AeA692caCf834d086Ab",
947
+ mytSymbol: "mixWETH",
948
+ debtSymbol: "alETH",
949
+ isEth: true
950
+ },
951
+ {
952
+ alchemist: "0xeB83112d925268BeDe86654C13D423a987587e3E",
953
+ positionNft: "0x872a03FabC86b59c883CD9c439E969321b719bEB",
954
+ myt: "0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5",
955
+ debtToken: "0xBC6DA0FE9aD5f3b0d58160288917AA56653660E9",
956
+ underlying: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
957
+ transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
958
+ router: "0x6733Aa6b2A622e43e8fF61945E8Fbe5f1b6b00FD",
959
+ mytSymbol: "mixUSDC",
960
+ debtSymbol: "alUSD",
961
+ isEth: false
962
+ }
963
+ ]
964
+ };
965
+ var ALCHEMIX_OPTIMISM_CONFIG = {
966
+ markets: [
967
+ {
968
+ alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
969
+ positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
970
+ myt: "0x91b8657aea26Caa8A0E9D6DD4E24727Ccf32F822",
971
+ debtToken: "0x3E29D3A9316dAB217754d13b28646B76607c5f04",
972
+ underlying: "0x4200000000000000000000000000000000000006",
973
+ transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
974
+ router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
975
+ mytSymbol: "mixWETH",
976
+ debtSymbol: "alETH",
977
+ isEth: true
978
+ },
979
+ {
980
+ alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
981
+ positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
982
+ myt: "0xAf510a560744880410f0f65e3341A020FBC2cA41",
983
+ debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
984
+ underlying: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
985
+ transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
986
+ router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
987
+ mytSymbol: "mixUSDC",
988
+ debtSymbol: "alUSD",
989
+ isEth: false
990
+ }
991
+ ]
992
+ };
993
+ var ALCHEMIX_ARBITRUM_CONFIG = {
994
+ markets: [
995
+ {
996
+ alchemist: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
997
+ positionNft: "0x763F5d567403add750e13234DB896CFe6b423059",
998
+ myt: "0xfe8F223F3d81462F55bf8609897B8cEcfA4B195C",
999
+ debtToken: "0x17573150d67d820542EFb24210371545a4868B03",
1000
+ underlying: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
1001
+ transmuter: "0x2584E8b0616b3E750492c9629a3b27679C410cb9",
1002
+ router: "0xC774F30484818F06a261A89A1d66367e6BBE3e5A",
1003
+ mytSymbol: "mixWETH",
1004
+ debtSymbol: "alETH",
1005
+ isEth: true
1006
+ },
1007
+ {
1008
+ // `loansPaused` at integration — served (repay/withdraw must keep
1009
+ // working for existing positions); borrows refuse off the live flag.
1010
+ alchemist: "0x930750a3510E703535e943E826ABa3c364fFC1De",
1011
+ positionNft: "0xF700c7e40efCA6f7a810e172AFCee3592ff4aD33",
1012
+ myt: "0xEba62B842081CeF5a8184318Dc5C4E4aACa9f651",
1013
+ debtToken: "0xCB8FA9a76b8e203D8C3797bF438d8FB81Ea3326A",
1014
+ underlying: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
1015
+ transmuter: "0x693b7594Ae0633d9c5574D0da46a040f92F5b281",
1016
+ router: "0x3c0546587d27354635a4972390a7B96F962d8BBd",
1017
+ mytSymbol: "mixUSDC",
1018
+ debtSymbol: "alUSD",
1019
+ isEth: false
1020
+ }
1021
+ ]
1022
+ };
1023
+ var ALCHEMIX_BASE_CONFIG = {
1024
+ markets: [
1025
+ {
1026
+ alchemist: "0xEb380d86EeD275C9F2eD77745aB1B2ccf364BF7A",
1027
+ positionNft: "0xDeD3A04612FF12b57317abE38e68026Fc9D28114",
1028
+ myt: "0xb8BeFE5a6941ca4022a52042075ff269C3C67467",
1029
+ debtToken: "0x877014E21c32feA108B6A1f45f367efc9a2d9B9F",
1030
+ underlying: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
1031
+ transmuter: "0x5B1c7180C630d3B2b6782Df70f43aE5Ea80425ba",
1032
+ router: "0x720D1F945279A6D82EeDcC9B7f85767279Ea2F96",
1033
+ mytSymbol: "mixUSDC",
1034
+ debtSymbol: "alUSDb",
1035
+ isEth: false
1036
+ }
1037
+ ]
1038
+ };
1039
+ var ALCHEMIX_BUILTIN = {
1040
+ ALCHEMIX: {
1041
+ "1": ALCHEMIX_ETHEREUM_CONFIG,
1042
+ "10": ALCHEMIX_OPTIMISM_CONFIG,
1043
+ "42161": ALCHEMIX_ARBITRUM_CONFIG,
1044
+ "8453": ALCHEMIX_BASE_CONFIG
1045
+ }
1046
+ };
1047
+ var alchemixConfig = () => getGlobalData2()?.alchemixConfig;
1048
+ var alchemixBaseKey = (lender) => lender?.toUpperCase().startsWith("ALCHEMIX") ? "ALCHEMIX" : lender;
1049
+ var alchemixConfigFor = (lender, chainId) => {
1050
+ const base = alchemixBaseKey(lender);
1051
+ const published = getGlobalData2()?.alchemixConfig?.[base]?.[String(chainId)];
1052
+ if (published?.markets?.length) return published;
1053
+ return ALCHEMIX_BUILTIN[base]?.[String(chainId)];
1054
+ };
1055
+ var alchemixMarketsFor = (lender, chainId) => alchemixConfigFor(lender, chainId)?.markets ?? [];
1056
+ var alchemixLendersByChain = (chainId) => {
1057
+ const chain = String(chainId);
1058
+ const cfg = getGlobalData2()?.alchemixConfig ?? {};
1059
+ const keys = /* @__PURE__ */ new Set();
1060
+ for (const lender of Object.keys(cfg)) {
1061
+ if (cfg[lender]?.[chain]?.markets?.length) keys.add(lender);
1062
+ }
1063
+ for (const lender of Object.keys(ALCHEMIX_BUILTIN)) {
1064
+ if (ALCHEMIX_BUILTIN[lender]?.[chain]?.markets?.length) keys.add(lender);
1065
+ }
1066
+ return [...keys];
1067
+ };
1068
+ var alchemixMarketKey = (chainId, alchemist) => `ALCHEMIX_${String(chainId)}_${alchemist.replace(/^0x/i, "").toUpperCase()}`;
1069
+ var parseAlchemixMarketKey = (lender) => {
1070
+ const m = /^ALCHEMIX_(\d+)_(?:0x)?([0-9a-fA-F]{40})$/i.exec(lender ?? "");
1071
+ if (!m) return void 0;
1072
+ return { chainId: m[1], alchemist: `0x${m[2].toLowerCase()}` };
1073
+ };
1074
+ var alchemixMarketByKey = (lender, chainId) => {
1075
+ const parsed = parseAlchemixMarketKey(lender);
1076
+ if (!parsed) return void 0;
1077
+ if (chainId !== void 0 && String(chainId) !== parsed.chainId) return void 0;
1078
+ return alchemixMarketsFor("ALCHEMIX", parsed.chainId).find((m) => m.alchemist.toLowerCase() === parsed.alchemist);
1079
+ };
1080
+
876
1081
  // src/lending/twyne.ts
877
1082
  var twyneConfig = () => getGlobalData2()?.twyneConfig;
878
1083
  var twyneConfigFor = (lender, chainId) => getGlobalData2()?.twyneConfig?.[twyneBaseKey(lender)]?.[String(chainId)];
@@ -1320,4 +1525,4 @@ async function fetchMainTokensMap() {
1320
1525
  }
1321
1526
  }
1322
1527
 
1323
- 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, 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, 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 };
1528
+ 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, 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, 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;
@@ -39,5 +39,7 @@ export * from './llamalend';
39
39
  export * from './resupply';
40
40
  export * from './curvance';
41
41
  export * from './cooler';
42
+ export * from './ripe';
43
+ export * from './alchemix';
42
44
  export * from './twyne';
43
45
  export * from './fraxlend';
@@ -25,6 +25,8 @@ import type { CompoundV2OraclesConfigType, CompoundV2PoolsType, CompoundV2TokenA
25
25
  import type { CompoundV3BaseDataType, CompoundV3BulkerType, CompoundV3OracleDataMap, CompoundV3PoolsType } from './compoundV3';
26
26
  import type { CurvanceConfigType } from './curvance';
27
27
  import type { CoolerConfigType } from './cooler';
28
+ import type { RipeConfigType } from './ripe';
29
+ import type { AlchemixConfigType } from './alchemix';
28
30
  import type { TwyneConfigType, TwyneMarketsType } from './twyne';
29
31
  import type { DolomiteConfigsType, DolomiteEmodeType, DolomiteIsolationType } from './dolomite';
30
32
  import type { UsddConfigType, UsddMarketsType } from './dss';
@@ -111,6 +113,8 @@ export interface GlobalLenderDataRegistry {
111
113
  resupplyConfig: ResupplyConfigType;
112
114
  curvanceConfig: CurvanceConfigType;
113
115
  coolerConfig: CoolerConfigType;
116
+ ripeConfig: RipeConfigType;
117
+ alchemixConfig: AlchemixConfigType;
114
118
  twyneConfig: TwyneConfigType;
115
119
  twyneMarkets: TwyneMarketsType;
116
120
  fraxlendConfig: FraxlendConfigType;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Ripe Protocol — a multi-collateral CDP minting the GREEN stablecoin on Base
3
+ * (8453) and Robinhood Chain (4663). ONE cross-collateral position per
4
+ * address per chain, so `RIPE` is both the dispatch key and the market key.
5
+ *
6
+ * Every Ripe deployment is an address book rooted in ONE contract, `RipeHq`
7
+ * (an `AddressRegistry`): departments are upgraded by re-pointing a registry
8
+ * id, and the Base book has already diverged from Ripe's own deployment
9
+ * manifest (Vault Book, Auction House and Deleverage were all re-pointed).
10
+ * So the department addresses below are a SEED — fetchers resolve the live
11
+ * ones from `RipeHq.getAddr(<id>)` every cycle (ids are fixed by Ripe's
12
+ * `Addys` module) and fall back to the seed only for a failed read.
13
+ *
14
+ * The asset roster is NOT seeded either: `MissionControl.numAssets()` /
15
+ * `assets(i)` enumerate it on chain, and per-asset terms change by governance.
16
+ *
17
+ * Follows the Cooler/Curvance built-in-seed pattern: published metadata wins
18
+ * if it ever exists, the built-in rows are the working fallback. Addresses
19
+ * verified on chain 2026-10-14 (RipeHq registry walk) — see RIPE.md.
20
+ */
21
+ export interface RipeConfigChain {
22
+ /** The root registry every other address resolves from. */
23
+ ripeHq: string;
24
+ /** Teller — the single user write surface (deposit/withdraw/borrow/repay). */
25
+ teller: string;
26
+ /** MissionControl — asset roster, per-asset `DebtTerms`, global limits. */
27
+ missionControl: string;
28
+ /** Ledger — per-user debt + vault participation, total debt. */
29
+ ledger: string;
30
+ /** CreditEngine — position views (borrow terms, max borrow, health). */
31
+ creditEngine: string;
32
+ /** PriceDesk — Ripe's own oracle router (18-dec USD per token). */
33
+ priceDesk: string;
34
+ /** VaultBook — vault-id → vault registry (collateral custody). */
35
+ vaultBook: string;
36
+ /** GREEN — the minted debt token (18 dec). */
37
+ green: string;
38
+ /** sGREEN — ERC-4626 savings vault over GREEN (revenue accrues here). */
39
+ savingsGreen: string;
40
+ /** RIPE governance token. */
41
+ ripeToken: string;
42
+ }
43
+ export type RipeConfigType = {
44
+ [lender: string]: {
45
+ [chainId: string]: RipeConfigChain;
46
+ };
47
+ };
48
+ /** `RipeHq` registry ids (Ripe's `contracts/modules/Addys.vy`). */
49
+ export declare const RIPE_HQ_IDS: {
50
+ readonly greenToken: 1;
51
+ readonly savingsGreen: 2;
52
+ readonly ripeToken: 3;
53
+ readonly ledger: 4;
54
+ readonly missionControl: 5;
55
+ readonly priceDesk: 7;
56
+ readonly vaultBook: 8;
57
+ readonly creditEngine: 13;
58
+ readonly teller: 17;
59
+ };
60
+ export declare const RIPE_BASE_CONFIG: RipeConfigChain;
61
+ export declare const RIPE_ROBINHOOD_CONFIG: RipeConfigChain;
62
+ export declare const ripeConfig: () => RipeConfigType;
63
+ /**
64
+ * Deployment seed for the Ripe lender on a chain. Published metadata wins;
65
+ * the built-in rows are the fallback, so the provider works with no
66
+ * `config/ripe.json` publish.
67
+ */
68
+ export declare const ripeConfigFor: (lender: string, chainId: string | number) => RipeConfigChain | undefined;
69
+ /**
70
+ * All Ripe lender keys with a deployment on a chain (drives
71
+ * `getLendersForChain`). Gated on `ripeHq` — the one address everything
72
+ * bootstraps from.
73
+ */
74
+ export declare const ripeLendersByChain: (chainId: string | number) => string[];
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.0.59",
7
+ "version": "0.0.61",
8
8
  "description": "Hold and initialize lending protocol data across a stack",
9
9
  "files": [
10
10
  "dist"