mirror of
https://github.com/Instadapp/fluid-contracts-public.git
synced 2024-07-29 21:57:37 +00:00
d7a58e88ff
ARB: deploy protocols
203 lines
58 KiB
JSON
203 lines
58 KiB
JSON
{
|
|
"address": "0x99e83869417bDEa4E526Af50430e5082aB386bEB",
|
|
"abi": [
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "contract IFluidVaultResolver",
|
|
"name": "vaultResolver_",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "contract IFluidVaultFactory",
|
|
"name": "vaultFactory_",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "nonpayable",
|
|
"type": "constructor"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "FluidVaultPositionsResolver__AddressZero",
|
|
"type": "error"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "FACTORY",
|
|
"outputs": [
|
|
{
|
|
"internalType": "contract IFluidVaultFactory",
|
|
"name": "",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [],
|
|
"name": "VAULT_RESOLVER",
|
|
"outputs": [
|
|
{
|
|
"internalType": "contract IFluidVaultResolver",
|
|
"name": "",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "vault_",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "getAllVaultNftIds",
|
|
"outputs": [
|
|
{
|
|
"internalType": "uint256[]",
|
|
"name": "nftIds_",
|
|
"type": "uint256[]"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "address",
|
|
"name": "vault_",
|
|
"type": "address"
|
|
}
|
|
],
|
|
"name": "getAllVaultPositions",
|
|
"outputs": [
|
|
{
|
|
"components": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "nftId",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "owner",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "supply",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "borrow",
|
|
"type": "uint256"
|
|
}
|
|
],
|
|
"internalType": "struct Structs.UserPosition[]",
|
|
"name": "positions_",
|
|
"type": "tuple[]"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"inputs": [
|
|
{
|
|
"internalType": "uint256[]",
|
|
"name": "nftIds_",
|
|
"type": "uint256[]"
|
|
}
|
|
],
|
|
"name": "getPositionsForNftIds",
|
|
"outputs": [
|
|
{
|
|
"components": [
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "nftId",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "address",
|
|
"name": "owner",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "supply",
|
|
"type": "uint256"
|
|
},
|
|
{
|
|
"internalType": "uint256",
|
|
"name": "borrow",
|
|
"type": "uint256"
|
|
}
|
|
],
|
|
"internalType": "struct Structs.UserPosition[]",
|
|
"name": "positions_",
|
|
"type": "tuple[]"
|
|
}
|
|
],
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"transactionHash": "0x620d1e26f50e732b4f7bfc4a8b95d79a5d3f373cc1b7514b6189b256eee8558a",
|
|
"receipt": {
|
|
"to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
|
|
"from": "0x0Ed35B1609Ec45c7079E80d11149a52717e4859A",
|
|
"contractAddress": null,
|
|
"transactionIndex": 59,
|
|
"gasUsed": "1082308",
|
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
"blockHash": "0x7eac404d97b6eecd5baae8652c39ddf438d6fd5a3cfbd2c97d6ea1d575680be5",
|
|
"transactionHash": "0x620d1e26f50e732b4f7bfc4a8b95d79a5d3f373cc1b7514b6189b256eee8558a",
|
|
"logs": [],
|
|
"blockNumber": 19396750,
|
|
"cumulativeGasUsed": "7412142",
|
|
"status": 1,
|
|
"byzantium": true
|
|
},
|
|
"args": [
|
|
"0x8DD65DaDb217f73A94Efb903EB2dc7B49D97ECca",
|
|
"0x324c5Dc1fC42c7a4D43d92df1eBA58a54d13Bf2d"
|
|
],
|
|
"numDeployments": 1,
|
|
"solcInputHash": "4776568ac4455d56dee327975606836b",
|
|
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IFluidVaultResolver\",\"name\":\"vaultResolver_\",\"type\":\"address\"},{\"internalType\":\"contract IFluidVaultFactory\",\"name\":\"vaultFactory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FluidVaultPositionsResolver__AddressZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"contract IFluidVaultFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT_RESOLVER\",\"outputs\":[{\"internalType\":\"contract IFluidVaultResolver\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"}],\"name\":\"getAllVaultNftIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nftIds_\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault_\",\"type\":\"address\"}],\"name\":\"getAllVaultPositions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nftId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrow\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.UserPosition[]\",\"name\":\"positions_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nftIds_\",\"type\":\"uint256[]\"}],\"name\":\"getPositionsForNftIds\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nftId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrow\",\"type\":\"uint256\"}],\"internalType\":\"struct Structs.UserPosition[]\",\"name\":\"positions_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"FluidVaultPositionsResolver__AddressZero()\":[{\"notice\":\"thrown if an input param address is zero\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"constructor sets the immutable vault resolver and vault factory address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/resolvers/vaultPositions/main.sol\":\"FluidVaultPositionsResolver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes calldata data\\n ) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(\\n address from,\\n address to,\\n uint256 tokenId\\n ) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool _approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Enumerable is IERC721 {\\n /**\\n * @dev Returns the total amount of tokens stored by the contract.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\\n */\\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\\n\\n /**\\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\\n * Use along with {totalSupply} to enumerate all tokens.\\n */\\n function tokenByIndex(uint256 index) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"contracts/liquidity/adminModule/structs.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nabstract contract Structs {\\n struct AddressBool {\\n address addr;\\n bool value;\\n }\\n\\n struct AddressUint256 {\\n address addr;\\n uint256 value;\\n }\\n\\n /// @notice struct to set borrow rate data for version 1\\n struct RateDataV1Params {\\n ///\\n /// @param token for rate data\\n address token;\\n ///\\n /// @param kink in borrow rate. in 1e2: 100% = 10_000; 1% = 100\\n /// utilization below kink usually means slow increase in rate, once utilization is above kink borrow rate increases fast\\n uint256 kink;\\n ///\\n /// @param rateAtUtilizationZero desired borrow rate when utilization is zero. in 1e2: 100% = 10_000; 1% = 100\\n /// i.e. constant minimum borrow rate\\n /// e.g. at utilization = 0.01% rate could still be at least 4% (rateAtUtilizationZero would be 400 then)\\n uint256 rateAtUtilizationZero;\\n ///\\n /// @param rateAtUtilizationKink borrow rate when utilization is at kink. in 1e2: 100% = 10_000; 1% = 100\\n /// e.g. when rate should be 7% at kink then rateAtUtilizationKink would be 700\\n uint256 rateAtUtilizationKink;\\n ///\\n /// @param rateAtUtilizationMax borrow rate when utilization is maximum at 100%. in 1e2: 100% = 10_000; 1% = 100\\n /// e.g. when rate should be 125% at 100% then rateAtUtilizationMax would be 12_500\\n uint256 rateAtUtilizationMax;\\n }\\n\\n /// @notice struct to set borrow rate data for version 2\\n struct RateDataV2Params {\\n ///\\n /// @param token for rate data\\n address token;\\n ///\\n /// @param kink1 first kink in borrow rate. in 1e2: 100% = 10_000; 1% = 100\\n /// utilization below kink 1 usually means slow increase in rate, once utilization is above kink 1 borrow rate increases faster\\n uint256 kink1;\\n ///\\n /// @param kink2 second kink in borrow rate. in 1e2: 100% = 10_000; 1% = 100\\n /// utilization below kink 2 usually means slow / medium increase in rate, once utilization is above kink 2 borrow rate increases fast\\n uint256 kink2;\\n ///\\n /// @param rateAtUtilizationZero desired borrow rate when utilization is zero. in 1e2: 100% = 10_000; 1% = 100\\n /// i.e. constant minimum borrow rate\\n /// e.g. at utilization = 0.01% rate could still be at least 4% (rateAtUtilizationZero would be 400 then)\\n uint256 rateAtUtilizationZero;\\n ///\\n /// @param rateAtUtilizationKink1 desired borrow rate when utilization is at first kink. in 1e2: 100% = 10_000; 1% = 100\\n /// e.g. when rate should be 7% at first kink then rateAtUtilizationKink would be 700\\n uint256 rateAtUtilizationKink1;\\n ///\\n /// @param rateAtUtilizationKink2 desired borrow rate when utilization is at second kink. in 1e2: 100% = 10_000; 1% = 100\\n /// e.g. when rate should be 7% at second kink then rateAtUtilizationKink would be 1_200\\n uint256 rateAtUtilizationKink2;\\n ///\\n /// @param rateAtUtilizationMax desired borrow rate when utilization is maximum at 100%. in 1e2: 100% = 10_000; 1% = 100\\n /// e.g. when rate should be 125% at 100% then rateAtUtilizationMax would be 12_500\\n uint256 rateAtUtilizationMax;\\n }\\n\\n /// @notice struct to set token config\\n struct TokenConfig {\\n ///\\n /// @param token address\\n address token;\\n ///\\n /// @param fee charges on borrower's interest. in 1e2: 100% = 10_000; 1% = 100\\n uint256 fee;\\n ///\\n /// @param threshold on when to update the storage slot. in 1e2: 100% = 10_000; 1% = 100\\n uint256 threshold;\\n }\\n\\n /// @notice struct to set user supply & withdrawal config\\n struct UserSupplyConfig {\\n ///\\n /// @param user address\\n address user;\\n ///\\n /// @param token address\\n address token;\\n ///\\n /// @param mode: 0 = without interest. 1 = with interest\\n uint8 mode;\\n ///\\n /// @param expandPercent withdrawal limit expand percent. in 1e2: 100% = 10_000; 1% = 100\\n /// Also used to calculate rate at which withdrawal limit should decrease (instant).\\n uint256 expandPercent;\\n ///\\n /// @param expandDuration withdrawal limit expand duration in seconds.\\n /// used to calculate rate together with expandPercent\\n uint256 expandDuration;\\n ///\\n /// @param baseWithdrawalLimit base limit, below this, user can withdraw the entire amount.\\n /// amount in raw (to be multiplied with exchange price) or normal depends on configured mode in user config for the token:\\n /// with interest -> raw, without interest -> normal\\n uint256 baseWithdrawalLimit;\\n }\\n\\n /// @notice struct to set user borrow & payback config\\n struct UserBorrowConfig {\\n ///\\n /// @param user address\\n address user;\\n ///\\n /// @param token address\\n address token;\\n ///\\n /// @param mode: 0 = without interest. 1 = with interest\\n uint8 mode;\\n ///\\n /// @param expandPercent debt limit expand percent. in 1e2: 100% = 10_000; 1% = 100\\n /// Also used to calculate rate at which debt limit should decrease (instant).\\n uint256 expandPercent;\\n ///\\n /// @param expandDuration debt limit expand duration in seconds.\\n /// used to calculate rate together with expandPercent\\n uint256 expandDuration;\\n ///\\n /// @param baseDebtCeiling base borrow limit. until here, borrow limit remains as baseDebtCeiling\\n /// (user can borrow until this point at once without stepped expansion). Above this, automated limit comes in place.\\n /// amount in raw (to be multiplied with exchange price) or normal depends on configured mode in user config for the token:\\n /// with interest -> raw, without interest -> normal\\n uint256 baseDebtCeiling;\\n ///\\n /// @param maxDebtCeiling max borrow ceiling, maximum amount the user can borrow.\\n /// amount in raw (to be multiplied with exchange price) or normal depends on configured mode in user config for the token:\\n /// with interest -> raw, without interest -> normal\\n uint256 maxDebtCeiling;\\n }\\n}\\n\",\"keccak256\":\"0xcacc14afd7880d3179d0089d65dad6714c377df4801a9ad79a499d0d079124c0\",\"license\":\"BUSL-1.1\"},\"contracts/periphery/resolvers/liquidity/structs.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { Structs as AdminModuleStructs } from \\\"../../../liquidity/adminModule/structs.sol\\\";\\n\\nabstract contract Structs {\\n struct RateData {\\n uint256 version;\\n AdminModuleStructs.RateDataV1Params rateDataV1;\\n AdminModuleStructs.RateDataV2Params rateDataV2;\\n }\\n\\n struct OverallTokenData {\\n uint256 borrowRate;\\n uint256 supplyRate;\\n uint256 fee; // revenue fee\\n uint256 lastStoredUtilization;\\n uint256 storageUpdateThreshold;\\n uint256 lastUpdateTimestamp;\\n uint256 supplyExchangePrice;\\n uint256 borrowExchangePrice;\\n uint256 supplyRawInterest;\\n uint256 supplyInterestFree;\\n uint256 borrowRawInterest;\\n uint256 borrowInterestFree;\\n uint256 totalSupply;\\n uint256 totalBorrow;\\n uint256 revenue;\\n RateData rateData;\\n }\\n\\n // amounts are always in normal (for withInterest already multiplied with exchange price)\\n struct UserSupplyData {\\n bool modeWithInterest; // true if mode = with interest, false = without interest\\n uint256 supply; // user supply amount\\n // the withdrawal limit (e.g. if 10% is the limit, and 100M is supplied, it would be 90M)\\n uint256 withdrawalLimit;\\n uint256 lastUpdateTimestamp;\\n uint256 expandPercent; // withdrawal limit expand percent in 1e2\\n uint256 expandDuration; // withdrawal limit expand duration in seconds\\n uint256 baseWithdrawalLimit;\\n // the current actual max withdrawable amount (e.g. if 10% is the limit, and 100M is supplied, it would be 10M)\\n uint256 withdrawableUntilLimit;\\n uint256 withdrawable; // actual currently withdrawable amount (supply - withdrawal Limit) & considering balance\\n }\\n\\n // amounts are always in normal (for withInterest already multiplied with exchange price)\\n struct UserBorrowData {\\n bool modeWithInterest; // true if mode = with interest, false = without interest\\n uint256 borrow; // user borrow amount\\n uint256 borrowLimit;\\n uint256 lastUpdateTimestamp;\\n uint256 expandPercent;\\n uint256 expandDuration;\\n uint256 baseBorrowLimit;\\n uint256 maxBorrowLimit;\\n uint256 borrowableUntilLimit;\\n uint256 borrowable; // actual currently borrowable amount (borrow limit - already borrowed) & considering balance\\n }\\n}\\n\",\"keccak256\":\"0x4a935db0fd6fee3a9a9456b0655953ee03158a975ef77faa5d390e4066f1ee89\",\"license\":\"BUSL-1.1\"},\"contracts/periphery/resolvers/vault/iVaultResolver.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity 0.8.21;\\n\\nimport { Structs } from \\\"./structs.sol\\\";\\n\\ninterface IFluidVaultResolver {\\n function vaultByNftId(uint nftId_) external view returns (address vault_);\\n\\n function positionByNftId(\\n uint nftId_\\n ) external view returns (Structs.UserPosition memory userPosition_, Structs.VaultEntireData memory vaultData_);\\n\\n function getVaultVariablesRaw(address vault_) external view returns (uint);\\n}\\n\",\"keccak256\":\"0x5d7d5f390f42529419dc4d041a40d939803669b5610d77b21eaa066b6f7cb7f6\",\"license\":\"MIT\"},\"contracts/periphery/resolvers/vault/structs.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { IFluidVaultT1 } from \\\"../../../protocols/vault/interfaces/iVaultT1.sol\\\";\\nimport { Structs as FluidLiquidityResolverStructs } from \\\"../liquidity/structs.sol\\\";\\n\\ncontract Structs {\\n struct Configs {\\n uint16 supplyRateMagnifier;\\n uint16 borrowRateMagnifier;\\n uint16 collateralFactor;\\n uint16 liquidationThreshold;\\n uint16 liquidationMaxLimit;\\n uint16 withdrawalGap;\\n uint16 liquidationPenalty;\\n uint16 borrowFee;\\n address oracle;\\n uint oraclePrice;\\n address rebalancer;\\n }\\n\\n struct ExchangePricesAndRates {\\n uint lastStoredLiquiditySupplyExchangePrice;\\n uint lastStoredLiquidityBorrowExchangePrice;\\n uint lastStoredVaultSupplyExchangePrice;\\n uint lastStoredVaultBorrowExchangePrice;\\n uint liquiditySupplyExchangePrice;\\n uint liquidityBorrowExchangePrice;\\n uint vaultSupplyExchangePrice;\\n uint vaultBorrowExchangePrice;\\n uint supplyRateVault;\\n uint borrowRateVault;\\n uint supplyRateLiquidity;\\n uint borrowRateLiquidity;\\n uint rewardsRate; // rewards rate in percent 1e2 precision (1% = 100, 100% = 10000)\\n }\\n\\n struct TotalSupplyAndBorrow {\\n uint totalSupplyVault;\\n uint totalBorrowVault;\\n uint totalSupplyLiquidity;\\n uint totalBorrowLiquidity;\\n uint absorbedSupply;\\n uint absorbedBorrow;\\n }\\n\\n struct LimitsAndAvailability {\\n uint withdrawLimit;\\n uint withdrawableUntilLimit;\\n uint withdrawable;\\n uint borrowLimit;\\n uint borrowableUntilLimit;\\n uint borrowable;\\n uint minimumBorrowing;\\n }\\n\\n struct CurrentBranchState {\\n uint status; // if 0 then not liquidated, if 1 then liquidated, if 2 then merged, if 3 then closed\\n int minimaTick;\\n uint debtFactor;\\n uint partials;\\n uint debtLiquidity;\\n uint baseBranchId;\\n int baseBranchMinima;\\n }\\n\\n struct VaultState {\\n uint totalPositions;\\n int topTick;\\n uint currentBranch;\\n uint totalBranch;\\n uint totalBorrow;\\n uint totalSupply;\\n CurrentBranchState currentBranchState;\\n }\\n\\n struct VaultEntireData {\\n address vault;\\n IFluidVaultT1.ConstantViews constantVariables;\\n Configs configs;\\n ExchangePricesAndRates exchangePricesAndRates;\\n TotalSupplyAndBorrow totalSupplyAndBorrow;\\n LimitsAndAvailability limitsAndAvailability;\\n VaultState vaultState;\\n // liquidity related data such as supply amount, limits, expansion etc.\\n FluidLiquidityResolverStructs.UserSupplyData liquidityUserSupplyData;\\n // liquidity related data such as borrow amount, limits, expansion etc.\\n FluidLiquidityResolverStructs.UserBorrowData liquidityUserBorrowData;\\n }\\n\\n struct UserPosition {\\n uint nftId;\\n address owner;\\n bool isLiquidated;\\n bool isSupplyPosition; // if true that means borrowing is 0\\n int tick;\\n uint tickId;\\n uint beforeSupply;\\n uint beforeBorrow;\\n uint beforeDustBorrow;\\n uint supply;\\n uint borrow;\\n uint dustBorrow;\\n }\\n\\n /// @dev liquidation related data\\n /// @param vault address of vault\\n /// @param tokenIn_ address of token in\\n /// @param tokenOut_ address of token out\\n /// @param tokenInAmtOne_ (without absorb liquidity) minimum of available liquidation & tokenInAmt_\\n /// @param tokenOutAmtOne_ (without absorb liquidity) expected token out, collateral to withdraw\\n /// @param tokenInAmtTwo_ (absorb liquidity included) minimum of available liquidation & tokenInAmt_. In most cases it'll be same as tokenInAmtOne_ but sometimes can be bigger.\\n /// @param tokenOutAmtTwo_ (absorb liquidity included) expected token out, collateral to withdraw. In most cases it'll be same as tokenOutAmtOne_ but sometimes can be bigger.\\n /// @dev sometimes Liquidity in Two will always be >= One. Sometimes One can provide better swaps, sometimes Two can provide better swaps. But as mentioned availability in Two will always be >= One\\n struct LiquidationStruct {\\n address vault;\\n address tokenIn;\\n address tokenOut;\\n uint tokenInAmtOne;\\n uint tokenOutAmtOne;\\n uint tokenInAmtTwo;\\n uint tokenOutAmtTwo;\\n }\\n}\\n\",\"keccak256\":\"0x37d563fe6ce2de0f1387fff431c9ffb9a46d575a337413e698e15d85eaf998e8\",\"license\":\"BUSL-1.1\"},\"contracts/periphery/resolvers/vaultPositions/main.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { Variables } from \\\"./variables.sol\\\";\\nimport { Structs } from \\\"./structs.sol\\\";\\nimport { IFluidVaultFactory } from \\\"../../../protocols/vault/interfaces/iVaultFactory.sol\\\";\\nimport { Structs as VaultResolverStructs } from \\\"../vault/structs.sol\\\";\\nimport { IFluidVaultResolver } from \\\"../vault/iVaultResolver.sol\\\";\\n\\ncontract FluidVaultPositionsResolver is Variables, Structs {\\n /// @notice thrown if an input param address is zero\\n error FluidVaultPositionsResolver__AddressZero();\\n\\n /// @notice constructor sets the immutable vault resolver and vault factory address\\n constructor(\\n IFluidVaultResolver vaultResolver_,\\n IFluidVaultFactory vaultFactory_\\n ) Variables(vaultResolver_, vaultFactory_) {\\n if (address(vaultResolver_) == address(0) || address(vaultFactory_) == address(0)) {\\n revert FluidVaultPositionsResolver__AddressZero();\\n }\\n }\\n\\n function getAllVaultNftIds(address vault_) public view returns (uint256[] memory nftIds_) {\\n uint256 totalPositions_ = FACTORY.totalSupply();\\n\\n /// get total positions for vault: Next 32 bits => 210-241 => Total positions\\n uint256 totalVaultPositions_ = (VAULT_RESOLVER.getVaultVariablesRaw(vault_) >> 210) & 0xFFFFFFFF;\\n nftIds_ = new uint256[](totalVaultPositions_);\\n\\n // get nft Ids belonging to the vault_\\n uint256 nftId_;\\n uint256 j;\\n for (uint256 i; i < totalPositions_; ++i) {\\n nftId_ = FACTORY.tokenByIndex(i);\\n if (VAULT_RESOLVER.vaultByNftId(nftId_) != vault_) {\\n continue;\\n }\\n nftIds_[j] = nftId_;\\n ++j;\\n }\\n }\\n\\n function getPositionsForNftIds(uint256[] memory nftIds_) public view returns (UserPosition[] memory positions_) {\\n positions_ = new UserPosition[](nftIds_.length);\\n\\n VaultResolverStructs.UserPosition memory userPosition_;\\n for (uint256 i; i < nftIds_.length; ++i) {\\n (userPosition_, ) = VAULT_RESOLVER.positionByNftId(nftIds_[i]);\\n\\n positions_[i].nftId = nftIds_[i];\\n positions_[i].owner = userPosition_.owner;\\n positions_[i].supply = userPosition_.supply;\\n positions_[i].borrow = userPosition_.borrow;\\n }\\n }\\n\\n function getAllVaultPositions(address vault_) public view returns (UserPosition[] memory positions_) {\\n return getPositionsForNftIds(getAllVaultNftIds(vault_));\\n }\\n}\\n\",\"keccak256\":\"0x01060c28f4a83faae57b6dbfc9eb858c16a7f2ee7f3f92f8cafcf6e93f6fdea5\",\"license\":\"BUSL-1.1\"},\"contracts/periphery/resolvers/vaultPositions/structs.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\ncontract Structs {\\n struct UserPosition {\\n uint nftId;\\n address owner;\\n uint supply;\\n uint borrow;\\n }\\n}\\n\",\"keccak256\":\"0x7c7d70501ec27863eab620195f377c69bc08e833f8bc1a028e7d56438a27ebfa\",\"license\":\"BUSL-1.1\"},\"contracts/periphery/resolvers/vaultPositions/variables.sol\":{\"content\":\"// SPDX-License-Identifier: BUSL-1.1\\npragma solidity 0.8.21;\\n\\nimport { IFluidVaultResolver } from \\\"../vault/iVaultResolver.sol\\\";\\nimport { IFluidVaultFactory } from \\\"../../../protocols/vault/interfaces/iVaultFactory.sol\\\";\\n\\ncontract Variables {\\n IFluidVaultResolver public immutable VAULT_RESOLVER;\\n IFluidVaultFactory public immutable FACTORY;\\n\\n constructor(IFluidVaultResolver vaultResolver_, IFluidVaultFactory vaultFactory_) {\\n VAULT_RESOLVER = vaultResolver_;\\n FACTORY = vaultFactory_;\\n }\\n}\\n\",\"keccak256\":\"0x5c6b941941913be86a8f0fba4eee045927d345dab10303c3c41725bd61cfa0a9\",\"license\":\"BUSL-1.1\"},\"contracts/protocols/vault/interfaces/iVaultFactory.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity 0.8.21;\\n\\nimport { IERC721Enumerable } from \\\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\\\";\\n\\ninterface IFluidVaultFactory is IERC721Enumerable {\\n /// @notice Minting an NFT Vault for the user\\n function mint(uint256 vaultId_, address user_) external returns (uint256 tokenId_);\\n\\n /// @notice returns owner of Vault which is also an NFT\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /// @notice Global auth is auth for all vaults\\n function isGlobalAuth(address auth_) external view returns (bool);\\n\\n /// @notice Vault auth is auth for a specific vault\\n function isVaultAuth(address vault_, address auth_) external view returns (bool);\\n\\n /// @notice Total vaults deployed.\\n function totalVaults() external view returns (uint256);\\n\\n /// @notice Compute vaultAddress\\n function getVaultAddress(uint256 vaultId) external view returns (address);\\n\\n /// @notice read uint256 `result_` for a storage `slot_` key\\n function readFromStorage(bytes32 slot_) external view returns (uint256 result_);\\n}\\n\",\"keccak256\":\"0xc4a0caed89a8670e1ccf159d03fa23bb29f69c579f522bb0e33b1b5cb106c40d\",\"license\":\"MIT\"},\"contracts/protocols/vault/interfaces/iVaultT1.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\npragma solidity 0.8.21;\\n\\ninterface IFluidVaultT1 {\\n /// @notice returns the vault id\\n function VAULT_ID() external view returns (uint256);\\n\\n /// @notice reads uint256 data `result_` from storage at a bytes32 storage `slot_` key.\\n function readFromStorage(bytes32 slot_) external view returns (uint256 result_);\\n\\n struct ConstantViews {\\n address liquidity;\\n address factory;\\n address adminImplementation;\\n address secondaryImplementation;\\n address supplyToken;\\n address borrowToken;\\n uint8 supplyDecimals;\\n uint8 borrowDecimals;\\n uint vaultId;\\n bytes32 liquiditySupplyExchangePriceSlot;\\n bytes32 liquidityBorrowExchangePriceSlot;\\n bytes32 liquidityUserSupplySlot;\\n bytes32 liquidityUserBorrowSlot;\\n }\\n\\n /// @notice returns all Vault constants\\n function constantsView() external view returns (ConstantViews memory constantsView_);\\n\\n /// @notice fetches the latest user position after a liquidation\\n function fetchLatestPosition(\\n int256 positionTick_,\\n uint256 positionTickId_,\\n uint256 positionRawDebt_,\\n uint256 tickData_\\n )\\n external\\n view\\n returns (\\n int256, // tick\\n uint256, // raw debt\\n uint256, // raw collateral\\n uint256, // branchID_\\n uint256 // branchData_\\n );\\n\\n /// @notice calculates the updated vault exchange prices\\n function updateExchangePrices(\\n uint256 vaultVariables2_\\n )\\n external\\n view\\n returns (\\n uint256 liqSupplyExPrice_,\\n uint256 liqBorrowExPrice_,\\n uint256 vaultSupplyExPrice_,\\n uint256 vaultBorrowExPrice_\\n );\\n\\n /// @notice calculates the updated vault exchange prices and writes them to storage\\n function updateExchangePricesOnStorage()\\n external\\n returns (\\n uint256 liqSupplyExPrice_,\\n uint256 liqBorrowExPrice_,\\n uint256 vaultSupplyExPrice_,\\n uint256 vaultBorrowExPrice_\\n );\\n\\n /// @notice returns the liquidity contract address\\n function LIQUIDITY() external view returns (address);\\n\\n function operate(\\n uint256 nftId_, // if 0 then new position\\n int256 newCol_, // if negative then withdraw\\n int256 newDebt_, // if negative then payback\\n address to_ // address at which the borrow & withdraw amount should go to. If address(0) then it'll go to msg.sender\\n )\\n external\\n payable\\n returns (\\n uint256, // nftId_\\n int256, // final supply amount. if - then withdraw\\n int256 // final borrow amount. if - then payback\\n );\\n \\n function liquidate(\\n uint256 debtAmt_,\\n uint256 colPerUnitDebt_, // min collateral needed per unit of debt in 1e18\\n address to_,\\n bool absorb_\\n ) external payable returns (uint actualDebtAmt_, uint actualColAmt_);\\n\\n function absorb() external;\\n\\n function rebalance() external payable returns (int supplyAmt_, int borrowAmt_);\\n\\n error FluidLiquidateResult(uint256 colLiquidated, uint256 debtLiquidated);\\n}\\n\",\"keccak256\":\"0xe0ec40a4531ecbcd7b8db25b4cd8529e0c284bb20eb40b7cf909fb8af0e3ca8b\",\"license\":\"MIT\"}},\"version\":1}",
|
|
"bytecode": "0x60c060405234801561001057600080fd5b50604051620013a6380380620013a683398101604081905261003191610097565b6001600160a01b03808316608081905290821660a052158061005a57506001600160a01b038116155b15610078576040516302fdcc4f60e31b815260040160405180910390fd5b50506100d1565b6001600160a01b038116811461009457600080fd5b50565b600080604083850312156100aa57600080fd5b82516100b58161007f565b60208401519092506100c68161007f565b809150509250929050565b60805160a05161128e620001186000396000818160710152818161040a01526105de01526000818160e201528181610254015281816104e50152610679015261128e6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637f3e2b48116100505780637f3e2b48146100dd578063bd7b630d14610104578063f752d7571461012457600080fd5b80632dd310001461006c5780635bbf0e14146100bd575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d06100cb3660046108e1565b610137565b6040516100b49190610987565b6100937f000000000000000000000000000000000000000000000000000000000000000081565b610117610112366004610a26565b610404565b6040516100b49190610a4a565b6100d0610132366004610a26565b610772565b6060815167ffffffffffffffff81111561015357610153610786565b6040519080825280602002602001820160405280156101c557816020015b6101b2604051806080016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001906001900390816101715790505b50905061024660405180610180016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60005b83518110156103fd577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663144128e88583815181106102a0576102a0610a8e565b60200260200101516040518263ffffffff1660e01b81526004016102c691815260200190565b610be060405180830381865afa1580156102e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030891906110eb565b508092505083818151811061031f5761031f610a8e565b602002602001015183828151811061033957610339610a8e565b60200260200101516000018181525050816020015183828151811061036057610360610a8e565b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508161012001518382815181106103b6576103b6610a8e565b602002602001015160400181815250508161014001518382815181106103de576103de610a8e565b6020908102919091010151606001526103f6816111c3565b9050610249565b5050919050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190611222565b6040517f03e883e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291925060009160d2917f0000000000000000000000000000000000000000000000000000000000000000909116906303e883e090602401602060405180830381865afa15801561052e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105529190611222565b901c63ffffffff1690508067ffffffffffffffff81111561057557610575610786565b60405190808252806020026020018201604052801561059e578160200160208202803683370190505b50925060008060005b84811015610768576040517f4f6ccce7000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634f6ccce790602401602060405180830381865afa15801561063a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065e9190611222565b92508673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631949138e856040518263ffffffff1660e01b81526004016106d291815260200190565b602060405180830381865afa1580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610713919061123b565b73ffffffffffffffffffffffffffffffffffffffff1603610758578286838151811061074157610741610a8e565b6020908102919091010152610755826111c3565b91505b610761816111c3565b90506105a7565b5050505050919050565b60606107806100cb83610404565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff811182821017156107d9576107d9610786565b60405290565b604051610160810167ffffffffffffffff811182821017156107d9576107d9610786565b60405160e0810167ffffffffffffffff811182821017156107d9576107d9610786565b604051610120810167ffffffffffffffff811182821017156107d9576107d9610786565b604051610140810167ffffffffffffffff811182821017156107d9576107d9610786565b604051610180810167ffffffffffffffff811182821017156107d9576107d9610786565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108d9576108d9610786565b604052919050565b600060208083850312156108f457600080fd5b823567ffffffffffffffff8082111561090c57600080fd5b818501915085601f83011261092057600080fd5b81358181111561093257610932610786565b8060051b9150610943848301610892565b818152918301840191848101908884111561095d57600080fd5b938501935b8385101561097b57843582529385019390850190610962565b98975050505050505050565b602080825282518282018190526000919060409081850190868401855b828110156109f4578151805185528681015173ffffffffffffffffffffffffffffffffffffffff1687860152858101518686015260609081015190850152608090930192908501906001016109a4565b5091979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2357600080fd5b50565b600060208284031215610a3857600080fd5b8135610a4381610a01565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610a8257835183529284019291840191600101610a66565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051610ac881610a01565b919050565b80518015158114610ac857600080fd5b805160ff81168114610ac857600080fd5b60006101a08284031215610b0157600080fd5b610b096107b5565b9050610b1482610abd565b8152610b2260208301610abd565b6020820152610b3360408301610abd565b6040820152610b4460608301610abd565b6060820152610b5560808301610abd565b6080820152610b6660a08301610abd565b60a0820152610b7760c08301610add565b60c0820152610b8860e08301610add565b60e082015261010082810151908201526101208083015190820152610140808301519082015261016080830151908201526101809182015191810191909152919050565b805161ffff81168114610ac857600080fd5b60006101608284031215610bf157600080fd5b610bf96107df565b9050610c0482610bcc565b8152610c1260208301610bcc565b6020820152610c2360408301610bcc565b6040820152610c3460608301610bcc565b6060820152610c4560808301610bcc565b6080820152610c5660a08301610bcc565b60a0820152610c6760c08301610bcc565b60c0820152610c7860e08301610bcc565b60e0820152610100610c8b818401610abd565b908201526101208281015190820152610140610ca8818401610abd565b9082015292915050565b60006101a08284031215610cc557600080fd5b610ccd6107b5565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525061016080830151818301525061018080830151818301525092915050565b600060c08284031215610d6d57600080fd5b60405160c0810181811067ffffffffffffffff82111715610d9057610d90610786565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b600060e08284031215610de757600080fd5b610def610803565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015292915050565b60008183036101a0811215610e4b57600080fd5b610e53610803565b9150825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215610ebb57600080fd5b50610ec4610803565b60c0830151815260e0830151602082015261010083015160408201526101208301516060820152610140830151608082015261016083015160a082015261018083015160c08201528060c08301525092915050565b60006101208284031215610f2c57600080fd5b610f34610826565b9050610f3f82610acd565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525092915050565b60006101408284031215610fac57600080fd5b610fb461084a565b9050610fbf82610acd565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b6000610a60828403121561103857600080fd5b611040610826565b905061104b82610abd565b815261105a8360208401610aee565b602082015261106d836101c08401610bde565b6040820152611080836103208401610cb2565b6060820152611093836104c08401610d5b565b60808201526110a6836105808401610dd5565b60a08201526110b9836106608401610e37565b60c08201526110cc836108008401610f19565b60e08201526110df836109208401610f99565b61010082015292915050565b600080828403610be081121561110057600080fd5b6101808082121561111057600080fd5b61111861086e565b91508451825261112a60208601610abd565b602083015261113b60408601610acd565b604083015261114c60608601610acd565b60608301526080850151608083015260a085015160a083015260c085015160c083015260e085015160e08301526101008086015181840152506101208086015181840152506101408086015181840152506101608086015181840152508193506111b886828701611025565b925050509250929050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361121b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60006020828403121561123457600080fd5b5051919050565b60006020828403121561124d57600080fd5b8151610a4381610a0156fea26469706673582212205150a679993c29a8ddddcf3b81f3050257bf8ab9236654b65f42cb50eef8d07664736f6c63430008150033",
|
|
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80637f3e2b48116100505780637f3e2b48146100dd578063bd7b630d14610104578063f752d7571461012457600080fd5b80632dd310001461006c5780635bbf0e14146100bd575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d06100cb3660046108e1565b610137565b6040516100b49190610987565b6100937f000000000000000000000000000000000000000000000000000000000000000081565b610117610112366004610a26565b610404565b6040516100b49190610a4a565b6100d0610132366004610a26565b610772565b6060815167ffffffffffffffff81111561015357610153610786565b6040519080825280602002602001820160405280156101c557816020015b6101b2604051806080016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b8152602001906001900390816101715790505b50905061024660405180610180016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160001515815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60005b83518110156103fd577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663144128e88583815181106102a0576102a0610a8e565b60200260200101516040518263ffffffff1660e01b81526004016102c691815260200190565b610be060405180830381865afa1580156102e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030891906110eb565b508092505083818151811061031f5761031f610a8e565b602002602001015183828151811061033957610339610a8e565b60200260200101516000018181525050816020015183828151811061036057610360610a8e565b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508161012001518382815181106103b6576103b6610a8e565b602002602001015160400181815250508161014001518382815181106103de576103de610a8e565b6020908102919091010151606001526103f6816111c3565b9050610249565b5050919050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104979190611222565b6040517f03e883e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291925060009160d2917f0000000000000000000000000000000000000000000000000000000000000000909116906303e883e090602401602060405180830381865afa15801561052e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105529190611222565b901c63ffffffff1690508067ffffffffffffffff81111561057557610575610786565b60405190808252806020026020018201604052801561059e578160200160208202803683370190505b50925060008060005b84811015610768576040517f4f6ccce7000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634f6ccce790602401602060405180830381865afa15801561063a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065e9190611222565b92508673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631949138e856040518263ffffffff1660e01b81526004016106d291815260200190565b602060405180830381865afa1580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610713919061123b565b73ffffffffffffffffffffffffffffffffffffffff1603610758578286838151811061074157610741610a8e565b6020908102919091010152610755826111c3565b91505b610761816111c3565b90506105a7565b5050505050919050565b60606107806100cb83610404565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101a0810167ffffffffffffffff811182821017156107d9576107d9610786565b60405290565b604051610160810167ffffffffffffffff811182821017156107d9576107d9610786565b60405160e0810167ffffffffffffffff811182821017156107d9576107d9610786565b604051610120810167ffffffffffffffff811182821017156107d9576107d9610786565b604051610140810167ffffffffffffffff811182821017156107d9576107d9610786565b604051610180810167ffffffffffffffff811182821017156107d9576107d9610786565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108d9576108d9610786565b604052919050565b600060208083850312156108f457600080fd5b823567ffffffffffffffff8082111561090c57600080fd5b818501915085601f83011261092057600080fd5b81358181111561093257610932610786565b8060051b9150610943848301610892565b818152918301840191848101908884111561095d57600080fd5b938501935b8385101561097b57843582529385019390850190610962565b98975050505050505050565b602080825282518282018190526000919060409081850190868401855b828110156109f4578151805185528681015173ffffffffffffffffffffffffffffffffffffffff1687860152858101518686015260609081015190850152608090930192908501906001016109a4565b5091979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2357600080fd5b50565b600060208284031215610a3857600080fd5b8135610a4381610a01565b9392505050565b6020808252825182820181905260009190848201906040850190845b81811015610a8257835183529284019291840191600101610a66565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051610ac881610a01565b919050565b80518015158114610ac857600080fd5b805160ff81168114610ac857600080fd5b60006101a08284031215610b0157600080fd5b610b096107b5565b9050610b1482610abd565b8152610b2260208301610abd565b6020820152610b3360408301610abd565b6040820152610b4460608301610abd565b6060820152610b5560808301610abd565b6080820152610b6660a08301610abd565b60a0820152610b7760c08301610add565b60c0820152610b8860e08301610add565b60e082015261010082810151908201526101208083015190820152610140808301519082015261016080830151908201526101809182015191810191909152919050565b805161ffff81168114610ac857600080fd5b60006101608284031215610bf157600080fd5b610bf96107df565b9050610c0482610bcc565b8152610c1260208301610bcc565b6020820152610c2360408301610bcc565b6040820152610c3460608301610bcc565b6060820152610c4560808301610bcc565b6080820152610c5660a08301610bcc565b60a0820152610c6760c08301610bcc565b60c0820152610c7860e08301610bcc565b60e0820152610100610c8b818401610abd565b908201526101208281015190820152610140610ca8818401610abd565b9082015292915050565b60006101a08284031215610cc557600080fd5b610ccd6107b5565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525061016080830151818301525061018080830151818301525092915050565b600060c08284031215610d6d57600080fd5b60405160c0810181811067ffffffffffffffff82111715610d9057610d90610786565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b600060e08284031215610de757600080fd5b610def610803565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015292915050565b60008183036101a0811215610e4b57600080fd5b610e53610803565b9150825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4082011215610ebb57600080fd5b50610ec4610803565b60c0830151815260e0830151602082015261010083015160408201526101208301516060820152610140830151608082015261016083015160a082015261018083015160c08201528060c08301525092915050565b60006101208284031215610f2c57600080fd5b610f34610826565b9050610f3f82610acd565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525092915050565b60006101408284031215610fac57600080fd5b610fb461084a565b9050610fbf82610acd565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b6000610a60828403121561103857600080fd5b611040610826565b905061104b82610abd565b815261105a8360208401610aee565b602082015261106d836101c08401610bde565b6040820152611080836103208401610cb2565b6060820152611093836104c08401610d5b565b60808201526110a6836105808401610dd5565b60a08201526110b9836106608401610e37565b60c08201526110cc836108008401610f19565b60e08201526110df836109208401610f99565b61010082015292915050565b600080828403610be081121561110057600080fd5b6101808082121561111057600080fd5b61111861086e565b91508451825261112a60208601610abd565b602083015261113b60408601610acd565b604083015261114c60608601610acd565b60608301526080850151608083015260a085015160a083015260c085015160c083015260e085015160e08301526101008086015181840152506101208086015181840152506101408086015181840152506101608086015181840152508193506111b886828701611025565b925050509250929050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361121b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60006020828403121561123457600080fd5b5051919050565b60006020828403121561124d57600080fd5b8151610a4381610a0156fea26469706673582212205150a679993c29a8ddddcf3b81f3050257bf8ab9236654b65f42cb50eef8d07664736f6c63430008150033",
|
|
"devdoc": {
|
|
"kind": "dev",
|
|
"methods": {},
|
|
"version": 1
|
|
},
|
|
"userdoc": {
|
|
"errors": {
|
|
"FluidVaultPositionsResolver__AddressZero()": [
|
|
{
|
|
"notice": "thrown if an input param address is zero"
|
|
}
|
|
]
|
|
},
|
|
"kind": "user",
|
|
"methods": {
|
|
"constructor": {
|
|
"notice": "constructor sets the immutable vault resolver and vault factory address"
|
|
}
|
|
},
|
|
"version": 1
|
|
},
|
|
"storageLayout": {
|
|
"storage": [],
|
|
"types": null
|
|
}
|
|
} |