@bgd-labs/toolbox 0.0.54 → 0.0.55

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/node.d.mts CHANGED
@@ -1,8 +1,13 @@
1
1
  import { StandardJsonInput } from './index.mjs';
2
- export { AggregatorInterface_ABI, Aip, AssetInfo, BlockscoutStyleSourceCode, BundleParams, ChainId, ChainList, ContractObject, EVENT_DB, EtherscanStyleSourceCode, ExplorerConfig, GenericIndexerArgs, GovernanceContract, HALF_RAY, HALF_WAD, HUMAN_READABLE_PAYLOAD_STATE, HUMAN_READABLE_PROPOSAL_STATE, IAToken_ABI, IAaveOracle_ABI, IAaveV3ConfigEngine_ABI, IAccessControl_ABI, IAuthorizedForwarder_ABI, ICollector_ABI, IDefaultInterestRateStrategyV2_ABI, IDualAggregator_ABI, IERC1967_ABI, IERC20Metadata_ABI, IERC20_ABI, IEmissionManager_ABI, IPoolAddressesProvider_ABI, IPoolConfigurator_ABI, IPool_ABI, IReserveInterestRateStrategy_ABI, IRewardsController_ABI, IStataTokenFactory_ABI, IStataTokenV2_ABI, IUmbrellaStakeToken_ABI, IUmbrella_ABI, IWithGuardian_ABI, IWrappedTokenGatewayV3_ABI, IncentivizedERC20_ABI, IndexerTopicState, Input, LTV_PRECISION, Ownable_ABI, PausableUpgradeable_ABI, Payload, PayloadState, PayloadsControllerContract, Proposal, ProposalState, ProxyAdmin_ABI, RAY, ReserveConfiguration, SECONDS_PER_YEAR, SelfdestructCheckState, SoltypeElement, SoltypeType, StateDiff, StateObject, SupportedChainIds, TenderlyLog, TenderlyLogRaw, TenderlySimRequest, TenderlySimulationResponse, TenderlySimulationResponseObject, TenderlyStackTrace, Tenderly_createVnetParamsResponse, Trace, TransactionInfo, Umbrella_IRewardsController_ABI, Umbrella_IRewardsDistributor_ABI, VerificationStatus, WAD, WAD_RAY_RATIO, aaveAddressesProvider_IncentivesControllerSlot, addAssetPrice, addAssetSymbol, alchemyNetworkMap, alchemySupportedChainIds, assetIndexesToAsset, assetToBase, bitmapToIndexes, blockscoutExplorers, calculateAvailableBorrowsMarketReferenceCurrency, calculateCompoundedInterest, calculateHealthFactor, calculateHealthFactorFromBalances, calculateLinearInterest, chainlinkFeeds, checkForSelfdestruct, decodeReserveConfiguration, decodeReserveConfigurationV2, decodeUserConfiguration, diffCode, enhanceLogs, enhanceStateDiff, erc1967_AdminSlot, erc1967_ImplementationSlot, etherscanExplorers, fetchImmutablePoolAddresses, fetchMutablePoolAddresses, fetchPoolAddresses, findAsset, flashbotsClientExtension, flashbotsOnFetchRequest, formatNumberString, genericIndexer, getAlchemyRPC, getBits, getClient, getContractDeploymentBlock, getCurrentDebtBalance, getCurrentLiquidityBalance, getExplicitRPC, getExplorer, getGovernance, getHyperRPC, getImplementationSlot, getLogsRecursive, getMarketReferenceCurrencyAndUsdBalance, getMdContractName, getNetworkEnv, getNonFinalizedPayloads, getNonFinalizedProposals, getNormalizedDebt, getNormalizedIncome, getObjectDiff, getPayloadStorageOverrides, getPayloadsController, getPublicRpc, getQuicknodeRpc, getRPCUrl, getReserveConfigurations, getReserveTokens, getSourceCode, getTenderlyRpc, getVerificationStatus, hyperRPCSupportedNetworks, isPayloadFinal, isProposalFinal, makePayloadExecutableOnTestClient, makeProposalExecutableOnTestClient, onMevHandler, parseBlockscoutStyleSourceCode, parseEtherscanStyleSourceCode, parseLogs, prettifyNumber, priceUpdateDecoder, publicRPCs, quicknodeNetworkMap, rayDiv, rayMul, rayToWad, renderMarkdownStateDiffReport, renderTenderlyReport, routescanExplorers, selfDestructStatusToString, setBits, tenderlyExplorerMap, tenderlyNetworkMap, tenderly_createVnet, tenderly_deleteVnet, tenderly_getVnet, tenderly_logsToAbiLogs, tenderly_pingExplorer, tenderly_sim, tenderly_simVnet, toAddressLink, toBinaryString, toTxLink, transformTenderlyStateDiff, validateAip, verificationStatusToString, wadDiv, wadToRay } from './index.mjs';
2
+ export { AggregatorInterface_ABI, Aip, AssetInfo, BlockscoutStyleSourceCode, BundleParams, ChainId, ChainList, ContractObject, EVENT_DB, EtherscanStyleSourceCode, ExplorerConfig, GenericIndexerArgs, GovernanceContract, HALF_RAY, HALF_WAD, HUMAN_READABLE_PAYLOAD_STATE, HUMAN_READABLE_PROPOSAL_STATE, IAToken_ABI, IAaveOracle_ABI, IAaveV3ConfigEngine_ABI, IAccessControl_ABI, IAuthorizedForwarder_ABI, ICollector_ABI, IDefaultInterestRateStrategyV2_ABI, IDualAggregator_ABI, IERC1967_ABI, IERC20Metadata_ABI, IERC20_ABI, IEmissionManager_ABI, IPoolAddressesProvider_ABI, IPoolConfigurator_ABI, IPool_ABI, IReserveInterestRateStrategy_ABI, IRewardsController_ABI, IStataTokenFactory_ABI, IStataTokenV2_ABI, IUmbrellaStakeToken_ABI, IUmbrella_ABI, IWithGuardian_ABI, IWrappedTokenGatewayV3_ABI, IncentivizedERC20_ABI, IndexerTopicState, Input, LTV_PRECISION, Ownable_ABI, PausableUpgradeable_ABI, Payload, PayloadState, PayloadsControllerContract, Proposal, ProposalState, ProxyAdmin_ABI, RAY, ReserveConfiguration, SECONDS_PER_YEAR, SelfdestructCheckState, SoltypeElement, SoltypeType, StateDiff, StateObject, SupportedChainIds, TenderlyLog, TenderlyLogRaw, TenderlySimRequest, TenderlySimulationResponse, TenderlySimulationResponseObject, TenderlyStackTrace, Tenderly_createVnetParamsResponse, Trace, TransactionInfo, Umbrella_IRewardsController_ABI, Umbrella_IRewardsDistributor_ABI, VerificationStatus, WAD, WAD_RAY_RATIO, aaveAddressesProvider_IncentivesControllerSlot, addAssetPrice, addAssetSymbol, alchemyNetworkMap, alchemySupportedChainIds, assetIndexesToAsset, assetToBase, bitmapToIndexes, blockscoutExplorers, bytes32ToAddress, calculateAvailableBorrowsMarketReferenceCurrency, calculateCompoundedInterest, calculateHealthFactor, calculateHealthFactorFromBalances, calculateLinearInterest, chainlinkFeeds, checkForSelfdestruct, decodeReserveConfiguration, decodeReserveConfigurationV2, decodeUserConfiguration, diffCode, enhanceLogs, enhanceStateDiff, erc1967_AdminSlot, erc1967_ImplementationSlot, etherscanExplorers, fetchImmutablePoolAddresses, fetchMutablePoolAddresses, fetchPoolAddresses, findAsset, flashbotsClientExtension, flashbotsOnFetchRequest, formatNumberString, genericIndexer, getAlchemyRPC, getBits, getBytesValue, getClient, getCompleteReserveConfiguration, getContractDeploymentBlock, getCurrentDebtBalance, getCurrentLiquidityBalance, getDynamicArraySlot, getExplicitRPC, getExplorer, getGovernance, getHyperRPC, getImplementationSlot, getLogsRecursive, getMarketReferenceCurrencyAndUsdBalance, getMdContractName, getNetworkEnv, getNonFinalizedPayloads, getNonFinalizedProposals, getNormalizedDebt, getNormalizedIncome, getObjectDiff, getPayloadStorageOverrides, getPayloadsController, getPublicRpc, getQuicknodeRpc, getRPCUrl, getReserveConfigurations, getReserveTokens, getSolidityStorageSlotAddress, getSolidityStorageSlotBytes, getSolidityStorageSlotUint, getSourceCode, getTenderlyRpc, getVerificationStatus, hyperRPCSupportedNetworks, isPayloadFinal, isProposalFinal, makePayloadExecutableOnTestClient, makeProposalExecutableOnTestClient, onMevHandler, parseBlockscoutStyleSourceCode, parseEtherscanStyleSourceCode, parseLogs, prettifyNumber, priceUpdateDecoder, publicRPCs, quicknodeNetworkMap, rayDiv, rayMul, rayToWad, renderMarkdownStateDiffReport, renderTenderlyReport, routescanExplorers, selfDestructStatusToString, setBits, tenderlyExplorerMap, tenderlyNetworkMap, tenderly_createVnet, tenderly_deleteVnet, tenderly_getVnet, tenderly_logsToAbiLogs, tenderly_pingExplorer, tenderly_sim, tenderly_simVnet, toAddressLink, toBinaryString, toTxLink, transformTenderlyStateDiff, validateAip, verificationStatusToString, wadDiv, wadToRay } from './index.mjs';
3
3
  import 'viem';
