> For the complete documentation index, see [llms.txt](https://docs.turbine.exchange/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.turbine.exchange/reference/contracts/solidity-documentation/selectors.md).

# Selectors and topics

## TurbineSettler

### Functions

* `0x01ffc9a7` supportsInterface(bytes4)
* `0x110bda25` updateFeeWithdrawer(address)
* `0x200a1a77` turbineLiquidityRouter()
* `0x248a9ca3` getRoleAdmin(bytes32)
* `0x2f2ff15d` grantRole(bytes32,address)
* `0x32b4fa6b` feeWithdrawer()
* `0x36568abe` renounceRole(bytes32,address)
* `0x3f4ba83a` unpause()
* `0x49551976` getTurbineHook()
* `0x51617258` UNIV4\_POOL\_MANAGER\_CONTRACT()
* `0x5c975abb` paused()
* `0x69fe8806` batchExecutedSellAmounts(bytes32\[])
* `0x8456cb59` pause()
* `0x8bad0c0a` renounceAdmin()
* `0x91d14854` hasRole(bytes32,address)
* `0x91dd7346` unlockCallback(bytes)
* `0xa217fddf` DEFAULT\_ADMIN\_ROLE()
* `0xb42b5bf8` getTurbineLiquidityRouter()
* `0xd547741f` revokeRole(bytes32,address)
* `0xe2fa47f0` sweepFees(address\[],address)
* `0xe5c94437` executedSellAmounts(bytes32)
* `0xe63ab1e9` PAUSER\_ROLE()
* `0xe9fc0e01` turbineSigner()
* `0xf840f3fc` PERMIT2\_CONTRACT()
* `0xfb1bb9de` UNPAUSER\_ROLE()
* `0xfdcc8090` executeLiquidityActionsAndSettlement((address,bytes32,uint256,uint256,uint256,address,address,uint24,(((address,uint256)\[],uint256,uint256),bytes))\[],(address,bytes32,uint256,address,address,uint24,(((address,uint256),uint256,uint256),bytes))\[],bytes32\[],((address,uint256)\[],(bytes32,address,address,address,uint256,uint256,uint256,(bytes,((address,uint160,uint48,uint48),address,uint256)))\[],(bytes32,address,address,bytes,address,address,uint256,uint256)\[],(address,bytes,address,address,uint256,uint256)\[],(address,address,uint256,uint256,uint24,uint256)\[],(address,uint256)\[]),uint256,uint256)

### Errors

* `0x179ce99f` RouterNotSet()
* `0x1b886509` OnlyTurbineSigner()
* `0x400d5838` ExcessiveTokensDistributed(uint256,uint256)
* `0x4730d0b1` InvalidCalldataTarget(address)
* `0x4e47846c` InvalidBlockNumber()
* `0x5274afe7` SafeERC20FailedOperation(address)
* `0x6697b232` AccessControlBadConfirmation()
* `0x7ef7897c` MissingAllowance(bytes32)
* `0x8989e031` InsufficientTokensReceived(uint256,uint256)
* `0x8dfc202b` ExpectedPause()
* `0x9996b315` AddressEmptyCode(address)
* `0xbb231d53` InsufficientBuyTokenBalance(address,uint256,uint256)
* `0xd6bda275` FailedCall()
* `0xd92e233d` ZeroAddress()
* `0xd93c0665` EnforcedPause()
* `0xdcdd32f1` OnlyFeeWithdrawer()
* `0xe2517d3f` AccessControlUnauthorizedAccount(address,bytes32)

### Events

* `0x013d96381264780a74f0a1460532619bcc42953580ff6ad2c45d63725eae5ada` FeesSwept(address\[],address)
* `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d` RoleGranted(bytes32,address,address)
* `0x5a8a721d8fc5affcedff701436e92f6e3f555ec3866f2f3124f2b1a404c4fabe` FeeWithdrawerUpdated(address,address)
* `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa` Unpaused(address)
* `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258` Paused(address)
* `0x7fac4012cf4d9412941be83feebe299813fec2e27da8a0e9e9e83e348b7d47d0` DEXSwapExecuted(address,address,address,uint256,uint256,uint256)
* `0xbcf47a47f4778664d2bba984df51717ed82a59e0ae7ee1c8f8693c37700ab262` OrderSettled(address,bytes32,address,address,uint256,uint256)
* `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff` RoleAdminChanged(bytes32,bytes32,bytes32)
* `0xcb9f64d6e4ccba3245693379bb306eff237e8ebc224a478ad6b82660b85b5d5c` TurbinePoolSwapExecuted(address,address,uint24,bool,uint256,uint256)
* `0xd1e5c0d026a890a7118e935fd0dcb810a5466e8f6f085f43a35845be57a77325` TurbineSettlement(uint256)
* `0xeadfba4a6dcfd600e2dfac65f349a17f655af81eba00936e9a367c63d21f821d` TurbineSignerSet(address)
* `0xeeef375f2a6eac8a885084e8818b615ae63b323dbe600a499aa8d719b09fc2ad` SmartOrderSettled(address,bytes32,address,address,uint256,uint256,uint256)
* `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b` RoleRevoked(bytes32,address,address)

## TurbineLiquidityRouter

### Functions

* `0x208dc3d8` getRemoveLiquidityIntents(bytes32\[])
* `0x234d57d9` \_swapCallback(uint256,uint256,(address,address,uint24,int24,address),bool)
* `0x39e298ac` turbineSettler()
* `0x415e982d` \_TOKEN\_PERMISSIONS\_TYPEHASH()
* `0x41d5d2b6` removeLiquidityIntents(bytes32)
* `0x49551976` getTurbineHook()
* `0x5264753b` \_addLiquidityCallback(address,uint256,uint256,(address,address,uint24,int24,address),(((address,uint256)\[],uint256,uint256),bytes))
* `0x5f4e78b6` submitRemoveLiquidityIntent((address,bytes32,uint256,bytes32),(((address,uint256),uint256,uint256),bytes))
* `0x62308e85` POOL\_MANAGER()
* `0x74535c63` executePendingIntents(bytes32\[])
* `0x78f16830` \_PERMIT\_TRANSFER\_FROM\_TYPEHASH()
* `0x7f5a7c7b` hook()
* `0x816c154f` getTurbineSettler()
* `0x91dd7346` unlockCallback(bytes)
* `0xaa93d10e` removeLiquidityPermits(bytes32)
* `0xb0f45cad` \_removeLiquidityCallback(address,uint256,(address,address,uint24,int24,address),uint256,uint256,(((address,uint256),uint256,uint256),bytes))
* `0xb7e62136` SPEEDBUMP\_DURATION()
* `0xb9661025` removeLiquidityCreatedAt(bytes32)
* `0xc3fbd579` removeLiquidity(address,uint256,address,address,uint24,(((address,uint256),uint256,uint256),bytes))
* `0xc5df0a68` swapExactTokens(uint256,uint256,address,address,uint24,bool,uint256)
* `0xc6abc0c6` MIN\_INTENT\_EXPIRY()
* `0xcab7e8eb` isNonceUsed(address,uint256)
* `0xe0e826aa` MAX\_INTENT\_EXPIRY()
* `0xe8a507e8` addLiquidity(address,uint256,uint256,address,address,uint24,uint256,(((address,uint256)\[],uint256,uint256),bytes))
* `0xf840f3fc` PERMIT2\_CONTRACT()

### Errors

* `0x01c6a053` InvalidIntentOwner()
* `0x065729ff` InvalidOutputReceived()
* `0x10074548` ZeroLiquidity()
* `0x1a8470c7` InsufficientLpTokenBalance(address,uint256,uint256)
* `0x23c5628a` InvalidPermitToken(address,address)
* `0x24775e06` SafeCastOverflowedUintToInt(uint256)
* `0x2b32713d` SwapExpired()
* `0x34682d42` InvalidPermitAmount(uint256,uint256)
* `0x41035b5a` PermitDeadlineTooShort(uint256,uint256)
* `0x4be6321b` InvalidSignatureLength()
* `0x5274afe7` SafeERC20FailedOperation(address)
* `0x76a9cc3e` NotTurbineSettler()
* `0x77ebef4d` OutOfGas()
* `0x8125e874` InvalidLpTokenAmount()
* `0x815e1d64` InvalidSigner()
* `0x8404e40f` PermitDeadlineTooLong(uint256,uint256)
* `0x8baa579f` InvalidSignature()
* `0x911285a3` NotSettlerOrPoolManager()
* `0xae18210a` NotPoolManager()
* `0xb0669cbc` InvalidContractSignature()
* `0xc237b320` DuplicateIntent(RemoveLiquidityIntentHash)
* `0xe57902cd` InsufficientInitialLiquidity()
* `0xe86ac8a6` InsufficientLiquidityBurnt()
* `0xe90aded4` NonceAlreadyUsed(address,uint256)

### Events

* `0x488857d55d5699a92f14db37ec65228eb0e3344dde0d38345a26464abf9a32ac` RemoveLiquidityIntentDeleted(RemoveLiquidityIntentHash)
* `0x91b7b87cc50ee71ce8dc7cdc2c2d6434b8525023c067481a16db26fa5b5be9ac` SettlerSet(address)
* `0xafafbdfafb615362738fb792c73736c166b3e3f4578451596a235e0260e50914` RemoveLiquidityIntentSubmitted(address,PoolId,RemoveLiquidityIntentHash,uint256,uint256)

## TurbineHook

### Functions

* `0x1cc186bd` getNumberOfRegisteredPools()
* `0x21d0ee70` beforeRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)
* `0x259982e5` beforeAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)
* `0x33f1d4b5` getReserves(address,address,uint24)
* `0x399ff28f` getPoolStates(bytes32\[])
* `0x46df4d45` burn(address,uint256,uint256,uint256,(address,address,uint24,int24,address))
* `0x575e24b4` beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)
* `0x5874f699` getLpTokenAddress(address,address,uint24)
* `0x62308e85` POOL\_MANAGER()
* `0x6c2bbe7e` afterRemoveLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)
* `0x6fe7e6eb` afterInitialize(address,(address,address,uint24,int24,address),uint160,int24)
* `0x9e50efea` getRegisteredPoolsSlice(uint256,uint256)
* `0x9f063efc` afterAddLiquidity(address,(address,address,uint24,int24,address),(int24,int24,int256,bytes32),int256,int256,bytes)
* `0xa9a091bb` validateHookAddress()
* `0xab6291fe` lockAcquired(bytes)
* `0xb46c6fb7` isRegisteredPool(address,address,uint24)
* `0xb47b2fb1` afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)
* `0xb5217bb4` pools(bytes32)
* `0xb6a8b0fa` beforeDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)
* `0xba9a7a56` MINIMUM\_LIQUIDITY()
* `0xc40ac54c` computePoolId(address,address,uint24)
* `0xc4e833ce` getHookPermissions()
* `0xcc1471df` getPoolLpToken(bytes32)
* `0xdc98354e` beforeInitialize(address,(address,address,uint24,int24,address),uint160)
* `0xe1b4af69` afterDonate(address,(address,address,uint24,int24,address),uint256,uint256,bytes)
* `0xf887ea40` router()
* `0xf9e3e6a0` mint(address,uint256,uint256,(address,address,uint24,int24,address),uint256)

