{
  "version": "v4.2.5",
  "name": "TokenPair",
  "bytecode": "0d13114022402b4034404b4087409d40ad40bd40cb40d940e7415641b4426842e54420444a446b0100000001021408414c50482d444558020100000001021408414c50482d44455802010000000102131202010000000102a00502010002020109d38c844efd16000d1340703b2c16012d0201000103014020d36ae1998016000f334c191600170116000e2d0d2a170216021601314c0b16021701160016022d16022a0e2d17024a311601020d02010001010008d347fff8f4b3ce004113107b1600a107010000000204d373c3e78fce01ce0202010000000204d37de99ed1a000a00102010000000103d355097b37a00202010000000103d3d3cf0c5aa00302010000000103d37fe75f5ba00402000002050040410d1340703b170216001602317a4c041816011602310c7b561343e82d0d13203b2e17031603a0022b170416040c337a4c0418a0000c337a4c0418a0010c334c10a003a001a000000416042c35a103a004a000a001000416042c35a1041600a1001601a1011603a102000002080240320c1702a007140042170316034c4025a0060c304c4020160016012c00051704a0060005170516041605334c14a005160416052b2c17061604112c16052a1707160616072d1702a00516022aa1054a020ca106160316020201010309014064d393ef503ea000a001000d170417030c1705a0050c2f4c17160116022c0005170616061343e8330d7b16061343e82b1705a0051343e82aa105b2b11343e8bd4a141601a0052ca0002d17071602a0052ca0012d170816071608334c0216084a011607170516050c330e7b1600b11605ab1600ce011601ac1600ce021602aca00516052aa105a00016012aa00116022a000c16034c06b2b11604a316040012051600160116021605a0057316050201010206024046d349c452fda000a001000d170317021601a0002ca0052d17041601a0012ca0052d170516040c337a4c041816050c330f7b1600b11601ac1600ce011604ab1600ce021605aba00516012ba105a00016042ba00116052b000c16024c06b2b11603a316030012061600160416051601a005731604160502010106120040b5d32570119d16040c337a4b041816050c3313097b1604a000317a4c04181605a00131117ba00016022a16042b1706a00116032a16052b17070c1708160216082c1367102d1709160316082c1367102d170a16061343e82c16020f2c2b170b16071343e82c16030f2c2b170ca000a0012c13800f42402c170d160b160c2c160d3413087b160616092b170e1607160a2b170f160e160f2ca000a0012c3413087bce03160047cc17101610c513127bce01ce0244171116020c334c131600ce01160216092bac1600ce011609a31600ce01160916110d110c1610d4bd48152816030c334c131600ce021603160a2bac1600ce02160aa31600ce02160a16110d110c1610d4bd48152816040c334c041601ce011604ab16050c334c041601ce021605ab160e160f000c0716001602160316041605160174010200020014d3f2c71c4bb3a0074113107ba000a001000d17011700160013117bb2b11601a31601001200030101001216000c334c0ab2b11600a3b216000e0ca0070100a000a0012ca106",
  "codeHash": "3a4ac01ae47b1c84a567e7ef467fc4f7f8e5da32c6546192f0e2b2af3d79891f",
  "fieldsSig": {
    "names": [
      "tokenPairFactory",
      "token0Id",
      "token1Id",
      "dexAccount0",
      "reserve0",
      "reserve1",
      "blockTimeStampLast",
      "price0CumulativeLast",
      "price1CumulativeLast",
      "totalSupply",
      "kLast",
      "feeCollectorId",
      "__stdInterfaceId"
    ],
    "types": [
      "TokenPairFactory",
      "ByteVec",
      "ByteVec",
      "IDexAccount",
      "U256",
      "U256",
      "U256",
      "U256",
      "U256",
      "U256",
      "U256",
      "ByteVec",
      "ByteVec"
    ],
    "isMutable": [
      false,
      false,
      false,
      false,
      true,
      true,
      true,
      true,
      true,
      true,
      true,
      true,
      false
    ]
  },
  "eventsSig": [
    {
      "name": "Mint",
      "fieldNames": [
        "sender",
        "amount0",
        "amount1",
        "liquidity",
        "totalSupply"
      ],
      "fieldTypes": [
        "Address",
        "U256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "Burn",
      "fieldNames": [
        "sender",
        "amount0",
        "amount1",
        "liquidity",
        "totalSupply"
      ],
      "fieldTypes": [
        "Address",
        "U256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "Swap",
      "fieldNames": [
        "sender",
        "amount0In",
        "amount1In",
        "amount0Out",
        "amount1Out",
        "to"
      ],
      "fieldTypes": [
        "Address",
        "U256",
        "U256",
        "U256",
        "U256",
        "Address"
      ]
    }
  ],
  "functions": [
    {
      "name": "getSymbol",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "getName",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "getDecimals",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getTotalSupply",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "uqdiv",
      "paramNames": [
        "a",
        "b"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "sqrt",
      "paramNames": [
        "y"
      ],
      "paramTypes": [
        "U256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "setFeeCollectorId",
      "paramNames": [
        "id"
      ],
      "paramTypes": [
        "ByteVec"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    },
    {
      "name": "getTokenPair",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "ByteVec",
        "ByteVec"
      ]
    },
    {
      "name": "getReserves",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256",
        "U256"
      ]
    },
    {
      "name": "getBlockTimeStampLast",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getPrice0CumulativeLast",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getPrice1CumulativeLast",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "update",
      "paramNames": [
        "newReserve0",
        "newReserve1"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "mintFee",
      "paramNames": [
        "reserve0_",
        "reserve1_"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "Bool",
        "U256"
      ]
    },
    {
      "name": "mint",
      "paramNames": [
        "sender",
        "amount0",
        "amount1"
      ],
      "paramTypes": [
        "Address",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "burn",
      "paramNames": [
        "sender",
        "liquidity"
      ],
      "paramTypes": [
        "Address",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "U256",
        "U256"
      ]
    },
    {
      "name": "swap",
      "paramNames": [
        "sender",
        "to",
        "amount0In",
        "amount1In",
        "amount0Out",
        "amount1Out"
      ],
      "paramTypes": [
        "Address",
        "Address",
        "U256",
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "collectFeeManually",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": []
    },
    {
      "name": "collectFeeAndUpdateKLast",
      "paramNames": [
        "feeAmount"
      ],
      "paramTypes": [
        "U256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    }
  ],
  "constants": [
    {
      "name": "MINIMUM_LIQUIDITY",
      "value": {
        "type": "U256",
        "value": "1000"
      }
    }
  ],
  "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"
          }
        }
      ]
    }
  ],
  "stdInterfaceId": "0001"
}