@1delta/data-sdk 0.0.57 → 0.0.59

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
@@ -105,6 +105,7 @@ var LENDER_DATA_DEFAULTS = () => ({
105
105
  eulerVaults: {},
106
106
  dolomiteConfigs: {},
107
107
  dolomiteEmode: {},
108
+ dolomiteIsolation: {},
108
109
  siloMarkets: {},
109
110
  siloPeripherals: {},
110
111
  siloMarketsV3: {},
@@ -298,9 +299,24 @@ function parseGearboxV3LenderKey(lenderKey) {
298
299
 
299
300
  // src/lending/dolomite.ts
300
301
  var dolomiteConfigs = () => getGlobalData2()?.dolomiteConfigs;
302
+ var DOLOMITE_ROUTER_DEFAULTS = {
303
+ depositWithdrawalRouter: "0xf8b2c637A68cF6A17b1DF9F8992EeBeFf63d2dFf",
304
+ borrowPositionRouter: "0xF579b345cdA0860668b857De10ABD62442133D0F",
305
+ genericTraderRouter: "0x7b61CbA306CfdB02493b94757143132B1b72Bc6b"
306
+ };
307
+ var dolomiteRouters = (chainId) => {
308
+ const cfg = getGlobalData2()?.dolomiteConfigs?.[chainId];
309
+ return {
310
+ depositWithdrawalRouter: cfg?.depositWithdrawalRouter ?? DOLOMITE_ROUTER_DEFAULTS.depositWithdrawalRouter,
311
+ borrowPositionRouter: cfg?.borrowPositionRouter ?? DOLOMITE_ROUTER_DEFAULTS.borrowPositionRouter,
312
+ genericTraderRouter: cfg?.genericTraderRouter ?? DOLOMITE_ROUTER_DEFAULTS.genericTraderRouter
313
+ };
314
+ };
301
315
  var dolomiteOdosExecutorShim = (chainId) => getGlobalData2()?.dolomiteConfigs?.[chainId]?.odosExecutor;
302
316
  var dolomiteChains = () => Object.keys(getGlobalData2()?.dolomiteConfigs ?? {});
303
317
  var dolomiteEmode = () => getGlobalData2()?.dolomiteEmode;
318
+ var dolomiteIsolation = () => getGlobalData2()?.dolomiteIsolation;
319
+ var dolomiteIsolationMarket = (chainId, marketId) => getGlobalData2()?.dolomiteIsolation?.[chainId]?.[String(marketId)];
304
320
  var dolomiteMarketIdByToken = (chainId, token) => {
305
321
  const markets = getGlobalData2()?.dolomiteConfigs?.[chainId]?.markets;
306
322
  if (!markets) return void 0;
@@ -1308,6 +1324,7 @@ async function fetchMainTokensMap() {
1308
1324
 
1309
1325
  exports.COOLER_ETHEREUM_CONFIG = COOLER_ETHEREUM_CONFIG;
1310
1326
  exports.CURVANCE_MONAD_CONFIG = CURVANCE_MONAD_CONFIG;
1327
+ exports.DOLOMITE_ROUTER_DEFAULTS = DOLOMITE_ROUTER_DEFAULTS;
1311
1328
  exports.FRAXLEND_ETHEREUM_CONFIG = FRAXLEND_ETHEREUM_CONFIG;
1312
1329
  exports.GEARBOX_ACCOUNT_COMPRESSOR_V310 = GEARBOX_ACCOUNT_COMPRESSOR_V310;
1313
1330
  exports.REMOTE_CACHE_STORE_TTL_S = REMOTE_CACHE_STORE_TTL_S;
@@ -1349,8 +1366,11 @@ exports.curvancePositionManagersFor = curvancePositionManagersFor;
1349
1366
  exports.dolomiteChains = dolomiteChains;
1350
1367
  exports.dolomiteConfigs = dolomiteConfigs;
1351
1368
  exports.dolomiteEmode = dolomiteEmode;
1369
+ exports.dolomiteIsolation = dolomiteIsolation;
1370
+ exports.dolomiteIsolationMarket = dolomiteIsolationMarket;
1352
1371
  exports.dolomiteMarketIdByToken = dolomiteMarketIdByToken;
1353
1372
  exports.dolomiteOdosExecutorShim = dolomiteOdosExecutorShim;
1373
+ exports.dolomiteRouters = dolomiteRouters;
1354
1374
  exports.dssChainData = dssChainData;
1355
1375
  exports.dssConfigFor = dssConfigFor;
1356
1376
  exports.dssDebtJoin = dssDebtJoin;
package/dist/index.mjs CHANGED
@@ -103,6 +103,7 @@ var LENDER_DATA_DEFAULTS = () => ({
103
103
  eulerVaults: {},
104
104
  dolomiteConfigs: {},
105
105
  dolomiteEmode: {},
106
+ dolomiteIsolation: {},
106
107
  siloMarkets: {},
107
108
  siloPeripherals: {},
108
109
  siloMarketsV3: {},
@@ -296,9 +297,24 @@ function parseGearboxV3LenderKey(lenderKey) {
296
297
 
297
298
  // src/lending/dolomite.ts
298
299
  var dolomiteConfigs = () => getGlobalData2()?.dolomiteConfigs;
300
+ var DOLOMITE_ROUTER_DEFAULTS = {
301
+ depositWithdrawalRouter: "0xf8b2c637A68cF6A17b1DF9F8992EeBeFf63d2dFf",
302
+ borrowPositionRouter: "0xF579b345cdA0860668b857De10ABD62442133D0F",
303
+ genericTraderRouter: "0x7b61CbA306CfdB02493b94757143132B1b72Bc6b"
304
+ };
305
+ var dolomiteRouters = (chainId) => {
306
+ const cfg = getGlobalData2()?.dolomiteConfigs?.[chainId];
307
+ return {
308
+ depositWithdrawalRouter: cfg?.depositWithdrawalRouter ?? DOLOMITE_ROUTER_DEFAULTS.depositWithdrawalRouter,
309
+ borrowPositionRouter: cfg?.borrowPositionRouter ?? DOLOMITE_ROUTER_DEFAULTS.borrowPositionRouter,
310
+ genericTraderRouter: cfg?.genericTraderRouter ?? DOLOMITE_ROUTER_DEFAULTS.genericTraderRouter
311
+ };
312
+ };
299
313
  var dolomiteOdosExecutorShim = (chainId) => getGlobalData2()?.dolomiteConfigs?.[chainId]?.odosExecutor;
300
314
  var dolomiteChains = () => Object.keys(getGlobalData2()?.dolomiteConfigs ?? {});
301
315
  var dolomiteEmode = () => getGlobalData2()?.dolomiteEmode;
316
+ var dolomiteIsolation = () => getGlobalData2()?.dolomiteIsolation;
317
+ var dolomiteIsolationMarket = (chainId, marketId) => getGlobalData2()?.dolomiteIsolation?.[chainId]?.[String(marketId)];
302
318
  var dolomiteMarketIdByToken = (chainId, token) => {
303
319
  const markets = getGlobalData2()?.dolomiteConfigs?.[chainId]?.markets;
304
320
  if (!markets) return void 0;
@@ -1304,4 +1320,4 @@ async function fetchMainTokensMap() {
1304
1320
  }
1305
1321
  }
1306
1322
 
1307
- export { COOLER_ETHEREUM_CONFIG, CURVANCE_MONAD_CONFIG, 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, dolomiteMarketIdByToken, dolomiteOdosExecutorShim, 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 };
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 };
@@ -12,6 +12,15 @@ export type DolomiteConfigEntry = {
12
12
  * ("invalid ETH sender"); ERC-20 deposits/withdrawals still use the proxy.
13
13
  */
14
14
  depositWithdrawalRouter?: string;
15
+ /**
16
+ * Modern `BorrowPositionRouter` / `GenericTraderRouter` — ONE address on
17
+ * every Dolomite chain (see `DOLOMITE_ROUTER_DEFAULTS`); the config may
18
+ * override per chain. Both take a leading `isolationModeMarketId` and are
19
+ * the ONLY way to act on an isolation-mode (dGM/dsavETH/…) position, whose
20
+ * DolomiteMargin account is owned by the user's vault.
21
+ */
22
+ borrowPositionRouter?: string;
23
+ genericTraderRouter?: string;
15
24
  borrowPositionProxy?: string;
16
25
  genericTraderProxy?: string;
17
26
  aggregatorTraders?: {
@@ -67,7 +76,52 @@ export type DolomiteEmodeChain = {
67
76
  export type DolomiteEmodeType = {
68
77
  [chainId: string]: DolomiteEmodeChain;
69
78
  };
79
+ export type DolomiteIsolationMarket = {
80
+ factory: string;
81
+ underlying: string;
82
+ underlyingSymbol: string;
83
+ underlyingDecimals: number;
84
+ allowableDebtMarketIds: string[];
85
+ allowableCollateralMarketIds: string[];
86
+ wrapper: string | null;
87
+ unwrapper: string | null;
88
+ wrapperInputMarketIds: string[];
89
+ unwrapperOutputMarketIds: string[];
90
+ async: boolean;
91
+ executionFeeWei: string | null;
92
+ /**
93
+ * `getProxyVaultInitCodeHash()` of the factory. A user's vault is
94
+ * `CREATE2(factory, keccak256(abi.encodePacked(user)), hash)`, so the
95
+ * vault that owns an isolation position can be derived offline — see
96
+ * margin-fetcher's `dolomiteVaultAddress`. Per factory (17 distinct hashes on Arbitrum).
97
+ */
98
+ vaultInitCodeHash: string | null;
99
+ };
100
+ export type DolomiteIsolationType = {
101
+ [chainId: string]: {
102
+ [marketId: string]: DolomiteIsolationMarket;
103
+ };
104
+ };
70
105
  export declare const dolomiteConfigs: () => DolomiteConfigsType;
106
+ /**
107
+ * The three Dolomite routers as deployed by `dolomite-margin-modules`
108
+ * (`packages/deployment/src/deploy/deployments.json`): one CREATE2 address per
109
+ * router on every chain Dolomite runs on (1, 56, 196, 1101, 3637, 5000, 5330,
110
+ * 8453, 42161, 57073, 80094). Probed 2026-09-18 on Arbitrum: all three are
111
+ * `getIsGlobalOperator == true` and `isTokenConverterTrusted == true` on every
112
+ * live isolation factory.
113
+ */
114
+ export declare const DOLOMITE_ROUTER_DEFAULTS: {
115
+ readonly depositWithdrawalRouter: "0xf8b2c637A68cF6A17b1DF9F8992EeBeFf63d2dFf";
116
+ readonly borrowPositionRouter: "0xF579b345cdA0860668b857De10ABD62442133D0F";
117
+ readonly genericTraderRouter: "0x7b61CbA306CfdB02493b94757143132B1b72Bc6b";
118
+ };
119
+ /** Router addresses for a chain: the config's, else the shared CREATE2 defaults. */
120
+ export declare const dolomiteRouters: (chainId: string) => {
121
+ depositWithdrawalRouter: string;
122
+ borrowPositionRouter: string;
123
+ genericTraderRouter: string;
124
+ };
71
125
  /**
72
126
  * The `OdosExecutor` deployed on a chain, or `undefined` when the
73
127
  * passthrough route is unavailable there. Callers MUST treat `undefined` as
@@ -76,4 +130,7 @@ export declare const dolomiteConfigs: () => DolomiteConfigsType;
76
130
  export declare const dolomiteOdosExecutorShim: (chainId: string) => string | undefined;
77
131
  export declare const dolomiteChains: () => string[];
78
132
  export declare const dolomiteEmode: () => DolomiteEmodeType;
133
+ export declare const dolomiteIsolation: () => DolomiteIsolationType;
134
+ /** The isolation-mode row for a (chain, marketId), or undefined for an ordinary market. */
135
+ export declare const dolomiteIsolationMarket: (chainId: string, marketId: string | number | bigint) => DolomiteIsolationMarket | undefined;
79
136
  export declare const dolomiteMarketIdByToken: (chainId: string, token: string) => string | undefined;
@@ -26,7 +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 { TwyneConfigType, TwyneMarketsType } from './twyne';
29
- import type { DolomiteConfigsType, DolomiteEmodeType } from './dolomite';
29
+ import type { DolomiteConfigsType, DolomiteEmodeType, DolomiteIsolationType } from './dolomite';
30
30
  import type { UsddConfigType, UsddMarketsType } from './dss';
31
31
  import type { EulerConfigsType, EulerVaultsType } from './euler';
32
32
  import type { ExactlyConfigType, ExactlyMarketsType } from './exactly';
@@ -118,6 +118,7 @@ export interface GlobalLenderDataRegistry {
118
118
  eulerVaults: EulerVaultsType;
119
119
  dolomiteConfigs: DolomiteConfigsType;
120
120
  dolomiteEmode: DolomiteEmodeType;
121
+ dolomiteIsolation: DolomiteIsolationType;
121
122
  siloMarkets: SiloMarketsType;
122
123
  siloPeripherals: SiloPeripheralsType;
123
124
  siloMarketsV3: SiloMarketsType;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "version": "0.0.57",
7
+ "version": "0.0.59",
8
8
  "description": "Hold and initialize lending protocol data across a stack",
9
9
  "files": [
10
10
  "dist"