### Errors

* `0x074e997e` ZeroCurrencyAddress()
* `0x0a85dc29` HookNotImplemented()
* `0x2083cd40` InvalidPool()
* `0x24775e06` SafeCastOverflowedUintToInt(uint256)
* `0x29c3b7ee` NotSelf()
* `0x327269a7` SafeCastOverflowedIntDowncast(uint8,int256)
* `0x739f4185` PoolNotRegistered()
* `0x89560ca1` BalanceOverflow()
* `0xa40afa38` LockFailure()
* `0xae18210a` NotPoolManager()
* `0xb3e8301e` PoolAlreadyRegistered()
* `0xd829ca58` RouterOnly()
* `0xe57902cd` InsufficientInitialLiquidity()

### Events

* `0x11b5b9d3e5e311261e5cde9d782ee1d28232178782e0b0b214ce4116e2896d94` Mint(bytes32,address,uint256,uint256)
* `0x8b5b231c3c70a76583e59da845256a0dfaa38bc9d8395f2068761e92e60faf48` Burn(bytes32,address,uint256,uint256,address)
* `0x922f85ecc7a399e9175cd0333de2f8fe2363d2fd59ab77f709437a22adf7a017` Swap(bytes32,uint256,uint256)
* `0xc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d15` RouterSet(address)
* `0xde3ff08ff95b98c67eeff3f890d8feae4ee5a3bce2ea568929d244155ddfab49` Sync(bytes32,uint256,uint256)
* `0xe450dd63de6f7928a9cf7761d1dcbf5c287ee9fc1fb46fa00c7c9412413bc352` LPTokenDeployed(bytes32,address,string,string)
* `0xe4c5c61c09aa451db9aa36c6f882a19e93473d68d2cc6ce5e6f5eede02d9d3b5` PoolRegistered(bytes32,address,address,uint24)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.turbine.exchange/reference/contracts/solidity-documentation/selectors.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
