gitextract_ps96d9yk/ ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── BUG_REPORT.yml │ │ └── FEATURE_IMPROVEMENT.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── deploy.yaml │ ├── lint.yml │ ├── mythx.yml │ ├── tests-merge.yml │ └── tests-pr.yml ├── .gitignore ├── .gitmodules ├── .npmignore ├── .prettierignore ├── .prettierrc ├── .solhint.json ├── CONTRIBUTING.md ├── README.md ├── SECURITY.md ├── docs/ │ └── whitepaper/ │ └── latex/ │ ├── main-zh.tex │ ├── main.bib │ └── main.tex ├── echidna.config.yml ├── foundry.toml ├── justfile ├── licenses/ │ ├── BUSL_LICENSE │ └── MIT_LICENSE ├── package.json ├── remappings.txt ├── snapshots/ │ ├── ClearTest.json │ ├── CustomAccountingTest.json │ ├── ERC6909ClaimsTest.json │ ├── ExtsloadTest.json │ ├── ModifyLiquidityTest.json │ ├── PoolManagerInitializeTest.json │ ├── PoolManagerTest.json │ ├── ProtocolFeesTest.json │ ├── SkipCallsTest.json │ ├── SqrtPriceMathTest.json │ ├── StateLibraryTest.json │ ├── SwapMathTest.json │ ├── SyncTest.json │ ├── TestBitMath.json │ ├── TestDelegateCall.json │ ├── TestDynamicFees.json │ ├── TestDynamicReturnFees.json │ ├── TickBitmapTest.json │ ├── TickMathTestTest.json │ └── TickTest.json ├── src/ │ ├── ERC6909.sol │ ├── ERC6909Claims.sol │ ├── Extsload.sol │ ├── Exttload.sol │ ├── NoDelegateCall.sol │ ├── PoolManager.sol │ ├── ProtocolFees.sol │ ├── interfaces/ │ │ ├── IExtsload.sol │ │ ├── IExttload.sol │ │ ├── IHooks.sol │ │ ├── IPoolManager.sol │ │ ├── IProtocolFees.sol │ │ ├── callback/ │ │ │ └── IUnlockCallback.sol │ │ └── external/ │ │ ├── IERC20Minimal.sol │ │ └── IERC6909Claims.sol │ ├── libraries/ │ │ ├── BitMath.sol │ │ ├── CurrencyDelta.sol │ │ ├── CurrencyReserves.sol │ │ ├── CustomRevert.sol │ │ ├── FixedPoint128.sol │ │ ├── FixedPoint96.sol │ │ ├── FullMath.sol │ │ ├── Hooks.sol │ │ ├── LPFeeLibrary.sol │ │ ├── LiquidityMath.sol │ │ ├── Lock.sol │ │ ├── NonzeroDeltaCount.sol │ │ ├── ParseBytes.sol │ │ ├── Pool.sol │ │ ├── Position.sol │ │ ├── ProtocolFeeLibrary.sol │ │ ├── SafeCast.sol │ │ ├── SqrtPriceMath.sol │ │ ├── StateLibrary.sol │ │ ├── SwapMath.sol │ │ ├── TickBitmap.sol │ │ ├── TickMath.sol │ │ ├── TransientStateLibrary.sol │ │ └── UnsafeMath.sol │ ├── test/ │ │ ├── ActionsRouter.sol │ │ ├── BaseTestHooks.sol │ │ ├── CurrencyTest.sol │ │ ├── CustomCurveHook.sol │ │ ├── DeltaReturningHook.sol │ │ ├── DynamicFeesTestHook.sol │ │ ├── DynamicReturnFeeTestHook.sol │ │ ├── EmptyRevertContract.sol │ │ ├── EmptyTestHooks.sol │ │ ├── FeeTakingHook.sol │ │ ├── Fuzzers.sol │ │ ├── HooksTest.sol │ │ ├── LPFeeTakingHook.sol │ │ ├── LiquidityMathTest.sol │ │ ├── MockContract.sol │ │ ├── MockERC6909Claims.sol │ │ ├── MockHooks.sol │ │ ├── NativeERC20.sol │ │ ├── NoDelegateCallTest.sol │ │ ├── PoolClaimsTest.sol │ │ ├── PoolDonateTest.sol │ │ ├── PoolEmptyUnlockTest.sol │ │ ├── PoolModifyLiquidityTest.sol │ │ ├── PoolModifyLiquidityTestNoChecks.sol │ │ ├── PoolNestedActionsTest.sol │ │ ├── PoolSwapTest.sol │ │ ├── PoolTakeTest.sol │ │ ├── PoolTestBase.sol │ │ ├── ProtocolFeesImplementation.sol │ │ ├── ProxyPoolManager.sol │ │ ├── SkipCallsTestHook.sol │ │ ├── SqrtPriceMathEchidnaTest.sol │ │ ├── SwapRouterNoChecks.sol │ │ ├── TestERC20.sol │ │ ├── TestInvalidERC20.sol │ │ ├── TickMathEchidnaTest.sol │ │ ├── TickMathTest.sol │ │ └── TickOverflowSafetyEchidnaTest.sol │ └── types/ │ ├── BalanceDelta.sol │ ├── BeforeSwapDelta.sol │ ├── Currency.sol │ ├── PoolId.sol │ ├── PoolKey.sol │ ├── PoolOperation.sol │ └── Slot0.sol └── test/ ├── CurrencyReserves.t.sol ├── CustomAccounting.t.sol ├── DynamicFees.t.sol ├── DynamicReturnFees.t.sol ├── ERC6909Claims.t.sol ├── Extsload.t.sol ├── ModifyLiquidity.t.sol ├── NoDelegateCall.t.sol ├── PoolManager.clear.t.sol ├── PoolManager.gas.spec.ts ├── PoolManager.swap.t.sol ├── PoolManager.t.sol ├── PoolManagerInitialize.t.sol ├── ProtocolFeesImplementation.t.sol ├── SkipCallsTestHook.t.sol ├── Sync.t.sol ├── Tick.t.sol ├── bin/ │ └── v3Factory.bytecode ├── js-scripts/ │ ├── build.js │ ├── dist/ │ │ ├── getModifyLiquidityResult.js │ │ ├── getSqrtPriceAtTick.js │ │ └── getTickAtSqrtPrice.js │ ├── package.json │ ├── src/ │ │ ├── getModifyLiquidityResult.ts │ │ ├── getSqrtPriceAtTick.ts │ │ ├── getTickAtSqrtPrice.ts │ │ └── utils/ │ │ └── shared.ts │ └── tsconfig.json ├── libraries/ │ ├── BitMath.t.sol │ ├── FullMath.t.sol │ ├── Hooks.t.sol │ ├── LPFeeLibrary.t.sol │ ├── LiquidityMath.t.sol │ ├── Lock.t.sol │ ├── NonzeroDeltaCount.t.sol │ ├── Pool.t.sol │ ├── PoolId.t.sol │ ├── Position.t.sol │ ├── ProtocolFeeLibrary.t.sol │ ├── SafeCast.t.sol │ ├── SqrtPriceMath.t.sol │ ├── StateLibrary.t.sol │ ├── SwapMath.t.sol │ ├── TickBitmap.t.sol │ ├── TickMath.t.sol │ └── UnsafeMath.t.sol ├── types/ │ ├── BalanceDelta.t.sol │ ├── Currency.t.sol │ └── Slot0.t.sol └── utils/ ├── AmountHelpers.sol ├── Constants.sol ├── CurrencySettler.sol ├── Deployers.sol ├── JavascriptFfi.sol ├── LiquidityAmounts.sol ├── Logger.sol ├── NestedActions.t.sol ├── SortTokens.sol ├── SwapHelper.t.sol └── V3Helper.sol