[
    {
        "constant": false,
        "inputs": [
            {
                "internalType": "contract BFactory",
                "name": "factory",
                "type": "address"
            },
            { "internalType": "address[]", "name": "tokens", "type": "address[]" },
            { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" },
            { "internalType": "uint256[]", "name": "denorms", "type": "uint256[]" },
            { "internalType": "uint256", "name": "swapFee", "type": "uint256" },
            { "internalType": "bool", "name": "finalize", "type": "bool" }
        ],
        "name": "create",
        "outputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" }
        ],
        "name": "finalize",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" },
            { "internalType": "uint256", "name": "poolAmountOut", "type": "uint256" },
            {
                "internalType": "uint256[]",
                "name": "maxAmountsIn",
                "type": "uint256[]"
            }
        ],
        "name": "joinPool",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" },
            { "internalType": "address", "name": "tokenIn", "type": "address" },
            { "internalType": "uint256", "name": "tokenAmountIn", "type": "uint256" },
            {
                "internalType": "uint256",
                "name": "minPoolAmountOut",
                "type": "uint256"
            }
        ],
        "name": "joinswapExternAmountIn",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" },
            { "internalType": "address", "name": "newController", "type": "address" }
        ],
        "name": "setController",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" },
            { "internalType": "bool", "name": "publicSwap", "type": "bool" }
        ],
        "name": "setPublicSwap",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" },
            { "internalType": "uint256", "name": "newFee", "type": "uint256" }
        ],
        "name": "setSwapFee",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            { "internalType": "contract BPool", "name": "pool", "type": "address" },
            { "internalType": "address[]", "name": "tokens", "type": "address[]" },
            { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" },
            { "internalType": "uint256[]", "name": "denorms", "type": "uint256[]" }
        ],
        "name": "setTokens",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
