{
  "_format": "hh-sol-artifact-1",
  "contractName": "AssetLimitHook",
  "sourceName": "contracts/product/AssetLimitHook.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_assets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_limits",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newLimit",
          "type": "uint256"
        }
      ],
      "name": "addAssetLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "assetLimits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "assets",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newLimit",
          "type": "uint256"
        }
      ],
      "name": "editAssetLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAssets",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_reserveAsset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_reserveAssetQuantity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "invokePreIssueHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_redeemQuantity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "invokePreRedeemHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        }
      ],
      "name": "removeAssetLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620010ed380380620010ed8339810160408190526200003491620002d6565b6000620000496001600160e01b03620001ac16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508051825114620000c05760405162461bcd60e51b8152600401620000b790620003dc565b60405180910390fd5b8151620000e15760405162461bcd60e51b8152600401620000b790620003a5565b60005b82518110156200018d576000838281518110620000fd57fe5b6020026020010151905060016000826001600160a01b03166001600160a01b03168152602001908152602001600020546000146200014f5760405162461bcd60e51b8152600401620000b79062000413565b8282815181106200015c57fe5b6020908102919091018101516001600160a01b039092166000908152600191829052604090209190915501620000e4565b508151620001a3906002906020850190620001b1565b50505062000491565b335b90565b82805482825590600052602060002090810192821562000209579160200282015b828111156200020957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001d2565b50620002179291506200021b565b5090565b620001ae91905b80821115620002175780546001600160a01b031916815560010162000222565b80516001600160a01b03811681146200025a57600080fd5b92915050565b600082601f83011262000271578081fd5b815162000288620002828262000471565b6200044a565b818152915060208083019084810181840286018201871015620002aa57600080fd5b60005b84811015620002cb57815184529282019290820190600101620002ad565b505050505092915050565b60008060408385031215620002e9578182fd5b82516001600160401b038082111562000300578384fd5b81850186601f82011262000312578485fd5b8051925062000325620002828462000471565b80848252602080830192508084018a82838902870101111562000346578889fd5b8894505b8685101562000374576200035f8b8262000242565b8452600194909401939281019281016200034a565b5088015190965093505050808211156200038c578283fd5b506200039b8582860162000260565b9150509250929050565b60208082526017908201527f4172726179206d757374206e6f7420626520656d707479000000000000000000604082015260600190565b60208082526014908201527f417272617973206d75737420626520657175616c000000000000000000000000604082015260600190565b60208082526013908201527f417373657420616c726561647920616464656400000000000000000000000000604082015260600190565b6040518181016001600160401b03811182821017156200046957600080fd5b604052919050565b60006001600160401b0382111562000487578081fd5b5060209081020190565b610c4c80620004a16000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80639ff13e04116100715780639ff13e041461011e578063cf35bdd014610131578063db26989414610144578063f2fde38b14610157578063f3f0349a1461016a578063fb42e7ec1461017d576100a9565b8063560ee9dd146100ae57806367e4ac2c146100d7578063715018a6146100ec5780638da5cb5b146100f65780639b19c2bf1461010b575b600080fd5b6100c16100bc3660046108d0565b610190565b6040516100ce9190610bf5565b60405180910390f35b6100df6101a2565b6040516100ce9190610a03565b6100f4610205565b005b6100fe61028d565b6040516100ce91906109ef565b6100f4610119366004610985565b61029c565b6100f461012c3660046108d0565b6102da565b6100fe61013f3660046109d7565b6103f2565b6100f46101523660046108f3565b610419565b6100f46101653660046108d0565b61049f565b6100f46101783660046108f3565b610555565b6100f461018b36600461091e565b610621565b60016020526000908152604090205481565b606060028054806020026020016040519081016040528092919081815260200182805480156101fa57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116101dc575b505050505090505b90565b61020d610660565b6000546001600160a01b039081169116146102435760405162461bcd60e51b815260040161023a90610b25565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b0384166000908152600160205260409020548311156102d45760405162461bcd60e51b815260040161023a90610bbe565b50505050565b6102e2610660565b6000546001600160a01b0390811691161461030f5760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b0381166000908152600160205260409020546103445760405162461bcd60e51b815260040161023a90610a50565b60016000826001600160a01b03166001600160a01b03168152602001908152602001600020600090556103da8160028054806020026020016040519081016040528092919081815260200182805480156103c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103a9575b505050505061066490919063ffffffff16565b80516103ee91600291602090910190610847565b5050565b600281815481106103ff57fe5b6000918252602090912001546001600160a01b0316905081565b610421610660565b6000546001600160a01b0390811691161461044e5760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b0382166000908152600160205260409020546104835760405162461bcd60e51b815260040161023a90610a50565b6001600160a01b03909116600090815260016020526040902055565b6104a7610660565b6000546001600160a01b039081169116146104d45760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b0381166104fa5760405162461bcd60e51b815260040161023a90610adf565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61055d610660565b6000546001600160a01b0390811691161461058a5760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b038216600090815260016020526040902054156105c05760405162461bcd60e51b815260040161023a90610b5a565b6001600160a01b03909116600081815260016020819052604082209390935560028054938401815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b0319169091179055565b6001600160a01b0384166000908152600160205260409020548311156106595760405162461bcd60e51b815260040161023a90610b87565b5050505050565b3390565b606060008061067385856106b2565b91509150806106945760405162461bcd60e51b815260040161023a90610a79565b60606106a08684610718565b5093506106ac92505050565b92915050565b81516000908190815b8181101561070557846001600160a01b03168682815181106106d957fe5b60200260200101516001600160a01b031614156106fd579250600191506107119050565b6001016106bb565b50600019600092509250505b9250929050565b815160609060009080841061073f5760405162461bcd60e51b815260040161023a90610aa8565b60606001820367ffffffffffffffff8111801561075b57600080fd5b50604051908082528060200260200182016040528015610785578160200160208202803683370190505b50905060005b858110156107d35786818151811061079f57fe5b60200260200101518282815181106107b357fe5b6001600160a01b039092166020928302919091019091015260010161078b565b50600185015b82811015610824578681815181106107ed57fe5b602002602001015182600183038151811061080457fe5b6001600160a01b03909216602092830291909101909101526001016107d9565b508086868151811061083257fe5b60200260200101519350935050509250929050565b82805482825590600052602060002090810192821561089c579160200282015b8281111561089c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610867565b506108a89291506108ac565b5090565b61020291905b808211156108a85780546001600160a01b03191681556001016108b2565b6000602082840312156108e1578081fd5b81356108ec81610bfe565b9392505050565b60008060408385031215610905578081fd5b823561091081610bfe565b946020939093013593505050565b600080600080600060a08688031215610935578081fd5b853561094081610bfe565b9450602086013561095081610bfe565b935060408601359250606086013561096781610bfe565b9150608086013561097781610bfe565b809150509295509295909350565b6000806000806080858703121561099a578384fd5b84356109a581610bfe565b93506020850135925060408501356109bc81610bfe565b915060608501356109cc81610bfe565b939692955090935050565b6000602082840312156109e8578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b81811015610a445783516001600160a01b031683529284019291840191600101610a1f565b50909695505050505050565b6020808252600f908201526e105cdcd95d081b9bdd081859191959608a1b604082015260600190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f496e646578206d757374206265203c2041206c656e6774680000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272105cdcd95d08185b1c9958591e481859191959606a1b604082015260600190565b6020808252601e908201527f49737375652073697a652065786365656473206173736574206c696d69740000604082015260600190565b6020808252601f908201527f52656465656d2073697a652065786365656473206173736574206c696d697400604082015260600190565b90815260200190565b6001600160a01b0381168114610c1357600080fd5b5056fea26469706673582212207ce0a864c0f81ab308bb753fab9ff1cb9490a43520580eedb26a61aeee21d85b64736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80639ff13e04116100715780639ff13e041461011e578063cf35bdd014610131578063db26989414610144578063f2fde38b14610157578063f3f0349a1461016a578063fb42e7ec1461017d576100a9565b8063560ee9dd146100ae57806367e4ac2c146100d7578063715018a6146100ec5780638da5cb5b146100f65780639b19c2bf1461010b575b600080fd5b6100c16100bc3660046108d0565b610190565b6040516100ce9190610bf5565b60405180910390f35b6100df6101a2565b6040516100ce9190610a03565b6100f4610205565b005b6100fe61028d565b6040516100ce91906109ef565b6100f4610119366004610985565b61029c565b6100f461012c3660046108d0565b6102da565b6100fe61013f3660046109d7565b6103f2565b6100f46101523660046108f3565b610419565b6100f46101653660046108d0565b61049f565b6100f46101783660046108f3565b610555565b6100f461018b36600461091e565b610621565b60016020526000908152604090205481565b606060028054806020026020016040519081016040528092919081815260200182805480156101fa57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116101dc575b505050505090505b90565b61020d610660565b6000546001600160a01b039081169116146102435760405162461bcd60e51b815260040161023a90610b25565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b0384166000908152600160205260409020548311156102d45760405162461bcd60e51b815260040161023a90610bbe565b50505050565b6102e2610660565b6000546001600160a01b0390811691161461030f5760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b0381166000908152600160205260409020546103445760405162461bcd60e51b815260040161023a90610a50565b60016000826001600160a01b03166001600160a01b03168152602001908152602001600020600090556103da8160028054806020026020016040519081016040528092919081815260200182805480156103c757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103a9575b505050505061066490919063ffffffff16565b80516103ee91600291602090910190610847565b5050565b600281815481106103ff57fe5b6000918252602090912001546001600160a01b0316905081565b610421610660565b6000546001600160a01b0390811691161461044e5760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b0382166000908152600160205260409020546104835760405162461bcd60e51b815260040161023a90610a50565b6001600160a01b03909116600090815260016020526040902055565b6104a7610660565b6000546001600160a01b039081169116146104d45760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b0381166104fa5760405162461bcd60e51b815260040161023a90610adf565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61055d610660565b6000546001600160a01b0390811691161461058a5760405162461bcd60e51b815260040161023a90610b25565b6001600160a01b038216600090815260016020526040902054156105c05760405162461bcd60e51b815260040161023a90610b5a565b6001600160a01b03909116600081815260016020819052604082209390935560028054938401815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b0319169091179055565b6001600160a01b0384166000908152600160205260409020548311156106595760405162461bcd60e51b815260040161023a90610b87565b5050505050565b3390565b606060008061067385856106b2565b91509150806106945760405162461bcd60e51b815260040161023a90610a79565b60606106a08684610718565b5093506106ac92505050565b92915050565b81516000908190815b8181101561070557846001600160a01b03168682815181106106d957fe5b60200260200101516001600160a01b031614156106fd579250600191506107119050565b6001016106bb565b50600019600092509250505b9250929050565b815160609060009080841061073f5760405162461bcd60e51b815260040161023a90610aa8565b60606001820367ffffffffffffffff8111801561075b57600080fd5b50604051908082528060200260200182016040528015610785578160200160208202803683370190505b50905060005b858110156107d35786818151811061079f57fe5b60200260200101518282815181106107b357fe5b6001600160a01b039092166020928302919091019091015260010161078b565b50600185015b82811015610824578681815181106107ed57fe5b602002602001015182600183038151811061080457fe5b6001600160a01b03909216602092830291909101909101526001016107d9565b508086868151811061083257fe5b60200260200101519350935050509250929050565b82805482825590600052602060002090810192821561089c579160200282015b8281111561089c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610867565b506108a89291506108ac565b5090565b61020291905b808211156108a85780546001600160a01b03191681556001016108b2565b6000602082840312156108e1578081fd5b81356108ec81610bfe565b9392505050565b60008060408385031215610905578081fd5b823561091081610bfe565b946020939093013593505050565b600080600080600060a08688031215610935578081fd5b853561094081610bfe565b9450602086013561095081610bfe565b935060408601359250606086013561096781610bfe565b9150608086013561097781610bfe565b809150509295509295909350565b6000806000806080858703121561099a578384fd5b84356109a581610bfe565b93506020850135925060408501356109bc81610bfe565b915060608501356109cc81610bfe565b939692955090935050565b6000602082840312156109e8578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b81811015610a445783516001600160a01b031683529284019291840191600101610a1f565b50909695505050505050565b6020808252600f908201526e105cdcd95d081b9bdd081859191959608a1b604082015260600190565b60208082526015908201527420b2323932b9b9903737ba1034b71030b93930bc9760591b604082015260600190565b60208082526018908201527f496e646578206d757374206265203c2041206c656e6774680000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b602080825260139082015272105cdcd95d08185b1c9958591e481859191959606a1b604082015260600190565b6020808252601e908201527f49737375652073697a652065786365656473206173736574206c696d69740000604082015260600190565b6020808252601f908201527f52656465656d2073697a652065786365656473206173736574206c696d697400604082015260600190565b90815260200190565b6001600160a01b0381168114610c1357600080fd5b5056fea26469706673582212207ce0a864c0f81ab308bb753fab9ff1cb9490a43520580eedb26a61aeee21d85b64736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
