{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"468217df-63ba-4399-a62e-2cffa0838116","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"1e4a83049a1fcd76c8201b472602dca5328056b555f250946d0a4111b1b1f362","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"15b04fc8f60521936b9e2b37c09a804685ec689fc98cd5b04510d986d3106a15","skillId":"build-contract-project","state":"accepted"}],"objective":"# JOB: Factory + re-mine salt\n# REPO: (current repo)\n# CONSTRAINT: Offline. No external fetches. No live RPC.\n\n## Context\n- The hook must deploy via CREATE2 (requires a contract, not EOA)\n- The EOA deploying the factory: 0xdbeab8243F318F1bBF815d85a8A869def1510b61\n- The EOA's current nonce: 2 (next tx uses nonce 2)\n- The factory will be deployed via regular CREATE from that EOA at nonce 2\n- The factory then deploys SigmaHook via CREATE2\n\n## 1. Write src/DeployFactory.sol\n- Minimal contract, Solidity 0.8.26\n- Constructor: none\n- Ownable: 0xdbeab8243F318F1bBF815d85a8A869def1510b61\n- Function deployHook(bytes32 salt, address manager, address owner, address token):\n  - CREATE2 deploys SigmaHook with salt, constructor args (manager, owner, token, address(this))\n  - Returns hook address\n- Function createPool(address hook, address currency0, address currency1):\n  - Calls poolManager.createPool with PoolKey(currency0, currency1, 12500, 60, hook)\n  - Must be called by owner\n- The factory's address becomes the `factory_` constructor arg in SigmaHook\n\n## 2. Compute factory address\n- Deterministic: keccak256(rlp([0xdbeab8243F318F1bBF815d85a8A869def1510b61, 2]))[12:]\n- This is the factory's on-chain address after deployment\n\n## 3. Re-mine hook salt\n- Deployer = factory address (from step 2)\n- Owner = 0xdbeab8243F318F1bBF815d85a8A869def1510b61\n- Manager = 0x8366a39CC670B4001A1121B8F6A443A643e40951\n- launchToken = 0x4fe865ad3b3ef64b2af9c38c78abf5c6e68c1164\n- factory_ = factory address (from step 2)\n- Required suffix: 0x1040\n- Run: forge script script/MineSalt.s.sol --sig \"mineWith(address,address,address,address,address,uint256,uint256)\" with the above values\n\n## 4. Output\n- FACTORY_ADDRESS: 0x...\n- HOOK_SALT: 0x...\n- HOOK_ADDRESS: 0x...1040\n- INIT_CODE_HASH: 0x...\n- DEPLOY_SEQUENCE:\n  1. Tx 1 (from EOA, nonce 2): deploy factory\n  2. Tx 2 (from EOA, to factory): factory.deployHook(salt, manager, owner, token)\n  3. Tx 3 (from EOA, to factory): factory.createPool(hook, ETH, SHK)\n  4. Tx 4 (from EOA, to hook): hook.deposit(...) — first LP\n  5. Tx 5 (from EOA, to hook): hook.setMode(1) — STANDARD\n\n## 5. Verify\n- forge build\n- forge test\n- forge script script/MineSalt.s.sol --sig \"verifyRecorded()\"","parentJobId":"1364ad9b-b21a-42e9-bbc7-d0cf763c0ef0","planHash":"75055bd774e189992a29e6d1fc8e8ac4bcdb15cb30a94f9b32435fd43f2561c3","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"3bc9ffc9-2c14-4259-b152-0359575ece53","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2680-uniswap-v4-hook"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52658","feedbackHash":"bc3eae0dfa953b98797473a9c4ea9e1f4506728b849dc7bec2d575f90b5f4f9c","nodeKey":"build_contract_project","submissionHash":"1e4a83049a1fcd76c8201b472602dca5328056b555f250946d0a4111b1b1f362","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"2ec01c46d6c0b964cd612deca8d575e78a4f5d54d161d6563d6a2133eac8d314","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"8402e41d12d9945312d44fde875de89eceb389d2052bab51121cb39adcb61d31","device":"357c657d67170495","findings":[],"hash":"1e4a83049a1fcd76c8201b472602dca5328056b555f250946d0a4111b1b1f362","nodeId":"612b60d9-49cc-4e18-a03c-ddf787e32a36","outcome":"completed","summary":"Implemented the factory, deployment tests, and documentation.\n\n```text\nFACTORY_ADDRESS: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\nHOOK_SALT: 0x000000000000000000000000000000000000000000000000000000000001762c\nHOOK_ADDRESS: 0xB259cb6965FD49df82a415920Ac61DF370cB1040\nINIT_CODE_HASH: 0xd09c16e2448f647d24add8afafe9f5e94196ab26a56d0592ff129a016827aa3c\n```\n\nDEPLOY_SEQUENCE:\n\n1. EOA, nonce 2: deploy factory using CREATE.\n2. EOA → factory: `deployHook(salt, manager, owner, token)`.\n3. EOA → factory: `createPool(hook, ETH, SHK)`.\n4. EOA → hook: `deposit(...)` — first LP.\n5. EOA → hook: `setMode(1)` — STANDARD.\n\nSHK approval may require an additional transaction before deposit. Live manager `createPool` compatibility remains unverified under the offline constraint.\n\nPassed: `forge build`, all **160 tests** with the supplied seed, `forge fmt --check`, and `verifyRecorded()`.\n\nExact parameters and operational instructions are in [README.md](/home/seat/.identitymd/work/468217df-63ba-4399-a62e-2cffa0838116/612b60d9-49cc-4e18-a03c-ddf787e32a36/README.md:95). Nothing was deployed.","treeHash":"59bc98a6462482965c91ac8ce3adcec982839b00","usage":{"cachedInputTokens":1537920,"inputTokens":75900,"model":"gpt-6-astra","outputTokens":24878,"runtime":"codex","turns":7,"wallClockMs":793979}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8a28a065f3378b87","findings":[],"hash":"bf8a5d82ebe8be1d0ff073510e055a02fa7d820098628d2b1af54769d1dd8ae1","nodeId":"612b60d9-49cc-4e18-a03c-ddf787e32a36","outcome":"failed","summary":"Your access token could not be refreshed because your refresh token was revoked. Please log out and sign in again.","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"gpt-6-astra","outputTokens":0,"runtime":"codex","turns":0,"wallClockMs":2738}}],"verification":[{"checks":[{"durationMs":75779,"exitCode":0,"name":"build","output":"Compiling 121 files with Solc 0.8.26\nSolc 0.8.26 finished in 75.66s\nCompiler run successful!\n","passed":true},{"durationMs":7741,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 6 tests for test/WethVaultIntegration.t.sol:WethVaultIntegrationTest\n[PASS] test_emergencyReturnsWrappedEtherToChosenReceiverWithoutUnwrapping() (gas: 1108108)\n[PASS] test_firstDepositAfterEmptyPoolMoveRecentresBandOnFeed() (gas: 904744)\n[PASS] test_priceAboveLaunchSoleVaultReserveExactInputRebalance() (gas: 1496306)\n[PASS] test_priceAboveLaunchSoleVaultReserveExactOutputRebalance() (gas: 1495467)\n[PASS] test_priceBelowLaunchSoleVaultReserveExactInputRebalance() (gas: 1496001)\n[PASS] test_priceBelowLaunchSoleVaultReserveExactOutputRebalance() (gas: 1495512)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 90.35ms (10.73ms CPU time)\n\nRan 18 tests for test/DeployFactory.t.sol:DeployFactoryTest\n[PASS] testFuzz_onlyOwnerCanDeployOrCreatePool(address) (runs: 32, μ: 64488, ~: 64567)\n[PASS] test_createPoolCannotRebindInitializedHook() (gas: 14747249)\n[PASS] test_createPoolForwardsExactKeyAndFactorySenderToHooksManager() (gas: 14725829)\n[PASS] test_createPoolRejectsInvalidCurrencyOrderEqualCurrenciesAndMissingToken() (gas: 14519183)\n[PASS] test_createPoolRejectsUnknownHooks() (gas: 35931)\n[PASS] test_directManagerInitializationCannotBypassFactory() (gas: 14760769)\n[PASS] test_duplicateSaltRevertsWithoutChangingExistingHook() (gas: 18414639)\n[PASS] test_factoryAndCodeStoresFitDeploymentLimitsAndPreserveExactInitCode() (gas: 264749)\n[PASS] test_fullSequenceFirstNativeDepositStandardModeAndExit() (gas: 15614579)\n[PASS] test_managerFailureBubblesAndInitializationCanBeRetried() (gas: 14845683)\n[PASS] test_noOpManagerCannotReportSuccessfulPoolCreation() (gas: 14530860)\n[PASS] test_nonceTwoCreateMatchesRlpAndAssignsExplicitOwner() (gas: 26073)\n[PASS] test_onlyFactoryOwnerCanTransferOwnershipAndZeroNewOwnerRejected() (gas: 6676020)\n[PASS] test_ownerIsExplicitEvenWhenSomeoneElseCreatesFactory() (gas: 7901845)\n[PASS] test_recordedSaltDeploysRealHookFromRealFactory() (gas: 6639509)\n[PASS] test_unminedSaltBubblesHookPermissionFailureAndCanRetry() (gas: 6675525)\n[PASS] test_upstreamManagerWithoutCreatePoolRevertsRatherThanGuessingPrice() (gas: 12015246)\n[PASS] test_zeroConstructorArgumentsRevertEvenWithMinedSalts() (gas: 22206553)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 129.99ms (206.91ms CPU time)\n\nRan 4 tests for test/NativeSafety.t.sol:NativeSafetyTest\n[PASS] testFuzz_initialDepositRefundsNativeBudgetAndMatchesFreshPreview(uint64,uint64,int24) (runs: 256, μ: 1055352, ~: 1071161)\nLogs:\n  Bound result 9900000000000000015\n  Bound result 9900000019361712421\n  Bound result -8549\n\n[PASS] test_keeperCallbackCannotReenterAndRejectedBountyRollsBack() (gas: 3006082)\n[PASS] test_ownerRescuesOnlyForcedSurplusAndCannotSweepLPCapital() (gas: 867738)\n[PASS] test_receiveAllowsOnlyManagerOrOnceConfiguredWETH() (gas: 266440)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 139.12ms (106.35ms CPU time)\n\nRan 9 tests for test/VaultFailurePaths.t.sol:VaultFailurePathsTest\n[PASS] test_allUninitializedVaultEntrypointsRefuseBeforeTokenTransfers() (gas: 51638638)\n[PASS] test_budgetAboveInt128LimitCannotHarvestFeesOrPullTokens() (gas: 1990205)\n[PASS] test_emergencyCannotBeUsedBeforeActivationAndLiveEntrypointsCloseAfterward() (gas: 1846399)\n[PASS] test_invalidPoolAttemptsDoNotPoisonLaterValidInitialization() (gas: 52833723)\n[PASS] test_invalidReceiversAreAtomicInLiveAndEmergencyModes() (gas: 2280645)\n[PASS] test_minSharesFailureAfterHarvestRestoresUncollectedFees() (gas: 2063350)\n[PASS] test_pendingAndFormerOwnerCannotActivateEmergency() (gas: 858546)\n[PASS] test_secondCurrencyWithdrawalMinimumRollsBackBurnAndPosition() (gas: 1976072)\n[PASS] test_secondTokenPullFailureRestoresHarvestMintAndFirstTokenPull() (gas: 2168970)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 145.77ms (84.55ms CPU time)\n\nRan 26 tests for test/SigmaHook.t.sol:SigmaHookTest\n[PASS] testFuzz_donationsDoNotAllowZeroShareDeposit(uint80) (runs: 256, μ: 1009845, ~: 1152596)\nLogs:\n  Bound result 123336871081227597\n\n[PASS] testFuzz_roundTripNeverCreatesAssets(uint96,uint96) (runs: 256, μ: 851603, ~: 851329)\nLogs:\n  Bound result 99999999999999004320\n  Bound result 99999999999999000096\n\n[PASS] test_balancingTradeStaysInsideBand() (gas: 1661228)\n[PASS] test_callbacksAndUnlockRefuseUnauthorizedCalls() (gas: 125067)\n[PASS] test_circularFeedUsesPostExecutionSlot0AndWraps() (gas: 2238769)\n[PASS] test_cooldownRequiresFullThirtyMinutesAndDeviation() (gas: 1972218)\n[PASS] test_deepPoolTrendRebalanceDeploysMostCapital() (gas: 1749786)\n[PASS] test_depositAndWithdrawalSlippageDeadlineAndZeroChecks() (gas: 1205584)\n[PASS] test_emergencyFreezesInvestmentButNotSwapsOrShareTransfers() (gas: 1338234)\n[PASS] test_emergencyRemovesAllLiquidityAndWithdrawsProRata() (gas: 1728691)\n[PASS] test_emptiedVaultDoesNotRebalanceUntilSomeoneDepositsAgain() (gas: 2080240)\n[PASS] test_feeOwnershipCannotBeDilutedByNewDepositor() (gas: 1668070)\n[PASS] test_firstDepositAfterPriceMoveUsesFreshBand() (gas: 1231661)\n[PASS] test_firstDepositAndProportionalSecondDeposit() (gas: 1115411)\n[PASS] test_firstDepositPullsOnlyWhatTheBandNeeds() (gas: 832992)\n[PASS] test_minedPermissionsInitializationAndExplicitOwner() (gas: 201414)\n[PASS] test_noBalancingTradeInAnEmptyPool() (gas: 1084747)\n[PASS] test_noDeviationDoesNotRebalanceAfterCooldown() (gas: 909534)\n[PASS] test_otherLpCanCollectZeroDeltaFeesEvenInEmergency() (gas: 1605599)\n[PASS] test_ownerTransferRequiresAcceptanceAndCannotRenounce() (gas: 153947)\n[PASS] test_rebalanceBurnsEntireOldPositionAndKeepsAllCapital() (gas: 1794326)\n[PASS] test_rebalanceCompoundsNetAccruedFeesAndDust() (gas: 1564733)\n[PASS] test_rejectsSecondPoolAndWrongCallbackPool() (gas: 127656)\n[PASS] test_strayEthIsRefusedOnAnErc20Pair() (gas: 116888)\n[PASS] test_trendRebalanceSellsSurplusAndRedeploys() (gas: 9112978)\n[PASS] test_uninitializedFunctionsAndFactoryGate() (gas: 52043657)\nSuite result: ok. 26 passed; 0 failed; 0 skipped; finished in 148.55ms (268.17ms CPU time)\n\nRan 18 tests for test/OperatorParams.t.sol:OperatorParamsTest\n[PASS] testFuzz_bandsEncloseRangeSigmaOnTheSmallestUsableGrid(int256,uint256,uint8) (runs: 1000, μ: 25596, ~: 25751)\nLogs:\n  Bound result 6234541\n  Bound result 4655582\n  Bound result 34\n\n[PASS] testFuzz_triggerIsStrictAtBothSidesForAnyTenthsSetting(uint24,int24,uint8) (runs: 1000, μ: 21666, ~: 21701)\nLogs:\n  Bound result 4536\n  Bound result 9690\n  Bound result 8\n\n[PASS] test_bandsWidenMonotonicallyWithRangeSigma() (gas: 41219)\n[PASS] test_cooldownGateUsesTheLiveSetting() (gas: 2460884)\n[PASS] test_defaultsMatchTheSprintOneBehaviour() (gas: 46261)\n[PASS] test_firstDepositUsesTheLiveRangeSigma() (gas: 1271749)\n[PASS] test_pauseAndResumeTouchOnlyTheTrigger() (gas: 215606)\n[PASS] test_pausedPresetCooldownNeverElapses() (gas: 1122188)\n[PASS] test_pausedTriggerIsBeyondAnyEightSampleDeviation() (gas: 20132)\n[PASS] test_presetTableIsExactlyAsOrdered() (gas: 79677)\n[PASS] test_rangeSigmaShapesProposedAndDeployedBands() (gas: 1710613)\n[PASS] test_setCooldownBounds() (gas: 238216)\n[PASS] test_setModeLoadsEveryPresetAndEmits() (gas: 462066)\n[PASS] test_setModeRejectsUnknownModeAndNonOwner() (gas: 138403)\n[PASS] test_setRangeSigmaBounds() (gas: 206381)\n[PASS] test_setTriggerSigmaBounds() (gas: 230897)\n[PASS] test_tighterTriggerFiresWhereStandardDoesNot() (gas: 2303064)\n[PASS] test_triggerGateUsesTheLiveSettingAndPauseResume() (gas: 1839934)\nSuite result: ok. 18 passed; 0 failed; 0 skipped; finished in 153.69ms (213.87ms CPU time)\n\nRan 11 tests for test/Flywheel.t.sol:FlywheelTest\n[PASS] testFuzz_dislocatedPriceStillMintsOrExplicitlyDefers(int24,uint64) (runs: 256, μ: 1662086, ~: 1659056)\nLogs:\n  Bound result 60\n  Bound result 999999999000000012167\n\n[PASS] test_afterSwapOnlySamplesEvenWhenKeeperIsDue() (gas: 1080138)\n[PASS] test_deferredAssetsRemainWithdrawable() (gas: 1201518)\n[PASS] test_deferredBuybackIsSpentOnlyOnceOnNextEligibleCycle() (gas: 3922094)\n[PASS] test_depositCannotRefreshDeferredRangeToBypassKeeperCooldown() (gas: 1431649)\n[PASS] test_emptyAndEmergencyVaultCannotPayBounty() (gas: 751568)\n[PASS] test_harvestByNewDepositCannotEvadeFeeReservesOrDiluteOldHolder() (gas: 1643344)\n[PASS] test_keeperGatesWrongPoolCooldownDeviationAndReplay() (gas: 1776946)\n[PASS] test_noExternalLiquidityDefersAndPermissionlessRetryRecovers() (gas: 1861360)\n[PASS] test_triSplitUsesFeesOnlyAndPaysActualKeeperBeforeReinvestment() (gas: 1944318)\n[PASS] test_zeroAddressCompatibleTokenUsesRequestedDisposalPath() (gas: 56586067)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 158.10ms (178.90ms CPU time)\n\nRan 3 tests for test/SigmaToken.t.sol:SigmaTokenTest\n[PASS] testFuzz_transferAndAllowance(uint256) (runs: 256, μ: 179857, ~: 179831)\nLogs:\n  Bound result 1\n\n[PASS] test_fixedSupplyAndMetadata() (gas: 49353)\n[PASS] test_noAdminOrAdditionalMint() (gas: 127664)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 182.96ms (182.96ms CPU time)\n\nRan 8 tests for test/Adversarial.t.sol:AdversarialTest\n[PASS] test_emergencyCannotBurnOtherHoldersShares() (gas: 825183)\n[PASS] test_emptyVaultCanEnterEmergency() (gas: 137845)\n[PASS] test_feeOnTransferDepositIsRejectedAtomically() (gas: 54939204)\n[PASS] test_initializationAtPriceExtremesAndSingleSidedDeposits() (gas: 432365091)\n[PASS] test_liquidityCapacityCannotBlockSwapRebalance() (gas: 2093533)\n[PASS] test_prepayRouterSwapSurvivesARebalance() (gas: 2659513)\n[PASS] test_saltToolUsesExactFactoryAndConstructorArguments() (gas: 19288133)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000000736c\n  ADDRESS: 0x01b78616dcb940a69f297de475Fd8651AcA01040\n  INIT_CODE_HASH: 0x1879b0134f80e48e98f76e8d317307d44c7e95c639ee35c7e48503020967f5f7\n  DEPLOYER: 0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496\n  CONSTRUCTOR manager: 0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f\n  CONSTRUCTOR owner: 0x7240b687730BE024bcfD084621f794C2e4F8408f\n  CONSTRUCTOR launchToken: 0x2e234DAe75C793f67A35089C9d99245E1C58470b\n  CONSTRUCTOR factory: 0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496\n\n[PASS] test_tokenCallbackCannotReenterDeposit() (gas: 55361125)\nSuite result: ok. 8 passed; 0 failed; 0 skipped; finished in 183.01ms (232.59ms CPU time)\n\nRan 7 tests for test/NativeVault.t.sol:NativeVaultTest\n[PASS] testFuzz_freshManagerRebalanceBeforeInputSettlement(bool) (runs: 256, μ: 2563365, ~: 2583563)\n[PASS] test_emergencyRedeemsClaimsAndNeedsNoManagerForWithdrawal() (gas: 1795544)\n[PASS] test_exactInputAndOutputBothDirectionsRemainUsable() (gas: 1271445)\n[PASS] test_nativeDepositRefundAndOrdinaryExit() (gas: 995474)\n[PASS] test_onlyTheManagerMaySendEthToTheHook() (gas: 100811)\n[PASS] test_reentrantEmergencyReceiverCannotRedeemTwice() (gas: 1103756)\n[PASS] test_rejectingEthRecipientRollsBackAndCanChooseAnotherReceiver() (gas: 1045487)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 225.51ms (208.69ms CPU time)\n\nRan 1 test for test/VaultInvariant.t.sol:VaultInvariantTest\n[PASS]\nVaultInvariantTest invariants:\n[PASS] invariant_currencyAndShareConservation\n[PASS] invariant_positionAndFlashAccounting\n VaultInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭--------------+----------------+-------+---------+----------╮\n| Contract     | Selector       | Calls | Reverts | Discards |\n+============================================================+\n| VaultHandler | advanceTime    | 251   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | deposit        | 260   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | donate         | 275   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | emergency      | 263   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | rebalance      | 234   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | trade          | 271   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | transferShares | 242   | 0       | 0        |\n|--------------+----------------+-------+---------+----------|\n| VaultHandler | withdraw       | 252   | 0       | 0        |\n╰--------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result -283\n  Bound result 50\n  Bound result 377\n  Bound result 200\n  Bound result -50\n  Bound result 2100\n  Bound result -499\n  Bound result -461\n  Bound result 13491\n  Bound result 1817\n  Bound result 2863267840\n  Bound result 887272\n  Bound result -429\n  Bound result -345\n  Bound result 1397535501\n  Bound result 1322\n  Bound result 10444\n  Bound result 12\n  Bound result 4063\n  Bound result 12000\n  Bound result 338538\n  Bound result 335462\n  Bound result -8\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 644.10ms (620.00ms CPU time)\n\nRan 11 tests for test/BandMath.t.sol:BandMathTest\n[PASS] testFuzz_liquiditySizingNeverOverspends(int24,int24,int24,uint128,uint128,uint128) (runs: 256, μ: 30700, ~: 30753)\nLogs:\n  Bound result -239\n  Bound result 75447\n  Bound result -620715\n\n[PASS] testFuzz_statisticsMatchIndependentIntegerReference(int24[8],uint16) (runs: 256, μ: 108794, ~: 108814)\nLogs:\n  Bound result -78\n  Bound result -723\n  Bound result -56979\n  Bound result -2\n  Bound result 13902\n  Bound result 813917\n  Bound result -16061\n  Bound result -791980\n  Bound result 48\n\n[PASS] test_extremeTicksStayWithinUsableGrid() (gas: 27507)\n[PASS] test_knownPopulationStatistics() (gas: 37951)\n[PASS] test_lowPriceSizingKeepsPrecision() (gas: 10369)\n[PASS] test_meanRoundsToNearestAndNegativeGridFloors() (gas: 21621)\n[PASS] test_rebalanceTradeTargetsBandRatioAndRespectsDeadband() (gas: 21249)\n[PASS] test_restingTickDoesNotDeviateButOutlierDoes() (gas: 26774)\n[PASS] test_sizingOneSqrtUnitFromUpperAndVeryLowTicks() (gas: 13646)\n[PASS] test_strictTriggerAndHalfIntegerThreshold() (gas: 12405)\n[PASS] test_tradeLimitStopsAtBandEdgeOrCap() (gas: 20709)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 662.92ms (142.19ms CPU time)\n\nRan 27 tests for test/MineSalt.t.sol:MineSaltTest\n[PASS] testFuzz_anyOwnerDeploysAtPrediction(address) (runs: 16, μ: 19747287, ~: 17561885)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000001215a\n  ADDRESS: 0x839305D8903A4333b10B29AA3079e6eE70201040\n  INIT_CODE_HASH: 0xd21c5ebf48e002ef67c92626e67164269c1bbbd9022105cb208eb791ea0a9bcd\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0x0000000000000000000000000000000000004B8B\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] testFuzz_assemblyPredictionMatchesSolidityFormula(address,bytes32,bytes32) (runs: 64, μ: 17836, ~: 17836)\n[PASS] testFuzz_minedAddressAlwaysEndsIn1040(address,bytes32,uint64) (runs: 24, μ: 8463680, ~: 6178271)\n[PASS] test_briefDeployerCreate2LandsOnPredictedAddress() (gas: 8530442)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_checkRejectsStaleInitCode() (gas: 9769)\n[PASS] test_checkRejectsWrongSaltOrAddress() (gas: 42503)\n[PASS] test_constantsMatchBriefAndHookPermissions() (gas: 99627)\n[PASS] test_fullFormMatchesLocalDeployer() (gas: 23136534)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000001cd83\n  ADDRESS: 0x79A3e7A1e1C051aDd10bdAd684B9D1fC852D1040\n  INIT_CODE_HASH: 0x52f321737ff00d378f16fc79adb1e8cbed90fd2db33f684e877ead46d97a7d03\n  DEPLOYER: 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n  CONSTRUCTOR manager: 0xA5d55E7A556fbA22974479497E6bf7e097D81b5e\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x77D93908Ca1cb75f3Fb71270b066baA9a1075191\n  CONSTRUCTOR factory: 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a\n\n[PASS] test_hookConstructorRejectsUnminedSalt() (gas: 687750)\n[PASS] test_hookConstructorRejectsZeroOwnerEvenAtMinedAddress() (gas: 14645670)\n[PASS] test_initCodeMatchesCompiledArtifact() (gas: 190527)\n[PASS] test_mineIsDeterministicAndReturnsLowestSalt() (gas: 4145176)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_mineRefusesWindowThatWraps() (gas: 9244)\n[PASS] test_recordedInitCodeHashMatchesThisBuild() (gas: 83921)\n[PASS] test_recordedSaltDeploysHookOwnedByRequester() (gas: 7153126)\n[PASS] test_recordedSaltDoesNotServeAnotherOwnerOrDeployer() (gas: 73787)\n[PASS] test_recordedSaltIsTheLowestForRequesterOwner() (gas: 12852674)\n[PASS] test_runMinesRecordedSaltForRequesterOwner() (gas: 25778429)\nLogs:\n  SALT: 0x000000000000000000000000000000000000000000000000000000000001762c\n  ADDRESS: 0xB259cb6965FD49df82a415920Ac61DF370cB1040\n  INIT_CODE_HASH: 0xd09c16e2448f647d24add8afafe9f5e94196ab26a56d0592ff129a016827aa3c\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xdbeab8243F318F1bBF815d85a8A869def1510b61\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  SALT: 0x000000000000000000000000000000000000000000000000000000000001762c\n  ADDRESS: 0xB259cb6965FD49df82a415920Ac61DF370cB1040\n  INIT_CODE_HASH: 0xd09c16e2448f647d24add8afafe9f5e94196ab26a56d0592ff129a016827aa3c\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xdbeab8243F318F1bBF815d85a8A869def1510b61\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_runWithOwnerMinesAddressEndingIn1040ForBriefDeployer() (gas: 1422548)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_saltIsBoundToDeployer() (gas: 1429679)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_saltIsBoundToOwner() (gas: 1427875)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_searchExhaustedBeforeFirstHit() (gas: 2778671)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_searchResumesFromStart() (gas: 12103399)\nLogs:\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000002696\n  ADDRESS: 0x543567c793bab66Fa880bB636279596E44471040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  SALT: 0x0000000000000000000000000000000000000000000000000000000000015db5\n  ADDRESS: 0x7FA75bB4b752D5cB9C6BC088F187DeE50aFA1040\n  INIT_CODE_HASH: 0x9207674964a21e2d24c5edda0d7b21051318cf60aaa50fd4e590be5bd982ba09\n  DEPLOYER: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  CONSTRUCTOR manager: 0x8366a39CC670B4001A1121B8F6A443A643e40951\n  CONSTRUCTOR owner: 0xca776F5247702Da3b649931bBE41CA506344d3AC\n  CONSTRUCTOR launchToken: 0x4fE865Ad3b3eF64B2af9C38c78aBf5C6e68C1164\n  CONSTRUCTOR factory: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n\n[PASS] test_suffixPredicateIsStricterThanV4Flags() (gas: 48063)\n[PASS] test_verifyRecordedPassesForThisBuild() (gas: 47585)\nLogs:\n  VERIFIED FACTORY_ADDRESS: 0x44aa80c4F3807C0b5A2c880158E0141A9553e199\n  VERIFIED SALT: 0x000000000000000000000000000000000000000000000000000000000001762c\n  VERIFIED ADDRESS: 0xB259cb6965FD49df82a415920Ac61DF370cB1040\n  VERIFIED INIT_CODE_HASH: 0xd09c16e2448f647d24add8afafe9f5e94196ab26a56d0592ff129a016827aa3c\n\n[PASS] test_zeroArgumentsRevert() (gas: 46061)\n[PASS] test_zeroOwnerReverts() (gas: 9177)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 662.89ms (1.57s CPU time)\n\nRan 9 tests for test/MathProperties.t.sol:MathPropertiesTest\n[PASS] testFuzz_bandsEncloseThreeSigmaOnTheSmallestUsableGrid(int256,uint256) (runs: 1000, μ: 21463, ~: 21753)\nLogs:\n  Bound result 4919726\n  Bound result 3580925\n\n[PASS] testFuzz_largerBudgetsNeverReduceLiquidity(int24,int24,int24,uint128,uint128,uint128) (runs: 1000, μ: 31105, ~: 31074)\nLogs:\n  Bound result 722694\n  Bound result 824480\n  Bound result 226\n\n[PASS] testFuzz_momentsIgnoreOrderAndReflectAboutZero(int24[8],uint8) (runs: 1000, μ: 106217, ~: 106148)\nLogs:\n  Bound result 12105\n  Bound result 202\n  Bound result 13690\n  Bound result 13507\n  Bound result 12272\n  Bound result 11258\n  Bound result 16794\n  Bound result 1500\n\n[PASS] testFuzz_principalRoundingAndPriceMonotonicity(int24,int24,int24,int24,uint128) (runs: 1000, μ: 42903, ~: 42998)\nLogs:\n  Bound result 10364\n  Bound result 496435\n  Bound result 2454\n  Bound result 11360\n\n[PASS] testFuzz_symmetricTwoPointDistributionHasKnownPopulationSigma(int24,uint24) (runs: 1000, μ: 31539, ~: 31513)\nLogs:\n  Bound result 1901\n  Bound result 16513\n\n[PASS] testFuzz_triggerIsStrictAtBothSidesOfOneAndAHalfSigma(uint24,int24) (runs: 1000, μ: 17538, ~: 17405)\nLogs:\n  Bound result 12246\n  Bound result 7877\n\n[PASS] test_oneWeiFundsOnlyAffordableLiquidityAtExactBandBoundaries() (gas: 11129)\n[PASS] test_triggerUsesTheUnroundedMean() (gas: 13674)\n[PASS] test_zeroLiquidityZeroBudgetsAndZeroCapacity() (gas: 9238)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 663.02ms (1.73s CPU time)\n\nRan 2 tests for test/VaultAccountingInvariant.t.sol:VaultAccountingInvariantTest\n[PASS] invariant_assetsBackedByExternalCashFlows() (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+----------------+-------+---------+----------╮\n| Contract          | Selector       | Calls | Reverts | Discards |\n+=================================================================+\n| AccountingHandler | deposit        | 2006  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | donateFees     | 2077  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | donateRaw      | 2093  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | emergency      | 2000  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | roundTrip      | 2049  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | trade          | 2045  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | transferShares | 2079  | 0       | 0        |\n|-------------------+----------------+-------+---------+----------|\n| AccountingHandler | withdraw       | 2035  | 0       | 0        |\n╰-------------------+----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1086394137\n  Bound result 17942\n  Bound result 201297713503919462\n  Bound result 758507502\n  Bound result 720\n  Bound result 2863267840\n  Bound result 5001\n  Bound result 579999999999999989\n  Bound result 20000000000000000000\n  Bound result 2265337440\n  Bound result 4525449940170475121\n  Bound result 438\n  Bound result 549\n  Bound result 7\n  Bound result 299\n  Bound result 1900\n  Bound result 50\n  Bound result 1909057426920269375\n  Bound result 4873038779324649610\n  Bound result 23016\n  Bound result 13138\n  Bound result 7200\n  Bound result 61\n  Bound result 12000000\n  Bound result 1367\n  Bound result 89\n  Bound result 3\n  Bound result 49\n  Bound result 11580000000000000000\n  Bound result 2100\n  Bound result 3013\n  Bound result 3249\n  Bound result 8805\n  Bound result 20227\n  Bound result 49150\n  Bound result 5486\n  Bound result 9\n  Bound result 215894\n  Bound result 7730563300\n  Bound result 200\n  Bound result 31420327611059376104579\n  Bound result 22\n  Bound result 200\n  Bound result 281474976710656\n  Bound result 24576\n  Bound result 5000000000000000000\n  Bound result 8586658\n  Bound result 8192\n  Bound result 3027972017\n  Bound result 1424214541\n  Bound result 10770\n  Bound result 22\n  Bound result 1530209213944835\n  Bound result 2738\n  Bound result 6\n  Bound result 65535\n  Bound result 200000000000000000\n  Bound result 1901\n  Bound result -378\n  Bound result 1062\n  Bound result -1\n  Bound result 9518\n  Bound result 44169515312306220\n  Bound result 11016713944399302943939\n  Bound result 1740\n  Bound result 50\n  Bound result 1885\n  Bound result -299\n  Bound result 3696\n  Bound result 466\n  Bound result -378\n  Bound result 1000000000000\n  Bound result 2838\n  Bound result 510\n  Bound result 762778506\n\n[PASS] test_accountingHandlerExercisesEveryActionAndFullExit() (gas: 3553359)\nLogs:\n  Bound result 3000000000000000000\n  Bound result 2000000000000000000\n  Bound result 1000000000000000000\n  Bound result 500000000000000000\n  Bound result 100000000000000000\n  Bound result 200000000000000000\n  Bound result 1002724390519861757235\n  Bound result 1800\n  Bound result 20\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 7.62s (7.59s CPU time)\n\nRan 15 test suites in 7.62s (11.81s CPU time): 160 tests passed, 0 failed, 0 skipped (160 total tests)\n","passed":true},{"durationMs":77,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"DeployFactory.createPool(address,address,address)\",\"DeployFactory.deployHook(bytes32,address,address,address)\",\"DeployFactory.renounceOwnership()\",\"DeployFactory.transferOwnership(address)\",\"SigmaHook.acceptOwnership()\",\"SigmaHook.activateEmergencyMode()\",\"SigmaHook.afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\",\"SigmaHook.afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\",\"SigmaHook.afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)\",\"SigmaHook.afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)\",\"SigmaHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SigmaHook.approve(address,uint256)\",\"SigmaHook.beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\",\"SigmaHook.beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)\",\"SigmaHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"SigmaHook.beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\",\"SigmaHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"SigmaHook.deposit(uint256,uint256,uint256,address,uint256)\",\"SigmaHook.emergencyWithdraw()\",\"SigmaHook.emergencyWithdraw(uint256,address)\",\"SigmaHook.flashRebalance((address,address,uint24,int24,address))\",\"SigmaHook.pause()\",\"SigmaHook.receive()\",\"SigmaHook.rescueStrayETH()\",\"SigmaHook.resume()\",\"SigmaHook.retryInvestment((address,address,uint24,int24,address))\",\"SigmaHook.setCooldown(uint32)\",\"SigmaHook.setMode(uint8)\",\"SigmaHook.setRangeSigma(uint8)\",\"SigmaHook.setTriggerSigma(uint8)\",\"SigmaHook.setWETH(address)\",\"SigmaHook.transfer(address,uint256)\",\"SigmaHook.transferFrom(address,address,uint256)\",\"SigmaHook.transferOwnership(address)\",\"SigmaHook.unlockCallback(bytes)\",\"SigmaHook.withdraw(uint256,uint256,uint256,address,uint256)\",\"SigmaToken.approve(address,uint256)\",\"SigmaToken.transfer(address,uint256)\",\"SigmaToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":3,\"LICENSE\":21,\"README.md\":190,\"dependencies.lock.json\":64,\"docs/SECURITY.md\":71,\"docs/create2-salt.json\":123,\"foundry.toml\":21,\"launch.json\":29,\"remappings.txt\":8,\"script/MineSalt.s.sol\":196,\"src/DeployFactory.sol\":93,\"src/HookFlags.sol\":30,\"src/PermanentTokenLock.sol\":7,\"src/SigmaHook.sol\":788,\"src/SigmaMath.sol\":103,\"src/SigmaToken.sol\":11,\"src/libraries/BandMath.sol\":81,\"src/libraries/VaultMath.sol\":122,\"test/Adversarial.t.sol\":237,\"test/BandMath.t.sol\":234,\"test/DeployFactory.t.sol\":316,\"test/Flywheel.t.sol\":296,\"test/MathProperties.t.sol\":202,\"test/MineSalt.t.sol\":390,\"test/NativeSafety.t.sol\":138,\"test/NativeVault.t.sol\":165,\"test/OperatorParams.t.sol\":446,\"test/README.md\":37,\"test/SigmaHook.t.sol\":553,\"test/SigmaToken.t.sol\":51,\"test/VaultAccountingInvariant.t.sol\":330,\"test/VaultFailurePaths.t.sol\":267,\"test/VaultInvariant.t.sol\":186,\"test/WethVaultIntegration.t.sol\":200,\"test/helpers/Create2Factory.sol\":18,\"test/helpers/CreatePoolManagerHarness.sol\":45,\"test/helpers/Fixture.sol\":117,\"test/helpers/MockERC20.sol\":24,\"test/helpers/TestRouter.sol\":84},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":13105,"exitCode":0,"name":"slither","output":"[high/medium] reentrancy-balance at src/SigmaHook.sol:602: Reentrancy in SigmaHook._disposeLaunch(uint256) (src/SigmaHook.sol#602-610):\n[high/medium] reentrancy-balance at src/SigmaHook.sol:235: Reentrancy in SigmaHook.deposit(uint256,uint256,uint256,address,uint256) (src/SigmaHook.sol#235-276):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:458: Reentrancy in SigmaHook._initialDeposit(uint128,address,uint256) (src/SigmaHook.sol#458-475):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:541: Reentrancy in SigmaHook._balanceInventory() (src/SigmaHook.sol#541-555):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:492: Reentrancy in SigmaHook._changeLiquidity(int256) (src/SigmaHook.sol#492-515):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:517: Reentrancy in SigmaHook._invest() (src/SigmaHook.sol#517-537):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:561: Reentrancy in SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:411: Reentrancy in SigmaHook.unlockCallback(bytes) (src/SigmaHook.sol#411-451):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:561: Reentrancy in SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:411: Reentrancy in SigmaHook.unlockCallback(bytes) (src/SigmaHook.sol#411-451):\n[high/medium] reentrancy-eth at src/SigmaHook.sol:411: Reentrancy in SigmaHook.unlockCallback(bytes) (src/SigmaHook.sol#411-451):\n[medium/medium] reentrancy-no-eth at src/SigmaHook.sol:235: Reentrancy in SigmaHook.deposit(uint256,uint256,uint256,address,uint256) (src/SigmaHook.sol#235-276):\n[medium/medium] unused-return at src/SigmaHook.sol:625: SigmaHook._capacityFor(int24,int24) (src/SigmaHook.sol#625-633) ignores return value by (grossLower,None) = poolManager.getTickLiquidity(poolId,lower) (src/SigmaHook.sol#629)\n[medium/medium] unused-return at src/SigmaHook.sol:541: SigmaHook._balanceInventory() (src/SigmaHook.sol#541-555) ignores return value by (price,None,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#543)\n[medium/medium] unused-return at src/SigmaHook.sol:458: SigmaHook._initialDeposit(uint128,address,uint256) (src/SigmaHook.sol#458-475) ignores return value by (price,None,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#459)\n[medium/medium] unused-return at src/SigmaHook.sol:350: SigmaHook._afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/SigmaHook.sol#350-364) ignores return value by (None,tick,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#358)\n[medium/medium] unused-return at src/SigmaHook.sol:367: SigmaHook.flashRebalance(PoolKey) (src/SigmaHook.sol#367-377) ignores return value by (None,tick,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#371)\n[medium/medium] unused-return at src/SigmaHook.sol:561: SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600) ignores return value by (price,None,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#566)\n[medium/medium] unused-return at src/SigmaMath.sol:26: SigmaMath.positionAssets(address,bool) (src/SigmaMath.sol#26-52) ignores return value by (price,None,None,None) = manager.getSlot0(id) (src/SigmaMath.sol#38)\n[medium/medium] unused-return at src/SigmaHook.sol:690: SigmaHook.feeLiabilities() (src/SigmaHook.sol#690-694) ignores return value by (None,None,fee0,fee1) = math.positionAssets(address(this),false) (src/SigmaHook.sol#691)\n[medium/medium] unused-return at src/SigmaHook.sol:706: SigmaHook._quoteDeposit(uint256,uint256,uint256) (src/SigmaHook.sol#706-732) ignores return value by (price,None,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#717)\n[medium/medium] unused-return at src/SigmaMath.sol:26: SigmaMath.positionAssets(address,bool) (src/SigmaMath.sol#26-52) ignores return value by (None,last0,last1) = manager.getPositionInfo(id,basket,lower,upper,keccak256(bytes)(SigmaHook.vault)) (src/SigmaMath.sol#42-43)\n[medium/medium] unused-return at src/SigmaHook.sol:625: SigmaHook._capacityFor(int24,int24) (src/SigmaHook.sol#625-633) ignores return value by (grossUpper,None) = poolManager.getTickLiquidity(poolId,upper) (src/SigmaHook.sol#630)\n[medium/medium] unused-return at src/SigmaHook.sol:517: SigmaHook._invest() (src/SigmaHook.sol#517-537) ignores return value by (price,None,None,None) = poolManager.getSlot0(poolId) (src/SigmaHook.sol#522)\n[low/medium] events-maths at src/SigmaHook.sol:162: SigmaHook.setTriggerSigma(uint8) (src/SigmaHook.sol#162-165) should emit an event for: \n[low/medium] events-maths at src/SigmaHook.sol:782: SigmaHook.receive() (src/SigmaHook.sol#782-787) should emit an event for: \n[low/medium] events-maths at src/SigmaHook.sol:172: SigmaHook.setCooldown(uint32) (src/SigmaHook.sol#172-175) should emit an event for: \n[low/medium] events-maths at src/SigmaHook.sol:167: SigmaHook.setRangeSigma(uint8) (src/SigmaHook.sol#167-170) should emit an event for: \n[low/medium] calls-loop at src/SigmaHook.sol:541: SigmaHook._balanceInventory() (src/SigmaHook.sol#541-555) has external calls inside a loop: (zeroForOne,amountIn) = math.rebalanceTrade(price,tickLower,tickUpper,_budget(_key.currency0),_budget(_key.currency1),REBALANCE_SWAP_DEADBAND_BPS) (src/SigmaHook.sol#544-546)\n[low/medium] calls-loop at src/SigmaHook.sol:613: SigmaHook._budget(Currency) (src/SigmaHook.sol#613-618) has external calls inside a loop: amount = poolManager.balanceOf(address(this),currency.toId()) (src/SigmaHook.sol#614)\n[low/medium] calls-loop at src/SigmaHook.sol:517: SigmaHook._invest() (src/SigmaHook.sol#517-537) has external calls inside a loop: added = math.liquidityForAmounts(price,tickLower,tickUpper,_budget(_key.currency0),_budget(_key.currency1),capacity) (src/SigmaHook.sol#523-525)\n[low/medium] calls-loop at src/SigmaHook.sol:557: SigmaHook._routeLimit(bool) (src/SigmaHook.sol#557-559) has external calls inside a loop: math.priceAtTick(tickLower + 1) (src/SigmaHook.sol#558)\n[low/medium] calls-loop at src/SigmaHook.sol:541: SigmaHook._balanceInventory() (src/SigmaHook.sol#541-555) has external calls inside a loop: delta = poolManager.swap(_key,SwapParams(zeroForOne,- int256(amountIn),limit),) (src/SigmaHook.sol#550)\n[low/medium] calls-loop at src/SigmaHook.sol:557: SigmaHook._routeLimit(bool) (src/SigmaHook.sol#557-559) has external calls inside a loop: math.priceAtTick(tickUpper - 1) (src/SigmaHook.sol#558)\n[low/medium] reentrancy-benign at src/SigmaHook.sol:492: Reentrancy in SigmaHook._changeLiquidity(int256) (src/SigmaHook.sol#492-515):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:517: Reentrancy in SigmaHook._invest() (src/SigmaHook.sol#517-537):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:517: Reentrancy in SigmaHook._invest() (src/SigmaHook.sol#517-537):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:235: Reentrancy in SigmaHook.deposit(uint256,uint256,uint256,address,uint256) (src/SigmaHook.sol#235-276):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:411: Reentrancy in SigmaHook.unlockCallback(bytes) (src/SigmaHook.sol#411-451):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:637: Reentrancy in SigmaHook._settle(Currency,int128) (src/SigmaHook.sol#637-658):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:561: Reentrancy in SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600):\n[low/medium] reentrancy-benign at src/SigmaHook.sol:279: Reentrancy in SigmaHook.withdraw(uint256,uint256,uint256,address,uint256) (src/SigmaHook.sol#279-294):\n[low/medium] reentrancy-events at src/DeployFactory.sol:73: Reentrancy in DeployFactory.createPool(address,address,address) (src/DeployFactory.sol#73-84):\n[low/medium] reentrancy-events at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[low/medium] reentrancy-events at src/SigmaHook.sol:411: Reentrancy in SigmaHook.unlockCallback(bytes) (src/SigmaHook.sol#411-451):\n[low/medium] reentrancy-events at src/SigmaHook.sol:411: Reentrancy in SigmaHook.unlockCallback(bytes) (src/SigmaHook.sol#411-451):\n[low/medium] reentrancy-events at src/SigmaHook.sol:517: Reentrancy in SigmaHook._invest() (src/SigmaHook.sol#517-537):\n[low/medium] reentrancy-events at src/SigmaHook.sol:492: Reentrancy in SigmaHook._changeLiquidity(int256) (src/SigmaHook.sol#492-515):\n[low/medium] reentrancy-events at src/SigmaHook.sol:517: Reentrancy in SigmaHook._invest() (src/SigmaHook.sol#517-537):\n[low/medium] reentrancy-events at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[low/medium] reentrancy-events at src/SigmaHook.sol:602: Reentrancy in SigmaHook._disposeLaunch(uint256) (src/SigmaHook.sol#602-610):\n[low/medium] reentrancy-events at src/SigmaHook.sol:561: Reentrancy in SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600):\n[low/medium] reentrancy-events at src/SigmaHook.sol:541: Reentrancy in SigmaHook._balanceInventory() (src/SigmaHook.sol#541-555):\n[low/medium] reentrancy-events at src/SigmaHook.sol:561: Reentrancy in SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600):\n[low/medium] reentrancy-events at src/SigmaHook.sol:477: Reentrancy in SigmaHook._rebalance(address) (src/SigmaHook.sol#477-486):\n[low/medium] reentrancy-events at src/SigmaHook.sol:561: Reentrancy in SigmaHook._distributeFees(address) (src/SigmaHook.sol#561-600):\n[low/medium] timestamp at src/SigmaHook.sol:279: SigmaHook.withdraw(uint256,uint256,uint256,address,uint256) (src/SigmaHook.sol#279-294) uses timestamp for comparisons\n[low/medium] timestamp at src/SigmaHook.sol:235: SigmaHook.deposit(uint256,uint256,uint256,address,uint256) (src/SigmaHook.sol#235-276) uses timestamp for comparisons\n[low/medium] timestamp at src/SigmaHook.sol:367: SigmaHook.flashRebalance(PoolKey) (src/SigmaHook.sol#367-377) uses timestamp for comparisons","passed":true},{"durationMs":779,"exitCode":0,"name":"aderyn","output":"[high] contract-locks-ether at src/SigmaHook.sol:31: Contract locks Ether without a withdraw function\n[high] unsafe-casting at src/SigmaHook.sol:419: Unsafe Casting of integers\n[low] centralization-risk at src/DeployFactory.sol:18: Centralization Risk (14 places)\n[low] costly-loop at src/SigmaHook.sol:341: Costly operations inside loop (2 places)\n[low] internal-function-used-once at src/HookFlags.sol:23: Internal Function Used Only Once (7 places)\n[low] large-numeric-literal at src/SigmaHook.sol:504: Large Numeric Literal (8 places)\n[low] literal-instead-of-constant at src/SigmaHook.sol:144: Literal Instead of Constant (37 places)\n[low] local-variable-shadowing at src/SigmaHook.sol:65: Local Variable Shadows State Variable\n[low] non-reentrant-not-first at src/SigmaHook.sol:298: `nonReentrant` is Not the First Modifier (2 places)\n[low] require-revert-in-loop at src/SigmaHook.sol:521: Loop Contains `require`/`revert`\n[low] state-change-without-event at src/SigmaHook.sol:162: State Change Without Event (8 places)\n[low] unchecked-return at src/SigmaHook.sol:251: Unchecked Return (6 places)\n[low] uninitialized-local-variable at src/SigmaHook.sol:521: Uninitialized Local Variable (3 places)\n[low] unsafe-erc20-operation at src/SigmaHook.sol:403: Unsafe ERC20 Operation (4 places)\n[low] unused-public-function at src/SigmaHook.sol:197: Public Function Not Used Internally","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1e4a83049a1fcd76c8201b472602dca5328056b555f250946d0a4111b1b1f362","verifiedTreeHash":"59bc98a6462482965c91ac8ce3adcec982839b00","verifierVersion":"0.1.0+d372f99e"}]}