@bgd-labs/toolbox 0.0.12 → 0.0.14

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.mjs CHANGED
@@ -46,10 +46,10 @@ function decodeUserConfiguration(userConfiguration) {
46
46
 
47
47
  // src/aave/reserve.ts
48
48
  function decodeReserveConfiguration(data) {
49
- const ltv = getBits(data, 0n, 15n);
50
- const liquidationThreshold = getBits(data, 16n, 31n);
51
- const liquidationBonus = getBits(data, 32n, 47n);
52
- const decimals = getBits(data, 48n, 55n);
49
+ const ltv = Number(getBits(data, 0n, 15n));
50
+ const liquidationThreshold = Number(getBits(data, 16n, 31n));
51
+ const liquidationBonus = Number(getBits(data, 32n, 47n));
52
+ const decimals = Number(getBits(data, 48n, 55n));
53
53
  const active = getBits(data, 56n, 56n);
54
54
  const frozen = getBits(data, 57n, 57n);
55
55
  const borrowingEnabled = getBits(data, 58n, 58n);
@@ -60,7 +60,7 @@ function decodeReserveConfiguration(data) {
60
60
  const reserveFactor = getBits(data, 64n, 79n);
61
61
  const borrowCap = getBits(data, 80n, 115n);
62
62
  const supplyCap = getBits(data, 116n, 151n);
63
- const liquidationProtocolFee = getBits(data, 152n, 167n);
63
+ const liquidationProtocolFee = Number(getBits(data, 152n, 167n));
64
64
  const unbackedMintCap = getBits(data, 176n, 211n);
65
65
  const debtCeiling = getBits(data, 212n, 251n);
66
66
  const virtualAccountingEnabled = getBits(data, 252n, 252n);
@@ -276,6 +276,72 @@ function getMarketReferenceCurrencyAndUsdBalance({
276
276
  const usdBalance = marketReferenceCurrencyBalance * marketReferencePriceInUsdNormalized / BigInt(10 ** marketReferenceCurrencyDecimals);
277
277
  return { marketReferenceCurrencyBalance, usdBalance };
278
278
  }
279
+ function assetToBase(amount, price, assetDecimals) {
280
+ return amount * BigInt(price) / BigInt(10 ** assetDecimals);
281
+ }
282
+ function calculateHealthFactor(user, positions, reserves, prices, emodes, currentTimestamp) {
283
+ const eModeCollaterals = user.emode == 0 ? [] : bitmapToIndexes(BigInt(emodes[user.emode].collateralBitmap));
284
+ const eModelt = user.emode == 0 ? 0 : emodes[user.emode].liquidationThreshold;
285
+ let totalCollateralInBaseCurrency = 0n;
286
+ let totalDebtInBaseCurrency = 0n;
287
+ let weightedLiquidationThreshold = 0n;
288
+ for (const position of positions) {
289
+ const reserveConfig = reserves[position.underlying];
290
+ if (position.scaledATokenBalance !== "0") {
291
+ const collateral = getCurrentLiquidityBalance({
292
+ scaledBalance: BigInt(position.scaledATokenBalance),
293
+ index: BigInt(reserveConfig.liquidityIndex),
294
+ rate: BigInt(reserveConfig.liquidityRate),
295
+ lastUpdateTimestamp: reserveConfig.lastUpdateTimestamp,
296
+ currentTimestamp
297
+ });
298
+ const collateralInBase = assetToBase(
299
+ collateral,
300
+ prices[position.underlying],
301
+ reserveConfig.decimals
302
+ );
303
+ totalCollateralInBaseCurrency += collateralInBase;
304
+ let lt = reserveConfig.liquidationThreshold;
305
+ if (user.emode !== 0 && eModeCollaterals.includes(reserveConfig.id)) {
306
+ lt = eModelt;
307
+ }
308
+ weightedLiquidationThreshold += collateralInBase * BigInt(lt);
309
+ }
310
+ if (position.scaledVariableDebtTokenBalance !== "0") {
311
+ const debt = getCurrentDebtBalance({
312
+ scaledBalance: BigInt(position.scaledVariableDebtTokenBalance),
313
+ index: BigInt(reserveConfig.variableBorrowIndex),
314
+ rate: BigInt(reserveConfig.variableBorrowRate),
315
+ lastUpdateTimestamp: reserveConfig.lastUpdateTimestamp,
316
+ currentTimestamp
317
+ });
318
+ const debtInBase = assetToBase(
319
+ debt,
320
+ prices[position.underlying],
321
+ reserveConfig.decimals
322
+ );
323
+ totalDebtInBaseCurrency += debtInBase;
324
+ }
325
+ }
326
+ if (totalDebtInBaseCurrency === 0n) {
327
+ return {
328
+ healthFactor: -1,
329
+ totalDebtInBaseCurrency,
330
+ totalCollateralInBaseCurrency
331
+ };
332
+ }
333
+ const avgLiquidationThreshold = totalCollateralInBaseCurrency > 0n ? weightedLiquidationThreshold / totalCollateralInBaseCurrency : 0n;
334
+ const healthFactor = calculateHealthFactorFromBalances({
335
+ collateralBalanceMarketReferenceCurrency: totalCollateralInBaseCurrency,
336
+ borrowBalanceMarketReferenceCurrency: totalDebtInBaseCurrency,
337
+ averageLiquidationThreshold: avgLiquidationThreshold
338
+ });
339
+ return {
340
+ healthFactor: Number(healthFactor) / 1e18,
341
+ totalDebtInBaseCurrency,
342
+ totalCollateralInBaseCurrency
343
+ };
344
+ }
279
345
 
280
346
  // src/aave/pool/addresses.ts
281
347
  import { getContract } from "viem";
@@ -3353,6 +3419,7 @@ function isPayloadFinal(state) {
3353
3419
  async function getNonFinalizedPayloads(client, payloadsController) {
3354
3420
  const controllerContract = getPayloadsController(client, payloadsController);
3355
3421
  const payloadsCount = await controllerContract.read.getPayloadsCount();
3422
+ if (payloadsCount <= 1) return [];
3356
3423
  const nonFinalPayloads = [];
3357
3424
  for (let payloadId = payloadsCount - 1; payloadId != 0; payloadId--) {
3358
3425
  const maxRange = (35 + 10 + 7) * 24 * 60 * 60;
@@ -5059,7 +5126,7 @@ function getClient(chainId, {
5059
5126
  }
5060
5127
 
5061
5128
  // src/ecosystem/rpc-helpers.ts
5062
- import { getLogs, getStorageAt as getStorageAt2 } from "viem/actions";
5129
+ import { getBytecode, getLogs, getStorageAt as getStorageAt2 } from "viem/actions";
5063
5130
 
5064
5131
  // src/ecosystem/constants.ts
5065
5132
  var erc1967_ImplementationSlot = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
@@ -5079,7 +5146,6 @@ async function getLogsRecursive({
5079
5146
  fromBlock,
5080
5147
  toBlock
5081
5148
  }) {
5082
- console.log(fromBlock, toBlock);
5083
5149
  if (fromBlock <= toBlock) {
5084
5150
  try {
5085
5151
  const logs = await getLogs(client, {
@@ -5090,10 +5156,13 @@ async function getLogsRecursive({
5090
5156
  });
5091
5157
  return logs;
5092
5158
  } catch (error) {
5093
- console.log(error);
5094
5159
  const rangeMatch = error.details?.match(/.*\[(.*),\s*(.*)\]/);
5095
5160
  if (rangeMatch?.length === 3) {
5161
+ console.log(error.details);
5096
5162
  const maxBlock = fromHex3(rangeMatch[2], "bigint");
5163
+ console.log(
5164
+ `Alchemy range error, retrying via ${fromBlock}:${maxBlock}`
5165
+ );
5097
5166
  const arr1 = await getLogsRecursive({
5098
5167
  client,
5099
5168
  events,
@@ -5102,6 +5171,7 @@ async function getLogsRecursive({
5102
5171
  toBlock: maxBlock
5103
5172
  });
5104
5173
  const midBlock = BigInt(maxBlock + toBlock) >> BigInt(1);
5174
+ console.log(`Via ${maxBlock + BigInt(1)}:${midBlock}`);
5105
5175
  const arr2 = await getLogsRecursive({
5106
5176
  client,
5107
5177
  events,
@@ -5109,6 +5179,7 @@ async function getLogsRecursive({
5109
5179
  fromBlock: maxBlock + BigInt(1),
5110
5180
  toBlock: midBlock
5111
5181
  });
5182
+ console.log(`And via ${midBlock + BigInt(1)}:${toBlock}`);
5112
5183
  const arr3 = await getLogsRecursive({
5113
5184
  client,
5114
5185
  events,
@@ -5116,7 +5187,7 @@ async function getLogsRecursive({
5116
5187
  fromBlock: midBlock + BigInt(1),
5117
5188
  toBlock
5118
5189
  });
5119
- return [...arr1, ...arr2, ...arr3];
5190
+ return arr1.concat(arr2).concat(arr3);
5120
5191
  } else {
5121
5192
  const midBlock = BigInt(fromBlock + toBlock) >> BigInt(1);
5122
5193
  const arr1 = await getLogsRecursive({
@@ -5133,16 +5204,55 @@ async function getLogsRecursive({
5133
5204
  fromBlock: midBlock + BigInt(1),
5134
5205
  toBlock
5135
5206
  });
5136
- return [...arr1, ...arr2];
5207
+ return arr1.concat(arr2);
5137
5208
  }
5138
5209
  }
5139
5210
  }
5140
5211
  return [];
5141
5212
  }
5213
+ async function getContractDeploymentBlock({
5214
+ client,
5215
+ contractAddress,
5216
+ fromBlock,
5217
+ toBlock,
5218
+ maxDelta
5219
+ }) {
5220
+ if (fromBlock == toBlock) return fromBlock;
5221
+ if (fromBlock < toBlock) {
5222
+ const midBlock = BigInt(fromBlock + toBlock) >> BigInt(1);
5223
+ const codeMid = await getBytecode(client, {
5224
+ blockNumber: midBlock,
5225
+ address: contractAddress
5226
+ });
5227
+ if (!codeMid) {
5228
+ if (toBlock - midBlock > maxDelta) {
5229
+ return getContractDeploymentBlock({
5230
+ client,
5231
+ contractAddress,
5232
+ fromBlock: midBlock,
5233
+ toBlock,
5234
+ maxDelta
5235
+ });
5236
+ } else {
5237
+ return midBlock;
5238
+ }
5239
+ }
5240
+ return getContractDeploymentBlock({
5241
+ client,
5242
+ contractAddress,
5243
+ fromBlock,
5244
+ toBlock: midBlock,
5245
+ maxDelta
5246
+ });
5247
+ }
5248
+ throw new Error("Could not find contract deployment block");
5249
+ }
5142
5250
 
5143
5251
  // src/ecosystem/flashbots.ts
5144
5252
  import { EventSource } from "eventsource";
5145
5253
  import {
5254
+ decodeAbiParameters,
5255
+ decodeFunctionData,
5146
5256
  keccak256 as keccak2562,
5147
5257
  toBytes as toBytes2,
5148
5258
  toHex as toHex3
@@ -5222,6 +5332,71 @@ function onMevHandler(callback, streamUrl = "https://mev-share.flashbots.net") {
5222
5332
  };
5223
5333
  return events;
5224
5334
  }
5335
+ var transmit_signature = "0xb1dc65a4";
5336
+ var forward_signature = "0x6fadcf72";
5337
+ function priceUpdateDecoder(receiver, calldata) {
5338
+ if (calldata.startsWith(forward_signature)) {
5339
+ const forwardParams = decodeFunctionData({
5340
+ abi: [
5341
+ {
5342
+ inputs: [
5343
+ { internalType: "address", name: "to", type: "address" },
5344
+ { internalType: "bytes", name: "data", type: "bytes" }
5345
+ ],
5346
+ name: "forward",
5347
+ outputs: [],
5348
+ stateMutability: "nonpayable",
5349
+ type: "function"
5350
+ }
5351
+ ],
5352
+ data: calldata
5353
+ });
5354
+ receiver = forwardParams.args[0];
5355
+ calldata = forwardParams.args[1];
5356
+ }
5357
+ if (calldata.startsWith(transmit_signature)) {
5358
+ try {
5359
+ const transmitParams = decodeFunctionData({
5360
+ abi: [
5361
+ {
5362
+ inputs: [
5363
+ {
5364
+ internalType: "bytes32[3]",
5365
+ name: "reportContext",
5366
+ type: "bytes32[3]"
5367
+ },
5368
+ { internalType: "bytes", name: "report", type: "bytes" },
5369
+ { internalType: "bytes32[]", name: "rs", type: "bytes32[]" },
5370
+ { internalType: "bytes32[]", name: "ss", type: "bytes32[]" },
5371
+ { internalType: "bytes32", name: "rawVs", type: "bytes32" }
5372
+ ],
5373
+ name: "transmit",
5374
+ outputs: [],
5375
+ stateMutability: "nonpayable",
5376
+ type: "function"
5377
+ }
5378
+ ],
5379
+ data: calldata
5380
+ });
5381
+ const report = decodeAbiParameters(
5382
+ [
5383
+ { name: "observationsTimestamp", type: "uint32" },
5384
+ { name: "rawObservers", type: "bytes32" },
5385
+ { name: "observations", type: "int192[]" },
5386
+ { name: "juelsPerFeeCoin", type: "int192" }
5387
+ ],
5388
+ transmitParams.args[1]
5389
+ );
5390
+ if (report[2].length)
5391
+ return {
5392
+ receiver,
5393
+ answer: report[2][Math.floor(report[2].length / 2)]
5394
+ };
5395
+ } catch (e) {
5396
+ console.log("could not decode event (which probably is fine)");
5397
+ }
5398
+ }
5399
+ }
5225
5400
 
5226
5401
  // src/ecosystem/generated/chainlinkFeeds.ts
5227
5402
  var chainlinkFeeds = {
@@ -5740,7 +5915,8 @@ var chainlinkFeeds = {
5740
5915
  "contractAddress": "0x64c67984A458513C6BAb23a815916B1b1075cf3a",
5741
5916
  "proxyAddress": "0x76F8C9E423C228E83DCB11d17F0Bd8aEB0Ca01bb",
5742
5917
  "decimals": 8,
5743
- "name": "LINK / USD"
5918
+ "name": "LINK / USD",
5919
+ "secondaryProxyAddress": "0xC7e9b623ed51F033b32AE7f1282b1AD62C28C183"
5744
5920
  },
5745
5921
  {
5746
5922
  "contractAddress": "0x658Aa21601C8c0bB511C21999F7cad35B6A15192",
@@ -5830,7 +6006,8 @@ var chainlinkFeeds = {
5830
6006
  "contractAddress": "0x7c7FdFCa295a787ded12Bb5c1A49A8D2cC20E3F8",
5831
6007
  "proxyAddress": "0x5147eA642CAEF7BD9c1265AadcA78f997AbB9649",
5832
6008
  "decimals": 8,
5833
- "name": "ETH / USD"
6009
+ "name": "ETH / USD",
6010
+ "secondaryProxyAddress": "0x5424384B256154046E9667dDFaaa5e550145215e"
5834
6011
  },
5835
6012
  {
5836
6013
  "contractAddress": "0x7d4E742018fb52E48b08BE73d041C18B21de6Fb5",
@@ -6076,7 +6253,8 @@ var chainlinkFeeds = {
6076
6253
  "contractAddress": "0x9df238BE059572d7211F1a1a5fEe609F979AAD2d",
6077
6254
  "proxyAddress": "0x7bB7bF4ca536DbC49545704BFAcaa13633D18718",
6078
6255
  "decimals": 8,
6079
- "name": "USDT / USD"
6256
+ "name": "USDT / USD",
6257
+ "secondaryProxyAddress": "0x62c2ab773B7324ad9e030D777989B3b5d5c54c0A"
6080
6258
  },
6081
6259
  {
6082
6260
  "contractAddress": "0x9e6e40dC0A35D6eD96BB09D928261EB598523645",
@@ -6484,7 +6662,8 @@ var chainlinkFeeds = {
6484
6662
  "contractAddress": "0xcd07B31D85756098334eDdC92DE755dEae8FE62f",
6485
6663
  "proxyAddress": "0xbd7F896e60B650C01caf2d7279a1148189A68884",
6486
6664
  "decimals": 8,
6487
- "name": "AAVE / USD"
6665
+ "name": "AAVE / USD",
6666
+ "secondaryProxyAddress": "0xF02C1e2A3B77c1cacC72f72B44f7d0a4c62e4a85"
6488
6667
  },
6489
6668
  {
6490
6669
  "contractAddress": "0xced238b8B9D39f2B1CD42adbEeFBB85cd46C14F2",
@@ -6538,7 +6717,8 @@ var chainlinkFeeds = {
6538
6717
  "contractAddress": "0xdc715c751f1cc129A6b47fEDC87D9918a4580502",
6539
6718
  "proxyAddress": "0x85355da30ee4b35F4B30759Bd49a1EBE3fc41Bdb",
6540
6719
  "decimals": 8,
6541
- "name": "BTC / USD"
6720
+ "name": "BTC / USD",
6721
+ "secondaryProxyAddress": "0xb41E773f507F7a7EA890b1afB7d2b660c30C8B0A"
6542
6722
  },
6543
6723
  {
6544
6724
  "contractAddress": "0xe07f52971153dB2713ACe5ebAAf2eA8b0A9230B7",
@@ -6550,7 +6730,8 @@ var chainlinkFeeds = {
6550
6730
  "contractAddress": "0xe13fafe4FB769e0f4a1cB69D35D21EF99188EFf7",
6551
6731
  "proxyAddress": "0xfB6471ACD42c91FF265344Ff73E88353521d099F",
6552
6732
  "decimals": 8,
6553
- "name": "USDC / USD"
6733
+ "name": "USDC / USD",
6734
+ "secondaryProxyAddress": "0xEa674bBC33AE708Bc9EB4ba348b04E4eB55b496b"
6554
6735
  },
6555
6736
  {
6556
6737
  "contractAddress": "0xe88C679E2D42963acDC76810d21daC2e6a8D7c29",
@@ -16251,6 +16432,74 @@ async function diffCode(before, after) {
16251
16432
  return changes;
16252
16433
  }
16253
16434
 
16435
+ // src/operations/indexLogs.ts
16436
+ function chunkCalls(from, to, maxSize) {
16437
+ const chunks = [];
16438
+ let current = from;
16439
+ while (current < to) {
16440
+ const end = Math.min(Number(current + maxSize), Number(to));
16441
+ chunks.push({ from: current, to: BigInt(end) });
16442
+ current = BigInt(end);
16443
+ }
16444
+ return chunks;
16445
+ }
16446
+ function genericIndexer(args) {
16447
+ return async function(latestBlock) {
16448
+ const topicCache = await args.getIndexerState();
16449
+ const groups = /* @__PURE__ */ new Map();
16450
+ for (const top of topicCache) {
16451
+ if (!groups.has(top.lastIndexedBlockNumber)) {
16452
+ groups.set(top.lastIndexedBlockNumber, []);
16453
+ }
16454
+ groups.get(top.lastIndexedBlockNumber).push(top);
16455
+ }
16456
+ const sortedGroups = Array.from(groups).sort(
16457
+ (a, b) => Number(a[0]) - Number(b[0])
16458
+ );
16459
+ const sequences = [];
16460
+ sortedGroups.forEach(([lastIndexed, grp], ix) => {
16461
+ const nextBlock = sortedGroups[ix + 1]?.[0] || latestBlock;
16462
+ const prevSequence = sequences.length > 0 ? sequences[sequences.length - 1] : { events: [], address: [] };
16463
+ const events = Array.from(
16464
+ /* @__PURE__ */ new Set([
16465
+ ...grp.map((g) => JSON.stringify(g.abi)),
16466
+ ...prevSequence.events.map((e) => JSON.stringify(e))
16467
+ ])
16468
+ ).map((e) => JSON.parse(e));
16469
+ const addresses = Array.from(
16470
+ /* @__PURE__ */ new Set([...grp.map((g) => g.address), ...prevSequence.address])
16471
+ );
16472
+ const chunks = args.chunkSize ? chunkCalls(lastIndexed, nextBlock, args.chunkSize) : [{ from: lastIndexed, to: nextBlock }];
16473
+ chunks.forEach(({ from, to }) => {
16474
+ sequences.push({
16475
+ fromBlock: from,
16476
+ toBlock: to,
16477
+ address: addresses,
16478
+ events
16479
+ });
16480
+ });
16481
+ });
16482
+ await Promise.all(
16483
+ sequences.map(async (sequence) => {
16484
+ const logs = await getLogsRecursive({
16485
+ client: args.client,
16486
+ events: sequence.events,
16487
+ address: sequence.address,
16488
+ fromBlock: sequence.fromBlock,
16489
+ toBlock: sequence.toBlock
16490
+ });
16491
+ await args.processLogs(logs);
16492
+ })
16493
+ );
16494
+ await args.updateIndexerState(
16495
+ topicCache.map((t) => ({
16496
+ ...t,
16497
+ lastIndexedBlockNumber: latestBlock
16498
+ }))
16499
+ );
16500
+ };
16501
+ }
16502
+
16254
16503
  // src/seatbelt/logs.ts
16255
16504
  import {
16256
16505
  decodeEventLog
@@ -16272,7 +16521,7 @@ function parseLogs({ logs, eventDb }) {
16272
16521
  }
16273
16522
 
16274
16523
  // src/seatbelt/selfdestruct.ts
16275
- import { getBytecode, getTransactionCount } from "viem/actions";
16524
+ import { getBytecode as getBytecode2, getTransactionCount } from "viem/actions";
16276
16525
  var STOP = 0;
16277
16526
  var JUMPDEST = 91;
16278
16527
  var PUSH1 = 96;
@@ -16300,7 +16549,7 @@ async function checkForSelfdestruct(client, addresses, trustedAddresses) {
16300
16549
  result.push({ address, state: 0 /* TRUSTED */ });
16301
16550
  continue;
16302
16551
  }
16303
- const code = await getBytecode(client, { address });
16552
+ const code = await getBytecode2(client, { address });
16304
16553
  if (!code) {
16305
16554
  const nonce = await getTransactionCount(client, { address });
16306
16555
  if (nonce > 0) result.push({ address, state: 1 /* EOA */ });
@@ -23833,6 +24082,1402 @@ var IERC20Metadata_ABI = [
23833
24082
  }
23834
24083
  ];
23835
24084
 
24085
+ // src/abis/IPoolConfigurator.ts
24086
+ var IPoolConfigurator_ABI = [
24087
+ {
24088
+ "type": "function",
24089
+ "name": "MAX_GRACE_PERIOD",
24090
+ "inputs": [],
24091
+ "outputs": [
24092
+ {
24093
+ "name": "",
24094
+ "type": "uint40",
24095
+ "internalType": "uint40"
24096
+ }
24097
+ ],
24098
+ "stateMutability": "view"
24099
+ },
24100
+ {
24101
+ "type": "function",
24102
+ "name": "configureReserveAsCollateral",
24103
+ "inputs": [
24104
+ {
24105
+ "name": "asset",
24106
+ "type": "address",
24107
+ "internalType": "address"
24108
+ },
24109
+ {
24110
+ "name": "ltv",
24111
+ "type": "uint256",
24112
+ "internalType": "uint256"
24113
+ },
24114
+ {
24115
+ "name": "liquidationThreshold",
24116
+ "type": "uint256",
24117
+ "internalType": "uint256"
24118
+ },
24119
+ {
24120
+ "name": "liquidationBonus",
24121
+ "type": "uint256",
24122
+ "internalType": "uint256"
24123
+ }
24124
+ ],
24125
+ "outputs": [],
24126
+ "stateMutability": "nonpayable"
24127
+ },
24128
+ {
24129
+ "type": "function",
24130
+ "name": "disableLiquidationGracePeriod",
24131
+ "inputs": [
24132
+ {
24133
+ "name": "asset",
24134
+ "type": "address",
24135
+ "internalType": "address"
24136
+ }
24137
+ ],
24138
+ "outputs": [],
24139
+ "stateMutability": "nonpayable"
24140
+ },
24141
+ {
24142
+ "type": "function",
24143
+ "name": "dropReserve",
24144
+ "inputs": [
24145
+ {
24146
+ "name": "asset",
24147
+ "type": "address",
24148
+ "internalType": "address"
24149
+ }
24150
+ ],
24151
+ "outputs": [],
24152
+ "stateMutability": "nonpayable"
24153
+ },
24154
+ {
24155
+ "type": "function",
24156
+ "name": "getConfiguratorLogic",
24157
+ "inputs": [],
24158
+ "outputs": [
24159
+ {
24160
+ "name": "",
24161
+ "type": "address",
24162
+ "internalType": "address"
24163
+ }
24164
+ ],
24165
+ "stateMutability": "view"
24166
+ },
24167
+ {
24168
+ "type": "function",
24169
+ "name": "getPendingLtv",
24170
+ "inputs": [
24171
+ {
24172
+ "name": "asset",
24173
+ "type": "address",
24174
+ "internalType": "address"
24175
+ }
24176
+ ],
24177
+ "outputs": [
24178
+ {
24179
+ "name": "",
24180
+ "type": "uint256",
24181
+ "internalType": "uint256"
24182
+ }
24183
+ ],
24184
+ "stateMutability": "view"
24185
+ },
24186
+ {
24187
+ "type": "function",
24188
+ "name": "initReserves",
24189
+ "inputs": [
24190
+ {
24191
+ "name": "input",
24192
+ "type": "tuple[]",
24193
+ "internalType": "struct ConfiguratorInputTypes.InitReserveInput[]",
24194
+ "components": [
24195
+ {
24196
+ "name": "aTokenImpl",
24197
+ "type": "address",
24198
+ "internalType": "address"
24199
+ },
24200
+ {
24201
+ "name": "variableDebtTokenImpl",
24202
+ "type": "address",
24203
+ "internalType": "address"
24204
+ },
24205
+ {
24206
+ "name": "useVirtualBalance",
24207
+ "type": "bool",
24208
+ "internalType": "bool"
24209
+ },
24210
+ {
24211
+ "name": "interestRateStrategyAddress",
24212
+ "type": "address",
24213
+ "internalType": "address"
24214
+ },
24215
+ {
24216
+ "name": "underlyingAsset",
24217
+ "type": "address",
24218
+ "internalType": "address"
24219
+ },
24220
+ {
24221
+ "name": "treasury",
24222
+ "type": "address",
24223
+ "internalType": "address"
24224
+ },
24225
+ {
24226
+ "name": "incentivesController",
24227
+ "type": "address",
24228
+ "internalType": "address"
24229
+ },
24230
+ {
24231
+ "name": "aTokenName",
24232
+ "type": "string",
24233
+ "internalType": "string"
24234
+ },
24235
+ {
24236
+ "name": "aTokenSymbol",
24237
+ "type": "string",
24238
+ "internalType": "string"
24239
+ },
24240
+ {
24241
+ "name": "variableDebtTokenName",
24242
+ "type": "string",
24243
+ "internalType": "string"
24244
+ },
24245
+ {
24246
+ "name": "variableDebtTokenSymbol",
24247
+ "type": "string",
24248
+ "internalType": "string"
24249
+ },
24250
+ {
24251
+ "name": "params",
24252
+ "type": "bytes",
24253
+ "internalType": "bytes"
24254
+ },
24255
+ {
24256
+ "name": "interestRateData",
24257
+ "type": "bytes",
24258
+ "internalType": "bytes"
24259
+ }
24260
+ ]
24261
+ }
24262
+ ],
24263
+ "outputs": [],
24264
+ "stateMutability": "nonpayable"
24265
+ },
24266
+ {
24267
+ "type": "function",
24268
+ "name": "setAssetBorrowableInEMode",
24269
+ "inputs": [
24270
+ {
24271
+ "name": "asset",
24272
+ "type": "address",
24273
+ "internalType": "address"
24274
+ },
24275
+ {
24276
+ "name": "categoryId",
24277
+ "type": "uint8",
24278
+ "internalType": "uint8"
24279
+ },
24280
+ {
24281
+ "name": "borrowable",
24282
+ "type": "bool",
24283
+ "internalType": "bool"
24284
+ }
24285
+ ],
24286
+ "outputs": [],
24287
+ "stateMutability": "nonpayable"
24288
+ },
24289
+ {
24290
+ "type": "function",
24291
+ "name": "setAssetCollateralInEMode",
24292
+ "inputs": [
24293
+ {
24294
+ "name": "asset",
24295
+ "type": "address",
24296
+ "internalType": "address"
24297
+ },
24298
+ {
24299
+ "name": "categoryId",
24300
+ "type": "uint8",
24301
+ "internalType": "uint8"
24302
+ },
24303
+ {
24304
+ "name": "collateral",
24305
+ "type": "bool",
24306
+ "internalType": "bool"
24307
+ }
24308
+ ],
24309
+ "outputs": [],
24310
+ "stateMutability": "nonpayable"
24311
+ },
24312
+ {
24313
+ "type": "function",
24314
+ "name": "setBorrowCap",
24315
+ "inputs": [
24316
+ {
24317
+ "name": "asset",
24318
+ "type": "address",
24319
+ "internalType": "address"
24320
+ },
24321
+ {
24322
+ "name": "newBorrowCap",
24323
+ "type": "uint256",
24324
+ "internalType": "uint256"
24325
+ }
24326
+ ],
24327
+ "outputs": [],
24328
+ "stateMutability": "nonpayable"
24329
+ },
24330
+ {
24331
+ "type": "function",
24332
+ "name": "setBorrowableInIsolation",
24333
+ "inputs": [
24334
+ {
24335
+ "name": "asset",
24336
+ "type": "address",
24337
+ "internalType": "address"
24338
+ },
24339
+ {
24340
+ "name": "borrowable",
24341
+ "type": "bool",
24342
+ "internalType": "bool"
24343
+ }
24344
+ ],
24345
+ "outputs": [],
24346
+ "stateMutability": "nonpayable"
24347
+ },
24348
+ {
24349
+ "type": "function",
24350
+ "name": "setDebtCeiling",
24351
+ "inputs": [
24352
+ {
24353
+ "name": "asset",
24354
+ "type": "address",
24355
+ "internalType": "address"
24356
+ },
24357
+ {
24358
+ "name": "newDebtCeiling",
24359
+ "type": "uint256",
24360
+ "internalType": "uint256"
24361
+ }
24362
+ ],
24363
+ "outputs": [],
24364
+ "stateMutability": "nonpayable"
24365
+ },
24366
+ {
24367
+ "type": "function",
24368
+ "name": "setEModeCategory",
24369
+ "inputs": [
24370
+ {
24371
+ "name": "categoryId",
24372
+ "type": "uint8",
24373
+ "internalType": "uint8"
24374
+ },
24375
+ {
24376
+ "name": "ltv",
24377
+ "type": "uint16",
24378
+ "internalType": "uint16"
24379
+ },
24380
+ {
24381
+ "name": "liquidationThreshold",
24382
+ "type": "uint16",
24383
+ "internalType": "uint16"
24384
+ },
24385
+ {
24386
+ "name": "liquidationBonus",
24387
+ "type": "uint16",
24388
+ "internalType": "uint16"
24389
+ },
24390
+ {
24391
+ "name": "label",
24392
+ "type": "string",
24393
+ "internalType": "string"
24394
+ }
24395
+ ],
24396
+ "outputs": [],
24397
+ "stateMutability": "nonpayable"
24398
+ },
24399
+ {
24400
+ "type": "function",
24401
+ "name": "setLiquidationProtocolFee",
24402
+ "inputs": [
24403
+ {
24404
+ "name": "asset",
24405
+ "type": "address",
24406
+ "internalType": "address"
24407
+ },
24408
+ {
24409
+ "name": "newFee",
24410
+ "type": "uint256",
24411
+ "internalType": "uint256"
24412
+ }
24413
+ ],
24414
+ "outputs": [],
24415
+ "stateMutability": "nonpayable"
24416
+ },
24417
+ {
24418
+ "type": "function",
24419
+ "name": "setPoolPause",
24420
+ "inputs": [
24421
+ {
24422
+ "name": "paused",
24423
+ "type": "bool",
24424
+ "internalType": "bool"
24425
+ },
24426
+ {
24427
+ "name": "gracePeriod",
24428
+ "type": "uint40",
24429
+ "internalType": "uint40"
24430
+ }
24431
+ ],
24432
+ "outputs": [],
24433
+ "stateMutability": "nonpayable"
24434
+ },
24435
+ {
24436
+ "type": "function",
24437
+ "name": "setPoolPause",
24438
+ "inputs": [
24439
+ {
24440
+ "name": "paused",
24441
+ "type": "bool",
24442
+ "internalType": "bool"
24443
+ }
24444
+ ],
24445
+ "outputs": [],
24446
+ "stateMutability": "nonpayable"
24447
+ },
24448
+ {
24449
+ "type": "function",
24450
+ "name": "setReserveActive",
24451
+ "inputs": [
24452
+ {
24453
+ "name": "asset",
24454
+ "type": "address",
24455
+ "internalType": "address"
24456
+ },
24457
+ {
24458
+ "name": "active",
24459
+ "type": "bool",
24460
+ "internalType": "bool"
24461
+ }
24462
+ ],
24463
+ "outputs": [],
24464
+ "stateMutability": "nonpayable"
24465
+ },
24466
+ {
24467
+ "type": "function",
24468
+ "name": "setReserveBorrowing",
24469
+ "inputs": [
24470
+ {
24471
+ "name": "asset",
24472
+ "type": "address",
24473
+ "internalType": "address"
24474
+ },
24475
+ {
24476
+ "name": "enabled",
24477
+ "type": "bool",
24478
+ "internalType": "bool"
24479
+ }
24480
+ ],
24481
+ "outputs": [],
24482
+ "stateMutability": "nonpayable"
24483
+ },
24484
+ {
24485
+ "type": "function",
24486
+ "name": "setReserveFactor",
24487
+ "inputs": [
24488
+ {
24489
+ "name": "asset",
24490
+ "type": "address",
24491
+ "internalType": "address"
24492
+ },
24493
+ {
24494
+ "name": "newReserveFactor",
24495
+ "type": "uint256",
24496
+ "internalType": "uint256"
24497
+ }
24498
+ ],
24499
+ "outputs": [],
24500
+ "stateMutability": "nonpayable"
24501
+ },
24502
+ {
24503
+ "type": "function",
24504
+ "name": "setReserveFlashLoaning",
24505
+ "inputs": [
24506
+ {
24507
+ "name": "asset",
24508
+ "type": "address",
24509
+ "internalType": "address"
24510
+ },
24511
+ {
24512
+ "name": "enabled",
24513
+ "type": "bool",
24514
+ "internalType": "bool"
24515
+ }
24516
+ ],
24517
+ "outputs": [],
24518
+ "stateMutability": "nonpayable"
24519
+ },
24520
+ {
24521
+ "type": "function",
24522
+ "name": "setReserveFreeze",
24523
+ "inputs": [
24524
+ {
24525
+ "name": "asset",
24526
+ "type": "address",
24527
+ "internalType": "address"
24528
+ },
24529
+ {
24530
+ "name": "freeze",
24531
+ "type": "bool",
24532
+ "internalType": "bool"
24533
+ }
24534
+ ],
24535
+ "outputs": [],
24536
+ "stateMutability": "nonpayable"
24537
+ },
24538
+ {
24539
+ "type": "function",
24540
+ "name": "setReserveInterestRateData",
24541
+ "inputs": [
24542
+ {
24543
+ "name": "asset",
24544
+ "type": "address",
24545
+ "internalType": "address"
24546
+ },
24547
+ {
24548
+ "name": "rateData",
24549
+ "type": "bytes",
24550
+ "internalType": "bytes"
24551
+ }
24552
+ ],
24553
+ "outputs": [],
24554
+ "stateMutability": "nonpayable"
24555
+ },
24556
+ {
24557
+ "type": "function",
24558
+ "name": "setReserveInterestRateStrategyAddress",
24559
+ "inputs": [
24560
+ {
24561
+ "name": "asset",
24562
+ "type": "address",
24563
+ "internalType": "address"
24564
+ },
24565
+ {
24566
+ "name": "newRateStrategyAddress",
24567
+ "type": "address",
24568
+ "internalType": "address"
24569
+ },
24570
+ {
24571
+ "name": "rateData",
24572
+ "type": "bytes",
24573
+ "internalType": "bytes"
24574
+ }
24575
+ ],
24576
+ "outputs": [],
24577
+ "stateMutability": "nonpayable"
24578
+ },
24579
+ {
24580
+ "type": "function",
24581
+ "name": "setReservePause",
24582
+ "inputs": [
24583
+ {
24584
+ "name": "asset",
24585
+ "type": "address",
24586
+ "internalType": "address"
24587
+ },
24588
+ {
24589
+ "name": "paused",
24590
+ "type": "bool",
24591
+ "internalType": "bool"
24592
+ }
24593
+ ],
24594
+ "outputs": [],
24595
+ "stateMutability": "nonpayable"
24596
+ },
24597
+ {
24598
+ "type": "function",
24599
+ "name": "setReservePause",
24600
+ "inputs": [
24601
+ {
24602
+ "name": "asset",
24603
+ "type": "address",
24604
+ "internalType": "address"
24605
+ },
24606
+ {
24607
+ "name": "paused",
24608
+ "type": "bool",
24609
+ "internalType": "bool"
24610
+ },
24611
+ {
24612
+ "name": "gracePeriod",
24613
+ "type": "uint40",
24614
+ "internalType": "uint40"
24615
+ }
24616
+ ],
24617
+ "outputs": [],
24618
+ "stateMutability": "nonpayable"
24619
+ },
24620
+ {
24621
+ "type": "function",
24622
+ "name": "setSiloedBorrowing",
24623
+ "inputs": [
24624
+ {
24625
+ "name": "asset",
24626
+ "type": "address",
24627
+ "internalType": "address"
24628
+ },
24629
+ {
24630
+ "name": "siloed",
24631
+ "type": "bool",
24632
+ "internalType": "bool"
24633
+ }
24634
+ ],
24635
+ "outputs": [],
24636
+ "stateMutability": "nonpayable"
24637
+ },
24638
+ {
24639
+ "type": "function",
24640
+ "name": "setSupplyCap",
24641
+ "inputs": [
24642
+ {
24643
+ "name": "asset",
24644
+ "type": "address",
24645
+ "internalType": "address"
24646
+ },
24647
+ {
24648
+ "name": "newSupplyCap",
24649
+ "type": "uint256",
24650
+ "internalType": "uint256"
24651
+ }
24652
+ ],
24653
+ "outputs": [],
24654
+ "stateMutability": "nonpayable"
24655
+ },
24656
+ {
24657
+ "type": "function",
24658
+ "name": "setUnbackedMintCap",
24659
+ "inputs": [
24660
+ {
24661
+ "name": "asset",
24662
+ "type": "address",
24663
+ "internalType": "address"
24664
+ },
24665
+ {
24666
+ "name": "newUnbackedMintCap",
24667
+ "type": "uint256",
24668
+ "internalType": "uint256"
24669
+ }
24670
+ ],
24671
+ "outputs": [],
24672
+ "stateMutability": "nonpayable"
24673
+ },
24674
+ {
24675
+ "type": "function",
24676
+ "name": "updateAToken",
24677
+ "inputs": [
24678
+ {
24679
+ "name": "input",
24680
+ "type": "tuple",
24681
+ "internalType": "struct ConfiguratorInputTypes.UpdateATokenInput",
24682
+ "components": [
24683
+ {
24684
+ "name": "asset",
24685
+ "type": "address",
24686
+ "internalType": "address"
24687
+ },
24688
+ {
24689
+ "name": "treasury",
24690
+ "type": "address",
24691
+ "internalType": "address"
24692
+ },
24693
+ {
24694
+ "name": "incentivesController",
24695
+ "type": "address",
24696
+ "internalType": "address"
24697
+ },
24698
+ {
24699
+ "name": "name",
24700
+ "type": "string",
24701
+ "internalType": "string"
24702
+ },
24703
+ {
24704
+ "name": "symbol",
24705
+ "type": "string",
24706
+ "internalType": "string"
24707
+ },
24708
+ {
24709
+ "name": "implementation",
24710
+ "type": "address",
24711
+ "internalType": "address"
24712
+ },
24713
+ {
24714
+ "name": "params",
24715
+ "type": "bytes",
24716
+ "internalType": "bytes"
24717
+ }
24718
+ ]
24719
+ }
24720
+ ],
24721
+ "outputs": [],
24722
+ "stateMutability": "nonpayable"
24723
+ },
24724
+ {
24725
+ "type": "function",
24726
+ "name": "updateBridgeProtocolFee",
24727
+ "inputs": [
24728
+ {
24729
+ "name": "newBridgeProtocolFee",
24730
+ "type": "uint256",
24731
+ "internalType": "uint256"
24732
+ }
24733
+ ],
24734
+ "outputs": [],
24735
+ "stateMutability": "nonpayable"
24736
+ },
24737
+ {
24738
+ "type": "function",
24739
+ "name": "updateFlashloanPremiumToProtocol",
24740
+ "inputs": [
24741
+ {
24742
+ "name": "newFlashloanPremiumToProtocol",
24743
+ "type": "uint128",
24744
+ "internalType": "uint128"
24745
+ }
24746
+ ],
24747
+ "outputs": [],
24748
+ "stateMutability": "nonpayable"
24749
+ },
24750
+ {
24751
+ "type": "function",
24752
+ "name": "updateFlashloanPremiumTotal",
24753
+ "inputs": [
24754
+ {
24755
+ "name": "newFlashloanPremiumTotal",
24756
+ "type": "uint128",
24757
+ "internalType": "uint128"
24758
+ }
24759
+ ],
24760
+ "outputs": [],
24761
+ "stateMutability": "nonpayable"
24762
+ },
24763
+ {
24764
+ "type": "function",
24765
+ "name": "updateVariableDebtToken",
24766
+ "inputs": [
24767
+ {
24768
+ "name": "input",
24769
+ "type": "tuple",
24770
+ "internalType": "struct ConfiguratorInputTypes.UpdateDebtTokenInput",
24771
+ "components": [
24772
+ {
24773
+ "name": "asset",
24774
+ "type": "address",
24775
+ "internalType": "address"
24776
+ },
24777
+ {
24778
+ "name": "incentivesController",
24779
+ "type": "address",
24780
+ "internalType": "address"
24781
+ },
24782
+ {
24783
+ "name": "name",
24784
+ "type": "string",
24785
+ "internalType": "string"
24786
+ },
24787
+ {
24788
+ "name": "symbol",
24789
+ "type": "string",
24790
+ "internalType": "string"
24791
+ },
24792
+ {
24793
+ "name": "implementation",
24794
+ "type": "address",
24795
+ "internalType": "address"
24796
+ },
24797
+ {
24798
+ "name": "params",
24799
+ "type": "bytes",
24800
+ "internalType": "bytes"
24801
+ }
24802
+ ]
24803
+ }
24804
+ ],
24805
+ "outputs": [],
24806
+ "stateMutability": "nonpayable"
24807
+ },
24808
+ {
24809
+ "type": "event",
24810
+ "name": "ATokenUpgraded",
24811
+ "inputs": [
24812
+ {
24813
+ "name": "asset",
24814
+ "type": "address",
24815
+ "indexed": true,
24816
+ "internalType": "address"
24817
+ },
24818
+ {
24819
+ "name": "proxy",
24820
+ "type": "address",
24821
+ "indexed": true,
24822
+ "internalType": "address"
24823
+ },
24824
+ {
24825
+ "name": "implementation",
24826
+ "type": "address",
24827
+ "indexed": true,
24828
+ "internalType": "address"
24829
+ }
24830
+ ],
24831
+ "anonymous": false
24832
+ },
24833
+ {
24834
+ "type": "event",
24835
+ "name": "AssetBorrowableInEModeChanged",
24836
+ "inputs": [
24837
+ {
24838
+ "name": "asset",
24839
+ "type": "address",
24840
+ "indexed": true,
24841
+ "internalType": "address"
24842
+ },
24843
+ {
24844
+ "name": "categoryId",
24845
+ "type": "uint8",
24846
+ "indexed": false,
24847
+ "internalType": "uint8"
24848
+ },
24849
+ {
24850
+ "name": "borrowable",
24851
+ "type": "bool",
24852
+ "indexed": false,
24853
+ "internalType": "bool"
24854
+ }
24855
+ ],
24856
+ "anonymous": false
24857
+ },
24858
+ {
24859
+ "type": "event",
24860
+ "name": "AssetCollateralInEModeChanged",
24861
+ "inputs": [
24862
+ {
24863
+ "name": "asset",
24864
+ "type": "address",
24865
+ "indexed": true,
24866
+ "internalType": "address"
24867
+ },
24868
+ {
24869
+ "name": "categoryId",
24870
+ "type": "uint8",
24871
+ "indexed": false,
24872
+ "internalType": "uint8"
24873
+ },
24874
+ {
24875
+ "name": "collateral",
24876
+ "type": "bool",
24877
+ "indexed": false,
24878
+ "internalType": "bool"
24879
+ }
24880
+ ],
24881
+ "anonymous": false
24882
+ },
24883
+ {
24884
+ "type": "event",
24885
+ "name": "BorrowCapChanged",
24886
+ "inputs": [
24887
+ {
24888
+ "name": "asset",
24889
+ "type": "address",
24890
+ "indexed": true,
24891
+ "internalType": "address"
24892
+ },
24893
+ {
24894
+ "name": "oldBorrowCap",
24895
+ "type": "uint256",
24896
+ "indexed": false,
24897
+ "internalType": "uint256"
24898
+ },
24899
+ {
24900
+ "name": "newBorrowCap",
24901
+ "type": "uint256",
24902
+ "indexed": false,
24903
+ "internalType": "uint256"
24904
+ }
24905
+ ],
24906
+ "anonymous": false
24907
+ },
24908
+ {
24909
+ "type": "event",
24910
+ "name": "BorrowableInIsolationChanged",
24911
+ "inputs": [
24912
+ {
24913
+ "name": "asset",
24914
+ "type": "address",
24915
+ "indexed": false,
24916
+ "internalType": "address"
24917
+ },
24918
+ {
24919
+ "name": "borrowable",
24920
+ "type": "bool",
24921
+ "indexed": false,
24922
+ "internalType": "bool"
24923
+ }
24924
+ ],
24925
+ "anonymous": false
24926
+ },
24927
+ {
24928
+ "type": "event",
24929
+ "name": "BridgeProtocolFeeUpdated",
24930
+ "inputs": [
24931
+ {
24932
+ "name": "oldBridgeProtocolFee",
24933
+ "type": "uint256",
24934
+ "indexed": false,
24935
+ "internalType": "uint256"
24936
+ },
24937
+ {
24938
+ "name": "newBridgeProtocolFee",
24939
+ "type": "uint256",
24940
+ "indexed": false,
24941
+ "internalType": "uint256"
24942
+ }
24943
+ ],
24944
+ "anonymous": false
24945
+ },
24946
+ {
24947
+ "type": "event",
24948
+ "name": "CollateralConfigurationChanged",
24949
+ "inputs": [
24950
+ {
24951
+ "name": "asset",
24952
+ "type": "address",
24953
+ "indexed": true,
24954
+ "internalType": "address"
24955
+ },
24956
+ {
24957
+ "name": "ltv",
24958
+ "type": "uint256",
24959
+ "indexed": false,
24960
+ "internalType": "uint256"
24961
+ },
24962
+ {
24963
+ "name": "liquidationThreshold",
24964
+ "type": "uint256",
24965
+ "indexed": false,
24966
+ "internalType": "uint256"
24967
+ },
24968
+ {
24969
+ "name": "liquidationBonus",
24970
+ "type": "uint256",
24971
+ "indexed": false,
24972
+ "internalType": "uint256"
24973
+ }
24974
+ ],
24975
+ "anonymous": false
24976
+ },
24977
+ {
24978
+ "type": "event",
24979
+ "name": "DebtCeilingChanged",
24980
+ "inputs": [
24981
+ {
24982
+ "name": "asset",
24983
+ "type": "address",
24984
+ "indexed": true,
24985
+ "internalType": "address"
24986
+ },
24987
+ {
24988
+ "name": "oldDebtCeiling",
24989
+ "type": "uint256",
24990
+ "indexed": false,
24991
+ "internalType": "uint256"
24992
+ },
24993
+ {
24994
+ "name": "newDebtCeiling",
24995
+ "type": "uint256",
24996
+ "indexed": false,
24997
+ "internalType": "uint256"
24998
+ }
24999
+ ],
25000
+ "anonymous": false
25001
+ },
25002
+ {
25003
+ "type": "event",
25004
+ "name": "EModeCategoryAdded",
25005
+ "inputs": [
25006
+ {
25007
+ "name": "categoryId",
25008
+ "type": "uint8",
25009
+ "indexed": true,
25010
+ "internalType": "uint8"
25011
+ },
25012
+ {
25013
+ "name": "ltv",
25014
+ "type": "uint256",
25015
+ "indexed": false,
25016
+ "internalType": "uint256"
25017
+ },
25018
+ {
25019
+ "name": "liquidationThreshold",
25020
+ "type": "uint256",
25021
+ "indexed": false,
25022
+ "internalType": "uint256"
25023
+ },
25024
+ {
25025
+ "name": "liquidationBonus",
25026
+ "type": "uint256",
25027
+ "indexed": false,
25028
+ "internalType": "uint256"
25029
+ },
25030
+ {
25031
+ "name": "oracle",
25032
+ "type": "address",
25033
+ "indexed": false,
25034
+ "internalType": "address"
25035
+ },
25036
+ {
25037
+ "name": "label",
25038
+ "type": "string",
25039
+ "indexed": false,
25040
+ "internalType": "string"
25041
+ }
25042
+ ],
25043
+ "anonymous": false
25044
+ },
25045
+ {
25046
+ "type": "event",
25047
+ "name": "FlashloanPremiumToProtocolUpdated",
25048
+ "inputs": [
25049
+ {
25050
+ "name": "oldFlashloanPremiumToProtocol",
25051
+ "type": "uint128",
25052
+ "indexed": false,
25053
+ "internalType": "uint128"
25054
+ },
25055
+ {
25056
+ "name": "newFlashloanPremiumToProtocol",
25057
+ "type": "uint128",
25058
+ "indexed": false,
25059
+ "internalType": "uint128"
25060
+ }
25061
+ ],
25062
+ "anonymous": false
25063
+ },
25064
+ {
25065
+ "type": "event",
25066
+ "name": "FlashloanPremiumTotalUpdated",
25067
+ "inputs": [
25068
+ {
25069
+ "name": "oldFlashloanPremiumTotal",
25070
+ "type": "uint128",
25071
+ "indexed": false,
25072
+ "internalType": "uint128"
25073
+ },
25074
+ {
25075
+ "name": "newFlashloanPremiumTotal",
25076
+ "type": "uint128",
25077
+ "indexed": false,
25078
+ "internalType": "uint128"
25079
+ }
25080
+ ],
25081
+ "anonymous": false
25082
+ },
25083
+ {
25084
+ "type": "event",
25085
+ "name": "LiquidationGracePeriodChanged",
25086
+ "inputs": [
25087
+ {
25088
+ "name": "asset",
25089
+ "type": "address",
25090
+ "indexed": true,
25091
+ "internalType": "address"
25092
+ },
25093
+ {
25094
+ "name": "gracePeriodUntil",
25095
+ "type": "uint40",
25096
+ "indexed": false,
25097
+ "internalType": "uint40"
25098
+ }
25099
+ ],
25100
+ "anonymous": false
25101
+ },
25102
+ {
25103
+ "type": "event",
25104
+ "name": "LiquidationGracePeriodDisabled",
25105
+ "inputs": [
25106
+ {
25107
+ "name": "asset",
25108
+ "type": "address",
25109
+ "indexed": true,
25110
+ "internalType": "address"
25111
+ }
25112
+ ],
25113
+ "anonymous": false
25114
+ },
25115
+ {
25116
+ "type": "event",
25117
+ "name": "LiquidationProtocolFeeChanged",
25118
+ "inputs": [
25119
+ {
25120
+ "name": "asset",
25121
+ "type": "address",
25122
+ "indexed": true,
25123
+ "internalType": "address"
25124
+ },
25125
+ {
25126
+ "name": "oldFee",
25127
+ "type": "uint256",
25128
+ "indexed": false,
25129
+ "internalType": "uint256"
25130
+ },
25131
+ {
25132
+ "name": "newFee",
25133
+ "type": "uint256",
25134
+ "indexed": false,
25135
+ "internalType": "uint256"
25136
+ }
25137
+ ],
25138
+ "anonymous": false
25139
+ },
25140
+ {
25141
+ "type": "event",
25142
+ "name": "PendingLtvChanged",
25143
+ "inputs": [
25144
+ {
25145
+ "name": "asset",
25146
+ "type": "address",
25147
+ "indexed": true,
25148
+ "internalType": "address"
25149
+ },
25150
+ {
25151
+ "name": "ltv",
25152
+ "type": "uint256",
25153
+ "indexed": false,
25154
+ "internalType": "uint256"
25155
+ }
25156
+ ],
25157
+ "anonymous": false
25158
+ },
25159
+ {
25160
+ "type": "event",
25161
+ "name": "ReserveActive",
25162
+ "inputs": [
25163
+ {
25164
+ "name": "asset",
25165
+ "type": "address",
25166
+ "indexed": true,
25167
+ "internalType": "address"
25168
+ },
25169
+ {
25170
+ "name": "active",
25171
+ "type": "bool",
25172
+ "indexed": false,
25173
+ "internalType": "bool"
25174
+ }
25175
+ ],
25176
+ "anonymous": false
25177
+ },
25178
+ {
25179
+ "type": "event",
25180
+ "name": "ReserveBorrowing",
25181
+ "inputs": [
25182
+ {
25183
+ "name": "asset",
25184
+ "type": "address",
25185
+ "indexed": true,
25186
+ "internalType": "address"
25187
+ },
25188
+ {
25189
+ "name": "enabled",
25190
+ "type": "bool",
25191
+ "indexed": false,
25192
+ "internalType": "bool"
25193
+ }
25194
+ ],
25195
+ "anonymous": false
25196
+ },
25197
+ {
25198
+ "type": "event",
25199
+ "name": "ReserveDropped",
25200
+ "inputs": [
25201
+ {
25202
+ "name": "asset",
25203
+ "type": "address",
25204
+ "indexed": true,
25205
+ "internalType": "address"
25206
+ }
25207
+ ],
25208
+ "anonymous": false
25209
+ },
25210
+ {
25211
+ "type": "event",
25212
+ "name": "ReserveFactorChanged",
25213
+ "inputs": [
25214
+ {
25215
+ "name": "asset",
25216
+ "type": "address",
25217
+ "indexed": true,
25218
+ "internalType": "address"
25219
+ },
25220
+ {
25221
+ "name": "oldReserveFactor",
25222
+ "type": "uint256",
25223
+ "indexed": false,
25224
+ "internalType": "uint256"
25225
+ },
25226
+ {
25227
+ "name": "newReserveFactor",
25228
+ "type": "uint256",
25229
+ "indexed": false,
25230
+ "internalType": "uint256"
25231
+ }
25232
+ ],
25233
+ "anonymous": false
25234
+ },
25235
+ {
25236
+ "type": "event",
25237
+ "name": "ReserveFlashLoaning",
25238
+ "inputs": [
25239
+ {
25240
+ "name": "asset",
25241
+ "type": "address",
25242
+ "indexed": true,
25243
+ "internalType": "address"
25244
+ },
25245
+ {
25246
+ "name": "enabled",
25247
+ "type": "bool",
25248
+ "indexed": false,
25249
+ "internalType": "bool"
25250
+ }
25251
+ ],
25252
+ "anonymous": false
25253
+ },
25254
+ {
25255
+ "type": "event",
25256
+ "name": "ReserveFrozen",
25257
+ "inputs": [
25258
+ {
25259
+ "name": "asset",
25260
+ "type": "address",
25261
+ "indexed": true,
25262
+ "internalType": "address"
25263
+ },
25264
+ {
25265
+ "name": "frozen",
25266
+ "type": "bool",
25267
+ "indexed": false,
25268
+ "internalType": "bool"
25269
+ }
25270
+ ],
25271
+ "anonymous": false
25272
+ },
25273
+ {
25274
+ "type": "event",
25275
+ "name": "ReserveInitialized",
25276
+ "inputs": [
25277
+ {
25278
+ "name": "asset",
25279
+ "type": "address",
25280
+ "indexed": true,
25281
+ "internalType": "address"
25282
+ },
25283
+ {
25284
+ "name": "aToken",
25285
+ "type": "address",
25286
+ "indexed": true,
25287
+ "internalType": "address"
25288
+ },
25289
+ {
25290
+ "name": "stableDebtToken",
25291
+ "type": "address",
25292
+ "indexed": false,
25293
+ "internalType": "address"
25294
+ },
25295
+ {
25296
+ "name": "variableDebtToken",
25297
+ "type": "address",
25298
+ "indexed": false,
25299
+ "internalType": "address"
25300
+ },
25301
+ {
25302
+ "name": "interestRateStrategyAddress",
25303
+ "type": "address",
25304
+ "indexed": false,
25305
+ "internalType": "address"
25306
+ }
25307
+ ],
25308
+ "anonymous": false
25309
+ },
25310
+ {
25311
+ "type": "event",
25312
+ "name": "ReserveInterestRateDataChanged",
25313
+ "inputs": [
25314
+ {
25315
+ "name": "asset",
25316
+ "type": "address",
25317
+ "indexed": true,
25318
+ "internalType": "address"
25319
+ },
25320
+ {
25321
+ "name": "strategy",
25322
+ "type": "address",
25323
+ "indexed": true,
25324
+ "internalType": "address"
25325
+ },
25326
+ {
25327
+ "name": "data",
25328
+ "type": "bytes",
25329
+ "indexed": false,
25330
+ "internalType": "bytes"
25331
+ }
25332
+ ],
25333
+ "anonymous": false
25334
+ },
25335
+ {
25336
+ "type": "event",
25337
+ "name": "ReserveInterestRateStrategyChanged",
25338
+ "inputs": [
25339
+ {
25340
+ "name": "asset",
25341
+ "type": "address",
25342
+ "indexed": true,
25343
+ "internalType": "address"
25344
+ },
25345
+ {
25346
+ "name": "oldStrategy",
25347
+ "type": "address",
25348
+ "indexed": false,
25349
+ "internalType": "address"
25350
+ },
25351
+ {
25352
+ "name": "newStrategy",
25353
+ "type": "address",
25354
+ "indexed": false,
25355
+ "internalType": "address"
25356
+ }
25357
+ ],
25358
+ "anonymous": false
25359
+ },
25360
+ {
25361
+ "type": "event",
25362
+ "name": "ReservePaused",
25363
+ "inputs": [
25364
+ {
25365
+ "name": "asset",
25366
+ "type": "address",
25367
+ "indexed": true,
25368
+ "internalType": "address"
25369
+ },
25370
+ {
25371
+ "name": "paused",
25372
+ "type": "bool",
25373
+ "indexed": false,
25374
+ "internalType": "bool"
25375
+ }
25376
+ ],
25377
+ "anonymous": false
25378
+ },
25379
+ {
25380
+ "type": "event",
25381
+ "name": "SiloedBorrowingChanged",
25382
+ "inputs": [
25383
+ {
25384
+ "name": "asset",
25385
+ "type": "address",
25386
+ "indexed": true,
25387
+ "internalType": "address"
25388
+ },
25389
+ {
25390
+ "name": "oldState",
25391
+ "type": "bool",
25392
+ "indexed": false,
25393
+ "internalType": "bool"
25394
+ },
25395
+ {
25396
+ "name": "newState",
25397
+ "type": "bool",
25398
+ "indexed": false,
25399
+ "internalType": "bool"
25400
+ }
25401
+ ],
25402
+ "anonymous": false
25403
+ },
25404
+ {
25405
+ "type": "event",
25406
+ "name": "SupplyCapChanged",
25407
+ "inputs": [
25408
+ {
25409
+ "name": "asset",
25410
+ "type": "address",
25411
+ "indexed": true,
25412
+ "internalType": "address"
25413
+ },
25414
+ {
25415
+ "name": "oldSupplyCap",
25416
+ "type": "uint256",
25417
+ "indexed": false,
25418
+ "internalType": "uint256"
25419
+ },
25420
+ {
25421
+ "name": "newSupplyCap",
25422
+ "type": "uint256",
25423
+ "indexed": false,
25424
+ "internalType": "uint256"
25425
+ }
25426
+ ],
25427
+ "anonymous": false
25428
+ },
25429
+ {
25430
+ "type": "event",
25431
+ "name": "UnbackedMintCapChanged",
25432
+ "inputs": [
25433
+ {
25434
+ "name": "asset",
25435
+ "type": "address",
25436
+ "indexed": true,
25437
+ "internalType": "address"
25438
+ },
25439
+ {
25440
+ "name": "oldUnbackedMintCap",
25441
+ "type": "uint256",
25442
+ "indexed": false,
25443
+ "internalType": "uint256"
25444
+ },
25445
+ {
25446
+ "name": "newUnbackedMintCap",
25447
+ "type": "uint256",
25448
+ "indexed": false,
25449
+ "internalType": "uint256"
25450
+ }
25451
+ ],
25452
+ "anonymous": false
25453
+ },
25454
+ {
25455
+ "type": "event",
25456
+ "name": "VariableDebtTokenUpgraded",
25457
+ "inputs": [
25458
+ {
25459
+ "name": "asset",
25460
+ "type": "address",
25461
+ "indexed": true,
25462
+ "internalType": "address"
25463
+ },
25464
+ {
25465
+ "name": "proxy",
25466
+ "type": "address",
25467
+ "indexed": true,
25468
+ "internalType": "address"
25469
+ },
25470
+ {
25471
+ "name": "implementation",
25472
+ "type": "address",
25473
+ "indexed": true,
25474
+ "internalType": "address"
25475
+ }
25476
+ ],
25477
+ "anonymous": false
25478
+ }
25479
+ ];
25480
+
23836
25481
  // src/abis/IERC20.ts
23837
25482
  var IERC20_ABI = [
23838
25483
  {
@@ -24195,6 +25840,7 @@ export {
24195
25840
  IERC20_ABI,
24196
25841
  IEmissionManager_ABI,
24197
25842
  IPoolAddressesProvider_ABI,
25843
+ IPoolConfigurator_ABI,
24198
25844
  IPool_ABI,
24199
25845
  IReserveInterestRateStrategy_ABI,
24200
25846
  IRewardsController_ABI,
@@ -24212,9 +25858,11 @@ export {
24212
25858
  aaveAddressesProvider_IncentivesControllerSlot,
24213
25859
  alchemyNetworkMap,
24214
25860
  alchemySupportedChainIds,
25861
+ assetToBase,
24215
25862
  bitmapToIndexes,
24216
25863
  calculateAvailableBorrowsMarketReferenceCurrency,
24217
25864
  calculateCompoundedInterest,
25865
+ calculateHealthFactor,
24218
25866
  calculateHealthFactorFromBalances,
24219
25867
  calculateLinearInterest,
24220
25868
  chainlinkFeeds,
@@ -24229,9 +25877,11 @@ export {
24229
25877
  fetchPoolAddresses,
24230
25878
  flashbotsClientExtension,
24231
25879
  flashbotsOnFetchRequest,
25880
+ genericIndexer,
24232
25881
  getAlchemyRPC,
24233
25882
  getBits,
24234
25883
  getClient,
25884
+ getContractDeploymentBlock,
24235
25885
  getCurrentDebtBalance,
24236
25886
  getCurrentLiquidityBalance,
24237
25887
  getExplicitRPC,
@@ -24258,6 +25908,7 @@ export {
24258
25908
  onMevHandler,
24259
25909
  parseEtherscanStyleSourceCode,
24260
25910
  parseLogs,
25911
+ priceUpdateDecoder,
24261
25912
  publicRPCs,
24262
25913
  quicknodeNetworkMap,
24263
25914
  rayDiv,