41 Commits

Author SHA1 Message Date
Tim Olson
0477592bb5 _stake() inversion fix 2023-11-27 21:16:56 -04:00
Tim Olson
7ff99c9b1f alpha redeploy 2023-11-21 00:15:38 -04:00
Tim Olson
a6983d23bd alpha redeployment 2023-11-20 21:25:57 -04:00
Tim Olson
56dc1a4032 deploy doesnt change k8s files 2023-11-20 21:23:14 -04:00
Tim Olson
29ba819ab2 alpha deployment 2023-11-18 02:33:15 -04:00
7400
8b871940eb WIP: IEEE754 2023-11-17 08:30:23 -08:00
Tim Olson
e9fd472ec1 alpha deployment 2023-11-16 17:36:43 -04:00
Tim Olson
81776bc79f Merge remote-tracking branch 'origin/master' 2023-11-14 13:18:07 -04:00
7400
4baaed9d3c WIP 2023-11-14 06:58:51 -08:00
Tim Olson
bce58fdf86 Merge remote-tracking branch 'origin/master' 2023-11-13 20:56:27 -04:00
Tim Olson
8265665c36 mock price fix 2023-11-13 18:58:50 -04:00
7400
f706d56218 Basic IEEE754 tests 2023-11-13 11:44:57 -08:00
7400
30f4588562 WIP: IEEE754 2023-11-13 10:07:51 -08:00
Tim Olson
331b9df337 order cancels 2023-11-10 16:42:44 -04:00
Tim Olson
084c018285 currency naming 2023-11-09 23:38:51 -04:00
Tim Olson
aa69557d47 mock coins name change 2023-11-07 13:01:05 -04:00
Tim Olson
97b95e7ba3 mockenv staking/liquidity fix 2023-11-06 16:27:20 -04:00
7400
3522c9b59b lib_sol8->lib_uniswap 2023-11-05 20:00:59 -08:00
7400
779c180fad Back to Foundry 0.8.22 2023-11-05 18:43:46 -08:00
7400
e4dd6c38aa VaultDeployer is IVaultDeployer 2023-11-05 18:29:52 -08:00
7400
912efab60d Solidity 0.8.19, no --force on build 2023-11-05 18:08:07 -08:00
Tim Olson
add4f72611 price constraints working 2023-11-05 16:50:06 -04:00
Tim Olson
aa007a4fcd mockenv deployment rework; price and setprice scripts 2023-11-02 17:23:48 -04:00
7400
b63bd8cbd3 unchecked on TickMath to ensure compatibility 2023-11-01 18:57:59 -07:00
Tim Olson
139449f3e9 Merge remote-tracking branch 'origin/master' 2023-11-01 18:05:32 -04:00
7400
e10c3c7093 Test uniswap issue 586 2023-11-01 15:00:38 -07:00
Tim Olson
4759effae2 removed PriceConstraint and implemented LineConstraint; MockDeploy copied/separated from Deploy 2023-11-01 17:56:41 -04:00
Tim Olson
03b7ac11e3 removed PriceConstraint and implemented LineConstraint; MockDeploy copied/separated from Deploy 2023-11-01 17:56:25 -04:00
7400
7b64745438 Don't overwrite VaultAddress.sol on every build. 2023-10-30 17:37:32 -07:00
Tim Olson
903beb27da Merge remote-tracking branch 'origin/master' 2023-10-30 18:46:42 -04:00
Tim Olson
e0cbeb5f21 vault balance tracking 2023-10-30 18:46:20 -04:00
7400
3494e37308 VaultAddress-default.sol in favor of VaultAddress.sol 2023-10-30 11:14:01 -07:00
Tim Olson
7632940c46 all twap tranches work! 2023-10-29 20:37:39 -04:00
Tim Olson
fd18cba58f TRANCHE EXECUTION WORKS 2023-10-29 16:53:07 -04:00
Tim Olson
e1eecad898 uniswap execution fixes, logs, and tests 2023-10-27 16:07:02 -04:00
7400
73ab4fb0e0 Eliminate build_force.she 2023-10-26 15:27:27 -07:00
7400
5ffaf657fa Update build_force.sh to match build.sh 2023-10-26 15:17:07 -07:00
7400
d9232151f8 Soldity 0.8.2 2023-10-26 15:09:04 -07:00
7400
c8d2dc758f Tim's hardhat + Juan's solidity 0.8 2023-10-26 15:07:38 -07:00
Tim Olson
8cefbd7c5e Merge remote-tracking branch 'origin/master' 2023-10-26 16:57:18 -04:00
Tim Olson
f775f86960 reworked to optionally use Hardhat in mock; chain id 31337; refactored TransactionJob management; execute() mostly commented out for minimalism 2023-10-26 16:56:08 -04:00
140 changed files with 1150612 additions and 176 deletions

1
.gitignore vendored
View File

@@ -6,3 +6,4 @@
/lib
/foundry.toml
/broadcast
/src/VaultAddress.sol

View File

@@ -1,11 +1,11 @@
tests: build_force
tests: build
bin/test.sh
build:
bin/build.sh
build_force:
bin/build_force.sh
# build_force:
# bin/build.sh --force
dependencies:
# foundry

View File

@@ -2,14 +2,14 @@
# this script requires the jq command $(sudo apt install jq)
# first-pass build
forge build "$@" || exit 1
forge build --force "$@" || exit 1
# calculate the Vault init code hash using the bytecode generated for Vault
# shellcheck disable=SC2046
VAULT_INIT_CODE_HASH=$(cast keccak $(jq -r .bytecode.object < out/Vault.sol/Vault.json))
# put the hash value into the VaultAddress.sol source file
sed -i "s/bytes32 internal constant VAULT_INIT_CODE_HASH = .*;/bytes32 internal constant VAULT_INIT_CODE_HASH = $VAULT_INIT_CODE_HASH;/" src/VaultAddress.sol
sed -i "s/VAULT_INIT_CODE_HASH = .*;/VAULT_INIT_CODE_HASH = $VAULT_INIT_CODE_HASH;/" src/VaultAddress.sol
# generate a javascript file with the constant
mkdir gen &> /dev/null

View File

@@ -1,19 +0,0 @@
#!/bin/bash
# this script requires the jq command $(sudo apt install jq)
# first-pass build
forge build --force "$@" || exit 1
# calculate the Vault init code hash using the bytecode generated for Vault
# shellcheck disable=SC2046
VAULT_INIT_CODE_HASH=$(cast keccak $(jq -r .bytecode.object < out/Vault.sol/Vault.json))
# put the hash value into the VaultAddress.sol source file
sed -i "s/bytes32 internal constant VAULT_INIT_CODE_HASH = .*;/bytes32 internal constant VAULT_INIT_CODE_HASH = $VAULT_INIT_CODE_HASH;/" src/VaultAddress.sol
# generate a javascript file with the constant
mkdir gen &> /dev/null
echo "export const VAULT_INIT_CODE_HASH='$VAULT_INIT_CODE_HASH';" > gen/vaultHash.js
# final build after hash values are set
forge build --force "$@" || exit 1

View File