4
4
  import '@bgd-labs/aave-address-book/abis';
5
5
  import 'arktype/internal/methods/object.ts';
6
+ import '../types/misc.js';
7
+ import '../../types/misc.js';
8
+ import '../../types/utils.js';
9
+ import '../../utils/siwe/validateSiweMessage.js';
10
+ import '../public/verifyHash.js';
6
11
  import 'viem/chains';
7
12
  import 'eventsource';
8
13
 
package/dist/node.d.ts CHANGED
@@ -1,8 +1,13 @@
1
1
  import { StandardJsonInput } from './index.js';
2
- export { AggregatorInterface_ABI, Aip, AssetInfo, BlockscoutStyleSourceCode, BundleParams, ChainId, ChainList, ContractObject, EVENT_DB, EtherscanStyleSourceCode, ExplorerConfig, GenericIndexerArgs, GovernanceContract, HALF_RAY, HALF_WAD, HUMAN_READABLE_PAYLOAD_STATE, HUMAN_READABLE_PROPOSAL_STATE, IAToken_ABI, IAaveOracle_ABI, IAaveV3ConfigEngine_ABI, IAccessControl_ABI, IAuthorizedForwarder_ABI, ICollector_ABI, IDefaultInterestRateStrategyV2_ABI, IDualAggregator_ABI, IERC1967_ABI, IERC20Metadata_ABI, IERC20_ABI, IEmissionManager_ABI, IPoolAddressesProvider_ABI, IPoolConfigurator_ABI, IPool_ABI, IReserveInterestRateStrategy_ABI, IRewardsController_ABI, IStataTokenFactory_ABI, IStataTokenV2_ABI, IUmbrellaStakeToken_ABI, IUmbrella_ABI, IWithGuardian_ABI, IWrappedTokenGatewayV3_ABI, IncentivizedERC20_ABI, IndexerTopicState, Input, LTV_PRECISION, Ownable_ABI, PausableUpgradeable_ABI, Payload, PayloadState, PayloadsControllerContract, Proposal, ProposalState, ProxyAdmin_ABI, RAY, ReserveConfiguration, SECONDS_PER_YEAR, SelfdestructCheckState, SoltypeElement, SoltypeType, StateDiff, StateObject, SupportedChainIds, TenderlyLog, TenderlyLogRaw, TenderlySimRequest, TenderlySimulationResponse, TenderlySimulationResponseObject, TenderlyStackTrace, Tenderly_createVnetParamsResponse, Trace, TransactionInfo, Umbrella_IRewardsController_ABI, Umbrella_IRewardsDistributor_ABI, VerificationStatus, WAD, WAD_RAY_RATIO, aaveAddressesProvider_IncentivesControllerSlot, addAssetPrice, addAssetSymbol, alchemyNetworkMap, alchemySupportedChainIds, assetIndexesToAsset, assetToBase, bitmapToIndexes, blockscoutExplorers, calculateAvailableBorrowsMarketReferenceCurrency, calculateCompoundedInterest, calculateHealthFactor, calculateHealthFactorFromBalances, calculateLinearInterest, chainlinkFeeds, checkForSelfdestruct, decodeReserveConfiguration, decodeReserveConfigurationV2, decodeUserConfiguration, diffCode, enhanceLogs, enhanceStateDiff, erc1967_AdminSlot, erc1967_ImplementationSlot, etherscanExplorers, fetchImmutablePoolAddresses, fetchMutablePoolAddresses, fetchPoolAddresses, findAsset, flashbotsClientExtension, flashbotsOnFetchRequest, formatNumberString, genericIndexer, getAlchemyRPC, getBits, getClient, getContractDeploymentBlock, getCurrentDebtBalance, getCurrentLiquidityBalance, getExplicitRPC, getExplorer, getGovernance, getHyperRPC, getImplementationSlot, getLogsRecursive, getMarketReferenceCurrencyAndUsdBalance, getMdContractName, getNetworkEnv, getNonFinalizedPayloads, getNonFinalizedProposals, getNormalizedDebt, getNormalizedIncome, getObjectDiff, getPayloadStorageOverrides, getPayloadsController, getPublicRpc, getQuicknodeRpc, getRPCUrl, getReserveConfigurations, getReserveTokens, getSourceCode, getTenderlyRpc, getVerificationStatus, hyperRPCSupportedNetworks, isPayloadFinal, isProposalFinal, makePayloadExecutableOnTestClient, makeProposalExecutableOnTestClient, onMevHandler, parseBlockscoutStyleSourceCode, parseEtherscanStyleSourceCode, parseLogs, prettifyNumber, priceUpdateDecoder, publicRPCs, quicknodeNetworkMap, rayDiv, rayMul, rayToWad, renderMarkdownStateDiffReport, renderTenderlyReport, routescanExplorers, selfDestructStatusToString, setBits, tenderlyExplorerMap, tenderlyNetworkMap, tenderly_createVnet, tenderly_deleteVnet, tenderly_getVnet, tenderly_logsToAbiLogs, tenderly_pingExplorer, tenderly_sim, tenderly_simVnet, toAddressLink, toBinaryString, toTxLink, transformTenderlyStateDiff, validateAip, verificationStatusToString, wadDiv, wadToRay } from './index.js';
2
+ export { AggregatorInterface_ABI, Aip, AssetInfo, BlockscoutStyleSourceCode, BundleParams, ChainId, ChainList, ContractObject, EVENT_DB, EtherscanStyleSourceCode, ExplorerConfig, GenericIndexerArgs, GovernanceContract, HALF_RAY, HALF_WAD, HUMAN_READABLE_PAYLOAD_STATE, HUMAN_READABLE_PROPOSAL_STATE, IAToken_ABI, IAaveOracle_ABI, IAaveV3ConfigEngine_ABI, IAccessControl_ABI, IAuthorizedForwarder_ABI, ICollector_ABI, IDefaultInterestRateStrategyV2_ABI, IDualAggregator_ABI, IERC1967_ABI, IERC20Metadata_ABI, IERC20_ABI, IEmissionManager_ABI, IPoolAddressesProvider_ABI, IPoolConfigurator_ABI, IPool_ABI, IReserveInterestRateStrategy_ABI, IRewardsController_ABI, IStataTokenFactory_ABI, IStataTokenV2_ABI, IUmbrellaStakeToken_ABI, IUmbrella_ABI, IWithGuardian_ABI, IWrappedTokenGatewayV3_ABI, IncentivizedERC20_ABI, IndexerTopicState, Input, LTV_PRECISION, Ownable_ABI, PausableUpgradeable_ABI, Payload, PayloadState, PayloadsControllerContract, Proposal, ProposalState, ProxyAdmin_ABI, RAY, ReserveConfiguration, SECONDS_PER_YEAR, SelfdestructCheckState, SoltypeElement, SoltypeType, StateDiff, StateObject, SupportedChainIds, TenderlyLog, TenderlyLogRaw, TenderlySimRequest, TenderlySimulationResponse, TenderlySimulationResponseObject, TenderlyStackTrace, Tenderly_createVnetParamsResponse, Trace, TransactionInfo, Umbrella_IRewardsController_ABI, Umbrella_IRewardsDistributor_ABI, VerificationStatus, WAD, WAD_RAY_RATIO, aaveAddressesProvider_IncentivesControllerSlot, addAssetPrice, addAssetSymbol, alchemyNetworkMap, alchemySupportedChainIds, assetIndexesToAsset, assetToBase, bitmapToIndexes, blockscoutExplorers, bytes32ToAddress, calculateAvailableBorrowsMarketReferenceCurrency, calculateCompoundedInterest, calculateHealthFactor, calculateHealthFactorFromBalances, calculateLinearInterest, chainlinkFeeds, checkForSelfdestruct, decodeReserveConfiguration, decodeReserveConfigurationV2, decodeUserConfiguration, diffCode, enhanceLogs, enhanceStateDiff, erc1967_AdminSlot, erc1967_ImplementationSlot, etherscanExplorers, fetchImmutablePoolAddresses, fetchMutablePoolAddresses, fetchPoolAddresses, findAsset, flashbotsClientExtension, flashbotsOnFetchRequest, formatNumberString, genericIndexer, getAlchemyRPC, getBits, getBytesValue, getClient, getCompleteReserveConfiguration, getContractDeploymentBlock, getCurrentDebtBalance, getCurrentLiquidityBalance, getDynamicArraySlot, getExplicitRPC, getExplorer, getGovernance, getHyperRPC, getImplementationSlot, getLogsRecursive, getMarketReferenceCurrencyAndUsdBalance, getMdContractName, getNetworkEnv, getNonFinalizedPayloads, getNonFinalizedProposals, getNormalizedDebt, getNormalizedIncome, getObjectDiff, getPayloadStorageOverrides, getPayloadsController, getPublicRpc, getQuicknodeRpc, getRPCUrl, getReserveConfigurations, getReserveTokens, getSolidityStorageSlotAddress, getSolidityStorageSlotBytes, getSolidityStorageSlotUint, getSourceCode, getTenderlyRpc, getVerificationStatus, hyperRPCSupportedNetworks, isPayloadFinal, isProposalFinal, makePayloadExecutableOnTestClient, makeProposalExecutableOnTestClient, onMevHandler, parseBlockscoutStyleSourceCode, parseEtherscanStyleSourceCode, parseLogs, prettifyNumber, priceUpdateDecoder, publicRPCs, quicknodeNetworkMap, rayDiv, rayMul, rayToWad, renderMarkdownStateDiffReport, renderTenderlyReport, routescanExplorers, selfDestructStatusToString, setBits, tenderlyExplorerMap, tenderlyNetworkMap, tenderly_createVnet, tenderly_deleteVnet, tenderly_getVnet, tenderly_logsToAbiLogs, tenderly_pingExplorer, tenderly_sim, tenderly_simVnet, toAddressLink, toBinaryString, toTxLink, transformTenderlyStateDiff, validateAip, verificationStatusToString, wadDiv, wadToRay } from './index.js';
3
3
  import 'viem';
