{
  "_format": "hh-sol-artifact-1",
  "contractName": "DelegateApproval",
  "sourceName": "contracts/DelegateApproval.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "actions",
          "type": "uint8"
        }
      ],
      "name": "DelegationApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "actions",
          "type": "uint8"
        }
      ],
      "name": "DelegationRevoked",
      "type": "event"
    },
    {
      "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": "delegate",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "actions",
          "type": "uint8"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "name": "canAddLiquidityFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "name": "canOpenPositionFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "name": "canRemoveLiquidityFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "candidate",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "name": "getApprovedActions",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClearingHouseAddLiquidityAction",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClearingHouseOpenPositionAction",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClearingHouseRemoveLiquidityAction",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "trader",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "actions",
          "type": "uint8"
        }
      ],
      "name": "hasApprovalFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "actions",
          "type": "uint8"
        }
      ],
      "name": "revoke",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "setOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "updateOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610c7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100e05760003560e01c80639686a5b6116100875780639686a5b61461016b578063a08012a314610173578063a4f5dd3b14610193578063bc5920ba146101a6578063c43036f9146101ae578063c7d572e5146101c1578063cbab07b6146101d4578063f3ac8f12146101dc576100e0565b80631042c2ad146100e557806313af40351461010e57806315ed7caa146101235780634342e9661461012b5780636c8381f81461013e578063715018a6146101535780638129fc1c1461015b5780638da5cb5b14610163575b600080fd5b6100f86100f3366004610adb565b6101ef565b6040516101059190610bec565b60405180910390f35b61012161011c366004610ac1565b610216565b005b6100f8610371565b610121610139366004610b4f565b610376565b61014661043b565b6040516101059190610b78565b61012161044a565b6101216104eb565b610146610595565b6100f86105a4565b610186610181366004610adb565b6105a9565b6040516101059190610bc2565b6101866101a1366004610adb565b6105be565b6101216105cc565b6101866101bc366004610b0d565b6106b8565b6101866101cf366004610adb565b610702565b6100f8610710565b6101216101ea366004610b4f565b610715565b6000806101fc84846107c1565b60009081526067602052604090205460ff16949350505050565b61021e6107f4565b6001600160a01b031661022f610595565b6001600160a01b031614610273576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166102b7576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610303576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561034f576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b600290565b8060008160ff1611801561038e575060078160ff1611155b6103b35760405162461bcd60e51b81526004016103aa90610bcd565b60405180910390fd5b60006103bd6107f4565b905060006103cb82866107c1565b60008181526067602052604090819020805460ff80821689171660ff19909116179055519091506001600160a01b038316907f283397791e09409b99db81b486878c1fe41c0d40fb646e721f04bc52549fbc829061042c9088908890610ba6565b60405180910390a25050505050565b6034546001600160a01b031690565b6104526107f4565b6001600160a01b0316610463610595565b6001600160a01b0316146104a7576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020610c29833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b600054610100900460ff168061050457506105046107f8565b80610512575060005460ff16155b61054d5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff16158015610578576000805460ff1961ff0019909116610100171660011790555b610580610809565b8015610592576000805461ff00191690555b50565b6033546001600160a01b031690565b600490565b60006105b7838360016108f8565b9392505050565b60006105b7838360046108f8565b6034546001600160a01b0316610611576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6106196107f4565b6034546001600160a01b03908116911614610664576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020610c2983398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b60008160008160ff161180156106d2575060078160ff1611155b6106ee5760405162461bcd60e51b81526004016103aa90610bcd565b6106f98585856108f8565b95945050505050565b60006105b7838360026108f8565b600190565b8060008160ff1611801561072d575060078160ff1611155b6107495760405162461bcd60e51b81526004016103aa90610bcd565b60006107536107f4565b9050600061076182866107c1565b60008181526067602052604090819020805460ff881982161660ff19909116179055519091506001600160a01b038316907f1e84a572409e246a20065a062c50f43afa35723be0d38bf1a25e7ffb38c699359061042c9088908890610ba6565b600082826040516020016107d6929190610b8c565b60405160208183030381529060405280519060200120905092915050565b3390565b60006108033061095f565b15905090565b600054610100900460ff168061082257506108226107f8565b80610830575060005460ff16155b61086b5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff16158015610896576000805460ff1961ff0019909116610100171660011790555b61089e610969565b60006108a86107f4565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610c29833981519152908290a3508015610592576000805461ff001916905550565b60008160008160ff16118015610912575060078160ff1611155b61092e5760405162461bcd60e51b81526004016103aa90610bcd565b600061093a86866107c1565b600090815260676020526040902054841660ff90811690851614925050509392505050565b803b15155b919050565b600054610100900460ff168061098257506109826107f8565b80610990575060005460ff16155b6109cb5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff161580156109f6576000805460ff1961ff0019909116610100171660011790555b610580600054610100900460ff1680610a125750610a126107f8565b80610a20575060005460ff16155b610a5b5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff16158015610580576000805460ff1961ff0019909116610100171660011790558015610592576000805461ff001916905550565b80356001600160a01b038116811461096457600080fd5b803560ff8116811461096457600080fd5b600060208284031215610ad2578081fd5b6105b782610a99565b60008060408385031215610aed578081fd5b610af683610a99565b9150610b0460208401610a99565b90509250929050565b600080600060608486031215610b21578081fd5b610b2a84610a99565b9250610b3860208501610a99565b9150610b4660408501610ab0565b90509250925092565b60008060408385031215610b61578182fd5b610b6a83610a99565b9150610b0460208401610ab0565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0392909216825260ff16602082015260400190565b901515815260200190565b60208082526005908201526444415f494160d81b604082015260600190565b60ff9190911681526020019056fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220ed808e61d7c95a68272b9962c2fd034ab7a5ed381c76a1686586258873d9d50364736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100e05760003560e01c80639686a5b6116100875780639686a5b61461016b578063a08012a314610173578063a4f5dd3b14610193578063bc5920ba146101a6578063c43036f9146101ae578063c7d572e5146101c1578063cbab07b6146101d4578063f3ac8f12146101dc576100e0565b80631042c2ad146100e557806313af40351461010e57806315ed7caa146101235780634342e9661461012b5780636c8381f81461013e578063715018a6146101535780638129fc1c1461015b5780638da5cb5b14610163575b600080fd5b6100f86100f3366004610adb565b6101ef565b6040516101059190610bec565b60405180910390f35b61012161011c366004610ac1565b610216565b005b6100f8610371565b610121610139366004610b4f565b610376565b61014661043b565b6040516101059190610b78565b61012161044a565b6101216104eb565b610146610595565b6100f86105a4565b610186610181366004610adb565b6105a9565b6040516101059190610bc2565b6101866101a1366004610adb565b6105be565b6101216105cc565b6101866101bc366004610b0d565b6106b8565b6101866101cf366004610adb565b610702565b6100f8610710565b6101216101ea366004610b4f565b610715565b6000806101fc84846107c1565b60009081526067602052604090205460ff16949350505050565b61021e6107f4565b6001600160a01b031661022f610595565b6001600160a01b031614610273576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b0381166102b7576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b0382811691161415610303576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b038281169116141561034f576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b600290565b8060008160ff1611801561038e575060078160ff1611155b6103b35760405162461bcd60e51b81526004016103aa90610bcd565b60405180910390fd5b60006103bd6107f4565b905060006103cb82866107c1565b60008181526067602052604090819020805460ff80821689171660ff19909116179055519091506001600160a01b038316907f283397791e09409b99db81b486878c1fe41c0d40fb646e721f04bc52549fbc829061042c9088908890610ba6565b60405180910390a25050505050565b6034546001600160a01b031690565b6104526107f4565b6001600160a01b0316610463610595565b6001600160a01b0316146104a7576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b031690600080516020610c29833981519152908390a3603380546001600160a01b0319908116909155603480549091169055565b600054610100900460ff168061050457506105046107f8565b80610512575060005460ff16155b61054d5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff16158015610578576000805460ff1961ff0019909116610100171660011790555b610580610809565b8015610592576000805461ff00191690555b50565b6033546001600160a01b031690565b600490565b60006105b7838360016108f8565b9392505050565b60006105b7838360046108f8565b6034546001600160a01b0316610611576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6106196107f4565b6034546001600160a01b03908116911614610664576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b039283169290911690600080516020610c2983398151915290600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b60008160008160ff161180156106d2575060078160ff1611155b6106ee5760405162461bcd60e51b81526004016103aa90610bcd565b6106f98585856108f8565b95945050505050565b60006105b7838360026108f8565b600190565b8060008160ff1611801561072d575060078160ff1611155b6107495760405162461bcd60e51b81526004016103aa90610bcd565b60006107536107f4565b9050600061076182866107c1565b60008181526067602052604090819020805460ff881982161660ff19909116179055519091506001600160a01b038316907f1e84a572409e246a20065a062c50f43afa35723be0d38bf1a25e7ffb38c699359061042c9088908890610ba6565b600082826040516020016107d6929190610b8c565b60405160208183030381529060405280519060200120905092915050565b3390565b60006108033061095f565b15905090565b600054610100900460ff168061082257506108226107f8565b80610830575060005460ff16155b61086b5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff16158015610896576000805460ff1961ff0019909116610100171660011790555b61089e610969565b60006108a86107f4565b603380546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610c29833981519152908290a3508015610592576000805461ff001916905550565b60008160008160ff16118015610912575060078160ff1611155b61092e5760405162461bcd60e51b81526004016103aa90610bcd565b600061093a86866107c1565b600090815260676020526040902054841660ff90811690851614925050509392505050565b803b15155b919050565b600054610100900460ff168061098257506109826107f8565b80610990575060005460ff16155b6109cb5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff161580156109f6576000805460ff1961ff0019909116610100171660011790555b610580600054610100900460ff1680610a125750610a126107f8565b80610a20575060005460ff16155b610a5b5760405162461bcd60e51b815260040180806020018281038252602e815260200180610bfb602e913960400191505060405180910390fd5b600054610100900460ff16158015610580576000805460ff1961ff0019909116610100171660011790558015610592576000805461ff001916905550565b80356001600160a01b038116811461096457600080fd5b803560ff8116811461096457600080fd5b600060208284031215610ad2578081fd5b6105b782610a99565b60008060408385031215610aed578081fd5b610af683610a99565b9150610b0460208401610a99565b90509250929050565b600080600060608486031215610b21578081fd5b610b2a84610a99565b9250610b3860208501610a99565b9150610b4660408501610ab0565b90509250925092565b60008060408385031215610b61578182fd5b610b6a83610a99565b9150610b0460208401610ab0565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0392909216825260ff16602082015260400190565b901515815260200190565b60208082526005908201526444415f494160d81b604082015260600190565b60ff9190911681526020019056fe496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65648be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220ed808e61d7c95a68272b9962c2fd034ab7a5ed381c76a1686586258873d9d50364736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
