Skip to content

Commit b0eb407

Browse files
authored
Merge pull request #13 from xdecentralix/stablesurge
Stablesurge
2 parents 863f449 + 5b23692 commit b0eb407

File tree

38 files changed

+2030
-53
lines changed

38 files changed

+2030
-53
lines changed

crates/contracts/artifacts/BalancerV3StableSurgeHook.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"abi":[{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"amplificationParameter","type":"uint256"},{"internalType":"string","name":"version","type":"string"}],"internalType":"struct StablePool.NewPoolParams","name":"params","type":"tuple"},{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AmpUpdateAlreadyStarted","type":"error"},{"inputs":[],"name":"AmpUpdateDurationTooShort","type":"error"},{"inputs":[],"name":"AmpUpdateNotStarted","type":"error"},{"inputs":[],"name":"AmpUpdateRateTooFast","type":"error"},{"inputs":[],"name":"AmplificationFactorTooHigh","type":"error"},{"inputs":[],"name":"AmplificationFactorTooLow","type":"error"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"SenderIsNotVault","type":"error"},{"inputs":[],"name":"SenderNotAllowed","type":"error"},{"inputs":[],"name":"StableComputeBalanceDidNotConverge","type":"error"},{"inputs":[],"name":"StableInvariantDidNotConverge","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"inputs":[],"name":"ZeroDivision","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"AmpUpdateStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"currentValue","type":"uint256"}],"name":"AmpUpdateStopped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256","name":"tokenInIndex","type":"uint256"},{"internalType":"uint256","name":"invariantRatio","type":"uint256"}],"name":"computeBalance","outputs":[{"internalType":"uint256","name":"newBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"enum Rounding","name":"rounding","type":"uint8"}],"name":"computeInvariant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emitApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emitTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAggregateFeePercentages","outputs":[{"internalType":"uint256","name":"aggregateSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"aggregateYieldFeePercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmplificationParameter","outputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bool","name":"isUpdating","type":"bool"},{"internalType":"uint256","name":"precision","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmplificationState","outputs":[{"components":[{"internalType":"uint64","name":"startValue","type":"uint64"},{"internalType":"uint64","name":"endValue","type":"uint64"},{"internalType":"uint32","name":"startTime","type":"uint32"},{"internalType":"uint32","name":"endTime","type":"uint32"}],"internalType":"struct AmplificationState","name":"amplificationState","type":"tuple"},{"internalType":"uint256","name":"precision","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentLiveBalances","outputs":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaximumInvariantRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMaximumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumInvariantRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMinimumSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStablePoolDynamicData","outputs":[{"components":[{"internalType":"uint256[]","name":"balancesLiveScaled18","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenRates","type":"uint256[]"},{"internalType":"uint256","name":"staticSwapFeePercentage","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"internalType":"uint256","name":"bptRate","type":"uint256"},{"internalType":"uint256","name":"amplificationParameter","type":"uint256"},{"internalType":"uint256","name":"startValue","type":"uint256"},{"internalType":"uint256","name":"endValue","type":"uint256"},{"internalType":"uint32","name":"startTime","type":"uint32"},{"internalType":"uint32","name":"endTime","type":"uint32"},{"internalType":"bool","name":"isAmpUpdating","type":"bool"},{"internalType":"bool","name":"isPoolInitialized","type":"bool"},{"internalType":"bool","name":"isPoolPaused","type":"bool"},{"internalType":"bool","name":"isPoolInRecoveryMode","type":"bool"}],"internalType":"struct StablePoolDynamicData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStablePoolImmutableData","outputs":[{"components":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"decimalScalingFactors","type":"uint256[]"},{"internalType":"uint256","name":"amplificationParameterPrecision","type":"uint256"}],"internalType":"struct StablePoolImmutableData","name":"data","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenInfo","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"components":[{"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"internalType":"contract IRateProvider","name":"rateProvider","type":"address"},{"internalType":"bool","name":"paysYieldFees","type":"bool"}],"internalType":"struct TokenInfo[]","name":"tokenInfo","type":"tuple[]"},{"internalType":"uint256[]","name":"balancesRaw","type":"uint256[]"},{"internalType":"uint256[]","name":"lastBalancesLiveScaled18","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum SwapKind","name":"kind","type":"uint8"},{"internalType":"uint256","name":"amountGivenScaled18","type":"uint256"},{"internalType":"uint256[]","name":"balancesScaled18","type":"uint256[]"},{"internalType":"uint256","name":"indexIn","type":"uint256"},{"internalType":"uint256","name":"indexOut","type":"uint256"},{"internalType":"address","name":"router","type":"address"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct PoolSwapParams","name":"request","type":"tuple"}],"name":"onSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rawEndValue","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"startAmplificationParameterUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopAmplificationParameterUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]}

crates/contracts/artifacts/BalancerV3StableSurgePoolFactory.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

crates/contracts/artifacts/BalancerV3StableSurgePoolFactoryV2.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

crates/contracts/build.rs

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,6 +1327,108 @@ fn main() {
13271327
},
13281328
)
13291329
});
1330+
generate_contract_with_config("BalancerV3StableSurgePoolFactory", |builder| {
1331+
builder
1332+
.add_network(
1333+
ARBITRUM_ONE,
1334+
Network {
1335+
address: addr("0x86e67E115f96DF37239E0479441303De0de7bc2b"),
1336+
// <https://arbiscan.io/tx/0x43eb1a286d4a06c767d780c3e7437f8f5cec1552b20d5fb717bb24f09c693924>
1337+
deployment_information: Some(DeploymentInformation::BlockNumber(303403113)),
1338+
},
1339+
)
1340+
.add_network(
1341+
BASE,
1342+
Network {
1343+
address: addr("0x4fb47126Fa83A8734991E41B942Ac29A3266C968"),
1344+
// <https://basescan.org/tx/0x38e5a884249f6afea6113cae9167a20f63ac1f6409edbf9da9d206ba4878f50a>
1345+
deployment_information: Some(DeploymentInformation::BlockNumber(26049433)),
1346+
},
1347+
)
1348+
.add_network(
1349+
GNOSIS,
1350+
Network {
1351+
address: addr("0x268E2EE1413D768b6e2dc3F5a4ddc9Ae03d9AF42"),
1352+
// <https://gnosisscan.io/tx/0x05cbac83d6d1d75b5205a9ab6497acbbc48c33516f444ff0a70fb52e8185a11f>
1353+
deployment_information: Some(DeploymentInformation::BlockNumber(38432088)),
1354+
},
1355+
)
1356+
.add_network(
1357+
MAINNET,
1358+
Network {
1359+
address: addr("0xD53F5d8d926fb2a0f7Be614B16e649B8aC102D83"),
1360+
// <https://etherscan.io/tx/0xea86300610bd6a6782395053c4f9cd5e428f4219a6416bc5b7bf6ea2c3998567>
1361+
deployment_information: Some(DeploymentInformation::BlockNumber(21791079)),
1362+
},
1363+
)
1364+
.add_network(
1365+
SEPOLIA,
1366+
Network {
1367+
address: addr("0xD516c344413B4282dF1E4082EAE6B1081F3b1932"),
1368+
// <https://sepolia.etherscan.io/tx/0x813ed66325fdac564b4a4eeb9bb99058c0d82096325803cbe5319a473c0e00f0>
1369+
deployment_information: Some(DeploymentInformation::BlockNumber(7655004)),
1370+
},
1371+
)
1372+
});
1373+
generate_contract_with_config("BalancerV3StableSurgePoolFactoryV2", |builder| {
1374+
builder
1375+
.add_network(
1376+
ARBITRUM_ONE,
1377+
Network {
1378+
address: addr("0x201efd508c8DfE9DE1a13c2452863A78CB2a86Cc"),
1379+
// <https://arbiscan.io/tx/0xf0c872096b38df7396bdd796c7c44a8e073d10058a730d2393fecbceab7ae3e5>
1380+
deployment_information: Some(DeploymentInformation::BlockNumber(322937794)),
1381+
},
1382+
)
1383+
.add_network(
1384+
AVALANCHE,
1385+
Network {
1386+
address: addr("0x18CC3C68A5e64b40c846Aa6E45312cbcBb94f71b"),
1387+
// <https://snowscan.xyz/tx/0xa0d0795a93be94c92c7b5b7ab117a328e9183ee6387b5e5b7ddc5e7ded72abd0>
1388+
deployment_information: Some(DeploymentInformation::BlockNumber(59966276)),
1389+
},
1390+
)
1391+
.add_network(
1392+
BASE,
1393+
Network {
1394+
address: addr("0x8e3fEaAB11b7B351e3EA1E01247Ab6ccc847dD52"),
1395+
// <https://basescan.org/tx/0x49603904b270ff5ce8efdc395a8c004683dcf64b1f75ae5b82461b40cd627041>
1396+
deployment_information: Some(DeploymentInformation::BlockNumber(28502516)),
1397+
},
1398+
)
1399+
.add_network(
1400+
GNOSIS,
1401+
Network {
1402+
address: addr("0x45fB5aF0a1aD80Ea16C803146eb81844D9972373"),
1403+
// <https://gnosisscan.io/tx/0x317fd60d689b5146b9d9c93ef11fbe4a2caec8af69d8c05ed620033a27cf1a7f>
1404+
deployment_information: Some(DeploymentInformation::BlockNumber(39390487)),
1405+
},
1406+
)
1407+
.add_network(
1408+
MAINNET,
1409+
Network {
1410+
address: addr("0x355bD33F0033066BB3DE396a6d069be57353AD95"),
1411+
// <https://etherscan.io/tx/0x7bd8f7b3744accd6595a5f6048f3165e4d60dd6ea951e5dd0c882bf193fd70c8>
1412+
deployment_information: Some(DeploymentInformation::BlockNumber(22197594)),
1413+
},
1414+
)
1415+
.add_network(
1416+
OPTIMISM,
1417+
Network {
1418+
address: addr("0x3BEb058DE1A25dd24223fd9e1796df8589429AcE"),
1419+
// <https://optimistic.etherscan.io/tx/0x896531d84d833de10a86562a20a7cec4c40cb63fec2ea5691d75a7b3ae16ff10>
1420+
deployment_information: Some(DeploymentInformation::BlockNumber(134097700)),
1421+
},
1422+
)
1423+
.add_network(
1424+
SEPOLIA,
1425+
Network {
1426+
address: addr("0x2f1d6F4C40047dC122cA7e46B0D1eC27739BFc66"),
1427+
// <https://sepolia.etherscan.io/tx/0xb342f8518d64d9bb3f2436b369aa0dda8f3aadb46aa1c3228fa321519431a199>
1428+
deployment_information: Some(DeploymentInformation::BlockNumber(8050826)),
1429+
},
1430+
)
1431+
});
13301432
generate_contract_with_config("BalancerV3GyroECLPPoolFactory", |builder| {
13311433
builder
13321434
.add_network(
@@ -1541,6 +1643,8 @@ fn main() {
15411643
});
15421644
generate_contract("BalancerV3WeightedPool");
15431645
generate_contract("BalancerV3StablePool");
1646+
generate_contract("BalancerV3StableSurgePool");
1647+
generate_contract("BalancerV3StableSurgeHook");
15441648
generate_contract("BalancerV3GyroECLPPool");
15451649
generate_contract("BalancerV3Gyro2CLPPool");
15461650
generate_contract("BalancerV3ReClammPool");

0 commit comments

Comments
 (0)