4
4
  import '@bgd-labs/aave-address-book/abis';
5
5
  import 'arktype/internal/methods/object.ts';
6
+ import '../types/misc.js';
7
+ import '../../types/misc.js';
8
+ import '../../types/utils.js';
9
+ import '../../utils/siwe/validateSiweMessage.js';
10
+ import '../public/verifyHash.js';
6
11
  import 'viem/chains';
7
12
  import 'eventsource';
8
13
 
package/dist/node.js CHANGED
@@ -87,6 +87,7 @@ __export(node_exports, {
87
87
  assetToBase: () => assetToBase,
88
88
  bitmapToIndexes: () => bitmapToIndexes,
89
89
  blockscoutExplorers: () => blockscoutExplorers,
90
+ bytes32ToAddress: () => bytes32ToAddress,
90
91
  calculateAvailableBorrowsMarketReferenceCurrency: () => calculateAvailableBorrowsMarketReferenceCurrency,
91
92
  calculateCompoundedInterest: () => calculateCompoundedInterest,
92
93
  calculateHealthFactor: () => calculateHealthFactor,
@@ -117,10 +118,13 @@ __export(node_exports, {
117
118
  genericIndexer: () => genericIndexer,
118
119
  getAlchemyRPC: () => getAlchemyRPC,
119
120
  getBits: () => getBits,
121
+ getBytesValue: () => getBytesValue,
120
122
  getClient: () => getClient,
123
+ getCompleteReserveConfiguration: () => getCompleteReserveConfiguration,
121
124
  getContractDeploymentBlock: () => getContractDeploymentBlock,
122
125
  getCurrentDebtBalance: () => getCurrentDebtBalance,
123
126
  getCurrentLiquidityBalance: () => getCurrentLiquidityBalance,
127
+ getDynamicArraySlot: () => getDynamicArraySlot,
124
128
  getExplicitRPC: () => getExplicitRPC,
125
129
  getExplorer: () => getExplorer,
126
130
  getGovernance: () => getGovernance,
@@ -142,6 +146,9 @@ __export(node_exports, {
142
146
  getRPCUrl: () => getRPCUrl,
143
147
  getReserveConfigurations: () => getReserveConfigurations,
144
148
  getReserveTokens: () => getReserveTokens,
149
+ getSolidityStorageSlotAddress: () => getSolidityStorageSlotAddress,
150
+ getSolidityStorageSlotBytes: () => getSolidityStorageSlotBytes,
151
+ getSolidityStorageSlotUint: () => getSolidityStorageSlotUint,
145
152
  getSourceCode: () => getSourceCode,
146
153
  getTenderlyRpc: () => getTenderlyRpc,
147
154
  getVerificationStatus: () => getVerificationStatus,
@@ -195,18 +202,27 @@ function bitmapToIndexes(bitmap) {
195
202
  }
196
203
  return indexes;
197
204
  }
198
- function getBits(uint256, startBit, _endBit) {
199
- let endBit = _endBit;
205
+ function getBits(uint256, startBit, endBit) {
206
+ if (uint256 < 0n) {
207
+ throw new Error("uint256 must be non-negative");
208
+ }
209
+ if (startBit < 0n || endBit < 0n) {
210
+ throw new Error("Bit positions must be non-negative");
211
+ }
200
212
  if (startBit > endBit) {
201
213
  throw new Error(
202
214
  "Invalid bit range: startBit must be less than or equal to endBit"
203
215
  );
204
216
  }
205
- const bitLength = BigInt(uint256.toString(2)).toString().length;
206
- if (endBit >= bitLength) {
207
- endBit = BigInt(bitLength - 1);
217
+ if (uint256 === 0n) {
218
+ return 0n;
219
+ }
220
+ const bitLength = uint256.toString(2).length;
221
+ if (startBit >= bitLength) {
222
+ return 0n;
208
223
  }
209
- const mask = (1n << endBit - startBit + 1n) - 1n;
224
+ const actualEndBit = endBit >= bitLength ? BigInt(bitLength - 1) : endBit;
225
+ const mask = (1n << actualEndBit - startBit + 1n) - 1n;
210
226
  return uint256 >> startBit & mask;
211
227
  }
212
228
  function setBits(input, startBit, endBit, replaceValue) {
@@ -234,10 +250,10 @@ function decodeUserConfiguration(userConfiguration) {
234
250
 
235
251
  // src/aave/reserve.ts
236
252
  function decodeReserveConfiguration(data) {
237
- const ltv = Number(getBits(data, 0n, 15n));
238
- const liquidationThreshold = Number(getBits(data, 16n, 31n));
239
- const liquidationBonus = Number(getBits(data, 32n, 47n));
240
- const decimals = Number(getBits(data, 48n, 55n));
253
+ const ltv = getBits(data, 0n, 15n);
254
+ const liquidationThreshold = getBits(data, 16n, 31n);
255
+ const liquidationBonus = getBits(data, 32n, 47n);
256
+ const decimals = getBits(data, 48n, 55n);
241
257
  const active = getBits(data, 56n, 56n);
242
258
  const frozen = getBits(data, 57n, 57n);
243
259
  const borrowingEnabled = getBits(data, 58n, 58n);
@@ -249,26 +265,25 @@ function decodeReserveConfiguration(data) {
249
265
  const borrowCap = getBits(data, 80n, 115n);
250
266
  const supplyCap = getBits(data, 116n, 151n);
251
267
  const liquidationProtocolFee = Number(getBits(data, 152n, 167n));
252
- const unbackedMintCap = getBits(data, 176n, 211n);
253
268
  const debtCeiling = getBits(data, 212n, 251n);
254
269
  const virtualAccountingEnabled = getBits(data, 252n, 252n);
255
270
  return {
256
- ltv,
257
- liquidationThreshold,
258
- liquidationBonus,
259
- decimals,
271
+ ltv: Number(ltv),
272
+ liquidationThreshold: Number(liquidationThreshold),
273
+ liquidationBonus: Number(liquidationBonus),
274
+ decimals: Number(decimals),
260
275
  active: !!active,
261
276
  frozen: !!frozen,
262
277
  borrowingEnabled: !!borrowingEnabled,
263
278
  // stableRateBorrowingEnabled: !!stableRateBorrowingEnabled,
264
279
  paused: !!paused,
265
280
  borrowingInIsolation: !!borrowingInIsolation,
266
- reserveFactor,
281
+ reserveFactor: Number(reserveFactor),
267
282
  borrowCap,
268
283
  supplyCap,
269
- liquidationProtocolFee,
284
+ liquidationProtocolFee: Number(liquidationProtocolFee),
270
285
  // eModeCategory,
271
- unbackedMintCap,
286
+ // unbackedMintCap,
272
287
  debtCeiling,
273
288
  siloedBorrowingEnabled: !!siloedBorrowingEnabled,
274
289
  flashloaningEnabled: !!flashloaningEnabled,
@@ -16402,7 +16417,84 @@ async function getReserveConfigurations(client, pool, reserves) {
16402
16417
  };
16403
16418
  }
16404
16419
 
16405
- // ../../node_modules/.pnpm/@bgd-labs+aave-address-book@4.31.0_viem@2.37.6_typescript@5.8.3_zod@3.24.2_/node_modules/@bgd-labs/aave-address-book/dist/abis/IPayloadsControllerCore.mjs
16420
+ // src/aave/pool/configurations.ts
16421
+ var import_actions2 = require("viem/actions");
16422
+ async function getCompleteReserveConfiguration(client, poolAddress, reserve) {
16423
+ const [
16424
+ reserveData,
16425
+ deficit,
16426
+ virtualUnderlyingBalance,
16427
+ liquidationGracePeriod
16428
+ ] = await Promise.all([
16429
+ (0, import_actions2.readContract)(client, {
16430
+ address: poolAddress,
16431
+ abi: IPool_ABI,
16432
+ functionName: "getReserveData",
16433
+ args: [reserve]
16434
+ }),
16435
+ (0, import_actions2.readContract)(client, {
16436
+ address: poolAddress,
16437
+ abi: IPool_ABI,
16438
+ functionName: "getReserveDeficit",
16439
+ args: [reserve]
16440
+ }),
16441
+ (0, import_actions2.readContract)(client, {
16442
+ address: poolAddress,
16443
+ abi: IPool_ABI,
16444
+ functionName: "getVirtualUnderlyingBalance",
16445
+ args: [reserve]
16446
+ }),
16447
+ (0, import_actions2.readContract)(client, {
16448
+ address: poolAddress,
16449
+ abi: IPool_ABI,
16450
+ functionName: "getLiquidationGracePeriod",
16451
+ args: [reserve]
16452
+ })
16453
+ ]);
16454
+ const [
16455
+ scaledATokenTotalSupply,
16456
+ scaledVTokenTotalSupply,
16457
+ availableLiquidity,
16458
+ irParams
16459
+ ] = await Promise.all([
16460
+ (0, import_actions2.readContract)(client, {
16461
+ address: reserveData.aTokenAddress,
16462
+ abi: IAToken_ABI,
16463
+ functionName: "scaledTotalSupply"
16464
+ }),
16465
+ (0, import_actions2.readContract)(client, {
16466
+ address: reserveData.variableDebtTokenAddress,
16467
+ abi: IAToken_ABI,
16468
+ functionName: "scaledTotalSupply"
16469
+ }),
16470
+ (0, import_actions2.readContract)(client, {
16471
+ address: reserve,
16472
+ abi: IAToken_ABI,
16473
+ functionName: "balanceOf",
16474
+ args: [reserveData.aTokenAddress]
16475
+ }),
16476
+ (0, import_actions2.readContract)(client, {
16477
+ address: reserveData.interestRateStrategyAddress,
16478
+ abi: IDefaultInterestRateStrategyV2_ABI,
16479
+ functionName: "getInterestRateDataBps",
16480
+ args: [reserve]
16481
+ })
16482
+ ]);
16483
+ const config = decodeReserveConfiguration(reserveData.configuration.data);
16484
+ return {
16485
+ ...reserveData,
16486
+ ...config,
16487
+ deficit,
16488
+ virtualUnderlyingBalance,
16489
+ liquidationGracePeriod,
16490
+ scaledATokenTotalSupply,
16491
+ scaledVTokenTotalSupply,
16492
+ availableLiquidity,
16493
+ ...irParams
16494
+ };
16495
+ }
16496
+
16497
+ // ../../node_modules/.pnpm/@bgd-labs+aave-address-book@4.31.0_viem@2.41.2_typescript@5.8.3_zod@3.24.2_/node_modules/@bgd-labs/aave-address-book/dist/abis/IPayloadsControllerCore.mjs
16406
16498
  var IPayloadsControllerCore_ABI = [
16407
16499
  {
16408
16500
  type: "function",
@@ -16907,7 +16999,7 @@ var IPayloadsControllerCore_ABI = [
16907
16999
  }
16908
17000
  ];
16909
17001
 
16910
- // ../../node_modules/.pnpm/@bgd-labs+aave-address-book@4.31.0_viem@2.37.6_typescript@5.8.3_zod@3.24.2_/node_modules/@bgd-labs/aave-address-book/dist/abis/IGovernanceCore.mjs
17002
+ // ../../node_modules/.pnpm/@bgd-labs+aave-address-book@4.31.0_viem@2.41.2_typescript@5.8.3_zod@3.24.2_/node_modules/@bgd-labs/aave-address-book/dist/abis/IGovernanceCore.mjs
16911
17003
  var IGovernanceCore_ABI = [
16912
17004
  {
16913
17005
  type: "function",
@@ -17940,7 +18032,7 @@ var IGovernanceCore_ABI = [
17940
18032
  }
17941
18033
  ];
17942
18034
 
17943
- // ../../node_modules/.pnpm/@bgd-labs+aave-address-book@4.31.0_viem@2.37.6_typescript@5.8.3_zod@3.24.2_/node_modules/@bgd-labs/aave-address-book/dist/abis/IPool.mjs
18035
+ // ../../node_modules/.pnpm/@bgd-labs+aave-address-book@4.31.0_viem@2.41.2_typescript@5.8.3_zod@3.24.2_/node_modules/@bgd-labs/aave-address-book/dist/abis/IPool.mjs
17944
18036
  var IPool_ABI2 = [
17945
18037
  {
17946
18038
  type: "function",
@@ -19968,6 +20060,17 @@ var import_viem3 = require("viem");
19968
20060
 
19969
20061
  // src/math/slot.ts
19970
20062
  var import_viem2 = require("viem");
20063
+ function getSolidityStorageSlotBytes(mappingSlot, key) {
20064
+ const slot = (0, import_viem2.pad)(mappingSlot, { size: 32 });
20065
+ return (0, import_viem2.trim)(
20066
+ (0, import_viem2.keccak256)(
20067
+ (0, import_viem2.encodeAbiParameters)((0, import_viem2.parseAbiParameters)("bytes32, uint256"), [
20068
+ key,
20069
+ BigInt(slot)
20070
+ ])
20071
+ )
20072
+ );
20073
+ }
19971
20074
  function getSolidityStorageSlotUint(mappingSlot, key) {
19972
20075
  return (0, import_viem2.keccak256)(
19973
20076
  (0, import_viem2.encodeAbiParameters)((0, import_viem2.parseAbiParameters)("uint256, uint256"), [
@@ -19976,9 +20079,42 @@ function getSolidityStorageSlotUint(mappingSlot, key) {
19976
20079
  ])
19977
20080
  );
19978
20081
  }
20082
+ function getSolidityStorageSlotAddress(mappingSlot, key) {
20083
+ return (0, import_viem2.keccak256)(
20084
+ (0, import_viem2.encodeAbiParameters)((0, import_viem2.parseAbiParameters)("address, uint256"), [
20085
+ key,
20086
+ BigInt(mappingSlot)
20087
+ ])
20088
+ );
20089
+ }
20090
+ function getDynamicArraySlot(baseSlot, arrayIndex, itemSize) {
20091
+ return (0, import_viem2.pad)(
20092
+ (0, import_viem2.toHex)(
20093
+ (0, import_viem2.fromHex)(
20094
+ (0, import_viem2.keccak256)(
20095
+ (0, import_viem2.encodeAbiParameters)((0, import_viem2.parseAbiParameters)("uint256"), [baseSlot])
20096
+ ),
20097
+ "bigint"
20098
+ ) + BigInt(arrayIndex * itemSize)
20099
+ ),
20100
+ { size: 32 }
20101
+ );
20102
+ }
20103
+ function getBytesValue(value) {
20104
+ const bytesString = (0, import_viem2.toBytes)(value);
20105
+ if (bytesString.length > 31)
20106
+ throw new Error("Error: strings > 31 bytes are not implemented");
20107
+ return (0, import_viem2.concat)([
20108
+ (0, import_viem2.toHex)((0, import_viem2.pad)(bytesString, { size: 31, dir: "right" })),
20109
+ (0, import_viem2.toHex)(bytesString.length * 2, { size: 1 })
20110
+ ]);
20111
+ }
20112
+ function bytes32ToAddress(bytes32) {
20113
+ return (0, import_viem2.getAddress)((0, import_viem2.slice)(bytes32, 12, 32));
20114
+ }
19979
20115
 
19980
20116
  // src/aave/governance/payloads-controller.ts
19981
- var import_actions2 = require("viem/actions");
20117
+ var import_actions3 = require("viem/actions");
19982
20118
  var PayloadState = /* @__PURE__ */ ((PayloadState2) => {
19983
20119
  PayloadState2[PayloadState2["None"] = 0] = "None";
19984
20120
  PayloadState2[PayloadState2["Created"] = 1] = "Created";
@@ -20006,7 +20142,7 @@ function getPayloadsController(client, address) {
20006
20142
  async function getPayloadStorageOverrides(client, payloadsController, payloadId) {
20007
20143
  const controllerContract = getPayloadsController(client, payloadsController);
20008
20144
  const payload = await controllerContract.read.getPayloadById([payloadId]);
20009
- const currentBlock = await (0, import_actions2.getBlock)(client);
20145
+ const currentBlock = await (0, import_actions3.getBlock)(client);
20010
20146
  return [
20011
20147
  {
20012
20148
  slot: getSolidityStorageSlotUint(3n, BigInt(payloadId)),
@@ -20060,7 +20196,7 @@ async function getNonFinalizedPayloads(client, payloadsController) {
20060
20196
 
20061
20197
  // src/aave/governance/governance.ts
20062
20198
  var import_viem4 = require("viem");
20063
- var import_actions3 = require("viem/actions");
20199
+ var import_actions4 = require("viem/actions");
20064
20200
  var ProposalState = /* @__PURE__ */ ((ProposalState2) => {
20065
20201
  ProposalState2[ProposalState2["Null"] = 0] = "Null";
20066
20202
  ProposalState2[ProposalState2["Created"] = 1] = "Created";
@@ -20090,9 +20226,9 @@ function getGovernance(client, address) {
20090
20226
  });
20091
20227
  }
20092
20228
  async function makeProposalExecutableOnTestClient(client, governance, proposalId) {
20093
- const currentBlock = await (0, import_actions3.getBlock)(client);
20229
+ const currentBlock = await (0, import_actions4.getBlock)(client);
20094
20230
  const proposalSlot = getSolidityStorageSlotUint(7n, proposalId);
20095
- const data = await (0, import_actions3.getStorageAt)(client, {
20231
+ const data = await (0, import_actions4.getStorageAt)(client, {
20096
20232
  address: governance,
20097
20233
  slot: proposalSlot
20098
20234
  });
@@ -21358,7 +21494,7 @@ async function tenderly_createVnet({
21358
21494
  },
21359
21495
  mode: "tenderly",
21360
21496
  transport: (0, import_viem5.http)(rpc.url, { timeout: 2e5 })
21361
- }),
21497
+ }).extend(import_viem5.publicActions),
21362
21498
  walletClient: (0, import_viem5.createWalletClient)({
21363
21499
  chain: {
21364
21500
  ...ChainList[baseChainId],
@@ -22032,7 +22168,7 @@ function getClient(chainId, {
22032
22168
  } = {}) {
22033
22169
  if (!clientCache[chainId] || forceRebuildClient) {
22034
22170
  const rpcURL = getRPCUrl(chainId, providerConfig);
22035
- clientCache[chainId] = (0, import_viem6.createClient)({
22171
+ clientCache[chainId] = (0, import_viem6.createPublicClient)({
22036
22172
  chain: ChainList[chainId],
22037
22173
  transport: (0, import_viem6.http)(rpcURL, httpConfig),
22038
22174
  ...clientConfig
@@ -22042,7 +22178,7 @@ function getClient(chainId, {
22042
22178
  }
22043
22179
 
22044
22180
  // src/ecosystem/rpc-helpers.ts
22045
- var import_actions4 = require("viem/actions");
22181
+ var import_actions5 = require("viem/actions");
22046
22182
 
22047
22183
  // src/ecosystem/constants.ts
22048
22184
  var erc1967_ImplementationSlot = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
@@ -22051,7 +22187,7 @@ var erc1967_AdminSlot = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a71
22051
22187
  // src/ecosystem/rpc-helpers.ts
22052
22188
  var import_viem7 = require("viem");
22053
22189
  function getImplementationSlot(client, address) {
22054
- return (0, import_actions4.getStorageAt)(client, { address, slot: erc1967_ImplementationSlot });
22190
+ return (0, import_actions5.getStorageAt)(client, { address, slot: erc1967_ImplementationSlot });
22055
22191
  }
22056
22192
  async function getLogsRecursive({
22057
22193
  client,
@@ -22062,7 +22198,7 @@ async function getLogsRecursive({
22062
22198
  }) {
22063
22199
  if (fromBlock <= toBlock) {
22064
22200
  try {
22065
- const logs = await (0, import_actions4.getLogs)(client, {
22201
+ const logs = await (0, import_actions5.getLogs)(client, {
22066
22202
  fromBlock,
22067
22203
  toBlock,
22068
22204
  events,
@@ -22134,7 +22270,7 @@ async function getContractDeploymentBlock({
22134
22270
  if (fromBlock == toBlock) return fromBlock;
22135
22271
  if (fromBlock < toBlock) {
22136
22272
  const midBlock = BigInt(fromBlock + toBlock) >> BigInt(1);
22137
- const codeMid = await (0, import_actions4.getBytecode)(client, {
22273
+ const codeMid = await (0, import_actions5.getBytecode)(client, {
22138
22274
  blockNumber: midBlock,
22139
22275
  address: contractAddress
22140
22276
  });
@@ -22165,7 +22301,7 @@ async function getContractDeploymentBlock({
22165
22301
  // src/ecosystem/flashbots.ts
22166
22302
  var import_eventsource = require("eventsource");
22167
22303
  var import_viem8 = require("viem");
22168
- var import_actions5 = require("viem/actions");
22304
+ var import_actions6 = require("viem/actions");
22169
22305
  function flashbotsOnFetchRequest(account, relay = "https://relay.flashbots.net") {
22170
22306
  return async function(request, init) {
22171
22307
  if (init.body.includes("eth_sendPrivateTransaction") || init.body.includes("mev_simBundle") || init.body.includes("mev_sendBundle")) {
@@ -22200,7 +22336,7 @@ function flashbotsClientExtension(client) {
22200
22336
  params: [
22201
22337
  {
22202
22338
  tx: signedTx,
22203
- maxBlockNumber: (0, import_viem8.toHex)(await (0, import_actions5.getBlockNumber)(client) + 100n),
22339
+ maxBlockNumber: (0, import_viem8.toHex)(await (0, import_actions6.getBlockNumber)(client) + 100n),
22204
22340
  preferences,
22205
22341
  ...maxBlockNumber ? { maxBlockNumber } : {}
22206
22342
  }
@@ -38801,7 +38937,7 @@ function enhanceLogs(client, logs) {
38801
38937
  }
38802
38938
 
38803
38939
  // src/seatbelt/selfdestruct.ts
38804
- var import_actions6 = require("viem/actions");
38940
+ var import_actions7 = require("viem/actions");
38805
38941
  var STOP = 0;
38806
38942
  var JUMPDEST = 91;
38807
38943
  var PUSH1 = 96;
@@ -38847,9 +38983,9 @@ async function checkForSelfdestruct(client, addresses, trustedAddresses) {
38847
38983
  result.push({ address, state: 0 /* TRUSTED */ });
38848
38984
  continue;
38849
38985
  }
38850
- const code = await (0, import_actions6.getBytecode)(client, { address });
38986
+ const code = await (0, import_actions7.getBytecode)(client, { address });
38851
38987
  if (!code) {
38852
- const nonce = await (0, import_actions6.getTransactionCount)(client, { address });
38988
+ const nonce = await (0, import_actions7.getTransactionCount)(client, { address });
38853
38989
  if (nonce > 0)
38854
38990
  result.push({ address, state: 1 /* EOA */ });
38855
38991
  else result.push({ address, state: 2 /* EMPTY */ });
@@ -38892,7 +39028,7 @@ function checkCode(bytecode) {
38892
39028
  var import_viem12 = require("viem");
38893
39029
 
38894
39030
  // src/seatbelt/verified.ts
38895
- var import_actions7 = require("viem/actions");
39031
+ var import_actions8 = require("viem/actions");
38896
39032
  var VerificationStatus = /* @__PURE__ */ ((VerificationStatus2) => {
38897
39033
  VerificationStatus2[VerificationStatus2["EOA"] = 0] = "EOA";
38898
39034
  VerificationStatus2[VerificationStatus2["CONTRACT"] = 1] = "CONTRACT";
@@ -38926,7 +39062,7 @@ async function getVerificationStatus({
38926
39062
  });
38927
39063
  continue;
38928
39064
  }
38929
- const code = await (0, import_actions7.getCode)(client, { address });
39065
+ const code = await (0, import_actions8.getCode)(client, { address });
38930
39066
  if (!code) {
38931
39067
  results.push({
38932
39068
  address,
@@ -38959,7 +39095,7 @@ async function getVerificationStatus({
38959
39095
 
38960
39096
  // src/seatbelt/state.ts
38961
39097
  var import_viem11 = require("viem");
38962
- var import_actions8 = require("viem/actions");
39098
+ var import_actions9 = require("viem/actions");
38963
39099
  function isChangeOfType(change, name) {
38964
39100
  return change.name === name;
38965
39101
  }
@@ -39168,7 +39304,7 @@ async function enhanceStateDiff(client, diff) {
39168
39304
  if (isChangeOfType(change, "_reserves")) {
39169
39305
  let method = decodeReserveConfigurationV2;
39170
39306
  try {
39171
- await (0, import_actions8.readContract)(client, {
39307
+ await (0, import_actions9.readContract)(client, {
39172
39308
  abi: IPool_ABI,
39173
39309
  functionName: "getUserEMode",
39174
39310
  args: [import_viem11.zeroAddress],
@@ -39570,6 +39706,7 @@ function diffFoundryStorageLayout(layoutBefore, layoutAfter) {
39570
39706
  assetToBase,
39571
39707
  bitmapToIndexes,
39572
39708
  blockscoutExplorers,
39709
+ bytes32ToAddress,
39573
39710
  calculateAvailableBorrowsMarketReferenceCurrency,
39574
39711
  calculateCompoundedInterest,
39575
39712
  calculateHealthFactor,
@@ -39600,10 +39737,13 @@ function diffFoundryStorageLayout(layoutBefore, layoutAfter) {
39600
39737
  genericIndexer,
39601
39738
  getAlchemyRPC,
39602
39739
  getBits,
39740
+ getBytesValue,
39603
39741
  getClient,
39742
+ getCompleteReserveConfiguration,
39604
39743
  getContractDeploymentBlock,
39605
39744
  getCurrentDebtBalance,
39606
39745
  getCurrentLiquidityBalance,
39746
+ getDynamicArraySlot,
39607
39747
  getExplicitRPC,
39608
39748
  getExplorer,
39609
39749
  getGovernance,
@@ -39625,6 +39765,9 @@ function diffFoundryStorageLayout(layoutBefore, layoutAfter) {
39625
39765
  getRPCUrl,
39626
39766
  getReserveConfigurations,
39627
39767
  getReserveTokens,
39768
+ getSolidityStorageSlotAddress,
39769
+ getSolidityStorageSlotBytes,
39770
+ getSolidityStorageSlotUint,
39628
39771
  getSourceCode,
39629
39772
  getTenderlyRpc,
39630
39773
  getVerificationStatus,