{
  "version": "v4.2.5",
  "name": "TokenPairFactory",
  "bytecode": "050716402c403a406b408540a64123010001010008d302f1c0ffb4a0014513107b1600a102010001010008d34db5e042b4a0014513107b1600a101010000000103d34086275fa00102010302040018d3a2ac8580b417021602a0014513107b16021601a21602160116000f0da0020100170316030d0c1600010601000202000bd3c9a43b3cb4a0014513107b16010d0c160001060000020402101600711702160171170316021603314c031600160102160116000201030409004045d3fd02709216001602a50c337a4c061816001603a50c33130f7b1602160342130b7b16021603000517051704b116041605ce011406414c504800011305640c0c0c0c0c0c0c14001308641707170616001601a21604160544ce00160616070d1340ff3bc2170805160416051608a00061a0000d2aa100",
  "codeHash": "597644c0643972e3d6e7f5a681e2d9908de74775e9b4e205e15ba39397a9e48c",
  "fieldsSig": {
    "names": [
      "pairTemplateId",
      "dexAccount0",
      "pairSize",
      "feeSetter",
      "feeCollectorFactory"
    ],
    "types": [
      "ByteVec",
      "IDexAccount",
      "U256",
      "Address",
      "FeeCollectorFactory"
    ],
    "isMutable": [
      false,
      false,
      true,
      true,
      true
    ]
  },
  "eventsSig": [
    {
      "name": "PairCreated",
      "fieldNames": [
        "token0",
        "token1",
        "pair",
        "currentPairSize"
      ],
      "fieldTypes": [
        "ByteVec",
        "ByteVec",
        "ByteVec",
        "U256"
      ]
    }
  ],
  "functions": [
    {
      "name": "setFeeCollectorFactory",
      "paramNames": [
        "factory"
      ],
      "paramTypes": [
        "FeeCollectorFactory"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    },
    {
      "name": "updateFeeSetter",
      "paramNames": [
        "newFeeSetter"
      ],
      "paramTypes": [
        "Address"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    },
    {
      "name": "getFeeSetter",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "Address"
      ]
    },
    {
      "name": "enableFeeCollector",
      "paramNames": [
        "tokenPair",
        "alphAmount"
      ],
      "paramTypes": [
        "TokenPair",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "updateFeeCollector",
      "paramNames": [
        "tokenPair",
        "newFeeCollectorId"
      ],
      "paramTypes": [
        "TokenPair",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "sortTokens",
      "paramNames": [
        "tokenA",
        "tokenB"
      ],
      "paramTypes": [
        "ByteVec",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "ByteVec",
        "ByteVec"
      ]
    },
    {
      "name": "createPair",
      "paramNames": [
        "payer",
        "alphAmount",
        "tokenAId",
        "tokenBId"
      ],
      "paramTypes": [
        "Address",
        "U256",
        "ByteVec",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": []
    }
  ],
  "constants": [],
  "enums": [
    {
      "name": "ErrorCodes",
      "fields": [
        {
          "name": "ReserveOverflow",
          "value": {
            "type": "U256",
            "value": "0"
          }
        },
        {
          "name": "InsufficientInitLiquidity",
          "value": {
            "type": "U256",
            "value": "1"
          }
        },
        {
          "name": "InsufficientLiquidityMinted",
          "value": {
            "type": "U256",
            "value": "2"
          }
        },
        {
          "name": "InsufficientLiquidityBurned",
          "value": {
            "type": "U256",
            "value": "3"
          }
        },
        {
          "name": "InvalidToAddress",
          "value": {
            "type": "U256",
            "value": "4"
          }
        },
        {
          "name": "InsufficientLiquidity",
          "value": {
            "type": "U256",
            "value": "5"
          }
        },
        {
          "name": "InvalidTokenInId",
          "value": {
            "type": "U256",
            "value": "6"
          }
        },
        {
          "name": "InvalidCalleeId",
          "value": {
            "type": "U256",
            "value": "7"
          }
        },
        {
          "name": "InvalidK",
          "value": {
            "type": "U256",
            "value": "8"
          }
        },
        {
          "name": "InsufficientOutputAmount",
          "value": {
            "type": "U256",
            "value": "9"
          }
        },
        {
          "name": "InsufficientInputAmount",
          "value": {
            "type": "U256",
            "value": "10"
          }
        },
        {
          "name": "IdenticalTokenIds",
          "value": {
            "type": "U256",
            "value": "11"
          }
        },
        {
          "name": "Expired",
          "value": {
            "type": "U256",
            "value": "12"
          }
        },
        {
          "name": "InsufficientToken0Amount",
          "value": {
            "type": "U256",
            "value": "13"
          }
        },
        {
          "name": "InsufficientToken1Amount",
          "value": {
            "type": "U256",
            "value": "14"
          }
        },
        {
          "name": "TokenNotExist",
          "value": {
            "type": "U256",
            "value": "15"
          }
        },
        {
          "name": "InvalidCaller",
          "value": {
            "type": "U256",
            "value": "16"
          }
        },
        {
          "name": "FeeCollectorNotEnabled",
          "value": {
            "type": "U256",
            "value": "17"
          }
        },
        {
          "name": "InvalidAccount",
          "value": {
            "type": "U256",
            "value": "18"
          }
        }
      ]
    }
  ]
}