@eulerxyz/euler-v2-sdk 0.1.0-beta
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/LICENSE +21 -0
- package/README.md +115 -0
- package/dist/src/entities/Account.d.ts +242 -0
- package/dist/src/entities/Account.js +509 -0
- package/dist/src/entities/Account.js.map +1 -0
- package/dist/src/entities/ERC4626Vault.d.ts +56 -0
- package/dist/src/entities/ERC4626Vault.js +94 -0
- package/dist/src/entities/ERC4626Vault.js.map +1 -0
- package/dist/src/entities/EVault.d.ts +159 -0
- package/dist/src/entities/EVault.js +224 -0
- package/dist/src/entities/EVault.js.map +1 -0
- package/dist/src/entities/EulerEarn.d.ts +69 -0
- package/dist/src/entities/EulerEarn.js +89 -0
- package/dist/src/entities/EulerEarn.js.map +1 -0
- package/dist/src/entities/EulerLabels.d.ts +53 -0
- package/dist/src/entities/EulerLabels.js +2 -0
- package/dist/src/entities/EulerLabels.js.map +1 -0
- package/dist/src/entities/SecuritizeCollateralVault.d.ts +16 -0
- package/dist/src/entities/SecuritizeCollateralVault.js +22 -0
- package/dist/src/entities/SecuritizeCollateralVault.js.map +1 -0
- package/dist/src/entities/Wallet.d.ts +27 -0
- package/dist/src/entities/Wallet.js +21 -0
- package/dist/src/entities/Wallet.js.map +1 -0
- package/dist/src/index.d.ts +43 -0
- package/dist/src/index.js +46 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/plugins/batchSimulation.d.ts +34 -0
- package/dist/src/plugins/batchSimulation.js +83 -0
- package/dist/src/plugins/batchSimulation.js.map +1 -0
- package/dist/src/plugins/index.d.ts +4 -0
- package/dist/src/plugins/index.js +5 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/plugins/keyring/index.d.ts +1 -0
- package/dist/src/plugins/keyring/index.js +2 -0
- package/dist/src/plugins/keyring/index.js.map +1 -0
- package/dist/src/plugins/keyring/keyringPlugin.d.ts +41 -0
- package/dist/src/plugins/keyring/keyringPlugin.js +182 -0
- package/dist/src/plugins/keyring/keyringPlugin.js.map +1 -0
- package/dist/src/plugins/pyth/index.d.ts +1 -0
- package/dist/src/plugins/pyth/index.js +2 -0
- package/dist/src/plugins/pyth/index.js.map +1 -0
- package/dist/src/plugins/pyth/pythPlugin.d.ts +29 -0
- package/dist/src/plugins/pyth/pythPlugin.js +190 -0
- package/dist/src/plugins/pyth/pythPlugin.js.map +1 -0
- package/dist/src/plugins/types.d.ts +39 -0
- package/dist/src/plugins/types.js +16 -0
- package/dist/src/plugins/types.js.map +1 -0
- package/dist/src/sdk/buildSDK.d.ts +77 -0
- package/dist/src/sdk/buildSDK.js +366 -0
- package/dist/src/sdk/buildSDK.js.map +1 -0
- package/dist/src/sdk/defaultConfig.d.ts +26 -0
- package/dist/src/sdk/defaultConfig.js +68 -0
- package/dist/src/sdk/defaultConfig.js.map +1 -0
- package/dist/src/sdk/sdk.d.ts +73 -0
- package/dist/src/sdk/sdk.js +67 -0
- package/dist/src/sdk/sdk.js.map +1 -0
- package/dist/src/services/abiService/abiService.d.ts +13 -0
- package/dist/src/services/abiService/abiService.js +25 -0
- package/dist/src/services/abiService/abiService.js.map +1 -0
- package/dist/src/services/abiService/index.d.ts +2 -0
- package/dist/src/services/abiService/index.js +2 -0
- package/dist/src/services/abiService/index.js.map +1 -0
- package/dist/src/services/accountService/accountService.d.ts +44 -0
- package/dist/src/services/accountService/accountService.js +193 -0
- package/dist/src/services/accountService/accountService.js.map +1 -0
- package/dist/src/services/accountService/accountServiceConfig.d.ts +15 -0
- package/dist/src/services/accountService/accountServiceConfig.js +2 -0
- package/dist/src/services/accountService/accountServiceConfig.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/abis/accountLensAbi.d.ts +960 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/abis/accountLensAbi.js +1230 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/abis/accountLensAbi.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountInfoConverter.d.ts +17 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountInfoConverter.js +158 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountInfoConverter.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountLensTypes.d.ts +48 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountLensTypes.js +2 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountLensTypes.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.d.ts +210 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js +287 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountVaultsSubgraphAdapter.d.ts +22 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountVaultsSubgraphAdapter.js +80 -0
- package/dist/src/services/accountService/adapters/accountOnchainAdapter/accountVaultsSubgraphAdapter.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountOutputNormalization.d.ts +8 -0
- package/dist/src/services/accountService/adapters/accountOutputNormalization.js +50 -0
- package/dist/src/services/accountService/adapters/accountOutputNormalization.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.d.ts +62 -0
- package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.js +287 -0
- package/dist/src/services/accountService/adapters/accountV3Adapter/accountV3Adapter.js.map +1 -0
- package/dist/src/services/accountService/adapters/accountVaultsSubgraphAdapter/accountVaultsSubgraphAdapter.d.ts +1 -0
- package/dist/src/services/accountService/adapters/accountVaultsSubgraphAdapter/accountVaultsSubgraphAdapter.js +2 -0
- package/dist/src/services/accountService/adapters/accountVaultsSubgraphAdapter/accountVaultsSubgraphAdapter.js.map +1 -0
- package/dist/src/services/accountService/index.d.ts +5 -0
- package/dist/src/services/accountService/index.js +4 -0
- package/dist/src/services/accountService/index.js.map +1 -0
- package/dist/src/services/deploymentService/deploymentService.d.ts +116 -0
- package/dist/src/services/deploymentService/deploymentService.js +44 -0
- package/dist/src/services/deploymentService/deploymentService.js.map +1 -0
- package/dist/src/services/deploymentService/index.d.ts +2 -0
- package/dist/src/services/deploymentService/index.js +2 -0
- package/dist/src/services/deploymentService/index.js.map +1 -0
- package/dist/src/services/eulerLabelsService/eulerLabelsService.d.ts +54 -0
- package/dist/src/services/eulerLabelsService/eulerLabelsService.js +178 -0
- package/dist/src/services/eulerLabelsService/eulerLabelsService.js.map +1 -0
- package/dist/src/services/eulerLabelsService/index.d.ts +2 -0
- package/dist/src/services/eulerLabelsService/index.js +2 -0
- package/dist/src/services/eulerLabelsService/index.js.map +1 -0
- package/dist/src/services/executionService/abis/eVaultAbi.d.ts +1948 -0
- package/dist/src/services/executionService/abis/eVaultAbi.js +2517 -0
- package/dist/src/services/executionService/abis/eVaultAbi.js.map +1 -0
- package/dist/src/services/executionService/abis/ethereumVaultConnectorAbi.d.ts +1070 -0
- package/dist/src/services/executionService/abis/ethereumVaultConnectorAbi.js +1387 -0
- package/dist/src/services/executionService/abis/ethereumVaultConnectorAbi.js.map +1 -0
- package/dist/src/services/executionService/abis/permit2PermitAbi.d.ts +52 -0
- package/dist/src/services/executionService/abis/permit2PermitAbi.js +36 -0
- package/dist/src/services/executionService/abis/permit2PermitAbi.js.map +1 -0
- package/dist/src/services/executionService/abis/swapVerifierAbi.d.ts +139 -0
- package/dist/src/services/executionService/abis/swapVerifierAbi.js +70 -0
- package/dist/src/services/executionService/abis/swapVerifierAbi.js.map +1 -0
- package/dist/src/services/executionService/abis/swapperAbi.d.ts +270 -0
- package/dist/src/services/executionService/abis/swapperAbi.js +152 -0
- package/dist/src/services/executionService/abis/swapperAbi.js.map +1 -0
- package/dist/src/services/executionService/executionService.d.ts +619 -0
- package/dist/src/services/executionService/executionService.js +2037 -0
- package/dist/src/services/executionService/executionService.js.map +1 -0
- package/dist/src/services/executionService/executionServiceTypes.d.ts +423 -0
- package/dist/src/services/executionService/executionServiceTypes.js +14 -0
- package/dist/src/services/executionService/executionServiceTypes.js.map +1 -0
- package/dist/src/services/executionService/index.d.ts +7 -0
- package/dist/src/services/executionService/index.js +7 -0
- package/dist/src/services/executionService/index.js.map +1 -0
- package/dist/src/services/feeFlowService/feeFlowService.d.ts +22 -0
- package/dist/src/services/feeFlowService/feeFlowService.js +239 -0
- package/dist/src/services/feeFlowService/feeFlowService.js.map +1 -0
- package/dist/src/services/feeFlowService/feeFlowServiceTypes.d.ts +42 -0
- package/dist/src/services/feeFlowService/feeFlowServiceTypes.js +2 -0
- package/dist/src/services/feeFlowService/feeFlowServiceTypes.js.map +1 -0
- package/dist/src/services/feeFlowService/index.d.ts +2 -0
- package/dist/src/services/feeFlowService/index.js +2 -0
- package/dist/src/services/feeFlowService/index.js.map +1 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/index.d.ts +2 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/index.js +2 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/index.js.map +1 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.d.ts +21 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.js +125 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3Adapter.js.map +1 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3AdapterTypes.d.ts +30 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3AdapterTypes.js +2 -0
- package/dist/src/services/intrinsicApyService/adapters/intrinsicApyV3Adapter/intrinsicApyV3AdapterTypes.js.map +1 -0
- package/dist/src/services/intrinsicApyService/index.d.ts +4 -0
- package/dist/src/services/intrinsicApyService/index.js +3 -0
- package/dist/src/services/intrinsicApyService/index.js.map +1 -0
- package/dist/src/services/intrinsicApyService/intrinsicApyService.d.ts +28 -0
- package/dist/src/services/intrinsicApyService/intrinsicApyService.js +42 -0
- package/dist/src/services/intrinsicApyService/intrinsicApyService.js.map +1 -0
- package/dist/src/services/oracleAdapterService/index.d.ts +1 -0
- package/dist/src/services/oracleAdapterService/index.js +2 -0
- package/dist/src/services/oracleAdapterService/index.js.map +1 -0
- package/dist/src/services/oracleAdapterService/oracleAdapterService.d.ts +40 -0
- package/dist/src/services/oracleAdapterService/oracleAdapterService.js +65 -0
- package/dist/src/services/oracleAdapterService/oracleAdapterService.js.map +1 -0
- package/dist/src/services/priceService/backendClient.d.ts +70 -0
- package/dist/src/services/priceService/backendClient.js +108 -0
- package/dist/src/services/priceService/backendClient.js.map +1 -0
- package/dist/src/services/priceService/index.d.ts +2 -0
- package/dist/src/services/priceService/index.js +3 -0
- package/dist/src/services/priceService/index.js.map +1 -0
- package/dist/src/services/priceService/priceService.d.ts +133 -0
- package/dist/src/services/priceService/priceService.js +499 -0
- package/dist/src/services/priceService/priceService.js.map +1 -0
- package/dist/src/services/priceService/utilsLensPriceAbi.d.ts +60 -0
- package/dist/src/services/priceService/utilsLensPriceAbi.js +31 -0
- package/dist/src/services/priceService/utilsLensPriceAbi.js.map +1 -0
- package/dist/src/services/providerService/index.d.ts +2 -0
- package/dist/src/services/providerService/index.js +2 -0
- package/dist/src/services/providerService/index.js.map +1 -0
- package/dist/src/services/providerService/providerService.d.ts +11 -0
- package/dist/src/services/providerService/providerService.js +61 -0
- package/dist/src/services/providerService/providerService.js.map +1 -0
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/index.d.ts +2 -0
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/index.js +2 -0
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/index.js.map +1 -0
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts +48 -0
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +391 -0
- package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/index.d.ts +2 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/index.js +2 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/index.js.map +1 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.d.ts +23 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js +296 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3Adapter.js.map +1 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.d.ts +110 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.js +2 -0
- package/dist/src/services/rewardsService/adapters/rewardsV3Adapter/rewardsV3AdapterTypes.js.map +1 -0
- package/dist/src/services/rewardsService/index.d.ts +5 -0
- package/dist/src/services/rewardsService/index.js +4 -0
- package/dist/src/services/rewardsService/index.js.map +1 -0
- package/dist/src/services/rewardsService/rewardsService.d.ts +34 -0
- package/dist/src/services/rewardsService/rewardsService.js +298 -0
- package/dist/src/services/rewardsService/rewardsService.js.map +1 -0
- package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +270 -0
- package/dist/src/services/rewardsService/rewardsServiceTypes.js +2 -0
- package/dist/src/services/rewardsService/rewardsServiceTypes.js.map +1 -0
- package/dist/src/services/simulationService/index.d.ts +2 -0
- package/dist/src/services/simulationService/index.js +2 -0
- package/dist/src/services/simulationService/index.js.map +1 -0
- package/dist/src/services/simulationService/simulationService.d.ts +88 -0
- package/dist/src/services/simulationService/simulationService.js +497 -0
- package/dist/src/services/simulationService/simulationService.js.map +1 -0
- package/dist/src/services/swapService/index.d.ts +3 -0
- package/dist/src/services/swapService/index.js +3 -0
- package/dist/src/services/swapService/index.js.map +1 -0
- package/dist/src/services/swapService/swapService.d.ts +121 -0
- package/dist/src/services/swapService/swapService.js +329 -0
- package/dist/src/services/swapService/swapService.js.map +1 -0
- package/dist/src/services/swapService/swapServiceTypes.d.ts +130 -0
- package/dist/src/services/swapService/swapServiceTypes.js +16 -0
- package/dist/src/services/swapService/swapServiceTypes.js.map +1 -0
- package/dist/src/services/swapService/swapVerifierAbi.d.ts +139 -0
- package/dist/src/services/swapService/swapVerifierAbi.js +178 -0
- package/dist/src/services/swapService/swapVerifierAbi.js.map +1 -0
- package/dist/src/services/tokenlistService/index.d.ts +3 -0
- package/dist/src/services/tokenlistService/index.js +2 -0
- package/dist/src/services/tokenlistService/index.js.map +1 -0
- package/dist/src/services/tokenlistService/tokenlistService.d.ts +31 -0
- package/dist/src/services/tokenlistService/tokenlistService.js +56 -0
- package/dist/src/services/tokenlistService/tokenlistService.js.map +1 -0
- package/dist/src/services/tokenlistService/tokenlistServiceTypes.d.ts +33 -0
- package/dist/src/services/tokenlistService/tokenlistServiceTypes.js +2 -0
- package/dist/src/services/tokenlistService/tokenlistServiceTypes.js.map +1 -0
- package/dist/src/services/vaults/IVaultService.d.ts +47 -0
- package/dist/src/services/vaults/IVaultService.js +2 -0
- package/dist/src/services/vaults/IVaultService.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/abis/vaultLensAbi.d.ts +1280 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/abis/vaultLensAbi.js +1640 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/abis/vaultLensAbi.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.d.ts +97 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.js +9 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultLensTypes.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultOnchainAdapter.d.ts +141 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultOnchainAdapter.js +189 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultOnchainAdapter.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.d.ts +10 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.js +454 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultOnchainAdapter/vaultInfoConverter.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3Adapter.d.ts +25 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3Adapter.js +214 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3Adapter.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.d.ts +5 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js +795 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterConversions.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.d.ts +146 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.js +2 -0
- package/dist/src/services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3AdapterTypes.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/eVaultService.d.ts +74 -0
- package/dist/src/services/vaults/eVaultService/eVaultService.js +362 -0
- package/dist/src/services/vaults/eVaultService/eVaultService.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.d.ts +15 -0
- package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.js +2 -0
- package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.js.map +1 -0
- package/dist/src/services/vaults/eVaultService/index.d.ts +5 -0
- package/dist/src/services/vaults/eVaultService/index.js +4 -0
- package/dist/src/services/vaults/eVaultService/index.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/abis/eulerEarnVaultLensAbi.d.ts +468 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/abis/eulerEarnVaultLensAbi.js +600 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/abis/eulerEarnVaultLensAbi.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnInfoConverter.d.ts +10 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnInfoConverter.js +151 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnInfoConverter.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnLensTypes.d.ts +55 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnLensTypes.js +2 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnLensTypes.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.d.ts +109 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js +238 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.d.ts +100 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js +373 -0
- package/dist/src/services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/eulerEarnService.d.ts +77 -0
- package/dist/src/services/vaults/eulerEarnService/eulerEarnService.js +298 -0
- package/dist/src/services/vaults/eulerEarnService/eulerEarnService.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.d.ts +13 -0
- package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.js +2 -0
- package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.js.map +1 -0
- package/dist/src/services/vaults/eulerEarnService/index.d.ts +5 -0
- package/dist/src/services/vaults/eulerEarnService/index.js +4 -0
- package/dist/src/services/vaults/eulerEarnService/index.js.map +1 -0
- package/dist/src/services/vaults/index.d.ts +1 -0
- package/dist/src/services/vaults/index.js +2 -0
- package/dist/src/services/vaults/index.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/abis/erc4626EvcCollateralSecuritizeAbi.d.ts +22 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/abis/erc4626EvcCollateralSecuritizeAbi.js +18 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/abis/erc4626EvcCollateralSecuritizeAbi.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/abis/utilsLensAbi.d.ts +64 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/abis/utilsLensAbi.js +30 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/abis/utilsLensAbi.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultInfoConverter.d.ts +4 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultInfoConverter.js +53 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultInfoConverter.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultLensTypes.d.ts +16 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultLensTypes.js +2 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultLensTypes.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.d.ts +37 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.js +113 -0
- package/dist/src/services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/index.d.ts +2 -0
- package/dist/src/services/vaults/securitizeVaultService/index.js +3 -0
- package/dist/src/services/vaults/securitizeVaultService/index.js.map +1 -0
- package/dist/src/services/vaults/securitizeVaultService/securitizeVaultService.d.ts +52 -0
- package/dist/src/services/vaults/securitizeVaultService/securitizeVaultService.js +190 -0
- package/dist/src/services/vaults/securitizeVaultService/securitizeVaultService.js.map +1 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/IVaultTypeAdapter.d.ts +29 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/IVaultTypeAdapter.js +2 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/IVaultTypeAdapter.js.map +1 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/VaultTypeSubgraphAdapter.d.ts +18 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/VaultTypeSubgraphAdapter.js +82 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/VaultTypeSubgraphAdapter.js.map +1 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/VaultTypeV3Adapter.d.ts +35 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/VaultTypeV3Adapter.js +154 -0
- package/dist/src/services/vaults/vaultMetaService/adapters/VaultTypeV3Adapter.js.map +1 -0
- package/dist/src/services/vaults/vaultMetaService/index.d.ts +4 -0
- package/dist/src/services/vaults/vaultMetaService/index.js +4 -0
- package/dist/src/services/vaults/vaultMetaService/index.js.map +1 -0
- package/dist/src/services/vaults/vaultMetaService/vaultMetaService.d.ts +71 -0
- package/dist/src/services/vaults/vaultMetaService/vaultMetaService.js +283 -0
- package/dist/src/services/vaults/vaultMetaService/vaultMetaService.js.map +1 -0
- package/dist/src/services/walletService/adapters/walletOnchainAdapter.d.ts +20 -0
- package/dist/src/services/walletService/adapters/walletOnchainAdapter.js +222 -0
- package/dist/src/services/walletService/adapters/walletOnchainAdapter.js.map +1 -0
- package/dist/src/services/walletService/index.d.ts +3 -0
- package/dist/src/services/walletService/index.js +2 -0
- package/dist/src/services/walletService/index.js.map +1 -0
- package/dist/src/services/walletService/walletService.d.ts +19 -0
- package/dist/src/services/walletService/walletService.js +37 -0
- package/dist/src/services/walletService/walletService.js.map +1 -0
- package/dist/src/utils/accountComputations.d.ts +96 -0
- package/dist/src/utils/accountComputations.js +297 -0
- package/dist/src/utils/accountComputations.js.map +1 -0
- package/dist/src/utils/batch.d.ts +2 -0
- package/dist/src/utils/batch.js +51 -0
- package/dist/src/utils/batch.js.map +1 -0
- package/dist/src/utils/buildQuery.d.ts +19 -0
- package/dist/src/utils/buildQuery.js +72 -0
- package/dist/src/utils/buildQuery.js.map +1 -0
- package/dist/src/utils/callBundler.d.ts +32 -0
- package/dist/src/utils/callBundler.js +93 -0
- package/dist/src/utils/callBundler.js.map +1 -0
- package/dist/src/utils/decodeSmartContractErrors.d.ts +13 -0
- package/dist/src/utils/decodeSmartContractErrors.js +311 -0
- package/dist/src/utils/decodeSmartContractErrors.js.map +1 -0
- package/dist/src/utils/entityDiagnostics.d.ts +28 -0
- package/dist/src/utils/entityDiagnostics.js +72 -0
- package/dist/src/utils/entityDiagnostics.js.map +1 -0
- package/dist/src/utils/eulerErrorSelectors.d.ts +226 -0
- package/dist/src/utils/eulerErrorSelectors.js +227 -0
- package/dist/src/utils/eulerErrorSelectors.js.map +1 -0
- package/dist/src/utils/irm.d.ts +60 -0
- package/dist/src/utils/irm.js +213 -0
- package/dist/src/utils/irm.js.map +1 -0
- package/dist/src/utils/normalization.d.ts +30 -0
- package/dist/src/utils/normalization.js +79 -0
- package/dist/src/utils/normalization.js.map +1 -0
- package/dist/src/utils/oracle.d.ts +107 -0
- package/dist/src/utils/oracle.js +437 -0
- package/dist/src/utils/oracle.js.map +1 -0
- package/dist/src/utils/parsing.d.ts +29 -0
- package/dist/src/utils/parsing.js +199 -0
- package/dist/src/utils/parsing.js.map +1 -0
- package/dist/src/utils/queryNames.d.ts +28 -0
- package/dist/src/utils/queryNames.js +2 -0
- package/dist/src/utils/queryNames.js.map +1 -0
- package/dist/src/utils/stateOverrides/accessList.d.ts +14 -0
- package/dist/src/utils/stateOverrides/accessList.js +24 -0
- package/dist/src/utils/stateOverrides/accessList.js.map +1 -0
- package/dist/src/utils/stateOverrides/approvalOverrides.d.ts +20 -0
- package/dist/src/utils/stateOverrides/approvalOverrides.js +111 -0
- package/dist/src/utils/stateOverrides/approvalOverrides.js.map +1 -0
- package/dist/src/utils/stateOverrides/balanceOverrides.d.ts +13 -0
- package/dist/src/utils/stateOverrides/balanceOverrides.js +145 -0
- package/dist/src/utils/stateOverrides/balanceOverrides.js.map +1 -0
- package/dist/src/utils/stateOverrides/getStateOverrides.d.ts +31 -0
- package/dist/src/utils/stateOverrides/getStateOverrides.js +86 -0
- package/dist/src/utils/stateOverrides/getStateOverrides.js.map +1 -0
- package/dist/src/utils/stateOverrides/index.d.ts +4 -0
- package/dist/src/utils/stateOverrides/index.js +5 -0
- package/dist/src/utils/stateOverrides/index.js.map +1 -0
- package/dist/src/utils/stateOverrides/mergeStateOverrides.d.ts +6 -0
- package/dist/src/utils/stateOverrides/mergeStateOverrides.js +40 -0
- package/dist/src/utils/stateOverrides/mergeStateOverrides.js.map +1 -0
- package/dist/src/utils/stateOverrides/types.d.ts +5 -0
- package/dist/src/utils/stateOverrides/types.js +2 -0
- package/dist/src/utils/stateOverrides/types.js.map +1 -0
- package/dist/src/utils/subAccounts.d.ts +6 -0
- package/dist/src/utils/subAccounts.js +24 -0
- package/dist/src/utils/subAccounts.js.map +1 -0
- package/dist/src/utils/types.d.ts +20 -0
- package/dist/src/utils/types.js +8 -0
- package/dist/src/utils/types.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { formatUnits, getAddress } from "viem";
|
|
2
|
+
export const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
3
|
+
export function parseBigIntField(value, params) {
|
|
4
|
+
try {
|
|
5
|
+
if (typeof value !== "string")
|
|
6
|
+
throw new Error("invalid bigint input");
|
|
7
|
+
return BigInt(value);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
params.errors.push({
|
|
11
|
+
code: "DEFAULT_APPLIED",
|
|
12
|
+
severity: "warning",
|
|
13
|
+
message: `Failed to parse bigint at ${params.path}; defaulted to 0.`,
|
|
14
|
+
paths: [params.path],
|
|
15
|
+
entityId: params.entityId,
|
|
16
|
+
source: params.source,
|
|
17
|
+
originalValue: value,
|
|
18
|
+
normalizedValue: "0",
|
|
19
|
+
});
|
|
20
|
+
return 0n;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function parseRatio1e4(value, params) {
|
|
24
|
+
const parsed = Number(value);
|
|
25
|
+
if (Number.isFinite(parsed))
|
|
26
|
+
return parsed / 1e4;
|
|
27
|
+
params.errors.push({
|
|
28
|
+
code: "DEFAULT_APPLIED",
|
|
29
|
+
severity: "warning",
|
|
30
|
+
message: `Failed to parse ratio at ${params.path}; defaulted to 0.`,
|
|
31
|
+
paths: [params.path],
|
|
32
|
+
entityId: params.entityId,
|
|
33
|
+
source: params.source,
|
|
34
|
+
originalValue: value,
|
|
35
|
+
normalizedValue: 0,
|
|
36
|
+
});
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
export function parseAddressField(value, params) {
|
|
40
|
+
if (value) {
|
|
41
|
+
try {
|
|
42
|
+
return getAddress(value);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// handled below
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const fallback = params.fallback ?? ZERO_ADDRESS;
|
|
49
|
+
params.errors.push({
|
|
50
|
+
code: "DEFAULT_APPLIED",
|
|
51
|
+
severity: "warning",
|
|
52
|
+
message: `Missing or invalid address at ${params.path}; defaulted to ${params.fallbackLabel ?? "zero address"}.`,
|
|
53
|
+
paths: [params.path],
|
|
54
|
+
entityId: params.entityId,
|
|
55
|
+
source: params.source,
|
|
56
|
+
originalValue: value,
|
|
57
|
+
normalizedValue: fallback,
|
|
58
|
+
});
|
|
59
|
+
return fallback;
|
|
60
|
+
}
|
|
61
|
+
export function parseAddressArrayField(value, params) {
|
|
62
|
+
if (!Array.isArray(value)) {
|
|
63
|
+
params.errors.push({
|
|
64
|
+
code: "DEFAULT_APPLIED",
|
|
65
|
+
severity: "warning",
|
|
66
|
+
message: `Missing address array at ${params.path}; defaulted to empty array.`,
|
|
67
|
+
paths: [params.path],
|
|
68
|
+
entityId: params.entityId,
|
|
69
|
+
source: params.source,
|
|
70
|
+
originalValue: value,
|
|
71
|
+
normalizedValue: [],
|
|
72
|
+
});
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
return value.map((entry, index) => parseAddressField(entry, {
|
|
76
|
+
...params,
|
|
77
|
+
path: `${params.path}[${index}]`,
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
export function parseStringField(value, params) {
|
|
81
|
+
const fallback = params.fallback ?? "";
|
|
82
|
+
if (typeof value === "string")
|
|
83
|
+
return value;
|
|
84
|
+
params.errors.push({
|
|
85
|
+
code: "DEFAULT_APPLIED",
|
|
86
|
+
severity: "warning",
|
|
87
|
+
message: `Missing string at ${params.path}; defaulted to ${JSON.stringify(fallback)}.`,
|
|
88
|
+
paths: [params.path],
|
|
89
|
+
entityId: params.entityId,
|
|
90
|
+
source: params.source,
|
|
91
|
+
originalValue: value,
|
|
92
|
+
normalizedValue: fallback,
|
|
93
|
+
});
|
|
94
|
+
return fallback;
|
|
95
|
+
}
|
|
96
|
+
export function parseNumberField(value, params) {
|
|
97
|
+
const fallback = params.fallback ?? 0;
|
|
98
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
99
|
+
return value;
|
|
100
|
+
params.errors.push({
|
|
101
|
+
code: "DEFAULT_APPLIED",
|
|
102
|
+
severity: "warning",
|
|
103
|
+
message: `Missing or invalid number at ${params.path}; defaulted to ${fallback}.`,
|
|
104
|
+
paths: [params.path],
|
|
105
|
+
entityId: params.entityId,
|
|
106
|
+
source: params.source,
|
|
107
|
+
originalValue: value,
|
|
108
|
+
normalizedValue: fallback,
|
|
109
|
+
});
|
|
110
|
+
return fallback;
|
|
111
|
+
}
|
|
112
|
+
export function parseBooleanField(value, params) {
|
|
113
|
+
const fallback = params.fallback ?? false;
|
|
114
|
+
if (typeof value === "boolean")
|
|
115
|
+
return value;
|
|
116
|
+
params.errors.push({
|
|
117
|
+
code: "DEFAULT_APPLIED",
|
|
118
|
+
severity: "warning",
|
|
119
|
+
message: `Missing boolean at ${params.path}; defaulted to ${fallback}.`,
|
|
120
|
+
paths: [params.path],
|
|
121
|
+
entityId: params.entityId,
|
|
122
|
+
source: params.source,
|
|
123
|
+
originalValue: value,
|
|
124
|
+
normalizedValue: fallback,
|
|
125
|
+
});
|
|
126
|
+
return fallback;
|
|
127
|
+
}
|
|
128
|
+
export function parseDaysToLiquidation(value, params) {
|
|
129
|
+
if (value === "Infinity" || value === "MoreThanAYear")
|
|
130
|
+
return value;
|
|
131
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
132
|
+
return value;
|
|
133
|
+
if (typeof value === "string") {
|
|
134
|
+
const parsed = Number(value);
|
|
135
|
+
if (Number.isFinite(parsed))
|
|
136
|
+
return parsed;
|
|
137
|
+
}
|
|
138
|
+
params.errors.push({
|
|
139
|
+
code: "DEFAULT_APPLIED",
|
|
140
|
+
severity: "warning",
|
|
141
|
+
message: `Failed to parse daysToLiquidation at ${params.path}; defaulted to Infinity.`,
|
|
142
|
+
paths: [params.path],
|
|
143
|
+
entityId: params.entityId,
|
|
144
|
+
source: params.source,
|
|
145
|
+
originalValue: String(value),
|
|
146
|
+
normalizedValue: "Infinity",
|
|
147
|
+
});
|
|
148
|
+
return "Infinity";
|
|
149
|
+
}
|
|
150
|
+
export function parseTimestampField(value, params) {
|
|
151
|
+
if (!value) {
|
|
152
|
+
params.errors.push({
|
|
153
|
+
code: "DEFAULT_APPLIED",
|
|
154
|
+
severity: "warning",
|
|
155
|
+
message: `Missing timestamp at ${params.path}; defaulted to 0.`,
|
|
156
|
+
paths: [params.path],
|
|
157
|
+
entityId: params.entityId,
|
|
158
|
+
source: params.source,
|
|
159
|
+
normalizedValue: 0,
|
|
160
|
+
});
|
|
161
|
+
return 0;
|
|
162
|
+
}
|
|
163
|
+
const parsed = Date.parse(value);
|
|
164
|
+
if (Number.isFinite(parsed))
|
|
165
|
+
return Math.floor(parsed / 1000);
|
|
166
|
+
params.errors.push({
|
|
167
|
+
code: "DEFAULT_APPLIED",
|
|
168
|
+
severity: "warning",
|
|
169
|
+
message: `Failed to parse timestamp at ${params.path}; defaulted to 0.`,
|
|
170
|
+
paths: [params.path],
|
|
171
|
+
entityId: params.entityId,
|
|
172
|
+
source: params.source,
|
|
173
|
+
originalValue: value,
|
|
174
|
+
normalizedValue: 0,
|
|
175
|
+
});
|
|
176
|
+
return 0;
|
|
177
|
+
}
|
|
178
|
+
export function parsePerformanceFee(value, params) {
|
|
179
|
+
try {
|
|
180
|
+
const parsed = Number(formatUnits(BigInt(value ?? "0"), 18));
|
|
181
|
+
if (Number.isFinite(parsed))
|
|
182
|
+
return parsed;
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// handled below
|
|
186
|
+
}
|
|
187
|
+
params.errors.push({
|
|
188
|
+
code: "DEFAULT_APPLIED",
|
|
189
|
+
severity: "warning",
|
|
190
|
+
message: `Failed to parse performance fee at ${params.path}; defaulted to 0.`,
|
|
191
|
+
paths: [params.path],
|
|
192
|
+
entityId: params.entityId,
|
|
193
|
+
source: params.source,
|
|
194
|
+
originalValue: value,
|
|
195
|
+
normalizedValue: 0,
|
|
196
|
+
});
|
|
197
|
+
return 0;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=parsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../../src/utils/parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,UAAU,EAAE,MAAM,MAAM,CAAC;AAY7D,MAAM,CAAC,MAAM,YAAY,GAAG,4CAAuD,CAAC;AAEpF,MAAM,UAAU,gBAAgB,CAC/B,KAAyB,EACzB,MAA+B;IAE/B,IAAI,CAAC;QACJ,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,6BAA6B,MAAM,CAAC,IAAI,mBAAmB;YACpE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,GAAG;SACpB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED,MAAM,UAAU,aAAa,CAC5B,KAAyB,EACzB,MAA+B;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,GAAG,GAAG,CAAC;IAEjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,4BAA4B,MAAM,CAAC,IAAI,mBAAmB;QACnE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,KAAyB,EACzB,MAGC;IAED,IAAI,KAAK,EAAE,CAAC;QACX,IAAI,CAAC;YACJ,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACR,gBAAgB;QACjB,CAAC;IACF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC;IACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,iCAAiC,MAAM,CAAC,IAAI,kBAAkB,MAAM,CAAC,aAAa,IAAI,cAAc,GAAG;QAChH,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,QAAQ;KACzB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,KAA2B,EAC3B,MAA+B;IAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,4BAA4B,MAAM,CAAC,IAAI,6BAA6B;YAC7E,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,EAAE;SACnB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACjC,iBAAiB,CAAC,KAAK,EAAE;QACxB,GAAG,MAAM;QACT,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG;KAChC,CAAC,CACF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,KAAyB,EACzB,MAEC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,qBAAqB,MAAM,CAAC,IAAI,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;QACtF,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,QAAQ;KACzB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC/B,KAAyB,EACzB,MAEC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEtE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,gCAAgC,MAAM,CAAC,IAAI,kBAAkB,QAAQ,GAAG;QACjF,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,QAAQ;KACzB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,KAA0B,EAC1B,MAEC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,sBAAsB,MAAM,CAAC,IAAI,kBAAkB,QAAQ,GAAG;QACvE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,QAAQ;KACzB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,KAAsB,EACtB,MAA+B;IAE/B,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,eAAe;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,wCAAwC,MAAM,CAAC,IAAI,0BAA0B;QACtF,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;QAC5B,eAAe,EAAE,UAAU;KAC3B,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAClC,KAAyB,EACzB,MAA+B;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAClB,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,wBAAwB,MAAM,CAAC,IAAI,mBAAmB;YAC/D,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,eAAe,EAAE,CAAC;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,CAAC;IACV,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,gCAAgC,MAAM,CAAC,IAAI,mBAAmB;QACvE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACV,CAAC;AAED,MAAM,UAAU,mBAAmB,CAClC,KAAyB,EACzB,MAA+B;IAE/B,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACR,gBAAgB;IACjB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,sCAAsC,MAAM,CAAC,IAAI,mBAAmB;QAC7E,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ABIService } from "../services/abiService/abiService.js";
|
|
2
|
+
import type { AccountOnchainAdapter } from "../services/accountService/adapters/accountOnchainAdapter/accountOnchainAdapter.js";
|
|
3
|
+
import type { AccountVaultsSubgraphAdapter } from "../services/accountService/adapters/accountOnchainAdapter/accountVaultsSubgraphAdapter.js";
|
|
4
|
+
import type { AccountV3Adapter } from "../services/accountService/adapters/accountV3Adapter/accountV3Adapter.js";
|
|
5
|
+
import type { DeploymentService } from "../services/deploymentService/deploymentService.js";
|
|
6
|
+
import type { EulerLabelsURLAdapter } from "../services/eulerLabelsService/eulerLabelsService.js";
|
|
7
|
+
import type { IntrinsicApyV3Adapter } from "../services/intrinsicApyService/adapters/intrinsicApyV3Adapter/index.js";
|
|
8
|
+
import type { OracleAdapterService } from "../services/oracleAdapterService/oracleAdapterService.js";
|
|
9
|
+
import type { PricingBackendClient } from "../services/priceService/backendClient.js";
|
|
10
|
+
import type { PriceService } from "../services/priceService/priceService.js";
|
|
11
|
+
import type { RewardsDirectAdapter } from "../services/rewardsService/adapters/rewardsDirectAdapter/index.js";
|
|
12
|
+
import type { RewardsV3Adapter } from "../services/rewardsService/adapters/rewardsV3Adapter/index.js";
|
|
13
|
+
import type { RewardsService } from "../services/rewardsService/rewardsService.js";
|
|
14
|
+
import type { SwapService } from "../services/swapService/swapService.js";
|
|
15
|
+
import type { TokenlistService } from "../services/tokenlistService/tokenlistService.js";
|
|
16
|
+
import type { WalletOnchainAdapter } from "../services/walletService/adapters/walletOnchainAdapter.js";
|
|
17
|
+
import type { EVaultOnchainAdapter } from "../services/vaults/eVaultService/adapters/eVaultOnchainAdapter/eVaultOnchainAdapter.js";
|
|
18
|
+
import type { EVaultV3Adapter } from "../services/vaults/eVaultService/adapters/eVaultV3Adapter/eVaultV3Adapter.js";
|
|
19
|
+
import type { EulerEarnOnchainAdapter } from "../services/vaults/eulerEarnService/adapters/eulerEarnOnchainAdapter.js";
|
|
20
|
+
import type { EulerEarnV3Adapter } from "../services/vaults/eulerEarnService/adapters/eulerEarnV3Adapter.js";
|
|
21
|
+
import type { SecuritizeVaultOnchainAdapter } from "../services/vaults/securitizeVaultService/adapters/securitizeVaultOnchainAdapter.js";
|
|
22
|
+
import type { VaultTypeSubgraphAdapter } from "../services/vaults/vaultMetaService/adapters/VaultTypeSubgraphAdapter.js";
|
|
23
|
+
import type { VaultTypeV3Adapter } from "../services/vaults/vaultMetaService/adapters/VaultTypeV3Adapter.js";
|
|
24
|
+
import type { BatchSimulationAdapter } from "../plugins/batchSimulation.js";
|
|
25
|
+
import type { KeyringPluginAdapter } from "../plugins/keyring/keyringPlugin.js";
|
|
26
|
+
import type { PythPluginAdapter } from "../plugins/pyth/pythPlugin.js";
|
|
27
|
+
export type QueryMethodName<T> = Extract<keyof T, `query${string}`>;
|
|
28
|
+
export type EulerSDKQueryName = QueryMethodName<ABIService> | QueryMethodName<AccountOnchainAdapter> | QueryMethodName<AccountVaultsSubgraphAdapter> | QueryMethodName<AccountV3Adapter> | QueryMethodName<typeof DeploymentService> | QueryMethodName<EulerLabelsURLAdapter> | QueryMethodName<IntrinsicApyV3Adapter> | QueryMethodName<OracleAdapterService> | QueryMethodName<PricingBackendClient> | QueryMethodName<PriceService> | QueryMethodName<RewardsDirectAdapter> | QueryMethodName<RewardsV3Adapter> | QueryMethodName<RewardsService> | QueryMethodName<SwapService> | QueryMethodName<TokenlistService> | QueryMethodName<WalletOnchainAdapter> | QueryMethodName<EVaultOnchainAdapter> | QueryMethodName<EVaultV3Adapter> | QueryMethodName<EulerEarnOnchainAdapter> | QueryMethodName<EulerEarnV3Adapter> | QueryMethodName<SecuritizeVaultOnchainAdapter> | QueryMethodName<VaultTypeSubgraphAdapter> | QueryMethodName<VaultTypeV3Adapter> | QueryMethodName<BatchSimulationAdapter> | QueryMethodName<KeyringPluginAdapter> | QueryMethodName<PythPluginAdapter>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryNames.js","sourceRoot":"","sources":["../../../src/utils/queryNames.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Address, type Hex, type PublicClient } from "viem";
|
|
2
|
+
type CallParams = {
|
|
3
|
+
data: Hex;
|
|
4
|
+
to: Address;
|
|
5
|
+
from?: Address;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Discover storage slots accessed by a call using eth_createAccessList.
|
|
9
|
+
* Works on all nodes including Anvil (unlike debug_traceCall with prestateTracer).
|
|
10
|
+
*
|
|
11
|
+
* @returns Map from contract address to list of storage slots accessed
|
|
12
|
+
*/
|
|
13
|
+
export declare function getAccessedSlots(client: PublicClient, params: CallParams): Promise<Map<Address, Hex[]>>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getAddress } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Discover storage slots accessed by a call using eth_createAccessList.
|
|
4
|
+
* Works on all nodes including Anvil (unlike debug_traceCall with prestateTracer).
|
|
5
|
+
*
|
|
6
|
+
* @returns Map from contract address to list of storage slots accessed
|
|
7
|
+
*/
|
|
8
|
+
export async function getAccessedSlots(client, params) {
|
|
9
|
+
const tx = {
|
|
10
|
+
to: params.to,
|
|
11
|
+
data: params.data,
|
|
12
|
+
...(params.from ? { from: params.from } : {}),
|
|
13
|
+
};
|
|
14
|
+
const result = (await client.request({
|
|
15
|
+
method: "eth_createAccessList",
|
|
16
|
+
params: [tx, "latest"],
|
|
17
|
+
}));
|
|
18
|
+
const map = new Map();
|
|
19
|
+
for (const entry of result.accessList || []) {
|
|
20
|
+
map.set(getAddress(entry.address), (entry.storageKeys || []));
|
|
21
|
+
}
|
|
22
|
+
return map;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=accessList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessList.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/accessList.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,UAAU,EAAE,MAAM,MAAM,CAAC;AAQ7E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,MAAoB,EACpB,MAAkB;IAElB,MAAM,EAAE,GAAG;QACV,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;QACpC,MAAM,EAAE,sBAA6B;QACrC,MAAM,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAQ;KAC7B,CAAC,CAAQ,CAAC;IAEX,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC7C,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAU,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Address, type PublicClient, type StateMapping, type StateOverride } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Compute Permit2 allowance storage slots for the given approvals.
|
|
4
|
+
*
|
|
5
|
+
* Permit2 uses: mapping(owner => mapping(token => mapping(spender => PackedAllowance)))
|
|
6
|
+
* Storage slot 1 is the base slot for the allowance mapping.
|
|
7
|
+
*/
|
|
8
|
+
export declare function computePermit2StateDiff(account: Address, approvals: [Address, Address][]): StateMapping;
|
|
9
|
+
/**
|
|
10
|
+
* Generate state overrides for ERC20 approvals and Permit2 allowances.
|
|
11
|
+
*
|
|
12
|
+
* 1. Computes Permit2 storage slots deterministically (keccak256 mapping layout)
|
|
13
|
+
* 2. Traces actual ERC20 approve() calls to discover approval storage slots
|
|
14
|
+
*
|
|
15
|
+
* @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
|
|
16
|
+
* @param account - token owner address
|
|
17
|
+
* @param approvals - array of [assetAddress, spenderAddress] pairs
|
|
18
|
+
* @param permit2Address - Permit2 contract address
|
|
19
|
+
*/
|
|
20
|
+
export declare function getApprovalOverrides(client: PublicClient, account: Address, approvals: [Address, Address][], permit2Address: Address): Promise<StateOverride>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { erc20Abi, encodePacked, getAddress, hexToBigInt, keccak256, maxUint256, toHex, } from "viem";
|
|
2
|
+
import { encodeFunctionData } from "viem/utils";
|
|
3
|
+
import { getAccessedSlots } from "./accessList.js";
|
|
4
|
+
/**
|
|
5
|
+
* Compute Permit2 allowance storage slots for the given approvals.
|
|
6
|
+
*
|
|
7
|
+
* Permit2 uses: mapping(owner => mapping(token => mapping(spender => PackedAllowance)))
|
|
8
|
+
* Storage slot 1 is the base slot for the allowance mapping.
|
|
9
|
+
*/
|
|
10
|
+
export function computePermit2StateDiff(account, approvals) {
|
|
11
|
+
const stateDiff = [];
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
for (const [asset, spender] of approvals) {
|
|
14
|
+
// Permit2 allowance mapping: mapping(address owner => mapping(address token => mapping(address spender => PackedAllowance)))
|
|
15
|
+
// Slot 1 is the base mapping slot
|
|
16
|
+
const baseSlot = keccak256(encodePacked(["uint256", "uint256"], [hexToBigInt(account), 1n]));
|
|
17
|
+
const assetSlot = keccak256(encodePacked(["uint256", "uint256"], [hexToBigInt(asset), hexToBigInt(baseSlot)]));
|
|
18
|
+
const spenderSlot = keccak256(encodePacked(["uint256", "uint256"], [hexToBigInt(spender), hexToBigInt(assetSlot)]));
|
|
19
|
+
if (!seen.has(spenderSlot)) {
|
|
20
|
+
seen.add(spenderSlot);
|
|
21
|
+
stateDiff.push({ slot: spenderSlot, value: toHex(maxUint256) });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return stateDiff;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Discover ERC20 allowance storage slots using eth_createAccessList,
|
|
28
|
+
* then create overrides that set them to maxUint256.
|
|
29
|
+
*
|
|
30
|
+
* Traces allowance(account, permit2) to find candidate slots, then
|
|
31
|
+
* tests each by overriding and re-reading to verify.
|
|
32
|
+
*/
|
|
33
|
+
async function discoverAllowanceSlots(client, account, assets, permit2) {
|
|
34
|
+
const stateOverride = [];
|
|
35
|
+
const valueHex = toHex(maxUint256, { size: 32 });
|
|
36
|
+
for (const asset of assets) {
|
|
37
|
+
try {
|
|
38
|
+
const accessedSlots = await getAccessedSlots(client, {
|
|
39
|
+
data: encodeFunctionData({
|
|
40
|
+
abi: erc20Abi,
|
|
41
|
+
functionName: "allowance",
|
|
42
|
+
args: [account, permit2],
|
|
43
|
+
}),
|
|
44
|
+
to: asset,
|
|
45
|
+
});
|
|
46
|
+
const tokenSlots = accessedSlots.get(getAddress(asset));
|
|
47
|
+
if (!tokenSlots || tokenSlots.length === 0)
|
|
48
|
+
continue;
|
|
49
|
+
// Test each candidate: override slot with maxUint256, read allowance, verify
|
|
50
|
+
const testResults = await Promise.all(tokenSlots.map((slot) => client
|
|
51
|
+
.readContract({
|
|
52
|
+
abi: erc20Abi,
|
|
53
|
+
address: asset,
|
|
54
|
+
functionName: "allowance",
|
|
55
|
+
args: [account, permit2],
|
|
56
|
+
stateOverride: [
|
|
57
|
+
{
|
|
58
|
+
address: asset,
|
|
59
|
+
stateDiff: [{ slot, value: valueHex }],
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
})
|
|
63
|
+
.catch(() => 0n)));
|
|
64
|
+
const stateDiff = [];
|
|
65
|
+
for (let i = 0; i < tokenSlots.length; i++) {
|
|
66
|
+
if (testResults[i] === maxUint256) {
|
|
67
|
+
stateDiff.push({ slot: tokenSlots[i], value: valueHex });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (stateDiff.length > 0) {
|
|
71
|
+
stateOverride.push({ address: asset, stateDiff });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
console.warn(`[approvalOverrides] slot discovery failed for ${asset}:`, e);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return stateOverride;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Generate state overrides for ERC20 approvals and Permit2 allowances.
|
|
82
|
+
*
|
|
83
|
+
* 1. Computes Permit2 storage slots deterministically (keccak256 mapping layout)
|
|
84
|
+
* 2. Traces actual ERC20 approve() calls to discover approval storage slots
|
|
85
|
+
*
|
|
86
|
+
* @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
|
|
87
|
+
* @param account - token owner address
|
|
88
|
+
* @param approvals - array of [assetAddress, spenderAddress] pairs
|
|
89
|
+
* @param permit2Address - Permit2 contract address
|
|
90
|
+
*/
|
|
91
|
+
export async function getApprovalOverrides(client, account, approvals, permit2Address) {
|
|
92
|
+
if (approvals.length === 0)
|
|
93
|
+
return [];
|
|
94
|
+
const stateOverride = [];
|
|
95
|
+
// 1. Permit2 allowance overrides (deterministic slot computation)
|
|
96
|
+
const permit2StateDiff = computePermit2StateDiff(account, approvals);
|
|
97
|
+
if (permit2StateDiff.length > 0) {
|
|
98
|
+
stateOverride.push({
|
|
99
|
+
address: permit2Address,
|
|
100
|
+
stateDiff: permit2StateDiff,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// 2. ERC20 approval overrides (discovered via eth_createAccessList)
|
|
104
|
+
const uniqueAssets = [
|
|
105
|
+
...new Set(approvals.map(([asset]) => getAddress(asset))),
|
|
106
|
+
];
|
|
107
|
+
const allowanceOverrides = await discoverAllowanceSlots(client, account, uniqueAssets, permit2Address);
|
|
108
|
+
stateOverride.push(...allowanceOverrides);
|
|
109
|
+
return stateOverride;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=approvalOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvalOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/approvalOverrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Address, type PublicClient, type StateOverride } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Generate state overrides that give `account` sufficient ERC20 balances.
|
|
4
|
+
*
|
|
5
|
+
* For each token where the on-chain balance is below the requested amount,
|
|
6
|
+
* uses eth_createAccessList to discover the balanceOf storage slot, then builds
|
|
7
|
+
* a stateDiff that sets that slot to the desired value.
|
|
8
|
+
*
|
|
9
|
+
* @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
|
|
10
|
+
* @param account - address whose balance to override
|
|
11
|
+
* @param tokens - array of [tokenAddress, requiredAmount]
|
|
12
|
+
*/
|
|
13
|
+
export declare function getBalanceOverrides(client: PublicClient, account: Address, tokens: [Address, bigint][]): Promise<StateOverride>;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { erc20Abi, getAddress, numberToHex, } from "viem";
|
|
2
|
+
import { encodeFunctionData } from "viem/utils";
|
|
3
|
+
import { getAccessedSlots } from "./accessList.js";
|
|
4
|
+
const balanceSlotCache = new Map();
|
|
5
|
+
// wM token requires special storage layout handling
|
|
6
|
+
const WM_CONTRACT = "0x437cc33344a0B27A429f795ff6B469C72698B291";
|
|
7
|
+
function shouldSkipCaching(token) {
|
|
8
|
+
return getAddress(token) === getAddress(WM_CONTRACT);
|
|
9
|
+
}
|
|
10
|
+
function applySpecialCasing(stateOverride) {
|
|
11
|
+
const result = [];
|
|
12
|
+
for (const override of stateOverride) {
|
|
13
|
+
if (getAddress(override.address) === getAddress(WM_CONTRACT) &&
|
|
14
|
+
override.stateDiff) {
|
|
15
|
+
// wM token: shift values left by 8 bits and write to adjacent slot
|
|
16
|
+
const newStateDiff = override.stateDiff.flatMap((diff) => {
|
|
17
|
+
const shiftedValue = `0x${(BigInt(diff.value) << 8n)
|
|
18
|
+
.toString(16)
|
|
19
|
+
.padStart(64, "0")}`;
|
|
20
|
+
return [
|
|
21
|
+
{ slot: diff.slot, value: shiftedValue },
|
|
22
|
+
{
|
|
23
|
+
slot: `0x${(BigInt(diff.slot) + 1n)
|
|
24
|
+
.toString(16)
|
|
25
|
+
.padStart(64, "0")}`,
|
|
26
|
+
value: shiftedValue,
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
});
|
|
30
|
+
result.push({ ...override, stateDiff: newStateDiff });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
result.push(override);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
function findIndexOfLargest(arr) {
|
|
39
|
+
if (arr.length === 0)
|
|
40
|
+
return -1;
|
|
41
|
+
let maxIndex = 0;
|
|
42
|
+
let maxValue = arr[0];
|
|
43
|
+
for (let i = 1; i < arr.length; i++) {
|
|
44
|
+
if (arr[i] > maxValue) {
|
|
45
|
+
maxValue = arr[i];
|
|
46
|
+
maxIndex = i;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return maxIndex;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate state overrides that give `account` sufficient ERC20 balances.
|
|
53
|
+
*
|
|
54
|
+
* For each token where the on-chain balance is below the requested amount,
|
|
55
|
+
* uses eth_createAccessList to discover the balanceOf storage slot, then builds
|
|
56
|
+
* a stateDiff that sets that slot to the desired value.
|
|
57
|
+
*
|
|
58
|
+
* @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
|
|
59
|
+
* @param account - address whose balance to override
|
|
60
|
+
* @param tokens - array of [tokenAddress, requiredAmount]
|
|
61
|
+
*/
|
|
62
|
+
export async function getBalanceOverrides(client, account, tokens) {
|
|
63
|
+
if (tokens.length === 0)
|
|
64
|
+
return [];
|
|
65
|
+
const chainId = client.chain?.id;
|
|
66
|
+
if (!chainId)
|
|
67
|
+
throw new Error("Client must have a chain configured");
|
|
68
|
+
const stateOverride = [];
|
|
69
|
+
// Batch-read current balances
|
|
70
|
+
const currentBalances = await Promise.all(tokens.map(([token]) => client
|
|
71
|
+
.readContract({
|
|
72
|
+
abi: erc20Abi,
|
|
73
|
+
address: token,
|
|
74
|
+
functionName: "balanceOf",
|
|
75
|
+
args: [account],
|
|
76
|
+
})
|
|
77
|
+
.catch(() => 0n)));
|
|
78
|
+
for (const [i, [token, requiredAmount]] of tokens.entries()) {
|
|
79
|
+
const currentBalance = currentBalances[i] ?? 0n;
|
|
80
|
+
if (currentBalance >= requiredAmount)
|
|
81
|
+
continue;
|
|
82
|
+
const cacheKey = `${chainId}:${account}:${token}`;
|
|
83
|
+
const valueHex = numberToHex(requiredAmount, { size: 32 });
|
|
84
|
+
// Check cache first
|
|
85
|
+
const cached = balanceSlotCache.get(cacheKey);
|
|
86
|
+
if (cached && !shouldSkipCaching(token)) {
|
|
87
|
+
stateOverride.push({
|
|
88
|
+
address: cached.address,
|
|
89
|
+
stateDiff: [{ slot: cached.slot, value: valueHex }],
|
|
90
|
+
});
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
// Use eth_createAccessList to find candidate storage slots
|
|
94
|
+
try {
|
|
95
|
+
const accessedSlots = await getAccessedSlots(client, {
|
|
96
|
+
data: encodeFunctionData({
|
|
97
|
+
abi: erc20Abi,
|
|
98
|
+
functionName: "balanceOf",
|
|
99
|
+
args: [account],
|
|
100
|
+
}),
|
|
101
|
+
to: token,
|
|
102
|
+
});
|
|
103
|
+
const tokenSlots = accessedSlots.get(getAddress(token));
|
|
104
|
+
if (!tokenSlots || tokenSlots.length === 0)
|
|
105
|
+
continue;
|
|
106
|
+
const candidateSlots = tokenSlots.map((slot) => ({
|
|
107
|
+
address: getAddress(token),
|
|
108
|
+
slot,
|
|
109
|
+
}));
|
|
110
|
+
if (candidateSlots.length === 0)
|
|
111
|
+
continue;
|
|
112
|
+
// Test each candidate: override slot → read balanceOf → pick best
|
|
113
|
+
const testBalances = await Promise.all(candidateSlots.map((slot) => client
|
|
114
|
+
.readContract({
|
|
115
|
+
abi: erc20Abi,
|
|
116
|
+
address: token,
|
|
117
|
+
functionName: "balanceOf",
|
|
118
|
+
args: [account],
|
|
119
|
+
stateOverride: [
|
|
120
|
+
{
|
|
121
|
+
address: slot.address,
|
|
122
|
+
stateDiff: [{ slot: slot.slot, value: valueHex }],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
})
|
|
126
|
+
.catch(() => 0n)));
|
|
127
|
+
const bestIdx = findIndexOfLargest(testBalances);
|
|
128
|
+
const bestSlot = candidateSlots[bestIdx];
|
|
129
|
+
if (bestSlot) {
|
|
130
|
+
stateOverride.push({
|
|
131
|
+
address: bestSlot.address,
|
|
132
|
+
stateDiff: [{ slot: bestSlot.slot, value: valueHex }],
|
|
133
|
+
});
|
|
134
|
+
if (!shouldSkipCaching(token)) {
|
|
135
|
+
balanceSlotCache.set(cacheKey, bestSlot);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
console.warn(`[balanceOverrides] slot discovery failed for ${token}:`, e);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return applySpecialCasing(stateOverride);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=balanceOverrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balanceOverrides.js","sourceRoot":"","sources":["../../../../src/utils/stateOverrides/balanceOverrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Address, type PublicClient, type StateOverride } from "viem";
|
|
2
|
+
import type { TransactionPlan } from "../../services/executionService/executionServiceTypes.js";
|
|
3
|
+
export type DeriveStateOverridesOptions = {
|
|
4
|
+
/** Override the native (ETH) balance. Defaults to 1000 ETH. Set to 0n to skip. */
|
|
5
|
+
nativeBalance?: bigint;
|
|
6
|
+
/** Permit2 contract address. Required for approval overrides. */
|
|
7
|
+
permit2Address: Address;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Generate all state overrides needed to simulate a TransactionPlan
|
|
11
|
+
* for an account that may not have sufficient tokens or approvals.
|
|
12
|
+
*
|
|
13
|
+
* Combines:
|
|
14
|
+
* - Native balance override (ETH)
|
|
15
|
+
* - ERC20 balance overrides (via storage slot discovery)
|
|
16
|
+
* - ERC20 approval + Permit2 allowance overrides
|
|
17
|
+
*
|
|
18
|
+
* @param client - viem PublicClient (must support eth_createAccessList and eth_call with state overrides)
|
|
19
|
+
* @param plan - TransactionPlan from the SDK's execution service
|
|
20
|
+
* @param account - the connected wallet address
|
|
21
|
+
* @param options - Permit2 address and optional native balance override
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const plan = sdk.executionService.planDeposit({ ... })
|
|
26
|
+
* const permit2 = sdk.deploymentService.getDeployment(chainId).addresses.coreAddrs.permit2
|
|
27
|
+
* const overrides = await deriveStateOverrides(client, plan, account, { permit2Address: permit2 })
|
|
28
|
+
* // Use overrides with simulateContract or eth_call
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function deriveStateOverrides(client: PublicClient, plan: TransactionPlan, account: Address, options: DeriveStateOverridesOptions): Promise<StateOverride>;
|