UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 64.3 kB
{"abi":[{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getPoolAndPositionInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"","type":"uint256","internalType":"PositionInfo"}],"stateMutability":"view"},{"type":"function","name":"getPositionLiquidity","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"liquidity","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"initializePool","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"int24","internalType":"int24"}],"stateMutability":"payable"},{"type":"function","name":"modifyLiquidities","inputs":[{"name":"unlockData","type":"bytes","internalType":"bytes"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"modifyLiquiditiesWithoutUnlock","inputs":[{"name":"actions","type":"bytes","internalType":"bytes"},{"name":"params","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"nextTokenId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"word","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"permitSingle","type":"tuple","internalType":"struct IAllowanceTransfer.PermitSingle","components":[{"name":"details","type":"tuple","internalType":"struct IAllowanceTransfer.PermitDetails","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permitBatch","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"_permitBatch","type":"tuple","internalType":"struct IAllowanceTransfer.PermitBatch","components":[{"name":"details","type":"tuple[]","internalType":"struct IAllowanceTransfer.PermitDetails[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permitForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"positionInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"PositionInfo"}],"stateMutability":"view"},{"type":"function","name":"revokeNonce","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"subscribe","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"newSubscriber","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"subscriber","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subscriber","type":"address","internalType":"contract ISubscriber"}],"stateMutability":"view"},{"type":"function","name":"unsubscribe","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"unsubscribeGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Subscription","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subscriber","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unsubscription","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subscriber","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySubscribed","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"subscriber","type":"address","internalType":"address"}]},{"type":"error","name":"BurnNotificationReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"DeadlinePassed","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"GasLimitTooLow","inputs":[]},{"type":"error","name":"ModifyLiquidityNotificationReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"NoCodeSubscriber","inputs":[]},{"type":"error","name":"NoSelfPermit","inputs":[]},{"type":"error","name":"NonceAlreadyUsed","inputs":[]},{"type":"error","name":"NotApproved","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotSubscribed","inputs":[]},{"type":"error","name":"PoolManagerMustBeLocked","inputs":[]},{"type":"error","name":"SignatureDeadlineExpired","inputs":[]},{"type":"error","name":"SubscriptionReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"Unauthorized","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","getPoolAndPositionInfo(uint256)":"7ba03aad","getPositionLiquidity(uint256)":"1efeed33","initializePool((address,address,uint24,int24,address),uint160)":"f7020405","modifyLiquidities(bytes,uint256)":"dd46508f","modifyLiquiditiesWithoutUnlock(bytes,bytes[])":"4afe393c","multicall(bytes[])":"ac9650d8","nextTokenId()":"75794a3c","nonces(address,uint256)":"502e1a16","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,uint256,uint256,uint256,bytes)":"0f5730f1","permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"002a3e3a","permitForAll(address,address,bool,uint256,uint256,bytes)":"3aea60f0","poolManager()":"dc4c90d3","positionInfo(uint256)":"89097a6a","revokeNonce(uint256)":"05c1ee20","subscribe(uint256,address,bytes)":"2b9261de","subscriber(uint256)":"16a24131","unsubscribe(uint256)":"ad0b27fb","unsubscribeGasLimit()":"4767565f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"AlreadySubscribed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"BurnNotificationReverted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"DeadlinePassed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"ModifyLiquidityNotificationReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCodeSubscriber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSelfPermit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonceAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSubscribed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolManagerMustBeLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SubscriptionReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"Subscription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"Unsubscription\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPoolAndPositionInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"PositionInfo\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPositionLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"initializePool\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unlockData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"modifyLiquidities\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"actions\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"params\",\"type\":\"bytes[]\"}],\"name\":\"modifyLiquiditiesWithoutUnlock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"_permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitBatch\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionInfo\",\"outputs\":[{\"internalType\":\"PositionInfo\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"revokeNonce\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newSubscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"subscribe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"subscriber\",\"outputs\":[{\"internalType\":\"contract ISubscriber\",\"name\":\"subscriber\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unsubscribe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unsubscribeGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"PoolManagerMustBeLocked()\":[{\"details\":\"This is to prevent hooks from being able to trigger notifications at the same time the position is being modified.\"}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"bytes32 The domain separator\"}},\"getPoolAndPositionInfo(uint256)\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"_0\":\"poolKey the pool key of the position\",\"_1\":\"PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\"}},\"getPositionLiquidity(uint256)\":{\"details\":\"this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library\",\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"liquidity\":\"the position's liquidity, as a liquidityAmount\"}},\"initializePool((address,address,uint24,int24,address),uint160)\":{\"details\":\"If the pool is already initialized, this function will not revert and just return type(int24).max\",\"params\":{\"key\":\"The PoolKey of the pool to initialize\",\"sqrtPriceX96\":\"The initial starting price of the pool, expressed as a sqrtPriceX96\"},\"returns\":{\"_0\":\"The current tick of the pool, or type(int24).max if the pool creation failed, or the pool already existed\"}},\"modifyLiquidities(bytes,uint256)\":{\"details\":\"This is the standard entrypoint for the PositionManager\",\"params\":{\"deadline\":\"is the deadline for the batched actions to be executed\",\"unlockData\":\"is an encoding of actions, and parameters for those actions\"}},\"modifyLiquiditiesWithoutUnlock(bytes,bytes[])\":{\"details\":\"This must be called by a contract that has already unlocked the v4 PoolManager\",\"params\":{\"actions\":\"the actions to perform\",\"params\":\"the parameters to provide for the actions\"}},\"multicall(bytes[])\":{\"details\":\"The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether. Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"nextTokenId()\":{\"returns\":{\"_0\":\"uint256 The next token ID\"}},\"nonces(address,uint256)\":{\"details\":\"word is at most type(uint248).max\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"owner\":\"the owner of the tokens\",\"permitSingle\":\"the permit data\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permit(address,uint256,uint256,uint256,bytes)\":{\"details\":\"payable so it can be multicalled with NATIVE related actions\",\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"nonce\":\"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word\",\"signature\":\"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\"}},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"_permitBatch\":\"a batch of approvals\",\"owner\":\"the owner of the tokens\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permitForAll(address,address,bool,uint256,uint256,bytes)\":{\"details\":\"payable so it can be multicalled with NATIVE related actions\",\"params\":{\"approved\":\"The permission to set on the operator\",\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"nonce\":\"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word\",\"operator\":\"The address that will be set as an operator for the owner\",\"owner\":\"The address that is setting the operator\",\"signature\":\"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)\"}},\"positionInfo(uint256)\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"_0\":\"a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\"}},\"revokeNonce(uint256)\":{\"details\":\"Used in cases where a valid nonce has not been broadcasted onchain, and the owner wants to revoke the validity of the noncepayable so it can be multicalled with native-token related actions\"},\"subscribe(uint256,address,bytes)\":{\"details\":\"Calling subscribe when a position is already subscribed will revertpayable so it can be multicalled with NATIVE related actionswill revert if pool manager is locked\",\"params\":{\"data\":\"caller-provided data that's forwarded to the subscriber contract\",\"newSubscriber\":\"the address of the subscriber contract\",\"tokenId\":\"the ERC721 tokenId\"}},\"subscriber(uint256)\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"subscriber\":\"the subscriber contract\"}},\"unsubscribe(uint256)\":{\"details\":\"Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notifiedpayable so it can be multicalled with NATIVE related actionsMust always allow a user to unsubscribe. In the case of a malicious subscriber, a user can always unsubscribe safely, ensuring liquidity is always modifiable.will revert if pool manager is locked\",\"params\":{\"tokenId\":\"the ERC721 tokenId\"}},\"unsubscribeGasLimit()\":{\"returns\":{\"_0\":\"uint256 the maximum gas limit when notifying a subscriber's `notifyUnsubscribe` function\"}}},\"title\":\"IPositionManager\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadySubscribed(uint256,address)\":[{\"notice\":\"Thrown when a tokenId already has a subscriber\"}],\"BurnNotificationReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting burn notification\"}],\"DeadlinePassed(uint256)\":[{\"notice\":\"Thrown when the block.timestamp exceeds the user-provided deadline\"}],\"GasLimitTooLow()\":[{\"notice\":\"Thrown when a user specifies a gas limit too low to avoid valid unsubscribe notifications\"}],\"ModifyLiquidityNotificationReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting modify liquidity notification\"}],\"NoCodeSubscriber()\":[{\"notice\":\"Thrown when a subscriber does not have code\"}],\"NotApproved(address)\":[{\"notice\":\"Thrown when the caller is not approved to modify a position\"}],\"NotSubscribed()\":[{\"notice\":\"Thrown when unsubscribing without a subscriber\"}],\"PoolManagerMustBeLocked()\":[{\"notice\":\"Thrown when calling transfer, subscribe, or unsubscribe when the PoolManager is unlocked.\"}],\"SubscriptionReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting subscription\"}]},\"events\":{\"Subscription(uint256,address)\":{\"notice\":\"Emitted on a successful call to subscribe\"},\"Unsubscription(uint256,address)\":{\"notice\":\"Emitted on a successful call to unsubscribe\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"getPoolAndPositionInfo(uint256)\":{\"notice\":\"Returns the pool key and position info of a position\"},\"getPositionLiquidity(uint256)\":{\"notice\":\"Returns the liquidity of a position\"},\"initializePool((address,address,uint24,int24,address),uint160)\":{\"notice\":\"Initialize a Uniswap v4 Pool\"},\"modifyLiquidities(bytes,uint256)\":{\"notice\":\"Unlocks Uniswap v4 PoolManager and batches actions for modifying liquidity\"},\"modifyLiquiditiesWithoutUnlock(bytes,bytes[])\":{\"notice\":\"Batches actions for modifying liquidity without unlocking v4 PoolManager\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"nextTokenId()\":{\"notice\":\"Used to get the ID that will be used for the next minted liquidity position\"},\"nonces(address,uint256)\":{\"notice\":\"mapping of nonces consumed by each address, where a nonce is a single bit on the 256-bit bitmap\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"allows forwarding a single permit to permit2\"},\"permit(address,uint256,uint256,uint256,bytes)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"allows forwarding batch permits to permit2\"},\"permitForAll(address,address,bool,uint256,uint256,bytes)\":{\"notice\":\"Set an operator with full permission to an owner's tokens via signature\"},\"poolManager()\":{\"notice\":\"The Uniswap v4 PoolManager contract\"},\"positionInfo(uint256)\":{\"notice\":\"Returns the position info of a position\"},\"revokeNonce(uint256)\":{\"notice\":\"Revoke a nonce by spending it, preventing it from being used again\"},\"subscribe(uint256,address,bytes)\":{\"notice\":\"Enables the subscriber to receive notifications for a respective position\"},\"subscriber(uint256)\":{\"notice\":\"Returns the subscriber for a respective position\"},\"unsubscribe(uint256)\":{\"notice\":\"Removes the subscriber from receiving notifications for a respective position\"},\"unsubscribeGasLimit()\":{\"notice\":\"Returns and determines the maximum allowable gas-used for notifying unsubscribe\"}},\"notice\":\"Interface for the PositionManager contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IPositionManager.sol\":\"IPositionManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"],\"viaIR\":true},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"]},\"src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"]},\"src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"]},\"src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]},\"src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"]},\"src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"]},\"src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"]},\"src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"]},\"src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"subscriber","type":"address"}],"type":"error","name":"AlreadySubscribed"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"BurnNotificationReverted"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"DeadlinePassed"},{"inputs":[],"type":"error","name":"GasLimitTooLow"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"ModifyLiquidityNotificationReverted"},{"inputs":[],"type":"error","name":"NoCodeSubscriber"},{"inputs":[],"type":"error","name":"NoSelfPermit"},{"inputs":[],"type":"error","name":"NonceAlreadyUsed"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotApproved"},{"inputs":[],"type":"error","name":"NotSubscribed"},{"inputs":[],"type":"error","name":"PoolManagerMustBeLocked"},{"inputs":[],"type":"error","name":"SignatureDeadlineExpired"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"SubscriptionReverted"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"subscriber","type":"address","indexed":true}],"type":"event","name":"Subscription","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"subscriber","type":"address","indexed":true}],"type":"event","name":"Unsubscription","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolAndPositionInfo","outputs":[{"internalType":"struct PoolKey","name":"","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"PositionInfo","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPositionLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"payable","type":"function","name":"initializePool","outputs":[{"internalType":"int24","name":"","type":"int24"}]},{"inputs":[{"internalType":"bytes","name":"unlockData","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"modifyLiquidities"},{"inputs":[{"internalType":"bytes","name":"actions","type":"bytes"},{"internalType":"bytes[]","name":"params","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"modifyLiquiditiesWithoutUnlock"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"word","type":"uint256"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitBatch","name":"_permitBatch","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitBatch","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitForAll"},{"inputs":[],"stateMutability":"view","type":"function","name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"positionInfo","outputs":[{"internalType":"PositionInfo","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"payable","type":"function","name":"revokeNonce"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"newSubscriber","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"subscribe"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"subscriber","outputs":[{"internalType":"contract ISubscriber","name":"subscriber","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"unsubscribe"},{"inputs":[],"stateMutability":"view","type":"function","name":"unsubscribeGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"returns":{"_0":"bytes32 The domain separator"}},"getPoolAndPositionInfo(uint256)":{"params":{"tokenId":"the ERC721 tokenId"},"returns":{"_0":"poolKey the pool key of the position","_1":"PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)"}},"getPositionLiquidity(uint256)":{"details":"this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library","params":{"tokenId":"the ERC721 tokenId"},"returns":{"liquidity":"the position's liquidity, as a liquidityAmount"}},"initializePool((address,address,uint24,int24,address),uint160)":{"details":"If the pool is already initialized, this function will not revert and just return type(int24).max","params":{"key":"The PoolKey of the pool to initialize","sqrtPriceX96":"The initial starting price of the pool, expressed as a sqrtPriceX96"},"returns":{"_0":"The current tick of the pool, or type(int24).max if the pool creation failed, or the pool already existed"}},"modifyLiquidities(bytes,uint256)":{"details":"This is the standard entrypoint for the PositionManager","params":{"deadline":"is the deadline for the batched actions to be executed","unlockData":"is an encoding of actions, and parameters for those actions"}},"modifyLiquiditiesWithoutUnlock(bytes,bytes[])":{"details":"This must be called by a contract that has already unlocked the v4 PoolManager","params":{"actions":"the actions to perform","params":"the parameters to provide for the actions"}},"multicall(bytes[])":{"details":"The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether. Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.","params":{"data":"The encoded function data for each of the calls to make to this contract"},"returns":{"results":"The results from each of the calls passed in via data"}},"nextTokenId()":{"returns":{"_0":"uint256 The next token ID"}},"nonces(address,uint256)":{"details":"word is at most type(uint248).max"},"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"owner":"the owner of the tokens","permitSingle":"the permit data","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}},"permit(address,uint256,uint256,uint256,bytes)":{"details":"payable so it can be multicalled with NATIVE related act