{
    "_format": "hh-sol-artifact-1",
    "contractName": "StableSwap",
    "sourceName": "src.sol/amm/StableSwap.sol",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amplificationParameter",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "inputs": [],
            "name": "amplificationParameter",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getAmplificationParameter",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "balances",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256",
                    "name": "indexIn",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "indexOut",
                    "type": "uint256"
                }
            ],
            "name": "onSwapGivenIn",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256[]",
                    "name": "balances",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256",
                    "name": "indexIn",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "indexOut",
                    "type": "uint256"
                }
            ],
            "name": "onSwapGivenOut",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "_amplificationParameter",
                    "type": "uint256"
                }
            ],
            "name": "updateAmplificationParameter",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x60a060405234801561001057600080fd5b50604051610a62380380610a628339818101604052602081101561003357600080fd5b50513360601b608052610053670de0b6b3a764000082101561012c610074565b61006c69010f0cf064dd5920000082111561012d610074565b6000556100d9565b816100825761008281610086565b5050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b60805160601c61096c6100f660003980610240525061096c6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631cb2333d1461005c5780631ff3bc6b146100765780636daccffa1461012557806377a743021461012d57806397010c6f146101dc575b600080fd5b6100646101fb565b60408051918252519081900360200190f35b6100646004803603608081101561008c57600080fd5b813591908101906040810160208201356401000000008111156100ae57600080fd5b8201836020820111156100c057600080fd5b803590602001918460208302840111640100000000831117156100e257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060200135610201565b61006461021d565b6100646004803603608081101561014357600080fd5b8135919081019060408101602082013564010000000081111561016557600080fd5b82018360208201111561017757600080fd5b8035906020019184602083028401116401000000008311171561019957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060200135610223565b6101f9600480360360208110156101f257600080fd5b5035610235565b005b60005481565b6000806102136000548686868a6102a1565b9695505050505050565b60005490565b6000806102136000548686868a610379565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461029c5760405162461bcd60e51b81526004018080602001828103825260228152602001806109156022913960400191505060405180910390fd5b600055565b6000806102ae8787610403565b90506102d6838786815181106102c057fe5b602002602001015161057990919063ffffffff16565b8685815181106102e257fe5b60200260200101818152505060006102fc8888848961058f565b90506103248488878151811061030e57fe5b602002602001015161074890919063ffffffff16565b87868151811061033057fe5b60200260200101818152505061036d600161036789898151811061035057fe5b60200260200101518461057990919063ffffffff16565b90610748565b98975050505050505050565b6000806103868787610403565b90506103988387878151811061030e57fe5b8686815181106103a457fe5b60200260200101818152505060006103be8888848861058f565b90506103d0848888815181106102c057fe5b8787815181106103dc57fe5b60200260200101818152505061036d60016103fd838a89815181106102c057fe5b90610579565b80516000908190815b818110156104445761043a85828151811061042357fe5b60200260200101518461074890919063ffffffff16565b925060010161040c565b508161045557600092505050610573565b600082816104638885610761565b905060005b60ff81101561056a576000610491868a60008151811061048457fe5b6020026020010151610761565b905060015b868110156104ca576104c06104ba6104b4848d858151811061048457fe5b89610761565b86610785565b9150600101610496565b508394506105246104fa6104e76104e1868b610761565b84610761565b6103676104f48a89610761565b88610761565b61051f61051161050b876001610579565b85610761565b6103676104b48b6001610748565b610785565b93508484111561054a57600161053a8587610579565b11610545575061056a565b610561565b60016105568686610579565b11610561575061056a565b50600101610468565b50909450505050505b92915050565b60006105898383111560016107b8565b50900390565b60008061059d868651610761565b90506000856000815181106105ae57fe5b6020026020010151905060006105cc87518860008151811061048457fe5b905060015b8751811015610618576105fd6105f76105f0848b858151811061048457fe5b8a51610761565b886107ca565b915061060e88828151811061042357fe5b92506001016105d1565b5061063f87868151811061062857fe5b60200260200101518361057990919063ffffffff16565b915060006106566106508889610761565b85610785565b9050610688826106828a898151811061066b57fe5b6020026020010151846107ea90919063ffffffff16565b9061082e565b905060006106a06106998987610879565b8590610748565b90506000806106c06106b28b85610748565b610682866103678e806107ea565b905060005b60ff811015610738578192506106f56106e78c6103fd87610367876002610761565b6106828761036786806107ea565b91508282111561071a57600161070b8385610579565b1161071557610738565b610730565b60016107268484610579565b1161073057610738565b6001016106c5565b509b9a5050505050505050505050565b600082820161075a84821015836107b8565b9392505050565b600082820261075a84158061077e57508385838161077b57fe5b04145b60036107b8565b600061079482151560046107b8565b826107a157506000610573565b8160018403816107ad57fe5b046001019050610573565b816107c6576107c6816108c1565b5050565b60006107d982151560046107b8565b8183816107e257fe5b049392505050565b600082820261080484158061077e57508385838161077b57fe5b80610813576000915050610573565b670de0b6b3a764000060001982015b04600101915050610573565b600061083d82151560046107b8565b8261084a57506000610573565b670de0b6b3a76400008381029061086d9085838161086457fe5b041460056107b8565b82600182038161082257fe5b600061088882151560046107b8565b8261089557506000610573565b670de0b6b3a7640000838102906108af9085838161086457fe5b8281816108b857fe5b04915050610573565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fdfe4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6e2ea26469706673582212209cb985ae52e8ec76288dbf80f8dd131ac7839088dfa76f3e69293ce96a8bde7c64736f6c63430007010033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631cb2333d1461005c5780631ff3bc6b146100765780636daccffa1461012557806377a743021461012d57806397010c6f146101dc575b600080fd5b6100646101fb565b60408051918252519081900360200190f35b6100646004803603608081101561008c57600080fd5b813591908101906040810160208201356401000000008111156100ae57600080fd5b8201836020820111156100c057600080fd5b803590602001918460208302840111640100000000831117156100e257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060200135610201565b61006461021d565b6100646004803603608081101561014357600080fd5b8135919081019060408101602082013564010000000081111561016557600080fd5b82018360208201111561017757600080fd5b8035906020019184602083028401116401000000008311171561019957600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060200135610223565b6101f9600480360360208110156101f257600080fd5b5035610235565b005b60005481565b6000806102136000548686868a6102a1565b9695505050505050565b60005490565b6000806102136000548686868a610379565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461029c5760405162461bcd60e51b81526004018080602001828103825260228152602001806109156022913960400191505060405180910390fd5b600055565b6000806102ae8787610403565b90506102d6838786815181106102c057fe5b602002602001015161057990919063ffffffff16565b8685815181106102e257fe5b60200260200101818152505060006102fc8888848961058f565b90506103248488878151811061030e57fe5b602002602001015161074890919063ffffffff16565b87868151811061033057fe5b60200260200101818152505061036d600161036789898151811061035057fe5b60200260200101518461057990919063ffffffff16565b90610748565b98975050505050505050565b6000806103868787610403565b90506103988387878151811061030e57fe5b8686815181106103a457fe5b60200260200101818152505060006103be8888848861058f565b90506103d0848888815181106102c057fe5b8787815181106103dc57fe5b60200260200101818152505061036d60016103fd838a89815181106102c057fe5b90610579565b80516000908190815b818110156104445761043a85828151811061042357fe5b60200260200101518461074890919063ffffffff16565b925060010161040c565b508161045557600092505050610573565b600082816104638885610761565b905060005b60ff81101561056a576000610491868a60008151811061048457fe5b6020026020010151610761565b905060015b868110156104ca576104c06104ba6104b4848d858151811061048457fe5b89610761565b86610785565b9150600101610496565b508394506105246104fa6104e76104e1868b610761565b84610761565b6103676104f48a89610761565b88610761565b61051f61051161050b876001610579565b85610761565b6103676104b48b6001610748565b610785565b93508484111561054a57600161053a8587610579565b11610545575061056a565b610561565b60016105568686610579565b11610561575061056a565b50600101610468565b50909450505050505b92915050565b60006105898383111560016107b8565b50900390565b60008061059d868651610761565b90506000856000815181106105ae57fe5b6020026020010151905060006105cc87518860008151811061048457fe5b905060015b8751811015610618576105fd6105f76105f0848b858151811061048457fe5b8a51610761565b886107ca565b915061060e88828151811061042357fe5b92506001016105d1565b5061063f87868151811061062857fe5b60200260200101518361057990919063ffffffff16565b915060006106566106508889610761565b85610785565b9050610688826106828a898151811061066b57fe5b6020026020010151846107ea90919063ffffffff16565b9061082e565b905060006106a06106998987610879565b8590610748565b90506000806106c06106b28b85610748565b610682866103678e806107ea565b905060005b60ff811015610738578192506106f56106e78c6103fd87610367876002610761565b6106828761036786806107ea565b91508282111561071a57600161070b8385610579565b1161071557610738565b610730565b60016107268484610579565b1161073057610738565b6001016106c5565b509b9a5050505050505050505050565b600082820161075a84821015836107b8565b9392505050565b600082820261075a84158061077e57508385838161077b57fe5b04145b60036107b8565b600061079482151560046107b8565b826107a157506000610573565b8160018403816107ad57fe5b046001019050610573565b816107c6576107c6816108c1565b5050565b60006107d982151560046107b8565b8183816107e257fe5b049392505050565b600082820261080484158061077e57508385838161077b57fe5b80610813576000915050610573565b670de0b6b3a764000060001982015b04600101915050610573565b600061083d82151560046107b8565b8261084a57506000610573565b670de0b6b3a76400008381029061086d9085838161086457fe5b041460056107b8565b82600182038161082257fe5b600061088882151560046107b8565b8261089557506000610573565b670de0b6b3a7640000838102906108af9085838161086457fe5b8281816108b857fe5b04915050610573565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fdfe4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f6e2ea26469706673582212209cb985ae52e8ec76288dbf80f8dd131ac7839088dfa76f3e69293ce96a8bde7c64736f6c63430007010033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
