constants.ts•34.7 kB
import { Address } from "viem";
import { mainnet, base, arbitrum } from "viem/chains";
export const supportedChains = [mainnet, base, arbitrum];
export function getPositionManagerAddress(chainId: number): Address {
const addresses: Record<number, Address> = {
[mainnet.id]: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
[base.id]: "0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1",
[arbitrum.id]: "0xC36442b4a4522E871399CD717aBDD847Ab11FE88",
};
if (!(chainId in addresses)) {
throw new Error(`Chain ID ${chainId} not supported`);
}
return addresses[chainId];
}
export const nonfungiblePositionManagerAbi = [
{
inputs: [
{ internalType: "address", name: "_factory", type: "address" },
{ internalType: "address", name: "_WETH9", type: "address" },
{ internalType: "address", name: "_tokenDescriptor_", type: "address" },
],
stateMutability: "nonpayable",
type: "constructor",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "approved",
type: "address",
},
{
indexed: true,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "Approval",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "operator",
type: "address",
},
{ indexed: false, internalType: "bool", name: "approved", type: "bool" },
],
name: "ApprovalForAll",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
{
indexed: false,
internalType: "address",
name: "recipient",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "amount1",
type: "uint256",
},
],
name: "Collect",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
{
indexed: false,
internalType: "uint128",
name: "liquidity",
type: "uint128",
},
{
indexed: false,
internalType: "uint256",
name: "amount0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "amount1",
type: "uint256",
},
],
name: "DecreaseLiquidity",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
{
indexed: false,
internalType: "uint128",
name: "liquidity",
type: "uint128",
},
{
indexed: false,
internalType: "uint256",
name: "amount0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "amount1",
type: "uint256",
},
],
name: "IncreaseLiquidity",
type: "event",
},
{
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "from", type: "address" },
{ indexed: true, internalType: "address", name: "to", type: "address" },
{
indexed: true,
internalType: "uint256",
name: "tokenId",
type: "uint256",
},
],
name: "Transfer",
type: "event",
},
{
inputs: [],
name: "DOMAIN_SEPARATOR",
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "PERMIT_TYPEHASH",
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "WETH9",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "to", type: "address" },
{ internalType: "uint256", name: "tokenId", type: "uint256" },
],
name: "approve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{ internalType: "address", name: "owner", type: "address" }],
name: "balanceOf",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "baseURI",
outputs: [{ internalType: "string", name: "", type: "string" }],
stateMutability: "pure",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "tokenId", type: "uint256" }],
name: "burn",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{
components: [
{ internalType: "uint256", name: "tokenId", type: "uint256" },
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "uint128", name: "amount0Max", type: "uint128" },
{ internalType: "uint128", name: "amount1Max", type: "uint128" },
],
internalType: "struct INonfungiblePositionManager.CollectParams",
name: "params",
type: "tuple",
},
],
name: "collect",
outputs: [
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "token0", type: "address" },
{ internalType: "address", name: "token1", type: "address" },
{ internalType: "uint24", name: "fee", type: "uint24" },
{ internalType: "uint160", name: "sqrtPriceX96", type: "uint160" },
],
name: "createAndInitializePoolIfNecessary",
outputs: [{ internalType: "address", name: "pool", type: "address" }],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{
components: [
{ internalType: "uint256", name: "tokenId", type: "uint256" },
{ internalType: "uint128", name: "liquidity", type: "uint128" },
{ internalType: "uint256", name: "amount0Min", type: "uint256" },
{ internalType: "uint256", name: "amount1Min", type: "uint256" },
{ internalType: "uint256", name: "deadline", type: "uint256" },
],
internalType:
"struct INonfungiblePositionManager.DecreaseLiquidityParams",
name: "params",
type: "tuple",
},
],
name: "decreaseLiquidity",
outputs: [
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
],
stateMutability: "payable",
type: "function",
},
{
inputs: [],
name: "factory",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "tokenId", type: "uint256" }],
name: "getApproved",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
components: [
{ internalType: "uint256", name: "tokenId", type: "uint256" },
{ internalType: "uint256", name: "amount0Desired", type: "uint256" },
{ internalType: "uint256", name: "amount1Desired", type: "uint256" },
{ internalType: "uint256", name: "amount0Min", type: "uint256" },
{ internalType: "uint256", name: "amount1Min", type: "uint256" },
{ internalType: "uint256", name: "deadline", type: "uint256" },
],
internalType:
"struct INonfungiblePositionManager.IncreaseLiquidityParams",
name: "params",
type: "tuple",
},
],
name: "increaseLiquidity",
outputs: [
{ internalType: "uint128", name: "liquidity", type: "uint128" },
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "owner", type: "address" },
{ internalType: "address", name: "operator", type: "address" },
],
name: "isApprovedForAll",
outputs: [{ internalType: "bool", name: "", type: "bool" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
components: [
{ internalType: "address", name: "token0", type: "address" },
{ internalType: "address", name: "token1", type: "address" },
{ internalType: "uint24", name: "fee", type: "uint24" },
{ internalType: "int24", name: "tickLower", type: "int24" },
{ internalType: "int24", name: "tickUpper", type: "int24" },
{ internalType: "uint256", name: "amount0Desired", type: "uint256" },
{ internalType: "uint256", name: "amount1Desired", type: "uint256" },
{ internalType: "uint256", name: "amount0Min", type: "uint256" },
{ internalType: "uint256", name: "amount1Min", type: "uint256" },
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "uint256", name: "deadline", type: "uint256" },
],
internalType: "struct INonfungiblePositionManager.MintParams",
name: "params",
type: "tuple",
},
],
name: "mint",
outputs: [
{ internalType: "uint256", name: "tokenId", type: "uint256" },
{ internalType: "uint128", name: "liquidity", type: "uint128" },
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
],
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: "name",
outputs: [{ internalType: "string", name: "", type: "string" }],
stateMutability: "view",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "tokenId", type: "uint256" }],
name: "ownerOf",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "spender", type: "address" },
{ internalType: "uint256", name: "tokenId", type: "uint256" },
{ internalType: "uint256", name: "deadline", type: "uint256" },
{ internalType: "uint8", name: "v", type: "uint8" },
{ internalType: "bytes32", name: "r", type: "bytes32" },
{ internalType: "bytes32", name: "s", type: "bytes32" },
],
name: "permit",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "tokenId", type: "uint256" }],
name: "positions",
outputs: [
{ internalType: "uint96", name: "nonce", type: "uint96" },
{ internalType: "address", name: "operator", type: "address" },
{ internalType: "address", name: "token0", type: "address" },
{ internalType: "address", name: "token1", type: "address" },
{ internalType: "uint24", name: "fee", type: "uint24" },
{ internalType: "int24", name: "tickLower", type: "int24" },
{ internalType: "int24", name: "tickUpper", type: "int24" },
{ internalType: "uint128", name: "liquidity", type: "uint128" },
{
internalType: "uint256",
name: "feeGrowthInside0LastX128",
type: "uint256",
},
{
internalType: "uint256",
name: "feeGrowthInside1LastX128",
type: "uint256",
},
{ internalType: "uint128", name: "tokensOwed0", type: "uint128" },
{ internalType: "uint128", name: "tokensOwed1", type: "uint128" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "refundETH",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "from", type: "address" },
{ internalType: "address", name: "to", type: "address" },
{ internalType: "uint256", name: "tokenId", type: "uint256" },
],
name: "safeTransferFrom",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "from", type: "address" },
{ internalType: "address", name: "to", type: "address" },
{ internalType: "uint256", name: "tokenId", type: "uint256" },
{ internalType: "bytes", name: "_data", type: "bytes" },
],
name: "safeTransferFrom",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "token", type: "address" },
{ internalType: "uint256", name: "value", type: "uint256" },
{ internalType: "uint256", name: "deadline", type: "uint256" },
{ internalType: "uint8", name: "v", type: "uint8" },
{ internalType: "bytes32", name: "r", type: "bytes32" },
{ internalType: "bytes32", name: "s", type: "bytes32" },
],
name: "selfPermit",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "token", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "uint256", name: "expiry", type: "uint256" },
{ internalType: "uint8", name: "v", type: "uint8" },
{ internalType: "bytes32", name: "r", type: "bytes32" },
{ internalType: "bytes32", name: "s", type: "bytes32" },
],
name: "selfPermitAllowed",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "token", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "uint256", name: "expiry", type: "uint256" },
{ internalType: "uint8", name: "v", type: "uint8" },
{ internalType: "bytes32", name: "r", type: "bytes32" },
{ internalType: "bytes32", name: "s", type: "bytes32" },
],
name: "selfPermitAllowedIfNecessary",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "token", type: "address" },
{ internalType: "uint256", name: "value", type: "uint256" },
{ internalType: "uint256", name: "deadline", type: "uint256" },
{ internalType: "uint8", name: "v", type: "uint8" },
{ internalType: "bytes32", name: "r", type: "bytes32" },
{ internalType: "bytes32", name: "s", type: "bytes32" },
],
name: "selfPermitIfNecessary",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "operator", type: "address" },
{ internalType: "bool", name: "approved", type: "bool" },
],
name: "setApprovalForAll",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }],
name: "supportsInterface",
outputs: [{ internalType: "bool", name: "", type: "bool" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "token", type: "address" },
{ internalType: "uint256", name: "amountMinimum", type: "uint256" },
{ internalType: "address", name: "recipient", type: "address" },
],
name: "sweepToken",
outputs: [],
stateMutability: "payable",
type: "function",
},
{
inputs: [],
name: "symbol",
outputs: [{ internalType: "string", name: "", type: "string" }],
stateMutability: "view",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "index", type: "uint256" }],
name: "tokenByIndex",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "owner", type: "address" },
{ internalType: "uint256", name: "index", type: "uint256" },
],
name: "tokenOfOwnerByIndex",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "tokenId", type: "uint256" }],
name: "tokenURI",
outputs: [{ internalType: "string", name: "", type: "string" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "totalSupply",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "from", type: "address" },
{ internalType: "address", name: "to", type: "address" },
{ internalType: "uint256", name: "tokenId", type: "uint256" },
],
name: "transferFrom",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "uint256", name: "amount0Owed", type: "uint256" },
{ internalType: "uint256", name: "amount1Owed", type: "uint256" },
{ internalType: "bytes", name: "data", type: "bytes" },
],
name: "uniswapV3MintCallback",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "uint256", name: "amountMinimum", type: "uint256" },
{ internalType: "address", name: "recipient", type: "address" },
],
name: "unwrapWETH9",
outputs: [],
stateMutability: "payable",
type: "function",
},
{ stateMutability: "payable", type: "receive" },
] as const;
export const uniV3poolAbi = [
{ inputs: [], stateMutability: "nonpayable", type: "constructor" },
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "int24",
name: "tickLower",
type: "int24",
},
{
indexed: true,
internalType: "int24",
name: "tickUpper",
type: "int24",
},
{
indexed: false,
internalType: "uint128",
name: "amount",
type: "uint128",
},
{
indexed: false,
internalType: "uint256",
name: "amount0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "amount1",
type: "uint256",
},
],
name: "Burn",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "recipient",
type: "address",
},
{
indexed: true,
internalType: "int24",
name: "tickLower",
type: "int24",
},
{
indexed: true,
internalType: "int24",
name: "tickUpper",
type: "int24",
},
{
indexed: false,
internalType: "uint128",
name: "amount0",
type: "uint128",
},
{
indexed: false,
internalType: "uint128",
name: "amount1",
type: "uint128",
},
],
name: "Collect",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "recipient",
type: "address",
},
{
indexed: false,
internalType: "uint128",
name: "amount0",
type: "uint128",
},
{
indexed: false,
internalType: "uint128",
name: "amount1",
type: "uint128",
},
],
name: "CollectProtocol",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "recipient",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "amount0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "amount1",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "paid0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "paid1",
type: "uint256",
},
],
name: "Flash",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint16",
name: "observationCardinalityNextOld",
type: "uint16",
},
{
indexed: false,
internalType: "uint16",
name: "observationCardinalityNextNew",
type: "uint16",
},
],
name: "IncreaseObservationCardinalityNext",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint160",
name: "sqrtPriceX96",
type: "uint160",
},
{ indexed: false, internalType: "int24", name: "tick", type: "int24" },
],
name: "Initialize",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "sender",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: true,
internalType: "int24",
name: "tickLower",
type: "int24",
},
{
indexed: true,
internalType: "int24",
name: "tickUpper",
type: "int24",
},
{
indexed: false,
internalType: "uint128",
name: "amount",
type: "uint128",
},
{
indexed: false,
internalType: "uint256",
name: "amount0",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "amount1",
type: "uint256",
},
],
name: "Mint",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint8",
name: "feeProtocol0Old",
type: "uint8",
},
{
indexed: false,
internalType: "uint8",
name: "feeProtocol1Old",
type: "uint8",
},
{
indexed: false,
internalType: "uint8",
name: "feeProtocol0New",
type: "uint8",
},
{
indexed: false,
internalType: "uint8",
name: "feeProtocol1New",
type: "uint8",
},
],
name: "SetFeeProtocol",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "sender",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "recipient",
type: "address",
},
{
indexed: false,
internalType: "int256",
name: "amount0",
type: "int256",
},
{
indexed: false,
internalType: "int256",
name: "amount1",
type: "int256",
},
{
indexed: false,
internalType: "uint160",
name: "sqrtPriceX96",
type: "uint160",
},
{
indexed: false,
internalType: "uint128",
name: "liquidity",
type: "uint128",
},
{ indexed: false, internalType: "int24", name: "tick", type: "int24" },
],
name: "Swap",
type: "event",
},
{
inputs: [
{ internalType: "int24", name: "tickLower", type: "int24" },
{ internalType: "int24", name: "tickUpper", type: "int24" },
{ internalType: "uint128", name: "amount", type: "uint128" },
],
name: "burn",
outputs: [
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "int24", name: "tickLower", type: "int24" },
{ internalType: "int24", name: "tickUpper", type: "int24" },
{ internalType: "uint128", name: "amount0Requested", type: "uint128" },
{ internalType: "uint128", name: "amount1Requested", type: "uint128" },
],
name: "collect",
outputs: [
{ internalType: "uint128", name: "amount0", type: "uint128" },
{ internalType: "uint128", name: "amount1", type: "uint128" },
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "uint128", name: "amount0Requested", type: "uint128" },
{ internalType: "uint128", name: "amount1Requested", type: "uint128" },
],
name: "collectProtocol",
outputs: [
{ internalType: "uint128", name: "amount0", type: "uint128" },
{ internalType: "uint128", name: "amount1", type: "uint128" },
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "factory",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "fee",
outputs: [{ internalType: "uint24", name: "", type: "uint24" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "feeGrowthGlobal0X128",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "feeGrowthGlobal1X128",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
{ internalType: "bytes", name: "data", type: "bytes" },
],
name: "flash",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "uint16",
name: "observationCardinalityNext",
type: "uint16",
},
],
name: "increaseObservationCardinalityNext",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{ internalType: "uint160", name: "sqrtPriceX96", type: "uint160" },
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "liquidity",
outputs: [{ internalType: "uint128", name: "", type: "uint128" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "maxLiquidityPerTick",
outputs: [{ internalType: "uint128", name: "", type: "uint128" }],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "int24", name: "tickLower", type: "int24" },
{ internalType: "int24", name: "tickUpper", type: "int24" },
{ internalType: "uint128", name: "amount", type: "uint128" },
{ internalType: "bytes", name: "data", type: "bytes" },
],
name: "mint",
outputs: [
{ internalType: "uint256", name: "amount0", type: "uint256" },
{ internalType: "uint256", name: "amount1", type: "uint256" },
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{ internalType: "uint256", name: "", type: "uint256" }],
name: "observations",
outputs: [
{ internalType: "uint32", name: "blockTimestamp", type: "uint32" },
{ internalType: "int56", name: "tickCumulative", type: "int56" },
{
internalType: "uint160",
name: "secondsPerLiquidityCumulativeX128",
type: "uint160",
},
{ internalType: "bool", name: "initialized", type: "bool" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "uint32[]", name: "secondsAgos", type: "uint32[]" },
],
name: "observe",
outputs: [
{ internalType: "int56[]", name: "tickCumulatives", type: "int56[]" },
{
internalType: "uint160[]",
name: "secondsPerLiquidityCumulativeX128s",
type: "uint160[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
name: "positions",
outputs: [
{ internalType: "uint128", name: "liquidity", type: "uint128" },
{
internalType: "uint256",
name: "feeGrowthInside0LastX128",
type: "uint256",
},
{
internalType: "uint256",
name: "feeGrowthInside1LastX128",
type: "uint256",
},
{ internalType: "uint128", name: "tokensOwed0", type: "uint128" },
{ internalType: "uint128", name: "tokensOwed1", type: "uint128" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "protocolFees",
outputs: [
{ internalType: "uint128", name: "token0", type: "uint128" },
{ internalType: "uint128", name: "token1", type: "uint128" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "uint8", name: "feeProtocol0", type: "uint8" },
{ internalType: "uint8", name: "feeProtocol1", type: "uint8" },
],
name: "setFeeProtocol",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [],
name: "slot0",
outputs: [
{ internalType: "uint160", name: "sqrtPriceX96", type: "uint160" },
{ internalType: "int24", name: "tick", type: "int24" },
{ internalType: "uint16", name: "observationIndex", type: "uint16" },
{
internalType: "uint16",
name: "observationCardinality",
type: "uint16",
},
{
internalType: "uint16",
name: "observationCardinalityNext",
type: "uint16",
},
{ internalType: "uint8", name: "feeProtocol", type: "uint8" },
{ internalType: "bool", name: "unlocked", type: "bool" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "int24", name: "tickLower", type: "int24" },
{ internalType: "int24", name: "tickUpper", type: "int24" },
],
name: "snapshotCumulativesInside",
outputs: [
{ internalType: "int56", name: "tickCumulativeInside", type: "int56" },
{
internalType: "uint160",
name: "secondsPerLiquidityInsideX128",
type: "uint160",
},
{ internalType: "uint32", name: "secondsInside", type: "uint32" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{ internalType: "address", name: "recipient", type: "address" },
{ internalType: "bool", name: "zeroForOne", type: "bool" },
{ internalType: "int256", name: "amountSpecified", type: "int256" },
{ internalType: "uint160", name: "sqrtPriceLimitX96", type: "uint160" },
{ internalType: "bytes", name: "data", type: "bytes" },
],
name: "swap",
outputs: [
{ internalType: "int256", name: "amount0", type: "int256" },
{ internalType: "int256", name: "amount1", type: "int256" },
],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [{ internalType: "int16", name: "", type: "int16" }],
name: "tickBitmap",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "tickSpacing",
outputs: [{ internalType: "int24", name: "", type: "int24" }],
stateMutability: "view",
type: "function",
},
{
inputs: [{ internalType: "int24", name: "", type: "int24" }],
name: "ticks",
outputs: [
{ internalType: "uint128", name: "liquidityGross", type: "uint128" },
{ internalType: "int128", name: "liquidityNet", type: "int128" },
{
internalType: "uint256",
name: "feeGrowthOutside0X128",
type: "uint256",
},
{
internalType: "uint256",
name: "feeGrowthOutside1X128",
type: "uint256",
},
{ internalType: "int56", name: "tickCumulativeOutside", type: "int56" },
{
internalType: "uint160",
name: "secondsPerLiquidityOutsideX128",
type: "uint160",
},
{ internalType: "uint32", name: "secondsOutside", type: "uint32" },
{ internalType: "bool", name: "initialized", type: "bool" },
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "token0",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "token1",
outputs: [{ internalType: "address", name: "", type: "address" }],
stateMutability: "view",
type: "function",
},
] as const;