diff --git a/api/ethereum/ERC20ManagerBridgingPayment.json b/api/ethereum/ERC20ManagerBridgingPayment.json index d325286a..e1fb177a 100644 --- a/api/ethereum/ERC20ManagerBridgingPayment.json +++ b/api/ethereum/ERC20ManagerBridgingPayment.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_underlying","type":"address","internalType":"address"},{"name":"_admin","type":"address","internalType":"address"},{"name":"_fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnderlyingAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requestBridging","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFee","inputs":[{"name":"newFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"underlying","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"FeePaid","inputs":[],"anonymous":false},{"type":"error","name":"NotAnAdmin","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f5ffd5b50604051610418380380610418833981016040819052602b91607a565b5f80546001600160a01b039485166001600160a01b0319918216179091556002805494909316931692909217905560015560ae565b80516001600160a01b03811681146075575f5ffd5b919050565b5f5f5f60608486031215608b575f5ffd5b6092846060565b9250609e602085016060565b9150604084015190509250925092565b61035d806100bb5f395ff3fe60806040526004361061006e575f3560e01c8063704b6c021161004c578063704b6c02146100e757806388a6868214610106578063c305870c14610122578063ced72f8714610135575f5ffd5b806369fe0e2d146100725780636e9960c3146100935780636f307dc3146100c9575b5f5ffd5b34801561007d575f5ffd5b5061009161008c3660046102a5565b610152565b005b34801561009e575f5ffd5b506002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d4575f5ffd5b505f546100ac906001600160a01b031681565b3480156100f2575f5ffd5b506100916101013660046102d7565b610182565b348015610111575f5ffd5b505f546001600160a01b03166100ac565b6100916101303660046102f7565b6101cd565b348015610140575f5ffd5b506001546040519081526020016100c0565b6002546001600160a01b0316331461017d576040516355098f2760e01b815260040160405180910390fd5b600155565b6002546001600160a01b031633146101ad576040516355098f2760e01b815260040160405180910390fd5b600280546001600160a01b0383166001600160a01b031990911617905550565b6101d5610241565b5f546040516330c161c360e21b81526001600160a01b03858116600483015260248201859052604482018490529091169063c305870c906064015f604051808303815f87803b158015610226575f5ffd5b505af1158015610238573d5f5f3e3d5ffd5b50505050505050565b6002546001546040516001600160a01b039092169181156108fc0291905f818181858888f1935050505015801561027a573d5f5f3e3d5ffd5b506040517faaeea0b595e409578c26dd16fa1bdb3a29a4d874694ecef3ca96376940f5fbfb905f90a1565b5f602082840312156102b5575f5ffd5b5035919050565b80356001600160a01b03811681146102d2575f5ffd5b919050565b5f602082840312156102e7575f5ffd5b6102f0826102bc565b9392505050565b5f5f5f60608486031215610309575f5ffd5b610312846102bc565b9560208501359550604090940135939250505056fea2646970667358221220d3b47ebeda1bb1bdfea37438bd175abcfc29d5b569ad70ac1d17cce917953ab664736f6c634300081c0033","sourceMap":"3645:636:53:-:0;;;3707:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;271:10:51;:24;;-1:-1:-1;;;;;271:24:51;;;-1:-1:-1;;;;;;271:24:51;;;;;;;305:5;:23;;;;;;;;;;;;;;271:24;338:10;3645:636:53;;14:177:75;93:13;;-1:-1:-1;;;;;135:31:75;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;:::-;3645:636:53;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061006e575f3560e01c8063704b6c021161004c578063704b6c02146100e757806388a6868214610106578063c305870c14610122578063ced72f8714610135575f5ffd5b806369fe0e2d146100725780636e9960c3146100935780636f307dc3146100c9575b5f5ffd5b34801561007d575f5ffd5b5061009161008c3660046102a5565b610152565b005b34801561009e575f5ffd5b506002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d4575f5ffd5b505f546100ac906001600160a01b031681565b3480156100f2575f5ffd5b506100916101013660046102d7565b610182565b348015610111575f5ffd5b505f546001600160a01b03166100ac565b6100916101303660046102f7565b6101cd565b348015610140575f5ffd5b506001546040519081526020016100c0565b6002546001600160a01b0316331461017d576040516355098f2760e01b815260040160405180910390fd5b600155565b6002546001600160a01b031633146101ad576040516355098f2760e01b815260040160405180910390fd5b600280546001600160a01b0383166001600160a01b031990911617905550565b6101d5610241565b5f546040516330c161c360e21b81526001600160a01b03858116600483015260248201859052604482018490529091169063c305870c906064015f604051808303815f87803b158015610226575f5ffd5b505af1158015610238573d5f5f3e3d5ffd5b50505050505050565b6002546001546040516001600160a01b039092169181156108fc0291905f818181858888f1935050505015801561027a573d5f5f3e3d5ffd5b506040517faaeea0b595e409578c26dd16fa1bdb3a29a4d874694ecef3ca96376940f5fbfb905f90a1565b5f602082840312156102b5575f5ffd5b5035919050565b80356001600160a01b03811681146102d2575f5ffd5b919050565b5f602082840312156102e7575f5ffd5b6102f0826102bc565b9392505050565b5f5f5f60608486031215610309575f5ffd5b610312846102bc565b9560208501359550604090940135939250505056fea2646970667358221220d3b47ebeda1bb1bdfea37438bd175abcfc29d5b569ad70ac1d17cce917953ab664736f6c634300081c0033","sourceMap":"3645:636:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;821:167:51;;;;;;;;;;-1:-1:-1;821:167:51;;;;;:::i;:::-;;:::i;:::-;;1372:79;;;;;;;;;;-1:-1:-1;1439:5:51;;-1:-1:-1;;;;;1439:5:51;1372:79;;;-1:-1:-1;;;;;409:32:75;;;391:51;;379:2;364:18;1372:79:51;;;;;;;;113:25;;;;;;;;;;-1:-1:-1;113:25:51;;;;-1:-1:-1;;;;;113:25:51;;;1139:184;;;;;;;;;;-1:-1:-1;1139:184:51;;;;;:::i;:::-;;:::i;1564:96::-;;;;;;;;;;-1:-1:-1;1617:7:51;1643:10;-1:-1:-1;;;;;1643:10:51;1564:96;;4068:211:53;;;;;;:::i;:::-;;:::i;1706:75:51:-;;;;;;;;;;-1:-1:-1;1771:3:51;;1706:75;;1341:25:75;;;1329:2;1314:18;1706:75:51;1195:177:75;821:167:51;888:5;;-1:-1:-1;;;;;888:5:51;874:10;:19;870:112;;916:12;;-1:-1:-1;;;916:12:51;;;;;;;;;;;870:112;959:3;:12;821:167::o;1139:184::-;1210:5;;-1:-1:-1;;;;;1210:5:51;1196:10;:19;1192:125;;1238:12;;-1:-1:-1;;;1238:12:51;;;;;;;;;;;1192:125;1281:5;:25;;-1:-1:-1;;;;;1281:25:51;;-1:-1:-1;;;;;;1281:25:51;;;;;;1139:184;:::o;4068:211:53:-;4191:11;:9;:11::i;:::-;4226:10;;4213:59;;-1:-1:-1;;;4213:59:53;;-1:-1:-1;;;;;1597:32:75;;;4213:59:53;;;1579:51:75;1646:18;;;1639:34;;;1689:18;;;1682:34;;;4226:10:53;;;;4213:40;;1552:18:75;;4213:59:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4068:211;;;:::o;529:91:51:-;569:5;;;584:3;569:19;;-1:-1:-1;;;;;569:5:51;;;;:19;;;;;584:3;569:5;:19;:5;:19;584:3;569:5;:19;;;;;;;;;;;;;;;;;;;;-1:-1:-1;604:9:51;;;;;;;529:91::o;14:226:75:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:75;;14:226;-1:-1:-1;14:226:75:o;453:173::-;521:20;;-1:-1:-1;;;;;570:31:75;;560:42;;550:70;;616:1;613;606:12;550:70;453:173;;;:::o;631:186::-;690:6;743:2;731:9;722:7;718:23;714:32;711:52;;;759:1;756;749:12;711:52;782:29;801:9;782:29;:::i;:::-;772:39;631:186;-1:-1:-1;;;631:186:75:o;822:368::-;899:6;907;915;968:2;956:9;947:7;943:23;939:32;936:52;;;984:1;981;974:12;936:52;1007:29;1026:9;1007:29;:::i;:::-;997:39;1105:2;1090:18;;1077:32;;-1:-1:-1;1180:2:75;1165:18;;;1152:32;;822:368;-1:-1:-1;;;822:368:75:o","linkReferences":{}},"methodIdentifiers":{"getAdmin()":"6e9960c3","getFee()":"ced72f87","getUnderlyingAddress()":"88a68682","requestBridging(address,uint256,bytes32)":"c305870c","setAdmin(address)":"704b6c02","setFee(uint256)":"69fe0e2d","underlying()":"6f307dc3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_underlying\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"NotAnAdmin\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FeePaid\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"}],\"name\":\"requestBridging\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getAdmin()\":{\"details\":\"Get current admin address. \"},\"getFee()\":{\"details\":\"Get current fee amount. \"},\"getUnderlyingAddress()\":{\"details\":\"Get address of the contract that will be called when sending request to `BridgingPayment`. \"},\"requestBridging(address,uint256,bytes32)\":{\"details\":\"Call `requestBridging` function from `ERC20Manager` contract. This function also deducting some fee in native tokens from such a call. For further info see `ERC20Manager::requestBridging`.\"},\"setAdmin(address)\":{\"details\":\"Set new admin for a contract. This function can be called only by an admin.\",\"params\":{\"newAdmin\":\"new admin address\"}},\"setFee(uint256)\":{\"details\":\"Set fee that'll be deducted from user when he sends requests to the contract. This function can be called only by an admin.\",\"params\":{\"newFee\":\"new fee amount\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC20Manager.sol\":\"ERC20ManagerBridgingPayment\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26\",\"dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/BridgingPayment.sol\":{\"keccak256\":\"0x4abcd9e0ebf98e67f33d7e69cc6580ec2bad730c2948e2d069ec21e346a6747a\",\"urls\":[\"bzz-raw://e89397d42566136778ff4012172b034d742d022647adc1e9f1499c80bec80921\",\"dweb:/ipfs/QmQQCDMcqEasWJymxzsNL7gS2iKZAic67VqcHPaUHfQRwC\"]},\"src/ERC20GearSupply.sol\":{\"keccak256\":\"0xb58456aa3f0ee9a2bd9eb262f0bc7865f03ecf70089dccf955c74fe2265bde83\",\"urls\":[\"bzz-raw://87546639b968be049ed4b56a2955e238c609c01276341f364b47cb39fd5bf5c0\",\"dweb:/ipfs/QmNPWEYVQi9SCZ6xUPMhQAcRxirXno1JozFy9KDshMVA4v\"]},\"src/ERC20Manager.sol\":{\"keccak256\":\"0x338a5ffbca7c77a9129c65dd5c5a385bcbc6d09669670681cdc88cc6e0c8a160\",\"urls\":[\"bzz-raw://893ef20017e7d1a70db30dcb75cc5900093caf722c33c986f6207af2bd714519\",\"dweb:/ipfs/QmdVUPXqmC446WfDM2Chj8rdkSt1nJnJd5v6E27Z8QWvqQ\"]},\"src/interfaces/IERC20Manager.sol\":{\"keccak256\":\"0x6d425acf1bd13155d2835202a2ae3e372753ec3541ba3bcee9c3353c474d3424\",\"urls\":[\"bzz-raw://f70eb3a3e5e92290d338e2be1f59fe9452f1f97a251d7c55a4447daa5910d675\",\"dweb:/ipfs/QmNacCf3MJ2umqVnQPt83rbZzWNUTM8wBoeUFiz5AwxxCW\"]},\"src/interfaces/IMessageQueue.sol\":{\"keccak256\":\"0xf8352567197fd1fe695309bfbb2416c79d76e301cd267215476cd94a14784e74\",\"urls\":[\"bzz-raw://ed0f4f31af4e2a09b9bf190f07b2ead5495ea8b61a0e35bc48d161282e8bc015\",\"dweb:/ipfs/QmP164SwLhsAsAbBPkQm5iQqmgfAcSvfhFpEov4eGRhfD9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"NotAnAdmin"},{"inputs":[],"type":"event","name":"FeePaid","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUnderlyingAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"to","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"requestBridging"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAdmin"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFee"},{"inputs":[],"stateMutability":"view","type":"function","name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"getAdmin()":{"details":"Get current admin address. "},"getFee()":{"details":"Get current fee amount. "},"getUnderlyingAddress()":{"details":"Get address of the contract that will be called when sending request to `BridgingPayment`. "},"requestBridging(address,uint256,bytes32)":{"details":"Call `requestBridging` function from `ERC20Manager` contract. This function also deducting some fee in native tokens from such a call. For further info see `ERC20Manager::requestBridging`."},"setAdmin(address)":{"details":"Set new admin for a contract. This function can be called only by an admin.","params":{"newAdmin":"new admin address"}},"setFee(uint256)":{"details":"Set fee that'll be deducted from user when he sends requests to the contract. This function can be called only by an admin.","params":{"newFee":"new fee amount"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC20Manager.sol":"ERC20ManagerBridgingPayment"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol":{"keccak256":"0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073","urls":["bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26","dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/BridgingPayment.sol":{"keccak256":"0x4abcd9e0ebf98e67f33d7e69cc6580ec2bad730c2948e2d069ec21e346a6747a","urls":["bzz-raw://e89397d42566136778ff4012172b034d742d022647adc1e9f1499c80bec80921","dweb:/ipfs/QmQQCDMcqEasWJymxzsNL7gS2iKZAic67VqcHPaUHfQRwC"],"license":null},"src/ERC20GearSupply.sol":{"keccak256":"0xb58456aa3f0ee9a2bd9eb262f0bc7865f03ecf70089dccf955c74fe2265bde83","urls":["bzz-raw://87546639b968be049ed4b56a2955e238c609c01276341f364b47cb39fd5bf5c0","dweb:/ipfs/QmNPWEYVQi9SCZ6xUPMhQAcRxirXno1JozFy9KDshMVA4v"],"license":null},"src/ERC20Manager.sol":{"keccak256":"0x338a5ffbca7c77a9129c65dd5c5a385bcbc6d09669670681cdc88cc6e0c8a160","urls":["bzz-raw://893ef20017e7d1a70db30dcb75cc5900093caf722c33c986f6207af2bd714519","dweb:/ipfs/QmdVUPXqmC446WfDM2Chj8rdkSt1nJnJd5v6E27Z8QWvqQ"],"license":null},"src/interfaces/IERC20Manager.sol":{"keccak256":"0x6d425acf1bd13155d2835202a2ae3e372753ec3541ba3bcee9c3353c474d3424","urls":["bzz-raw://f70eb3a3e5e92290d338e2be1f59fe9452f1f97a251d7c55a4447daa5910d675","dweb:/ipfs/QmNacCf3MJ2umqVnQPt83rbZzWNUTM8wBoeUFiz5AwxxCW"],"license":null},"src/interfaces/IMessageQueue.sol":{"keccak256":"0xf8352567197fd1fe695309bfbb2416c79d76e301cd267215476cd94a14784e74","urls":["bzz-raw://ed0f4f31af4e2a09b9bf190f07b2ead5495ea8b61a0e35bc48d161282e8bc015","dweb:/ipfs/QmP164SwLhsAsAbBPkQm5iQqmgfAcSvfhFpEov4eGRhfD9"],"license":null}},"version":1},"id":53} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_underlying","type":"address","internalType":"address"},{"name":"_admin","type":"address","internalType":"address"},{"name":"_fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"getAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnderlyingAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"requestBridging","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"to","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setFee","inputs":[{"name":"newFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"underlying","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"FeePaid","inputs":[],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotAnAdmin","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080604052348015600e575f5ffd5b506040516106d33803806106d3833981016040819052602b91607a565b5f80546001600160a01b039485166001600160a01b0319918216179091556002805494909316931692909217905560015560ae565b80516001600160a01b03811681146075575f5ffd5b919050565b5f5f5f60608486031215608b575f5ffd5b6092846060565b9250609e602085016060565b9150604084015190509250925092565b610618806100bb5f395ff3fe60806040526004361061006e575f3560e01c8063704b6c021161004c578063704b6c02146100e757806388a6868214610106578063c305870c14610122578063ced72f8714610135575f5ffd5b806369fe0e2d146100725780636e9960c3146100935780636f307dc3146100c9575b5f5ffd5b34801561007d575f5ffd5b5061009161008c366004610532565b610152565b005b34801561009e575f5ffd5b506002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d4575f5ffd5b505f546100ac906001600160a01b031681565b3480156100f2575f5ffd5b50610091610101366004610564565b610182565b348015610111575f5ffd5b505f546001600160a01b03166100ac565b61009161013036600461057d565b6101cd565b348015610140575f5ffd5b506001546040519081526020016100c0565b6002546001600160a01b0316331461017d576040516355098f2760e01b815260040160405180910390fd5b600155565b6002546001600160a01b031633146101ad576040516355098f2760e01b815260040160405180910390fd5b600280546001600160a01b0383166001600160a01b031990911617905550565b6101d56102ca565b6101ea6001600160a01b03841633308561032e565b5f5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303815f875af1158015610239573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025d91906105ad565b505f546040516330c161c360e21b81526001600160a01b03858116600483015260248201859052604482018490529091169063c305870c906064015f604051808303815f87803b1580156102af575f5ffd5b505af11580156102c1573d5f5f3e3d5ffd5b50505050505050565b6002546001546040516001600160a01b039092169181156108fc0291905f818181858888f19350505050158015610303573d5f5f3e3d5ffd5b506040517faaeea0b595e409578c26dd16fa1bdb3a29a4d874694ecef3ca96376940f5fbfb905f90a1565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261038890859061038e565b50505050565b5f6103a26001600160a01b038416836103f9565b905080515f141580156103c65750808060200190518101906103c491906105ad565b155b156103f457604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b606061040683835f61040d565b9392505050565b6060814710156104395760405163cf47918160e01b8152476004820152602481018390526044016103eb565b5f5f856001600160a01b0316848660405161045491906105cc565b5f6040518083038185875af1925050503d805f811461048e576040519150601f19603f3d011682016040523d82523d5f602084013e610493565b606091505b50915091506104a38683836104ad565b9695505050505050565b6060826104c2576104bd82610509565b610406565b81511580156104d957506001600160a01b0384163b155b1561050257604051639996b31560e01b81526001600160a01b03851660048201526024016103eb565b5080610406565b8051156105195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215610542575f5ffd5b5035919050565b80356001600160a01b038116811461055f575f5ffd5b919050565b5f60208284031215610574575f5ffd5b61040682610549565b5f5f5f6060848603121561058f575f5ffd5b61059884610549565b95602085013595506040909401359392505050565b5f602082840312156105bd575f5ffd5b81518015158114610406575f5ffd5b5f82518060208501845e5f92019182525091905056fea264697066735822122090c332f3d98a956c51b8b514abff300d566b81ae2119954227fc2c071d2ea14e64736f6c634300081c0033","sourceMap":"3648:796:53:-:0;;;3743:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;271:10:51;:24;;-1:-1:-1;;;;;271:24:51;;;-1:-1:-1;;;;;;271:24:51;;;;;;;305:5;:23;;;;;;;;;;;;;;271:24;338:10;3648:796:53;;14:177:75;93:13;;-1:-1:-1;;;;;135:31:75;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;:::-;3648:796:53;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061006e575f3560e01c8063704b6c021161004c578063704b6c02146100e757806388a6868214610106578063c305870c14610122578063ced72f8714610135575f5ffd5b806369fe0e2d146100725780636e9960c3146100935780636f307dc3146100c9575b5f5ffd5b34801561007d575f5ffd5b5061009161008c366004610532565b610152565b005b34801561009e575f5ffd5b506002546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100d4575f5ffd5b505f546100ac906001600160a01b031681565b3480156100f2575f5ffd5b50610091610101366004610564565b610182565b348015610111575f5ffd5b505f546001600160a01b03166100ac565b61009161013036600461057d565b6101cd565b348015610140575f5ffd5b506001546040519081526020016100c0565b6002546001600160a01b0316331461017d576040516355098f2760e01b815260040160405180910390fd5b600155565b6002546001600160a01b031633146101ad576040516355098f2760e01b815260040160405180910390fd5b600280546001600160a01b0383166001600160a01b031990911617905550565b6101d56102ca565b6101ea6001600160a01b03841633308561032e565b5f5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303815f875af1158015610239573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025d91906105ad565b505f546040516330c161c360e21b81526001600160a01b03858116600483015260248201859052604482018490529091169063c305870c906064015f604051808303815f87803b1580156102af575f5ffd5b505af11580156102c1573d5f5f3e3d5ffd5b50505050505050565b6002546001546040516001600160a01b039092169181156108fc0291905f818181858888f19350505050158015610303573d5f5f3e3d5ffd5b506040517faaeea0b595e409578c26dd16fa1bdb3a29a4d874694ecef3ca96376940f5fbfb905f90a1565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261038890859061038e565b50505050565b5f6103a26001600160a01b038416836103f9565b905080515f141580156103c65750808060200190518101906103c491906105ad565b155b156103f457604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b606061040683835f61040d565b9392505050565b6060814710156104395760405163cf47918160e01b8152476004820152602481018390526044016103eb565b5f5f856001600160a01b0316848660405161045491906105cc565b5f6040518083038185875af1925050503d805f811461048e576040519150601f19603f3d011682016040523d82523d5f602084013e610493565b606091505b50915091506104a38683836104ad565b9695505050505050565b6060826104c2576104bd82610509565b610406565b81511580156104d957506001600160a01b0384163b155b1561050257604051639996b31560e01b81526001600160a01b03851660048201526024016103eb565b5080610406565b8051156105195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215610542575f5ffd5b5035919050565b80356001600160a01b038116811461055f575f5ffd5b919050565b5f60208284031215610574575f5ffd5b61040682610549565b5f5f5f6060848603121561058f575f5ffd5b61059884610549565b95602085013595506040909401359392505050565b5f602082840312156105bd575f5ffd5b81518015158114610406575f5ffd5b5f82518060208501845e5f92019182525091905056fea264697066735822122090c332f3d98a956c51b8b514abff300d566b81ae2119954227fc2c071d2ea14e64736f6c634300081c0033","sourceMap":"3648:796:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;821:167:51;;;;;;;;;;-1:-1:-1;821:167:51;;;;;:::i;:::-;;:::i;:::-;;1372:79;;;;;;;;;;-1:-1:-1;1439:5:51;;-1:-1:-1;;;;;1439:5:51;1372:79;;;-1:-1:-1;;;;;409:32:75;;;391:51;;379:2;364:18;1372:79:51;;;;;;;;113:25;;;;;;;;;;-1:-1:-1;113:25:51;;;;-1:-1:-1;;;;;113:25:51;;;1139:184;;;;;;;;;;-1:-1:-1;1139:184:51;;;;;:::i;:::-;;:::i;1564:96::-;;;;;;;;;;-1:-1:-1;1617:7:51;1643:10;-1:-1:-1;;;;;1643:10:51;1564:96;;4104:338:53;;;;;;:::i;:::-;;:::i;1706:75:51:-;;;;;;;;;;-1:-1:-1;1771:3:51;;1706:75;;1341:25:75;;;1329:2;1314:18;1706:75:51;1195:177:75;821:167:51;888:5;;-1:-1:-1;;;;;888:5:51;874:10;:19;870:112;;916:12;;-1:-1:-1;;;916:12:51;;;;;;;;;;;870:112;959:3;:12;821:167::o;1139:184::-;1210:5;;-1:-1:-1;;;;;1210:5:51;1196:10;:19;1192:125;;1238:12;;-1:-1:-1;;;1238:12:51;;;;;;;;;;;1192:125;1281:5;:25;;-1:-1:-1;;;;;1281:25:51;;-1:-1:-1;;;;;;1281:25:51;;;;;;1139:184;:::o;4104:338:53:-;4227:11;:9;:11::i;:::-;4249:65;-1:-1:-1;;;;;4249:30:53;;4280:10;4300:4;4307:6;4249:30;:65::i;:::-;4346:10;;4324:41;;-1:-1:-1;;;4324:41:53;;-1:-1:-1;;;;;4346:10:53;;;4324:41;;;1551:51:75;1618:18;;;1611:34;;;4324:21:53;;;;;;1524:18:75;;4324:41:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4389:10:53;;4376:59;;-1:-1:-1;;;4376:59:53;;-1:-1:-1;;;;;2158:32:75;;;4376:59:53;;;2140:51:75;2207:18;;;2200:34;;;2250:18;;;2243:34;;;4389:10:53;;;;4376:40;;2113:18:75;;4376:59:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4104:338;;;:::o;529:91:51:-;569:5;;;584:3;569:19;;-1:-1:-1;;;;;569:5:51;;;;:19;;;;;584:3;569:5;:19;:5;:19;584:3;569:5;:19;;;;;;;;;;;;;;;;;;;;-1:-1:-1;604:9:51;;;;;;;529:91::o;1702:188:39:-;1829:53;;;-1:-1:-1;;;;;2508:32:75;;;1829:53:39;;;2490:51:75;2577:32;;2557:18;;;2550:60;2626:18;;;;2619:34;;;1829:53:39;;;;;;;;;;2463:18:75;;;;1829:53:39;;;;;;;;-1:-1:-1;;;;;1829:53:39;-1:-1:-1;;;1829:53:39;;;1802:81;;1822:5;;1802:19;:81::i;:::-;1702:188;;;;:::o;6468:629::-;6887:23;6913:33;-1:-1:-1;;;;;6913:27:39;;6941:4;6913:27;:33::i;:::-;6887:59;;6960:10;:17;6981:1;6960:22;;:57;;;;;6998:10;6987:30;;;;;;;;;;;;:::i;:::-;6986:31;6960:57;6956:135;;;7040:40;;-1:-1:-1;;;7040:40:39;;-1:-1:-1;;;;;409:32:75;;7040:40:39;;;391:51:75;364:18;;7040:40:39;;;;;;;;6956:135;6538:559;6468:629;;:::o;2484:151:40:-;2559:12;2590:38;2612:6;2620:4;2626:1;2590:21;:38::i;:::-;2583:45;2484:151;-1:-1:-1;;;2484:151:40:o;2959:407::-;3058:12;3110:5;3086:21;:29;3082:123;;;3138:56;;-1:-1:-1;;;3138:56:40;;3165:21;3138:56;;;2838:25:75;2879:18;;;2872:34;;;2811:18;;3138:56:40;2664:248:75;3082:123:40;3215:12;3229:23;3256:6;-1:-1:-1;;;;;3256:11:40;3275:5;3282:4;3256:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:73;;;;3304:55;3331:6;3339:7;3348:10;3304:26;:55::i;:::-;3297:62;2959:407;-1:-1:-1;;;;;;2959:407:40:o;4421:582::-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:40;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:40;;-1:-1:-1;;;;;409:32:75;;4917:24:40;;;391:51:75;364:18;;4917:24:40;245:203:75;4837:119:40;-1:-1:-1;4976:10:40;4969:17;;5543:518;5674:17;;:21;5670:385;;5902:10;5896:17;5958:15;5945:10;5941:2;5937:19;5930:44;5670:385;6025:19;;-1:-1:-1;;;6025:19:40;;;;;;;;;;;14:226:75;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:75;;14:226;-1:-1:-1;14:226:75:o;453:173::-;521:20;;-1:-1:-1;;;;;570:31:75;;560:42;;550:70;;616:1;613;606:12;550:70;453:173;;;:::o;631:186::-;690:6;743:2;731:9;722:7;718:23;714:32;711:52;;;759:1;756;749:12;711:52;782:29;801:9;782:29;:::i;822:368::-;899:6;907;915;968:2;956:9;947:7;943:23;939:32;936:52;;;984:1;981;974:12;936:52;1007:29;1026:9;1007:29;:::i;:::-;997:39;1105:2;1090:18;;1077:32;;-1:-1:-1;1180:2:75;1165:18;;;1152:32;;822:368;-1:-1:-1;;;822:368:75:o;1656:277::-;1723:6;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1824:9;1818:16;1877:5;1870:13;1863:21;1856:5;1853:32;1843:60;;1899:1;1896;1889:12;2917:301;3046:3;3084:6;3078:13;3130:6;3123:4;3115:6;3111:17;3106:3;3100:37;3192:1;3156:16;;3181:13;;;-1:-1:-1;3156:16:75;2917:301;-1:-1:-1;2917:301:75:o","linkReferences":{}},"methodIdentifiers":{"getAdmin()":"6e9960c3","getFee()":"ced72f87","getUnderlyingAddress()":"88a68682","requestBridging(address,uint256,bytes32)":"c305870c","setAdmin(address)":"704b6c02","setFee(uint256)":"69fe0e2d","underlying()":"6f307dc3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_underlying\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAnAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FeePaid\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"}],\"name\":\"requestBridging\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"setFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"getAdmin()\":{\"details\":\"Get current admin address. \"},\"getFee()\":{\"details\":\"Get current fee amount. \"},\"getUnderlyingAddress()\":{\"details\":\"Get address of the contract that will be called when sending request to `BridgingPayment`. \"},\"requestBridging(address,uint256,bytes32)\":{\"details\":\"Call `requestBridging` function from `ERC20Manager` contract. This function also deducting some fee in native tokens from such a call. For further info see `ERC20Manager::requestBridging`.\"},\"setAdmin(address)\":{\"details\":\"Set new admin for a contract. This function can be called only by an admin.\",\"params\":{\"newAdmin\":\"new admin address\"}},\"setFee(uint256)\":{\"details\":\"Set fee that'll be deducted from user when he sends requests to the contract. This function can be called only by an admin.\",\"params\":{\"newFee\":\"new fee amount\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ERC20Manager.sol\":\"ERC20ManagerBridgingPayment\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73\",\"dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12\",\"dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26\",\"dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488\",\"dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756\",\"dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e\",\"dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX\"]},\"src/BridgingPayment.sol\":{\"keccak256\":\"0x4abcd9e0ebf98e67f33d7e69cc6580ec2bad730c2948e2d069ec21e346a6747a\",\"urls\":[\"bzz-raw://e89397d42566136778ff4012172b034d742d022647adc1e9f1499c80bec80921\",\"dweb:/ipfs/QmQQCDMcqEasWJymxzsNL7gS2iKZAic67VqcHPaUHfQRwC\"]},\"src/ERC20GearSupply.sol\":{\"keccak256\":\"0xb58456aa3f0ee9a2bd9eb262f0bc7865f03ecf70089dccf955c74fe2265bde83\",\"urls\":[\"bzz-raw://87546639b968be049ed4b56a2955e238c609c01276341f364b47cb39fd5bf5c0\",\"dweb:/ipfs/QmNPWEYVQi9SCZ6xUPMhQAcRxirXno1JozFy9KDshMVA4v\"]},\"src/ERC20Manager.sol\":{\"keccak256\":\"0x1c7314df4e0ffdbc711c6249c9e594cf8cffc349db717311b1cf74df70b39d0a\",\"urls\":[\"bzz-raw://dc4927f628b9bccc27085d35c3d35ce4f4f493494fc4d8acd8b5316c1292d13e\",\"dweb:/ipfs/QmYS99eJ6GSViKMtvoFMr8J4uWfjAeUR4PpqDi6nRxfge4\"]},\"src/interfaces/IERC20Manager.sol\":{\"keccak256\":\"0x6d425acf1bd13155d2835202a2ae3e372753ec3541ba3bcee9c3353c474d3424\",\"urls\":[\"bzz-raw://f70eb3a3e5e92290d338e2be1f59fe9452f1f97a251d7c55a4447daa5910d675\",\"dweb:/ipfs/QmNacCf3MJ2umqVnQPt83rbZzWNUTM8wBoeUFiz5AwxxCW\"]},\"src/interfaces/IMessageQueue.sol\":{\"keccak256\":\"0xf8352567197fd1fe695309bfbb2416c79d76e301cd267215476cd94a14784e74\",\"urls\":[\"bzz-raw://ed0f4f31af4e2a09b9bf190f07b2ead5495ea8b61a0e35bc48d161282e8bc015\",\"dweb:/ipfs/QmP164SwLhsAsAbBPkQm5iQqmgfAcSvfhFpEov4eGRhfD9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"NotAnAdmin"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"event","name":"FeePaid","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUnderlyingAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"to","type":"bytes32"}],"stateMutability":"payable","type":"function","name":"requestBridging"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setAdmin"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFee"},{"inputs":[],"stateMutability":"view","type":"function","name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"getAdmin()":{"details":"Get current admin address. "},"getFee()":{"details":"Get current fee amount. "},"getUnderlyingAddress()":{"details":"Get address of the contract that will be called when sending request to `BridgingPayment`. "},"requestBridging(address,uint256,bytes32)":{"details":"Call `requestBridging` function from `ERC20Manager` contract. This function also deducting some fee in native tokens from such a call. For further info see `ERC20Manager::requestBridging`."},"setAdmin(address)":{"details":"Set new admin for a contract. This function can be called only by an admin.","params":{"newAdmin":"new admin address"}},"setFee(uint256)":{"details":"Set fee that'll be deducted from user when he sends requests to the contract. This function can be called only by an admin.","params":{"newFee":"new fee amount"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ERC20Manager.sol":"ERC20ManagerBridgingPayment"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9f21f1bcc51daf7fe3998608d7eeb96b16a9c3816898a0cf6a9407bd105c9253","urls":["bzz-raw://71cd1acb2370851314e9e2fc84123228e468037435eea0ed1c459346a214ce73","dweb:/ipfs/QmXw5XVVnrjX3m224Zs9jdQVY3abwiCEVBjk9w24DXsFSi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc61b3530214f6729db70cc02ffacf6218e601a5e351dd25e369a03c6ca201cfb","urls":["bzz-raw://48b897a0323b8d04464848832b364ecfd6c002fd15c53a86304ca1eec1475d12","dweb:/ipfs/QmV1S2GmZgU9bDEfdXFyCe1HhDy4nND3z4Jyy4iBvh5wu2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol":{"keccak256":"0x2659248df25e34000ed214b3dc8da2160bc39874c992b477d9e2b1b3283dc073","urls":["bzz-raw://c345af1b0e7ea28d1216d6a04ab28f5534a5229b9edf9ca3cd0e84950ae58d26","dweb:/ipfs/QmY63jtSrYpLRe8Gj1ep2vMDCKxGNNG3hnNVKBVnrs2nmA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xde02e3a80c5c3b3a2187fbfbdfc7ed7c8c0d5b2e4a0ff5671611674b6c96bd91","urls":["bzz-raw://44b4a6161c6b718c37229643c8e6881b82b14dbcf7ea1b0b081fbc7b810e3488","dweb:/ipfs/QmUAxfrzeBusBHRkCfgzvD8axBKvdmtWz9rb52rYBH5K1w"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x1b0625096e82d06abdcf1844172ef78ef54a5e878761f4d905fda07eaf098424","urls":["bzz-raw://5cd99f1a4836c07461cb3ea023ae2f6d1d01e80694b764a87623aa7252754756","dweb:/ipfs/QmNPNDuiNU6TJatZcdBcrwixBoo5MSXNDq4kaXhpJLWGpB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0xc859863e3bda7ec3cddf6dafe2ffe91bcbe648d1395b856b839c32ee9617c44c","urls":["bzz-raw://a9d5417888b873cf2225ed5d50b2a67be97c1504134a2a580512168d587ad82e","dweb:/ipfs/QmNr5fTb2heFW658NZn7dDnofZgFvQTnNxKRJ3wdnR1skX"],"license":"MIT"},"src/BridgingPayment.sol":{"keccak256":"0x4abcd9e0ebf98e67f33d7e69cc6580ec2bad730c2948e2d069ec21e346a6747a","urls":["bzz-raw://e89397d42566136778ff4012172b034d742d022647adc1e9f1499c80bec80921","dweb:/ipfs/QmQQCDMcqEasWJymxzsNL7gS2iKZAic67VqcHPaUHfQRwC"],"license":null},"src/ERC20GearSupply.sol":{"keccak256":"0xb58456aa3f0ee9a2bd9eb262f0bc7865f03ecf70089dccf955c74fe2265bde83","urls":["bzz-raw://87546639b968be049ed4b56a2955e238c609c01276341f364b47cb39fd5bf5c0","dweb:/ipfs/QmNPWEYVQi9SCZ6xUPMhQAcRxirXno1JozFy9KDshMVA4v"],"license":null},"src/ERC20Manager.sol":{"keccak256":"0x1c7314df4e0ffdbc711c6249c9e594cf8cffc349db717311b1cf74df70b39d0a","urls":["bzz-raw://dc4927f628b9bccc27085d35c3d35ce4f4f493494fc4d8acd8b5316c1292d13e","dweb:/ipfs/QmYS99eJ6GSViKMtvoFMr8J4uWfjAeUR4PpqDi6nRxfge4"],"license":null},"src/interfaces/IERC20Manager.sol":{"keccak256":"0x6d425acf1bd13155d2835202a2ae3e372753ec3541ba3bcee9c3353c474d3424","urls":["bzz-raw://f70eb3a3e5e92290d338e2be1f59fe9452f1f97a251d7c55a4447daa5910d675","dweb:/ipfs/QmNacCf3MJ2umqVnQPt83rbZzWNUTM8wBoeUFiz5AwxxCW"],"license":null},"src/interfaces/IMessageQueue.sol":{"keccak256":"0xf8352567197fd1fe695309bfbb2416c79d76e301cd267215476cd94a14784e74","urls":["bzz-raw://ed0f4f31af4e2a09b9bf190f07b2ead5495ea8b61a0e35bc48d161282e8bc015","dweb:/ipfs/QmP164SwLhsAsAbBPkQm5iQqmgfAcSvfhFpEov4eGRhfD9"],"license":null}},"version":1},"id":53} \ No newline at end of file diff --git a/ethereum/src/ERC20Manager.sol b/ethereum/src/ERC20Manager.sol index 785333f6..cb10e28c 100644 --- a/ethereum/src/ERC20Manager.sol +++ b/ethereum/src/ERC20Manager.sol @@ -33,16 +33,16 @@ contract ERC20Manager is IERC20Manager, IMessageQueueReceiver { SupplyType supply_type = tokenSupplyType[token]; if (supply_type == SupplyType.Gear) { - ERC20GearSupply(token).burnFrom(tx.origin, amount); + ERC20GearSupply(token).burnFrom(msg.sender, amount); } else { if (supply_type == SupplyType.Unknown) { tokenSupplyType[token] = SupplyType.Ethereum; } - IERC20(token).safeTransferFrom(tx.origin, address(this), amount); + IERC20(token).safeTransferFrom(msg.sender, address(this), amount); } - emit BridgingRequested(tx.origin, to, token, amount); + emit BridgingRequested(msg.sender, to, token, amount); } /** @dev Accept bridging request made on other side of bridge. @@ -102,6 +102,8 @@ contract ERC20Manager is IERC20Manager, IMessageQueueReceiver { } contract ERC20ManagerBridgingPayment is BridgingPayment { + using SafeERC20 for IERC20; + constructor( address _underlying, address _admin, @@ -118,6 +120,9 @@ contract ERC20ManagerBridgingPayment is BridgingPayment { ) public payable { deductFee(); + IERC20(token).safeTransferFrom(msg.sender, address(this), amount); + IERC20(token).approve(underlying, amount); + ERC20Manager(underlying).requestBridging(token, amount, to); } } diff --git a/ethereum/test/BridgingPayment.t.sol b/ethereum/test/BridgingPayment.t.sol index 79953e32..122cb11c 100644 --- a/ethereum/test/BridgingPayment.t.sol +++ b/ethereum/test/BridgingPayment.t.sol @@ -89,7 +89,7 @@ contract BridgingPaymentTest is Test { function approveTransfer() public { bool approved = erc20_mock.approve( - address(erc20_manager), + address(bridging_payment), TOKEN_TRANSFER_AMOUNT ); assertEq(approved, true);