{
  "_format": "hh-sol-artifact-1",
  "contractName": "ModuleIssuanceHookMock",
  "sourceName": "contracts/mocks/protocol/module/ModuleIssuanceHookMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_quantity",
          "type": "int256"
        }
      ],
      "name": "addExternalPosition",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTokenQuantity",
          "type": "uint256"
        },
        {
          "internalType": "contract IERC20",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "componentIssueHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTokenQuantity",
          "type": "uint256"
        },
        {
          "internalType": "contract IERC20",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "componentRedeemHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTokenQuantity",
          "type": "uint256"
        }
      ],
      "name": "moduleIssueHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTokenQuantity",
          "type": "uint256"
        }
      ],
      "name": "moduleRedeemHook",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610fa4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80630fb96b21146100675780633fe6106b146100a5578063c137f4d7146100d1578063c153dd07146100a5578063c4d66de81461010d578063e9b318f714610133575b600080fd5b6100a36004803603608081101561007d57600080fd5b506001600160a01b03813581169160208101359160408201351690606001351515610169565b005b6100a3600480360360408110156100bb57600080fd5b506001600160a01b038135169060200135610228565b6100a3600480360360808110156100e757600080fd5b506001600160a01b0381358116916020810135916040820135169060600135151561022c565b6100a36004803603602081101561012357600080fd5b50356001600160a01b031661034f565b6100a36004803603606081101561014957600080fd5b506001600160a01b038135811691602081013590911690604001356103a5565b604080516308bafae960e21b81526001600160a01b03848116600483015230602483015291516000928716916322ebeba4916044808301926020929190829003018186803b1580156101ba57600080fd5b505afa1580156101ce573d6000803e3d6000fd5b505050506040513d60208110156101e457600080fd5b5051905060006102036101f6836103d9565b869063ffffffff61043416565b90506102206001600160a01b03871685308463ffffffff61046716565b505050505050565b5050565b604080516308bafae960e21b81526001600160a01b03848116600483015230602483015291516000928716916322ebeba4916044808301926020929190829003018186803b15801561027d57600080fd5b505afa158015610291573d6000803e3d6000fd5b505050506040513d60208110156102a757600080fd5b5051905060006102b96101f6836103d9565b9050836001600160a01b031663a9059cbb87836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561031b57600080fd5b505af115801561032f573d6000803e3d6000fd5b505050506040513d602081101561034557600080fd5b5050505050505050565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561038a57600080fd5b505af115801561039e573d6000803e3d6000fd5b5050505050565b6040805160208101909152600081526103d4906001600160a01b0385169084903090859063ffffffff61066516565b505050565b600080821215610430576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b600061045e670de0b6b3a7640000610452858563ffffffff610de516565b9063ffffffff610e3e16565b90505b92915050565b801561065f57604080516001600160a01b038085166024808401919091526044808401869052845180850382018152606494850186526020810180516001600160e01b031663a9059cbb60e01b17815295516347b7819960e11b8152898516600482019081526000948201859052606093820193845282519682019690965281519196948b1695638f6f0332958b959489949293909260849091019190808383895b83811015610521578181015183820152602001610509565b50505050905090810190601f16801561054e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156105ac57600080fd5b81019080805160405193929190846401000000008211156105cc57600080fd5b9083019060208201858111156105e157600080fd5b82516401000000008111828201881017156105fb57600080fd5b82525081516020918201929091019080838360005b83811015610628578181015183820152602001610610565b50505050905090810190601f1680156106555780820380516001836020036101000a031916815260200191505b5060405250505050505b50505050565b8115610a0e57846001600160a01b031663df5e9b29856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106c157600080fd5b505afa1580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b50516107d157846001600160a01b0316634e353270856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b50506040805163ea0ee55960e01b81526001600160a01b03888116600483015287811660248301529151918916935063ea0ee559925060448082019260009290919082900301818387803b1580156107b457600080fd5b505af11580156107c8573d6000803e3d6000fd5b505050506108bf565b60408051637d96659360e01b81526001600160a01b0386811660048301528581166024830152915191871691637d96659391604480820192602092909190829003018186803b15801561082357600080fd5b505afa158015610837573d6000803e3d6000fd5b505050506040513d602081101561084d57600080fd5b50516108bf576040805163ea0ee55960e01b81526001600160a01b038681166004830152858116602483015291519187169163ea0ee5599160448082019260009290919082900301818387803b1580156108a657600080fd5b505af11580156108ba573d6000803e3d6000fd5b505050505b604080516363a90fc160e01b81526001600160a01b0386811660048301528581166024830152604482018590529151918716916363a90fc19160648082019260009290919082900301818387803b15801561091957600080fd5b505af115801561092d573d6000803e3d6000fd5b50506040516326898fe160e01b81526001600160a01b03878116600483019081528782166024840152606060448401908152865160648501528651928b1695506326898fe19450899389938893929160840190602085019080838360005b838110156109a357818101518382015260200161098b565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156109f157600080fd5b505af1158015610a05573d6000803e3d6000fd5b5050505061039e565b805115610a62576040805162461bcd60e51b815260206004820152601860248201527f5061737365642064617461206d757374206265206e756c6c0000000000000000604482015290519081900360640190fd5b604080516308bafae960e21b81526001600160a01b03868116600483015285811660248301529151918716916322ebeba491604480820192602092909190829003018186803b158015610ab457600080fd5b505afa158015610ac8573d6000803e3d6000fd5b505050506040513d6020811015610ade57600080fd5b50511561039e576060856001600160a01b031663a7bdad03866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610b3d57600080fd5b505afa158015610b51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b7a57600080fd5b8101908080516040519392919084640100000000821115610b9a57600080fd5b908301906020820185811115610baf57600080fd5b8251866020820283011164010000000082111715610bcc57600080fd5b82525081516020918201928201910280838360005b83811015610bf9578181015183820152602001610be1565b505050509050016040525050509050856001600160a01b03166366cb8d2f866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b5051158015610c98575080516001145b15610d7257836001600160a01b031681600081518110610cb457fe5b60200260200101516001600160a01b031614610d015760405162461bcd60e51b8152600401808060200182810382526030815260200180610f1e6030913960400191505060405180910390fd5b856001600160a01b0316636f86c897866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610d5957600080fd5b505af1158015610d6d573d6000803e3d6000fd5b505050505b6040805163acf3f07760e01b81526001600160a01b038781166004830152868116602483015291519188169163acf3f0779160448082019260009290919082900301818387803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50505050505050505050565b600082610df457506000610461565b82820282848281610e0157fe5b041461045e5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f4e6021913960400191505060405180910390fd5b600061045e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610f075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ecc578181015183820152602001610eb4565b50505050905090810190601f168015610ef95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610f1357fe5b049594505050505056fe45787465726e616c20706f736974696f6e73206d757374206265203020746f2072656d6f766520636f6d706f6e656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202aa8793703b60db43560c583c824ebb22f935fc7d497e6a970f9f18acae7e4e264736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80630fb96b21146100675780633fe6106b146100a5578063c137f4d7146100d1578063c153dd07146100a5578063c4d66de81461010d578063e9b318f714610133575b600080fd5b6100a36004803603608081101561007d57600080fd5b506001600160a01b03813581169160208101359160408201351690606001351515610169565b005b6100a3600480360360408110156100bb57600080fd5b506001600160a01b038135169060200135610228565b6100a3600480360360808110156100e757600080fd5b506001600160a01b0381358116916020810135916040820135169060600135151561022c565b6100a36004803603602081101561012357600080fd5b50356001600160a01b031661034f565b6100a36004803603606081101561014957600080fd5b506001600160a01b038135811691602081013590911690604001356103a5565b604080516308bafae960e21b81526001600160a01b03848116600483015230602483015291516000928716916322ebeba4916044808301926020929190829003018186803b1580156101ba57600080fd5b505afa1580156101ce573d6000803e3d6000fd5b505050506040513d60208110156101e457600080fd5b5051905060006102036101f6836103d9565b869063ffffffff61043416565b90506102206001600160a01b03871685308463ffffffff61046716565b505050505050565b5050565b604080516308bafae960e21b81526001600160a01b03848116600483015230602483015291516000928716916322ebeba4916044808301926020929190829003018186803b15801561027d57600080fd5b505afa158015610291573d6000803e3d6000fd5b505050506040513d60208110156102a757600080fd5b5051905060006102b96101f6836103d9565b9050836001600160a01b031663a9059cbb87836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561031b57600080fd5b505af115801561032f573d6000803e3d6000fd5b505050506040513d602081101561034557600080fd5b5050505050505050565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561038a57600080fd5b505af115801561039e573d6000803e3d6000fd5b5050505050565b6040805160208101909152600081526103d4906001600160a01b0385169084903090859063ffffffff61066516565b505050565b600080821215610430576040805162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015290519081900360640190fd5b5090565b600061045e670de0b6b3a7640000610452858563ffffffff610de516565b9063ffffffff610e3e16565b90505b92915050565b801561065f57604080516001600160a01b038085166024808401919091526044808401869052845180850382018152606494850186526020810180516001600160e01b031663a9059cbb60e01b17815295516347b7819960e11b8152898516600482019081526000948201859052606093820193845282519682019690965281519196948b1695638f6f0332958b959489949293909260849091019190808383895b83811015610521578181015183820152602001610509565b50505050905090810190601f16801561054e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561056f57600080fd5b505af1158015610583573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156105ac57600080fd5b81019080805160405193929190846401000000008211156105cc57600080fd5b9083019060208201858111156105e157600080fd5b82516401000000008111828201881017156105fb57600080fd5b82525081516020918201929091019080838360005b83811015610628578181015183820152602001610610565b50505050905090810190601f1680156106555780820380516001836020036101000a031916815260200191505b5060405250505050505b50505050565b8115610a0e57846001600160a01b031663df5e9b29856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106c157600080fd5b505afa1580156106d5573d6000803e3d6000fd5b505050506040513d60208110156106eb57600080fd5b50516107d157846001600160a01b0316634e353270856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561074957600080fd5b505af115801561075d573d6000803e3d6000fd5b50506040805163ea0ee55960e01b81526001600160a01b03888116600483015287811660248301529151918916935063ea0ee559925060448082019260009290919082900301818387803b1580156107b457600080fd5b505af11580156107c8573d6000803e3d6000fd5b505050506108bf565b60408051637d96659360e01b81526001600160a01b0386811660048301528581166024830152915191871691637d96659391604480820192602092909190829003018186803b15801561082357600080fd5b505afa158015610837573d6000803e3d6000fd5b505050506040513d602081101561084d57600080fd5b50516108bf576040805163ea0ee55960e01b81526001600160a01b038681166004830152858116602483015291519187169163ea0ee5599160448082019260009290919082900301818387803b1580156108a657600080fd5b505af11580156108ba573d6000803e3d6000fd5b505050505b604080516363a90fc160e01b81526001600160a01b0386811660048301528581166024830152604482018590529151918716916363a90fc19160648082019260009290919082900301818387803b15801561091957600080fd5b505af115801561092d573d6000803e3d6000fd5b50506040516326898fe160e01b81526001600160a01b03878116600483019081528782166024840152606060448401908152865160648501528651928b1695506326898fe19450899389938893929160840190602085019080838360005b838110156109a357818101518382015260200161098b565b50505050905090810190601f1680156109d05780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156109f157600080fd5b505af1158015610a05573d6000803e3d6000fd5b5050505061039e565b805115610a62576040805162461bcd60e51b815260206004820152601860248201527f5061737365642064617461206d757374206265206e756c6c0000000000000000604482015290519081900360640190fd5b604080516308bafae960e21b81526001600160a01b03868116600483015285811660248301529151918716916322ebeba491604480820192602092909190829003018186803b158015610ab457600080fd5b505afa158015610ac8573d6000803e3d6000fd5b505050506040513d6020811015610ade57600080fd5b50511561039e576060856001600160a01b031663a7bdad03866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610b3d57600080fd5b505afa158015610b51573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b7a57600080fd5b8101908080516040519392919084640100000000821115610b9a57600080fd5b908301906020820185811115610baf57600080fd5b8251866020820283011164010000000082111715610bcc57600080fd5b82525081516020918201928201910280838360005b83811015610bf9578181015183820152602001610be1565b505050509050016040525050509050856001600160a01b03166366cb8d2f866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b5051158015610c98575080516001145b15610d7257836001600160a01b031681600081518110610cb457fe5b60200260200101516001600160a01b031614610d015760405162461bcd60e51b8152600401808060200182810382526030815260200180610f1e6030913960400191505060405180910390fd5b856001600160a01b0316636f86c897866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610d5957600080fd5b505af1158015610d6d573d6000803e3d6000fd5b505050505b6040805163acf3f07760e01b81526001600160a01b038781166004830152868116602483015291519188169163acf3f0779160448082019260009290919082900301818387803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b50505050505050505050565b600082610df457506000610461565b82820282848281610e0157fe5b041461045e5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f4e6021913960400191505060405180910390fd5b600061045e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183610f075760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ecc578181015183820152602001610eb4565b50505050905090810190601f168015610ef95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610f1357fe5b049594505050505056fe45787465726e616c20706f736974696f6e73206d757374206265203020746f2072656d6f766520636f6d706f6e656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212202aa8793703b60db43560c583c824ebb22f935fc7d497e6a970f9f18acae7e4e264736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
