Files
contract/deployment/alpha/out/PoolAddress.sol/PoolAddress.json
2023-11-16 17:36:43 -04:00

1427 lines
64 KiB
JSON

{
"abi": [],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3d44550c43ff7fceb906699b4da7332701b5e303f9329423298b9e310111a9164736f6c63430008160033",
"sourceMap": "167:1661:46:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;167:1661:46;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3d44550c43ff7fceb906699b4da7332701b5e303f9329423298b9e310111a9164736f6c63430008160033",
"sourceMap": "167:1661:46:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Provides functions for deriving a pool address from the factory, tokens, and the fee\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":\"PoolAddress\"},\"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-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"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-periphery/contracts/libraries/PoolAddress.sol": "PoolAddress"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol": {
"keccak256": "0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4",
"urls": [
"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48",
"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol",
"id": 45893,
"exportedSymbols": {
"PoolAddress": [
45892
]
},
"nodeType": "SourceUnit",
"src": "45:1784:46",
"nodes": [
{
"id": 45796,
"nodeType": "PragmaDirective",
"src": "45:24:46",
"nodes": [],
"literals": [
"solidity",
">=",
"0.5",
".0"
]
},
{
"id": 45892,
"nodeType": "ContractDefinition",
"src": "167:1661:46",
"nodes": [
{
"id": 45800,
"nodeType": "VariableDeclaration",
"src": "193:114:46",
"nodes": [],
"constant": true,
"mutability": "constant",
"name": "POOL_INIT_CODE_HASH",
"nameLocation": "219:19:46",
"scope": 45892,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 45798,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "193:7:46",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"hexValue": "307865333466313939623139623262346634376636383434323631396435353535323764323434663738613332393765613839333235663834336638376238623534",
"id": 45799,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "241:66:46",
"typeDescriptions": {
"typeIdentifier": "t_rational_102814774271675688723325049954498779091328469440286648861889194717372678376276_by_1",
"typeString": "int_const 1028...(70 digits omitted)...6276"
},
"value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54"
},
"visibility": "internal"
},
{
"id": 45808,
"nodeType": "StructDefinition",
"src": "362:90:46",
"nodes": [],
"canonicalName": "PoolAddress.PoolKey",
"documentation": {
"id": 45801,
"nodeType": "StructuredDocumentation",
"src": "314:43:46",
"text": "@notice The identifying key of the pool"
},
"members": [
{
"constant": false,
"id": 45803,
"mutability": "mutable",
"name": "token0",
"nameLocation": "395:6:46",
"nodeType": "VariableDeclaration",
"scope": 45808,
"src": "387:14:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45802,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "387:7:46",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45805,
"mutability": "mutable",
"name": "token1",
"nameLocation": "419:6:46",
"nodeType": "VariableDeclaration",
"scope": 45808,
"src": "411:14:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45804,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "411:7:46",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45807,
"mutability": "mutable",
"name": "fee",
"nameLocation": "442:3:46",
"nodeType": "VariableDeclaration",
"scope": 45808,
"src": "435:10:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 45806,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "435:6:46",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
}
],
"name": "PoolKey",
"nameLocation": "369:7:46",
"scope": 45892,
"visibility": "public"
},
{
"id": 45840,
"nodeType": "FunctionDefinition",
"src": "784:274:46",
"nodes": [],
"body": {
"id": 45839,
"nodeType": "Block",
"src": "917:141:46",
"nodes": [],
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 45823,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 45821,
"name": "tokenA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45811,
"src": "931:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 45822,
"name": "tokenB",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45813,
"src": "940:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "931:15:46",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 45832,
"nodeType": "IfStatement",
"src": "927:56:46",
"trueBody": {
"expression": {
"id": 45830,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"components": [
{
"id": 45824,
"name": "tokenA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45811,
"src": "949:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 45825,
"name": "tokenB",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45813,
"src": "957:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 45826,
"isConstant": false,
"isInlineArray": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "TupleExpression",
"src": "948:16:46",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_address_$_t_address_$",
"typeString": "tuple(address,address)"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"components": [
{
"id": 45827,
"name": "tokenB",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45813,
"src": "968:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 45828,
"name": "tokenA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45811,
"src": "976:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 45829,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "967:16:46",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_address_$_t_address_$",
"typeString": "tuple(address,address)"
}
},
"src": "948:35:46",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 45831,
"nodeType": "ExpressionStatement",
"src": "948:35:46"
}
},
{
"expression": {
"arguments": [
{
"id": 45834,
"name": "tokenA",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45811,
"src": "1017:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 45835,
"name": "tokenB",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45813,
"src": "1033:6:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 45836,
"name": "fee",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45815,
"src": "1046:3:46",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
],
"id": 45833,
"name": "PoolKey",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45808,
"src": "1000:7:46",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_PoolKey_$45808_storage_ptr_$",
"typeString": "type(struct PoolAddress.PoolKey storage pointer)"
}
},
"id": 45837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"nameLocations": [
"1009:6:46",
"1025:6:46",
"1041:3:46"
],
"names": [
"token0",
"token1",
"fee"
],
"nodeType": "FunctionCall",
"src": "1000:51:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey memory"
}
},
"functionReturnParameters": 45820,
"id": 45838,
"nodeType": "Return",
"src": "993:58:46"
}
]
},
"documentation": {
"id": 45809,
"nodeType": "StructuredDocumentation",
"src": "458:321:46",
"text": "@notice Returns PoolKey: the ordered tokens with the matched fee levels\n @param tokenA The first token of a pool, unsorted\n @param tokenB The second token of a pool, unsorted\n @param fee The fee level of the pool\n @return Poolkey The pool details with ordered token0 and token1 assignments"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getPoolKey",
"nameLocation": "793:10:46",
"parameters": {
"id": 45816,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45811,
"mutability": "mutable",
"name": "tokenA",
"nameLocation": "821:6:46",
"nodeType": "VariableDeclaration",
"scope": 45840,
"src": "813:14:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45810,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "813:7:46",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45813,
"mutability": "mutable",
"name": "tokenB",
"nameLocation": "845:6:46",
"nodeType": "VariableDeclaration",
"scope": 45840,
"src": "837:14:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45812,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "837:7:46",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45815,
"mutability": "mutable",
"name": "fee",
"nameLocation": "868:3:46",
"nodeType": "VariableDeclaration",
"scope": 45840,
"src": "861:10:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 45814,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "861:6:46",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
}
],
"src": "803:74:46"
},
"returnParameters": {
"id": 45820,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45819,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 45840,
"src": "901:14:46",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey"
},
"typeName": {
"id": 45818,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 45817,
"name": "PoolKey",
"nameLocations": [
"901:7:46"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 45808,
"src": "901:7:46"
},
"referencedDeclaration": 45808,
"src": "901:7:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_storage_ptr",
"typeString": "struct PoolAddress.PoolKey"
}
},
"visibility": "internal"
}
],
"src": "900:16:46"
},
"scope": 45892,
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"id": 45891,
"nodeType": "FunctionDefinition",
"src": "1305:521:46",
"nodes": [],
"body": {
"id": 45890,
"nodeType": "Block",
"src": "1403:423:46",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 45856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 45852,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45846,
"src": "1421:3:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey memory"
}
},
"id": 45853,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1425:6:46",
"memberName": "token0",
"nodeType": "MemberAccess",
"referencedDeclaration": 45803,
"src": "1421:10:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"expression": {
"id": 45854,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45846,
"src": "1434:3:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey memory"
}
},
"id": 45855,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1438:6:46",
"memberName": "token1",
"nodeType": "MemberAccess",
"referencedDeclaration": 45805,
"src": "1434:10:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1421:23:46",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 45851,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1413:7:46",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 45857,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1413:32:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 45858,
"nodeType": "ExpressionStatement",
"src": "1413:32:46"
},
{
"expression": {
"id": 45888,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 45859,
"name": "pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45849,
"src": "1455:4:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"hexValue": "ff",
"id": 45869,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "hexString",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1589:7:46",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
"typeString": "literal_string hex\"ff\""
}
},
{
"id": 45870,
"name": "factory",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45843,
"src": "1622:7:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [
{
"expression": {
"id": 45874,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45846,
"src": "1676:3:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey memory"
}
},
"id": 45875,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1680:6:46",
"memberName": "token0",
"nodeType": "MemberAccess",
"referencedDeclaration": 45803,
"src": "1676:10:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"expression": {
"id": 45876,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45846,
"src": "1688:3:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey memory"
}
},
"id": 45877,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1692:6:46",
"memberName": "token1",
"nodeType": "MemberAccess",
"referencedDeclaration": 45805,
"src": "1688:10:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"expression": {
"id": 45878,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45846,
"src": "1700:3:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey memory"
}
},
"id": 45879,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1704:3:46",
"memberName": "fee",
"nodeType": "MemberAccess",
"referencedDeclaration": 45807,
"src": "1700:7:46",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
],
"expression": {
"id": 45872,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1665:3:46",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 45873,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1669:6:46",
"memberName": "encode",
"nodeType": "MemberAccess",
"src": "1665:10:46",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 45880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1665:43:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 45871,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1655:9:46",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 45881,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1655:54:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 45882,
"name": "POOL_INIT_CODE_HASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 45800,
"src": "1735:19:46",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
"typeString": "literal_string hex\"ff\""
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"id": 45867,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1547:3:46",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 45868,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1551:12:46",
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"src": "1547:16:46",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 45883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1547:229:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 45866,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1516:9:46",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 45884,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1516:278:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 45865,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1491:7:46",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 45864,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1491:7:46",
"typeDescriptions": {}
}
},
"id": 45885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1491:317:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 45863,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1470:7:46",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint160_$",
"typeString": "type(uint160)"
},
"typeName": {
"id": 45862,
"name": "uint160",
"nodeType": "ElementaryTypeName",
"src": "1470:7:46",
"typeDescriptions": {}
}
},
"id": 45886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1470:348:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
],
"id": 45861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1462:7:46",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 45860,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1462:7:46",
"typeDescriptions": {}
}
},
"id": 45887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1462:357:46",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1455:364:46",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 45889,
"nodeType": "ExpressionStatement",
"src": "1455:364:46"
}
]
},
"documentation": {
"id": 45841,
"nodeType": "StructuredDocumentation",
"src": "1064:236:46",
"text": "@notice Deterministically computes the pool address given the factory and PoolKey\n @param factory The Uniswap V3 factory contract address\n @param key The PoolKey\n @return pool The contract address of the V3 pool"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "computeAddress",
"nameLocation": "1314:14:46",
"parameters": {
"id": 45847,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45843,
"mutability": "mutable",
"name": "factory",
"nameLocation": "1337:7:46",
"nodeType": "VariableDeclaration",
"scope": 45891,
"src": "1329:15:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45842,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1329:7:46",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45846,
"mutability": "mutable",
"name": "key",
"nameLocation": "1361:3:46",
"nodeType": "VariableDeclaration",
"scope": 45891,
"src": "1346:18:46",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_memory_ptr",
"typeString": "struct PoolAddress.PoolKey"
},
"typeName": {
"id": 45845,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 45844,
"name": "PoolKey",
"nameLocations": [
"1346:7:46"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 45808,
"src": "1346:7:46"
},
"referencedDeclaration": 45808,
"src": "1346:7:46",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$45808_storage_ptr",
"typeString": "struct PoolAddress.PoolKey"
}
},
"visibility": "internal"
}
],
"src": "1328:37:46"
},
"returnParameters": {
"id": 45850,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45849,
"mutability": "mutable",
"name": "pool",
"nameLocation": "1397:4:46",
"nodeType": "VariableDeclaration",
"scope": 45891,
"src": "1389:12:46",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45848,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1389:7:46",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1388:14:46"
},
"scope": 45892,
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "PoolAddress",
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 45797,
"nodeType": "StructuredDocumentation",
"src": "71:96:46",
"text": "@title Provides functions for deriving a pool address from the factory, tokens, and the fee"
},
"fullyImplemented": true,
"linearizedBaseContracts": [
45892
],
"name": "PoolAddress",
"nameLocation": "175:11:46",
"scope": 45893,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 46
}