{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockMargin",
  "sourceName": "contracts/mocks/MockMargin.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "amm",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "config",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "amm_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "config_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "netPosition",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "netpostion",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "quoteToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reserve",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "newNetpositon",
          "type": "int256"
        }
      ],
      "name": "setNetPosition",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "inputToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "outputToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "inputAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "outputAmount",
          "type": "uint256"
        }
      ],
      "name": "swapProxy",
      "outputs": [
        {
          "internalType": "uint256[2]",
          "name": "amounts",
          "type": "uint256[2]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalPosition",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalpostion",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610860806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806379502c551161008c578063c55dae6311610066578063c55dae63146101bd578063cd3293de146101d0578063d9caed12146101d9578063f8c8765e146101ec576100ea565b806379502c5514610182578063833b0acb146101955780639dd155b11461019d576100ea565b806323e0afda116100c857806323e0afda1461013e578063269a87ec146101475780632a9439451461015a57806347e7ef241461016d576100ea565b806317fbe354146100ef578063181f66361461010a578063217a4b7014610113575b600080fd5b6100f761024a565b6040519081526020015b60405180910390f35b6100f760065481565b600354610126906001600160a01b031681565b6040516001600160a01b039091168152602001610101565b6100f760055481565b6100f7610155366004610710565b610267565b600154610126906001600160a01b031681565b61018061017b366004610663565b610273565b005b600054610126906001600160a01b031681565b6005546100f7565b6101b06101ab3660046105d4565b61041f565b6040516101019190610740565b600254610126906001600160a01b031681565b6100f760045481565b6101806101e7366004610628565b6104cd565b6101806101fa366004610581565b600280546001600160a01b039586166001600160a01b0319918216179091556003805494861694821694909417909355600180549285169284169290921790915560008054919093169116179055565b600061025760055461052c565b610262906007610789565b905090565b6005819055805b919050565b6001546001600160a01b031633146102d25760405162461bcd60e51b815260206004820152601b60248201527f4d617267696e2e6465706f7369743a20524551554952455f414d4d000000000060448201526064015b60405180910390fd5b600081116103225760405162461bcd60e51b815260206004820152601e60248201527f4d617267696e2e6465706f7369743a20414d4f554e545f49535f5a45524f000060448201526064016102c9565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190610728565b9050600454816103ae91906107e7565b8211156104095760405162461bcd60e51b815260206004820152602360248201527f4d617267696e2e6465706f7369743a20494e53554646494349454e545f414d4f60448201526215539560ea1b60648201526084016102c9565b816004546104179190610771565b600455505050565b61042761054c565b6001546040516371a1ff0960e11b81526001600160a01b0388811660048301528781166024830152868116604483015260648201869052608482018590529091169063e343fe129060a4016040805180830381600087803b15801561048b57600080fd5b505af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c3919061068c565b5095945050505050565b6001546001600160a01b031633146105275760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e77697468647261773a20524551554952455f414d4d0000000060448201526064016102c9565b505050565b600080821215610548576105418260006107a8565b905061026e565b5090565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461026e57600080fd5b60008060008060808587031215610596578384fd5b61059f8561056a565b93506105ad6020860161056a565b92506105bb6040860161056a565b91506105c96060860161056a565b905092959194509250565b600080600080600060a086880312156105eb578081fd5b6105f48661056a565b94506106026020870161056a565b93506106106040870161056a565b94979396509394606081013594506080013592915050565b60008060006060848603121561063c578283fd5b6106458461056a565b92506106536020850161056a565b9150604084013590509250925092565b60008060408385031215610675578182fd5b61067e8361056a565b946020939093013593505050565b60006040828403121561069d578081fd5b82601f8301126106ab578081fd5b6040516040810181811067ffffffffffffffff821117156106ce576106ce610814565b80604052508083856040860111156106e4578384fd5b835b60028110156107055781518352602092830192909101906001016106e6565b509195945050505050565b600060208284031215610721578081fd5b5035919050565b600060208284031215610739578081fd5b5051919050565b60408101818360005b6002811015610768578151835260209283019290910190600101610749565b50505092915050565b60008219821115610784576107846107fe565b500190565b60008160001904831182151516156107a3576107a36107fe565b500290565b60008083128015600160ff1b8501841216156107c6576107c66107fe565b6001600160ff1b03840183138116156107e1576107e16107fe565b50500390565b6000828210156107f9576107f96107fe565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122098aeac29c82fee89e52fa36227087547e1648f045c7f0001ee3b940a7a106f5264736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806379502c551161008c578063c55dae6311610066578063c55dae63146101bd578063cd3293de146101d0578063d9caed12146101d9578063f8c8765e146101ec576100ea565b806379502c5514610182578063833b0acb146101955780639dd155b11461019d576100ea565b806323e0afda116100c857806323e0afda1461013e578063269a87ec146101475780632a9439451461015a57806347e7ef241461016d576100ea565b806317fbe354146100ef578063181f66361461010a578063217a4b7014610113575b600080fd5b6100f761024a565b6040519081526020015b60405180910390f35b6100f760065481565b600354610126906001600160a01b031681565b6040516001600160a01b039091168152602001610101565b6100f760055481565b6100f7610155366004610710565b610267565b600154610126906001600160a01b031681565b61018061017b366004610663565b610273565b005b600054610126906001600160a01b031681565b6005546100f7565b6101b06101ab3660046105d4565b61041f565b6040516101019190610740565b600254610126906001600160a01b031681565b6100f760045481565b6101806101e7366004610628565b6104cd565b6101806101fa366004610581565b600280546001600160a01b039586166001600160a01b0319918216179091556003805494861694821694909417909355600180549285169284169290921790915560008054919093169116179055565b600061025760055461052c565b610262906007610789565b905090565b6005819055805b919050565b6001546001600160a01b031633146102d25760405162461bcd60e51b815260206004820152601b60248201527f4d617267696e2e6465706f7369743a20524551554952455f414d4d000000000060448201526064015b60405180910390fd5b600081116103225760405162461bcd60e51b815260206004820152601e60248201527f4d617267696e2e6465706f7369743a20414d4f554e545f49535f5a45524f000060448201526064016102c9565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e9190610728565b9050600454816103ae91906107e7565b8211156104095760405162461bcd60e51b815260206004820152602360248201527f4d617267696e2e6465706f7369743a20494e53554646494349454e545f414d4f60448201526215539560ea1b60648201526084016102c9565b816004546104179190610771565b600455505050565b61042761054c565b6001546040516371a1ff0960e11b81526001600160a01b0388811660048301528781166024830152868116604483015260648201869052608482018590529091169063e343fe129060a4016040805180830381600087803b15801561048b57600080fd5b505af115801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c3919061068c565b5095945050505050565b6001546001600160a01b031633146105275760405162461bcd60e51b815260206004820152601c60248201527f4d617267696e2e77697468647261773a20524551554952455f414d4d0000000060448201526064016102c9565b505050565b600080821215610548576105418260006107a8565b905061026e565b5090565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461026e57600080fd5b60008060008060808587031215610596578384fd5b61059f8561056a565b93506105ad6020860161056a565b92506105bb6040860161056a565b91506105c96060860161056a565b905092959194509250565b600080600080600060a086880312156105eb578081fd5b6105f48661056a565b94506106026020870161056a565b93506106106040870161056a565b94979396509394606081013594506080013592915050565b60008060006060848603121561063c578283fd5b6106458461056a565b92506106536020850161056a565b9150604084013590509250925092565b60008060408385031215610675578182fd5b61067e8361056a565b946020939093013593505050565b60006040828403121561069d578081fd5b82601f8301126106ab578081fd5b6040516040810181811067ffffffffffffffff821117156106ce576106ce610814565b80604052508083856040860111156106e4578384fd5b835b60028110156107055781518352602092830192909101906001016106e6565b509195945050505050565b600060208284031215610721578081fd5b5035919050565b600060208284031215610739578081fd5b5051919050565b60408101818360005b6002811015610768578151835260209283019290910190600101610749565b50505092915050565b60008219821115610784576107846107fe565b500190565b60008160001904831182151516156107a3576107a36107fe565b500290565b60008083128015600160ff1b8501841216156107c6576107c66107fe565b6001600160ff1b03840183138116156107e1576107e16107fe565b50500390565b6000828210156107f9576107f96107fe565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea264697066735822122098aeac29c82fee89e52fa36227087547e1648f045c7f0001ee3b940a7a106f5264736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
