{"file_path":"main.sol","creation_status":"success","source_code":"// This contract is part of Zellic’s smart contract dataset, which is a collection of publicly available contract code gathered as of March 2023.\n\n// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.13;\n\ninterface IMarket {\n    function recall(uint amount) external;\n    function totalDebt() external view returns (uint);\n    function borrowPaused() external view returns (bool);\n}\n\ninterface IDola {\n    function mint(address to, uint amount) external;\n    function burn(uint amount) external;\n    function balanceOf(address user) external view returns (uint);\n    function transfer(address to, uint amount) external returns (bool);\n}\n\ninterface IDBR {\n    function markets(address) external view returns (bool);\n}\n\n/**\n@title The Market Fed\n@notice Feds are a class of contracts in the Inverse Finance ecosystem responsible for minting and burning DOLA.\n This specific Fed can expand DOLA supply into markets and contract DOLA supply from markets.\n*/\ncontract Fed {\n\n    IDBR public immutable dbr;\n    IDola public immutable dola;\n    address public gov;\n    address public chair;\n    uint public supplyCeiling;\n    uint public globalSupply;\n    mapping (IMarket => uint) public supplies;\n    mapping (IMarket => uint) public ceilings;\n\n    constructor (IDBR _dbr, IDola _dola, address _gov, address _chair, uint _supplyCeiling) {\n        dbr = _dbr;\n        dola = _dola;\n        gov = _gov;\n        chair = _chair;\n        supplyCeiling = _supplyCeiling;\n    }\n\n    /**\n    @notice Change the governance of the Fed contact. Only callable by governance.\n    @param _gov The address of the new governance contract\n    */\n    function changeGov(address _gov) public {\n        require(msg.sender == gov, \"ONLY GOV\");\n        gov = _gov;\n    }\n\n    /**\n    @notice Set the supply ceiling of the Fed. Only callable by governance.\n    @param _supplyCeiling Amount to set the supply ceiling to\n    */\n    function changeSupplyCeiling(uint _supplyCeiling) public {\n        require(msg.sender == gov, \"ONLY GOV\");\n        supplyCeiling = _supplyCeiling;\n    }\n\n    /**\n    @notice Set a market's isolated ceiling of the Fed. Only callable by governance.\n    @param _market Market to set the ceiling for\n    @param _ceiling Amount to set the ceiling to\n    */\n    function changeMarketCeiling(IMarket _market, uint _ceiling) public {\n        require(msg.sender == gov, \"ONLY GOV\");\n        ceilings[_market] = _ceiling;\n    }\n\n    /**\n    @notice Set the chair of the fed. Only callable by governance.\n    @param _chair Address of the new chair.\n    */\n    function changeChair(address _chair) public {\n        require(msg.sender == gov, \"ONLY GOV\");\n        chair = _chair;\n    }\n\n    /**\n    @notice Set the address of the chair to the 0 address. Only callable by the chair.\n    @dev Useful for immediately removing chair powers in case of a wallet compromise.\n    */\n    function resign() public {\n        require(msg.sender == chair, \"ONLY CHAIR\");\n        chair = address(0);\n    }\n\n    /**\n    @notice Expand the amount of DOLA by depositing the amount into a specific market.\n    @dev While not immediately dangerous to the DOLA peg, make sure the market can absorb the new potential supply. Market must have a positive ceiling before expansion.\n    @param market The market to add additional DOLA supply to.\n    @param amount The amount of DOLA to mint and supply to the market.\n    */\n    function expansion(IMarket market, uint amount) public {\n        require(msg.sender == chair, \"ONLY CHAIR\");\n        require(dbr.markets(address(market)), \"UNSUPPORTED MARKET\");\n        require(market.borrowPaused() != true, \"CANNOT EXPAND PAUSED MARKETS\");\n        dola.mint(address(market), amount);\n        supplies[market] += amount;\n        globalSupply += amount;\n        require(globalSupply <= supplyCeiling);\n        require(supplies[market] <= ceilings[market]);\n        emit Expansion(market, amount);\n    }\n\n    /**\n    @notice Contract the amount of DOLA by withdrawing some amount of DOLA from a market, before burning it.\n    @dev Markets can have more DOLA in them than they've been supplied, due to force replenishes. This call will revert if trying to contract more than have been supplied.\n    @param market The market to withdraw DOLA from\n    @param amount The amount of DOLA to withdraw and burn.\n    */\n    function contraction(IMarket market, uint amount) public {\n        require(msg.sender == chair, \"ONLY CHAIR\");\n        require(dbr.markets(address(market)), \"UNSUPPORTED MARKET\");\n        uint supply = supplies[market];\n        require(amount <= supply, \"AMOUNT TOO BIG\"); // can't burn profits\n        market.recall(amount);\n        dola.burn(amount);\n        supplies[market] -= amount;\n        globalSupply -= amount;\n        emit Contraction(market, amount);\n    }\n\n    /**\n    @notice Gets the profit of a market.\n    @param market The market to withdraw profit from.\n    @return A uint representing the profit of the market.\n    */\n    function getProfit(IMarket market) public view returns (uint) {\n        uint marketValue = dola.balanceOf(address(market)) + market.totalDebt();\n        uint supply = supplies[market];\n        if(supply >= marketValue) return 0;\n        return marketValue - supply;\n    }\n\n    /**\n    @notice Takes profit from a market\n    @param market The market to take profit from.\n    */\n    function takeProfit(IMarket market) public {\n        uint profit = getProfit(market);\n        if(profit > 0) {\n            market.recall(profit);\n            dola.transfer(gov, profit);\n        }\n    }\n\n\n    event Expansion(IMarket indexed market, uint amount);\n    event Contraction(IMarket indexed market, uint amount);\n\n}","deployed_bytecode":"0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063b132240d116100a2578063c600e1dc11610071578063c600e1dc1461021c578063c7ed69cd1461022f578063ea0593e414610256578063fa95a4011461027d578063fdf893f51461029057600080fd5b8063b132240d146101c3578063b891f797146101e3578063b90d0bcd146101f6578063c002e56e1461020957600080fd5b806376105f37116100de57806376105f37146101815780637e33f789146101945780638b723821146101a7578063a962ef1e146101b057600080fd5b806312d43a5114610110578063274cee31146101405780632b52684d1461016e57806369652fcf14610177575b600080fd5b600054610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61016061014e366004610bf4565b60046020526000908152604090205481565b604051908152602001610137565b61016060025481565b61017f6102a3565b005b61017f61018f366004610c18565b6102e8565b61017f6101a2366004610c44565b61032e565b61016060035481565b61017f6101be366004610bf4565b61035d565b6101606101d1366004610bf4565b60056020526000908152604090205481565b61017f6101f1366004610c18565b6103a9565b61017f610204366004610bf4565b610655565b61017f610217366004610bf4565b610760565b61016061022a366004610bf4565b6107ac565b6101237f000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d71081565b6101237f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce481565b61017f61028b366004610c18565b6108e4565b600154610123906001600160a01b031681565b6001546001600160a01b031633146102d65760405162461bcd60e51b81526004016102cd90610c5d565b60405180910390fd5b600180546001600160a01b0319169055565b6000546001600160a01b031633146103125760405162461bcd60e51b81526004016102cd90610c81565b6001600160a01b03909116600090815260056020526040902055565b6000546001600160a01b031633146103585760405162461bcd60e51b81526004016102cd90610c81565b600255565b6000546001600160a01b031633146103875760405162461bcd60e51b81526004016102cd90610c81565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146103d35760405162461bcd60e51b81526004016102cd90610c5d565b604051638e8f294b60e01b81526001600160a01b0383811660048301527f000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d7101690638e8f294b90602401602060405180830381865afa158015610439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045d9190610ca3565b61049e5760405162461bcd60e51b8152602060048201526012602482015271155394d5541413d49511510813505492d15560721b60448201526064016102cd565b6001600160a01b038216600090815260046020526040902054808211156104f85760405162461bcd60e51b815260206004820152600e60248201526d414d4f554e5420544f4f2042494760901b60448201526064016102cd565b604051637d32e79360e01b8152600481018390526001600160a01b03841690637d32e79390602401600060405180830381600087803b15801561053a57600080fd5b505af115801561054e573d6000803e3d6000fd5b5050604051630852cd8d60e31b8152600481018590527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce46001600160a01b031692506342966c689150602401600060405180830381600087803b1580156105b457600080fd5b505af11580156105c8573d6000803e3d6000fd5b505050506001600160a01b038316600090815260046020526040812080548492906105f4908490610cdb565b92505081905550816003600082825461060d9190610cdb565b90915550506040518281526001600160a01b038416907f6bfec639a4f12aa59c8346bbc8be8ca30057bc316778a9919c9bda271f1741cb9060200160405180910390a2505050565b6000610660826107ac565b9050801561075c57604051637d32e79360e01b8152600481018290526001600160a01b03831690637d32e79390602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505060005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4909116925063a9059cbb91506044016020604051808303816000875af1158015610736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075a9190610ca3565b505b5050565b6000546001600160a01b0316331461078a5760405162461bcd60e51b81526004016102cd90610c81565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080826001600160a01b031663fc7b9c186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108119190610cf2565b6040516370a0823160e01b81526001600160a01b0385811660048301527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce416906370a0823190602401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190610cf2565b6108a59190610d0b565b6001600160a01b0384166000908152600460205260409020549091508181106108d2575060009392505050565b6108dc8183610cdb565b949350505050565b6001546001600160a01b0316331461090e5760405162461bcd60e51b81526004016102cd90610c5d565b604051638e8f294b60e01b81526001600160a01b0383811660048301527f000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d7101690638e8f294b90602401602060405180830381865afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190610ca3565b6109d95760405162461bcd60e51b8152602060048201526012602482015271155394d5541413d49511510813505492d15560721b60448201526064016102cd565b816001600160a01b031663bcb4bbea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3b9190610ca3565b1515600103610a8c5760405162461bcd60e51b815260206004820152601c60248201527f43414e4e4f5420455850414e4420504155534544204d41524b4554530000000060448201526064016102cd565b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce416906340c10f1990604401600060405180830381600087803b158015610af657600080fd5b505af1158015610b0a573d6000803e3d6000fd5b505050506001600160a01b03821660009081526004602052604081208054839290610b36908490610d0b565b925050819055508060036000828254610b4f9190610d0b565b90915550506002546003541115610b6557600080fd5b6001600160a01b0382166000908152600560209081526040808320546004909252909120541115610b9557600080fd5b816001600160a01b03167fcb1a873dc7afc9834dabddc6e5643ad78e087f41a67dd561559cc6fc92686d7782604051610bd091815260200190565b60405180910390a25050565b6001600160a01b0381168114610bf157600080fd5b50565b600060208284031215610c0657600080fd5b8135610c1181610bdc565b9392505050565b60008060408385031215610c2b57600080fd5b8235610c3681610bdc565b946020939093013593505050565b600060208284031215610c5657600080fd5b5035919050565b6020808252600a908201526927a7262c9021a420a4a960b11b604082015260600190565b60208082526008908201526727a7262c9023a7ab60c11b604082015260600190565b600060208284031215610cb557600080fd5b81518015158114610c1157600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610ced57610ced610cc5565b500390565b600060208284031215610d0457600080fd5b5051919050565b60008219821115610d1e57610d1e610cc5565b50019056fea2646970667358221220f9ce4eead929e9a34d099ab5147163c8f0c9f15668cb2bcf23307f3a28fcd64364736f6c634300080d0033","optimization_enabled":true,"verified_twin_address_hash":null,"is_verified":true,"compiler_settings":{"libraries":{"main.sol":{}},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"outputSelection":{"*":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers"]}}},"optimization_runs":200,"sourcify_repo_url":null,"decoded_constructor_args":[["0xAD038Eb671c44b853887A7E32528FaB35dC5D710",{"internalType":"contract IDBR","name":"_dbr","type":"address"}],["0x865377367054516e17014CcdED1e7d814EDC9ce4",{"internalType":"contract IDola","name":"_dola","type":"address"}],["0x926dF14a23BE491164dCF93f4c468A50ef659D5B",{"internalType":"address","name":"_gov","type":"address"}],["0x8F97cCA30Dbe80e7a8B462F1dD1a51C32accDfC8",{"internalType":"address","name":"_chair","type":"address"}],["500000000000000000000000",{"internalType":"uint256","name":"_supplyCeiling","type":"uint256"}]],"compiler_version":"v0.8.13+commit.abaa5c0e","is_verified_via_verifier_alliance":false,"verified_at":"2024-02-14T03:57:55.374324Z","implementations":[],"proxy_type":null,"external_libraries":[],"creation_bytecode":"0x60c060405234801561001057600080fd5b50604051610e9a380380610e9a83398101604081905261002f91610087565b6001600160a01b0394851660805292841660a052600080549285166001600160a01b031993841617905560018054919094169116179091556002556100f2565b6001600160a01b038116811461008457600080fd5b50565b600080600080600060a0868803121561009f57600080fd5b85516100aa8161006f565b60208701519095506100bb8161006f565b60408701519094506100cc8161006f565b60608701519093506100dd8161006f565b80925050608086015190509295509295909350565b60805160a051610d596101416000396000818161025b01528181610566015281816106e9015281816108300152610ab2015260008181610234015281816103f2015261092d0152610d596000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063b132240d116100a2578063c600e1dc11610071578063c600e1dc1461021c578063c7ed69cd1461022f578063ea0593e414610256578063fa95a4011461027d578063fdf893f51461029057600080fd5b8063b132240d146101c3578063b891f797146101e3578063b90d0bcd146101f6578063c002e56e1461020957600080fd5b806376105f37116100de57806376105f37146101815780637e33f789146101945780638b723821146101a7578063a962ef1e146101b057600080fd5b806312d43a5114610110578063274cee31146101405780632b52684d1461016e57806369652fcf14610177575b600080fd5b600054610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61016061014e366004610bf4565b60046020526000908152604090205481565b604051908152602001610137565b61016060025481565b61017f6102a3565b005b61017f61018f366004610c18565b6102e8565b61017f6101a2366004610c44565b61032e565b61016060035481565b61017f6101be366004610bf4565b61035d565b6101606101d1366004610bf4565b60056020526000908152604090205481565b61017f6101f1366004610c18565b6103a9565b61017f610204366004610bf4565b610655565b61017f610217366004610bf4565b610760565b61016061022a366004610bf4565b6107ac565b6101237f000000000000000000000000000000000000000000000000000000000000000081565b6101237f000000000000000000000000000000000000000000000000000000000000000081565b61017f61028b366004610c18565b6108e4565b600154610123906001600160a01b031681565b6001546001600160a01b031633146102d65760405162461bcd60e51b81526004016102cd90610c5d565b60405180910390fd5b600180546001600160a01b0319169055565b6000546001600160a01b031633146103125760405162461bcd60e51b81526004016102cd90610c81565b6001600160a01b03909116600090815260056020526040902055565b6000546001600160a01b031633146103585760405162461bcd60e51b81526004016102cd90610c81565b600255565b6000546001600160a01b031633146103875760405162461bcd60e51b81526004016102cd90610c81565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146103d35760405162461bcd60e51b81526004016102cd90610c5d565b604051638e8f294b60e01b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638e8f294b90602401602060405180830381865afa158015610439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045d9190610ca3565b61049e5760405162461bcd60e51b8152602060048201526012602482015271155394d5541413d49511510813505492d15560721b60448201526064016102cd565b6001600160a01b038216600090815260046020526040902054808211156104f85760405162461bcd60e51b815260206004820152600e60248201526d414d4f554e5420544f4f2042494760901b60448201526064016102cd565b604051637d32e79360e01b8152600481018390526001600160a01b03841690637d32e79390602401600060405180830381600087803b15801561053a57600080fd5b505af115801561054e573d6000803e3d6000fd5b5050604051630852cd8d60e31b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506342966c689150602401600060405180830381600087803b1580156105b457600080fd5b505af11580156105c8573d6000803e3d6000fd5b505050506001600160a01b038316600090815260046020526040812080548492906105f4908490610cdb565b92505081905550816003600082825461060d9190610cdb565b90915550506040518281526001600160a01b038416907f6bfec639a4f12aa59c8346bbc8be8ca30057bc316778a9919c9bda271f1741cb9060200160405180910390a2505050565b6000610660826107ac565b9050801561075c57604051637d32e79360e01b8152600481018290526001600160a01b03831690637d32e79390602401600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b505060005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590527f0000000000000000000000000000000000000000000000000000000000000000909116925063a9059cbb91506044016020604051808303816000875af1158015610736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075a9190610ca3565b505b5050565b6000546001600160a01b0316331461078a5760405162461bcd60e51b81526004016102cd90610c81565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080826001600160a01b031663fc7b9c186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108119190610cf2565b6040516370a0823160e01b81526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089b9190610cf2565b6108a59190610d0b565b6001600160a01b0384166000908152600460205260409020549091508181106108d2575060009392505050565b6108dc8183610cdb565b949350505050565b6001546001600160a01b0316331461090e5760405162461bcd60e51b81526004016102cd90610c5d565b604051638e8f294b60e01b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690638e8f294b90602401602060405180830381865afa158015610974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109989190610ca3565b6109d95760405162461bcd60e51b8152602060048201526012602482015271155394d5541413d49511510813505492d15560721b60448201526064016102cd565b816001600160a01b031663bcb4bbea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3b9190610ca3565b1515600103610a8c5760405162461bcd60e51b815260206004820152601c60248201527f43414e4e4f5420455850414e4420504155534544204d41524b4554530000000060448201526064016102cd565b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b158015610af657600080fd5b505af1158015610b0a573d6000803e3d6000fd5b505050506001600160a01b03821660009081526004602052604081208054839290610b36908490610d0b565b925050819055508060036000828254610b4f9190610d0b565b90915550506002546003541115610b6557600080fd5b6001600160a01b0382166000908152600560209081526040808320546004909252909120541115610b9557600080fd5b816001600160a01b03167fcb1a873dc7afc9834dabddc6e5643ad78e087f41a67dd561559cc6fc92686d7782604051610bd091815260200190565b60405180910390a25050565b6001600160a01b0381168114610bf157600080fd5b50565b600060208284031215610c0657600080fd5b8135610c1181610bdc565b9392505050565b60008060408385031215610c2b57600080fd5b8235610c3681610bdc565b946020939093013593505050565b600060208284031215610c5657600080fd5b5035919050565b6020808252600a908201526927a7262c9021a420a4a960b11b604082015260600190565b60208082526008908201526727a7262c9023a7ab60c11b604082015260600190565b600060208284031215610cb557600080fd5b81518015158114610c1157600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610ced57610ced610cc5565b500390565b600060208284031215610d0457600080fd5b5051919050565b60008219821115610d1e57610d1e610cc5565b50019056fea2646970667358221220f9ce4eead929e9a34d099ab5147163c8f0c9f15668cb2bcf23307f3a28fcd64364736f6c634300080d0033000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d710000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b0000000000000000000000008f97cca30dbe80e7a8b462f1dd1a51c32accdfc80000000000000000000000000000000000000000000069e10de76676d0800000","name":"Fed","is_blueprint":false,"license_type":"none","is_fully_verified":false,"is_verified_via_eth_bytecode_db":true,"language":"solidity","evm_version":"default","can_be_visualized_via_sol2uml":true,"is_verified_via_sourcify":false,"additional_sources":[],"certified":false,"conflicting_implementations":null,"abi":[{"inputs":[{"internalType":"contract IDBR","name":"_dbr","type":"address"},{"internalType":"contract IDola","name":"_dola","type":"address"},{"internalType":"address","name":"_gov","type":"address"},{"internalType":"address","name":"_chair","type":"address"},{"internalType":"uint256","name":"_supplyCeiling","type":"uint256"}],"type":"constructor"},{"inputs":[{"internalType":"contract IMarket","name":"","type":"address"}],"name":"ceilings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_chair","type":"address"}],"name":"changeChair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"changeGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMarket","name":"_market","type":"address"},{"internalType":"uint256","name":"_ceiling","type":"uint256"}],"name":"changeMarketCeiling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supplyCeiling","type":"uint256"}],"name":"changeSupplyCeiling","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMarket","name":"market","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"contraction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dbr","outputs":[{"internalType":"contract IDBR","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dola","outputs":[{"internalType":"contract IDola","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IMarket","name":"market","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"expansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMarket","name":"market","type":"address"}],"name":"getProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"globalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMarket","name":"","type":"address"}],"name":"supplies","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyCeiling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IMarket","name":"market","type":"address"}],"name":"takeProfit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"market","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Contraction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"market","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Expansion","type":"event"}],"is_changed_bytecode":false,"is_partially_verified":true,"constructor_args":"000000000000000000000000ad038eb671c44b853887a7e32528fab35dc5d710000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4000000000000000000000000926df14a23be491164dcf93f4c468a50ef659d5b0000000000000000000000008f97cca30dbe80e7a8b462f1dd1a51c32accdfc80000000000000000000000000000000000000000000069e10de76676d0800000"}