[ { "type": "constructor", "inputs": [ { "name": "owner", "type": "address", "internalType": "address" } ], "stateMutability": "nonpayable" }, { "type": "receive", "stateMutability": "payable" }, { "type": "function", "name": "accumulateAsFees", "inputs": [ { "name": "poolKey", "type": "tuple", "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "amount0", "type": "uint128", "internalType": "uint128" }, { "name": "amount1", "type": "uint128", "internalType": "uint128" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "cancelOwnershipHandover", "inputs": [], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "collectFees", "inputs": [ { "name": "poolKey", "type": "tuple", "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "bounds", "type": "tuple", "internalType": "struct Bounds", "components": [ { "name": "lower", "type": "int32", "internalType": "int32" }, { "name": "upper", "type": "int32", "internalType": "int32" } ] } ], "outputs": [ { "name": "amount0", "type": "uint128", "internalType": "uint128" }, { "name": "amount1", "type": "uint128", "internalType": "uint128" } ], "stateMutability": "nonpayable" }, { "type": "function", "name": "completeOwnershipHandover", "inputs": [ { "name": "pendingOwner", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "forward", "inputs": [ { "name": "to", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "getPoolFeesPerLiquidityInside", "inputs": [ { "name": "poolKey", "type": "tuple", "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "bounds", "type": "tuple", "internalType": "struct Bounds", "components": [ { "name": "lower", "type": "int32", "internalType": "int32" }, { "name": "upper", "type": "int32", "internalType": "int32" } ] } ], "outputs": [ { "name": "", "type": "tuple", "internalType": "struct FeesPerLiquidity", "components": [ { "name": "value0", "type": "uint256", "internalType": "uint256" }, { "name": "value1", "type": "uint256", "internalType": "uint256" } ] } ], "stateMutability": "view" }, { "type": "function", "name": "initializePool", "inputs": [ { "name": "poolKey", "type": "tuple", "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "tick", "type": "int32", "internalType": "int32" } ], "outputs": [ { "name": "sqrtRatio", "type": "uint96", "internalType": "SqrtRatio" } ], "stateMutability": "nonpayable" }, { "type": "function", "name": "load", "inputs": [ { "name": "token", "type": "address", "internalType": "address" }, { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "amount", "type": "uint128", "internalType": "uint128" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "lock", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "nextInitializedTick", "inputs": [ { "name": "poolId", "type": "bytes32", "internalType": "bytes32" }, { "name": "fromTick", "type": "int32", "internalType": "int32" }, { "name": "tickSpacing", "type": "uint32", "internalType": "uint32" }, { "name": "skipAhead", "type": "uint256", "internalType": "uint256" } ], "outputs": [ { "name": "tick", "type": "int32", "internalType": "int32" }, { "name": "isInitialized", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "owner", "inputs": [], "outputs": [ { "name": "result", "type": "address", "internalType": "address" } ], "stateMutability": "view" }, { "type": "function", "name": "ownershipHandoverExpiresAt", "inputs": [ { "name": "pendingOwner", "type": "address", "internalType": "address" } ], "outputs": [ { "name": "result", "type": "uint256", "internalType": "uint256" } ], "stateMutability": "view" }, { "type": "function", "name": "pay", "inputs": [ { "name": "token", "type": "address", "internalType": "address" } ], "outputs": [ { "name": "payment", "type": "uint128", "internalType": "uint128" } ], "stateMutability": "nonpayable" }, { "type": "function", "name": "prevInitializedTick", "inputs": [ { "name": "poolId", "type": "bytes32", "internalType": "bytes32" }, { "name": "fromTick", "type": "int32", "internalType": "int32" }, { "name": "tickSpacing", "type": "uint32", "internalType": "uint32" }, { "name": "skipAhead", "type": "uint256", "internalType": "uint256" } ], "outputs": [ { "name": "tick", "type": "int32", "internalType": "int32" }, { "name": "isInitialized", "type": "bool", "internalType": "bool" } ], "stateMutability": "view" }, { "type": "function", "name": "registerExtension", "inputs": [ { "name": "expectedCallPoints", "type": "tuple", "internalType": "struct CallPoints", "components": [ { "name": "beforeInitializePool", "type": "bool", "internalType": "bool" }, { "name": "afterInitializePool", "type": "bool", "internalType": "bool" }, { "name": "beforeSwap", "type": "bool", "internalType": "bool" }, { "name": "afterSwap", "type": "bool", "internalType": "bool" }, { "name": "beforeUpdatePosition", "type": "bool", "internalType": "bool" }, { "name": "afterUpdatePosition", "type": "bool", "internalType": "bool" }, { "name": "beforeCollectFees", "type": "bool", "internalType": "bool" }, { "name": "afterCollectFees", "type": "bool", "internalType": "bool" } ] } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "requestOwnershipHandover", "inputs": [], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "save", "inputs": [ { "name": "owner", "type": "address", "internalType": "address" }, { "name": "token", "type": "address", "internalType": "address" }, { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "amount", "type": "uint128", "internalType": "uint128" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "sload", "inputs": [ { "name": "slot", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", "name": "swap", "inputs": [ { "name": "poolKey", "type": "tuple", "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "params", "type": "tuple", "internalType": "struct SwapParameters", "components": [ { "name": "amount", "type": "int128", "internalType": "int128" }, { "name": "isToken1", "type": "bool", "internalType": "bool" }, { "name": "sqrtRatioLimit", "type": "uint96", "internalType": "SqrtRatio" }, { "name": "skipAhead", "type": "uint256", "internalType": "uint256" } ] } ], "outputs": [ { "name": "delta0", "type": "int128", "internalType": "int128" }, { "name": "delta1", "type": "int128", "internalType": "int128" } ], "stateMutability": "payable" }, { "type": "function", "name": "tload", "inputs": [ { "name": "slot", "type": "bytes32", "internalType": "bytes32" } ], "outputs": [ { "name": "", "type": "bytes32", "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", "name": "transferOwnership", "inputs": [ { "name": "newOwner", "type": "address", "internalType": "address" } ], "outputs": [], "stateMutability": "payable" }, { "type": "function", "name": "updatePosition", "inputs": [ { "name": "poolKey", "type": "tuple", "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "params", "type": "tuple", "internalType": "struct UpdatePositionParameters", "components": [ { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "bounds", "type": "tuple", "internalType": "struct Bounds", "components": [ { "name": "lower", "type": "int32", "internalType": "int32" }, { "name": "upper", "type": "int32", "internalType": "int32" } ] }, { "name": "liquidityDelta", "type": "int128", "internalType": "int128" } ] } ], "outputs": [ { "name": "delta0", "type": "int128", "internalType": "int128" }, { "name": "delta1", "type": "int128", "internalType": "int128" } ], "stateMutability": "payable" }, { "type": "function", "name": "withdraw", "inputs": [ { "name": "token", "type": "address", "internalType": "address" }, { "name": "recipient", "type": "address", "internalType": "address" }, { "name": "amount", "type": "uint128", "internalType": "uint128" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "withdrawProtocolFees", "inputs": [ { "name": "recipient", "type": "address", "internalType": "address" }, { "name": "token", "type": "address", "internalType": "address" }, { "name": "amount", "type": "uint256", "internalType": "uint256" } ], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "ExtensionRegistered", "inputs": [ { "name": "extension", "type": "address", "indexed": false, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "FeesAccumulated", "inputs": [ { "name": "poolId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "amount0", "type": "uint128", "indexed": false, "internalType": "uint128" }, { "name": "amount1", "type": "uint128", "indexed": false, "internalType": "uint128" } ], "anonymous": false }, { "type": "event", "name": "LoadedBalance", "inputs": [ { "name": "owner", "type": "address", "indexed": false, "internalType": "address" }, { "name": "token", "type": "address", "indexed": false, "internalType": "address" }, { "name": "salt", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "amount", "type": "uint128", "indexed": false, "internalType": "uint128" } ], "anonymous": false }, { "type": "event", "name": "OwnershipHandoverCanceled", "inputs": [ { "name": "pendingOwner", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "OwnershipHandoverRequested", "inputs": [ { "name": "pendingOwner", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "OwnershipTransferred", "inputs": [ { "name": "oldOwner", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" } ], "anonymous": false }, { "type": "event", "name": "PoolInitialized", "inputs": [ { "name": "poolId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "poolKey", "type": "tuple", "indexed": false, "internalType": "struct PoolKey", "components": [ { "name": "token0", "type": "address", "internalType": "address" }, { "name": "token1", "type": "address", "internalType": "address" }, { "name": "config", "type": "bytes32", "internalType": "Config" } ] }, { "name": "tick", "type": "int32", "indexed": false, "internalType": "int32" }, { "name": "sqrtRatio", "type": "uint96", "indexed": false, "internalType": "SqrtRatio" } ], "anonymous": false }, { "type": "event", "name": "PositionFeesCollected", "inputs": [ { "name": "poolId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "positionKey", "type": "tuple", "indexed": false, "internalType": "struct PositionKey", "components": [ { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "owner", "type": "address", "internalType": "address" }, { "name": "bounds", "type": "tuple", "internalType": "struct Bounds", "components": [ { "name": "lower", "type": "int32", "internalType": "int32" }, { "name": "upper", "type": "int32", "internalType": "int32" } ] } ] }, { "name": "amount0", "type": "uint128", "indexed": false, "internalType": "uint128" }, { "name": "amount1", "type": "uint128", "indexed": false, "internalType": "uint128" } ], "anonymous": false }, { "type": "event", "name": "PositionUpdated", "inputs": [ { "name": "locker", "type": "address", "indexed": false, "internalType": "address" }, { "name": "poolId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "params", "type": "tuple", "indexed": false, "internalType": "struct UpdatePositionParameters", "components": [ { "name": "salt", "type": "bytes32", "internalType": "bytes32" }, { "name": "bounds", "type": "tuple", "internalType": "struct Bounds", "components": [ { "name": "lower", "type": "int32", "internalType": "int32" }, { "name": "upper", "type": "int32", "internalType": "int32" } ] }, { "name": "liquidityDelta", "type": "int128", "internalType": "int128" } ] }, { "name": "delta0", "type": "int128", "indexed": false, "internalType": "int128" }, { "name": "delta1", "type": "int128", "indexed": false, "internalType": "int128" } ], "anonymous": false }, { "type": "event", "name": "ProtocolFeesWithdrawn", "inputs": [ { "name": "recipient", "type": "address", "indexed": false, "internalType": "address" }, { "name": "token", "type": "address", "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" } ], "anonymous": false }, { "type": "event", "name": "SavedBalance", "inputs": [ { "name": "owner", "type": "address", "indexed": false, "internalType": "address" }, { "name": "token", "type": "address", "indexed": false, "internalType": "address" }, { "name": "salt", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "amount", "type": "uint128", "indexed": false, "internalType": "uint128" } ], "anonymous": false }, { "type": "error", "name": "AlreadyInitialized", "inputs": [] }, { "type": "error", "name": "Amount0DeltaOverflow", "inputs": [] }, { "type": "error", "name": "Amount1DeltaOverflow", "inputs": [] }, { "type": "error", "name": "AmountBeforeFeeOverflow", "inputs": [] }, { "type": "error", "name": "BoundsOrder", "inputs": [] }, { "type": "error", "name": "BoundsTickSpacing", "inputs": [] }, { "type": "error", "name": "DebtsNotZeroed", "inputs": [ { "name": "id", "type": "uint256", "internalType": "uint256" } ] }, { "type": "error", "name": "ExtensionAlreadyRegistered", "inputs": [] }, { "type": "error", "name": "ExtensionNotRegistered", "inputs": [] }, { "type": "error", "name": "FailedRegisterInvalidCallPoints", "inputs": [] }, { "type": "error", "name": "FullRangeOnlyPool", "inputs": [] }, { "type": "error", "name": "InsufficientSavedBalance", "inputs": [] }, { "type": "error", "name": "InvalidSqrtRatioLimit", "inputs": [] }, { "type": "error", "name": "InvalidTick", "inputs": [ { "name": "tick", "type": "int32", "internalType": "int32" } ] }, { "type": "error", "name": "InvalidTickSpacing", "inputs": [] }, { "type": "error", "name": "LockerOnly", "inputs": [] }, { "type": "error", "name": "MinMaxBounds", "inputs": [] }, { "type": "error", "name": "MustCollectFeesBeforeWithdrawingAllLiquidity", "inputs": [] }, { "type": "error", "name": "NewOwnerIsZeroAddress", "inputs": [] }, { "type": "error", "name": "NoHandoverRequest", "inputs": [] }, { "type": "error", "name": "NoPaymentMade", "inputs": [] }, { "type": "error", "name": "NotLocked", "inputs": [] }, { "type": "error", "name": "PaymentOverflow", "inputs": [] }, { "type": "error", "name": "PoolAlreadyInitialized", "inputs": [] }, { "type": "error", "name": "PoolNotInitialized", "inputs": [] }, { "type": "error", "name": "SqrtRatioLimitOutOfRange", "inputs": [] }, { "type": "error", "name": "SqrtRatioLimitWrongDirection", "inputs": [] }, { "type": "error", "name": "TokensMustBeSorted", "inputs": [] }, { "type": "error", "name": "Unauthorized", "inputs": [] }, { "type": "error", "name": "ZeroLiquidityNextSqrtRatioFromAmount0", "inputs": [] }, { "type": "error", "name": "ZeroLiquidityNextSqrtRatioFromAmount1", "inputs": [] } ]