@@ -1,4 +1,31 @@
#!/usr/bin/env bash
if [ "$1" == "" ]; then
echo tag required
echo $0 [tag]
fi
./bin/build.sh || exit 1
PRIVATE_KEY=${PRIVATE_KEY:='0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'}
forge script script/Deploy.sol -vvvv --fork-url http://localhost:8545 --broadcast
TAG=$1
PRIVKEY=${PRIVATE_KEY:='0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80'}
RPC=${RPCURL:-http://localhost:8545}
CHAINID=$(cast chain-id --rpc-url "$RPC")
cpbroadcast() {
CONTRACT=$1
mkdir -p deployment/"$TAG"/broadcast/"$CONTRACT"/"$CHAINID"
cp broadcast/"$CONTRACT"/"$CHAINID"/run-latest.json deployment/"$TAG"/broadcast/"$CONTRACT"/"$CHAINID"/run-"$TAG".json
}
PRIVATE_KEY=$PRIVKEY forge script script/Deploy.sol -vvvv --fork-url "$RPC" --broadcast
rm -rf deployment/"$TAG"
mkdir -p deployment/"$TAG"
cp -r out deployment/"$TAG"/
cpbroadcast Deploy.sol
if [ "$2" == "mock" ]; then
PRIVATE_KEY=$PRIVKEY forge script script/DeployMock.sol -vvvv --fork-url "$RPC" --broadcast
cpbroadcast DeployMock.sol
fi

View File

@@ -6,12 +6,13 @@
#cd ../contract
#./bin/build.sh
anvil -f arbitrum_mock --chain-id 1338 &
anvil -f arbitrum_mock --chain-id 31337 &
# todo check anvil result
ANVIL_PID=$!
sleep 2
forge script script/Deploy.sol -vvvv --fork-url http://localhost:8545 --broadcast
forge script script/DeployMock.sol -vvvv --fork-url http://localhost:8545 --broadcast
trap_ctrlc() {
echo exiting anvil

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,328 @@
{
"abi": [],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":\"Context\"},\"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/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"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/openzeppelin-contracts/contracts/utils/Context.sol": "Context"
},
"libraries": {}
},
"sources": {
"lib/openzeppelin-contracts/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
],
"license": "MIT"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol",
"id": 43778,
"exportedSymbols": {
"Context": [
43777
]
},
"nodeType": "SourceUnit",
"src": "86:758:25",
"nodes": [
{
"id": 43757,
"nodeType": "PragmaDirective",
"src": "86:23:25",
"nodes": [],
"literals": [
"solidity",
"^",
"0.8",
".0"
]
},
{
"id": 43777,
"nodeType": "ContractDefinition",
"src": "608:235:25",
"nodes": [
{
"id": 43767,
"nodeType": "FunctionDefinition",
"src": "640:96:25",
"nodes": [],
"body": {
"id": 43766,
"nodeType": "Block",
"src": "702:34:25",
"nodes": [],
"statements": [
{
"expression": {
"expression": {
"id": 43763,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "719:3:25",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 43764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "723:6:25",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "719:10:25",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 43762,
"id": 43765,
"nodeType": "Return",
"src": "712:17:25"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_msgSender",
"nameLocation": "649:10:25",
"parameters": {
"id": 43759,
"nodeType": "ParameterList",
"parameters": [],
"src": "659:2:25"
},
"returnParameters": {
"id": 43762,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43761,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43767,
"src": "693:7:25",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43760,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "693:7:25",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "692:9:25"
},
"scope": 43777,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
},
{
"id": 43776,
"nodeType": "FunctionDefinition",
"src": "742:99:25",
"nodes": [],
"body": {
"id": 43775,
"nodeType": "Block",
"src": "809:32:25",
"nodes": [],
"statements": [
{
"expression": {
"expression": {
"id": 43772,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "826:3:25",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 43773,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "830:4:25",
"memberName": "data",
"nodeType": "MemberAccess",
"src": "826:8:25",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"functionReturnParameters": 43771,
"id": 43774,
"nodeType": "Return",
"src": "819:15:25"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_msgData",
"nameLocation": "751:8:25",
"parameters": {
"id": 43768,
"nodeType": "ParameterList",
"parameters": [],
"src": "759:2:25"
},
"returnParameters": {
"id": 43771,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43770,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43776,
"src": "793:14:25",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 43769,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "793:5:25",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "792:16:25"
},
"scope": 43777,
"stateMutability": "view",
"virtual": true,
"visibility": "internal"
}
],
"abstract": true,
"baseContracts": [],
"canonicalName": "Context",
"contractDependencies": [],
"contractKind": "contract",
"documentation": {
"id": 43758,
"nodeType": "StructuredDocumentation",
"src": "111:496:25",
"text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
},
"fullyImplemented": true,
"linearizedBaseContracts": [
43777
],
"name": "Context",
"nameLocation": "626:7:25",
"scope": 43778,
"usedErrors": [],
"usedEvents": []
}
],
"license": "MIT"
},
"id": 25
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,223 @@
{
"abi": [],
"bytecode": {
"object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088a5e7bdd2c95b142656abd37b5c5cf17e80d321b44b327f797edb7cad07531864736f6c63430008160033",
"sourceMap": "245:134:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;245:134:36;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088a5e7bdd2c95b142656abd37b5c5cf17e80d321b44b327f797edb7cad07531864736f6c63430008160033",
"sourceMap": "245:134:36:-:0;;;;;;;;",
"linkReferences": {}
},
"methodIdentifiers": {},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Used in SqrtPriceMath.sol\",\"kind\":\"dev\",\"methods\":{},\"title\":\"FixedPoint96\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":\"FixedPoint96\"},\"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/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]}},\"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-core/contracts/libraries/FixedPoint96.sol": "FixedPoint96"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol": {
"keccak256": "0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032",
"urls": [
"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d",
"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol",
"id": 44339,
"exportedSymbols": {
"FixedPoint96": [
44338
]
},
"nodeType": "SourceUnit",
"src": "45:335:36",
"nodes": [
{
"id": 44330,
"nodeType": "PragmaDirective",
"src": "45:24:36",
"nodes": [],
"literals": [
"solidity",
">=",
"0.4",
".0"
]
},
{
"id": 44338,
"nodeType": "ContractDefinition",
"src": "245:134:36",
"nodes": [
{
"id": 44334,
"nodeType": "VariableDeclaration",
"src": "272:39:36",
"nodes": [],
"constant": true,
"mutability": "constant",
"name": "RESOLUTION",
"nameLocation": "296:10:36",
"scope": 44338,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 44332,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "272:5:36",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"hexValue": "3936",
"id": 44333,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "309:2:36",
"typeDescriptions": {
"typeIdentifier": "t_rational_96_by_1",
"typeString": "int_const 96"
},
"value": "96"
},
"visibility": "internal"
},
{
"id": 44337,
"nodeType": "VariableDeclaration",
"src": "317:59:36",
"nodes": [],
"constant": true,
"mutability": "constant",
"name": "Q96",
"nameLocation": "343:3:36",
"scope": 44338,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 44335,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "317:7:36",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "307831303030303030303030303030303030303030303030303030",
"id": 44336,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "349:27:36",
"typeDescriptions": {
"typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
"typeString": "int_const 79228162514264337593543950336"
},
"value": "0x1000000000000000000000000"
},
"visibility": "internal"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "FixedPoint96",
"contractDependencies": [],
"contractKind": "library",
"documentation": {
"id": 44331,
"nodeType": "StructuredDocumentation",
"src": "71:174:36",
"text": "@title FixedPoint96\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\n @dev Used in SqrtPriceMath.sol"
},
"fullyImplemented": true,
"linearizedBaseContracts": [
44338
],
"name": "FixedPoint96",
"nameLocation": "253:12:36",
"scope": 44339,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 36
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,271 @@
{
"abi": [
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"supportsInterface(bytes4)": "01ffc9a7"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"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/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function",
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"supportsInterface(bytes4)": {
"details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
}
},
"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/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": "IERC165"
},
"libraries": {}
},
"sources": {
"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
],
"license": "MIT"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol",
"id": 43790,
"exportedSymbols": {
"IERC165": [
43789
]
},
"nodeType": "SourceUnit",
"src": "100:753:26",
"nodes": [
{
"id": 43779,
"nodeType": "PragmaDirective",
"src": "100:23:26",
"nodes": [],
"literals": [
"solidity",
"^",
"0.8",
".0"
]
},
{
"id": 43789,
"nodeType": "ContractDefinition",
"src": "405:447:26",
"nodes": [
{
"id": 43788,
"nodeType": "FunctionDefinition",
"src": "774:76:26",
"nodes": [],
"documentation": {
"id": 43781,
"nodeType": "StructuredDocumentation",
"src": "429:340:26",
"text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
},
"functionSelector": "01ffc9a7",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "supportsInterface",
"nameLocation": "783:17:26",
"parameters": {
"id": 43784,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43783,
"mutability": "mutable",
"name": "interfaceId",
"nameLocation": "808:11:26",
"nodeType": "VariableDeclaration",
"scope": 43788,
"src": "801:18:26",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 43782,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "801:6:26",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "800:20:26"
},
"returnParameters": {
"id": 43787,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43786,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 43788,
"src": "844:4:26",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 43785,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "844:4:26",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "843:6:26"
},
"scope": 43789,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IERC165",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 43780,
"nodeType": "StructuredDocumentation",
"src": "125:279:26",
"text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."
},
"fullyImplemented": false,
"linearizedBaseContracts": [
43789
],
"name": "IERC165",
"nameLocation": "415:7:26",
"scope": 43790,
"usedErrors": [],
"usedEvents": []
}
],
"license": "MIT"
},
"id": 26
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,329 @@
{
"abi": [
{
"inputs": [],
"name": "WETH9",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"WETH9()": "4aa4a4fc",
"factory()": "c45a0155"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"WETH9()\":{\"returns\":{\"_0\":\"Returns the address of WETH9\"}},\"factory()\":{\"returns\":{\"_0\":\"Returns the address of the Uniswap V3 factory\"}}},\"title\":\"Immutable state\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Functions that return immutable state of the router\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":\"IPeripheryImmutableState\"},\"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/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "WETH9",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"WETH9()": {
"returns": {
"_0": "Returns the address of WETH9"
}
},
"factory()": {
"returns": {
"_0": "Returns the address of the Uniswap V3 factory"
}
}
},
"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/interfaces/IPeripheryImmutableState.sol": "IPeripheryImmutableState"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol": {
"keccak256": "0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d",
"urls": [
"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f",
"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol",
"id": 45310,
"exportedSymbols": {
"IPeripheryImmutableState": [
45309
]
},
"nodeType": "SourceUnit",
"src": "45:374:41",
"nodes": [
{
"id": 45295,
"nodeType": "PragmaDirective",
"src": "45:24:41",
"nodes": [],
"literals": [
"solidity",
">=",
"0.5",
".0"
]
},
{
"id": 45309,
"nodeType": "ContractDefinition",
"src": "162:256:41",
"nodes": [
{
"id": 45302,
"nodeType": "FunctionDefinition",
"src": "265:51:41",
"nodes": [],
"documentation": {
"id": 45297,
"nodeType": "StructuredDocumentation",
"src": "203:57:41",
"text": "@return Returns the address of the Uniswap V3 factory"
},
"functionSelector": "c45a0155",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "factory",
"nameLocation": "274:7:41",
"parameters": {
"id": 45298,
"nodeType": "ParameterList",
"parameters": [],
"src": "281:2:41"
},
"returnParameters": {
"id": 45301,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45300,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 45302,
"src": "307:7:41",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45299,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "307:7:41",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "306:9:41"
},
"scope": 45309,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 45308,
"nodeType": "FunctionDefinition",
"src": "367:49:41",
"nodes": [],
"documentation": {
"id": 45303,
"nodeType": "StructuredDocumentation",
"src": "322:40:41",
"text": "@return Returns the address of WETH9"
},
"functionSelector": "4aa4a4fc",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "WETH9",
"nameLocation": "376:5:41",
"parameters": {
"id": 45304,
"nodeType": "ParameterList",
"parameters": [],
"src": "381:2:41"
},
"returnParameters": {
"id": 45307,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45306,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 45308,
"src": "407:7:41",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45305,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "407:7:41",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "406:9:41"
},
"scope": 45309,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IPeripheryImmutableState",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 45296,
"nodeType": "StructuredDocumentation",
"src": "71:91:41",
"text": "@title Immutable state\n @notice Functions that return immutable state of the router"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
45309
],
"name": "IPeripheryImmutableState",
"nameLocation": "172:24:41",
"scope": 45310,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 41
}

View File

@@ -0,0 +1,505 @@
{
"abi": [
{
"inputs": [],
"name": "refundETH",
"outputs": [],
"stateMutability": "payable",
"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": [
{
"internalType": "uint256",
"name": "amountMinimum",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"name": "unwrapWETH9",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"refundETH()": "12210e8a",
"sweepToken(address,uint256,address)": "df2ab5bb",
"unwrapWETH9(uint256,address)": "49404b7c"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH9\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"refundETH()\":{\"details\":\"Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount\"},\"sweepToken(address,uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing the token from users\",\"params\":{\"amountMinimum\":\"The minimum amount of token required for a transfer\",\"recipient\":\"The destination address of the token\",\"token\":\"The contract address of the token which will be transferred to `recipient`\"}},\"unwrapWETH9(uint256,address)\":{\"details\":\"The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\",\"params\":{\"amountMinimum\":\"The minimum amount of WETH9 to unwrap\",\"recipient\":\"The address receiving ETH\"}}},\"title\":\"Periphery Payments\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"refundETH()\":{\"notice\":\"Refunds any ETH balance held by this contract to the `msg.sender`\"},\"sweepToken(address,uint256,address)\":{\"notice\":\"Transfers the full amount of a token held by this contract to recipient\"},\"unwrapWETH9(uint256,address)\":{\"notice\":\"Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\"}},\"notice\":\"Functions to ease deposits and withdrawals of ETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":\"IPeripheryPayments\"},\"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/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "payable",
"type": "function",
"name": "refundETH"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amountMinimum",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function",
"name": "sweepToken"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amountMinimum",
"type": "uint256"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function",
"name": "unwrapWETH9"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"refundETH()": {
"details": "Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount"
},
"sweepToken(address,uint256,address)": {
"details": "The amountMinimum parameter prevents malicious contracts from stealing the token from users",
"params": {
"amountMinimum": "The minimum amount of token required for a transfer",
"recipient": "The destination address of the token",
"token": "The contract address of the token which will be transferred to `recipient`"
}
},
"unwrapWETH9(uint256,address)": {
"details": "The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.",
"params": {
"amountMinimum": "The minimum amount of WETH9 to unwrap",
"recipient": "The address receiving ETH"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"refundETH()": {
"notice": "Refunds any ETH balance held by this contract to the `msg.sender`"
},
"sweepToken(address,uint256,address)": {
"notice": "Transfers the full amount of a token held by this contract to recipient"
},
"unwrapWETH9(uint256,address)": {
"notice": "Unwraps the contract's WETH9 balance and sends it to recipient as ETH."
}
},
"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/interfaces/IPeripheryPayments.sol": "IPeripheryPayments"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol": {
"keccak256": "0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274",
"urls": [
"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407",
"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol",
"id": 45336,
"exportedSymbols": {
"IPeripheryPayments": [
45335
]
},
"nodeType": "SourceUnit",
"src": "45:1379:42",
"nodes": [
{
"id": 45311,
"nodeType": "PragmaDirective",
"src": "45:24:42",
"nodes": [],
"literals": [
"solidity",
">=",
"0.7",
".5"
]
},
{
"id": 45335,
"nodeType": "ContractDefinition",
"src": "163:1260:42",
"nodes": [
{
"id": 45320,
"nodeType": "FunctionDefinition",
"src": "505:80:42",
"nodes": [],
"documentation": {
"id": 45313,
"nodeType": "StructuredDocumentation",
"src": "198:302:42",
"text": "@notice Unwraps the contract's WETH9 balance and sends it to recipient as ETH.\n @dev The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.\n @param amountMinimum The minimum amount of WETH9 to unwrap\n @param recipient The address receiving ETH"
},
"functionSelector": "49404b7c",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "unwrapWETH9",
"nameLocation": "514:11:42",
"parameters": {
"id": 45318,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45315,
"mutability": "mutable",
"name": "amountMinimum",
"nameLocation": "534:13:42",
"nodeType": "VariableDeclaration",
"scope": 45320,
"src": "526:21:42",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 45314,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "526:7:42",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45317,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "557:9:42",
"nodeType": "VariableDeclaration",
"scope": 45320,
"src": "549:17:42",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45316,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "549:7:42",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "525:42:42"
},
"returnParameters": {
"id": 45319,
"nodeType": "ParameterList",
"parameters": [],
"src": "584:0:42"
},
"scope": 45335,
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"id": 45324,
"nodeType": "FunctionDefinition",
"src": "821:38:42",
"nodes": [],
"documentation": {
"id": 45321,
"nodeType": "StructuredDocumentation",
"src": "591:225:42",
"text": "@notice Refunds any ETH balance held by this contract to the `msg.sender`\n @dev Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps\n that use ether for the input amount"
},
"functionSelector": "12210e8a",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "refundETH",
"nameLocation": "830:9:42",
"parameters": {
"id": 45322,
"nodeType": "ParameterList",
"parameters": [],
"src": "839:2:42"
},
"returnParameters": {
"id": 45323,
"nodeType": "ParameterList",
"parameters": [],
"src": "858:0:42"
},
"scope": 45335,
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"id": 45334,
"nodeType": "FunctionDefinition",
"src": "1297:124:42",
"nodes": [],
"documentation": {
"id": 45325,
"nodeType": "StructuredDocumentation",
"src": "865:427:42",
"text": "@notice Transfers the full amount of a token held by this contract to recipient\n @dev The amountMinimum parameter prevents malicious contracts from stealing the token from users\n @param token The contract address of the token which will be transferred to `recipient`\n @param amountMinimum The minimum amount of token required for a transfer\n @param recipient The destination address of the token"
},
"functionSelector": "df2ab5bb",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "sweepToken",
"nameLocation": "1306:10:42",
"parameters": {
"id": 45332,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45327,
"mutability": "mutable",
"name": "token",
"nameLocation": "1334:5:42",
"nodeType": "VariableDeclaration",
"scope": 45334,
"src": "1326:13:42",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45326,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1326:7:42",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45329,
"mutability": "mutable",
"name": "amountMinimum",
"nameLocation": "1357:13:42",
"nodeType": "VariableDeclaration",
"scope": 45334,
"src": "1349:21:42",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 45328,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1349:7:42",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45331,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "1388:9:42",
"nodeType": "VariableDeclaration",
"scope": 45334,
"src": "1380:17:42",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45330,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1380:7:42",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1316:87:42"
},
"returnParameters": {
"id": 45333,
"nodeType": "ParameterList",
"parameters": [],
"src": "1420:0:42"
},
"scope": 45335,
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IPeripheryPayments",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 45312,
"nodeType": "StructuredDocumentation",
"src": "71:92:42",
"text": "@title Periphery Payments\n @notice Functions to ease deposits and withdrawals of ETH"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
45335
],
"name": "IPeripheryPayments",
"nameLocation": "173:18:42",
"scope": 45336,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 42
}

View File

@@ -0,0 +1,408 @@
{
"abi": [
{
"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"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"createAndInitializePoolIfNecessary(address,address,uint24,uint160)": "13ead562"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"details\":\"This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\",\"params\":{\"fee\":\"The fee amount of the v3 pool for the specified token pair\",\"sqrtPriceX96\":\"The initial square root price of the pool as a Q64.96 value\",\"token0\":\"The contract address of token0 of the pool\",\"token1\":\"The contract address of token1 of the pool\"},\"returns\":{\"pool\":\"Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary\"}}},\"title\":\"Creates and initializes V3 Pools\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createAndInitializePoolIfNecessary(address,address,uint24,uint160)\":{\"notice\":\"Creates a new pool if it does not exist, then initializes if not initialized\"}},\"notice\":\"Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that require the pool to exist.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":\"IPoolInitializer\"},\"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/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"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"
}
],
"stateMutability": "payable",
"type": "function",
"name": "createAndInitializePoolIfNecessary",
"outputs": [
{
"internalType": "address",
"name": "pool",
"type": "address"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"createAndInitializePoolIfNecessary(address,address,uint24,uint160)": {
"details": "This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool",
"params": {
"fee": "The fee amount of the v3 pool for the specified token pair",
"sqrtPriceX96": "The initial square root price of the pool as a Q64.96 value",
"token0": "The contract address of token0 of the pool",
"token1": "The contract address of token1 of the pool"
},
"returns": {
"pool": "Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"createAndInitializePoolIfNecessary(address,address,uint24,uint160)": {
"notice": "Creates a new pool if it does not exist, then initializes if not initialized"
}
},
"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/interfaces/IPoolInitializer.sol": "IPoolInitializer"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol": {
"keccak256": "0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862",
"urls": [
"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f",
"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol",
"id": 45355,
"exportedSymbols": {
"IPoolInitializer": [
45354
]
},
"nodeType": "SourceUnit",
"src": "45:1117:43",
"nodes": [
{
"id": 45337,
"nodeType": "PragmaDirective",
"src": "45:24:43",
"nodes": [],
"literals": [
"solidity",
">=",
"0.7",
".5"
]
},
{
"id": 45338,
"nodeType": "PragmaDirective",
"src": "70:19:43",
"nodes": [],
"literals": [
"abicoder",
"v2"
]
},
{
"id": 45354,
"nodeType": "ContractDefinition",
"src": "285:876:43",
"nodes": [
{
"id": 45353,
"nodeType": "FunctionDefinition",
"src": "971:188:43",
"nodes": [],
"documentation": {
"id": 45340,
"nodeType": "StructuredDocumentation",
"src": "318:648:43",
"text": "@notice Creates a new pool if it does not exist, then initializes if not initialized\n @dev This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool\n @param token0 The contract address of token0 of the pool\n @param token1 The contract address of token1 of the pool\n @param fee The fee amount of the v3 pool for the specified token pair\n @param sqrtPriceX96 The initial square root price of the pool as a Q64.96 value\n @return pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary"
},
"functionSelector": "13ead562",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "createAndInitializePoolIfNecessary",
"nameLocation": "980:34:43",
"parameters": {
"id": 45349,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45342,
"mutability": "mutable",
"name": "token0",
"nameLocation": "1032:6:43",
"nodeType": "VariableDeclaration",
"scope": 45353,
"src": "1024:14:43",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45341,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1024:7:43",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45344,
"mutability": "mutable",
"name": "token1",
"nameLocation": "1056:6:43",
"nodeType": "VariableDeclaration",
"scope": 45353,
"src": "1048:14:43",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45343,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1048:7:43",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45346,
"mutability": "mutable",
"name": "fee",
"nameLocation": "1079:3:43",
"nodeType": "VariableDeclaration",
"scope": 45353,
"src": "1072:10:43",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 45345,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "1072:6:43",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 45348,
"mutability": "mutable",
"name": "sqrtPriceX96",
"nameLocation": "1100:12:43",
"nodeType": "VariableDeclaration",
"scope": 45353,
"src": "1092:20:43",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
"typeName": {
"id": 45347,
"name": "uint160",
"nodeType": "ElementaryTypeName",
"src": "1092:7:43",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
"visibility": "internal"
}
],
"src": "1014:104:43"
},
"returnParameters": {
"id": 45352,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 45351,
"mutability": "mutable",
"name": "pool",
"nameLocation": "1153:4:43",
"nodeType": "VariableDeclaration",
"scope": 45353,
"src": "1145:12:43",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45350,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1145:7:43",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "1144:14:43"
},
"scope": 45354,
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IPoolInitializer",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 45339,
"nodeType": "StructuredDocumentation",
"src": "91:194:43",
"text": "@title Creates and initializes V3 Pools\n @notice Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that\n require the pool to exist."
},
"fullyImplemented": false,
"linearizedBaseContracts": [
45354
],
"name": "IPoolInitializer",
"nameLocation": "295:16:43",
"scope": 45355,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 43
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,601 @@
{
"abi": [
{
"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": "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"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"observe(uint32[])": "883bdbfd",
"snapshotCumulativesInside(int24,int24)": "a38807f2"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"observe(uint32[])\":{\"details\":\"To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\",\"params\":{\"secondsAgos\":\"From how long ago each cumulative tick and liquidity value should be returned\"},\"returns\":{\"secondsPerLiquidityCumulativeX128s\":\"Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp\",\"tickCumulatives\":\"Cumulative tick values as of each `secondsAgos` from the current block timestamp\"}},\"snapshotCumulativesInside(int24,int24)\":{\"details\":\"Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.\",\"params\":{\"tickLower\":\"The lower tick of the range\",\"tickUpper\":\"The upper tick of the range\"},\"returns\":{\"secondsInside\":\"The snapshot of seconds per liquidity for the range\",\"secondsPerLiquidityInsideX128\":\"The snapshot of seconds per liquidity for the range\",\"tickCumulativeInside\":\"The snapshot of the tick accumulator for the range\"}}},\"title\":\"Pool state that is not stored\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"observe(uint32[])\":{\"notice\":\"Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\"},\"snapshotCumulativesInside(int24,int24)\":{\"notice\":\"Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\"}},\"notice\":\"Contains view functions to provide information about the pool that is computed rather than stored on the blockchain. The functions here may have variable gas costs.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":\"IUniswapV3PoolDerivedState\"},\"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/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint32[]",
"name": "secondsAgos",
"type": "uint32[]"
}
],
"stateMutability": "view",
"type": "function",
"name": "observe",
"outputs": [
{
"internalType": "int56[]",
"name": "tickCumulatives",
"type": "int56[]"
},
{
"internalType": "uint160[]",
"name": "secondsPerLiquidityCumulativeX128s",
"type": "uint160[]"
}
]
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function",
"name": "snapshotCumulativesInside",
"outputs": [
{
"internalType": "int56",
"name": "tickCumulativeInside",
"type": "int56"
},
{
"internalType": "uint160",
"name": "secondsPerLiquidityInsideX128",
"type": "uint160"
},
{
"internalType": "uint32",
"name": "secondsInside",
"type": "uint32"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"observe(uint32[])": {
"details": "To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick, you must call it with secondsAgos = [3600, 0].The time weighted average tick represents the geometric time weighted average price of the pool, in log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.",
"params": {
"secondsAgos": "From how long ago each cumulative tick and liquidity value should be returned"
},
"returns": {
"secondsPerLiquidityCumulativeX128s": "Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block timestamp",
"tickCumulatives": "Cumulative tick values as of each `secondsAgos` from the current block timestamp"
}
},
"snapshotCumulativesInside(int24,int24)": {
"details": "Snapshots must only be compared to other snapshots, taken over a period for which a position existed. I.e., snapshots cannot be compared if a position is not held for the entire period between when the first snapshot is taken and the second snapshot is taken.",
"params": {
"tickLower": "The lower tick of the range",
"tickUpper": "The upper tick of the range"
},
"returns": {
"secondsInside": "The snapshot of seconds per liquidity for the range",
"secondsPerLiquidityInsideX128": "The snapshot of seconds per liquidity for the range",
"tickCumulativeInside": "The snapshot of the tick accumulator for the range"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"observe(uint32[])": {
"notice": "Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp"
},
"snapshotCumulativesInside(int24,int24)": {
"notice": "Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range"
}
},
"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/pool/IUniswapV3PoolDerivedState.sol": "IUniswapV3PoolDerivedState"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": {
"keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5",
"urls": [
"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7",
"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol",
"id": 44036,
"exportedSymbols": {
"IUniswapV3PoolDerivedState": [
44035
]
},
"nodeType": "SourceUnit",
"src": "45:2557:31",
"nodes": [
{
"id": 44006,
"nodeType": "PragmaDirective",
"src": "45:24:31",
"nodes": [],
"literals": [
"solidity",
">=",
"0.5",
".0"
]
},
{
"id": 44035,
"nodeType": "ContractDefinition",
"src": "293:2308:31",
"nodes": [
{
"id": 44020,
"nodeType": "FunctionDefinition",
"src": "1386:180:31",
"nodes": [],
"documentation": {
"id": 44008,
"nodeType": "StructuredDocumentation",
"src": "336:1045:31",
"text": "@notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n you must call it with secondsAgos = [3600, 0].\n @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n timestamp"
},
"functionSelector": "883bdbfd",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "observe",
"nameLocation": "1395:7:31",
"parameters": {
"id": 44012,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44011,
"mutability": "mutable",
"name": "secondsAgos",
"nameLocation": "1421:11:31",
"nodeType": "VariableDeclaration",
"scope": 44020,
"src": "1403:29:31",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr",
"typeString": "uint32[]"
},
"typeName": {
"baseType": {
"id": 44009,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1403:6:31",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 44010,
"nodeType": "ArrayTypeName",
"src": "1403:8:31",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr",
"typeString": "uint32[]"
}
},
"visibility": "internal"
}
],
"src": "1402:31:31"
},
"returnParameters": {
"id": 44019,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44015,
"mutability": "mutable",
"name": "tickCumulatives",
"nameLocation": "1496:15:31",
"nodeType": "VariableDeclaration",
"scope": 44020,
"src": "1481:30:31",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr",
"typeString": "int56[]"
},
"typeName": {
"baseType": {
"id": 44013,
"name": "int56",
"nodeType": "ElementaryTypeName",
"src": "1481:5:31",
"typeDescriptions": {
"typeIdentifier": "t_int56",
"typeString": "int56"
}
},
"id": 44014,
"nodeType": "ArrayTypeName",
"src": "1481:7:31",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr",
"typeString": "int56[]"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44018,
"mutability": "mutable",
"name": "secondsPerLiquidityCumulativeX128s",
"nameLocation": "1530:34:31",
"nodeType": "VariableDeclaration",
"scope": 44020,
"src": "1513:51:31",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr",
"typeString": "uint160[]"
},
"typeName": {
"baseType": {
"id": 44016,
"name": "uint160",
"nodeType": "ElementaryTypeName",
"src": "1513:7:31",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
"id": 44017,
"nodeType": "ArrayTypeName",
"src": "1513:9:31",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr",
"typeString": "uint160[]"
}
},
"visibility": "internal"
}
],
"src": "1480:85:31"
},
"scope": 44035,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 44034,
"nodeType": "FunctionDefinition",
"src": "2348:251:31",
"nodes": [],
"documentation": {
"id": 44021,
"nodeType": "StructuredDocumentation",
"src": "1572:771:31",
"text": "@notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n snapshot is taken and the second snapshot is taken.\n @param tickLower The lower tick of the range\n @param tickUpper The upper tick of the range\n @return tickCumulativeInside The snapshot of the tick accumulator for the range\n @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n @return secondsInside The snapshot of seconds per liquidity for the range"
},
"functionSelector": "a38807f2",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "snapshotCumulativesInside",
"nameLocation": "2357:25:31",
"parameters": {
"id": 44026,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44023,
"mutability": "mutable",
"name": "tickLower",
"nameLocation": "2389:9:31",
"nodeType": "VariableDeclaration",
"scope": 44034,
"src": "2383:15:31",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 44022,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "2383:5:31",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44025,
"mutability": "mutable",
"name": "tickUpper",
"nameLocation": "2406:9:31",
"nodeType": "VariableDeclaration",
"scope": 44034,
"src": "2400:15:31",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 44024,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "2400:5:31",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "2382:34:31"
},
"returnParameters": {
"id": 44033,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44028,
"mutability": "mutable",
"name": "tickCumulativeInside",
"nameLocation": "2483:20:31",
"nodeType": "VariableDeclaration",
"scope": 44034,
"src": "2477:26:31",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int56",
"typeString": "int56"
},
"typeName": {
"id": 44027,
"name": "int56",
"nodeType": "ElementaryTypeName",
"src": "2477:5:31",
"typeDescriptions": {
"typeIdentifier": "t_int56",
"typeString": "int56"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44030,
"mutability": "mutable",
"name": "secondsPerLiquidityInsideX128",
"nameLocation": "2525:29:31",
"nodeType": "VariableDeclaration",
"scope": 44034,
"src": "2517:37:31",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
"typeName": {
"id": 44029,
"name": "uint160",
"nodeType": "ElementaryTypeName",
"src": "2517:7:31",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44032,
"mutability": "mutable",
"name": "secondsInside",
"nameLocation": "2575:13:31",
"nodeType": "VariableDeclaration",
"scope": 44034,
"src": "2568:20:31",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 44031,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2568:6:31",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"visibility": "internal"
}
],
"src": "2463:135:31"
},
"scope": 44035,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IUniswapV3PoolDerivedState",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 44007,
"nodeType": "StructuredDocumentation",
"src": "71:222:31",
"text": "@title Pool state that is not stored\n @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n blockchain. The functions here may have variable gas costs."
},
"fullyImplemented": false,
"linearizedBaseContracts": [
44035
],
"name": "IUniswapV3PoolDerivedState",
"nameLocation": "303:26:31",
"scope": 44036,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 31
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,727 @@
{
"abi": [
{
"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": "maxLiquidityPerTick",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tickSpacing",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"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"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"factory()": "c45a0155",
"fee()": "ddca3f43",
"maxLiquidityPerTick()": "70cf754a",
"tickSpacing()": "d0c93a7c",
"token0()": "0dfe1681",
"token1()": "d21220a7"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"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\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":\"IUniswapV3PoolImmutables\"},\"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/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "fee",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "maxLiquidityPerTick",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "tickSpacing",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "token0",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "token1",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"factory()": {
"returns": {
"_0": "The contract address"
}
},
"fee()": {
"returns": {
"_0": "The fee"
}
},
"maxLiquidityPerTick()": {
"details": "This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool",
"returns": {
"_0": "The max amount of liquidity per tick"
}
},
"tickSpacing()": {
"details": "Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.",
"returns": {
"_0": "The tick spacing"
}
},
"token0()": {
"returns": {
"_0": "The token contract address"
}
},
"token1()": {
"returns": {
"_0": "The token contract address"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"factory()": {
"notice": "The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface"
},
"fee()": {
"notice": "The pool's fee in hundredths of a bip, i.e. 1e-6"
},
"maxLiquidityPerTick()": {
"notice": "The maximum amount of position liquidity that can use any tick in the range"
},
"tickSpacing()": {
"notice": "The pool tick spacing"
},
"token0()": {
"notice": "The first of the two tokens of the pool, sorted by address"
},
"token1()": {
"notice": "The second of the two tokens of the pool, sorted by address"
}
},
"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/pool/IUniswapV3PoolImmutables.sol": "IUniswapV3PoolImmutables"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": {
"keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7",
"urls": [
"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047",
"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol",
"id": 44195,
"exportedSymbols": {
"IUniswapV3PoolImmutables": [
44194
]
},
"nodeType": "SourceUnit",
"src": "45:1766:33",
"nodes": [
{
"id": 44156,
"nodeType": "PragmaDirective",
"src": "45:24:33",
"nodes": [],
"literals": [
"solidity",
">=",
"0.5",
".0"
]
},
{
"id": 44194,
"nodeType": "ContractDefinition",
"src": "224:1586:33",
"nodes": [
{
"id": 44163,
"nodeType": "FunctionDefinition",
"src": "408:51:33",
"nodes": [],
"documentation": {
"id": 44158,
"nodeType": "StructuredDocumentation",
"src": "265:138:33",
"text": "@notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\n @return The contract address"
},
"functionSelector": "c45a0155",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "factory",
"nameLocation": "417:7:33",
"parameters": {
"id": 44159,
"nodeType": "ParameterList",
"parameters": [],
"src": "424:2:33"
},
"returnParameters": {
"id": 44162,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44161,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 44163,
"src": "450:7:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 44160,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "450:7:33",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "449:9:33"
},
"scope": 44194,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 44169,
"nodeType": "FunctionDefinition",
"src": "583:50:33",
"nodes": [],
"documentation": {
"id": 44164,
"nodeType": "StructuredDocumentation",
"src": "465:113:33",
"text": "@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"
},
"functionSelector": "0dfe1681",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "token0",
"nameLocation": "592:6:33",
"parameters": {
"id": 44165,
"nodeType": "ParameterList",
"parameters": [],
"src": "598:2:33"
},
"returnParameters": {
"id": 44168,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44167,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 44169,
"src": "624:7:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 44166,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "624:7:33",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "623:9:33"
},
"scope": 44194,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 44175,
"nodeType": "FunctionDefinition",
"src": "758:50:33",
"nodes": [],
"documentation": {
"id": 44170,
"nodeType": "StructuredDocumentation",
"src": "639:114:33",
"text": "@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"
},
"functionSelector": "d21220a7",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "token1",
"nameLocation": "767:6:33",
"parameters": {
"id": 44171,
"nodeType": "ParameterList",
"parameters": [],
"src": "773:2:33"
},
"returnParameters": {
"id": 44174,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44173,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 44175,
"src": "799:7:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 44172,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "799:7:33",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "798:9:33"
},
"scope": 44194,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 44181,
"nodeType": "FunctionDefinition",
"src": "903:46:33",
"nodes": [],
"documentation": {
"id": 44176,
"nodeType": "StructuredDocumentation",
"src": "814:84:33",
"text": "@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"
},
"functionSelector": "ddca3f43",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "fee",
"nameLocation": "912:3:33",
"parameters": {
"id": 44177,
"nodeType": "ParameterList",
"parameters": [],
"src": "915:2:33"
},
"returnParameters": {
"id": 44180,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44179,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 44181,
"src": "941:6:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 44178,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "941:6:33",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
}
],
"src": "940:8:33"
},
"scope": 44194,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 44187,
"nodeType": "FunctionDefinition",
"src": "1318:53:33",
"nodes": [],
"documentation": {
"id": 44182,
"nodeType": "StructuredDocumentation",
"src": "955:358:33",
"text": "@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing"
},
"functionSelector": "d0c93a7c",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "tickSpacing",
"nameLocation": "1327:11:33",
"parameters": {
"id": 44183,
"nodeType": "ParameterList",
"parameters": [],
"src": "1338:2:33"
},
"returnParameters": {
"id": 44186,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44185,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 44187,
"src": "1364:5:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 44184,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "1364:5:33",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "1363:7:33"
},
"scope": 44194,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 44193,
"nodeType": "FunctionDefinition",
"src": "1745:63:33",
"nodes": [],
"documentation": {
"id": 44188,
"nodeType": "StructuredDocumentation",
"src": "1377:363:33",
"text": "@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick"
},
"functionSelector": "70cf754a",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "maxLiquidityPerTick",
"nameLocation": "1754:19:33",
"parameters": {
"id": 44189,
"nodeType": "ParameterList",
"parameters": [],
"src": "1773:2:33"
},
"returnParameters": {
"id": 44192,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44191,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 44193,
"src": "1799:7:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 44190,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1799:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
}
],
"src": "1798:9:33"
},
"scope": 44194,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IUniswapV3PoolImmutables",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 44157,
"nodeType": "StructuredDocumentation",
"src": "71:153:33",
"text": "@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
44194
],
"name": "IUniswapV3PoolImmutables",
"nameLocation": "234:24:33",
"scope": 44195,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 33
}

View File

@@ -0,0 +1,529 @@
{
"abi": [
{
"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": [
{
"internalType": "uint8",
"name": "feeProtocol0",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "feeProtocol1",
"type": "uint8"
}
],
"name": "setFeeProtocol",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"collectProtocol(address,uint128,uint128)": "85b66729",
"setFeeProtocol(uint8,uint8)": "8206a4d1"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":[{\"internalType\":\"uint8\",\"name\":\"feeProtocol0\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"feeProtocol1\",\"type\":\"uint8\"}],\"name\":\"setFeeProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"params\":{\"amount0Requested\":\"The maximum amount of token0 to send, can be 0 to collect fees in only token1\",\"amount1Requested\":\"The maximum amount of token1 to send, can be 0 to collect fees in only token0\",\"recipient\":\"The address to which collected protocol fees should be sent\"},\"returns\":{\"amount0\":\"The protocol fee collected in token0\",\"amount1\":\"The protocol fee collected in token1\"}},\"setFeeProtocol(uint8,uint8)\":{\"params\":{\"feeProtocol0\":\"new protocol fee for token0 of the pool\",\"feeProtocol1\":\"new protocol fee for token1 of the pool\"}}},\"title\":\"Permissioned pool actions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectProtocol(address,uint128,uint128)\":{\"notice\":\"Collect the protocol fee accrued to the pool\"},\"setFeeProtocol(uint8,uint8)\":{\"notice\":\"Set the denominator of the protocol's % share of the fees\"}},\"notice\":\"Contains pool methods that may only be called by the factory owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":\"IUniswapV3PoolOwnerActions\"},\"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/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint128",
"name": "amount0Requested",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "amount1Requested",
"type": "uint128"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "collectProtocol",
"outputs": [
{
"internalType": "uint128",
"name": "amount0",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "amount1",
"type": "uint128"
}
]
},
{
"inputs": [
{
"internalType": "uint8",
"name": "feeProtocol0",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "feeProtocol1",
"type": "uint8"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setFeeProtocol"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"collectProtocol(address,uint128,uint128)": {
"params": {
"amount0Requested": "The maximum amount of token0 to send, can be 0 to collect fees in only token1",
"amount1Requested": "The maximum amount of token1 to send, can be 0 to collect fees in only token0",
"recipient": "The address to which collected protocol fees should be sent"
},
"returns": {
"amount0": "The protocol fee collected in token0",
"amount1": "The protocol fee collected in token1"
}
},
"setFeeProtocol(uint8,uint8)": {
"params": {
"feeProtocol0": "new protocol fee for token0 of the pool",
"feeProtocol1": "new protocol fee for token1 of the pool"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"collectProtocol(address,uint128,uint128)": {
"notice": "Collect the protocol fee accrued to the pool"
},
"setFeeProtocol(uint8,uint8)": {
"notice": "Set the denominator of the protocol's % share of the fees"
}
},
"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/pool/IUniswapV3PoolOwnerActions.sol": "IUniswapV3PoolOwnerActions"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": {
"keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235",
"urls": [
"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735",
"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol",
"id": 44221,
"exportedSymbols": {
"IUniswapV3PoolOwnerActions": [
44220
]
},
"nodeType": "SourceUnit",
"src": "45:1143:34",
"nodes": [
{
"id": 44196,
"nodeType": "PragmaDirective",
"src": "45:24:34",
"nodes": [],
"literals": [
"solidity",
">=",
"0.5",
".0"
]
},
{
"id": 44220,
"nodeType": "ContractDefinition",
"src": "187:1000:34",
"nodes": [
{
"id": 44205,
"nodeType": "FunctionDefinition",
"src": "440:73:34",
"nodes": [],
"documentation": {
"id": 44198,
"nodeType": "StructuredDocumentation",
"src": "230:205:34",
"text": "@notice Set the denominator of the protocol's % share of the fees\n @param feeProtocol0 new protocol fee for token0 of the pool\n @param feeProtocol1 new protocol fee for token1 of the pool"
},
"functionSelector": "8206a4d1",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "setFeeProtocol",
"nameLocation": "449:14:34",
"parameters": {
"id": 44203,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44200,
"mutability": "mutable",
"name": "feeProtocol0",
"nameLocation": "470:12:34",
"nodeType": "VariableDeclaration",
"scope": 44205,
"src": "464:18:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 44199,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "464:5:34",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44202,
"mutability": "mutable",
"name": "feeProtocol1",
"nameLocation": "490:12:34",
"nodeType": "VariableDeclaration",
"scope": 44205,
"src": "484:18:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 44201,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "484:5:34",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"visibility": "internal"
}
],
"src": "463:40:34"
},
"returnParameters": {
"id": 44204,
"nodeType": "ParameterList",
"parameters": [],
"src": "512:0:34"
},
"scope": 44220,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 44219,
"nodeType": "FunctionDefinition",
"src": "1007:178:34",
"nodes": [],
"documentation": {
"id": 44206,
"nodeType": "StructuredDocumentation",
"src": "519:483:34",
"text": "@notice Collect the protocol fee accrued to the pool\n @param recipient The address to which collected protocol fees should be sent\n @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n @return amount0 The protocol fee collected in token0\n @return amount1 The protocol fee collected in token1"
},
"functionSelector": "85b66729",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "collectProtocol",
"nameLocation": "1016:15:34",
"parameters": {
"id": 44213,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44208,
"mutability": "mutable",
"name": "recipient",
"nameLocation": "1049:9:34",
"nodeType": "VariableDeclaration",
"scope": 44219,
"src": "1041:17:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 44207,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1041:7:34",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44210,
"mutability": "mutable",
"name": "amount0Requested",
"nameLocation": "1076:16:34",
"nodeType": "VariableDeclaration",
"scope": 44219,
"src": "1068:24:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 44209,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1068:7:34",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44212,
"mutability": "mutable",
"name": "amount1Requested",
"nameLocation": "1110:16:34",
"nodeType": "VariableDeclaration",
"scope": 44219,
"src": "1102:24:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 44211,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1102:7:34",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
}
],
"src": "1031:101:34"
},
"returnParameters": {
"id": 44218,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44215,
"mutability": "mutable",
"name": "amount0",
"nameLocation": "1159:7:34",
"nodeType": "VariableDeclaration",
"scope": 44219,
"src": "1151:15:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 44214,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1151:7:34",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 44217,
"mutability": "mutable",
"name": "amount1",
"nameLocation": "1176:7:34",
"nodeType": "VariableDeclaration",
"scope": 44219,
"src": "1168:15:34",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 44216,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1168:7:34",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
}
],
"src": "1150:34:34"
},
"scope": 44220,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IUniswapV3PoolOwnerActions",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 44197,
"nodeType": "StructuredDocumentation",
"src": "71:116:34",
"text": "@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
44220
],
"name": "IUniswapV3PoolOwnerActions",
"nameLocation": "197:26:34",
"scope": 44221,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 34
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,313 @@
{
"abi": [
{
"inputs": [
{
"internalType": "int256",
"name": "amount0Delta",
"type": "int256"
},
{
"internalType": "int256",
"name": "amount1Delta",
"type": "int256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "uniswapV3SwapCallback",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"uniswapV3SwapCallback(int256,int256,bytes)": "fa461e33"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"details\":\"In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\",\"params\":{\"amount0Delta\":\"The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.\",\"amount1Delta\":\"The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.\",\"data\":\"Any data passed through by the caller via the IUniswapV3PoolActions#swap call\"}}},\"title\":\"Callback for IUniswapV3PoolActions#swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"uniswapV3SwapCallback(int256,int256,bytes)\":{\"notice\":\"Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\"}},\"notice\":\"Any contract that calls IUniswapV3PoolActions#swap must implement this interface\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":\"IUniswapV3SwapCallback\"},\"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/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "int256",
"name": "amount0Delta",
"type": "int256"
},
{
"internalType": "int256",
"name": "amount1Delta",
"type": "int256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "uniswapV3SwapCallback"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"uniswapV3SwapCallback(int256,int256,bytes)": {
"details": "In the implementation you must pay the pool tokens owed for the swap. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory. amount0Delta and amount1Delta can both be 0 if no tokens were swapped.",
"params": {
"amount0Delta": "The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool.",
"amount1Delta": "The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool.",
"data": "Any data passed through by the caller via the IUniswapV3PoolActions#swap call"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"uniswapV3SwapCallback(int256,int256,bytes)": {
"notice": "Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap."
}
},
"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/callback/IUniswapV3SwapCallback.sol": "IUniswapV3SwapCallback"
},
"libraries": {}
},
"sources": {
"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": {
"keccak256": "0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69",
"urls": [
"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652",
"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS"
],
"license": "GPL-2.0-or-later"
}
},
"version": 1
},
"ast": {
"absolutePath": "lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol",
"id": 43909,
"exportedSymbols": {
"IUniswapV3SwapCallback": [
43908
]
},
"nodeType": "SourceUnit",
"src": "45:1248:29",
"nodes": [
{
"id": 43896,
"nodeType": "PragmaDirective",
"src": "45:24:29",
"nodes": [],
"literals": [
"solidity",
">=",
"0.5",
".0"
]
},
{
"id": 43908,
"nodeType": "ContractDefinition",
"src": "215:1077:29",
"nodes": [
{
"id": 43907,
"nodeType": "FunctionDefinition",
"src": "1157:133:29",
"nodes": [],
"documentation": {
"id": 43898,
"nodeType": "StructuredDocumentation",
"src": "254:898:29",
"text": "@notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call"
},
"functionSelector": "fa461e33",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "uniswapV3SwapCallback",
"nameLocation": "1166:21:29",
"parameters": {
"id": 43905,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 43900,
"mutability": "mutable",
"name": "amount0Delta",
"nameLocation": "1204:12:29",
"nodeType": "VariableDeclaration",
"scope": 43907,
"src": "1197:19:29",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 43899,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "1197:6:29",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43902,
"mutability": "mutable",
"name": "amount1Delta",
"nameLocation": "1233:12:29",
"nodeType": "VariableDeclaration",
"scope": 43907,
"src": "1226:19:29",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 43901,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "1226:6:29",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 43904,
"mutability": "mutable",
"name": "data",
"nameLocation": "1270:4:29",
"nodeType": "VariableDeclaration",
"scope": 43907,
"src": "1255:19:29",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 43903,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1255:5:29",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1187:93:29"
},
"returnParameters": {
"id": 43906,
"nodeType": "ParameterList",
"parameters": [],
"src": "1289:0:29"
},
"scope": 43908,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IUniswapV3SwapCallback",
"contractDependencies": [],
"contractKind": "interface",
"documentation": {
"id": 43897,
"nodeType": "StructuredDocumentation",
"src": "71:144:29",
"text": "@title Callback for IUniswapV3PoolActions#swap\n @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface"
},
"fullyImplemented": false,
"linearizedBaseContracts": [
43908
],
"name": "IUniswapV3SwapCallback",
"nameLocation": "225:22:29",
"scope": 43909,
"usedErrors": [],
"usedEvents": []
}
],
"license": "GPL-2.0-or-later"
},
"id": 29
}

View File

@@ -0,0 +1,226 @@
{
"abi": [
{
"inputs": [],
"name": "parameters",
"outputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x",
"sourceMap": "",
"linkReferences": {}
},
"methodIdentifiers": {
"parameters()": "89035730"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"parameters\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interface/IVaultDeployer.sol\":\"IVaultDeployer\"},\"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\":{\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "parameters",
"outputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
]
}
],
"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": {
"src/interface/IVaultDeployer.sol": "IVaultDeployer"
},
"libraries": {}
},
"sources": {
"src/interface/IVaultDeployer.sol": {
"keccak256": "0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886",
"urls": [
"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a",
"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7"
],
"license": "UNLICENSED"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/interface/IVaultDeployer.sol",
"id": 49443,
"exportedSymbols": {
"IVaultDeployer": [
49442
]
},
"nodeType": "SourceUnit",
"src": "65:140:62",
"nodes": [
{
"id": 49435,
"nodeType": "PragmaDirective",
"src": "65:24:62",
"nodes": [],
"literals": [
"solidity",
">=",
"0.8",
".0"
]
},
{
"id": 49436,
"nodeType": "PragmaDirective",
"src": "90:19:62",
"nodes": [],
"literals": [
"abicoder",
"v2"
]
},
{
"id": 49442,
"nodeType": "ContractDefinition",
"src": "111:93:62",
"nodes": [
{
"id": 49441,
"nodeType": "FunctionDefinition",
"src": "142:60:62",
"nodes": [],
"functionSelector": "89035730",
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "parameters",
"nameLocation": "151:10:62",
"parameters": {
"id": 49437,
"nodeType": "ParameterList",
"parameters": [],
"src": "161:2:62"
},
"returnParameters": {
"id": 49440,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 49439,
"mutability": "mutable",
"name": "owner",
"nameLocation": "195:5:62",
"nodeType": "VariableDeclaration",
"scope": 49441,
"src": "187:13:62",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 49438,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "187:7:62",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "186:15:62"
},
"scope": 49442,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "IVaultDeployer",
"contractDependencies": [],
"contractKind": "interface",
"fullyImplemented": false,
"linearizedBaseContracts": [
49442
],
"name": "IVaultDeployer",
"nameLocation": "121:14:62",
"scope": 49443,
"usedErrors": [],
"usedEvents": []
}
],
"license": "UNLICENSED"
},
"id": 62
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,905 @@
{
"abi": [
{
"inputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "int24",
"name": "window",
"type": "int24"
}
],
"name": "roundTick",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": {
"object": "0x6103a761003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806397fd6da71461003a575b600080fd5b61004d61004836600461012a565b610063565b60405161005a9190610172565b60405180910390f35b60008061007083856101af565b905060008460020b12156100c95761008960028461020a565b60020b6100958261028a565b60020b13156100b7576100a881846102ce565b6100b2908561031f565b6100c1565b6100c1818561031f565b915050610100565b6100d460028461020a565b60020b8160020b136100ea576100b2818561031f565b6100f4818461031f565b6100c190856102ce565b505b92915050565b6101108160020b90565b811461011b57600080fd5b50565b8035806100fe81610106565b6000806040838503121561014057610140600080fd5b61014a848461011e565b9150610159846020850161011e565b90509250929050565b61016c8160020b90565b82525050565b602081016101008284610162565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006101bb8260020b90565b6101c58460020b90565b806101d2576101d2610180565b90079392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006102168260020b90565b6102208460020b90565b8061022d5761022d610180565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615610281576102816101db565b90059392505050565b60006102968260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000081036102c5576102c56101db565b60000392915050565b60006102da8260020b90565b6102e48460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156100fe576100fe6101db565b600061032b8260020b90565b6103358460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156100fe576100fe6101db56fea2646970667358221220be582b7790b0dd5891fafeb05a05cb82784990891eb12728aa69c5903ca0d6e164736f6c63430008160033",
"sourceMap": "111:365:57:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;111:365:57;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806397fd6da71461003a575b600080fd5b61004d61004836600461012a565b610063565b60405161005a9190610172565b60405180910390f35b60008061007083856101af565b905060008460020b12156100c95761008960028461020a565b60020b6100958261028a565b60020b13156100b7576100a881846102ce565b6100b2908561031f565b6100c1565b6100c1818561031f565b915050610100565b6100d460028461020a565b60020b8160020b136100ea576100b2818561031f565b6100f4818461031f565b6100c190856102ce565b505b92915050565b6101108160020b90565b811461011b57600080fd5b50565b8035806100fe81610106565b6000806040838503121561014057610140600080fd5b61014a848461011e565b9150610159846020850161011e565b90509250929050565b61016c8160020b90565b82525050565b602081016101008284610162565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006101bb8260020b90565b6101c58460020b90565b806101d2576101d2610180565b90079392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006102168260020b90565b6102208460020b90565b8061022d5761022d610180565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615610281576102816101db565b90059392505050565b60006102968260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000081036102c5576102c56101db565b60000392915050565b60006102da8260020b90565b6102e48460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000821217156100fe576100fe6101db565b600061032b8260020b90565b6103358460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156100fe576100fe6101db56fea2646970667358221220be582b7790b0dd5891fafeb05a05cb82784990891eb12728aa69c5903ca0d6e164736f6c63430008160033",
"sourceMap": "111:365:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;130:344;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;196:5;;268:13;275:6;268:4;:13;:::i;:::-;256:25;;302:1;295:4;:8;;;291:176;;;333:10;342:1;333:6;:10;:::i;:::-;324:19;;:5;326:3;324:5;:::i;:::-;:19;;;;:56;;367:12;376:3;367:6;:12;:::i;:::-;359:21;;:4;:21;:::i;:::-;324:56;;;346:10;353:3;346:4;:10;:::i;:::-;317:63;;;;;291:176;420:10;429:1;420:6;:10;:::i;:::-;414:16;;:3;:16;;;:53;;457:10;464:3;457:4;:10;:::i;414:53::-;441:12;450:3;441:6;:12;:::i;:::-;433:21;;:4;:21;:::i;291:176::-;203:271;130:344;;;;;:::o;225:118:69:-;298:20;312:5;205:1;194:20;;128:92;298:20;291:5;288:31;278:59;;333:1;330;323:12;278:59;225:118;:::o;348:168::-;425:20;;;479:31;425:20;479:31;:::i;521:365::-;585:6;593;646:2;634:9;625:7;621:23;617:32;614:147;;;672:79;111:365:57;;;672:79:69;780:36;808:7;797:9;780:36;:::i;:::-;770:46;;835:45;872:7;867:2;856:9;852:18;835:45;:::i;:::-;825:55;;521:365;;;;;:::o;891:91::-;955:20;969:5;205:1;194:20;;128:92;955:20;950:3;943:33;;;891:91::o;987:191::-;1125:2;1110:18;;1137:35;1114:9;1154:6;1137:35;:::i;1183:184::-;1235:77;1232:1;1225:88;1332:4;1329:1;1322:15;1356:4;1353:1;1346:15;1372:189;1402:1;1429:16;1443:1;205;194:20;;128:92;1429:16;1465;1479:1;205;194:20;;128:92;1465:16;1500:3;1490:37;;1507:18;;:::i;:::-;1541:14;;;1372:189;-1:-1:-1;;;1372:189:69:o;1566:184::-;1618:77;1615:1;1608:88;1715:4;1712:1;1705:15;1739:4;1736:1;1729:15;1755:389;1793:1;1820:16;1834:1;205;194:20;;128:92;1820:16;1856;1870:1;205;194:20;;128:92;1856:16;1891:3;1881:37;;1898:18;;:::i;:::-;2019:66;2014:3;2011:75;1942:66;1937:3;1934:75;1930:157;1927:183;;;2090:18;;:::i;:::-;2124:14;;;1755:389;-1:-1:-1;;;1755:389:69:o;2149:238::-;2183:3;2216:20;2230:5;205:1;194:20;;128:92;2216:20;2260:66;2251:7;2248:79;2245:105;;2330:18;;:::i;:::-;2370:1;2366:15;;2149:238;-1:-1:-1;;2149:238:69:o;2392:297::-;2430:3;2459:16;2473:1;205;194:20;;128:92;2459:16;2506;2520:1;205;194:20;;128:92;2506:16;2497:26;;-1:-1:-1;2497:26:69;2570:8;2559:20;;2592:66;2581:78;;2556:104;2553:130;;;2663:18;;:::i;2694:303::-;2732:4;2762:16;2776:1;205;194:20;;128:92;2762:16;2810;2824:1;205;194:20;;128:92;2810:16;2801:26;;;-1:-1:-1;2801:26:69;2877:66;2865:79;;2958:8;2946:21;;2862:106;2859:132;;;2971:18;;:::i",
"linkReferences": {}
},
"methodIdentifiers": {
"roundTick(int24,int24)": "97fd6da7"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"window\",\"type\":\"int24\"}],\"name\":\"roundTick\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Util.sol\":\"Util\"},\"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\":{\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22+commit.4fc1097e"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "int24",
"name": "window",
"type": "int24"
}
],
"stateMutability": "pure",
"type": "function",
"name": "roundTick",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
]
}
],
"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": {
"src/Util.sol": "Util"
},
"libraries": {}
},
"sources": {
"src/Util.sol": {
"keccak256": "0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad",
"urls": [
"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80",
"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr"
],
"license": "UNLICENSED"
}
},
"version": 1
},
"ast": {
"absolutePath": "src/Util.sol",
"id": 48902,
"exportedSymbols": {
"Util": [
48901
]
},
"nodeType": "SourceUnit",
"src": "65:412:57",
"nodes": [
{
"id": 48846,
"nodeType": "PragmaDirective",
"src": "65:24:57",
"nodes": [],
"literals": [
"solidity",
">=",
"0.8",
".0"
]
},
{
"id": 48847,
"nodeType": "PragmaDirective",
"src": "90:19:57",
"nodes": [],
"literals": [
"abicoder",
"v2"
]
},
{
"id": 48901,
"nodeType": "ContractDefinition",
"src": "111:365:57",
"nodes": [
{
"id": 48900,
"nodeType": "FunctionDefinition",
"src": "130:344:57",
"nodes": [],
"body": {
"id": 48899,
"nodeType": "Block",
"src": "203:271:57",
"nodes": [],
"statements": [
{
"assignments": [
48857
],
"declarations": [
{
"constant": false,
"id": 48857,
"mutability": "mutable",
"name": "mod",
"nameLocation": "262:3:57",
"nodeType": "VariableDeclaration",
"scope": 48899,
"src": "256:9:57",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 48856,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "256:5:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"id": 48861,
"initialValue": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48858,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48849,
"src": "268:4:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"id": 48859,
"name": "window",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48851,
"src": "275:6:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "268:13:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "256:25:57"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48864,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48862,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48849,
"src": "295:4:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"hexValue": "30",
"id": 48863,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "302:1:57",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "295:8:57",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48882,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48857,
"src": "414:3:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48883,
"name": "window",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48851,
"src": "420:6:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "32",
"id": 48884,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "429:1:57",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "420:10:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "414:16:57",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48893,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48849,
"src": "457:4:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 48894,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48857,
"src": "464:3:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "457:10:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"id": 48896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "414:53:57",
"trueExpression": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48892,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48887,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48849,
"src": "433:4:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48890,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48888,
"name": "window",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48851,
"src": "441:6:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 48889,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48857,
"src": "450:3:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "441:12:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
}
],
"id": 48891,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "440:14:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "433:21:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"functionReturnParameters": 48855,
"id": 48897,
"nodeType": "Return",
"src": "407:60:57"
},
"id": 48898,
"nodeType": "IfStatement",
"src": "291:176:57",
"trueBody": {
"expression": {
"condition": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48870,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "-",
"prefix": true,
"src": "324:5:57",
"subExpression": {
"id": 48865,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48857,
"src": "326:3:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48869,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48867,
"name": "window",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48851,
"src": "333:6:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"hexValue": "32",
"id": 48868,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "342:1:57",
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"src": "333:10:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "324:19:57",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48874,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48849,
"src": "359:4:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"components": [
{
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48877,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48875,
"name": "window",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48851,
"src": "367:6:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 48876,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48857,
"src": "376:3:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "367:12:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
}
],
"id": 48878,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "366:14:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "359:21:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"id": 48880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "324:56:57",
"trueExpression": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 48873,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 48871,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48849,
"src": "346:4:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"id": 48872,
"name": "mod",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48857,
"src": "353:3:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "346:10:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"functionReturnParameters": 48855,
"id": 48881,
"nodeType": "Return",
"src": "317:63:57"
}
}
]
},
"functionSelector": "97fd6da7",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "roundTick",
"nameLocation": "139:9:57",
"parameters": {
"id": 48852,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 48849,
"mutability": "mutable",
"name": "tick",
"nameLocation": "155:4:57",
"nodeType": "VariableDeclaration",
"scope": 48900,
"src": "149:10:57",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 48848,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "149:5:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 48851,
"mutability": "mutable",
"name": "window",
"nameLocation": "167:6:57",
"nodeType": "VariableDeclaration",
"scope": 48900,
"src": "161:12:57",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 48850,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "161:5:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "148:26:57"
},
"returnParameters": {
"id": 48855,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 48854,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 48900,
"src": "196:5:57",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 48853,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "196:5:57",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "195:7:57"
},
"scope": 48901,
"stateMutability": "pure",
"virtual": false,
"visibility": "public"
}
],
"abstract": false,
"baseContracts": [],
"canonicalName": "Util",
"contractDependencies": [],
"contractKind": "library",
"fullyImplemented": true,
"linearizedBaseContracts": [
48901
],
"name": "Util",
"nameLocation": "119:4:57",
"scope": 48902,
"usedErrors": [],
"usedEvents": []
}
],
"license": "UNLICENSED"
},
"id": 57
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,12 @@
| Code | Name | Description |
|-------|--------------------|------------------------------------------------------------------------|
| UC | Unknown Constraint | The constraint specification did not have a recognized Constraint Mode |
| OCOM | Invalid OCO Mode | The OCO mode provided to placeOrder() is invalid. |
| UR | Unknown Route | The specified order route is invalid. |
| Code | Name | Description |
|----------------------|---------------------------|----------------------------------------------------------------------------------------------------------------------|
| OCOM | Invalid OCO Mode | The OCO mode provided to placeOrder() is invalid. |
| UR | Unknown Route | The specified order route is invalid. |
| NO | Not Open | Order status state is not OPEN |
| UC | Unknown Constraint | The constraint specification did not have a recognized Constraint Mode |
| TE | Too Early | Time constraint window hasn't opened yet |
| TL | Too Late | Time constraint has expired the tranche |
| L | Limit | Price limit constraint violation |
| IIA | Insufficient Input Amount | Not enough input coin available in the vault (from Uniswap) |
| TF | Tranche Filled | The tranche has no remaining amount available to execute. |
| Too little received | Too little received | Uniswap v3 error when min output amount is not filled. Can happen when a limit price is very near the current price. |

View File

@@ -1,15 +1,15 @@
[profile.default]
# solc_version = '0.7.6'
solc_version = '0.8.21'
solc_version = '0.8.22'
libs = ['lib']
remappings = [
'@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/',
# '@uniswap/v3-core/=lib/v3-core/',
'@uniswap/v3-core/=lib_sol8/v3-core/',
'v3-core/=lib_sol8/v3-core/',
'@uniswap/v3-core/=lib_uniswap/v3-core/',
'v3-core/=lib_uniswap/v3-core/',
# '@uniswap/v3-periphery/=lib/v3-periphery/',
'@uniswap/v3-periphery/=lib_sol8/v3-periphery/',
'v3-periphery/libraries/=lib_sol8/v3-periphery/contracts/libraries',
'@uniswap/v3-periphery/=lib_uniswap/v3-periphery/',
'v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries',
]
sizes = true
gas_reports = ['*']

Some files were not shown because too many files have changed in this diff Show More