diff --git a/src/apps/tokemak/contracts/abis/tokemak-reactor.json b/src/apps/tokemak/contracts/abis/tokemak-reactor.json new file mode 100644 index 000000000..6e7e3976c --- /dev/null +++ b/src/apps/tokemak/contracts/abis/tokemak-reactor.json @@ -0,0 +1,313 @@ +[ + { + "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": [ + { "indexed": false, "internalType": "address", "name": "destinationOnL1", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "destinationOnL2", "type": "address" } + ], + "name": "DestinationsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "bool", "name": "eventSendSet", "type": "bool" }], + "name": "EventSendSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "account", "type": "address" }], + "name": "Paused", + "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" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "account", "type": "address" }], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "requestor", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "WithdrawalRequested", + "type": "event" + }, + { + "inputs": [], + "name": "_eventSend", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "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": "uint256", "name": "amount", "type": "uint256" }], + "name": "approveManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "destinations", + "outputs": [ + { "internalType": "contract IFxStateSender", "name": "fxStateSender", "type": "address" }, + { "internalType": "address", "name": "destinationOnL2", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IWETH", "name": "_weth", "type": "address" }, + { "internalType": "contract IManager", "name": "_manager", "type": "address" }, + { "internalType": "string", "name": "_name", "type": "string" }, + { "internalType": "string", "name": "_symbol", "type": "string" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [{ "internalType": "contract IManager", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "requestWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "requestedWithdrawals", + "outputs": [ + { "internalType": "uint256", "name": "minCycle", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_fxStateSender", "type": "address" }, + { "internalType": "address", "name": "_destinationOnL2", "type": "address" } + ], + "name": "setDestinations", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bool", "name": "_eventSendSet", "type": "bool" }], + "name": "setEventSend", + "outputs": [], + "stateMutability": "nonpayable", + "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": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "underlyer", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "weth", + "outputs": [{ "internalType": "contract IWETH", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "requestedAmount", "type": "uint256" }, + { "internalType": "bool", "name": "asEth", "type": "bool" } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withheldLiquidity", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "stateMutability": "payable", "type": "receive" } +] diff --git a/src/apps/tokemak/contracts/abis/tokemak-rewards.json b/src/apps/tokemak/contracts/abis/tokemak-rewards.json new file mode 100644 index 000000000..5d0efc5a9 --- /dev/null +++ b/src/apps/tokemak/contracts/abis/tokemak-rewards.json @@ -0,0 +1,119 @@ +[ + { + "inputs": [ + { "internalType": "contract IERC20", "name": "token", "type": "address" }, + { "internalType": "address", "name": "signerAddress", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "cycle", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "Claimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "newSigner", "type": "address" }], + "name": "SignerSet", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint256", "name": "cycle", "type": "uint256" }, + { "internalType": "address", "name": "wallet", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct Rewards.Recipient", + "name": "recipient", + "type": "tuple" + }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "claimedAmounts", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint256", "name": "cycle", "type": "uint256" }, + { "internalType": "address", "name": "wallet", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "internalType": "struct Rewards.Recipient", + "name": "recipient", + "type": "tuple" + } + ], + "name": "getClaimableAmount", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "rewardsSigner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newSigner", "type": "address" }], + "name": "setSigner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tokeToken", + "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/tokemak/contracts/abis/tokemak-toke-staking.json b/src/apps/tokemak/contracts/abis/tokemak-toke-staking.json new file mode 100644 index 000000000..b191fd2cb --- /dev/null +++ b/src/apps/tokemak/contracts/abis/tokemak-toke-staking.json @@ -0,0 +1,630 @@ +[ + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleIx", "type": "uint256" } + ], + "name": "Deposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "fxStateSender", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "destinationOnL2", "type": "address" } + ], + "name": "DestinationsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "bool", "name": "eventSendSet", "type": "bool" }], + "name": "EventSendSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256[]", "name": "scheduleIdxs", "type": "uint256[]" }, + { "indexed": false, "internalType": "address[]", "name": "addresses", "type": "address[]" } + ], + "name": "NotionalAddressesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "account", "type": "address" }], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "depositor", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "allowed", "type": "bool" } + ], + "name": "PermissionedDepositorSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleFrom", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleTo", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "to", "type": "address" } + ], + "name": "QueuedTransferRejected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleFrom", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleTo", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "to", "type": "address" } + ], + "name": "QueuedTransferRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "cliff", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "interval", "type": "uint256" }, + { "indexed": false, "internalType": "bool", "name": "setup", "type": "bool" }, + { "indexed": false, "internalType": "bool", "name": "isActive", "type": "bool" }, + { "indexed": false, "internalType": "uint256", "name": "hardStart", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "notional", "type": "address" } + ], + "name": "ScheduleAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" }], + "name": "ScheduleRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "scheduleId", "type": "uint256" }, + { "indexed": false, "internalType": "bool", "name": "isActive", "type": "bool" } + ], + "name": "ScheduleStatusSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleIx", "type": "uint256" } + ], + "name": "Slashed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleFrom", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleTo", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "to", "type": "address" } + ], + "name": "StakeTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "approverAddress", "type": "address" }], + "name": "TransferApproverSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleFrom", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleTo", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "to", "type": "address" } + ], + "name": "TransferQueued", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "account", "type": "address" }], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": false, "internalType": "uint256[]", "name": "userSchedulesIdxs", "type": "uint256[]" } + ], + "name": "UserSchedulesSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleIdx", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "WithdrawCompleted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleIdx", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "WithdrawalRequested", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "scheduleFrom", "type": "uint256" } + ], + "name": "ZeroSweep", + "type": "event" + }, + { + "inputs": [], + "name": "_eventSend", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "cliff", "type": "uint256" }, + { "internalType": "uint256", "name": "duration", "type": "uint256" }, + { "internalType": "uint256", "name": "interval", "type": "uint256" }, + { "internalType": "bool", "name": "setup", "type": "bool" }, + { "internalType": "bool", "name": "isActive", "type": "bool" }, + { "internalType": "uint256", "name": "hardStart", "type": "uint256" }, + { "internalType": "bool", "name": "isPublic", "type": "bool" } + ], + "internalType": "struct IStaking.StakingSchedule", + "name": "schedule", + "type": "tuple" + }, + { "internalType": "address", "name": "notional", "type": "address" } + ], + "name": "addSchedule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" } + ], + "name": "availableForWithdrawal", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "value", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "delegateFunction", + "outputs": [{ "internalType": "contract IDelegateFunction", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" } + ], + "name": "depositFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { + "components": [ + { "internalType": "uint256", "name": "cliff", "type": "uint256" }, + { "internalType": "uint256", "name": "duration", "type": "uint256" }, + { "internalType": "uint256", "name": "interval", "type": "uint256" }, + { "internalType": "bool", "name": "setup", "type": "bool" }, + { "internalType": "bool", "name": "isActive", "type": "bool" }, + { "internalType": "uint256", "name": "hardStart", "type": "uint256" }, + { "internalType": "bool", "name": "isPublic", "type": "bool" } + ], + "internalType": "struct IStaking.StakingSchedule", + "name": "schedule", + "type": "tuple" + }, + { "internalType": "address", "name": "notional", "type": "address" } + ], + "name": "depositWithSchedule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "destinations", + "outputs": [ + { "internalType": "contract IFxStateSender", "name": "fxStateSender", "type": "address" }, + { "internalType": "address", "name": "destinationOnL2", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSchedules", + "outputs": [ + { + "components": [ + { + "components": [ + { "internalType": "uint256", "name": "cliff", "type": "uint256" }, + { "internalType": "uint256", "name": "duration", "type": "uint256" }, + { "internalType": "uint256", "name": "interval", "type": "uint256" }, + { "internalType": "bool", "name": "setup", "type": "bool" }, + { "internalType": "bool", "name": "isActive", "type": "bool" }, + { "internalType": "uint256", "name": "hardStart", "type": "uint256" }, + { "internalType": "bool", "name": "isPublic", "type": "bool" } + ], + "internalType": "struct IStaking.StakingSchedule", + "name": "schedule", + "type": "tuple" + }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "internalType": "struct IStaking.StakingScheduleInfo[]", + "name": "retSchedules", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "getStakes", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "initial", "type": "uint256" }, + { "internalType": "uint256", "name": "withdrawn", "type": "uint256" }, + { "internalType": "uint256", "name": "slashed", "type": "uint256" }, + { "internalType": "uint256", "name": "started", "type": "uint256" }, + { "internalType": "uint256", "name": "scheduleIx", "type": "uint256" } + ], + "internalType": "struct IStaking.StakingDetails[]", + "name": "stakes", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "contract IERC20Upgradeable", "name": "_tokeToken", "type": "address" }, + { "internalType": "contract IManager", "name": "_manager", "type": "address" }, + { "internalType": "address", "name": "_treasury", "type": "address" }, + { "internalType": "address", "name": "_scheduleZeroNotional", "type": "address" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [{ "internalType": "contract IManager", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextScheduleIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "notionalAddresses", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "permissionedDepositors", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "scheduleIdx", "type": "uint256" } + ], + "name": "requestWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "requestedWithdrawals", + "outputs": [ + { "internalType": "uint256", "name": "minCycleIndex", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "schedules", + "outputs": [ + { "internalType": "uint256", "name": "cliff", "type": "uint256" }, + { "internalType": "uint256", "name": "duration", "type": "uint256" }, + { "internalType": "uint256", "name": "interval", "type": "uint256" }, + { "internalType": "bool", "name": "setup", "type": "bool" }, + { "internalType": "bool", "name": "isActive", "type": "bool" }, + { "internalType": "uint256", "name": "hardStart", "type": "uint256" }, + { "internalType": "bool", "name": "isPublic", "type": "bool" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_fxStateSender", "type": "address" }, + { "internalType": "address", "name": "_destinationOnL2", "type": "address" } + ], + "name": "setDestinations", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bool", "name": "_eventSendSet", "type": "bool" }], + "name": "setEventSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "scheduleIdxArr", "type": "uint256[]" }, + { "internalType": "address[]", "name": "addresses", "type": "address[]" } + ], + "name": "setNotionalAddresses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "bool", "name": "canDeposit", "type": "bool" } + ], + "name": "setPermissionedDepositor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "scheduleId", "type": "uint256" }, + { "internalType": "bool", "name": "activeBool", "type": "bool" } + ], + "name": "setScheduleStatus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256[]", "name": "userSchedulesIdxs", "type": "uint256[]" } + ], + "name": "setUserSchedules", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address[]", "name": "accounts", "type": "address[]" }, + { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, + { "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" } + ], + "name": "slash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tokeToken", + "outputs": [{ "internalType": "contract IERC20Upgradeable", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "treasury", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" } + ], + "name": "unvested", + "outputs": [{ "internalType": "uint256", "name": "value", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "name": "userStakingSchedules", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "name": "userStakings", + "outputs": [ + { "internalType": "uint256", "name": "initial", "type": "uint256" }, + { "internalType": "uint256", "name": "withdrawn", "type": "uint256" }, + { "internalType": "uint256", "name": "slashed", "type": "uint256" }, + { "internalType": "uint256", "name": "started", "type": "uint256" }, + { "internalType": "uint256", "name": "scheduleIx", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "scheduleIndex", "type": "uint256" } + ], + "name": "vested", + "outputs": [{ "internalType": "uint256", "name": "value", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "scheduleIdx", "type": "uint256" } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "", "type": "address" }, + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "name": "withdrawalRequestsByIndex", + "outputs": [ + { "internalType": "uint256", "name": "minCycleIndex", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "withheldLiquidity", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/tokemak/contracts/ethers/TokemakReactor.ts b/src/apps/tokemak/contracts/ethers/TokemakReactor.ts new file mode 100644 index 000000000..18734e1c7 --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/TokemakReactor.ts @@ -0,0 +1,862 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface TokemakReactorInterface extends utils.Interface { + functions: { + '_eventSend()': FunctionFragment; + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'approveManager(uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'deposit(uint256)': FunctionFragment; + 'depositFor(address,uint256)': FunctionFragment; + 'destinations()': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'initialize(address,address,string,string)': FunctionFragment; + 'manager()': FunctionFragment; + 'name()': FunctionFragment; + 'owner()': FunctionFragment; + 'pause()': FunctionFragment; + 'paused()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'requestWithdrawal(uint256)': FunctionFragment; + 'requestedWithdrawals(address)': FunctionFragment; + 'setDestinations(address,address)': FunctionFragment; + 'setEventSend(bool)': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'underlyer()': FunctionFragment; + 'unpause()': FunctionFragment; + 'weth()': FunctionFragment; + 'withdraw(uint256,bool)': FunctionFragment; + 'withheldLiquidity()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | '_eventSend' + | 'allowance' + | 'approve' + | 'approveManager' + | 'balanceOf' + | 'decimals' + | 'decreaseAllowance' + | 'deposit' + | 'depositFor' + | 'destinations' + | 'increaseAllowance' + | 'initialize' + | 'manager' + | 'name' + | 'owner' + | 'pause' + | 'paused' + | 'renounceOwnership' + | 'requestWithdrawal' + | 'requestedWithdrawals' + | 'setDestinations' + | 'setEventSend' + | 'symbol' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'transferOwnership' + | 'underlyer' + | 'unpause' + | 'weth' + | 'withdraw' + | 'withheldLiquidity', + ): FunctionFragment; + + encodeFunctionData(functionFragment: '_eventSend', values?: undefined): string; + encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'approveManager', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'depositFor', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'destinations', values?: undefined): string; + encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'initialize', values: [string, string, string, string]): string; + encodeFunctionData(functionFragment: 'manager', values?: undefined): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pause', values?: undefined): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'requestWithdrawal', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'requestedWithdrawals', values: [string]): string; + encodeFunctionData(functionFragment: 'setDestinations', values: [string, string]): string; + encodeFunctionData(functionFragment: 'setEventSend', values: [boolean]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'underlyer', values?: undefined): string; + encodeFunctionData(functionFragment: 'unpause', values?: undefined): string; + encodeFunctionData(functionFragment: 'weth', values?: undefined): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'withheldLiquidity', values?: undefined): string; + + decodeFunctionResult(functionFragment: '_eventSend', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approveManager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositFor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'destinations', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'manager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'requestWithdrawal', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'requestedWithdrawals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setDestinations', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setEventSend', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'underlyer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'weth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withheldLiquidity', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'DestinationsSet(address,address)': EventFragment; + 'EventSendSet(bool)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'Paused(address)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Unpaused(address)': EventFragment; + 'WithdrawalRequested(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DestinationsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EventSendSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawalRequested'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface DestinationsSetEventObject { + destinationOnL1: string; + destinationOnL2: string; +} +export type DestinationsSetEvent = TypedEvent<[string, string], DestinationsSetEventObject>; + +export type DestinationsSetEventFilter = TypedEventFilter; + +export interface EventSendSetEventObject { + eventSendSet: boolean; +} +export type EventSendSetEvent = TypedEvent<[boolean], EventSendSetEventObject>; + +export type EventSendSetEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface PausedEventObject { + account: string; +} +export type PausedEvent = TypedEvent<[string], PausedEventObject>; + +export type PausedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface UnpausedEventObject { + account: string; +} +export type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface WithdrawalRequestedEventObject { + requestor: string; + amount: BigNumber; +} +export type WithdrawalRequestedEvent = TypedEvent<[string, BigNumber], WithdrawalRequestedEventObject>; + +export type WithdrawalRequestedEventFilter = TypedEventFilter; + +export interface TokemakReactor extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TokemakReactorInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + _eventSend(overrides?: CallOverrides): Promise<[boolean]>; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveManager( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + destinations( + overrides?: CallOverrides, + ): Promise<[string, string] & { fxStateSender: string; destinationOnL2: string }>; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + initialize( + _weth: string, + _manager: string, + _name: string, + _symbol: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise<[string]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycle: BigNumber; amount: BigNumber }>; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underlyer(overrides?: CallOverrides): Promise<[string]>; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + weth(overrides?: CallOverrides): Promise<[string]>; + + withdraw( + requestedAmount: BigNumberish, + asEth: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise<[BigNumber]>; + }; + + _eventSend(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveManager( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + destinations( + overrides?: CallOverrides, + ): Promise<[string, string] & { fxStateSender: string; destinationOnL2: string }>; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + initialize( + _weth: string, + _manager: string, + _name: string, + _symbol: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycle: BigNumber; amount: BigNumber }>; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underlyer(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + weth(overrides?: CallOverrides): Promise; + + withdraw( + requestedAmount: BigNumberish, + asEth: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise; + + callStatic: { + _eventSend(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + approveManager(amount: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; + + deposit(amount: BigNumberish, overrides?: CallOverrides): Promise; + + depositFor(account: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + destinations( + overrides?: CallOverrides, + ): Promise<[string, string] & { fxStateSender: string; destinationOnL2: string }>; + + increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; + + initialize( + _weth: string, + _manager: string, + _name: string, + _symbol: string, + overrides?: CallOverrides, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + requestWithdrawal(amount: BigNumberish, overrides?: CallOverrides): Promise; + + requestedWithdrawals( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycle: BigNumber; amount: BigNumber }>; + + setDestinations(_fxStateSender: string, _destinationOnL2: string, overrides?: CallOverrides): Promise; + + setEventSend(_eventSendSet: boolean, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + underlyer(overrides?: CallOverrides): Promise; + + unpause(overrides?: CallOverrides): Promise; + + weth(overrides?: CallOverrides): Promise; + + withdraw(requestedAmount: BigNumberish, asEth: boolean, overrides?: CallOverrides): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + spender?: string | null, + value?: null, + ): ApprovalEventFilter; + Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; + + 'DestinationsSet(address,address)'(destinationOnL1?: null, destinationOnL2?: null): DestinationsSetEventFilter; + DestinationsSet(destinationOnL1?: null, destinationOnL2?: null): DestinationsSetEventFilter; + + 'EventSendSet(bool)'(eventSendSet?: null): EventSendSetEventFilter; + EventSendSet(eventSendSet?: null): EventSendSetEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'Paused(address)'(account?: null): PausedEventFilter; + Paused(account?: null): PausedEventFilter; + + 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + + 'Unpaused(address)'(account?: null): UnpausedEventFilter; + Unpaused(account?: null): UnpausedEventFilter; + + 'WithdrawalRequested(address,uint256)'(requestor?: null, amount?: null): WithdrawalRequestedEventFilter; + WithdrawalRequested(requestor?: null, amount?: null): WithdrawalRequestedEventFilter; + }; + + estimateGas: { + _eventSend(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveManager( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + destinations(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + initialize( + _weth: string, + _manager: string, + _name: string, + _symbol: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals(arg0: string, overrides?: CallOverrides): Promise; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underlyer(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + weth(overrides?: CallOverrides): Promise; + + withdraw( + requestedAmount: BigNumberish, + asEth: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + _eventSend(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approveManager( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + deposit( + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + destinations(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + initialize( + _weth: string, + _manager: string, + _name: string, + _symbol: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals(arg0: string, overrides?: CallOverrides): Promise; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underlyer(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + weth(overrides?: CallOverrides): Promise; + + withdraw( + requestedAmount: BigNumberish, + asEth: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/tokemak/contracts/ethers/TokemakRewards.ts b/src/apps/tokemak/contracts/ethers/TokemakRewards.ts new file mode 100644 index 000000000..b8647d796 --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/TokemakRewards.ts @@ -0,0 +1,304 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace Rewards { + export type RecipientStruct = { + chainId: BigNumberish; + cycle: BigNumberish; + wallet: string; + amount: BigNumberish; + }; + + export type RecipientStructOutput = [BigNumber, BigNumber, string, BigNumber] & { + chainId: BigNumber; + cycle: BigNumber; + wallet: string; + amount: BigNumber; + }; +} + +export interface TokemakRewardsInterface extends utils.Interface { + functions: { + 'claim((uint256,uint256,address,uint256),uint8,bytes32,bytes32)': FunctionFragment; + 'claimedAmounts(address)': FunctionFragment; + 'getClaimableAmount((uint256,uint256,address,uint256))': FunctionFragment; + 'owner()': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'rewardsSigner()': FunctionFragment; + 'setSigner(address)': FunctionFragment; + 'tokeToken()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'claim' + | 'claimedAmounts' + | 'getClaimableAmount' + | 'owner' + | 'renounceOwnership' + | 'rewardsSigner' + | 'setSigner' + | 'tokeToken' + | 'transferOwnership', + ): FunctionFragment; + + encodeFunctionData( + functionFragment: 'claim', + values: [Rewards.RecipientStruct, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'claimedAmounts', values: [string]): string; + encodeFunctionData(functionFragment: 'getClaimableAmount', values: [Rewards.RecipientStruct]): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardsSigner', values?: undefined): string; + encodeFunctionData(functionFragment: 'setSigner', values: [string]): string; + encodeFunctionData(functionFragment: 'tokeToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + + decodeFunctionResult(functionFragment: 'claim', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimedAmounts', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getClaimableAmount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardsSigner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setSigner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokeToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + + events: { + 'Claimed(uint256,address,uint256)': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'SignerSet(address)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Claimed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SignerSet'): EventFragment; +} + +export interface ClaimedEventObject { + cycle: BigNumber; + recipient: string; + amount: BigNumber; +} +export type ClaimedEvent = TypedEvent<[BigNumber, string, BigNumber], ClaimedEventObject>; + +export type ClaimedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface SignerSetEventObject { + newSigner: string; +} +export type SignerSetEvent = TypedEvent<[string], SignerSetEventObject>; + +export type SignerSetEventFilter = TypedEventFilter; + +export interface TokemakRewards extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TokemakRewardsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + claim( + recipient: Rewards.RecipientStruct, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimedAmounts(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + getClaimableAmount(recipient: Rewards.RecipientStruct, overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardsSigner(overrides?: CallOverrides): Promise<[string]>; + + setSigner( + newSigner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise<[string]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + claim( + recipient: Rewards.RecipientStruct, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimedAmounts(arg0: string, overrides?: CallOverrides): Promise; + + getClaimableAmount(recipient: Rewards.RecipientStruct, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardsSigner(overrides?: CallOverrides): Promise; + + setSigner( + newSigner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + claim( + recipient: Rewards.RecipientStruct, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + claimedAmounts(arg0: string, overrides?: CallOverrides): Promise; + + getClaimableAmount(recipient: Rewards.RecipientStruct, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + rewardsSigner(overrides?: CallOverrides): Promise; + + setSigner(newSigner: string, overrides?: CallOverrides): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Claimed(uint256,address,uint256)'(cycle?: null, recipient?: null, amount?: null): ClaimedEventFilter; + Claimed(cycle?: null, recipient?: null, amount?: null): ClaimedEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'SignerSet(address)'(newSigner?: null): SignerSetEventFilter; + SignerSet(newSigner?: null): SignerSetEventFilter; + }; + + estimateGas: { + claim( + recipient: Rewards.RecipientStruct, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimedAmounts(arg0: string, overrides?: CallOverrides): Promise; + + getClaimableAmount(recipient: Rewards.RecipientStruct, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardsSigner(overrides?: CallOverrides): Promise; + + setSigner(newSigner: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + claim( + recipient: Rewards.RecipientStruct, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + claimedAmounts(arg0: string, overrides?: CallOverrides): Promise; + + getClaimableAmount(recipient: Rewards.RecipientStruct, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + rewardsSigner(overrides?: CallOverrides): Promise; + + setSigner( + newSigner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/tokemak/contracts/ethers/TokemakTokeStaking.ts b/src/apps/tokemak/contracts/ethers/TokemakTokeStaking.ts new file mode 100644 index 000000000..b787a8aaf --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/TokemakTokeStaking.ts @@ -0,0 +1,1545 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace IStaking { + export type StakingScheduleStruct = { + cliff: BigNumberish; + duration: BigNumberish; + interval: BigNumberish; + setup: boolean; + isActive: boolean; + hardStart: BigNumberish; + isPublic: boolean; + }; + + export type StakingScheduleStructOutput = [BigNumber, BigNumber, BigNumber, boolean, boolean, BigNumber, boolean] & { + cliff: BigNumber; + duration: BigNumber; + interval: BigNumber; + setup: boolean; + isActive: boolean; + hardStart: BigNumber; + isPublic: boolean; + }; + + export type StakingScheduleInfoStruct = { + schedule: IStaking.StakingScheduleStruct; + index: BigNumberish; + }; + + export type StakingScheduleInfoStructOutput = [IStaking.StakingScheduleStructOutput, BigNumber] & { + schedule: IStaking.StakingScheduleStructOutput; + index: BigNumber; + }; + + export type StakingDetailsStruct = { + initial: BigNumberish; + withdrawn: BigNumberish; + slashed: BigNumberish; + started: BigNumberish; + scheduleIx: BigNumberish; + }; + + export type StakingDetailsStructOutput = [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + initial: BigNumber; + withdrawn: BigNumber; + slashed: BigNumber; + started: BigNumber; + scheduleIx: BigNumber; + }; +} + +export interface TokemakTokeStakingInterface extends utils.Interface { + functions: { + '_eventSend()': FunctionFragment; + 'addSchedule((uint256,uint256,uint256,bool,bool,uint256,bool),address)': FunctionFragment; + 'availableForWithdrawal(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'delegateFunction()': FunctionFragment; + 'deposit(uint256)': FunctionFragment; + 'deposit(uint256,uint256)': FunctionFragment; + 'depositFor(address,uint256,uint256)': FunctionFragment; + 'depositWithSchedule(address,uint256,(uint256,uint256,uint256,bool,bool,uint256,bool),address)': FunctionFragment; + 'destinations()': FunctionFragment; + 'getSchedules()': FunctionFragment; + 'getStakes(address)': FunctionFragment; + 'initialize(address,address,address,address)': FunctionFragment; + 'manager()': FunctionFragment; + 'nextScheduleIndex()': FunctionFragment; + 'notionalAddresses(uint256)': FunctionFragment; + 'owner()': FunctionFragment; + 'pause()': FunctionFragment; + 'paused()': FunctionFragment; + 'permissionedDepositors(address)': FunctionFragment; + 'renounceOwnership()': FunctionFragment; + 'requestWithdrawal(uint256,uint256)': FunctionFragment; + 'requestedWithdrawals(address)': FunctionFragment; + 'schedules(uint256)': FunctionFragment; + 'setDestinations(address,address)': FunctionFragment; + 'setEventSend(bool)': FunctionFragment; + 'setNotionalAddresses(uint256[],address[])': FunctionFragment; + 'setPermissionedDepositor(address,bool)': FunctionFragment; + 'setScheduleStatus(uint256,bool)': FunctionFragment; + 'setUserSchedules(address,uint256[])': FunctionFragment; + 'slash(address[],uint256[],uint256)': FunctionFragment; + 'tokeToken()': FunctionFragment; + 'transferOwnership(address)': FunctionFragment; + 'treasury()': FunctionFragment; + 'unpause()': FunctionFragment; + 'unvested(address,uint256)': FunctionFragment; + 'userStakingSchedules(address,uint256)': FunctionFragment; + 'userStakings(address,uint256)': FunctionFragment; + 'vested(address,uint256)': FunctionFragment; + 'withdraw(uint256)': FunctionFragment; + 'withdraw(uint256,uint256)': FunctionFragment; + 'withdrawalRequestsByIndex(address,uint256)': FunctionFragment; + 'withheldLiquidity()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | '_eventSend' + | 'addSchedule' + | 'availableForWithdrawal' + | 'balanceOf' + | 'delegateFunction' + | 'deposit(uint256)' + | 'deposit(uint256,uint256)' + | 'depositFor' + | 'depositWithSchedule' + | 'destinations' + | 'getSchedules' + | 'getStakes' + | 'initialize' + | 'manager' + | 'nextScheduleIndex' + | 'notionalAddresses' + | 'owner' + | 'pause' + | 'paused' + | 'permissionedDepositors' + | 'renounceOwnership' + | 'requestWithdrawal' + | 'requestedWithdrawals' + | 'schedules' + | 'setDestinations' + | 'setEventSend' + | 'setNotionalAddresses' + | 'setPermissionedDepositor' + | 'setScheduleStatus' + | 'setUserSchedules' + | 'slash' + | 'tokeToken' + | 'transferOwnership' + | 'treasury' + | 'unpause' + | 'unvested' + | 'userStakingSchedules' + | 'userStakings' + | 'vested' + | 'withdraw(uint256)' + | 'withdraw(uint256,uint256)' + | 'withdrawalRequestsByIndex' + | 'withheldLiquidity', + ): FunctionFragment; + + encodeFunctionData(functionFragment: '_eventSend', values?: undefined): string; + encodeFunctionData(functionFragment: 'addSchedule', values: [IStaking.StakingScheduleStruct, string]): string; + encodeFunctionData(functionFragment: 'availableForWithdrawal', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'delegateFunction', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposit(uint256)', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'deposit(uint256,uint256)', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'depositFor', values: [string, BigNumberish, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'depositWithSchedule', + values: [string, BigNumberish, IStaking.StakingScheduleStruct, string], + ): string; + encodeFunctionData(functionFragment: 'destinations', values?: undefined): string; + encodeFunctionData(functionFragment: 'getSchedules', values?: undefined): string; + encodeFunctionData(functionFragment: 'getStakes', values: [string]): string; + encodeFunctionData(functionFragment: 'initialize', values: [string, string, string, string]): string; + encodeFunctionData(functionFragment: 'manager', values?: undefined): string; + encodeFunctionData(functionFragment: 'nextScheduleIndex', values?: undefined): string; + encodeFunctionData(functionFragment: 'notionalAddresses', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'owner', values?: undefined): string; + encodeFunctionData(functionFragment: 'pause', values?: undefined): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'permissionedDepositors', values: [string]): string; + encodeFunctionData(functionFragment: 'renounceOwnership', values?: undefined): string; + encodeFunctionData(functionFragment: 'requestWithdrawal', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'requestedWithdrawals', values: [string]): string; + encodeFunctionData(functionFragment: 'schedules', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setDestinations', values: [string, string]): string; + encodeFunctionData(functionFragment: 'setEventSend', values: [boolean]): string; + encodeFunctionData(functionFragment: 'setNotionalAddresses', values: [BigNumberish[], string[]]): string; + encodeFunctionData(functionFragment: 'setPermissionedDepositor', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setScheduleStatus', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'setUserSchedules', values: [string, BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'slash', values: [string[], BigNumberish[], BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokeToken', values?: undefined): string; + encodeFunctionData(functionFragment: 'transferOwnership', values: [string]): string; + encodeFunctionData(functionFragment: 'treasury', values?: undefined): string; + encodeFunctionData(functionFragment: 'unpause', values?: undefined): string; + encodeFunctionData(functionFragment: 'unvested', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'userStakingSchedules', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'userStakings', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'vested', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'withdraw(uint256)', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'withdraw(uint256,uint256)', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'withdrawalRequestsByIndex', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'withheldLiquidity', values?: undefined): string; + + decodeFunctionResult(functionFragment: '_eventSend', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addSchedule', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'availableForWithdrawal', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'delegateFunction', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit(uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit(uint256,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositFor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositWithSchedule', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'destinations', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getSchedules', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getStakes', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'manager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nextScheduleIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'notionalAddresses', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permissionedDepositors', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'renounceOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'requestWithdrawal', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'requestedWithdrawals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'schedules', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setDestinations', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setEventSend', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setNotionalAddresses', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPermissionedDepositor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setScheduleStatus', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setUserSchedules', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'slash', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokeToken', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferOwnership', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'treasury', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unvested', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userStakingSchedules', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'userStakings', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'vested', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw(uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw(uint256,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawalRequestsByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withheldLiquidity', data: BytesLike): Result; + + events: { + 'Deposited(address,uint256,uint256)': EventFragment; + 'DestinationsSet(address,address)': EventFragment; + 'EventSendSet(bool)': EventFragment; + 'NotionalAddressesSet(uint256[],address[])': EventFragment; + 'OwnershipTransferred(address,address)': EventFragment; + 'Paused(address)': EventFragment; + 'PermissionedDepositorSet(address,bool)': EventFragment; + 'QueuedTransferRejected(address,uint256,uint256,uint256,address)': EventFragment; + 'QueuedTransferRemoved(address,uint256,uint256,uint256,address)': EventFragment; + 'ScheduleAdded(uint256,uint256,uint256,uint256,bool,bool,uint256,address)': EventFragment; + 'ScheduleRemoved(uint256)': EventFragment; + 'ScheduleStatusSet(uint256,bool)': EventFragment; + 'Slashed(address,uint256,uint256)': EventFragment; + 'StakeTransferred(address,uint256,uint256,uint256,address)': EventFragment; + 'TransferApproverSet(address)': EventFragment; + 'TransferQueued(address,uint256,uint256,uint256,address)': EventFragment; + 'Unpaused(address)': EventFragment; + 'UserSchedulesSet(address,uint256[])': EventFragment; + 'WithdrawCompleted(address,uint256,uint256)': EventFragment; + 'WithdrawalRequested(address,uint256,uint256)': EventFragment; + 'ZeroSweep(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Deposited'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DestinationsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'EventSendSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'NotionalAddressesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'OwnershipTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PermissionedDepositorSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'QueuedTransferRejected'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'QueuedTransferRemoved'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ScheduleAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ScheduleRemoved'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ScheduleStatusSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Slashed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'StakeTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'TransferApproverSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'TransferQueued'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'UserSchedulesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawCompleted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawalRequested'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ZeroSweep'): EventFragment; +} + +export interface DepositedEventObject { + account: string; + amount: BigNumber; + scheduleIx: BigNumber; +} +export type DepositedEvent = TypedEvent<[string, BigNumber, BigNumber], DepositedEventObject>; + +export type DepositedEventFilter = TypedEventFilter; + +export interface DestinationsSetEventObject { + fxStateSender: string; + destinationOnL2: string; +} +export type DestinationsSetEvent = TypedEvent<[string, string], DestinationsSetEventObject>; + +export type DestinationsSetEventFilter = TypedEventFilter; + +export interface EventSendSetEventObject { + eventSendSet: boolean; +} +export type EventSendSetEvent = TypedEvent<[boolean], EventSendSetEventObject>; + +export type EventSendSetEventFilter = TypedEventFilter; + +export interface NotionalAddressesSetEventObject { + scheduleIdxs: BigNumber[]; + addresses: string[]; +} +export type NotionalAddressesSetEvent = TypedEvent<[BigNumber[], string[]], NotionalAddressesSetEventObject>; + +export type NotionalAddressesSetEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent<[string, string], OwnershipTransferredEventObject>; + +export type OwnershipTransferredEventFilter = TypedEventFilter; + +export interface PausedEventObject { + account: string; +} +export type PausedEvent = TypedEvent<[string], PausedEventObject>; + +export type PausedEventFilter = TypedEventFilter; + +export interface PermissionedDepositorSetEventObject { + depositor: string; + allowed: boolean; +} +export type PermissionedDepositorSetEvent = TypedEvent<[string, boolean], PermissionedDepositorSetEventObject>; + +export type PermissionedDepositorSetEventFilter = TypedEventFilter; + +export interface QueuedTransferRejectedEventObject { + from: string; + scheduleFrom: BigNumber; + scheduleTo: BigNumber; + amount: BigNumber; + to: string; +} +export type QueuedTransferRejectedEvent = TypedEvent< + [string, BigNumber, BigNumber, BigNumber, string], + QueuedTransferRejectedEventObject +>; + +export type QueuedTransferRejectedEventFilter = TypedEventFilter; + +export interface QueuedTransferRemovedEventObject { + from: string; + scheduleFrom: BigNumber; + scheduleTo: BigNumber; + amount: BigNumber; + to: string; +} +export type QueuedTransferRemovedEvent = TypedEvent< + [string, BigNumber, BigNumber, BigNumber, string], + QueuedTransferRemovedEventObject +>; + +export type QueuedTransferRemovedEventFilter = TypedEventFilter; + +export interface ScheduleAddedEventObject { + scheduleIndex: BigNumber; + cliff: BigNumber; + duration: BigNumber; + interval: BigNumber; + setup: boolean; + isActive: boolean; + hardStart: BigNumber; + notional: string; +} +export type ScheduleAddedEvent = TypedEvent< + [BigNumber, BigNumber, BigNumber, BigNumber, boolean, boolean, BigNumber, string], + ScheduleAddedEventObject +>; + +export type ScheduleAddedEventFilter = TypedEventFilter; + +export interface ScheduleRemovedEventObject { + scheduleIndex: BigNumber; +} +export type ScheduleRemovedEvent = TypedEvent<[BigNumber], ScheduleRemovedEventObject>; + +export type ScheduleRemovedEventFilter = TypedEventFilter; + +export interface ScheduleStatusSetEventObject { + scheduleId: BigNumber; + isActive: boolean; +} +export type ScheduleStatusSetEvent = TypedEvent<[BigNumber, boolean], ScheduleStatusSetEventObject>; + +export type ScheduleStatusSetEventFilter = TypedEventFilter; + +export interface SlashedEventObject { + account: string; + amount: BigNumber; + scheduleIx: BigNumber; +} +export type SlashedEvent = TypedEvent<[string, BigNumber, BigNumber], SlashedEventObject>; + +export type SlashedEventFilter = TypedEventFilter; + +export interface StakeTransferredEventObject { + from: string; + scheduleFrom: BigNumber; + scheduleTo: BigNumber; + amount: BigNumber; + to: string; +} +export type StakeTransferredEvent = TypedEvent< + [string, BigNumber, BigNumber, BigNumber, string], + StakeTransferredEventObject +>; + +export type StakeTransferredEventFilter = TypedEventFilter; + +export interface TransferApproverSetEventObject { + approverAddress: string; +} +export type TransferApproverSetEvent = TypedEvent<[string], TransferApproverSetEventObject>; + +export type TransferApproverSetEventFilter = TypedEventFilter; + +export interface TransferQueuedEventObject { + from: string; + scheduleFrom: BigNumber; + scheduleTo: BigNumber; + amount: BigNumber; + to: string; +} +export type TransferQueuedEvent = TypedEvent< + [string, BigNumber, BigNumber, BigNumber, string], + TransferQueuedEventObject +>; + +export type TransferQueuedEventFilter = TypedEventFilter; + +export interface UnpausedEventObject { + account: string; +} +export type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface UserSchedulesSetEventObject { + account: string; + userSchedulesIdxs: BigNumber[]; +} +export type UserSchedulesSetEvent = TypedEvent<[string, BigNumber[]], UserSchedulesSetEventObject>; + +export type UserSchedulesSetEventFilter = TypedEventFilter; + +export interface WithdrawCompletedEventObject { + account: string; + scheduleIdx: BigNumber; + amount: BigNumber; +} +export type WithdrawCompletedEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawCompletedEventObject>; + +export type WithdrawCompletedEventFilter = TypedEventFilter; + +export interface WithdrawalRequestedEventObject { + account: string; + scheduleIdx: BigNumber; + amount: BigNumber; +} +export type WithdrawalRequestedEvent = TypedEvent<[string, BigNumber, BigNumber], WithdrawalRequestedEventObject>; + +export type WithdrawalRequestedEventFilter = TypedEventFilter; + +export interface ZeroSweepEventObject { + user: string; + amount: BigNumber; + scheduleFrom: BigNumber; +} +export type ZeroSweepEvent = TypedEvent<[string, BigNumber, BigNumber], ZeroSweepEventObject>; + +export type ZeroSweepEventFilter = TypedEventFilter; + +export interface TokemakTokeStaking extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TokemakTokeStakingInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + _eventSend(overrides?: CallOverrides): Promise<[boolean]>; + + addSchedule( + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableForWithdrawal( + account: string, + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber]>; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber] & { value: BigNumber }>; + + delegateFunction(overrides?: CallOverrides): Promise<[string]>; + + 'deposit(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'deposit(uint256,uint256)'( + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWithSchedule( + account: string, + amount: BigNumberish, + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + destinations( + overrides?: CallOverrides, + ): Promise<[string, string] & { fxStateSender: string; destinationOnL2: string }>; + + getSchedules(overrides?: CallOverrides): Promise< + [IStaking.StakingScheduleInfoStructOutput[]] & { + retSchedules: IStaking.StakingScheduleInfoStructOutput[]; + } + >; + + getStakes( + account: string, + overrides?: CallOverrides, + ): Promise< + [IStaking.StakingDetailsStructOutput[]] & { + stakes: IStaking.StakingDetailsStructOutput[]; + } + >; + + initialize( + _tokeToken: string, + _manager: string, + _treasury: string, + _scheduleZeroNotional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise<[string]>; + + nextScheduleIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + notionalAddresses(arg0: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + permissionedDepositors(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycleIndex: BigNumber; amount: BigNumber }>; + + schedules( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, boolean, boolean, BigNumber, boolean] & { + cliff: BigNumber; + duration: BigNumber; + interval: BigNumber; + setup: boolean; + isActive: boolean; + hardStart: BigNumber; + isPublic: boolean; + } + >; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setNotionalAddresses( + scheduleIdxArr: BigNumberish[], + addresses: string[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPermissionedDepositor( + account: string, + canDeposit: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setScheduleStatus( + scheduleId: BigNumberish, + activeBool: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setUserSchedules( + account: string, + userSchedulesIdxs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + slash( + accounts: string[], + amounts: BigNumberish[], + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise<[string]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasury(overrides?: CallOverrides): Promise<[string]>; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + unvested( + account: string, + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { value: BigNumber }>; + + userStakingSchedules(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + userStakings( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + initial: BigNumber; + withdrawn: BigNumber; + slashed: BigNumber; + started: BigNumber; + scheduleIx: BigNumber; + } + >; + + vested( + account: string, + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { value: BigNumber }>; + + 'withdraw(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'withdraw(uint256,uint256)'( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawalRequestsByIndex( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycleIndex: BigNumber; amount: BigNumber }>; + + withheldLiquidity(overrides?: CallOverrides): Promise<[BigNumber]>; + }; + + _eventSend(overrides?: CallOverrides): Promise; + + addSchedule( + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableForWithdrawal(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + delegateFunction(overrides?: CallOverrides): Promise; + + 'deposit(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'deposit(uint256,uint256)'( + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWithSchedule( + account: string, + amount: BigNumberish, + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + destinations( + overrides?: CallOverrides, + ): Promise<[string, string] & { fxStateSender: string; destinationOnL2: string }>; + + getSchedules(overrides?: CallOverrides): Promise; + + getStakes(account: string, overrides?: CallOverrides): Promise; + + initialize( + _tokeToken: string, + _manager: string, + _treasury: string, + _scheduleZeroNotional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + nextScheduleIndex(overrides?: CallOverrides): Promise; + + notionalAddresses(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + permissionedDepositors(arg0: string, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycleIndex: BigNumber; amount: BigNumber }>; + + schedules( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, boolean, boolean, BigNumber, boolean] & { + cliff: BigNumber; + duration: BigNumber; + interval: BigNumber; + setup: boolean; + isActive: boolean; + hardStart: BigNumber; + isPublic: boolean; + } + >; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setNotionalAddresses( + scheduleIdxArr: BigNumberish[], + addresses: string[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPermissionedDepositor( + account: string, + canDeposit: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setScheduleStatus( + scheduleId: BigNumberish, + activeBool: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setUserSchedules( + account: string, + userSchedulesIdxs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + slash( + accounts: string[], + amounts: BigNumberish[], + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + unvested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + userStakingSchedules(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + userStakings( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + initial: BigNumber; + withdrawn: BigNumber; + slashed: BigNumber; + started: BigNumber; + scheduleIx: BigNumber; + } + >; + + vested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + 'withdraw(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'withdraw(uint256,uint256)'( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawalRequestsByIndex( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycleIndex: BigNumber; amount: BigNumber }>; + + withheldLiquidity(overrides?: CallOverrides): Promise; + + callStatic: { + _eventSend(overrides?: CallOverrides): Promise; + + addSchedule(schedule: IStaking.StakingScheduleStruct, notional: string, overrides?: CallOverrides): Promise; + + availableForWithdrawal(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + delegateFunction(overrides?: CallOverrides): Promise; + + 'deposit(uint256)'(amount: BigNumberish, overrides?: CallOverrides): Promise; + + 'deposit(uint256,uint256)'( + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + depositWithSchedule( + account: string, + amount: BigNumberish, + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: CallOverrides, + ): Promise; + + destinations( + overrides?: CallOverrides, + ): Promise<[string, string] & { fxStateSender: string; destinationOnL2: string }>; + + getSchedules(overrides?: CallOverrides): Promise; + + getStakes(account: string, overrides?: CallOverrides): Promise; + + initialize( + _tokeToken: string, + _manager: string, + _treasury: string, + _scheduleZeroNotional: string, + overrides?: CallOverrides, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + nextScheduleIndex(overrides?: CallOverrides): Promise; + + notionalAddresses(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + permissionedDepositors(arg0: string, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + requestWithdrawal(amount: BigNumberish, scheduleIdx: BigNumberish, overrides?: CallOverrides): Promise; + + requestedWithdrawals( + arg0: string, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycleIndex: BigNumber; amount: BigNumber }>; + + schedules( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, boolean, boolean, BigNumber, boolean] & { + cliff: BigNumber; + duration: BigNumber; + interval: BigNumber; + setup: boolean; + isActive: boolean; + hardStart: BigNumber; + isPublic: boolean; + } + >; + + setDestinations(_fxStateSender: string, _destinationOnL2: string, overrides?: CallOverrides): Promise; + + setEventSend(_eventSendSet: boolean, overrides?: CallOverrides): Promise; + + setNotionalAddresses(scheduleIdxArr: BigNumberish[], addresses: string[], overrides?: CallOverrides): Promise; + + setPermissionedDepositor(account: string, canDeposit: boolean, overrides?: CallOverrides): Promise; + + setScheduleStatus(scheduleId: BigNumberish, activeBool: boolean, overrides?: CallOverrides): Promise; + + setUserSchedules(account: string, userSchedulesIdxs: BigNumberish[], overrides?: CallOverrides): Promise; + + slash( + accounts: string[], + amounts: BigNumberish[], + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership(newOwner: string, overrides?: CallOverrides): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unpause(overrides?: CallOverrides): Promise; + + unvested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + userStakingSchedules(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + userStakings( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber, BigNumber] & { + initial: BigNumber; + withdrawn: BigNumber; + slashed: BigNumber; + started: BigNumber; + scheduleIx: BigNumber; + } + >; + + vested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + 'withdraw(uint256)'(amount: BigNumberish, overrides?: CallOverrides): Promise; + + 'withdraw(uint256,uint256)'( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + withdrawalRequestsByIndex( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { minCycleIndex: BigNumber; amount: BigNumber }>; + + withheldLiquidity(overrides?: CallOverrides): Promise; + }; + + filters: { + 'Deposited(address,uint256,uint256)'(account?: null, amount?: null, scheduleIx?: null): DepositedEventFilter; + Deposited(account?: null, amount?: null, scheduleIx?: null): DepositedEventFilter; + + 'DestinationsSet(address,address)'(fxStateSender?: null, destinationOnL2?: null): DestinationsSetEventFilter; + DestinationsSet(fxStateSender?: null, destinationOnL2?: null): DestinationsSetEventFilter; + + 'EventSendSet(bool)'(eventSendSet?: null): EventSendSetEventFilter; + EventSendSet(eventSendSet?: null): EventSendSetEventFilter; + + 'NotionalAddressesSet(uint256[],address[])'(scheduleIdxs?: null, addresses?: null): NotionalAddressesSetEventFilter; + NotionalAddressesSet(scheduleIdxs?: null, addresses?: null): NotionalAddressesSetEventFilter; + + 'OwnershipTransferred(address,address)'( + previousOwner?: string | null, + newOwner?: string | null, + ): OwnershipTransferredEventFilter; + OwnershipTransferred(previousOwner?: string | null, newOwner?: string | null): OwnershipTransferredEventFilter; + + 'Paused(address)'(account?: null): PausedEventFilter; + Paused(account?: null): PausedEventFilter; + + 'PermissionedDepositorSet(address,bool)'(depositor?: null, allowed?: null): PermissionedDepositorSetEventFilter; + PermissionedDepositorSet(depositor?: null, allowed?: null): PermissionedDepositorSetEventFilter; + + 'QueuedTransferRejected(address,uint256,uint256,uint256,address)'( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): QueuedTransferRejectedEventFilter; + QueuedTransferRejected( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): QueuedTransferRejectedEventFilter; + + 'QueuedTransferRemoved(address,uint256,uint256,uint256,address)'( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): QueuedTransferRemovedEventFilter; + QueuedTransferRemoved( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): QueuedTransferRemovedEventFilter; + + 'ScheduleAdded(uint256,uint256,uint256,uint256,bool,bool,uint256,address)'( + scheduleIndex?: null, + cliff?: null, + duration?: null, + interval?: null, + setup?: null, + isActive?: null, + hardStart?: null, + notional?: null, + ): ScheduleAddedEventFilter; + ScheduleAdded( + scheduleIndex?: null, + cliff?: null, + duration?: null, + interval?: null, + setup?: null, + isActive?: null, + hardStart?: null, + notional?: null, + ): ScheduleAddedEventFilter; + + 'ScheduleRemoved(uint256)'(scheduleIndex?: null): ScheduleRemovedEventFilter; + ScheduleRemoved(scheduleIndex?: null): ScheduleRemovedEventFilter; + + 'ScheduleStatusSet(uint256,bool)'(scheduleId?: null, isActive?: null): ScheduleStatusSetEventFilter; + ScheduleStatusSet(scheduleId?: null, isActive?: null): ScheduleStatusSetEventFilter; + + 'Slashed(address,uint256,uint256)'(account?: null, amount?: null, scheduleIx?: null): SlashedEventFilter; + Slashed(account?: null, amount?: null, scheduleIx?: null): SlashedEventFilter; + + 'StakeTransferred(address,uint256,uint256,uint256,address)'( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): StakeTransferredEventFilter; + StakeTransferred( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): StakeTransferredEventFilter; + + 'TransferApproverSet(address)'(approverAddress?: null): TransferApproverSetEventFilter; + TransferApproverSet(approverAddress?: null): TransferApproverSetEventFilter; + + 'TransferQueued(address,uint256,uint256,uint256,address)'( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): TransferQueuedEventFilter; + TransferQueued( + from?: null, + scheduleFrom?: null, + scheduleTo?: null, + amount?: null, + to?: null, + ): TransferQueuedEventFilter; + + 'Unpaused(address)'(account?: null): UnpausedEventFilter; + Unpaused(account?: null): UnpausedEventFilter; + + 'UserSchedulesSet(address,uint256[])'(account?: null, userSchedulesIdxs?: null): UserSchedulesSetEventFilter; + UserSchedulesSet(account?: null, userSchedulesIdxs?: null): UserSchedulesSetEventFilter; + + 'WithdrawCompleted(address,uint256,uint256)'( + account?: null, + scheduleIdx?: null, + amount?: null, + ): WithdrawCompletedEventFilter; + WithdrawCompleted(account?: null, scheduleIdx?: null, amount?: null): WithdrawCompletedEventFilter; + + 'WithdrawalRequested(address,uint256,uint256)'( + account?: null, + scheduleIdx?: null, + amount?: null, + ): WithdrawalRequestedEventFilter; + WithdrawalRequested(account?: null, scheduleIdx?: null, amount?: null): WithdrawalRequestedEventFilter; + + 'ZeroSweep(address,uint256,uint256)'(user?: null, amount?: null, scheduleFrom?: null): ZeroSweepEventFilter; + ZeroSweep(user?: null, amount?: null, scheduleFrom?: null): ZeroSweepEventFilter; + }; + + estimateGas: { + _eventSend(overrides?: CallOverrides): Promise; + + addSchedule( + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableForWithdrawal(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + delegateFunction(overrides?: CallOverrides): Promise; + + 'deposit(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'deposit(uint256,uint256)'( + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWithSchedule( + account: string, + amount: BigNumberish, + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + destinations(overrides?: CallOverrides): Promise; + + getSchedules(overrides?: CallOverrides): Promise; + + getStakes(account: string, overrides?: CallOverrides): Promise; + + initialize( + _tokeToken: string, + _manager: string, + _treasury: string, + _scheduleZeroNotional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + nextScheduleIndex(overrides?: CallOverrides): Promise; + + notionalAddresses(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + permissionedDepositors(arg0: string, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals(arg0: string, overrides?: CallOverrides): Promise; + + schedules(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setNotionalAddresses( + scheduleIdxArr: BigNumberish[], + addresses: string[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPermissionedDepositor( + account: string, + canDeposit: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setScheduleStatus( + scheduleId: BigNumberish, + activeBool: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setUserSchedules( + account: string, + userSchedulesIdxs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + slash( + accounts: string[], + amounts: BigNumberish[], + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + unvested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + userStakingSchedules(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + userStakings(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + vested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + 'withdraw(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'withdraw(uint256,uint256)'( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawalRequestsByIndex(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + _eventSend(overrides?: CallOverrides): Promise; + + addSchedule( + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableForWithdrawal( + account: string, + scheduleIndex: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + delegateFunction(overrides?: CallOverrides): Promise; + + 'deposit(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'deposit(uint256,uint256)'( + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositFor( + account: string, + amount: BigNumberish, + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWithSchedule( + account: string, + amount: BigNumberish, + schedule: IStaking.StakingScheduleStruct, + notional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + destinations(overrides?: CallOverrides): Promise; + + getSchedules(overrides?: CallOverrides): Promise; + + getStakes(account: string, overrides?: CallOverrides): Promise; + + initialize( + _tokeToken: string, + _manager: string, + _treasury: string, + _scheduleZeroNotional: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + manager(overrides?: CallOverrides): Promise; + + nextScheduleIndex(overrides?: CallOverrides): Promise; + + notionalAddresses(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + permissionedDepositors(arg0: string, overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: Overrides & { from?: string | Promise }): Promise; + + requestWithdrawal( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestedWithdrawals(arg0: string, overrides?: CallOverrides): Promise; + + schedules(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + setDestinations( + _fxStateSender: string, + _destinationOnL2: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setEventSend( + _eventSendSet: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setNotionalAddresses( + scheduleIdxArr: BigNumberish[], + addresses: string[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPermissionedDepositor( + account: string, + canDeposit: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setScheduleStatus( + scheduleId: BigNumberish, + activeBool: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setUserSchedules( + account: string, + userSchedulesIdxs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + slash( + accounts: string[], + amounts: BigNumberish[], + scheduleIndex: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + tokeToken(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + treasury(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + unvested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + userStakingSchedules(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + userStakings(arg0: string, arg1: BigNumberish, overrides?: CallOverrides): Promise; + + vested(account: string, scheduleIndex: BigNumberish, overrides?: CallOverrides): Promise; + + 'withdraw(uint256)'( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'withdraw(uint256,uint256)'( + amount: BigNumberish, + scheduleIdx: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawalRequestsByIndex( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + withheldLiquidity(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/tokemak/contracts/ethers/common.ts b/src/apps/tokemak/contracts/ethers/common.ts new file mode 100644 index 000000000..6cfb10425 --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/common.ts @@ -0,0 +1,30 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from '@ethersproject/providers'; +import type { Event, EventFilter } from 'ethers'; + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + (eventFilter: TypedEventFilter, listener: TypedListener): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; diff --git a/src/apps/tokemak/contracts/ethers/factories/TokemakReactor__factory.ts b/src/apps/tokemak/contracts/ethers/factories/TokemakReactor__factory.ts new file mode 100644 index 000000000..213225b0f --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/factories/TokemakReactor__factory.ts @@ -0,0 +1,691 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TokemakReactor, TokemakReactorInterface } from '../TokemakReactor'; + +const _abi = [ + { + 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: [ + { + indexed: false, + internalType: 'address', + name: 'destinationOnL1', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'destinationOnL2', + type: 'address', + }, + ], + name: 'DestinationsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bool', + name: 'eventSendSet', + type: 'bool', + }, + ], + name: 'EventSendSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'Paused', + 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', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'Unpaused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'requestor', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'WithdrawalRequested', + type: 'event', + }, + { + inputs: [], + name: '_eventSend', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + 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: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approveManager', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'depositFor', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [], + name: 'destinations', + outputs: [ + { + internalType: 'contract IFxStateSender', + name: 'fxStateSender', + type: 'address', + }, + { + internalType: 'address', + name: 'destinationOnL2', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IWETH', + name: '_weth', + type: 'address', + }, + { + internalType: 'contract IManager', + name: '_manager', + type: 'address', + }, + { + internalType: 'string', + name: '_name', + type: 'string', + }, + { + internalType: 'string', + name: '_symbol', + type: 'string', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'manager', + outputs: [ + { + internalType: 'contract IManager', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'requestWithdrawal', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'requestedWithdrawals', + outputs: [ + { + internalType: 'uint256', + name: 'minCycle', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_fxStateSender', + type: 'address', + }, + { + internalType: 'address', + name: '_destinationOnL2', + type: 'address', + }, + ], + name: 'setDestinations', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: '_eventSendSet', + type: 'bool', + }, + ], + name: 'setEventSend', + outputs: [], + stateMutability: 'nonpayable', + 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: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'underlyer', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'weth', + outputs: [ + { + internalType: 'contract IWETH', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'requestedAmount', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'asEth', + type: 'bool', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'withheldLiquidity', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + stateMutability: 'payable', + type: 'receive', + }, +]; + +export class TokemakReactor__factory { + static readonly abi = _abi; + static createInterface(): TokemakReactorInterface { + return new utils.Interface(_abi) as TokemakReactorInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TokemakReactor { + return new Contract(address, _abi, signerOrProvider) as TokemakReactor; + } +} diff --git a/src/apps/tokemak/contracts/ethers/factories/TokemakRewards__factory.ts b/src/apps/tokemak/contracts/ethers/factories/TokemakRewards__factory.ts new file mode 100644 index 000000000..2b452aee7 --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/factories/TokemakRewards__factory.ts @@ -0,0 +1,275 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TokemakRewards, TokemakRewardsInterface } from '../TokemakRewards'; + +const _abi = [ + { + inputs: [ + { + internalType: 'contract IERC20', + name: 'token', + type: 'address', + }, + { + internalType: 'address', + name: 'signerAddress', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'cycle', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Claimed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'newSigner', + type: 'address', + }, + ], + name: 'SignerSet', + type: 'event', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cycle', + type: 'uint256', + }, + { + internalType: 'address', + name: 'wallet', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + internalType: 'struct Rewards.Recipient', + name: 'recipient', + type: 'tuple', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'claim', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'claimedAmounts', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'cycle', + type: 'uint256', + }, + { + internalType: 'address', + name: 'wallet', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + internalType: 'struct Rewards.Recipient', + name: 'recipient', + type: 'tuple', + }, + ], + name: 'getClaimableAmount', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'rewardsSigner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newSigner', + type: 'address', + }, + ], + name: 'setSigner', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'tokeToken', + outputs: [ + { + internalType: 'contract IERC20', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class TokemakRewards__factory { + static readonly abi = _abi; + static createInterface(): TokemakRewardsInterface { + return new utils.Interface(_abi) as TokemakRewardsInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TokemakRewards { + return new Contract(address, _abi, signerOrProvider) as TokemakRewards; + } +} diff --git a/src/apps/tokemak/contracts/ethers/factories/TokemakTokeStaking__factory.ts b/src/apps/tokemak/contracts/ethers/factories/TokemakTokeStaking__factory.ts new file mode 100644 index 000000000..237f5421e --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/factories/TokemakTokeStaking__factory.ts @@ -0,0 +1,1480 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { TokemakTokeStaking, TokemakTokeStakingInterface } from '../TokemakTokeStaking'; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleIx', + type: 'uint256', + }, + ], + name: 'Deposited', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'fxStateSender', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'destinationOnL2', + type: 'address', + }, + ], + name: 'DestinationsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bool', + name: 'eventSendSet', + type: 'bool', + }, + ], + name: 'EventSendSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256[]', + name: 'scheduleIdxs', + type: 'uint256[]', + }, + { + indexed: false, + internalType: 'address[]', + name: 'addresses', + type: 'address[]', + }, + ], + name: 'NotionalAddressesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'previousOwner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'OwnershipTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'Paused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'allowed', + type: 'bool', + }, + ], + name: 'PermissionedDepositorSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleFrom', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleTo', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'to', + type: 'address', + }, + ], + name: 'QueuedTransferRejected', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleFrom', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleTo', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'to', + type: 'address', + }, + ], + name: 'QueuedTransferRemoved', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'cliff', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'duration', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'interval', + type: 'uint256', + }, + { + indexed: false, + internalType: 'bool', + name: 'setup', + type: 'bool', + }, + { + indexed: false, + internalType: 'bool', + name: 'isActive', + type: 'bool', + }, + { + indexed: false, + internalType: 'uint256', + name: 'hardStart', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'notional', + type: 'address', + }, + ], + name: 'ScheduleAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'ScheduleRemoved', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'scheduleId', + type: 'uint256', + }, + { + indexed: false, + internalType: 'bool', + name: 'isActive', + type: 'bool', + }, + ], + name: 'ScheduleStatusSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleIx', + type: 'uint256', + }, + ], + name: 'Slashed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleFrom', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleTo', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'to', + type: 'address', + }, + ], + name: 'StakeTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'approverAddress', + type: 'address', + }, + ], + name: 'TransferApproverSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleFrom', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleTo', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'to', + type: 'address', + }, + ], + name: 'TransferQueued', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'Unpaused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256[]', + name: 'userSchedulesIdxs', + type: 'uint256[]', + }, + ], + name: 'UserSchedulesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleIdx', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'WithdrawCompleted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'account', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleIdx', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'WithdrawalRequested', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'scheduleFrom', + type: 'uint256', + }, + ], + name: 'ZeroSweep', + type: 'event', + }, + { + inputs: [], + name: '_eventSend', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'cliff', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'duration', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'interval', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'setup', + type: 'bool', + }, + { + internalType: 'bool', + name: 'isActive', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'hardStart', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'isPublic', + type: 'bool', + }, + ], + internalType: 'struct IStaking.StakingSchedule', + name: 'schedule', + type: 'tuple', + }, + { + internalType: 'address', + name: 'notional', + type: 'address', + }, + ], + name: 'addSchedule', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'availableForWithdrawal', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'delegateFunction', + outputs: [ + { + internalType: 'contract IDelegateFunction', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'depositFor', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + components: [ + { + internalType: 'uint256', + name: 'cliff', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'duration', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'interval', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'setup', + type: 'bool', + }, + { + internalType: 'bool', + name: 'isActive', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'hardStart', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'isPublic', + type: 'bool', + }, + ], + internalType: 'struct IStaking.StakingSchedule', + name: 'schedule', + type: 'tuple', + }, + { + internalType: 'address', + name: 'notional', + type: 'address', + }, + ], + name: 'depositWithSchedule', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'destinations', + outputs: [ + { + internalType: 'contract IFxStateSender', + name: 'fxStateSender', + type: 'address', + }, + { + internalType: 'address', + name: 'destinationOnL2', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getSchedules', + outputs: [ + { + components: [ + { + components: [ + { + internalType: 'uint256', + name: 'cliff', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'duration', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'interval', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'setup', + type: 'bool', + }, + { + internalType: 'bool', + name: 'isActive', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'hardStart', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'isPublic', + type: 'bool', + }, + ], + internalType: 'struct IStaking.StakingSchedule', + name: 'schedule', + type: 'tuple', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + internalType: 'struct IStaking.StakingScheduleInfo[]', + name: 'retSchedules', + type: 'tuple[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'getStakes', + outputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'initial', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawn', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'slashed', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'started', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'scheduleIx', + type: 'uint256', + }, + ], + internalType: 'struct IStaking.StakingDetails[]', + name: 'stakes', + type: 'tuple[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '_tokeToken', + type: 'address', + }, + { + internalType: 'contract IManager', + name: '_manager', + type: 'address', + }, + { + internalType: 'address', + name: '_treasury', + type: 'address', + }, + { + internalType: 'address', + name: '_scheduleZeroNotional', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'manager', + outputs: [ + { + internalType: 'contract IManager', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'nextScheduleIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'notionalAddresses', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'owner', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'permissionedDepositors', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'renounceOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'scheduleIdx', + type: 'uint256', + }, + ], + name: 'requestWithdrawal', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + name: 'requestedWithdrawals', + outputs: [ + { + internalType: 'uint256', + name: 'minCycleIndex', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'schedules', + outputs: [ + { + internalType: 'uint256', + name: 'cliff', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'duration', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'interval', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'setup', + type: 'bool', + }, + { + internalType: 'bool', + name: 'isActive', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'hardStart', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'isPublic', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '_fxStateSender', + type: 'address', + }, + { + internalType: 'address', + name: '_destinationOnL2', + type: 'address', + }, + ], + name: 'setDestinations', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: '_eventSendSet', + type: 'bool', + }, + ], + name: 'setEventSend', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'scheduleIdxArr', + type: 'uint256[]', + }, + { + internalType: 'address[]', + name: 'addresses', + type: 'address[]', + }, + ], + name: 'setNotionalAddresses', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'bool', + name: 'canDeposit', + type: 'bool', + }, + ], + name: 'setPermissionedDepositor', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'scheduleId', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'activeBool', + type: 'bool', + }, + ], + name: 'setScheduleStatus', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256[]', + name: 'userSchedulesIdxs', + type: 'uint256[]', + }, + ], + name: 'setUserSchedules', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address[]', + name: 'accounts', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: 'amounts', + type: 'uint256[]', + }, + { + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'slash', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'tokeToken', + outputs: [ + { + internalType: 'contract IERC20Upgradeable', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + ], + name: 'transferOwnership', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'treasury', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'unvested', + outputs: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'userStakingSchedules', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'userStakings', + outputs: [ + { + internalType: 'uint256', + name: 'initial', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'withdrawn', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'slashed', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'started', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'scheduleIx', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'scheduleIndex', + type: 'uint256', + }, + ], + name: 'vested', + outputs: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'scheduleIdx', + type: 'uint256', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'withdrawalRequestsByIndex', + outputs: [ + { + internalType: 'uint256', + name: 'minCycleIndex', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'withheldLiquidity', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class TokemakTokeStaking__factory { + static readonly abi = _abi; + static createInterface(): TokemakTokeStakingInterface { + return new utils.Interface(_abi) as TokemakTokeStakingInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TokemakTokeStaking { + return new Contract(address, _abi, signerOrProvider) as TokemakTokeStaking; + } +} diff --git a/src/apps/tokemak/contracts/ethers/factories/index.ts b/src/apps/tokemak/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..2dd906537 --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/factories/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { TokemakReactor__factory } from './TokemakReactor__factory'; +export { TokemakRewards__factory } from './TokemakRewards__factory'; +export { TokemakTokeStaking__factory } from './TokemakTokeStaking__factory'; diff --git a/src/apps/tokemak/contracts/ethers/index.ts b/src/apps/tokemak/contracts/ethers/index.ts new file mode 100644 index 000000000..473ad66c7 --- /dev/null +++ b/src/apps/tokemak/contracts/ethers/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { TokemakReactor } from './TokemakReactor'; +export type { TokemakRewards } from './TokemakRewards'; +export type { TokemakTokeStaking } from './TokemakTokeStaking'; +export * as factories from './factories'; +export { TokemakReactor__factory } from './factories/TokemakReactor__factory'; +export { TokemakRewards__factory } from './factories/TokemakRewards__factory'; +export { TokemakTokeStaking__factory } from './factories/TokemakTokeStaking__factory'; diff --git a/src/apps/tokemak/contracts/index.ts b/src/apps/tokemak/contracts/index.ts new file mode 100644 index 000000000..615c1f553 --- /dev/null +++ b/src/apps/tokemak/contracts/index.ts @@ -0,0 +1,33 @@ +import { Injectable, Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { ContractFactory } from '~contract/contracts'; +import { Network } from '~types/network.interface'; + +import { TokemakReactor__factory } from './ethers'; +import { TokemakRewards__factory } from './ethers'; +import { TokemakTokeStaking__factory } from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class TokemakContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + tokemakReactor({ address, network }: ContractOpts) { + return TokemakReactor__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + tokemakRewards({ address, network }: ContractOpts) { + return TokemakRewards__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + tokemakTokeStaking({ address, network }: ContractOpts) { + return TokemakTokeStaking__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { TokemakReactor } from './ethers'; +export type { TokemakRewards } from './ethers'; +export type { TokemakTokeStaking } from './ethers'; diff --git a/src/apps/tokemak/ethereum/tokemak.balance-fetcher.ts b/src/apps/tokemak/ethereum/tokemak.balance-fetcher.ts new file mode 100644 index 000000000..d1e4b1697 --- /dev/null +++ b/src/apps/tokemak/ethereum/tokemak.balance-fetcher.ts @@ -0,0 +1,143 @@ +import { Inject } from '@nestjs/common'; +import Axios from 'axios'; + +import { drillBalance } from '~app-toolkit'; +import { Register } from '~app-toolkit/decorators'; +import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present'; +import { buildDollarDisplayItem } from '~app-toolkit/helpers/presentation/display-item.present'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { BalanceFetcher } from '~balance/balance-fetcher.interface'; +import { Cache } from '~cache/cache.decorator'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { ContractType } from '~position/contract.interface'; +import { ContractPositionBalance } from '~position/position-balance.interface'; +import { claimable } from '~position/position.utils'; +import { Network } from '~types/network.interface'; + +import { TokemakContractFactory } from '../contracts'; +import { TokemakTokeStaking } from '../contracts/ethers/TokemakTokeStaking'; +import { TOKEMAK_DEFINITION } from '../tokemak.definition'; + +type ClaimableDataResponse = { + payload: { + wallet: string; + cycle: number; + amount: string; + chainId: number; + }; +}; + +const network = Network.ETHEREUM_MAINNET; +const rewardContractAddress = '0x79dd22579112d8a5f7347c5ed7e609e60da713c5'; + +@Register.BalanceFetcher(TOKEMAK_DEFINITION.id, Network.ETHEREUM_MAINNET) +export class EthereumTokemakBalanceFetcher implements BalanceFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TokemakContractFactory) private readonly tokemakContractFactory: TokemakContractFactory, + ) {} + + private async getReactorTokenBalances(address: string) { + return this.appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ + address, + appId: TOKEMAK_DEFINITION.id, + groupId: TOKEMAK_DEFINITION.groups.reactor.id, + network, + }); + } + + private async getFarmBalances(address: string) { + // @TODO Waiting on TOKE team to reply with how to get earned rewards + return this.appToolkit.helpers.singleStakingContractPositionBalanceHelper.getBalances({ + address, + appId: TOKEMAK_DEFINITION.id, + groupId: TOKEMAK_DEFINITION.groups.farm.id, + network, + resolveContract: ({ address, network }) => this.tokemakContractFactory.tokemakTokeStaking({ address, network }), + resolveStakedTokenBalance: ({ contract, address, multicall }) => multicall.wrap(contract).balanceOf(address), + resolveRewardTokenBalances: () => 0, + }); + } + + @Cache({ + instance: 'business', + key: (address: string) => + `studio:${TOKEMAK_DEFINITION.id}:${TOKEMAK_DEFINITION.groups.farm}:${network}:${address}:claimable`, + ttl: 15 * 60, // 15 min + }) + async getClaimableBalanceData(address: string) { + const url = `https://ipfs.tokemaklabs.xyz/ipfs/QmdqcvmvpJHkos6EecUkDEsjynFrXuQUMGNdbMk1XaadQF/${address}.json`; + const data: ClaimableDataResponse['payload'] | null = await Axios.get(url) + .then(t => t.data.payload) + .catch(() => null); + return data; + } + + async getClaimableBalances(address: string) { + const multicall = this.appToolkit.getMulticall(network); + const payload = await this.getClaimableBalanceData(address); + if (!payload) return []; + + const prices = await this.appToolkit.getBaseTokenPrices(network); + const tokeToken = prices.find(p => p.symbol === 'TOKE')!; + const { chainId, cycle, wallet, amount } = payload; + + const rewardContract = this.tokemakContractFactory.tokemakRewards({ network, address: rewardContractAddress }); + + const claimableBalanceRaw = await multicall + .wrap(rewardContract) + .getClaimableAmount({ chainId, cycle, wallet, amount }) + .catch(() => 0); + + const claimableTokenBalance = drillBalance(claimable(tokeToken), claimableBalanceRaw.toString()); + const tokens = [claimableTokenBalance]; + const balanceUSD = claimableTokenBalance.balanceUSD; + + // Display Props + const label = `Claimable ${tokeToken.symbol}`; + const secondaryLabel = buildDollarDisplayItem(tokeToken.price); + const images = [getTokenImg(tokeToken.address, network)]; + + const positionBalance: ContractPositionBalance = { + type: ContractType.POSITION, + address: rewardContractAddress, + appId: TOKEMAK_DEFINITION.id, + groupId: TOKEMAK_DEFINITION.groups.farm.id, + network, + tokens, + balanceUSD, + + dataProps: {}, + displayProps: { + label, + secondaryLabel, + images, + }, + }; + + return [positionBalance]; + } + + async getBalances(address: string) { + const [reactorTokenBalances, farmBalances, claimableBalances] = await Promise.all([ + this.getReactorTokenBalances(address), + this.getFarmBalances(address), + this.getClaimableBalances(address), + ]); + + return presentBalanceFetcherResponse([ + { + label: 'Reactors', + assets: reactorTokenBalances, + }, + { + label: 'Staking', + assets: farmBalances, + }, + { + label: 'Claimables', + assets: claimableBalances, + }, + ]); + } +} diff --git a/src/apps/tokemak/ethereum/tokemak.farm.contract-position-fetcher.ts b/src/apps/tokemak/ethereum/tokemak.farm.contract-position-fetcher.ts new file mode 100644 index 000000000..742ccffde --- /dev/null +++ b/src/apps/tokemak/ethereum/tokemak.farm.contract-position-fetcher.ts @@ -0,0 +1,46 @@ +import { Inject } from '@nestjs/common'; + +import { Register } from '~app-toolkit/decorators'; +import { SynthetixContractFactory, SynthetixRewards } from '~apps/synthetix'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TOKEMAK_DEFINITION } from '../tokemak.definition'; + +const FARMS = [ + // TOKE + { + address: '0x96f98ed74639689c3a11daf38ef86e59f43417d3', + stakedTokenAddress: '0x2e9d63788249371f1dfc918a52f8d799f4a38c94', + rewardTokenAddresses: ['0x2e9d63788249371f1dfc918a52f8d799f4a38c94'], + }, +]; + +const appId = TOKEMAK_DEFINITION.id; +const groupId = TOKEMAK_DEFINITION.groups.farm.id; +const network = Network.ETHEREUM_MAINNET; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumTokemakFarmContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) + private readonly appToolkit: IAppToolkit, + @Inject(SynthetixContractFactory) + private readonly synthetixContractFactory: SynthetixContractFactory, + ) {} + + async getPositions() { + return this.appToolkit.helpers.singleStakingFarmContractPositionHelper.getContractPositions({ + network, + appId, + groupId, + resolveFarmDefinitions: async () => FARMS, + resolveFarmContract: ({ network, address }) => + this.synthetixContractFactory.synthetixRewards({ network, address }), + resolveIsActive: () => true, + resolveRois: () => ({ dailyROI: 0, weeklyROI: 0, yearlyROI: 0 }), + }); + } +} diff --git a/src/apps/tokemak/ethereum/tokemak.reactor.token-fetcher.ts b/src/apps/tokemak/ethereum/tokemak.reactor.token-fetcher.ts new file mode 100644 index 000000000..7011bb719 --- /dev/null +++ b/src/apps/tokemak/ethereum/tokemak.reactor.token-fetcher.ts @@ -0,0 +1,114 @@ +import { Inject } from '@nestjs/common'; +import { compact } from 'lodash'; + +import { Register } from '~app-toolkit/decorators'; +import { buildDollarDisplayItem } from '~app-toolkit/helpers/presentation/display-item.present'; +import { getImagesFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { APP_TOOLKIT, IAppToolkit } from '~lib'; +import { ContractType } from '~position/contract.interface'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { TokemakContractFactory } from '../contracts'; +import { TOKEMAK_DEFINITION } from '../tokemak.definition'; + +const REACTORS = [ + '0xd3d13a578a53685b4ac36a1bab31912d2b2a2f36', // tWETH + '0x04bda0cf6ad025948af830e75228ed420b0e860d', // tUSDC + '0xa760e26aa76747020171fcf8bda108dfde8eb930', // tTOKE (Legacy) + '0x1b429e75369ea5cd84421c1cc182cee5f3192fd3', // tUNI-TOKE/ETH + '0x8858a739ea1dd3d80fe577ef4e0d03e88561faa3', // tSLP-TOKE/ETH + '0xe7a7d17e2177f66d035d9d50a7f48d8d8e31532d', // tOHM + '0xd3b5d9a561c293fb42b446fe7e237daa9bf9aa84', // tALCX + '0x15a629f0665a3eb97d7ae9a7ce7abf73aeb79415', // tTCR + '0xadf15ec41689fc5b6dca0db7c53c9bfe7981e655', // tFXS + '0xf49764c9c5d644ece6ae2d18ffd9f1e902629777', // tSUSHI + '0x808d3e6b23516967ceae4f17a5f9038383ed5311', // tFOX + '0xdc0b02849bb8e0f126a216a2840275da829709b0', // tAPW + '0x41f6a95bacf9bc43704c4a4902ba5473a8b00263', // tgOHM + '0x0ce34f4c26ba69158bc2eb8bf513221e44fdfb75', // tDAI + '0xeff721eae19885e17f5b80187d6527aad3ffc8de', // tSNX + '0x2fc6e9c1b2c07e18632efe51879415a580ad22e1', // tGAMMA + '0x03dcccd17cc36ee61f9004bcfd7a85f58b2d360d', // tFEI +]; + +const appId = TOKEMAK_DEFINITION.id; +const groupId = TOKEMAK_DEFINITION.groups.reactor.id; +const network = Network.ETHEREUM_MAINNET; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class EthereumTokemakReactorTokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(TokemakContractFactory) private readonly tokemakContractFactory: TokemakContractFactory, + ) {} + + async getPositions() { + const multicall = this.appToolkit.getMulticall(network); + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const appTokens = await this.appToolkit.getAppTokenPositions( + { appId: 'sushiswap', groupIds: ['pool'], network }, + { appId: 'uniswap-v2', groupIds: ['pool'], network }, + { appId: 'olympus', groupIds: ['g-ohm'], network }, + ); + + const reactorTokens = await Promise.all( + REACTORS.map(async reactorAddress => { + const reactorContract = this.tokemakContractFactory.tokemakReactor({ address: reactorAddress, network }); + const underlyingTokenAddressRaw = await multicall.wrap(reactorContract).underlyer(); + const underlyingTokenAddress = underlyingTokenAddressRaw.toLowerCase(); + + const appTokensMatch = appTokens.find(pool => pool.address === underlyingTokenAddress); + const baseTokensMatch = baseTokens.find(t => t.address === underlyingTokenAddress); + const underlyingToken = appTokensMatch ?? baseTokensMatch; + if (!underlyingToken) return null; + + const [symbol, decimals, supplyRaw] = await Promise.all([ + multicall.wrap(reactorContract).symbol(), + multicall.wrap(reactorContract).decimals(), + multicall.wrap(reactorContract).totalSupply(), + ]); + + const pricePerShare = 1; // minted 1:1 + const price = pricePerShare * underlyingToken.price; + const supply = Number(supplyRaw) / 10 ** decimals; + const liquidity = supply * price; + const tokens = [underlyingToken]; + + // Display Props + const label = symbol; + const secondaryLabel = buildDollarDisplayItem(price); + const images = getImagesFromToken(underlyingToken); + + const reactorToken: AppTokenPosition = { + type: ContractType.APP_TOKEN, + address: reactorAddress, + appId, + groupId, + network, + symbol, + decimals, + supply, + price, + pricePerShare, + tokens, + + dataProps: { + liquidity, + }, + + displayProps: { + label, + secondaryLabel, + images, + }, + }; + + return reactorToken; + }), + ); + + return compact(reactorTokens); + } +} diff --git a/src/apps/tokemak/tokemak.definition.ts b/src/apps/tokemak/tokemak.definition.ts new file mode 100644 index 000000000..c43716712 --- /dev/null +++ b/src/apps/tokemak/tokemak.definition.ts @@ -0,0 +1,24 @@ +import { Register } from '~app-toolkit/decorators'; +import { AppDefinition } from '~app/app.definition'; +import { GroupType, ProtocolAction, ProtocolTag } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const TOKEMAK_DEFINITION = { + id: 'tokemak', + name: 'Tokemak', + description: `Tokemak creates sustainable DeFi liquidity and capital efficient markets through a convenient decentralized market making protocol.`, + groups: { + farm: { id: 'farm', type: GroupType.POSITION }, + reactor: { id: 'reactor', type: GroupType.TOKEN }, + }, + url: 'https://www.tokemak.xyz/', + tags: [ProtocolTag.LIQUIDITY_POOL], + supportedNetworks: { [Network.ETHEREUM_MAINNET]: [ProtocolAction.VIEW] }, +}; + +@Register.AppDefinition(TOKEMAK_DEFINITION.id) +export class TokemakAppDefinition extends AppDefinition { + constructor() { + super(TOKEMAK_DEFINITION); + } +} diff --git a/src/apps/tokemak/tokemak.module.ts b/src/apps/tokemak/tokemak.module.ts new file mode 100644 index 000000000..a10a0b97f --- /dev/null +++ b/src/apps/tokemak/tokemak.module.ts @@ -0,0 +1,22 @@ +import { Module } from '@nestjs/common'; + +import { AbstractDynamicApp } from '~app/app.dynamic-module'; +import { SynthetixAppModule } from '~apps/synthetix'; + +import { TokemakContractFactory } from './contracts'; +import { EthereumTokemakBalanceFetcher } from './ethereum/tokemak.balance-fetcher'; +import { EthereumTokemakFarmContractPositionFetcher } from './ethereum/tokemak.farm.contract-position-fetcher'; +import { EthereumTokemakReactorTokenFetcher } from './ethereum/tokemak.reactor.token-fetcher'; +import { TokemakAppDefinition } from './tokemak.definition'; + +@Module({ + imports: [SynthetixAppModule.externallyConfigured(SynthetixAppModule, 0)], + providers: [ + TokemakAppDefinition, + TokemakContractFactory, + EthereumTokemakBalanceFetcher, + EthereumTokemakReactorTokenFetcher, + EthereumTokemakFarmContractPositionFetcher, + ], +}) +export class TokemakAppModule extends AbstractDynamicApp() {}