{ "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint24", "name": "fee", "type": "uint24" }, { "indexed": true, "internalType": "int24", "name": "tickSpacing", "type": "int24" } ], "name": "FeeAmountEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token0", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token1", "type": "address" }, { "indexed": true, "internalType": "uint24", "name": "fee", "type": "uint24" }, { "indexed": false, "internalType": "int24", "name": "tickSpacing", "type": "int24" }, { "indexed": false, "internalType": "address", "name": "pool", "type": "address" } ], "name": "PoolCreated", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint24", "name": "fee", "type": "uint24" } ], "name": "createPool", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "fee", "type": "uint24" }, { "internalType": "int24", "name": "tickSpacing", "type": "int24" } ], "name": "enableFeeAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "fee", "type": "uint24" } ], "name": "feeAmountTickSpacing", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint24", "name": "fee", "type": "uint24" } ], "name": "getPool", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "methodIdentifiers": { "createPool(address,address,uint24)": "a1671295", "enableFeeAmount(uint24,int24)": "8a7c195f", "feeAmountTickSpacing(uint24)": "22afcccb", "getPool(address,address,uint24)": "1698ee82", "owner()": "8da5cb5b", "setOwner(address)": "13af4035" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":true,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"FeeAmountEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"createPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"enableFeeAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"feeAmountTickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks for pools created with the given fee\"}},\"OwnerChanged(address,address)\":{\"params\":{\"newOwner\":\"The owner after the owner was changed\",\"oldOwner\":\"The owner before the owner was changed\"}},\"PoolCreated(address,address,uint24,int24,address)\":{\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"pool\":\"The address of the created pool\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\",\"token0\":\"The first token of the pool by address sort order\",\"token1\":\"The second token of the pool by address sort order\"}}},\"kind\":\"dev\",\"methods\":{\"createPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.\",\"params\":{\"fee\":\"The desired fee for the pool\",\"tokenA\":\"One of the two tokens in the desired pool\",\"tokenB\":\"The other of the two tokens in the desired pool\"},\"returns\":{\"pool\":\"The address of the newly created pool\"}},\"enableFeeAmount(uint24,int24)\":{\"details\":\"Fee amounts may never be removed once enabled\",\"params\":{\"fee\":\"The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\",\"tickSpacing\":\"The spacing between ticks to be enforced for all pools created with the given fee amount\"}},\"feeAmountTickSpacing(uint24)\":{\"details\":\"A fee amount can never be removed, so this value should be hard coded or cached in the calling context\",\"params\":{\"fee\":\"The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\"},\"returns\":{\"_0\":\"The tick spacing\"}},\"getPool(address,address,uint24)\":{\"details\":\"tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\",\"params\":{\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"tokenA\":\"The contract address of either token0 or token1\",\"tokenB\":\"The contract address of the other token\"},\"returns\":{\"pool\":\"The pool address\"}},\"owner()\":{\"details\":\"Can be changed by the current owner via setOwner\",\"returns\":{\"_0\":\"The address of the factory owner\"}},\"setOwner(address)\":{\"details\":\"Must be called by the current owner\",\"params\":{\"_owner\":\"The new owner of the factory\"}}},\"title\":\"The interface for the Uniswap V3 Factory\",\"version\":1},\"userdoc\":{\"events\":{\"FeeAmountEnabled(uint24,int24)\":{\"notice\":\"Emitted when a new fee amount is enabled for pool creation via the factory\"},\"OwnerChanged(address,address)\":{\"notice\":\"Emitted when the owner of the factory is changed\"},\"PoolCreated(address,address,uint24,int24,address)\":{\"notice\":\"Emitted when a pool is created\"}},\"kind\":\"user\",\"methods\":{\"createPool(address,address,uint24)\":{\"notice\":\"Creates a pool for the given two tokens and fee\"},\"enableFeeAmount(uint24,int24)\":{\"notice\":\"Enables a fee amount with the given tickSpacing\"},\"feeAmountTickSpacing(uint24)\":{\"notice\":\"Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\"},\"getPool(address,address,uint24)\":{\"notice\":\"Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\"},\"owner()\":{\"notice\":\"Returns the current owner of the factory\"},\"setOwner(address)\":{\"notice\":\"Updates the owner of the factory\"}},\"notice\":\"The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":\"IUniswapV3Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "uint24", "name": "fee", "type": "uint24", "indexed": true }, { "internalType": "int24", "name": "tickSpacing", "type": "int24", "indexed": true } ], "type": "event", "name": "FeeAmountEnabled", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "oldOwner", "type": "address", "indexed": true }, { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true } ], "type": "event", "name": "OwnerChanged", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "token0", "type": "address", "indexed": true }, { "internalType": "address", "name": "token1", "type": "address", "indexed": true }, { "internalType": "uint24", "name": "fee", "type": "uint24", "indexed": true }, { "internalType": "int24", "name": "tickSpacing", "type": "int24", "indexed": false }, { "internalType": "address", "name": "pool", "type": "address", "indexed": false } ], "type": "event", "name": "PoolCreated", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint24", "name": "fee", "type": "uint24" } ], "stateMutability": "nonpayable", "type": "function", "name": "createPool", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ] }, { "inputs": [ { "internalType": "uint24", "name": "fee", "type": "uint24" }, { "internalType": "int24", "name": "tickSpacing", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "enableFeeAmount" }, { "inputs": [ { "internalType": "uint24", "name": "fee", "type": "uint24" } ], "stateMutability": "view", "type": "function", "name": "feeAmountTickSpacing", "outputs": [ { "internalType": "int24", "name": "", "type": "int24" } ] }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint24", "name": "fee", "type": "uint24" } ], "stateMutability": "view", "type": "function", "name": "getPool", "outputs": [ { "internalType": "address", "name": "pool", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "setOwner" } ], "devdoc": { "kind": "dev", "methods": { "createPool(address,address,uint24)": { "details": "tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments are invalid.", "params": { "fee": "The desired fee for the pool", "tokenA": "One of the two tokens in the desired pool", "tokenB": "The other of the two tokens in the desired pool" }, "returns": { "pool": "The address of the newly created pool" } }, "enableFeeAmount(uint24,int24)": { "details": "Fee amounts may never be removed once enabled", "params": { "fee": "The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)", "tickSpacing": "The spacing between ticks to be enforced for all pools created with the given fee amount" } }, "feeAmountTickSpacing(uint24)": { "details": "A fee amount can never be removed, so this value should be hard coded or cached in the calling context", "params": { "fee": "The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee" }, "returns": { "_0": "The tick spacing" } }, "getPool(address,address,uint24)": { "details": "tokenA and tokenB may be passed in either token0/token1 or token1/token0 order", "params": { "fee": "The fee collected upon every swap in the pool, denominated in hundredths of a bip", "tokenA": "The contract address of either token0 or token1", "tokenB": "The contract address of the other token" }, "returns": { "pool": "The pool address" } }, "owner()": { "details": "Can be changed by the current owner via setOwner", "returns": { "_0": "The address of the factory owner" } }, "setOwner(address)": { "details": "Must be called by the current owner", "params": { "_owner": "The new owner of the factory" } } }, "version": 1 }, "userdoc": { "kind": "user", "methods": { "createPool(address,address,uint24)": { "notice": "Creates a pool for the given two tokens and fee" }, "enableFeeAmount(uint24,int24)": { "notice": "Enables a fee amount with the given tickSpacing" }, "feeAmountTickSpacing(uint24)": { "notice": "Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled" }, "getPool(address,address,uint24)": { "notice": "Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist" }, "owner()": { "notice": "Returns the current owner of the factory" }, "setOwner(address)": { "notice": "Updates the owner of the factory" } }, "version": 1 } }, "settings": { "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@uniswap/v3-core/=lib_uniswap/v3-core/", "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v3-core/=lib_uniswap/v3-core/", "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/" ], "optimizer": { "runs": 999999999, "details": { "peephole": true, "inliner": true, "jumpdestRemover": true, "orderLiterals": true, "deduplicate": true, "cse": true, "constantOptimizer": true, "yul": true, "yulDetails": { "stackAllocation": true, "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu" } } }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": "IUniswapV3Factory" }, "libraries": {} }, "sources": { "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { "keccak256": "0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489", "urls": [ "bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2", "dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B" ], "license": "GPL-2.0-or-later" } }, "version": 1 }, "ast": { "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", "id": 43873, "exportedSymbols": { "IUniswapV3Factory": [ 43872 ] }, "nodeType": "SourceUnit", "src": "45:3995:27", "nodes": [ { "id": 43791, "nodeType": "PragmaDirective", "src": "45:24:27", "nodes": [], "literals": [ "solidity", ">=", "0.5", ".0" ] }, { "id": 43872, "nodeType": "ContractDefinition", "src": "234:3805:27", "nodes": [ { "id": 43799, "nodeType": "EventDefinition", "src": "458:71:27", "nodes": [], "anonymous": false, "documentation": { "id": 43793, "nodeType": "StructuredDocumentation", "src": "268:185:27", "text": "@notice Emitted when the owner of the factory is changed\n @param oldOwner The owner before the owner was changed\n @param newOwner The owner after the owner was changed" }, "eventSelector": "b532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c", "name": "OwnerChanged", "nameLocation": "464:12:27", "parameters": { "id": 43798, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43795, "indexed": true, "mutability": "mutable", "name": "oldOwner", "nameLocation": "493:8:27", "nodeType": "VariableDeclaration", "scope": 43799, "src": "477:24:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43794, "name": "address", "nodeType": "ElementaryTypeName", "src": "477:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43797, "indexed": true, "mutability": "mutable", "name": "newOwner", "nameLocation": "519:8:27", "nodeType": "VariableDeclaration", "scope": 43799, "src": "503:24:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43796, "name": "address", "nodeType": "ElementaryTypeName", "src": "503:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "476:52:27" } }, { "id": 43812, "nodeType": "EventDefinition", "src": "961:165:27", "nodes": [], "anonymous": false, "documentation": { "id": 43800, "nodeType": "StructuredDocumentation", "src": "535:421:27", "text": "@notice Emitted when a pool is created\n @param token0 The first token of the pool by address sort order\n @param token1 The second token of the pool by address sort order\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks\n @param pool The address of the created pool" }, "eventSelector": "783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118", "name": "PoolCreated", "nameLocation": "967:11:27", "parameters": { "id": 43811, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43802, "indexed": true, "mutability": "mutable", "name": "token0", "nameLocation": "1004:6:27", "nodeType": "VariableDeclaration", "scope": 43812, "src": "988:22:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43801, "name": "address", "nodeType": "ElementaryTypeName", "src": "988:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43804, "indexed": true, "mutability": "mutable", "name": "token1", "nameLocation": "1036:6:27", "nodeType": "VariableDeclaration", "scope": 43812, "src": "1020:22:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43803, "name": "address", "nodeType": "ElementaryTypeName", "src": "1020:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43806, "indexed": true, "mutability": "mutable", "name": "fee", "nameLocation": "1067:3:27", "nodeType": "VariableDeclaration", "scope": 43812, "src": "1052:18:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 43805, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1052:6:27", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "internal" }, { "constant": false, "id": 43808, "indexed": false, "mutability": "mutable", "name": "tickSpacing", "nameLocation": "1086:11:27", "nodeType": "VariableDeclaration", "scope": 43812, "src": "1080:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 43807, "name": "int24", "nodeType": "ElementaryTypeName", "src": "1080:5:27", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" }, { "constant": false, "id": 43810, "indexed": false, "mutability": "mutable", "name": "pool", "nameLocation": "1115:4:27", "nodeType": "VariableDeclaration", "scope": 43812, "src": "1107:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43809, "name": "address", "nodeType": "ElementaryTypeName", "src": "1107:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "978:147:27" } }, { "id": 43819, "nodeType": "EventDefinition", "src": "1412:70:27", "nodes": [], "anonymous": false, "documentation": { "id": 43813, "nodeType": "StructuredDocumentation", "src": "1132:275:27", "text": "@notice Emitted when a new fee amount is enabled for pool creation via the factory\n @param fee The enabled fee, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee" }, "eventSelector": "c66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", "name": "FeeAmountEnabled", "nameLocation": "1418:16:27", "parameters": { "id": 43818, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43815, "indexed": true, "mutability": "mutable", "name": "fee", "nameLocation": "1450:3:27", "nodeType": "VariableDeclaration", "scope": 43819, "src": "1435:18:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 43814, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "1435:6:27", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "internal" }, { "constant": false, "id": 43817, "indexed": true, "mutability": "mutable", "name": "tickSpacing", "nameLocation": "1469:11:27", "nodeType": "VariableDeclaration", "scope": 43819, "src": "1455:25:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 43816, "name": "int24", "nodeType": "ElementaryTypeName", "src": "1455:5:27", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "1434:47:27" } }, { "id": 43825, "nodeType": "FunctionDefinition", "src": "1656:49:27", "nodes": [], "documentation": { "id": 43820, "nodeType": "StructuredDocumentation", "src": "1488:163:27", "text": "@notice Returns the current owner of the factory\n @dev Can be changed by the current owner via setOwner\n @return The address of the factory owner" }, "functionSelector": "8da5cb5b", "implemented": false, "kind": "function", "modifiers": [], "name": "owner", "nameLocation": "1665:5:27", "parameters": { "id": 43821, "nodeType": "ParameterList", "parameters": [], "src": "1670:2:27" }, "returnParameters": { "id": 43824, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43823, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43825, "src": "1696:7:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43822, "name": "address", "nodeType": "ElementaryTypeName", "src": "1696:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1695:9:27" }, "scope": 43872, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 43833, "nodeType": "FunctionDefinition", "src": "2064:72:27", "nodes": [], "documentation": { "id": 43826, "nodeType": "StructuredDocumentation", "src": "1711:348:27", "text": "@notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n @return The tick spacing" }, "functionSelector": "22afcccb", "implemented": false, "kind": "function", "modifiers": [], "name": "feeAmountTickSpacing", "nameLocation": "2073:20:27", "parameters": { "id": 43829, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43828, "mutability": "mutable", "name": "fee", "nameLocation": "2101:3:27", "nodeType": "VariableDeclaration", "scope": 43833, "src": "2094:10:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 43827, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "2094:6:27", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "internal" } ], "src": "2093:12:27" }, "returnParameters": { "id": 43832, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43831, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 43833, "src": "2129:5:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 43830, "name": "int24", "nodeType": "ElementaryTypeName", "src": "2129:5:27", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "2128:7:27" }, "scope": 43872, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 43845, "nodeType": "FunctionDefinition", "src": "2618:128:27", "nodes": [], "documentation": { "id": 43834, "nodeType": "StructuredDocumentation", "src": "2142:471:27", "text": "@notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The pool address" }, "functionSelector": "1698ee82", "implemented": false, "kind": "function", "modifiers": [], "name": "getPool", "nameLocation": "2627:7:27", "parameters": { "id": 43841, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43836, "mutability": "mutable", "name": "tokenA", "nameLocation": "2652:6:27", "nodeType": "VariableDeclaration", "scope": 43845, "src": "2644:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43835, "name": "address", "nodeType": "ElementaryTypeName", "src": "2644:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43838, "mutability": "mutable", "name": "tokenB", "nameLocation": "2676:6:27", "nodeType": "VariableDeclaration", "scope": 43845, "src": "2668:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43837, "name": "address", "nodeType": "ElementaryTypeName", "src": "2668:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43840, "mutability": "mutable", "name": "fee", "nameLocation": "2699:3:27", "nodeType": "VariableDeclaration", "scope": 43845, "src": "2692:10:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 43839, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "2692:6:27", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "internal" } ], "src": "2634:74:27" }, "returnParameters": { "id": 43844, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43843, "mutability": "mutable", "name": "pool", "nameLocation": "2740:4:27", "nodeType": "VariableDeclaration", "scope": 43845, "src": "2732:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43842, "name": "address", "nodeType": "ElementaryTypeName", "src": "2732:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "2731:14:27" }, "scope": 43872, "stateMutability": "view", "virtual": false, "visibility": "external" }, { "id": 43857, "nodeType": "FunctionDefinition", "src": "3311:126:27", "nodes": [], "documentation": { "id": 43846, "nodeType": "StructuredDocumentation", "src": "2752:554:27", "text": "@notice Creates a pool for the given two tokens and fee\n @param tokenA One of the two tokens in the desired pool\n @param tokenB The other of the two tokens in the desired pool\n @param fee The desired fee for the pool\n @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n are invalid.\n @return pool The address of the newly created pool" }, "functionSelector": "a1671295", "implemented": false, "kind": "function", "modifiers": [], "name": "createPool", "nameLocation": "3320:10:27", "parameters": { "id": 43853, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43848, "mutability": "mutable", "name": "tokenA", "nameLocation": "3348:6:27", "nodeType": "VariableDeclaration", "scope": 43857, "src": "3340:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43847, "name": "address", "nodeType": "ElementaryTypeName", "src": "3340:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43850, "mutability": "mutable", "name": "tokenB", "nameLocation": "3372:6:27", "nodeType": "VariableDeclaration", "scope": 43857, "src": "3364:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43849, "name": "address", "nodeType": "ElementaryTypeName", "src": "3364:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 43852, "mutability": "mutable", "name": "fee", "nameLocation": "3395:3:27", "nodeType": "VariableDeclaration", "scope": 43857, "src": "3388:10:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 43851, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "3388:6:27", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "internal" } ], "src": "3330:74:27" }, "returnParameters": { "id": 43856, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43855, "mutability": "mutable", "name": "pool", "nameLocation": "3431:4:27", "nodeType": "VariableDeclaration", "scope": 43857, "src": "3423:12:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43854, "name": "address", "nodeType": "ElementaryTypeName", "src": "3423:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "3422:14:27" }, "scope": 43872, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 43863, "nodeType": "FunctionDefinition", "src": "3592:43:27", "nodes": [], "documentation": { "id": 43858, "nodeType": "StructuredDocumentation", "src": "3443:144:27", "text": "@notice Updates the owner of the factory\n @dev Must be called by the current owner\n @param _owner The new owner of the factory" }, "functionSelector": "13af4035", "implemented": false, "kind": "function", "modifiers": [], "name": "setOwner", "nameLocation": "3601:8:27", "parameters": { "id": 43861, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43860, "mutability": "mutable", "name": "_owner", "nameLocation": "3618:6:27", "nodeType": "VariableDeclaration", "scope": 43863, "src": "3610:14:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 43859, "name": "address", "nodeType": "ElementaryTypeName", "src": "3610:7:27", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "3609:16:27" }, "returnParameters": { "id": 43862, "nodeType": "ParameterList", "parameters": [], "src": "3634:0:27" }, "scope": 43872, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 43871, "nodeType": "FunctionDefinition", "src": "3972:65:27", "nodes": [], "documentation": { "id": 43864, "nodeType": "StructuredDocumentation", "src": "3641:326:27", "text": "@notice Enables a fee amount with the given tickSpacing\n @dev Fee amounts may never be removed once enabled\n @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount" }, "functionSelector": "8a7c195f", "implemented": false, "kind": "function", "modifiers": [], "name": "enableFeeAmount", "nameLocation": "3981:15:27", "parameters": { "id": 43869, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 43866, "mutability": "mutable", "name": "fee", "nameLocation": "4004:3:27", "nodeType": "VariableDeclaration", "scope": 43871, "src": "3997:10:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" }, "typeName": { "id": 43865, "name": "uint24", "nodeType": "ElementaryTypeName", "src": "3997:6:27", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } }, "visibility": "internal" }, { "constant": false, "id": 43868, "mutability": "mutable", "name": "tickSpacing", "nameLocation": "4015:11:27", "nodeType": "VariableDeclaration", "scope": 43871, "src": "4009:17:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" }, "typeName": { "id": 43867, "name": "int24", "nodeType": "ElementaryTypeName", "src": "4009:5:27", "typeDescriptions": { "typeIdentifier": "t_int24", "typeString": "int24" } }, "visibility": "internal" } ], "src": "3996:31:27" }, "returnParameters": { "id": 43870, "nodeType": "ParameterList", "parameters": [], "src": "4036:0:27" }, "scope": 43872, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "abstract": false, "baseContracts": [], "canonicalName": "IUniswapV3Factory", "contractDependencies": [], "contractKind": "interface", "documentation": { "id": 43792, "nodeType": "StructuredDocumentation", "src": "71:163:27", "text": "@title The interface for the Uniswap V3 Factory\n @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees" }, "fullyImplemented": false, "linearizedBaseContracts": [ 43872 ], "name": "IUniswapV3Factory", "nameLocation": "244:17:27", "scope": 43873, "usedErrors": [], "usedEvents": [ 43799, 43812, 43819 ] } ], "license": "GPL-2.0-or-later" }, "id": 27 }