5 txs
1.2m calls
constructor
constructor(address admin, address backend, address guardian, address _mamoToken, address _dexRouter, address _quoter, uint256 _defaultSlippageInBps)
functions
BACKEND_ROLE
viewfunction BACKEND_ROLE() view returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultSlippageInBps
viewfunction defaultSlippageInBps() view returns (uint256)
dexRouter
viewfunction dexRouter() view returns (address)
getRewardToken
viewfunction getRewardToken(uint256 index) view returns (tuple)
getRewardTokenCount
viewfunction getRewardTokenCount() view returns (uint256)
getRewardTokenPool
viewfunction getRewardTokenPool(address token) view returns (address)
getRewardTokens
viewfunction getRewardTokens() view returns (tuple[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
getRoleMembers
viewfunction getRoleMembers(bytes32 role) view returns (address[])
GUARDIAN_ROLE
viewfunction GUARDIAN_ROLE() view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isRewardToken
viewfunction isRewardToken(address) view returns (bool)
mamoToken
viewfunction mamoToken() view returns (address)
MAX_SLIPPAGE_IN_BPS
viewfunction MAX_SLIPPAGE_IN_BPS() view returns (uint256)
paused
viewfunction paused() view returns (bool)
quoter
viewfunction quoter() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address token, address pool)
rewardTokenToIndex
viewfunction rewardTokenToIndex(address) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
addRewardToken
nonpayablefunction addRewardToken(address token, address pool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
pause
nonpayablefunction pause()
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, address to, uint256 amount)
recoverETH
nonpayablefunction recoverETH(address to)
removeRewardToken
nonpayablefunction removeRewardToken(address token)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDefaultSlippage
nonpayablefunction setDefaultSlippage(uint256 _defaultSlippageInBps)
setDEXRouter
nonpayablefunction setDEXRouter(address newRouter)
setQuoter
nonpayablefunction setQuoter(address _quoter)
unpause
nonpayablefunction unpause()
updateRewardTokenPool
nonpayablefunction updateRewardTokenPool(address token, address newPool)
events
DefaultSlippageUpdated
event DefaultSlippageUpdated(uint256 oldSlippageInBps, uint256 newSlippageInBps)
DEXRouterUpdated
event DEXRouterUpdated(address indexed oldRouter, address indexed newRouter)
Paused
event Paused(address account)
QuoterUpdated
event QuoterUpdated(address indexed oldQuoter, address indexed newQuoter)
RewardTokenAdded
event RewardTokenAdded(address indexed token, address indexed pool)
RewardTokenPoolUpdated
event RewardTokenPoolUpdated(address indexed token, address indexed oldPool, address indexed newPool)
RewardTokenRemoved
event RewardTokenRemoved(address indexed token)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TokenRecovered
event TokenRecovered(address indexed token, address indexed to, uint256 amount)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a03461042357601f61215638819003918201601f19168301916001600160401b038311848410176104275780849260e094604052833981010312610423576100478161043b565b906100546020820161043b565b906100616040820161043b565b9261006e6060830161043b565b9061007b6080840161043b565b9060c061008a60a0860161043b565b9401516002805460ff19169055956001600160a01b0382169182156103de576001600160a01b038716908115610399576001600160a01b038316948515610354576001600160a01b0387161561030f576001600160a01b03169687156102ca576001600160a01b0316978815610285576109c48a11610240576101299461011361011e9361044f565b610207575b506104c5565b6101c1575b50610545565b61017b575b5060805260018060a01b0319600654161760065560018060a01b03196007541617600755600855604051611a60908161063682396080518181816102c8015281816108510152610d190152f35b5f5160206121365f395f51905f525f5260016020526101ba907fe8fad4b49f5ba25b2c682cfec2ac50a7a40bbd1e12ab51733ec3e9c2f6f1c5db6105c5565b505f61012e565b5f5160206120d65f395f51905f525f526001602052610200907feb2b7e9fb33bd214e4eb1341cc6227bfa8ae181327e69ed47f46972bd2e9abbb6105c5565b505f610123565b5f80526001602052610239907fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb496105c5565b505f610118565b60405162461bcd60e51b815260206004820152601960248201527f44656661756c7420736c69707061676520746f6f2068696768000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527f496e76616c69642071756f7465722061646472657373000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f496e76616c69642044455820726f7574657220616464726573730000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f496e76616c6964204d414d4f20746f6b656e20616464726573730000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f496e76616c696420677561726469616e206164647265737300000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206261636b656e6420616464726573730000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527f496e76616c69642061646d696e206164647265737300000000000000000000006044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361042357565b6001600160a01b0381165f9081525f5160206121165f395f51905f52602052604090205460ff166104c0576001600160a01b03165f8181525f5160206121165f395f51905f5260205260408120805460ff191660011790553391905f5160206120965f395f51905f528180a4600190565b505f90565b6001600160a01b0381165f9081525f5160206120f65f395f51905f52602052604090205460ff166104c0576001600160a01b03165f8181525f5160206120f65f395f51905f5260205260408120805460ff191660011790553391905f5160206120d65f395f51905f52905f5160206120965f395f51905f529080a4600190565b6001600160a01b0381165f9081525f5160206120b65f395f51905f52602052604090205460ff166104c0576001600160a01b03165f8181525f5160206120b65f395f51905f5260205260408120805460ff191660011790553391905f5160206121365f395f51905f52905f5160206120965f395f51905f529080a4600190565b6001810190825f528160205260405f2054155f1461062e57805468010000000000000000811015610427576001810180835581101561061a578390825f5260205f20015554915f5260205260405f2055600190565b634e487b7160e01b5f52603260045260245ffd5b5050505f9056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a71461131d575080630758d924146112f55780630e449f97146111ff5780631171bda9146110cb578063134b6edb1461102f578063134dfcd814610f0b5780631be5938614610eee57806323cb239014610cab578063248a9ca314610c7957806324ea54f414610c3f5780632f2ff15d14610bda57806336568abe14610b965780633d509c9714610a395780633f4ba83a146109d357806344bd1afd1461093457806346bfe56b146107d75780634765087a1461079f5780635c975abb1461077d5780637bb7bed11461073357806382e5d073146107165780638456cb59146106bd5780639010d07c1461067857806391d148541461063057806392c2becc146105f6578063a217fddf146105dc578063a3246ad31461052d578063a6bbd8fd146104c6578063b5fd73f814610489578063c4f59f9b1461038d578063c6bbd5a714610365578063ca15c8731461033b578063d547741f146102f7578063d7b00bcc146102b3578063e22591d6146102975763f912c64b1461019d575f80fd5b34610293576020366003190112610293576004356001600160a01b03811690819003610293576101cb611638565b6101d361179d565b801561025d576007546001600160a01b03811690828214610223576001600160a01b03191682176007557ff7248061c47e1cf157db85f3c9bac5cb0007cbb8867be0807f6dcdb7eb8f52685f80a3005b60405162461bcd60e51b8152602060048201526012602482015271145d5bdd195c88185b1c9958591e481cd95d60721b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21038bab7ba32b960911b6044820152606490fd5b5f80fd5b34610293575f3660031901126102935760206040516109c48152f35b34610293575f366003190112610293576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610293576040366003190112610293576103396004356103166113a0565b9061033461032f825f525f602052600160405f20015490565b611765565b6117b8565b005b34610293576020366003190112610293576004355f526001602052602060405f2054604051908152f35b34610293575f366003190112610293576007546040516001600160a01b039091168152602090f35b34610293575f3660031901126102935760035467ffffffffffffffff811161047557604051906103c360208260051b018361144e565b80825260208201908160035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5f915b838310610457578486604051918291602083019060208452518091526040830191905f5b818110610426575050500390f35b825180516001600160a01b039081168652602091820151168186015286955060409094019390920191600101610418565b6002602060019261046785611470565b8152019201920191906103f4565b634e487b7160e01b5f52604160045260245ffd5b34610293576020366003190112610293576001600160a01b036104aa61138a565b165f526004602052602060ff60405f2054166040519015158152f35b34610293576020366003190112610293576001600160a01b036104e761138a565b16805f52600460205261050060ff60405f2054166115fa565b5f526005602052602061051660405f20546113b6565b50600101546040516001600160a01b039091168152f35b34610293576020366003190112610293576004355f52600160205260405f20604051806020835491828152019081935f5260205f20905f5b8181106105c6575050508161057b91038261144e565b604051918291602083019060208452518091526040830191905f5b8181106105a4575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610596565b8254845260209093019260019283019201610565565b34610293575f3660031901126102935760206040515f8152f35b34610293575f3660031901126102935760206040517f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f8152f35b34610293576040366003190112610293576106496113a0565b6004355f525f60205260405f209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610293576040366003190112610293576004355f52600160205260206106a460243560405f206118fa565b905460405160039290921b1c6001600160a01b03168152f35b34610293575f366003190112610293576106d56116f6565b6106dd61179d565b600160ff1960025416176002557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610293575f366003190112610293576020600354604051908152f35b34610293576020366003190112610293576004356003548110156102935761075c6040916113b6565b50805460019091015482516001600160a01b03928316815291166020820152f35b34610293575f36600319011261029357602060ff600254166040519015158152f35b34610293576020366003190112610293576001600160a01b036107c061138a565b165f526005602052602060405f2054604051908152f35b34610293576040366003190112610293576107f061138a565b6107f86113a0565b90610801611638565b61080961179d565b60018060a01b031690815f52600460205261082a60ff60405f2054166115fa565b6001600160a01b0381169161084083151561149c565b61084c818414156114d7565b6108817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316841415611523565b805f52600560205260405f2054610897816113b6565b50600101546001600160a01b0316928484146108fc576001916108bf6108c4923b151561156f565b6113b6565b500180546001600160a01b031916841790557f95ffd5cab1d4772873bc8bb9ecf11c8b1b677482d2fb08c72d0dfa43f80f67d45f80a4005b60405162461bcd60e51b815260206004820152601060248201526f141bdbdb08185b1c9958591e481cd95d60821b6044820152606490fd5b3461029357602036600319011261029357600435610950611638565b61095861179d565b6109c4811161099a5760407f2bf28488f825d28ef86f4d9579750af1848405e1db4bb31d686a9f6722a51d2991600854908060085582519182526020820152a1005b60405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606490fd5b34610293575f366003190112610293576109eb6116f6565b60025460ff811615610a2a5760ff19166002557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b638dfc202b60e01b5f5260045ffd5b3461029357602036600319011261029357610a5261138a565b610a5a611638565b610a6261179d565b6001600160a01b03165f81815260046020526040902054610a859060ff166115fa565b805f52600560205260405f20546003545f198101908111610b8257808203610b3e575b50506003548015610b2a575f1901610abf816113b6565b610b17576001815f8093550155600355805f5260056020525f6040812055805f52600460205260405f2060ff1981541690557f66257bcef574219c04f7c05f7a1c78d599da10491294c92a5805c48b4cdf50095f80a2005b634e487b7160e01b5f525f60045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b610b4a610b50916113b6565b50611470565b610b6381610b5d846113b6565b906115bb565b516001600160a01b03165f908152600560205260409020558180610aa8565b634e487b7160e01b5f52601160045260245ffd5b3461029357604036600319011261029357610baf6113a0565b336001600160a01b03821603610bcb57610339906004356117b8565b63334bd91960e11b5f5260045ffd5b3461029357604036600319011261029357600435610bf66113a0565b610c0e61032f835f525f602052600160405f20015490565b610c1881836117f2565b610c1e57005b5f91825260016020526040909120610339916001600160a01b03169061190f565b34610293575f3660031901126102935760206040517f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50418152f35b34610293576020366003190112610293576020610ca36004355f525f602052600160405f20015490565b604051908152f35b3461029357604036600319011261029357610cc461138a565b610ccc6113a0565b610cd4611638565b610cdc61179d565b6001600160a01b038216908115610eb9576001600160a01b03811692610d0384151561149c565b825f52600460205260ff60405f205416610e7e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316838114610e3957610d6090610d58858714156114d7565b851415611523565b3b15610df457610d72903b151561156f565b600354815f5260056020528060405f2055604051610d8f81611432565b828152836020820152600160401b82101561047557610b5d826001610db794016003556113b6565b805f52600460205260405f20600160ff198254161790557f3344e0a0f48738979c56a1b9f2cd3425597f76766d53e83439cab3fc30b067c75f80a3005b60405162461bcd60e51b815260206004820152601860248201527f546f6b656e206d757374206265206120636f6e747261637400000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420616464204d414d4f20746f6b656e20617320726577617264006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b88185b1c9958591e481859191959606a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b6044820152606490fd5b34610293575f366003190112610293576020600854604051908152f35b34610293576020366003190112610293576004356001600160a01b0381169081900361029357610f396116a7565b610f448115156113e6565b478015610ffa575f80808084865af13d15610ff5573d67ffffffffffffffff81116104755760405190610f81601f8201601f19166020018361144e565b81525f60203d92013e5b15610fbe577f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909660205f92604051908152a3005b60405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b610f8b565b60405162461bcd60e51b815260206004820152600d60248201526c456d7074792062616c616e636560981b6044820152606490fd5b34610293576020366003190112610293576004355f602060405161105281611432565b82815201526003548110156110905761106f610b4a6040926113b6565b815181516001600160a01b0390811682526020928301511691810191909152f35b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606490fd5b34610293576060366003190112610293576110e461138a565b6110ec6113a0565b604435906110f86116a7565b6001600160a01b03169161110d8315156113e6565b81156111ba5760018060a01b03169060205f6040518281019063a9059cbb60e01b82528660248201528460448201526044815261114b60648261144e565b519082865af1156111af575f513d6111a65750813b155b6111935760207f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909691604051908152a3005b50635274afe760e01b5f5260045260245ffd5b60011415611162565b6040513d5f823e3d90fd5b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b34610293576020366003190112610293576004356001600160a01b038116908190036102935761122d611638565b61123561179d565b80156112bf576006546001600160a01b03811690828214611285576001600160a01b03191682176006557fa7899a8b714f32d880524335f5531c862a01557699d1bdb9682feca0e62361435f80a3005b60405162461bcd60e51b8152602060048201526012602482015271149bdd5d195c88185b1c9958591e481cd95d60721b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103937baba32b960911b6044820152606490fd5b34610293575f366003190112610293576006546040516001600160a01b039091168152602090f35b34610293576020366003190112610293576004359063ffffffff60e01b821680920361029357602091635a05180f60e01b811490811561135f575b5015158152f35b637965db0b60e01b811491508115611379575b5083611358565b6301ffc9a760e01b14905083611372565b600435906001600160a01b038216820361029357565b602435906001600160a01b038216820361029357565b6003548110156113d25760035f5260205f209060011b01905f90565b634e487b7160e01b5f52603260045260245ffd5b156113ed57565b60405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073656e6420746f207a65726f206164647265737300000000006044820152606490fd5b6040810190811067ffffffffffffffff82111761047557604052565b90601f8019910116810190811067ffffffffffffffff82111761047557604052565b9060405161147d81611432565b82546001600160a01b0390811682526001909301549092166020830152565b156114a357565b60405162461bcd60e51b815260206004820152600c60248201526b125b9d985b1a59081c1bdbdb60a21b6044820152606490fd5b156114de57565b60405162461bcd60e51b815260206004820152601c60248201527f506f6f6c2063616e6e6f742062652073616d6520617320746f6b656e000000006044820152606490fd5b1561152a57565b60405162461bcd60e51b815260206004820152601960248201527f506f6f6c2063616e6e6f74206265204d414d4f20746f6b656e000000000000006044820152606490fd5b1561157657565b60405162461bcd60e51b815260206004820152601760248201527f506f6f6c206d757374206265206120636f6e74726163740000000000000000006044820152606490fd5b9190610b1757805182546001600160a01b03199081166001600160a01b0392831617845560209092015160019390930180549092169216919091179055565b1561160157565b60405162461bcd60e51b815260206004820152600f60248201526e151bdad95b881b9bdd08199bdd5b99608a1b6044820152606490fd5b335f9081527f48c7bdbf6e737fbd4f28e9ac2ee21ca1cecfc20cb008a302f41dcc98ef949678602052604090205460ff161561167057565b63e2517d3f60e01b5f52336004527f25cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f60245260445ffd5b335f9081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16156116df57565b63e2517d3f60e01b5f52336004525f60245260445ffd5b335f9081527f8a40f0b47fdc2a0ce293b772acfc7508c8315a4d462786c1adc3a56f92ca2d05602052604090205460ff161561172e57565b63e2517d3f60e01b5f52336004527f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504160245260445ffd5b5f8181526020818152604080832033845290915290205460ff16156117875750565b63e2517d3f60e01b5f523360045260245260445ffd5b60ff600254166117a957565b63d93c066560e01b5f5260045ffd5b6117c2828261187a565b91826117cd57505090565b5f918252600160205260409091206117ee916001600160a01b031690611979565b5090565b5f818152602081815260408083206001600160a01b038616845290915290205460ff16611874575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b50505f90565b5f818152602081815260408083206001600160a01b038616845290915290205460ff1615611874575f818152602081815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b80548210156113d2575f5260205f2001905f90565b6001810190825f528160205260405f2054155f14611972578054600160401b8110156104755761195f6119498260018794018555846118fa565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f20548015155f14611a22575f198101818111610b825782545f19810191908211610b82578181036119ed575b50505080548015610b2a575f1901906119ce82826118fa565b8154905f199060031b1b19169055555f526020525f6040812055600190565b611a0d6119fd61194993866118fa565b90549060031b1c928392866118fa565b90555f528360205260405f20555f80806119b5565b505050505f9056fea2646970667358221220719c8ca104dbaee30fdde18af9d6ddc66cf179ddd57fd39b214ebcf466b3fe7c64736f6c634300081c00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a40f0b47fdc2a0ce293b772acfc7508c8315a4d462786c1adc3a56f92ca2d0525cf2b509f2a7f322675b2a5322b182f44ad2c03ac941a0af17c9b178f5d5d5f48c7bdbf6e737fbd4f28e9ac2ee21ca1cecfc20cb008a302f41dcc98ef949678ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb555435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041000000000000000000000000dca82e03057329f53ed4173429d46b0511e46fb8000000000000000000000000dca82e03057329f53ed4173429d46b0511e46fb8000000000000000000000000fe2ff8927ef602ddac27e314a199d16be61778600000000000000000000000007300b37dfdfab110d83290a29dfb31b1740219fe000000000000000000000000be6d8f0d05cc4be24d5167a3ef062215be6d18a5000000000000000000000000254cf9e1e6e233aa1ac962cb9b05b2cfeaae15b00000000000000000000000000000000000000000000000000000000000000064