{
  "_format": "hh-sol-artifact-1",
  "contractName": "PairFactory",
  "sourceName": "contracts/core/PairFactory.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "NewOwner",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "amm",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "margin",
          "type": "address"
        }
      ],
      "name": "NewPair",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldPendingOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newPendingOwner",
          "type": "address"
        }
      ],
      "name": "NewPendingOwner",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ammFactory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        }
      ],
      "name": "createPair",
      "outputs": [
        {
          "internalType": "address",
          "name": "amm",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "margin",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        }
      ],
      "name": "getAmm",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "baseToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "quoteToken",
          "type": "address"
        }
      ],
      "name": "getMargin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "ammFactory_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "marginFactory_",
          "type": "address"
        }
      ],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "marginFactory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newPendingOwner",
          "type": "address"
        }
      ],
      "name": "setPendingOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916331790556108ba806100326000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063c9c6539611610066578063c9c6539614610121578063dacda92f14610154578063e30c397814610167578063ebbc49651461017a578063f09a4016146101825761009e565b80630db58602146100a357806365cc7a1d146100d35780638da5cb5b146100e6578063bacf68ed146100f9578063c42069ec1461010c575b600080fd5b6100b66100b1366004610834565b610195565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b66100e1366004610834565b610223565b6000546100b6906001600160a01b031681565b6003546100b6906001600160a01b031681565b61011f61011a3660046107fc565b61025e565b005b61013461012f366004610834565b610367565b604080516001600160a01b039384168152929091166020830152016100ca565b6002546100b6906001600160a01b031681565b6001546100b6906001600160a01b031681565b61011f6105ad565b61011f610190366004610834565b6106a1565b6003546040516306dac30160e11b81526001600160a01b03848116600483015283811660248301526000921690630db58602906044015b60206040518083038186803b1580156101e457600080fd5b505afa1580156101f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021c9190610818565b9392505050565b6002546040516365cc7a1d60e01b81526001600160a01b038481166004830152838116602483015260009216906365cc7a1d906044016101cc565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820152601660248201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b60448201526064015b60405180910390fd5b6001546001600160a01b038281169116141561030b5760405162461bcd60e51b815260206004820152601460248201527313dddb98589b194e881053149150511657d4d15560621b60448201526064016102ad565b6001546040516001600160a01b038084169216907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051635131c85b60e01b81526001600160a01b03848116600483015283811660248301526000928392911690635131c85b90604401602060405180830381600087803b1580156103ba57600080fd5b505af11580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f29190610818565b600354604051630211406b60e01b81526001600160a01b0387811660048301528681166024830152929450911690630211406b90604401602060405180830381600087803b15801561044357600080fd5b505af1158015610457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047b9190610818565b6002546040516335e30d4160e01b81526001600160a01b038781166004830152868116602483015280841660448301529293509116906335e30d4190606401600060405180830381600087803b1580156104d457600080fd5b505af11580156104e8573d6000803e3d6000fd5b50506003546040516325c0f76560e21b81526001600160a01b038881166004830152878116602483015286811660448301529091169250639703dd949150606401600060405180830381600087803b15801561054357600080fd5b505af1158015610557573d6000803e3d6000fd5b5050604080516001600160a01b03868116825285811660208301528088169450881692507fb231fe977931114284ce64d77cdfe4bcb8121c500a095d281b55216f7e225854910160405180910390a39250929050565b6001546001600160a01b031633146106075760405162461bcd60e51b815260206004820152601e60248201527f4f776e61626c653a20524551554952455f50454e44494e475f4f574e4552000060448201526064016102ad565b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a36001546040516001600160a01b03918216918316907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a35050565b6000546001600160a01b031633146106f45760405162461bcd60e51b815260206004820152601660248201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b60448201526064016102ad565b6002546001600160a01b031615801561071657506003546001600160a01b0316155b6107625760405162461bcd60e51b815260206004820152601b60248201527f50616972466163746f72793a20414c52454144595f494e49544544000000000060448201526064016102ad565b6001600160a01b0382161580159061078257506001600160a01b03811615155b6107ce5760405162461bcd60e51b815260206004820152601960248201527f50616972466163746f72793a205a45524f5f414444524553530000000000000060448201526064016102ad565b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b60006020828403121561080d578081fd5b813561021c8161086c565b600060208284031215610829578081fd5b815161021c8161086c565b60008060408385031215610846578081fd5b82356108518161086c565b915060208301356108618161086c565b809150509250929050565b6001600160a01b038116811461088157600080fd5b5056fea2646970667358221220dd5c0523c14f2b01b2bbfe6fdeeebf9cfe12b70ea1efd0047e3df00c3a11368f64736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063c9c6539611610066578063c9c6539614610121578063dacda92f14610154578063e30c397814610167578063ebbc49651461017a578063f09a4016146101825761009e565b80630db58602146100a357806365cc7a1d146100d35780638da5cb5b146100e6578063bacf68ed146100f9578063c42069ec1461010c575b600080fd5b6100b66100b1366004610834565b610195565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b66100e1366004610834565b610223565b6000546100b6906001600160a01b031681565b6003546100b6906001600160a01b031681565b61011f61011a3660046107fc565b61025e565b005b61013461012f366004610834565b610367565b604080516001600160a01b039384168152929091166020830152016100ca565b6002546100b6906001600160a01b031681565b6001546100b6906001600160a01b031681565b61011f6105ad565b61011f610190366004610834565b6106a1565b6003546040516306dac30160e11b81526001600160a01b03848116600483015283811660248301526000921690630db58602906044015b60206040518083038186803b1580156101e457600080fd5b505afa1580156101f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021c9190610818565b9392505050565b6002546040516365cc7a1d60e01b81526001600160a01b038481166004830152838116602483015260009216906365cc7a1d906044016101cc565b6000546001600160a01b031633146102b65760405162461bcd60e51b815260206004820152601660248201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b60448201526064015b60405180910390fd5b6001546001600160a01b038281169116141561030b5760405162461bcd60e51b815260206004820152601460248201527313dddb98589b194e881053149150511657d4d15560621b60448201526064016102ad565b6001546040516001600160a01b038084169216907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b600254604051635131c85b60e01b81526001600160a01b03848116600483015283811660248301526000928392911690635131c85b90604401602060405180830381600087803b1580156103ba57600080fd5b505af11580156103ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f29190610818565b600354604051630211406b60e01b81526001600160a01b0387811660048301528681166024830152929450911690630211406b90604401602060405180830381600087803b15801561044357600080fd5b505af1158015610457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047b9190610818565b6002546040516335e30d4160e01b81526001600160a01b038781166004830152868116602483015280841660448301529293509116906335e30d4190606401600060405180830381600087803b1580156104d457600080fd5b505af11580156104e8573d6000803e3d6000fd5b50506003546040516325c0f76560e21b81526001600160a01b038881166004830152878116602483015286811660448301529091169250639703dd949150606401600060405180830381600087803b15801561054357600080fd5b505af1158015610557573d6000803e3d6000fd5b5050604080516001600160a01b03868116825285811660208301528088169450881692507fb231fe977931114284ce64d77cdfe4bcb8121c500a095d281b55216f7e225854910160405180910390a39250929050565b6001546001600160a01b031633146106075760405162461bcd60e51b815260206004820152601e60248201527f4f776e61626c653a20524551554952455f50454e44494e475f4f574e4552000060448201526064016102ad565b60008054600180546001600160a01b038082166001600160a01b03198086168217808855931690935560405193811694929391169184917f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b23649190a36001546040516001600160a01b03918216918316907fb3d55174552271a4f1aaf36b72f50381e892171636b3fb5447fe00e995e7a37b90600090a35050565b6000546001600160a01b031633146106f45760405162461bcd60e51b815260206004820152601660248201527527bbb730b136329d102922a8aaa4a922afa7aba722a960511b60448201526064016102ad565b6002546001600160a01b031615801561071657506003546001600160a01b0316155b6107625760405162461bcd60e51b815260206004820152601b60248201527f50616972466163746f72793a20414c52454144595f494e49544544000000000060448201526064016102ad565b6001600160a01b0382161580159061078257506001600160a01b03811615155b6107ce5760405162461bcd60e51b815260206004820152601960248201527f50616972466163746f72793a205a45524f5f414444524553530000000000000060448201526064016102ad565b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b60006020828403121561080d578081fd5b813561021c8161086c565b600060208284031215610829578081fd5b815161021c8161086c565b60008060408385031215610846578081fd5b82356108518161086c565b915060208301356108618161086c565b809150509250929050565b6001600160a01b038116811461088157600080fd5b5056fea2646970667358221220dd5c0523c14f2b01b2bbfe6fdeeebf9cfe12b70ea1efd0047e3df00c3a11368f64736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
