diff --git a/.env.sample b/.env.sample index 8c2f13415b..b653fd3c6a 100644 --- a/.env.sample +++ b/.env.sample @@ -2,6 +2,3 @@ export USER_KEY="0xUSER_PRIVATE_KEY" export AGENT_KEYS='["0xAGENT_PRIVATE_KEY"]' export AGENT_BASE_BUDGETS='[3396163194603698651136]' export AGENT_ETH_BUDGETS='[1000000000000000000]' -export RPC_URL="http://localhost:8545" -export ARTIFACTS_URL="http://localhost:80" -export BASE_ABI_FILE="./hyperdrive_solidity/out/ERC20Mintable.sol/ERC20Mintable.json" diff --git a/Dockerfile b/Dockerfile index 10050d71cc..71bf493adc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,10 +18,4 @@ RUN python -m pip install --no-cache-dir --upgrade pip && \ python -m pip install --no-cache-dir -e ."[with-dependencies,ape]" && \ apt-get remove -y gcc python3-dev libssl-dev && \ apt-get autoremove -y && \ - pip uninstall pipenv -y - -# copy hyperdrive contracts from migrations image -COPY --from=migrations /src/ ./hyperdrive_solidity/ - -# copy foundry over from migrations image -COPY --from=migrations /usr/local/bin/ /usr/local/bin + pip uninstall pipenv -y \ No newline at end of file diff --git a/INSTALL.md b/INSTALL.md index 73e99129c1..166e04506f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -49,12 +49,12 @@ An explanation of what the above steps do: ## Working with smart contracts (optional) -We run several tests and offer utilities that depend on executing Hyperdrive solidity contracts. This is not required to use elfpy. +We run tests and offer utilities that depend on executing bytecode compiled from Hyperdrive solidity contracts. This is not required to use elfpy. NOTE: The Hyperdrive solidity implementation is currently under security review, and thus is not available publicly. The following instructions will not work for anyone who is not a member of Delv. -### 5. Set up smart contracts +### 1. Set up smart contracts Clone the hyperdrive repo, then create a [sym link](https://en.wikipedia.org/wiki/Symbolic_link#POSIX_and_Unix-like_operating_systems) at `hyperdrive_solidity/` pointing to the repo location. @@ -63,7 +63,7 @@ git clone git@github.com:delvtech/hyperdrive.git ../hyperdrive ln -s ../hyperdrive hyperdrive_solidity ``` -### 6. Install Hyperdrive pre-requisites +### 2. Install Hyperdrive Complete the steps in Hyperdrive's [Pre-requisites](https://github.com/delvtech/hyperdrive#pre-requisites) and [Build](https://github.com/delvtech/hyperdrive#build) sections. diff --git a/elfpy/bots/checkpoint_bot.py b/elfpy/bots/checkpoint_bot.py index 590f4067cb..2ba0f9435b 100644 --- a/elfpy/bots/checkpoint_bot.py +++ b/elfpy/bots/checkpoint_bot.py @@ -78,7 +78,7 @@ def main() -> None: logging.info("Successfully funded the sender=%s.", sender.account.address) # Get the Hyperdrive contract. - hyperdrive_abis = eth.abi.load_all_abis(config.build_folder) + hyperdrive_abis = eth.abi.load_all_abis(config.abi_folder) addresses = hyperdrive_interface.fetch_hyperdrive_address_from_url( os.path.join(config.artifacts_url, "addresses.json") ) diff --git a/elfpy/bots/environment_config.py b/elfpy/bots/environment_config.py index 9b79066d53..ae9fd907a0 100644 --- a/elfpy/bots/environment_config.py +++ b/elfpy/bots/environment_config.py @@ -46,8 +46,8 @@ class EnvironmentConfig(types.FrozenClass): # abi filenames hyperdrive_abi: str = "IHyperdrive" base_abi: str = "ERC20Mintable" - # build location - build_folder: str = "./hyperdrive_solidity/out" + # ABI location + abi_folder: str = "packages/hyperdrive/src/abis/" def __getitem__(self, attrib) -> None: return getattr(self, attrib) diff --git a/elfpy/data/acquire_data.py b/elfpy/data/acquire_data.py index f38d126293..27150d1d28 100644 --- a/elfpy/data/acquire_data.py +++ b/elfpy/data/acquire_data.py @@ -204,7 +204,7 @@ class EthConfig: # pylint: disable=invalid-name CONTRACTS_URL: str = "http://localhost:80/addresses.json" ETHEREUM_NODE: str = "http://localhost:8545" - ABI_DIR: str = "./hyperdrive_solidity/out/" + ABI_DIR: str = "./packages/hyperdrive/src/" def build_eth_config() -> EthConfig: diff --git a/examples/eth_bots/fund_bots.py b/examples/eth_bots/fund_bots.py index 945626ce9c..3df73f8bac 100644 --- a/examples/eth_bots/fund_bots.py +++ b/examples/eth_bots/fund_bots.py @@ -48,7 +48,7 @@ # setup web3 & contracts web3 = eth.web3_setup.initialize_web3_with_http_provider(environment_config.rpc_url) abi_file_loc = os.path.join( - os.path.join(environment_config.build_folder, environment_config.base_abi + ".sol"), + os.path.join(environment_config.abi_folder, environment_config.base_abi + ".sol"), environment_config.base_abi + ".json", ) base_contract_abi = eth.abi.load_abi_from_file(abi_file_loc) diff --git a/examples/eth_bots/setup_experiment.py b/examples/eth_bots/setup_experiment.py index 4928d5917b..653abab46f 100644 --- a/examples/eth_bots/setup_experiment.py +++ b/examples/eth_bots/setup_experiment.py @@ -52,7 +52,7 @@ def setup_experiment() -> tuple[Web3, Contract, Contract, EnvironmentConfig, lis # point to chain env web3 = eth.web3_setup.initialize_web3_with_http_provider(environment_config.rpc_url, reset_provider=False) # setup base contract interface - hyperdrive_abis = eth.abi.load_all_abis(environment_config.build_folder) + hyperdrive_abis = eth.abi.load_all_abis(environment_config.abi_folder) addresses = hyperdrive_interface.fetch_hyperdrive_address_from_url( os.path.join(environment_config.artifacts_url, "addresses.json") ) diff --git a/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json b/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json new file mode 100644 index 0000000000..e5408583a8 --- /dev/null +++ b/packages/hyperdrive/src/abis/ERC20Mintable.sol/ERC20Mintable.json @@ -0,0 +1,1663 @@ +{ + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b50604051806040016040528060048152602001634261736560e01b815250604051806040016040528060048152602001634241534560e01b81525081600390816200005d91906200011a565b5060046200006c82826200011a565b505050620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000a057607f821691505b602082108103620000c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200011557600081815260208120601f850160051c81016020861015620000f05750805b601f850160051c820191505b818110156200011157828155600101620000fc565b5050505b505050565b81516001600160401b0381111562000136576200013662000075565b6200014e816200014784546200008b565b84620000c7565b602080601f8311600181146200018657600084156200016d5750858301515b600019600386901b1c1916600185901b17855562000111565b600085815260208120601f198616915b82811015620001b75788860151825594840194600190910190840162000196565b5085821015620001d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b1e80620001f66000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220268114287ad8a004d4851fd631eb99641fbf5a9ca9b32b5ee8dc567d76ef1bc464736f6c63430008130033", + "sourceMap": "252:470:41:-:0;;;290:38;;;;;;;;;;1980:113:70;;;;;;;;;;;;;-1:-1:-1;;;1980:113:70;;;;;;;;;;;;;;;;-1:-1:-1;;;1980:113:70;;;2054:5;2046;:13;;;;;;:::i;:::-;-1:-1:-1;2069:7:70;:17;2079:7;2069;:17;:::i;:::-;;1980:113;;252:470:41;;14:127:156;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:545::-;759:2;754:3;751:11;748:448;;;795:1;820:5;816:2;809:17;865:4;861:2;851:19;935:2;923:10;919:19;916:1;912:27;906:4;902:38;971:4;959:10;956:20;953:47;;;-1:-1:-1;994:4:156;953:47;1049:2;1044:3;1040:12;1037:1;1033:20;1027:4;1023:31;1013:41;;1104:82;1122:2;1115:5;1112:13;1104:82;;;1167:17;;;1148:1;1137:13;1104:82;;;1108:3;;;748:448;657:545;;;:::o;1378:1352::-;1498:10;;-1:-1:-1;;;;;1520:30:156;;1517:56;;;1553:18;;:::i;:::-;1582:97;1672:6;1632:38;1664:4;1658:11;1632:38;:::i;:::-;1626:4;1582:97;:::i;:::-;1734:4;;1798:2;1787:14;;1815:1;1810:663;;;;2517:1;2534:6;2531:89;;;-1:-1:-1;2586:19:156;;;2580:26;2531:89;-1:-1:-1;;1335:1:156;1331:11;;;1327:24;1323:29;1313:40;1359:1;1355:11;;;1310:57;2633:81;;1780:944;;1810:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1846:20:156;;;1964:236;1978:7;1975:1;1972:14;1964:236;;;2067:19;;;2061:26;2046:42;;2159:27;;;;2127:1;2115:14;;;;1994:19;;1964:236;;;1968:3;2228:6;2219:7;2216:19;2213:201;;;2289:19;;;2283:26;-1:-1:-1;;2372:1:156;2368:14;;;2384:3;2364:24;2360:37;2356:42;2341:58;2326:74;;2213:201;-1:-1:-1;;;;;2460:1:156;2444:14;;;2440:22;2427:36;;-1:-1:-1;1378:1352:156:o;:::-;252:470:41;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a0712d6811610066578063a0712d68146101ee578063a457c2d714610201578063a9059cbb14610214578063dd62ed3e1461022757600080fd5b806342966c681461019757806370a08231146101aa57806395d89b41146101d35780639dc29fac146101db57600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261023a565b60405161010f919061094f565b60405180910390f35b61012b6101263660046109b9565b6102cc565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b3660046109e3565b6102e6565b6040516012815260200161010f565b61012b61017d3660046109b9565b61030a565b6101956101903660046109b9565b61032c565b005b6101956101a5366004610a1f565b61033a565b61013f6101b8366004610a38565b6001600160a01b031660009081526020819052604090205490565b610102610347565b6101956101e93660046109b9565b610356565b6101956101fc366004610a1f565b610360565b61012b61020f3660046109b9565b61036a565b61012b6102223660046109b9565b6103ea565b61013f610235366004610a5a565b6103f8565b60606003805461024990610a8d565b80601f016020809104026020016040519081016040528092919081815260200182805461027590610a8d565b80156102c25780601f10610297576101008083540402835291602001916102c2565b820191906000526020600020905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b6000336102da818585610423565b60019150505b92915050565b6000336102f4858285610548565b6102ff8585856105c2565b506001949350505050565b6000336102da81858561031d83836103f8565b6103279190610ac7565b610423565b6103368282610766565b5050565b6103443382610825565b50565b60606004805461024990610a8d565b6103368282610825565b6103443382610766565b6000338161037882866103f8565b9050838110156103dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102ff8286868403610423565b6000336102da8185856105c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103d4565b6001600160a01b0382166104e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061055484846103f8565b905060001981146105bc57818110156105af5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103d4565b6105bc8484848403610423565b50505050565b6001600160a01b0383166106265760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103d4565b6001600160a01b0382166106885760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103d4565b6001600160a01b038316600090815260208190526040902054818110156107005760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103d4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105bc565b6001600160a01b0382166107bc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103d4565b80600260008282546107ce9190610ac7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166108855760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103d4565b6001600160a01b038216600090815260208190526040902054818110156108f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103d4565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161053b565b600060208083528351808285015260005b8181101561097c57858101830151858201604001528201610960565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109b457600080fd5b919050565b600080604083850312156109cc57600080fd5b6109d58361099d565b946020939093013593505050565b6000806000606084860312156109f857600080fd5b610a018461099d565b9250610a0f6020850161099d565b9150604084013590509250925092565b600060208284031215610a3157600080fd5b5035919050565b600060208284031215610a4a57600080fd5b610a538261099d565b9392505050565b60008060408385031215610a6d57600080fd5b610a768361099d565b9150610a846020840161099d565b90509250929050565b600181811c90821680610aa157607f821691505b602082108103610ac157634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e057634e487b7160e01b600052601160045260246000fdfea2646970667358221220268114287ad8a004d4851fd631eb99641fbf5a9ca9b32b5ee8dc567d76ef1bc464736f6c63430008130033", + "sourceMap": "252:470:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:70;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:156;;1162:22;1144:41;;1132:2;1117:18;4444:197:70;1004:187:156;3255:106:70;3342:12;;3255:106;;;1342:25:156;;;1330:2;1315:18;3255:106:70;1196:177:156;5203:256:70;;;;;;:::i;:::-;;:::i;3104:91::-;;;3186:2;1853:36:156;;1841:2;1826:18;3104:91:70;1711:184:156;5854:234:70;;;;;;:::i;:::-;;:::i;421:103:41:-;;;;;;:::i;:::-;;:::i;:::-;;530:81;;;;;;:::i;:::-;;:::i;3419:125:70:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:70;3493:7;3519:18;;;;;;;;;;;;3419:125;2369:102;;;:::i;617:103:41:-;;;;;;:::i;:::-;;:::i;334:81::-;;;;;;:::i;:::-;;:::i;6575:427:70:-;;;;;;:::i;:::-;;:::i;3740:189::-;;;;;;:::i;:::-;;:::i;3987:149::-;;;;;;:::i;:::-;;:::i;2158:98::-;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:80;4581:32:70;719:10:80;4597:7:70;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;5203:256::-;5300:4;719:10:80;5356:38:70;5372:4;719:10:80;5387:6:70;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:70;;5203:256;-1:-1:-1;;;;5203:256:70:o;5854:234::-;5942:4;719:10:80;5996:64:70;719:10:80;6012:7:70;6049:10;6021:25;719:10:80;6012:7:70;6021:9;:25::i;:::-;:38;;;;:::i;:::-;5996:8;:64::i;421:103:41:-;491:26;497:11;510:6;491:5;:26::i;:::-;421:103;;:::o;530:81::-;579:25;585:10;597:6;579:5;:25::i;:::-;530:81;:::o;2369:102:70:-;2425:13;2457:7;2450:14;;;;;:::i;617:103:41:-;687:26;693:11;706:6;687:5;:26::i;334:81::-;383:25;389:10;401:6;383:5;:25::i;6575:427:70:-;6668:4;719:10:80;6668:4:70;6749:25;719:10:80;6766:7:70;6749:9;:25::i;:::-;6722:52;;6812:15;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:70;;3355:2:156;6784:85:70;;;3337:21:156;3394:2;3374:18;;;3367:30;3433:34;3413:18;;;3406:62;-1:-1:-1;;;3484:18:156;;;3477:35;3529:19;;6784:85:70;;;;;;;;;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;3740:189::-;3819:4;719:10:80;3873:28:70;719:10:80;3890:2:70;3894:6;3873:9;:28::i;3987:149::-;-1:-1:-1;;;;;4102:18:70;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149::o;10457:340::-;-1:-1:-1;;;;;10558:19:70;;10550:68;;;;-1:-1:-1;;;10550:68:70;;3761:2:156;10550:68:70;;;3743:21:156;3800:2;3780:18;;;3773:30;3839:34;3819:18;;;3812:62;-1:-1:-1;;;3890:18:156;;;3883:34;3934:19;;10550:68:70;3559:400:156;10550:68:70;-1:-1:-1;;;;;10636:21:70;;10628:68;;;;-1:-1:-1;;;10628:68:70;;4166:2:156;10628:68:70;;;4148:21:156;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;-1:-1:-1;;;4295:18:156;;;4288:32;4337:19;;10628:68:70;3964:398:156;10628:68:70;-1:-1:-1;;;;;10707:18:70;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1342:25:156;;;10758:32:70;;1315:18:156;10758:32:70;;;;;;;;10457:340;;;:::o;11078:411::-;11178:24;11205:25;11215:5;11222:7;11205:9;:25::i;:::-;11178:52;;-1:-1:-1;;11244:16:70;:37;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:70;;4569:2:156;11297:68:70;;;4551:21:156;4608:2;4588:18;;;4581:30;4647:31;4627:18;;;4620:59;4696:18;;11297:68:70;4367:353:156;11297:68:70;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:70;;7544:68;;;;-1:-1:-1;;;7544:68:70;;4927:2:156;7544:68:70;;;4909:21:156;4966:2;4946:18;;;4939:30;5005:34;4985:18;;;4978:62;-1:-1:-1;;;5056:18:156;;;5049:35;5101:19;;7544:68:70;4725:401:156;7544:68:70;-1:-1:-1;;;;;7630:16:70;;7622:64;;;;-1:-1:-1;;;7622:64:70;;5333:2:156;7622:64:70;;;5315:21:156;5372:2;5352:18;;;5345:30;5411:34;5391:18;;;5384:62;-1:-1:-1;;;5462:18:156;;;5455:33;5505:19;;7622:64:70;5131:399:156;7622:64:70;-1:-1:-1;;;;;7768:15:70;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:70;;5737:2:156;7793:72:70;;;5719:21:156;5776:2;5756:18;;;5749:30;5815:34;5795:18;;;5788:62;-1:-1:-1;;;5866:18:156;;;5859:36;5912:19;;7793:72:70;5535:402:156;7793:72:70;-1:-1:-1;;;;;7899:15:70;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1342:25:156;;;8114:13:70;;8163:26;;1315:18:156;8163:26:70;;;;;;;8200:37;9375:659;8520:535;-1:-1:-1;;;;;8603:21:70;;8595:65;;;;-1:-1:-1;;;8595:65:70;;6144:2:156;8595:65:70;;;6126:21:156;6183:2;6163:18;;;6156:30;6222:33;6202:18;;;6195:61;6273:18;;8595:65:70;5942:355:156;8595:65:70;8747:6;8731:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8899:18:70;;:9;:18;;;;;;;;;;;:28;;;;;;8952:37;1342:25:156;;;8952:37:70;;1315:18:156;8952:37:70;;;;;;;421:103:41;;:::o;9375:659:70:-;-1:-1:-1;;;;;9458:21:70;;9450:67;;;;-1:-1:-1;;;9450:67:70;;6504:2:156;9450:67:70;;;6486:21:156;6543:2;6523:18;;;6516:30;6582:34;6562:18;;;6555:62;-1:-1:-1;;;6633:18:156;;;6626:31;6674:19;;9450:67:70;6302:397:156;9450:67:70;-1:-1:-1;;;;;9613:18:70;;9588:22;9613:18;;;;;;;;;;;9649:24;;;;9641:71;;;;-1:-1:-1;;;9641:71:70;;6906:2:156;9641:71:70;;;6888:21:156;6945:2;6925:18;;;6918:30;6984:34;6964:18;;;6957:62;-1:-1:-1;;;7035:18:156;;;7028:32;7077:19;;9641:71:70;6704:398:156;9641:71:70;-1:-1:-1;;;;;9746:18:70;;:9;:18;;;;;;;;;;;9767:23;;;9746:44;;9883:12;:22;;;;;;;9931:37;1342:25:156;;;9746:9:70;;:18;9931:37;;1315:18:156;9931:37:70;1196:177:156;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:156;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:156:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:156;;1900:180;-1:-1:-1;1900:180:156:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:156:o;2276:260::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;;2492:38;2526:2;2515:9;2511:18;2492:38;:::i;:::-;2482:48;;2276:260;;;;;:::o;2541:380::-;2620:1;2616:12;;;;2663;;;2684:61;;2738:4;2730:6;2726:17;2716:27;;2684:61;2791:2;2783:6;2780:14;2760:18;2757:38;2754:161;;2837:10;2832:3;2828:20;2825:1;2818:31;2872:4;2869:1;2862:15;2900:4;2897:1;2890:15;2754:161;;2541:380;;;:::o;2926:222::-;2991:9;;;3012:10;;;3009:133;;;3064:10;3059:3;3055:20;3052:1;3045:31;3099:4;3096:1;3089:15;3127:4;3124:1;3117:15", + "linkReferences": {} + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(address,uint256)": "9dc29fac", + "burn(uint256)": "42966c68", + "decimals()": "313ce567", + "decreaseAllowance(address,uint256)": "a457c2d7", + "increaseAllowance(address,uint256)": "39509351", + "mint(address,uint256)": "40c10f19", + "mint(uint256)": "a0712d68", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\",\"lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"contracts/test/ERC20Mintable.sol\":{\"keccak256\":\"0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071\",\"dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df\",\"dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"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.19+commit.7dd6d404" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Transfer", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "burn" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "burn" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "destination", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "mint" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "mint" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "decimals()": { + "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." + }, + "decreaseAllowance(address,uint256)": { + "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." + }, + "increaseAllowance(address,uint256)": { + "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address." + }, + "name()": { + "details": "Returns the name of the token." + }, + "symbol()": { + "details": "Returns the symbol of the token, usually a shorter version of the name." + }, + "totalSupply()": { + "details": "See {IERC20-totalSupply}." + }, + "transfer(address,uint256)": { + "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`." + }, + "transferFrom(address,address,uint256)": { + "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/", + "lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "contracts/test/ERC20Mintable.sol": "ERC20Mintable" + }, + "libraries": {} + }, + "sources": { + "contracts/test/ERC20Mintable.sol": { + "keccak256": "0x6b711c69de04598e0cb9579dd1dbd445793963a7c2999fee9db70b6ff3548612", + "urls": [ + "bzz-raw://6ab89c2a83f6bbfa87055a302aeeee51f7693fb6715ef3bd484e996308789071", + "dweb:/ipfs/QmXdHzQ6ymLpUaVQihD1PoCyiArioSLSfLaXMuevXmcngB" + ], + "license": "Apache-2.0" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { + "keccak256": "0xb62681ccbf84aef125665cfdfc0bf13b532925b1a520d6c935913560f539a31b", + "urls": [ + "bzz-raw://21dbc5b8aede7dee8f0e3bf296a58270f376f8e40d6f8becccde5b3cf34bc8df", + "dweb:/ipfs/QmfHPWrtGiMNhTtLDYtqSd1eVd35Zqgd4PW9bR3i23oJgg" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", + "urls": [ + "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", + "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol": { + "keccak256": "0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b", + "urls": [ + "bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f", + "dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", + "urls": [ + "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", + "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "contracts/test/ERC20Mintable.sol", + "id": 11200, + "exportedSymbols": { + "ERC20": [ + 40317 + ], + "ERC20Burnable": [ + 40439 + ], + "ERC20Mintable": [ + 11199 + ] + }, + "nodeType": "SourceUnit", + "src": "39:684:41", + "nodes": [ + { + "id": 11134, + "nodeType": "PragmaDirective", + "src": "39:23:41", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".19" + ] + }, + { + "id": 11136, + "nodeType": "ImportDirective", + "src": "64:79:41", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol", + "nameLocation": "-1:-1:-1", + "scope": 11200, + "sourceUnit": 40318, + "symbolAliases": [ + { + "foreign": { + "id": 11135, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40317, + "src": "73:5:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 11138, + "nodeType": "ImportDirective", + "src": "144:106:41", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol", + "file": "openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol", + "nameLocation": "-1:-1:-1", + "scope": 11200, + "sourceUnit": 40440, + "symbolAliases": [ + { + "foreign": { + "id": 11137, + "name": "ERC20Burnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40439, + "src": "153:13:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 11199, + "nodeType": "ContractDefinition", + "src": "252:470:41", + "nodes": [ + { + "id": 11148, + "nodeType": "FunctionDefinition", + "src": "290:38:41", + "nodes": [], + "body": { + "id": 11147, + "nodeType": "Block", + "src": "326:2:41", + "nodes": [], + "statements": [] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "42617365", + "id": 11143, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "310:6:41", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0ae0ac2f852a779a7f563e86fd9f7493133d36d105b67aa4ae634de521805c78", + "typeString": "literal_string \"Base\"" + }, + "value": "Base" + }, + { + "hexValue": "42415345", + "id": 11144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "318:6:41", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a96b772a8c17d9c8cf2c92a171b3dcdcf9453b286b3b47d988d07a79acc72567", + "typeString": "literal_string \"BASE\"" + }, + "value": "BASE" + } + ], + "id": 11145, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 11142, + "name": "ERC20", + "nameLocations": [ + "304:5:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 40317, + "src": "304:5:41" + }, + "nodeType": "ModifierInvocation", + "src": "304:21:41" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 11141, + "nodeType": "ParameterList", + "parameters": [], + "src": "301:2:41" + }, + "returnParameters": { + "id": 11146, + "nodeType": "ParameterList", + "parameters": [], + "src": "326:0:41" + }, + "scope": 11199, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 11160, + "nodeType": "FunctionDefinition", + "src": "334:81:41", + "nodes": [], + "body": { + "id": 11159, + "nodeType": "Block", + "src": "373:42:41", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11154, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "389:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "393:6:41", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "389:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11156, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11150, + "src": "401:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11153, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40134, + "src": "383:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "383:25:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11158, + "nodeType": "ExpressionStatement", + "src": "383:25:41" + } + ] + }, + "functionSelector": "a0712d68", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "343:4:41", + "parameters": { + "id": 11151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11150, + "mutability": "mutable", + "name": "amount", + "nameLocation": "356:6:41", + "nodeType": "VariableDeclaration", + "scope": 11160, + "src": "348:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11149, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "348:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "347:16:41" + }, + "returnParameters": { + "id": 11152, + "nodeType": "ParameterList", + "parameters": [], + "src": "373:0:41" + }, + "scope": 11199, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 11173, + "nodeType": "FunctionDefinition", + "src": "421:103:41", + "nodes": [], + "body": { + "id": 11172, + "nodeType": "Block", + "src": "481:43:41", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11168, + "name": "destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11162, + "src": "497:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11169, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11164, + "src": "510:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11167, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40134, + "src": "491:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "491:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11171, + "nodeType": "ExpressionStatement", + "src": "491:26:41" + } + ] + }, + "functionSelector": "40c10f19", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nameLocation": "430:4:41", + "parameters": { + "id": 11165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11162, + "mutability": "mutable", + "name": "destination", + "nameLocation": "443:11:41", + "nodeType": "VariableDeclaration", + "scope": 11173, + "src": "435:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "435:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11164, + "mutability": "mutable", + "name": "amount", + "nameLocation": "464:6:41", + "nodeType": "VariableDeclaration", + "scope": 11173, + "src": "456:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "456:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "434:37:41" + }, + "returnParameters": { + "id": 11166, + "nodeType": "ParameterList", + "parameters": [], + "src": "481:0:41" + }, + "scope": 11199, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 11185, + "nodeType": "FunctionDefinition", + "src": "530:81:41", + "nodes": [], + "body": { + "id": 11184, + "nodeType": "Block", + "src": "569:42:41", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 11179, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "585:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 11180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "589:6:41", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "585:10:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11181, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11175, + "src": "597:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11178, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40206, + "src": "579:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "579:25:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11183, + "nodeType": "ExpressionStatement", + "src": "579:25:41" + } + ] + }, + "functionSelector": "42966c68", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "539:4:41", + "parameters": { + "id": 11176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11175, + "mutability": "mutable", + "name": "amount", + "nameLocation": "552:6:41", + "nodeType": "VariableDeclaration", + "scope": 11185, + "src": "544:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "544:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "543:16:41" + }, + "returnParameters": { + "id": 11177, + "nodeType": "ParameterList", + "parameters": [], + "src": "569:0:41" + }, + "scope": 11199, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 11198, + "nodeType": "FunctionDefinition", + "src": "617:103:41", + "nodes": [], + "body": { + "id": 11197, + "nodeType": "Block", + "src": "677:43:41", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11193, + "name": "destination", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11187, + "src": "693:11:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11194, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11189, + "src": "706:6:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11192, + "name": "_burn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40206, + "src": "687:5:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "687:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11196, + "nodeType": "ExpressionStatement", + "src": "687:26:41" + } + ] + }, + "functionSelector": "9dc29fac", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "626:4:41", + "parameters": { + "id": 11190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11187, + "mutability": "mutable", + "name": "destination", + "nameLocation": "639:11:41", + "nodeType": "VariableDeclaration", + "scope": 11198, + "src": "631:19:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "631:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11189, + "mutability": "mutable", + "name": "amount", + "nameLocation": "660:6:41", + "nodeType": "VariableDeclaration", + "scope": 11198, + "src": "652:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11188, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "652:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "630:37:41" + }, + "returnParameters": { + "id": 11191, + "nodeType": "ParameterList", + "parameters": [], + "src": "677:0:41" + }, + "scope": 11199, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 11139, + "name": "ERC20", + "nameLocations": [ + "278:5:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 40317, + "src": "278:5:41" + }, + "id": 11140, + "nodeType": "InheritanceSpecifier", + "src": "278:5:41" + } + ], + "canonicalName": "ERC20Mintable", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 11199, + 40317, + 40501, + 40395, + 41430 + ], + "name": "ERC20Mintable", + "nameLocation": "261:13:41", + "scope": 11200, + "usedErrors": [] + } + ], + "license": "Apache-2.0" + }, + "id": 41 +} \ No newline at end of file diff --git a/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json b/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json new file mode 100644 index 0000000000..652e6e0946 --- /dev/null +++ b/packages/hyperdrive/src/abis/IHyperdrive.sol/IHyperdrive.json @@ -0,0 +1,7096 @@ +{ + "abi": [ + { + "inputs": [], + "name": "AlreadyClosed", + "type": "error" + }, + { + "inputs": [], + "name": "ApprovalFailed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseBufferExceedsShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "BatchInputLengthMismatch", + "type": "error" + }, + { + "inputs": [], + "name": "BelowMinimumContribution", + "type": "error" + }, + { + "inputs": [], + "name": "BelowMinimumShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "BondMatured", + "type": "error" + }, + { + "inputs": [], + "name": "BondNotMatured", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "underlyingError", + "type": "bytes4" + } + ], + "name": "CallFailed", + "type": "error" + }, + { + "inputs": [], + "name": "ExpiredDeadline", + "type": "error" + }, + { + "inputs": [], + "name": "FeeTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_AddOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_InvalidExponent", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_NegativeInput", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_NegativeOrZeroInput", + "type": "error" + }, + { + "inputs": [], + "name": "FixedPointMath_SubOverflow", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientPrice", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidApr", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBaseToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCheckpointDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidCheckpointTime", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidContribution", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidERC20Bridge", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidFeeAmounts", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialSharePrice", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMaturityTime", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMinimumShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPositionDuration", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidShareReserves", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidTimestamp", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidToken", + "type": "error" + }, + { + "inputs": [], + "name": "MaxFeeTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "MintPercentTooHigh", + "type": "error" + }, + { + "inputs": [], + "name": "NegativeInterest", + "type": "error" + }, + { + "inputs": [], + "name": "NoAssetsToWithdraw", + "type": "error" + }, + { + "inputs": [], + "name": "NonPayableInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotPayable", + "type": "error" + }, + { + "inputs": [], + "name": "OutputLimit", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "PoolAlreadyInitialized", + "type": "error" + }, + { + "inputs": [], + "name": "QueryOutOfRange", + "type": "error" + }, + { + "inputs": [], + "name": "RestrictedZeroAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "ReturnData", + "type": "error" + }, + { + "inputs": [], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedAssetId", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedSender", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpectedSuccess", + "type": "error" + }, + { + "inputs": [], + "name": "UnsupportedToken", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAmount", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroLpTotalSupply", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + } + ], + "name": "AddLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "CloseLong", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "CloseShort", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "apr", + "type": "uint256" + } + ], + "name": "Initialize", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "OpenLong", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "trader", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "assetId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256" + } + ], + "name": "OpenShort", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + } + ], + "name": "RedeemWithdrawalShares", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256" + } + ], + "name": "RemoveLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minApr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxApr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "batchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointTime", + "type": "uint256" + } + ], + "name": "checkpoint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "closeLong", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "closeShort", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointId", + "type": "uint256" + } + ], + "name": "getCheckpoint", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "sharePrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longSharePrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortBaseVolume", + "type": "uint128" + } + ], + "internalType": "struct IHyperdrive.Checkpoint", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMarketState", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "shareReserves", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "bondReserves", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longOpenSharePrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortBaseVolume", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "isInitialized", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ], + "internalType": "struct IHyperdrive.MarketState", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolConfig", + "outputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumShareReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "positionDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkpointDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeStretch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "governance", + "type": "address" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "curve", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "flat", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governance", + "type": "uint256" + } + ], + "internalType": "struct IHyperdrive.Fees", + "name": "fees", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "oracleSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updateGap", + "type": "uint256" + } + ], + "internalType": "struct IHyperdrive.PoolConfig", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPoolInfo", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "shareReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bondReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lpTotalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortBaseVolume", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesReadyToWithdraw", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesProceeds", + "type": "uint256" + } + ], + "internalType": "struct IHyperdrive.PoolInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUncollectedGovernanceFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_apr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "initialize", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "linkerCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_slots", + "type": "uint256[]" + } + ], + "name": "load", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_baseAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "openLong", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bondProceeds", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxDeposit", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "openShort", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "traderDeposit", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "perTokenApprovals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permitForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "redeemWithdrawalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharesRedeemed", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "baseProceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalShares", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "setApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "setApprovalBridge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "setGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "setPauser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "name": "transferFromBridge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawPool", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "readyToWithdraw", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "proceeds", + "type": "uint128" + } + ], + "internalType": "struct IHyperdrive.WithdrawPool", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x", + "sourceMap": "", + "linkReferences": {} + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "addLiquidity(uint256,uint256,uint256,address,bool)": "c326a903", + "balanceOf(uint256,address)": "3656eec2", + "baseToken()": "c55dae63", + "batchTransferFrom(address,address,uint256[],uint256[])": "17fad7fc", + "checkpoint(uint256)": "ed64bab2", + "closeLong(uint256,uint256,uint256,address,bool)": "fa3fcea7", + "closeShort(uint256,uint256,uint256,address,bool)": "6f8c3a5b", + "factory()": "c45a0155", + "getCheckpoint(uint256)": "20fc4881", + "getMarketState()": "d8165743", + "getPoolConfig()": "b0d96580", + "getPoolInfo()": "60246c88", + "getUncollectedGovernanceFees()": "c69e16ad", + "initialize(uint256,uint256,address,bool)": "2002b333", + "isApprovedForAll(address,address)": "e985e9c5", + "linkerCodeHash()": "c905a4b5", + "load(uint256[])": "becee9c3", + "name(uint256)": "00ad800c", + "nonces(address)": "7ecebe00", + "openLong(uint256,uint256,address,bool)": "11660645", + "openShort(uint256,uint256,address,bool)": "c576201d", + "pause(bool)": "02329a29", + "perTokenApprovals(uint256,address,address)": "21ff32a9", + "permitForAll(address,address,bool,uint256,uint8,bytes32,bytes32)": "9032c726", + "redeemWithdrawalShares(uint256,uint256,address,bool)": "4536ee2f", + "removeLiquidity(uint256,uint256,address,bool)": "c23632a7", + "setApproval(uint256,address,uint256)": "9cd241af", + "setApprovalBridge(uint256,address,uint256,address)": "4ed2d6ac", + "setApprovalForAll(address,bool)": "a22cb465", + "setGovernance(address)": "ab033ea9", + "setPauser(address,bool)": "7180c8ca", + "symbol(uint256)": "4e41a1fb", + "totalSupply(uint256)": "bd85b039", + "transferFrom(uint256,address,address,uint256)": "1c0f12b6", + "transferFromBridge(uint256,address,address,uint256,address)": "e44808bc", + "withdrawPool()": "5c42c733" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseBufferExceedsShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchInputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BelowMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondMatured\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BondNotMatured\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"underlyingError\",\"type\":\"bytes4\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpiredDeadline\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_AddOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_InvalidExponent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_NegativeOrZeroInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FixedPointMath_SubOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidApr\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBaseToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCheckpointTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContribution\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC20Bridge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFeeAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialSharePrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMaturityTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMinimumShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPositionDuration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShareReserves\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimestamp\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MintPercentTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NegativeInterest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoAssetsToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonPayableInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OutputLimit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"QueryOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RestrictedZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ReturnData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedAssetId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnexpectedSuccess\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroLpTotalSupply\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"AddLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"CloseShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"apr\",\"type\":\"uint256\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenLong\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"assetId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bondAmount\",\"type\":\"uint256\"}],\"name\":\"OpenShort\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"}],\"name\":\"RedeemWithdrawalShares\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"baseAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawalShareAmount\",\"type\":\"uint256\"}],\"name\":\"RemoveLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minApr\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxApr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"batchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointTime\",\"type\":\"uint256\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"closeShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_checkpointId\",\"type\":\"uint256\"}],\"name\":\"getCheckpoint\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"sharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longSharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortBaseVolume\",\"type\":\"uint128\"}],\"internalType\":\"struct IHyperdrive.Checkpoint\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMarketState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"shareReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"bondReserves\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortsOutstanding\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"longOpenSharePrice\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"shortBaseVolume\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"isInitialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"internalType\":\"struct IHyperdrive.MarketState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"baseToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumShareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkpointDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStretch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeCollector\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"curve\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"flat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"governance\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.Fees\",\"name\":\"fees\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"oracleSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updateGap\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPoolInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"shareReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bondReserves\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpTotalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"longAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortsOutstanding\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortAverageMaturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortBaseVolume\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesReadyToWithdraw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalSharesProceeds\",\"type\":\"uint256\"}],\"internalType\":\"struct IHyperdrive.PoolInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUncollectedGovernanceFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_contribution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_apr\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lpShares\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkerCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_slots\",\"type\":\"uint256[]\"}],\"name\":\"load\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_baseAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openLong\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bondProceeds\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxDeposit\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"openShort\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maturityTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"traderDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"perTokenApprovals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"redeemWithdrawalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"proceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sharesRedeemed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minOutput\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_asUnderlying\",\"type\":\"bool\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"baseProceeds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalShares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"setApprovalBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setPauser\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"transferFromBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawPool\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"readyToWithdraw\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"proceeds\",\"type\":\"uint128\"}],\"internalType\":\"struct IHyperdrive.WithdrawPool\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyClosed()\":[{\"notice\":\"##################### ### BondWrapper ### #####################\"}],\"BaseBufferExceedsShareReserves()\":[{\"notice\":\"################## ### Hyperdrive ### ##################\"}],\"BatchInputLengthMismatch()\":[{\"notice\":\"###################### ### ERC20Forwarder ### ######################\"}],\"FixedPointMath_AddOverflow()\":[{\"notice\":\"###################### ### FixedPointMath ### ######################\"}],\"InvalidTimestamp()\":[{\"notice\":\"############### ### AssetId ### ###############\"}],\"QueryOutOfRange()\":[{\"notice\":\"############ ### TWAP ### ############\"}],\"ReturnData(bytes)\":[{\"notice\":\"#################### ### DataProvider ### ####################\"}],\"Unauthorized()\":[{\"notice\":\"############### ### Factory ### ###############\"}]},\"events\":{\"Initialize(address,uint256,uint256,uint256)\":{\"notice\":\"Events ///\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/src/interfaces/IHyperdrive.sol\":\"IHyperdrive\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/=lib/aave-v3-core/contracts/\",\":aave-v3-core/=lib/aave-v3-core/\",\":create3-factory/=lib/yield-daddy/lib/create3-factory/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":yield-daddy/=lib/yield-daddy/\",\"lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"contracts/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672\",\"dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w\"]},\"contracts/src/interfaces/IHyperdrive.sol\":{\"keccak256\":\"0x6100b32d3c99e1666314454e80f732f6c5461bc8ef73de6687bd786b8549779e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://64f59513a6d5cfa28d7c380bc16451095900b40228b5a58e8c44394dedd3c315\",\"dweb:/ipfs/QmcTrjEUKb8wvNJpQBYpq8cw25F6yVsrT87DpaxwT8MLFV\"]},\"contracts/src/interfaces/IHyperdriveRead.sol\":{\"keccak256\":\"0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386\",\"dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F\"]},\"contracts/src/interfaces/IHyperdriveWrite.sol\":{\"keccak256\":\"0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166\",\"dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG\"]},\"contracts/src/interfaces/IMultiToken.sol\":{\"keccak256\":\"0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0\",\"dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb\"]},\"contracts/src/interfaces/IMultiTokenMetadata.sol\":{\"keccak256\":\"0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87\",\"dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6\"]},\"contracts/src/interfaces/IMultiTokenRead.sol\":{\"keccak256\":\"0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939\",\"dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x\"]},\"contracts/src/interfaces/IMultiTokenWrite.sol\":{\"keccak256\":\"0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a\",\"dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0\",\"dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577\",\"dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f\",\"dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.19+commit.7dd6d404" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "type": "error", + "name": "AlreadyClosed" + }, + { + "inputs": [], + "type": "error", + "name": "ApprovalFailed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseBufferExceedsShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "BatchInputLengthMismatch" + }, + { + "inputs": [], + "type": "error", + "name": "BelowMinimumContribution" + }, + { + "inputs": [], + "type": "error", + "name": "BelowMinimumShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "BondMatured" + }, + { + "inputs": [], + "type": "error", + "name": "BondNotMatured" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "underlyingError", + "type": "bytes4" + } + ], + "type": "error", + "name": "CallFailed" + }, + { + "inputs": [], + "type": "error", + "name": "ExpiredDeadline" + }, + { + "inputs": [], + "type": "error", + "name": "FeeTooHigh" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_AddOverflow" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_InvalidExponent" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_NegativeInput" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_NegativeOrZeroInput" + }, + { + "inputs": [], + "type": "error", + "name": "FixedPointMath_SubOverflow" + }, + { + "inputs": [], + "type": "error", + "name": "InsufficientPrice" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidApr" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidBaseToken" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidCheckpointDuration" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidCheckpointTime" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidContribution" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidERC20Bridge" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidFeeAmounts" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidInitialSharePrice" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidMaturityTime" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidMinimumShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidPositionDuration" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidShareReserves" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidSignature" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidTimestamp" + }, + { + "inputs": [], + "type": "error", + "name": "InvalidToken" + }, + { + "inputs": [], + "type": "error", + "name": "MaxFeeTooHigh" + }, + { + "inputs": [], + "type": "error", + "name": "MintPercentTooHigh" + }, + { + "inputs": [], + "type": "error", + "name": "NegativeInterest" + }, + { + "inputs": [], + "type": "error", + "name": "NoAssetsToWithdraw" + }, + { + "inputs": [], + "type": "error", + "name": "NonPayableInitialization" + }, + { + "inputs": [], + "type": "error", + "name": "NotPayable" + }, + { + "inputs": [], + "type": "error", + "name": "OutputLimit" + }, + { + "inputs": [], + "type": "error", + "name": "Paused" + }, + { + "inputs": [], + "type": "error", + "name": "PoolAlreadyInitialized" + }, + { + "inputs": [], + "type": "error", + "name": "QueryOutOfRange" + }, + { + "inputs": [], + "type": "error", + "name": "RestrictedZeroAddress" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "type": "error", + "name": "ReturnData" + }, + { + "inputs": [], + "type": "error", + "name": "TransferFailed" + }, + { + "inputs": [], + "type": "error", + "name": "Unauthorized" + }, + { + "inputs": [], + "type": "error", + "name": "UnexpectedAssetId" + }, + { + "inputs": [], + "type": "error", + "name": "UnexpectedSender" + }, + { + "inputs": [], + "type": "error", + "name": "UnexpectedSuccess" + }, + { + "inputs": [], + "type": "error", + "name": "UnsupportedToken" + }, + { + "inputs": [], + "type": "error", + "name": "ZeroAmount" + }, + { + "inputs": [], + "type": "error", + "name": "ZeroLpTotalSupply" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "AddLiquidity", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "spender", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Approval", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool", + "indexed": false + } + ], + "type": "event", + "name": "ApprovalForAll", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "CloseLong", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "CloseShort", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "apr", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "Initialize", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "OpenLong", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "trader", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "assetId", + "type": "uint256", + "indexed": true + }, + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "bondAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "OpenShort", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "RedeemWithdrawalShares", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provider", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "lpAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "baseAmount", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "withdrawalShareAmount", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "RemoveLiquidity", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "from", + "type": "address", + "indexed": true + }, + { + "internalType": "address", + "name": "to", + "type": "address", + "indexed": true + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "TransferSingle", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minApr", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxApr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "addLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "baseToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "batchTransferFrom" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointTime", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "checkpoint" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "closeLong", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "closeShort", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_checkpointId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getCheckpoint", + "outputs": [ + { + "internalType": "struct IHyperdrive.Checkpoint", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint128", + "name": "sharePrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longSharePrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortBaseVolume", + "type": "uint128" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getMarketState", + "outputs": [ + { + "internalType": "struct IHyperdrive.MarketState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint128", + "name": "shareReserves", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "bondReserves", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortsOutstanding", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "longOpenSharePrice", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortAverageMaturityTime", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "shortBaseVolume", + "type": "uint128" + }, + { + "internalType": "bool", + "name": "isInitialized", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isPaused", + "type": "bool" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getPoolConfig", + "outputs": [ + { + "internalType": "struct IHyperdrive.PoolConfig", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "contract IERC20", + "name": "baseToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minimumShareReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "positionDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkpointDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeStretch", + "type": "uint256" + }, + { + "internalType": "address", + "name": "governance", + "type": "address" + }, + { + "internalType": "address", + "name": "feeCollector", + "type": "address" + }, + { + "internalType": "struct IHyperdrive.Fees", + "name": "fees", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "curve", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "flat", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "governance", + "type": "uint256" + } + ] + }, + { + "internalType": "uint256", + "name": "oracleSize", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "updateGap", + "type": "uint256" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getPoolInfo", + "outputs": [ + { + "internalType": "struct IHyperdrive.PoolInfo", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "shareReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bondReserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lpTotalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "longAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortsOutstanding", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortAverageMaturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "shortBaseVolume", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesReadyToWithdraw", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalSharesProceeds", + "type": "uint256" + } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getUncollectedGovernanceFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_contribution", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_apr", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "initialize", + "outputs": [ + { + "internalType": "uint256", + "name": "lpShares", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "linkerCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_slots", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function", + "name": "load", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_baseAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "openLong", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "bondProceeds", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_bondAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxDeposit", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "openShort", + "outputs": [ + { + "internalType": "uint256", + "name": "maturityTime", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "traderDeposit", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "pause" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "perTokenApprovals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "permitForAll" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "redeemWithdrawalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "proceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sharesRedeemed", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_shares", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minOutput", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_destination", + "type": "address" + }, + { + "internalType": "bool", + "name": "_asUnderlying", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "baseProceeds", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalShares", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApproval" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalBridge" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setApprovalForAll" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setGovernance" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "setPauser" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFrom" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenID", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "caller", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferFromBridge" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "withdrawPool", + "outputs": [ + { + "internalType": "struct IHyperdrive.WithdrawPool", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint128", + "name": "readyToWithdraw", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "proceeds", + "type": "uint128" + } + ] + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@aave/=lib/aave-v3-core/contracts/", + "aave-v3-core/=lib/aave-v3-core/", + "create3-factory/=lib/yield-daddy/lib/create3-factory/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "solmate/=lib/solmate/src/", + "yield-daddy/=lib/yield-daddy/", + "lib/openzeppelin-contracts:openzeppelin/=lib/openzeppelin-contracts/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "contracts/src/interfaces/IHyperdrive.sol": "IHyperdrive" + }, + "libraries": {} + }, + "sources": { + "contracts/src/interfaces/IERC20.sol": { + "keccak256": "0x4642a027efffb3aa6cdc85e31796fb3b1bc4fff4316e6390874e6f4add37b86c", + "urls": [ + "bzz-raw://3720a6c1c427dcfcbdeeec15cbdb682115e44e0a9136af7e0ad9e5af2ea40672", + "dweb:/ipfs/QmP4bmaHw8MfX9MQLhhgnVQ9U9BTQAR3e5cCCE9RcoeX7w" + ], + "license": "MIT" + }, + "contracts/src/interfaces/IHyperdrive.sol": { + "keccak256": "0x6100b32d3c99e1666314454e80f732f6c5461bc8ef73de6687bd786b8549779e", + "urls": [ + "bzz-raw://64f59513a6d5cfa28d7c380bc16451095900b40228b5a58e8c44394dedd3c315", + "dweb:/ipfs/QmcTrjEUKb8wvNJpQBYpq8cw25F6yVsrT87DpaxwT8MLFV" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IHyperdriveRead.sol": { + "keccak256": "0x3e811bd3514f64c697f8eccc63dc5a6e3660582216a774126643bd5bb8a4d110", + "urls": [ + "bzz-raw://c56cdd6d55a35a359d342bcd622f242d373378ca9721a2be2ed5704a5d1c0386", + "dweb:/ipfs/QmPUVwVW76QTVFmRQ9LHBEzQTbKgGkCKoWMZWxmLDqHw9F" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IHyperdriveWrite.sol": { + "keccak256": "0x89f13d9fd9368b51ffc1bf0a506e756728460982cdc3f3be62129eb28aa04615", + "urls": [ + "bzz-raw://6d0b2a66ae0d0c72b046bfde213069fe77bcd181a7348cbc9f28f93a824ae166", + "dweb:/ipfs/QmR4TXHH6GFYQ4cTG7h9ixkoKZHgEV4wAByU5hVCuckZNG" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiToken.sol": { + "keccak256": "0xe3d64871148bdae5a714107b8b1a55f39cd4ede601436d2777a165d20d768a1a", + "urls": [ + "bzz-raw://9ebc0bfda35e9b7299c43f0efff38012b8074fcca867b781c0cedeede10cf3d0", + "dweb:/ipfs/QmbHRLezFhWavHakK5G26DB4ud5PueU6fNvZf3L3TwXnPb" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiTokenMetadata.sol": { + "keccak256": "0xcdc60ba02194150741a78cb0c52c306f5f577c5c814c63e98a13d46c02d2d9cc", + "urls": [ + "bzz-raw://8f5866cb2c8c4342dba88c0e4d78296fef0e170b18b3613c796c29dc31a5ca87", + "dweb:/ipfs/QmZcoDTYhhYSB5ds3cNPJpdZTxrz6cF8M2vNVeuAcT8gw6" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiTokenRead.sol": { + "keccak256": "0x2e55fa961123a8bb7284c8388af9bd1302a7153441ffe641804ea79021bdca05", + "urls": [ + "bzz-raw://c7dc03bbab02976609dec59c201e5b57a2998d1c626cef58d7a9fa7c2b06b939", + "dweb:/ipfs/QmSifWr9cVWaUEmyKpGFcgpKCYdoBYgWtQBLgemtwo4a7x" + ], + "license": "Apache-2.0" + }, + "contracts/src/interfaces/IMultiTokenWrite.sol": { + "keccak256": "0xa5ba8812e06fb6d38e1872603c8b80321cfd2f96cecbe7b67b92cb33e93b3fc8", + "urls": [ + "bzz-raw://73afa34919c7d457e925b4be83abb1b1ed2ed731a382ebffad95a3005c04bd5a", + "dweb:/ipfs/QmauMxmgtYTS7RJQw1mS7Pwe5FUMDPHE2N1MBhFUjk6HPe" + ], + "license": "Apache-2.0" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", + "urls": [ + "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", + "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "keccak256": "0x35e258421ae206f3db37281cea70871b4c3553914734aa76139a41af60ac1abb", + "urls": [ + "bzz-raw://2ef94b6bc4ee356db612a1849c615f7dd4b15542d6c8584c86bb9243a7913cf0", + "dweb:/ipfs/QmaxFj5NFpAjjitZtHPNS9PPtCuBATaRz9ktDDRCQCQ83y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": { + "keccak256": "0x8a63ea9ec07788740e51046ca14c61f411aedb901e89749c9d55fa56ed43086a", + "urls": [ + "bzz-raw://3035ae3f172ed9e172e1ba4d83bdc70279f63be51ce9218c530132def66ff577", + "dweb:/ipfs/QmTQ3zfC3YUNeY3KUVFiHgTWDuxfmcEMgpGC6HMoTpgZJL" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xa6dfb97ce947b7c846b054ee7d45d12383359778f4f3743654ae0a34fa421b26", + "urls": [ + "bzz-raw://b97e7e5a77ea47c08ba422291df887eba76c80982f52a6e94a30106e9377a94f", + "dweb:/ipfs/Qme7N2XRC7mcDxB8wZxNWPk6T8S2qsnmhAqXeUj4CNvsGD" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "contracts/src/interfaces/IHyperdrive.sol", + "id": 6387, + "exportedSymbols": { + "IERC20": [ + 5795 + ], + "IHyperdrive": [ + 6386 + ], + "IHyperdriveRead": [ + 6470 + ], + "IHyperdriveWrite": [ + 6617 + ], + "IMultiToken": [ + 6739 + ] + }, + "nodeType": "SourceUnit", + "src": "39:9009:19", + "nodes": [ + { + "id": 6035, + "nodeType": "PragmaDirective", + "src": "39:23:19", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".19" + ] + }, + { + "id": 6037, + "nodeType": "ImportDirective", + "src": "64:38:19", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IERC20.sol", + "file": "./IERC20.sol", + "nameLocation": "-1:-1:-1", + "scope": 6387, + "sourceUnit": 5796, + "symbolAliases": [ + { + "foreign": { + "id": 6036, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5795, + "src": "73:6:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6039, + "nodeType": "ImportDirective", + "src": "103:56:19", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IHyperdriveRead.sol", + "file": "./IHyperdriveRead.sol", + "nameLocation": "-1:-1:-1", + "scope": 6387, + "sourceUnit": 6471, + "symbolAliases": [ + { + "foreign": { + "id": 6038, + "name": "IHyperdriveRead", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6470, + "src": "112:15:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6041, + "nodeType": "ImportDirective", + "src": "160:58:19", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IHyperdriveWrite.sol", + "file": "./IHyperdriveWrite.sol", + "nameLocation": "-1:-1:-1", + "scope": 6387, + "sourceUnit": 6618, + "symbolAliases": [ + { + "foreign": { + "id": 6040, + "name": "IHyperdriveWrite", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6617, + "src": "169:16:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6043, + "nodeType": "ImportDirective", + "src": "219:48:19", + "nodes": [], + "absolutePath": "contracts/src/interfaces/IMultiToken.sol", + "file": "./IMultiToken.sol", + "nameLocation": "-1:-1:-1", + "scope": 6387, + "sourceUnit": 6740, + "symbolAliases": [ + { + "foreign": { + "id": 6042, + "name": "IMultiToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6739, + "src": "228:11:19", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 6386, + "nodeType": "ContractDefinition", + "src": "269:8778:19", + "nodes": [ + { + "id": 6060, + "nodeType": "EventDefinition", + "src": "367:132:19", + "nodes": [], + "anonymous": false, + "documentation": { + "id": 6050, + "nodeType": "StructuredDocumentation", + "src": "347:15:19", + "text": "Events ///" + }, + "eventSelector": "60c26087830ee0ee6d86bdb3a10e19f3fd49af366c77421d7fe4596811d6274e", + "name": "Initialize", + "nameLocation": "373:10:19", + "parameters": { + "id": 6059, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6052, + "indexed": true, + "mutability": "mutable", + "name": "provider", + "nameLocation": "409:8:19", + "nodeType": "VariableDeclaration", + "scope": 6060, + "src": "393:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "393:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6054, + "indexed": false, + "mutability": "mutable", + "name": "lpAmount", + "nameLocation": "435:8:19", + "nodeType": "VariableDeclaration", + "scope": 6060, + "src": "427:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "427:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6056, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "461:10:19", + "nodeType": "VariableDeclaration", + "scope": 6060, + "src": "453:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "453:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6058, + "indexed": false, + "mutability": "mutable", + "name": "apr", + "nameLocation": "489:3:19", + "nodeType": "VariableDeclaration", + "scope": 6060, + "src": "481:11:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "481:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "383:115:19" + } + }, + { + "id": 6068, + "nodeType": "EventDefinition", + "src": "505:113:19", + "nodes": [], + "anonymous": false, + "eventSelector": "06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca", + "name": "AddLiquidity", + "nameLocation": "511:12:19", + "parameters": { + "id": 6067, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6062, + "indexed": true, + "mutability": "mutable", + "name": "provider", + "nameLocation": "549:8:19", + "nodeType": "VariableDeclaration", + "scope": 6068, + "src": "533:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6061, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "533:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6064, + "indexed": false, + "mutability": "mutable", + "name": "lpAmount", + "nameLocation": "575:8:19", + "nodeType": "VariableDeclaration", + "scope": 6068, + "src": "567:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6063, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "567:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6066, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "601:10:19", + "nodeType": "VariableDeclaration", + "scope": 6068, + "src": "593:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6065, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "593:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "523:94:19" + } + }, + { + "id": 6078, + "nodeType": "EventDefinition", + "src": "624:155:19", + "nodes": [], + "anonymous": false, + "eventSelector": "59c3a0b60c6ab7deb62e1440c9e72441db6db7dfe514dba8cb18e60c0d896efa", + "name": "RemoveLiquidity", + "nameLocation": "630:15:19", + "parameters": { + "id": 6077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6070, + "indexed": true, + "mutability": "mutable", + "name": "provider", + "nameLocation": "671:8:19", + "nodeType": "VariableDeclaration", + "scope": 6078, + "src": "655:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6069, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "655:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6072, + "indexed": false, + "mutability": "mutable", + "name": "lpAmount", + "nameLocation": "697:8:19", + "nodeType": "VariableDeclaration", + "scope": 6078, + "src": "689:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6071, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "689:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6074, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "723:10:19", + "nodeType": "VariableDeclaration", + "scope": 6078, + "src": "715:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6073, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "715:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6076, + "indexed": false, + "mutability": "mutable", + "name": "withdrawalShareAmount", + "nameLocation": "751:21:19", + "nodeType": "VariableDeclaration", + "scope": 6078, + "src": "743:29:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6075, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "743:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "645:133:19" + } + }, + { + "id": 6086, + "nodeType": "EventDefinition", + "src": "785:136:19", + "nodes": [], + "anonymous": false, + "eventSelector": "07cd0949bbc0d60ad35053a0459db413c148f758b7781aaf6b258018d18ad0ac", + "name": "RedeemWithdrawalShares", + "nameLocation": "791:22:19", + "parameters": { + "id": 6085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6080, + "indexed": true, + "mutability": "mutable", + "name": "provider", + "nameLocation": "839:8:19", + "nodeType": "VariableDeclaration", + "scope": 6086, + "src": "823:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6079, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "823:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6082, + "indexed": false, + "mutability": "mutable", + "name": "withdrawalShareAmount", + "nameLocation": "865:21:19", + "nodeType": "VariableDeclaration", + "scope": 6086, + "src": "857:29:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6081, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "857:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6084, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "904:10:19", + "nodeType": "VariableDeclaration", + "scope": 6086, + "src": "896:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6083, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "896:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "813:107:19" + } + }, + { + "id": 6098, + "nodeType": "EventDefinition", + "src": "927:172:19", + "nodes": [], + "anonymous": false, + "eventSelector": "7b7d51ee23746cf6ef2078de2a5b53073226b516a1c892a1e882c581026bf4b3", + "name": "OpenLong", + "nameLocation": "933:8:19", + "parameters": { + "id": 6097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6088, + "indexed": true, + "mutability": "mutable", + "name": "trader", + "nameLocation": "967:6:19", + "nodeType": "VariableDeclaration", + "scope": 6098, + "src": "951:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "951:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6090, + "indexed": true, + "mutability": "mutable", + "name": "assetId", + "nameLocation": "999:7:19", + "nodeType": "VariableDeclaration", + "scope": 6098, + "src": "983:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6089, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "983:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6092, + "indexed": false, + "mutability": "mutable", + "name": "maturityTime", + "nameLocation": "1024:12:19", + "nodeType": "VariableDeclaration", + "scope": 6098, + "src": "1016:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6091, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1016:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6094, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "1054:10:19", + "nodeType": "VariableDeclaration", + "scope": 6098, + "src": "1046:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1046:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6096, + "indexed": false, + "mutability": "mutable", + "name": "bondAmount", + "nameLocation": "1082:10:19", + "nodeType": "VariableDeclaration", + "scope": 6098, + "src": "1074:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1074:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "941:157:19" + } + }, + { + "id": 6110, + "nodeType": "EventDefinition", + "src": "1105:173:19", + "nodes": [], + "anonymous": false, + "eventSelector": "851bac68873b7adb346bcf4bff36324c6f322b58f9f0f50c1d3a8568242ca66b", + "name": "OpenShort", + "nameLocation": "1111:9:19", + "parameters": { + "id": 6109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6100, + "indexed": true, + "mutability": "mutable", + "name": "trader", + "nameLocation": "1146:6:19", + "nodeType": "VariableDeclaration", + "scope": 6110, + "src": "1130:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6099, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1130:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6102, + "indexed": true, + "mutability": "mutable", + "name": "assetId", + "nameLocation": "1178:7:19", + "nodeType": "VariableDeclaration", + "scope": 6110, + "src": "1162:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1162:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6104, + "indexed": false, + "mutability": "mutable", + "name": "maturityTime", + "nameLocation": "1203:12:19", + "nodeType": "VariableDeclaration", + "scope": 6110, + "src": "1195:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1195:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6106, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "1233:10:19", + "nodeType": "VariableDeclaration", + "scope": 6110, + "src": "1225:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1225:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6108, + "indexed": false, + "mutability": "mutable", + "name": "bondAmount", + "nameLocation": "1261:10:19", + "nodeType": "VariableDeclaration", + "scope": 6110, + "src": "1253:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1253:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1120:157:19" + } + }, + { + "id": 6122, + "nodeType": "EventDefinition", + "src": "1284:173:19", + "nodes": [], + "anonymous": false, + "eventSelector": "e8c2c201cc00307ad7ec0d92d7ee5f89a796b4b1134d1672b08939eaf504d68c", + "name": "CloseLong", + "nameLocation": "1290:9:19", + "parameters": { + "id": 6121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6112, + "indexed": true, + "mutability": "mutable", + "name": "trader", + "nameLocation": "1325:6:19", + "nodeType": "VariableDeclaration", + "scope": 6122, + "src": "1309:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1309:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6114, + "indexed": true, + "mutability": "mutable", + "name": "assetId", + "nameLocation": "1357:7:19", + "nodeType": "VariableDeclaration", + "scope": 6122, + "src": "1341:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1341:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6116, + "indexed": false, + "mutability": "mutable", + "name": "maturityTime", + "nameLocation": "1382:12:19", + "nodeType": "VariableDeclaration", + "scope": 6122, + "src": "1374:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1374:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6118, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "1412:10:19", + "nodeType": "VariableDeclaration", + "scope": 6122, + "src": "1404:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6117, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1404:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6120, + "indexed": false, + "mutability": "mutable", + "name": "bondAmount", + "nameLocation": "1440:10:19", + "nodeType": "VariableDeclaration", + "scope": 6122, + "src": "1432:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1432:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1299:157:19" + } + }, + { + "id": 6134, + "nodeType": "EventDefinition", + "src": "1463:174:19", + "nodes": [], + "anonymous": false, + "eventSelector": "39d1403e56c69205ef368007a55ee1304b0f388631dca237a1710d04e3e8950f", + "name": "CloseShort", + "nameLocation": "1469:10:19", + "parameters": { + "id": 6133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6124, + "indexed": true, + "mutability": "mutable", + "name": "trader", + "nameLocation": "1505:6:19", + "nodeType": "VariableDeclaration", + "scope": 6134, + "src": "1489:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1489:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6126, + "indexed": true, + "mutability": "mutable", + "name": "assetId", + "nameLocation": "1537:7:19", + "nodeType": "VariableDeclaration", + "scope": 6134, + "src": "1521:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1521:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6128, + "indexed": false, + "mutability": "mutable", + "name": "maturityTime", + "nameLocation": "1562:12:19", + "nodeType": "VariableDeclaration", + "scope": 6134, + "src": "1554:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1554:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6130, + "indexed": false, + "mutability": "mutable", + "name": "baseAmount", + "nameLocation": "1592:10:19", + "nodeType": "VariableDeclaration", + "scope": 6134, + "src": "1584:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1584:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6132, + "indexed": false, + "mutability": "mutable", + "name": "bondAmount", + "nameLocation": "1620:10:19", + "nodeType": "VariableDeclaration", + "scope": 6134, + "src": "1612:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1612:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1479:157:19" + } + }, + { + "id": 6165, + "nodeType": "StructDefinition", + "src": "1664:1251:19", + "nodes": [], + "canonicalName": "IHyperdrive.MarketState", + "members": [ + { + "constant": false, + "id": 6137, + "mutability": "mutable", + "name": "shareReserves", + "nameLocation": "1745:13:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "1737:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6136, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1737:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6140, + "mutability": "mutable", + "name": "bondReserves", + "nameLocation": "1819:12:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "1811:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6139, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1811:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6143, + "mutability": "mutable", + "name": "longsOutstanding", + "nameLocation": "1907:16:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "1899:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6142, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1899:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6146, + "mutability": "mutable", + "name": "shortsOutstanding", + "nameLocation": "2000:17:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "1992:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6145, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "1992:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6149, + "mutability": "mutable", + "name": "longAverageMaturityTime", + "nameLocation": "2104:23:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "2096:31:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6148, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2096:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6152, + "mutability": "mutable", + "name": "longOpenSharePrice", + "nameLocation": "2201:18:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "2193:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6151, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2193:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6155, + "mutability": "mutable", + "name": "shortAverageMaturityTime", + "nameLocation": "2306:24:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "2298:32:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6154, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2298:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6158, + "mutability": "mutable", + "name": "shortBaseVolume", + "nameLocation": "2691:15:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "2683:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6157, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "2683:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6161, + "mutability": "mutable", + "name": "isInitialized", + "nameLocation": "2802:13:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "2797:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6160, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2797:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6164, + "mutability": "mutable", + "name": "isPaused", + "nameLocation": "2900:8:19", + "nodeType": "VariableDeclaration", + "scope": 6165, + "src": "2895:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6163, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2895:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "MarketState", + "nameLocation": "1671:11:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6175, + "nodeType": "StructDefinition", + "src": "2921:881:19", + "nodes": [], + "canonicalName": "IHyperdrive.Checkpoint", + "members": [ + { + "constant": false, + "id": 6168, + "mutability": "mutable", + "name": "sharePrice", + "nameLocation": "3215:10:19", + "nodeType": "VariableDeclaration", + "scope": 6175, + "src": "3207:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6167, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3207:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6171, + "mutability": "mutable", + "name": "longSharePrice", + "nameLocation": "3598:14:19", + "nodeType": "VariableDeclaration", + "scope": 6175, + "src": "3590:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6170, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3590:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6174, + "mutability": "mutable", + "name": "shortBaseVolume", + "nameLocation": "3780:15:19", + "nodeType": "VariableDeclaration", + "scope": 6175, + "src": "3772:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6173, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3772:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "name": "Checkpoint", + "nameLocation": "2928:10:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6182, + "nodeType": "StructDefinition", + "src": "3808:230:19", + "nodes": [], + "canonicalName": "IHyperdrive.WithdrawPool", + "members": [ + { + "constant": false, + "id": 6178, + "mutability": "mutable", + "name": "readyToWithdraw", + "nameLocation": "3926:15:19", + "nodeType": "VariableDeclaration", + "scope": 6182, + "src": "3918:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6177, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "3918:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6181, + "mutability": "mutable", + "name": "proceeds", + "nameLocation": "4023:8:19", + "nodeType": "VariableDeclaration", + "scope": 6182, + "src": "4015:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6180, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "4015:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "name": "WithdrawPool", + "nameLocation": "3815:12:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6192, + "nodeType": "StructDefinition", + "src": "4044:297:19", + "nodes": [], + "canonicalName": "IHyperdrive.Fees", + "members": [ + { + "constant": false, + "id": 6185, + "mutability": "mutable", + "name": "curve", + "nameLocation": "4143:5:19", + "nodeType": "VariableDeclaration", + "scope": 6192, + "src": "4135:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6184, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4135:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6188, + "mutability": "mutable", + "name": "flat", + "nameLocation": "4234:4:19", + "nodeType": "VariableDeclaration", + "scope": 6192, + "src": "4226:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6187, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4226:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6191, + "mutability": "mutable", + "name": "governance", + "nameLocation": "4324:10:19", + "nodeType": "VariableDeclaration", + "scope": 6192, + "src": "4316:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4316:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Fees", + "nameLocation": "4051:4:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6228, + "nodeType": "StructDefinition", + "src": "4347:962:19", + "nodes": [], + "canonicalName": "IHyperdrive.PoolConfig", + "members": [ + { + "constant": false, + "id": 6196, + "mutability": "mutable", + "name": "baseToken", + "nameLocation": "4430:9:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4423:16:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5795", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 6195, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6194, + "name": "IERC20", + "nameLocations": [ + "4423:6:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5795, + "src": "4423:6:19" + }, + "referencedDeclaration": 5795, + "src": "4423:6:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$5795", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6199, + "mutability": "mutable", + "name": "initialSharePrice", + "nameLocation": "4499:17:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4491:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6198, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4491:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6202, + "mutability": "mutable", + "name": "minimumShareReserves", + "nameLocation": "4579:20:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4571:28:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4571:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6205, + "mutability": "mutable", + "name": "positionDuration", + "nameLocation": "4680:16:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4672:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6204, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4672:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6208, + "mutability": "mutable", + "name": "checkpointDuration", + "nameLocation": "4761:18:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4753:26:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6207, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4753:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6211, + "mutability": "mutable", + "name": "timeStretch", + "nameLocation": "4873:11:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4865:19:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4865:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6214, + "mutability": "mutable", + "name": "governance", + "nameLocation": "4959:10:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "4951:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6213, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4951:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6217, + "mutability": "mutable", + "name": "feeCollector", + "nameLocation": "5047:12:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "5039:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5039:7:19", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6221, + "mutability": "mutable", + "name": "fees", + "nameLocation": "5131:4:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "5114:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$6192_storage_ptr", + "typeString": "struct IHyperdrive.Fees" + }, + "typeName": { + "id": 6220, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6219, + "name": "IHyperdrive.Fees", + "nameLocations": [ + "5114:11:19", + "5126:4:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6192, + "src": "5114:16:19" + }, + "referencedDeclaration": 6192, + "src": "5114:16:19", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Fees_$6192_storage_ptr", + "typeString": "struct IHyperdrive.Fees" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6224, + "mutability": "mutable", + "name": "oracleSize", + "nameLocation": "5207:10:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "5199:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5199:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6227, + "mutability": "mutable", + "name": "updateGap", + "nameLocation": "5293:9:19", + "nodeType": "VariableDeclaration", + "scope": 6228, + "src": "5285:17:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6226, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5285:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "PoolConfig", + "nameLocation": "4354:10:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6262, + "nodeType": "StructDefinition", + "src": "5315:1140:19", + "nodes": [], + "canonicalName": "IHyperdrive.PoolInfo", + "members": [ + { + "constant": false, + "id": 6231, + "mutability": "mutable", + "name": "shareReserves", + "nameLocation": "5407:13:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5399:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5399:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6234, + "mutability": "mutable", + "name": "bondReserves", + "nameLocation": "5495:12:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5487:20:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6233, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5487:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6237, + "mutability": "mutable", + "name": "lpTotalSupply", + "nameLocation": "5573:13:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5565:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5565:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6240, + "mutability": "mutable", + "name": "sharePrice", + "nameLocation": "5646:10:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5638:18:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5638:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6243, + "mutability": "mutable", + "name": "longsOutstanding", + "nameLocation": "5752:16:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5744:24:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5744:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6246, + "mutability": "mutable", + "name": "longAverageMaturityTime", + "nameLocation": "5855:23:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5847:31:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6245, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5847:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6249, + "mutability": "mutable", + "name": "shortsOutstanding", + "nameLocation": "5975:17:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "5967:25:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5967:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6252, + "mutability": "mutable", + "name": "shortAverageMaturityTime", + "nameLocation": "6080:24:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "6072:32:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6072:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6255, + "mutability": "mutable", + "name": "shortBaseVolume", + "nameLocation": "6198:15:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "6190:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6254, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6190:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6258, + "mutability": "mutable", + "name": "withdrawalSharesReadyToWithdraw", + "nameLocation": "6311:31:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "6303:39:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6303:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6261, + "mutability": "mutable", + "name": "withdrawalSharesProceeds", + "nameLocation": "6424:24:19", + "nodeType": "VariableDeclaration", + "scope": 6262, + "src": "6416:32:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6260, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6416:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "PoolInfo", + "nameLocation": "5322:8:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6269, + "nodeType": "StructDefinition", + "src": "6461:205:19", + "nodes": [], + "canonicalName": "IHyperdrive.OracleState", + "members": [ + { + "constant": false, + "id": 6265, + "mutability": "mutable", + "name": "head", + "nameLocation": "6562:4:19", + "nodeType": "VariableDeclaration", + "scope": 6269, + "src": "6554:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6264, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6554:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6268, + "mutability": "mutable", + "name": "lastTimestamp", + "nameLocation": "6646:13:19", + "nodeType": "VariableDeclaration", + "scope": 6269, + "src": "6638:21:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 6267, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "6638:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "name": "OracleState", + "nameLocation": "6468:11:19", + "scope": 6386, + "visibility": "public" + }, + { + "id": 6272, + "nodeType": "ErrorDefinition", + "src": "6778:39:19", + "nodes": [], + "documentation": { + "id": 6270, + "nodeType": "StructuredDocumentation", + "src": "6697:76:19", + "text": "##################\n ### Hyperdrive ###\n ##################" + }, + "errorSelector": "18846de9", + "name": "BaseBufferExceedsShareReserves", + "nameLocation": "6784:30:19", + "parameters": { + "id": 6271, + "nodeType": "ParameterList", + "parameters": [], + "src": "6814:2:19" + } + }, + { + "id": 6274, + "nodeType": "ErrorDefinition", + "src": "6822:33:19", + "nodes": [], + "errorSelector": "abed41c4", + "name": "BelowMinimumContribution", + "nameLocation": "6828:24:19", + "parameters": { + "id": 6273, + "nodeType": "ParameterList", + "parameters": [], + "src": "6852:2:19" + } + }, + { + "id": 6276, + "nodeType": "ErrorDefinition", + "src": "6860:34:19", + "nodes": [], + "errorSelector": "6101d7a4", + "name": "BelowMinimumShareReserves", + "nameLocation": "6866:25:19", + "parameters": { + "id": 6275, + "nodeType": "ParameterList", + "parameters": [], + "src": "6891:2:19" + } + }, + { + "id": 6278, + "nodeType": "ErrorDefinition", + "src": "6899:19:19", + "nodes": [], + "errorSelector": "76c22a22", + "name": "InvalidApr", + "nameLocation": "6905:10:19", + "parameters": { + "id": 6277, + "nodeType": "ParameterList", + "parameters": [], + "src": "6915:2:19" + } + }, + { + "id": 6280, + "nodeType": "ErrorDefinition", + "src": "6923:25:19", + "nodes": [], + "errorSelector": "0e442a4a", + "name": "InvalidBaseToken", + "nameLocation": "6929:16:19", + "parameters": { + "id": 6279, + "nodeType": "ParameterList", + "parameters": [], + "src": "6945:2:19" + } + }, + { + "id": 6282, + "nodeType": "ErrorDefinition", + "src": "6953:30:19", + "nodes": [], + "errorSelector": "ecd29e81", + "name": "InvalidCheckpointTime", + "nameLocation": "6959:21:19", + "parameters": { + "id": 6281, + "nodeType": "ParameterList", + "parameters": [], + "src": "6980:2:19" + } + }, + { + "id": 6284, + "nodeType": "ErrorDefinition", + "src": "6988:34:19", + "nodes": [], + "errorSelector": "5428734d", + "name": "InvalidCheckpointDuration", + "nameLocation": "6994:25:19", + "parameters": { + "id": 6283, + "nodeType": "ParameterList", + "parameters": [], + "src": "7019:2:19" + } + }, + { + "id": 6286, + "nodeType": "ErrorDefinition", + "src": "7027:33:19", + "nodes": [], + "errorSelector": "55f2a42f", + "name": "InvalidInitialSharePrice", + "nameLocation": "7033:24:19", + "parameters": { + "id": 6285, + "nodeType": "ParameterList", + "parameters": [], + "src": "7057:2:19" + } + }, + { + "id": 6288, + "nodeType": "ErrorDefinition", + "src": "7065:28:19", + "nodes": [], + "errorSelector": "987dadd3", + "name": "InvalidMaturityTime", + "nameLocation": "7071:19:19", + "parameters": { + "id": 6287, + "nodeType": "ParameterList", + "parameters": [], + "src": "7090:2:19" + } + }, + { + "id": 6290, + "nodeType": "ErrorDefinition", + "src": "7098:36:19", + "nodes": [], + "errorSelector": "49db44f5", + "name": "InvalidMinimumShareReserves", + "nameLocation": "7104:27:19", + "parameters": { + "id": 6289, + "nodeType": "ParameterList", + "parameters": [], + "src": "7131:2:19" + } + }, + { + "id": 6292, + "nodeType": "ErrorDefinition", + "src": "7139:32:19", + "nodes": [], + "errorSelector": "4a7fff9e", + "name": "InvalidPositionDuration", + "nameLocation": "7145:23:19", + "parameters": { + "id": 6291, + "nodeType": "ParameterList", + "parameters": [], + "src": "7168:2:19" + } + }, + { + "id": 6294, + "nodeType": "ErrorDefinition", + "src": "7176:29:19", + "nodes": [], + "errorSelector": "b0bfcdbe", + "name": "InvalidShareReserves", + "nameLocation": "7182:20:19", + "parameters": { + "id": 6293, + "nodeType": "ParameterList", + "parameters": [], + "src": "7202:2:19" + } + }, + { + "id": 6296, + "nodeType": "ErrorDefinition", + "src": "7210:26:19", + "nodes": [], + "errorSelector": "45ee5986", + "name": "InvalidFeeAmounts", + "nameLocation": "7216:17:19", + "parameters": { + "id": 6295, + "nodeType": "ParameterList", + "parameters": [], + "src": "7233:2:19" + } + }, + { + "id": 6298, + "nodeType": "ErrorDefinition", + "src": "7241:25:19", + "nodes": [], + "errorSelector": "512095c7", + "name": "NegativeInterest", + "nameLocation": "7247:16:19", + "parameters": { + "id": 6297, + "nodeType": "ParameterList", + "parameters": [], + "src": "7263:2:19" + } + }, + { + "id": 6300, + "nodeType": "ErrorDefinition", + "src": "7271:20:19", + "nodes": [], + "errorSelector": "c9726517", + "name": "OutputLimit", + "nameLocation": "7277:11:19", + "parameters": { + "id": 6299, + "nodeType": "ParameterList", + "parameters": [], + "src": "7288:2:19" + } + }, + { + "id": 6302, + "nodeType": "ErrorDefinition", + "src": "7296:15:19", + "nodes": [], + "errorSelector": "9e87fac8", + "name": "Paused", + "nameLocation": "7302:6:19", + "parameters": { + "id": 6301, + "nodeType": "ParameterList", + "parameters": [], + "src": "7308:2:19" + } + }, + { + "id": 6304, + "nodeType": "ErrorDefinition", + "src": "7316:31:19", + "nodes": [], + "errorSelector": "7983c051", + "name": "PoolAlreadyInitialized", + "nameLocation": "7322:22:19", + "parameters": { + "id": 6303, + "nodeType": "ParameterList", + "parameters": [], + "src": "7344:2:19" + } + }, + { + "id": 6306, + "nodeType": "ErrorDefinition", + "src": "7352:23:19", + "nodes": [], + "errorSelector": "90b8ec18", + "name": "TransferFailed", + "nameLocation": "7358:14:19", + "parameters": { + "id": 6305, + "nodeType": "ParameterList", + "parameters": [], + "src": "7372:2:19" + } + }, + { + "id": 6308, + "nodeType": "ErrorDefinition", + "src": "7380:26:19", + "nodes": [], + "errorSelector": "e9bf5433", + "name": "UnexpectedAssetId", + "nameLocation": "7386:17:19", + "parameters": { + "id": 6307, + "nodeType": "ParameterList", + "parameters": [], + "src": "7403:2:19" + } + }, + { + "id": 6310, + "nodeType": "ErrorDefinition", + "src": "7411:25:19", + "nodes": [], + "errorSelector": "f2fb3812", + "name": "UnexpectedSender", + "nameLocation": "7417:16:19", + "parameters": { + "id": 6309, + "nodeType": "ParameterList", + "parameters": [], + "src": "7433:2:19" + } + }, + { + "id": 6312, + "nodeType": "ErrorDefinition", + "src": "7441:25:19", + "nodes": [], + "errorSelector": "6a172882", + "name": "UnsupportedToken", + "nameLocation": "7447:16:19", + "parameters": { + "id": 6311, + "nodeType": "ParameterList", + "parameters": [], + "src": "7463:2:19" + } + }, + { + "id": 6314, + "nodeType": "ErrorDefinition", + "src": "7471:23:19", + "nodes": [], + "errorSelector": "8164f842", + "name": "ApprovalFailed", + "nameLocation": "7477:14:19", + "parameters": { + "id": 6313, + "nodeType": "ParameterList", + "parameters": [], + "src": "7491:2:19" + } + }, + { + "id": 6316, + "nodeType": "ErrorDefinition", + "src": "7499:19:19", + "nodes": [], + "errorSelector": "1f2a2005", + "name": "ZeroAmount", + "nameLocation": "7505:10:19", + "parameters": { + "id": 6315, + "nodeType": "ParameterList", + "parameters": [], + "src": "7515:2:19" + } + }, + { + "id": 6318, + "nodeType": "ErrorDefinition", + "src": "7523:26:19", + "nodes": [], + "errorSelector": "252c3a3e", + "name": "ZeroLpTotalSupply", + "nameLocation": "7529:17:19", + "parameters": { + "id": 6317, + "nodeType": "ParameterList", + "parameters": [], + "src": "7546:2:19" + } + }, + { + "id": 6320, + "nodeType": "ErrorDefinition", + "src": "7554:27:19", + "nodes": [], + "errorSelector": "bb464a5e", + "name": "NoAssetsToWithdraw", + "nameLocation": "7560:18:19", + "parameters": { + "id": 6319, + "nodeType": "ParameterList", + "parameters": [], + "src": "7578:2:19" + } + }, + { + "id": 6322, + "nodeType": "ErrorDefinition", + "src": "7586:19:19", + "nodes": [], + "errorSelector": "1574f9f3", + "name": "NotPayable", + "nameLocation": "7592:10:19", + "parameters": { + "id": 6321, + "nodeType": "ParameterList", + "parameters": [], + "src": "7602:2:19" + } + }, + { + "id": 6325, + "nodeType": "ErrorDefinition", + "src": "7674:24:19", + "nodes": [], + "documentation": { + "id": 6323, + "nodeType": "StructuredDocumentation", + "src": "7611:58:19", + "text": "############\n ### TWAP ###\n ############" + }, + "errorSelector": "a89817b0", + "name": "QueryOutOfRange", + "nameLocation": "7680:15:19", + "parameters": { + "id": 6324, + "nodeType": "ParameterList", + "parameters": [], + "src": "7695:2:19" + } + }, + { + "id": 6330, + "nodeType": "ErrorDefinition", + "src": "7791:29:19", + "nodes": [], + "documentation": { + "id": 6326, + "nodeType": "StructuredDocumentation", + "src": "7704:82:19", + "text": "####################\n ### DataProvider ###\n ####################" + }, + "errorSelector": "dcc81126", + "name": "ReturnData", + "nameLocation": "7797:10:19", + "parameters": { + "id": 6329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6328, + "mutability": "mutable", + "name": "data", + "nameLocation": "7814:4:19", + "nodeType": "VariableDeclaration", + "scope": 6330, + "src": "7808:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7808:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7807:12:19" + } + }, + { + "id": 6334, + "nodeType": "ErrorDefinition", + "src": "7825:41:19", + "nodes": [], + "errorSelector": "efa64d4b", + "name": "CallFailed", + "nameLocation": "7831:10:19", + "parameters": { + "id": 6333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6332, + "mutability": "mutable", + "name": "underlyingError", + "nameLocation": "7849:15:19", + "nodeType": "VariableDeclaration", + "scope": 6334, + "src": "7842:22:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6331, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7842:6:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "7841:24:19" + } + }, + { + "id": 6336, + "nodeType": "ErrorDefinition", + "src": "7871:26:19", + "nodes": [], + "errorSelector": "8bb0a34b", + "name": "UnexpectedSuccess", + "nameLocation": "7877:17:19", + "parameters": { + "id": 6335, + "nodeType": "ParameterList", + "parameters": [], + "src": "7894:2:19" + } + }, + { + "id": 6339, + "nodeType": "ErrorDefinition", + "src": "7975:21:19", + "nodes": [], + "documentation": { + "id": 6337, + "nodeType": "StructuredDocumentation", + "src": "7903:67:19", + "text": "###############\n ### Factory ###\n ###############" + }, + "errorSelector": "82b42900", + "name": "Unauthorized", + "nameLocation": "7981:12:19", + "parameters": { + "id": 6338, + "nodeType": "ParameterList", + "parameters": [], + "src": "7993:2:19" + } + }, + { + "id": 6341, + "nodeType": "ErrorDefinition", + "src": "8001:28:19", + "nodes": [], + "errorSelector": "652122d9", + "name": "InvalidContribution", + "nameLocation": "8007:19:19", + "parameters": { + "id": 6340, + "nodeType": "ParameterList", + "parameters": [], + "src": "8026:2:19" + } + }, + { + "id": 6343, + "nodeType": "ErrorDefinition", + "src": "8034:21:19", + "nodes": [], + "errorSelector": "c1ab6dc1", + "name": "InvalidToken", + "nameLocation": "8040:12:19", + "parameters": { + "id": 6342, + "nodeType": "ParameterList", + "parameters": [], + "src": "8052:2:19" + } + }, + { + "id": 6345, + "nodeType": "ErrorDefinition", + "src": "8060:22:19", + "nodes": [], + "errorSelector": "a3932d2d", + "name": "MaxFeeTooHigh", + "nameLocation": "8066:13:19", + "parameters": { + "id": 6344, + "nodeType": "ParameterList", + "parameters": [], + "src": "8079:2:19" + } + }, + { + "id": 6347, + "nodeType": "ErrorDefinition", + "src": "8087:19:19", + "nodes": [], + "errorSelector": "cd4e6167", + "name": "FeeTooHigh", + "nameLocation": "8093:10:19", + "parameters": { + "id": 6346, + "nodeType": "ParameterList", + "parameters": [], + "src": "8103:2:19" + } + }, + { + "id": 6349, + "nodeType": "ErrorDefinition", + "src": "8111:33:19", + "nodes": [], + "errorSelector": "8fbc3bd9", + "name": "NonPayableInitialization", + "nameLocation": "8117:24:19", + "parameters": { + "id": 6348, + "nodeType": "ParameterList", + "parameters": [], + "src": "8141:2:19" + } + }, + { + "id": 6352, + "nodeType": "ErrorDefinition", + "src": "8243:33:19", + "nodes": [], + "documentation": { + "id": 6350, + "nodeType": "StructuredDocumentation", + "src": "8150:88:19", + "text": "######################\n ### ERC20Forwarder ###\n ######################" + }, + "errorSelector": "ba430d38", + "name": "BatchInputLengthMismatch", + "nameLocation": "8249:24:19", + "parameters": { + "id": 6351, + "nodeType": "ParameterList", + "parameters": [], + "src": "8273:2:19" + } + }, + { + "id": 6354, + "nodeType": "ErrorDefinition", + "src": "8281:24:19", + "nodes": [], + "errorSelector": "f87d9271", + "name": "ExpiredDeadline", + "nameLocation": "8287:15:19", + "parameters": { + "id": 6353, + "nodeType": "ParameterList", + "parameters": [], + "src": "8302:2:19" + } + }, + { + "id": 6356, + "nodeType": "ErrorDefinition", + "src": "8310:25:19", + "nodes": [], + "errorSelector": "8baa579f", + "name": "InvalidSignature", + "nameLocation": "8316:16:19", + "parameters": { + "id": 6355, + "nodeType": "ParameterList", + "parameters": [], + "src": "8332:2:19" + } + }, + { + "id": 6358, + "nodeType": "ErrorDefinition", + "src": "8340:27:19", + "nodes": [], + "errorSelector": "2aab8bd3", + "name": "InvalidERC20Bridge", + "nameLocation": "8346:18:19", + "parameters": { + "id": 6357, + "nodeType": "ParameterList", + "parameters": [], + "src": "8364:2:19" + } + }, + { + "id": 6360, + "nodeType": "ErrorDefinition", + "src": "8372:30:19", + "nodes": [], + "errorSelector": "f0dd15fd", + "name": "RestrictedZeroAddress", + "nameLocation": "8378:21:19", + "parameters": { + "id": 6359, + "nodeType": "ParameterList", + "parameters": [], + "src": "8399:2:19" + } + }, + { + "id": 6363, + "nodeType": "ErrorDefinition", + "src": "8496:22:19", + "nodes": [], + "documentation": { + "id": 6361, + "nodeType": "StructuredDocumentation", + "src": "8408:83:19", + "text": "#####################\n ### BondWrapper ###\n #####################" + }, + "errorSelector": "9acb7e52", + "name": "AlreadyClosed", + "nameLocation": "8502:13:19", + "parameters": { + "id": 6362, + "nodeType": "ParameterList", + "parameters": [], + "src": "8515:2:19" + } + }, + { + "id": 6365, + "nodeType": "ErrorDefinition", + "src": "8523:20:19", + "nodes": [], + "errorSelector": "3f8e46bc", + "name": "BondMatured", + "nameLocation": "8529:11:19", + "parameters": { + "id": 6364, + "nodeType": "ParameterList", + "parameters": [], + "src": "8540:2:19" + } + }, + { + "id": 6367, + "nodeType": "ErrorDefinition", + "src": "8548:23:19", + "nodes": [], + "errorSelector": "915eceb1", + "name": "BondNotMatured", + "nameLocation": "8554:14:19", + "parameters": { + "id": 6366, + "nodeType": "ParameterList", + "parameters": [], + "src": "8568:2:19" + } + }, + { + "id": 6369, + "nodeType": "ErrorDefinition", + "src": "8576:26:19", + "nodes": [], + "errorSelector": "d5481703", + "name": "InsufficientPrice", + "nameLocation": "8582:17:19", + "parameters": { + "id": 6368, + "nodeType": "ParameterList", + "parameters": [], + "src": "8599:2:19" + } + }, + { + "id": 6371, + "nodeType": "ErrorDefinition", + "src": "8607:27:19", + "nodes": [], + "errorSelector": "4a0dabae", + "name": "MintPercentTooHigh", + "nameLocation": "8613:18:19", + "parameters": { + "id": 6370, + "nodeType": "ParameterList", + "parameters": [], + "src": "8631:2:19" + } + }, + { + "id": 6374, + "nodeType": "ErrorDefinition", + "src": "8712:25:19", + "nodes": [], + "documentation": { + "id": 6372, + "nodeType": "StructuredDocumentation", + "src": "8640:67:19", + "text": "###############\n ### AssetId ###\n ###############" + }, + "errorSelector": "b7d09497", + "name": "InvalidTimestamp", + "nameLocation": "8718:16:19", + "parameters": { + "id": 6373, + "nodeType": "ParameterList", + "parameters": [], + "src": "8734:2:19" + } + }, + { + "id": 6377, + "nodeType": "ErrorDefinition", + "src": "8836:35:19", + "nodes": [], + "documentation": { + "id": 6375, + "nodeType": "StructuredDocumentation", + "src": "8743:88:19", + "text": "######################\n ### FixedPointMath ###\n ######################" + }, + "errorSelector": "2d59cfbd", + "name": "FixedPointMath_AddOverflow", + "nameLocation": "8842:26:19", + "parameters": { + "id": 6376, + "nodeType": "ParameterList", + "parameters": [], + "src": "8868:2:19" + } + }, + { + "id": 6379, + "nodeType": "ErrorDefinition", + "src": "8876:35:19", + "nodes": [], + "errorSelector": "35ba1440", + "name": "FixedPointMath_SubOverflow", + "nameLocation": "8882:26:19", + "parameters": { + "id": 6378, + "nodeType": "ParameterList", + "parameters": [], + "src": "8908:2:19" + } + }, + { + "id": 6381, + "nodeType": "ErrorDefinition", + "src": "8916:39:19", + "nodes": [], + "errorSelector": "df92cc9d", + "name": "FixedPointMath_InvalidExponent", + "nameLocation": "8922:30:19", + "parameters": { + "id": 6380, + "nodeType": "ParameterList", + "parameters": [], + "src": "8952:2:19" + } + }, + { + "id": 6383, + "nodeType": "ErrorDefinition", + "src": "8960:43:19", + "nodes": [], + "errorSelector": "ac5f1b8e", + "name": "FixedPointMath_NegativeOrZeroInput", + "nameLocation": "8966:34:19", + "parameters": { + "id": 6382, + "nodeType": "ParameterList", + "parameters": [], + "src": "9000:2:19" + } + }, + { + "id": 6385, + "nodeType": "ErrorDefinition", + "src": "9008:37:19", + "nodes": [], + "errorSelector": "2c7949f5", + "name": "FixedPointMath_NegativeInput", + "nameLocation": "9014:28:19", + "parameters": { + "id": 6384, + "nodeType": "ParameterList", + "parameters": [], + "src": "9042:2:19" + } + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 6044, + "name": "IHyperdriveRead", + "nameLocations": [ + "294:15:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6470, + "src": "294:15:19" + }, + "id": 6045, + "nodeType": "InheritanceSpecifier", + "src": "294:15:19" + }, + { + "baseName": { + "id": 6046, + "name": "IHyperdriveWrite", + "nameLocations": [ + "311:16:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6617, + "src": "311:16:19" + }, + "id": 6047, + "nodeType": "InheritanceSpecifier", + "src": "311:16:19" + }, + { + "baseName": { + "id": 6048, + "name": "IMultiToken", + "nameLocations": [ + "329:11:19" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6739, + "src": "329:11:19" + }, + "id": 6049, + "nodeType": "InheritanceSpecifier", + "src": "329:11:19" + } + ], + "canonicalName": "IHyperdrive", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "linearizedBaseContracts": [ + 6386, + 6739, + 6747, + 6617, + 6929, + 6470, + 6817 + ], + "name": "IHyperdrive", + "nameLocation": "279:11:19", + "scope": 6387, + "usedErrors": [ + 6272, + 6274, + 6276, + 6278, + 6280, + 6282, + 6284, + 6286, + 6288, + 6290, + 6292, + 6294, + 6296, + 6298, + 6300, + 6302, + 6304, + 6306, + 6308, + 6310, + 6312, + 6314, + 6316, + 6318, + 6320, + 6322, + 6325, + 6330, + 6334, + 6336, + 6339, + 6341, + 6343, + 6345, + 6347, + 6349, + 6352, + 6354, + 6356, + 6358, + 6360, + 6363, + 6365, + 6367, + 6369, + 6371, + 6374, + 6377, + 6379, + 6381, + 6383, + 6385 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 19 +} \ No newline at end of file