diff --git a/docs/resources/client-start-help b/docs/resources/client-start-help index 230a6c2ef8..281322b52d 100644 --- a/docs/resources/client-start-help +++ b/docs/resources/client-start-help @@ -5,31 +5,33 @@ Usage: keep-client start [flags] Flags: - --ethereum.url string WS connection URL for Ethereum client. - --ethereum.keyFile string The local filesystem path to Keep operator account keyfile. - --ethereum.miningCheckInterval duration The time interval in seconds in which transaction mining status is checked. If the transaction is not mined within this time, the gas price is increased and transaction is resubmitted. (default 1m0s) - --ethereum.maxGasFeeCap wei The maximum gas fee the client is willing to pay for the transaction to be mined. If reached, no resubmission attempts are performed. (default 500 gwei) - --ethereum.requestPerSecondLimit int Request per second limit for all types of Ethereum client requests. (default 150) - --ethereum.concurrencyLimit int The maximum number of concurrent requests which can be executed against Ethereum client. (default 30) - --ethereum.balanceAlertThreshold wei The minimum balance of operator account below which client starts reporting errors in logs. (default 500000000 gwei) - --network.bootstrap Run the client in bootstrap mode. - --network.peers strings Addresses of the network bootstrap nodes. - -p, --network.port int Keep client listening port. (default 3919) - --network.announcedAddresses strings Overwrites the default Keep client address announced in the network. Should be used for NAT or when more advanced firewall rules are applied. - --network.disseminationTime int Specifies courtesy message dissemination time in seconds for topics the node is not subscribed to. Should be used only on selected bootstrap nodes. (0 = none) - --storage.dir string Location to store the Keep client key shares and other sensitive data. - --clientInfo.port int Client Info HTTP server listening port. (default 9601) - --clientInfo.networkMetricsTick duration Client Info network metrics check tick in seconds. (default 1m0s) - --clientInfo.ethereumMetricsTick duration Client info Ethereum metrics check tick in seconds. (default 10m0s) - --tbtc.preParamsPoolSize int tECDSA pre-parameters pool size. (default 1000) - --tbtc.preParamsGenerationTimeout duration tECDSA pre-parameters generation timeout. (default 2m0s) - --tbtc.preParamsGenerationDelay duration tECDSA pre-parameters generation delay. (default 10s) - --tbtc.preParamsGenerationConcurrency int tECDSA pre-parameters generation concurrency. (default 1) - --tbtc.keyGenerationConcurrency int tECDSA key generation concurrency. (default number of cores) - --developer.bridgeAddress string Address of the Bridge smart contract - --developer.randomBeaconAddress string Address of the RandomBeacon smart contract - --developer.tokenStakingAddress string Address of the TokenStaking smart contract - --developer.walletRegistryAddress string Address of the WalletRegistry smart contract + --ethereum.url string WS connection URL for Ethereum client. + --ethereum.keyFile string The local filesystem path to Keep operator account keyfile. + --ethereum.miningCheckInterval duration The time interval in seconds in which transaction mining status is checked. If the transaction is not mined within this time, the gas price is increased and transaction is resubmitted. (default 1m0s) + --ethereum.maxGasFeeCap wei The maximum gas fee the client is willing to pay for the transaction to be mined. If reached, no resubmission attempts are performed. (default 500 gwei) + --ethereum.requestPerSecondLimit int Request per second limit for all types of Ethereum client requests. (default 150) + --ethereum.concurrencyLimit int The maximum number of concurrent requests which can be executed against Ethereum client. (default 30) + --ethereum.balanceAlertThreshold wei The minimum balance of operator account below which client starts reporting errors in logs. (default 500000000 gwei) + --network.bootstrap Run the client in bootstrap mode. + --network.peers strings Addresses of the network bootstrap nodes. + -p, --network.port int Keep client listening port. (default 3919) + --network.announcedAddresses strings Overwrites the default Keep client address announced in the network. Should be used for NAT or when more advanced firewall rules are applied. + --network.disseminationTime int Specifies courtesy message dissemination time in seconds for topics the node is not subscribed to. Should be used only on selected bootstrap nodes. (0 = none) + --storage.dir string Location to store the Keep client key shares and other sensitive data. + --clientInfo.port int Client Info HTTP server listening port. (default 9601) + --clientInfo.networkMetricsTick duration Client Info network metrics check tick in seconds. (default 1m0s) + --clientInfo.ethereumMetricsTick duration Client info Ethereum metrics check tick in seconds. (default 10m0s) + --tbtc.preParamsPoolSize int tECDSA pre-parameters pool size. (default 1000) + --tbtc.preParamsGenerationTimeout duration tECDSA pre-parameters generation timeout. (default 2m0s) + --tbtc.preParamsGenerationDelay duration tECDSA pre-parameters generation delay. (default 10s) + --tbtc.preParamsGenerationConcurrency int tECDSA pre-parameters generation concurrency. (default 1) + --tbtc.keyGenerationConcurrency int tECDSA key generation concurrency. (default number of cores) + --developer.bridgeAddress string Address of the Bridge smart contract + --developer.lightRelayAddress string Address of the LightRelay smart contract + --developer.randomBeaconAddress string Address of the RandomBeacon smart contract + --developer.tokenStakingAddress string Address of the TokenStaking smart contract + --developer.walletRegistryAddress string Address of the WalletRegistry smart contract + --developer.walletCoordinatorAddress string Address of the WalletCoordinator smart contract Global Flags: -c, --config string Path to the configuration file. Supported formats: TOML, YAML, JSON. diff --git a/pkg/chain/ethereum/beacon/gen/cmd/BeaconSortitionPool.go b/pkg/chain/ethereum/beacon/gen/cmd/BeaconSortitionPool.go index 89ea4eb008..bb46b376c7 100644 --- a/pkg/chain/ethereum/beacon/gen/cmd/BeaconSortitionPool.go +++ b/pkg/chain/ethereum/beacon/gen/cmd/BeaconSortitionPool.go @@ -922,6 +922,11 @@ func bspDeactivateChaosnet(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -991,6 +996,11 @@ func bspInsertOperator(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1040,6 +1050,11 @@ func bspLock(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1127,6 +1142,11 @@ func bspReceiveApproval(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1176,6 +1196,11 @@ func bspRenounceOwnership(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1236,6 +1261,11 @@ func bspRestoreRewardEligibility(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1296,6 +1326,11 @@ func bspTransferChaosnetOwnerRole(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1356,6 +1391,11 @@ func bspTransferOwnership(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1405,6 +1445,11 @@ func bspUnlock(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1474,6 +1519,11 @@ func bspUpdateOperatorStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1534,6 +1584,11 @@ func bspWithdrawIneligible(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1604,6 +1659,11 @@ func bspWithdrawRewards(c *cobra.Command, args []string) error { } cmd.PrintOutput(result) + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil diff --git a/pkg/chain/ethereum/beacon/gen/cmd/RandomBeacon.go b/pkg/chain/ethereum/beacon/gen/cmd/RandomBeacon.go index e7b9f7ed08..43c6694d09 100644 --- a/pkg/chain/ethereum/beacon/gen/cmd/RandomBeacon.go +++ b/pkg/chain/ethereum/beacon/gen/cmd/RandomBeacon.go @@ -1264,6 +1264,11 @@ func rbApproveAuthorizationDecrease(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1321,6 +1326,11 @@ func rbApproveDkgResult(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1399,6 +1409,11 @@ func rbAuthorizationDecreaseRequested(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1477,6 +1492,11 @@ func rbAuthorizationIncreased(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1534,6 +1554,11 @@ func rbChallengeDkgResult(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1583,6 +1608,11 @@ func rbGenesis(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1661,6 +1691,11 @@ func rbInvoluntaryAuthorizationDecrease(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1710,6 +1745,11 @@ func rbJoinSortitionPool(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1759,6 +1799,11 @@ func rbNotifyDkgTimeout(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1819,6 +1864,11 @@ func rbRegisterOperator(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1879,6 +1929,11 @@ func rbRequestRelayEntry(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1948,6 +2003,11 @@ func rbSetRequesterAuthorization(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2005,6 +2065,11 @@ func rbSubmitDkgResult(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2065,6 +2130,11 @@ func rbSubmitRelayEntry0(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2125,6 +2195,11 @@ func rbTransferGovernance(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2203,6 +2278,11 @@ func rbUpdateAuthorizationParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2290,6 +2370,11 @@ func rbUpdateGasParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2395,6 +2480,11 @@ func rbUpdateGroupCreationParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2455,6 +2545,11 @@ func rbUpdateOperatorStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2515,6 +2610,11 @@ func rbUpdateReimbursementPool(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2593,6 +2693,11 @@ func rbUpdateRelayEntryParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2680,6 +2785,11 @@ func rbUpdateRewardParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2758,6 +2868,11 @@ func rbUpdateSlashingParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2818,6 +2933,11 @@ func rbWithdrawIneligibleRewards(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2878,6 +2998,11 @@ func rbWithdrawRewards(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil diff --git a/pkg/chain/ethereum/ecdsa/gen/abi/WalletRegistry.go b/pkg/chain/ethereum/ecdsa/gen/abi/WalletRegistry.go index b9773aa6c5..a85559e4aa 100644 --- a/pkg/chain/ethereum/ecdsa/gen/abi/WalletRegistry.go +++ b/pkg/chain/ethereum/ecdsa/gen/abi/WalletRegistry.go @@ -28,6 +28,20 @@ var ( _ = event.NewSubscription ) +// EcdsaDkgData is an auto generated low-level Go binding around an user-defined struct. +type EcdsaDkgData struct { + SortitionPool common.Address + DkgValidator common.Address + Parameters EcdsaDkgParameters + StateLockBlock *big.Int + StartBlock *big.Int + Seed *big.Int + ResultSubmissionStartBlockOffset *big.Int + SubmittedResultHash [32]byte + SubmittedResultBlock *big.Int + Gap [38]*big.Int +} + // EcdsaDkgParameters is an auto generated low-level Go binding around an user-defined struct. type EcdsaDkgParameters struct { SeedTimeout *big.Int @@ -66,7 +80,7 @@ type WalletsWallet struct { // WalletRegistryMetaData contains all meta data concerning the WalletRegistry contract. var WalletRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"contractSortitionPool\",\"name\":\"_sortitionPool\",\"type\":\"address\"},{\"internalType\":\"contractIStaking\",\"name\":\"_staking\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"AuthorizationDecreaseApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"decreasingAt\",\"type\":\"uint64\"}],\"name\":\"AuthorizationDecreaseRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"AuthorizationIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"minimumAuthorization\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseDelay\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseChangePeriod\",\"type\":\"uint64\"}],\"name\":\"AuthorizationParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashingAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"maliciousSubmitter\",\"type\":\"address\"}],\"name\":\"DkgMaliciousResultSlashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashingAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"maliciousSubmitter\",\"type\":\"address\"}],\"name\":\"DkgMaliciousResultSlashingFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seedTimeout\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultChallengePeriodLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultChallengeExtraGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultSubmissionTimeout\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultSubmitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"name\":\"DkgParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"DkgResultApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"DkgResultChallenged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"result\",\"type\":\"tuple\"}],\"name\":\"DkgResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DkgSeedTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"}],\"name\":\"DkgStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DkgStateLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DkgTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dkgResultSubmissionGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dkgResultApprovalGasOffset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"notifyOperatorInactivityGasOffset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"notifySeedTimeoutGasOffset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"notifyDkgTimeoutNegativeGasOffset\",\"type\":\"uint256\"}],\"name\":\"GasParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"notifier\",\"type\":\"address\"}],\"name\":\"InactivityClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"InvoluntaryAuthorizationDecreaseFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorJoinedSortitionPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"randomBeacon\",\"type\":\"address\"}],\"name\":\"RandomBeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newReimbursementPool\",\"type\":\"address\"}],\"name\":\"ReimbursementPoolUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultNotificationRewardMultiplier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sortitionPoolRewardsBanDuration\",\"type\":\"uint256\"}],\"name\":\"RewardParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"RewardsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultSlashingAmount\",\"type\":\"uint256\"}],\"name\":\"SlashingParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"WalletClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dkgResultHash\",\"type\":\"bytes32\"}],\"name\":\"WalletCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"walletOwner\",\"type\":\"address\"}],\"name\":\"WalletOwnerUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relayEntry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"__beaconCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"approveAuthorizationDecrease\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"dkgResult\",\"type\":\"tuple\"}],\"name\":\"approveDkgResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"authorizationDecreaseRequested\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"authorizationIncreased\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorizationParameters\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minimumAuthorization\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseChangePeriod\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"availableRewards\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"dkgResult\",\"type\":\"tuple\"}],\"name\":\"challengeDkgResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"closeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dkgParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seedTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultChallengePeriodLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultChallengeExtraGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultSubmissionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"submitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"internalType\":\"structEcdsaDkg.Parameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"eligibleStake\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dkgResultSubmissionGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dkgResultApprovalGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyOperatorInactivityGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifySeedTimeoutGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyDkgTimeoutNegativeGasOffset\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"getWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"membersIdsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyY\",\"type\":\"bytes32\"}],\"internalType\":\"structWallets.Wallet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWalletCreationState\",\"outputs\":[{\"internalType\":\"enumEcdsaDkg.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"getWalletPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasDkgTimedOut\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasSeedTimedOut\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"inactivityClaimNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractEcdsaDkgValidator\",\"name\":\"_ecdsaDkgValidator\",\"type\":\"address\"},{\"internalType\":\"contractIRandomBeacon\",\"name\":\"_randomBeacon\",\"type\":\"address\"},{\"internalType\":\"contractReimbursementPool\",\"name\":\"_reimbursementPool\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"involuntaryAuthorizationDecrease\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"result\",\"type\":\"tuple\"}],\"name\":\"isDkgResultValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorInPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorUpToDate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"walletMemberIndex\",\"type\":\"uint256\"}],\"name\":\"isWalletMember\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"isWalletRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"joinSortitionPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumAuthorization\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"notifyDkgTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"inactiveMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"heartbeatFailed\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"}],\"internalType\":\"structEcdsaInactivity.Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32[]\",\"name\":\"groupMembers\",\"type\":\"uint32[]\"}],\"name\":\"notifyOperatorInactivity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"notifySeedTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorToStakingProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"pendingAuthorizationDecrease\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBeacon\",\"outputs\":[{\"internalType\":\"contractIRandomBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reimbursementPool\",\"outputs\":[{\"internalType\":\"contractReimbursementPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"remainingAuthorizationDecreaseDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestNewWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultNotificationRewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sortitionPoolRewardsBanDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"notifier\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"}],\"name\":\"seize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selectGroup\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingParameters\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maliciousDkgResultSlashingAmount\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sortitionPool\",\"outputs\":[{\"internalType\":\"contractSortitionPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staking\",\"outputs\":[{\"internalType\":\"contractIStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"stakingProviderToOperator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"dkgResult\",\"type\":\"tuple\"}],\"name\":\"submitDkgResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"transferGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"_minimumAuthorization\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"_authorizationDecreaseDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_authorizationDecreaseChangePeriod\",\"type\":\"uint64\"}],\"name\":\"updateAuthorizationParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_seedTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resultChallengePeriodLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resultChallengeExtraGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resultSubmissionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_submitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"name\":\"updateDkgParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dkgResultSubmissionGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dkgResultApprovalGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyOperatorInactivityGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifySeedTimeoutGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyDkgTimeoutNegativeGasOffset\",\"type\":\"uint256\"}],\"name\":\"updateGasParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"updateOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractReimbursementPool\",\"name\":\"_reimbursementPool\",\"type\":\"address\"}],\"name\":\"updateReimbursementPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultNotificationRewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sortitionPoolRewardsBanDuration\",\"type\":\"uint256\"}],\"name\":\"updateRewardParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"maliciousDkgResultSlashingAmount\",\"type\":\"uint96\"}],\"name\":\"updateSlashingParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIWalletOwner\",\"name\":\"_walletOwner\",\"type\":\"address\"}],\"name\":\"updateWalletOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIRandomBeacon\",\"name\":\"_randomBeacon\",\"type\":\"address\"}],\"name\":\"upgradeRandomBeacon\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletOwner\",\"outputs\":[{\"internalType\":\"contractIWalletOwner\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawIneligibleRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"withdrawRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"contractSortitionPool\",\"name\":\"_sortitionPool\",\"type\":\"address\"},{\"internalType\":\"contractIStaking\",\"name\":\"_staking\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"AuthorizationDecreaseApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"decreasingAt\",\"type\":\"uint64\"}],\"name\":\"AuthorizationDecreaseRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"AuthorizationIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"minimumAuthorization\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseDelay\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseChangePeriod\",\"type\":\"uint64\"}],\"name\":\"AuthorizationParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashingAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"maliciousSubmitter\",\"type\":\"address\"}],\"name\":\"DkgMaliciousResultSlashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slashingAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"maliciousSubmitter\",\"type\":\"address\"}],\"name\":\"DkgMaliciousResultSlashingFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"seedTimeout\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultChallengePeriodLength\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultChallengeExtraGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultSubmissionTimeout\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resultSubmitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"name\":\"DkgParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"DkgResultApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"reason\",\"type\":\"string\"}],\"name\":\"DkgResultChallenged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resultHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"result\",\"type\":\"tuple\"}],\"name\":\"DkgResultSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DkgSeedTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"}],\"name\":\"DkgStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DkgStateLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"DkgTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dkgResultSubmissionGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dkgResultApprovalGasOffset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"notifyOperatorInactivityGasOffset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"notifySeedTimeoutGasOffset\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"notifyDkgTimeoutNegativeGasOffset\",\"type\":\"uint256\"}],\"name\":\"GasParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"notifier\",\"type\":\"address\"}],\"name\":\"InactivityClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"InvoluntaryAuthorizationDecreaseFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorJoinedSortitionPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"OperatorStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"randomBeacon\",\"type\":\"address\"}],\"name\":\"RandomBeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newReimbursementPool\",\"type\":\"address\"}],\"name\":\"ReimbursementPoolUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultNotificationRewardMultiplier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sortitionPoolRewardsBanDuration\",\"type\":\"uint256\"}],\"name\":\"RewardParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"RewardsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultSlashingAmount\",\"type\":\"uint256\"}],\"name\":\"SlashingParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"WalletClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"dkgResultHash\",\"type\":\"bytes32\"}],\"name\":\"WalletCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"walletOwner\",\"type\":\"address\"}],\"name\":\"WalletOwnerUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relayEntry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"__beaconCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"approveAuthorizationDecrease\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"dkgResult\",\"type\":\"tuple\"}],\"name\":\"approveDkgResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"authorizationDecreaseRequested\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"authorizationIncreased\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"authorizationParameters\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"minimumAuthorization\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"authorizationDecreaseChangePeriod\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"availableRewards\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"dkgResult\",\"type\":\"tuple\"}],\"name\":\"challengeDkgResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"closeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"dkgParameters\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seedTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultChallengePeriodLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultChallengeExtraGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultSubmissionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"submitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"internalType\":\"structEcdsaDkg.Parameters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"eligibleStake\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"membersIdsHash\",\"type\":\"bytes32\"}],\"name\":\"forceAddWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"dkgResultSubmissionGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dkgResultApprovalGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyOperatorInactivityGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifySeedTimeoutGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyDkgTimeoutNegativeGasOffset\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDkgData\",\"outputs\":[{\"components\":[{\"internalType\":\"contractSortitionPool\",\"name\":\"sortitionPool\",\"type\":\"address\"},{\"internalType\":\"contractEcdsaDkgValidator\",\"name\":\"dkgValidator\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"seedTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultChallengePeriodLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultChallengeExtraGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultSubmissionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"submitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"internalType\":\"structEcdsaDkg.Parameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"stateLockBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resultSubmissionStartBlockOffset\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"submittedResultHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"submittedResultBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256[38]\",\"name\":\"__gap\",\"type\":\"uint256[38]\"}],\"internalType\":\"structEcdsaDkg.Data\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"getWallet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"membersIdsHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyY\",\"type\":\"bytes32\"}],\"internalType\":\"structWallets.Wallet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWalletCreationState\",\"outputs\":[{\"internalType\":\"enumEcdsaDkg.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"getWalletPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasDkgTimedOut\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasSeedTimedOut\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"inactivityClaimNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractEcdsaDkgValidator\",\"name\":\"_ecdsaDkgValidator\",\"type\":\"address\"},{\"internalType\":\"contractIRandomBeacon\",\"name\":\"_randomBeacon\",\"type\":\"address\"},{\"internalType\":\"contractReimbursementPool\",\"name\":\"_reimbursementPool\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"fromAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"toAmount\",\"type\":\"uint96\"}],\"name\":\"involuntaryAuthorizationDecrease\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"result\",\"type\":\"tuple\"}],\"name\":\"isDkgResultValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorInPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperatorUpToDate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"walletMemberIndex\",\"type\":\"uint256\"}],\"name\":\"isWalletMember\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"}],\"name\":\"isWalletRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"joinSortitionPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumAuthorization\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"notifyDkgTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"inactiveMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"heartbeatFailed\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"}],\"internalType\":\"structEcdsaInactivity.Claim\",\"name\":\"claim\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint32[]\",\"name\":\"groupMembers\",\"type\":\"uint32[]\"}],\"name\":\"notifyOperatorInactivity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"notifySeedTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"operatorToStakingProvider\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"pendingAuthorizationDecrease\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomBeacon\",\"outputs\":[{\"internalType\":\"contractIRandomBeacon\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reimbursementPool\",\"outputs\":[{\"internalType\":\"contractReimbursementPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"remainingAuthorizationDecreaseDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestNewWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultNotificationRewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sortitionPoolRewardsBanDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"notifier\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"walletID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"}],\"name\":\"seize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"selectGroup\",\"outputs\":[{\"internalType\":\"uint32[]\",\"name\":\"\",\"type\":\"uint32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashingParameters\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"maliciousDkgResultSlashingAmount\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sortitionPool\",\"outputs\":[{\"internalType\":\"contractSortitionPool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"staking\",\"outputs\":[{\"internalType\":\"contractIStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"stakingProviderToOperator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"submitterMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"groupPubKey\",\"type\":\"bytes\"},{\"internalType\":\"uint8[]\",\"name\":\"misbehavedMembersIndices\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes\",\"name\":\"signatures\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"signingMembersIndices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint32[]\",\"name\":\"members\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes32\",\"name\":\"membersHash\",\"type\":\"bytes32\"}],\"internalType\":\"structEcdsaDkg.Result\",\"name\":\"dkgResult\",\"type\":\"tuple\"}],\"name\":\"submitDkgResult\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"transferGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"_minimumAuthorization\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"_authorizationDecreaseDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"_authorizationDecreaseChangePeriod\",\"type\":\"uint64\"}],\"name\":\"updateAuthorizationParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_seedTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resultChallengePeriodLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resultChallengeExtraGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resultSubmissionTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_submitterPrecedencePeriodLength\",\"type\":\"uint256\"}],\"name\":\"updateDkgParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dkgResultSubmissionGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dkgResultApprovalGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyOperatorInactivityGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifySeedTimeoutGasOffset\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"notifyDkgTimeoutNegativeGasOffset\",\"type\":\"uint256\"}],\"name\":\"updateGasParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"updateOperatorStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractReimbursementPool\",\"name\":\"_reimbursementPool\",\"type\":\"address\"}],\"name\":\"updateReimbursementPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maliciousDkgResultNotificationRewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sortitionPoolRewardsBanDuration\",\"type\":\"uint256\"}],\"name\":\"updateRewardParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"maliciousDkgResultSlashingAmount\",\"type\":\"uint96\"}],\"name\":\"updateSlashingParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIWalletOwner\",\"name\":\"_walletOwner\",\"type\":\"address\"}],\"name\":\"updateWalletOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIRandomBeacon\",\"name\":\"_randomBeacon\",\"type\":\"address\"}],\"name\":\"upgradeRandomBeacon\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletOwner\",\"outputs\":[{\"internalType\":\"contractIWalletOwner\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawIneligibleRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stakingProvider\",\"type\":\"address\"}],\"name\":\"withdrawRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // WalletRegistryABI is the input ABI used to generate the binding from. @@ -418,6 +432,37 @@ func (_WalletRegistry *WalletRegistryCallerSession) GasParameters() (struct { return _WalletRegistry.Contract.GasParameters(&_WalletRegistry.CallOpts) } +// GetDkgData is a free data retrieval call binding the contract method 0x592b2abd. +// +// Solidity: function getDkgData() view returns((address,address,(uint256,uint256,uint256,uint256,uint256),uint256,uint256,uint256,uint256,bytes32,uint256,uint256[38])) +func (_WalletRegistry *WalletRegistryCaller) GetDkgData(opts *bind.CallOpts) (EcdsaDkgData, error) { + var out []interface{} + err := _WalletRegistry.contract.Call(opts, &out, "getDkgData") + + if err != nil { + return *new(EcdsaDkgData), err + } + + out0 := *abi.ConvertType(out[0], new(EcdsaDkgData)).(*EcdsaDkgData) + + return out0, err + +} + +// GetDkgData is a free data retrieval call binding the contract method 0x592b2abd. +// +// Solidity: function getDkgData() view returns((address,address,(uint256,uint256,uint256,uint256,uint256),uint256,uint256,uint256,uint256,bytes32,uint256,uint256[38])) +func (_WalletRegistry *WalletRegistrySession) GetDkgData() (EcdsaDkgData, error) { + return _WalletRegistry.Contract.GetDkgData(&_WalletRegistry.CallOpts) +} + +// GetDkgData is a free data retrieval call binding the contract method 0x592b2abd. +// +// Solidity: function getDkgData() view returns((address,address,(uint256,uint256,uint256,uint256,uint256),uint256,uint256,uint256,uint256,bytes32,uint256,uint256[38])) +func (_WalletRegistry *WalletRegistryCallerSession) GetDkgData() (EcdsaDkgData, error) { + return _WalletRegistry.Contract.GetDkgData(&_WalletRegistry.CallOpts) +} + // GetWallet is a free data retrieval call binding the contract method 0x789d392a. // // Solidity: function getWallet(bytes32 walletID) view returns((bytes32,bytes32,bytes32)) @@ -1355,6 +1400,27 @@ func (_WalletRegistry *WalletRegistryTransactorSession) CloseWallet(walletID [32 return _WalletRegistry.Contract.CloseWallet(&_WalletRegistry.TransactOpts, walletID) } +// ForceAddWallet is a paid mutator transaction binding the contract method 0x2717ee0d. +// +// Solidity: function forceAddWallet(bytes groupPubKey, bytes32 membersIdsHash) returns() +func (_WalletRegistry *WalletRegistryTransactor) ForceAddWallet(opts *bind.TransactOpts, groupPubKey []byte, membersIdsHash [32]byte) (*types.Transaction, error) { + return _WalletRegistry.contract.Transact(opts, "forceAddWallet", groupPubKey, membersIdsHash) +} + +// ForceAddWallet is a paid mutator transaction binding the contract method 0x2717ee0d. +// +// Solidity: function forceAddWallet(bytes groupPubKey, bytes32 membersIdsHash) returns() +func (_WalletRegistry *WalletRegistrySession) ForceAddWallet(groupPubKey []byte, membersIdsHash [32]byte) (*types.Transaction, error) { + return _WalletRegistry.Contract.ForceAddWallet(&_WalletRegistry.TransactOpts, groupPubKey, membersIdsHash) +} + +// ForceAddWallet is a paid mutator transaction binding the contract method 0x2717ee0d. +// +// Solidity: function forceAddWallet(bytes groupPubKey, bytes32 membersIdsHash) returns() +func (_WalletRegistry *WalletRegistryTransactorSession) ForceAddWallet(groupPubKey []byte, membersIdsHash [32]byte) (*types.Transaction, error) { + return _WalletRegistry.Contract.ForceAddWallet(&_WalletRegistry.TransactOpts, groupPubKey, membersIdsHash) +} + // Initialize is a paid mutator transaction binding the contract method 0xc0c53b8b. // // Solidity: function initialize(address _ecdsaDkgValidator, address _randomBeacon, address _reimbursementPool) returns() diff --git a/pkg/chain/ethereum/ecdsa/gen/cmd/EcdsaSortitionPool.go b/pkg/chain/ethereum/ecdsa/gen/cmd/EcdsaSortitionPool.go index 5b741c77c1..476a18bf7f 100644 --- a/pkg/chain/ethereum/ecdsa/gen/cmd/EcdsaSortitionPool.go +++ b/pkg/chain/ethereum/ecdsa/gen/cmd/EcdsaSortitionPool.go @@ -922,6 +922,11 @@ func espDeactivateChaosnet(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -991,6 +996,11 @@ func espInsertOperator(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1040,6 +1050,11 @@ func espLock(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1127,6 +1142,11 @@ func espReceiveApproval(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1176,6 +1196,11 @@ func espRenounceOwnership(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1236,6 +1261,11 @@ func espRestoreRewardEligibility(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1296,6 +1326,11 @@ func espTransferChaosnetOwnerRole(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1356,6 +1391,11 @@ func espTransferOwnership(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1405,6 +1445,11 @@ func espUnlock(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1474,6 +1519,11 @@ func espUpdateOperatorStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1534,6 +1584,11 @@ func espWithdrawIneligible(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1604,6 +1659,11 @@ func espWithdrawRewards(c *cobra.Command, args []string) error { } cmd.PrintOutput(result) + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil diff --git a/pkg/chain/ethereum/ecdsa/gen/cmd/WalletRegistry.go b/pkg/chain/ethereum/ecdsa/gen/cmd/WalletRegistry.go index bf4ae200b6..f87212eff7 100644 --- a/pkg/chain/ethereum/ecdsa/gen/cmd/WalletRegistry.go +++ b/pkg/chain/ethereum/ecdsa/gen/cmd/WalletRegistry.go @@ -56,6 +56,7 @@ func init() { wrDkgParametersCommand(), wrEligibleStakeCommand(), wrGasParametersCommand(), + wrGetDkgDataCommand(), wrGetWalletCreationStateCommand(), wrGovernanceCommand(), wrHasDkgTimedOutCommand(), @@ -297,6 +298,40 @@ func wrGasParameters(c *cobra.Command, args []string) error { return nil } +func wrGetDkgDataCommand() *cobra.Command { + c := &cobra.Command{ + Use: "get-dkg-data", + Short: "Calls the view method getDkgData on the WalletRegistry contract.", + Args: cmd.ArgCountChecker(0), + RunE: wrGetDkgData, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + cmd.InitConstFlags(c) + + return c +} + +func wrGetDkgData(c *cobra.Command, args []string) error { + contract, err := initializeWalletRegistry(c) + if err != nil { + return err + } + + result, err := contract.GetDkgDataAtBlock( + cmd.BlockFlagValue.Int, + ) + + if err != nil { + return err + } + + cmd.PrintOutput(result) + + return nil +} + func wrGetWalletCreationStateCommand() *cobra.Command { c := &cobra.Command{ Use: "get-wallet-creation-state", @@ -1094,6 +1129,11 @@ func wrApproveAuthorizationDecrease(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1151,6 +1191,11 @@ func wrApproveDkgResult(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1229,6 +1274,11 @@ func wrAuthorizationDecreaseRequested(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1307,6 +1357,11 @@ func wrAuthorizationIncreased(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1376,6 +1431,11 @@ func wrBeaconCallback(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1433,6 +1493,11 @@ func wrChallengeDkgResult(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1511,6 +1576,11 @@ func wrInitialize(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1589,6 +1659,11 @@ func wrInvoluntaryAuthorizationDecrease(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1638,6 +1713,11 @@ func wrJoinSortitionPool(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1687,6 +1767,11 @@ func wrNotifyDkgTimeout(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1736,6 +1821,11 @@ func wrNotifySeedTimeout(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1796,6 +1886,11 @@ func wrRegisterOperator(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1845,6 +1940,11 @@ func wrRequestNewWallet(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1902,6 +2002,11 @@ func wrSubmitDkgResult(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1962,6 +2067,11 @@ func wrTransferGovernance(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2040,6 +2150,11 @@ func wrUpdateAuthorizationParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2136,6 +2251,11 @@ func wrUpdateDkgParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2232,6 +2352,11 @@ func wrUpdateGasParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2292,6 +2417,11 @@ func wrUpdateOperatorStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2352,6 +2482,11 @@ func wrUpdateReimbursementPool(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2421,6 +2556,11 @@ func wrUpdateRewardParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2481,6 +2621,11 @@ func wrUpdateSlashingParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2541,6 +2686,11 @@ func wrUpdateWalletOwner(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2601,6 +2751,11 @@ func wrUpgradeRandomBeacon(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2661,6 +2816,11 @@ func wrWithdrawIneligibleRewards(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2721,6 +2881,11 @@ func wrWithdrawRewards(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil diff --git a/pkg/chain/ethereum/ecdsa/gen/contract/WalletRegistry.go b/pkg/chain/ethereum/ecdsa/gen/contract/WalletRegistry.go index 3b4288559c..c929310aad 100644 --- a/pkg/chain/ethereum/ecdsa/gen/contract/WalletRegistry.go +++ b/pkg/chain/ethereum/ecdsa/gen/contract/WalletRegistry.go @@ -1120,6 +1120,154 @@ func (wr *WalletRegistry) CloseWalletGasEstimate( return result, err } +// Transaction submission. +func (wr *WalletRegistry) ForceAddWallet( + arg_groupPubKey []byte, + arg_membersIdsHash [32]byte, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + wrLogger.Debug( + "submitting transaction forceAddWallet", + " params: ", + fmt.Sprint( + arg_groupPubKey, + arg_membersIdsHash, + ), + ) + + wr.transactionMutex.Lock() + defer wr.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *wr.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := wr.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := wr.contract.ForceAddWallet( + transactorOptions, + arg_groupPubKey, + arg_membersIdsHash, + ) + if err != nil { + return transaction, wr.errorResolver.ResolveError( + err, + wr.transactorOptions.From, + nil, + "forceAddWallet", + arg_groupPubKey, + arg_membersIdsHash, + ) + } + + wrLogger.Infof( + "submitted transaction forceAddWallet with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go wr.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := wr.contract.ForceAddWallet( + newTransactorOptions, + arg_groupPubKey, + arg_membersIdsHash, + ) + if err != nil { + return nil, wr.errorResolver.ResolveError( + err, + wr.transactorOptions.From, + nil, + "forceAddWallet", + arg_groupPubKey, + arg_membersIdsHash, + ) + } + + wrLogger.Infof( + "submitted transaction forceAddWallet with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + wr.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (wr *WalletRegistry) CallForceAddWallet( + arg_groupPubKey []byte, + arg_membersIdsHash [32]byte, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + wr.transactorOptions.From, + blockNumber, nil, + wr.contractABI, + wr.caller, + wr.errorResolver, + wr.contractAddress, + "forceAddWallet", + &result, + arg_groupPubKey, + arg_membersIdsHash, + ) + + return err +} + +func (wr *WalletRegistry) ForceAddWalletGasEstimate( + arg_groupPubKey []byte, + arg_membersIdsHash [32]byte, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + wr.callerOptions.From, + wr.contractAddress, + "forceAddWallet", + wr.contractABI, + wr.transactor, + arg_groupPubKey, + arg_membersIdsHash, + ) + + return result, err +} + // Transaction submission. func (wr *WalletRegistry) Initialize( arg__ecdsaDkgValidator common.Address, @@ -4523,6 +4671,43 @@ func (wr *WalletRegistry) GasParametersAtBlock( return result, err } +func (wr *WalletRegistry) GetDkgData() (abi.EcdsaDkgData, error) { + result, err := wr.contract.GetDkgData( + wr.callerOptions, + ) + + if err != nil { + return result, wr.errorResolver.ResolveError( + err, + wr.callerOptions.From, + nil, + "getDkgData", + ) + } + + return result, err +} + +func (wr *WalletRegistry) GetDkgDataAtBlock( + blockNumber *big.Int, +) (abi.EcdsaDkgData, error) { + var result abi.EcdsaDkgData + + err := chainutil.CallAtBlock( + wr.callerOptions.From, + blockNumber, + nil, + wr.contractABI, + wr.caller, + wr.errorResolver, + wr.contractAddress, + "getDkgData", + &result, + ) + + return result, err +} + func (wr *WalletRegistry) GetWallet( arg_walletID [32]byte, ) (abi.WalletsWallet, error) { diff --git a/pkg/chain/ethereum/tbtc/gen/abi/Bridge.go b/pkg/chain/ethereum/tbtc/gen/abi/Bridge.go index ee850c1999..ee81eed4c9 100644 --- a/pkg/chain/ethereum/tbtc/gen/abi/Bridge.go +++ b/pkg/chain/ethereum/tbtc/gen/abi/Bridge.go @@ -70,7 +70,6 @@ type DepositDepositRequest struct { // DepositDepositRevealInfo is an auto generated low-level Go binding around an user-defined struct. type DepositDepositRevealInfo struct { FundingOutputIndex uint32 - Depositor common.Address BlindingFactor [8]byte WalletPubKeyHash [20]byte RefundPubKeyHash [20]byte @@ -118,7 +117,7 @@ type WalletsWallet struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositDustThreshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositTxMaxFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"name\":\"DepositParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"fundingTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fundingOutputIndex\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes8\",\"name\":\"blindingFactor\",\"type\":\"bytes8\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes20\",\"name\":\"refundPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"refundLocktime\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"DepositRevealed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sweepTxHash\",\"type\":\"bytes32\"}],\"name\":\"DepositsSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"}],\"name\":\"FraudChallengeDefeatTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"}],\"name\":\"FraudChallengeDefeated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"FraudChallengeSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fraudChallengeDepositAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fraudChallengeDefeatTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fraudSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fraudNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"FraudParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"movingFundsTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTxOutputIndex\",\"type\":\"uint32\"}],\"name\":\"MovedFundsSweepTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sweepTxHash\",\"type\":\"bytes32\"}],\"name\":\"MovedFundsSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"MovingFundsBelowDustReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes20[]\",\"name\":\"targetWallets\",\"type\":\"bytes20[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"}],\"name\":\"MovingFundsCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"movingFundsTxHash\",\"type\":\"bytes32\"}],\"name\":\"MovingFundsCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"movingFundsTxMaxTotalFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"movingFundsDustThreshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutResetDelay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"movingFundsTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"movingFundsCommitmentGasOffset\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"movedFundsSweepTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"MovingFundsParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"MovingFundsTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"MovingFundsTimeoutReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"NewWalletRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"NewWalletRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionDustThreshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxTotalFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"redemptionTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"redemptionTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"redemptionTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"RedemptionParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"requestedAmount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"txMaxFee\",\"type\":\"uint64\"}],\"name\":\"RedemptionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"}],\"name\":\"RedemptionTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"redemptionTxHash\",\"type\":\"bytes32\"}],\"name\":\"RedemptionsCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spvMaintainer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"SpvMaintainerStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"VaultStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletClosing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletMovingFunds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"walletCreationPeriod\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletCreationMinBtcBalance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletCreationMaxBtcBalance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletClosureMinBtcBalance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"walletMaxAge\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletMaxBtcTransfer\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"walletClosingPeriod\",\"type\":\"uint32\"}],\"name\":\"WalletParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletTerminated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyY\",\"type\":\"bytes32\"}],\"name\":\"__ecdsaWalletCreatedCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyY\",\"type\":\"bytes32\"}],\"name\":\"__ecdsaWalletHeartbeatFailedCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeWalletPubKeyHash\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractReferences\",\"outputs\":[{\"internalType\":\"contractBank\",\"name\":\"bank\",\"type\":\"address\"},{\"internalType\":\"contractIRelay\",\"name\":\"relay\",\"type\":\"address\"},{\"internalType\":\"contractIWalletRegistry\",\"name\":\"ecdsaWalletRegistry\",\"type\":\"address\"},{\"internalType\":\"contractReimbursementPool\",\"name\":\"reimbursementPool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"preimage\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"witness\",\"type\":\"bool\"}],\"name\":\"defeatFraudChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"heartbeatMessage\",\"type\":\"bytes\"}],\"name\":\"defeatFraudChallengeWithHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositParameters\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"depositDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"depositKey\",\"type\":\"uint256\"}],\"name\":\"deposits\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"revealedAt\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"sweptAt\",\"type\":\"uint32\"}],\"internalType\":\"structDeposit.DepositRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeKey\",\"type\":\"uint256\"}],\"name\":\"fraudChallenges\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"depositAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"reportedAt\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"resolved\",\"type\":\"bool\"}],\"internalType\":\"structFraud.FraudChallenge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fraudParameters\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"fraudChallengeDepositAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudChallengeDefeatTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"fraudSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bank\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_relay\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ecdsaWalletRegistry\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_reimbursementPool\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_txProofDifficultyFactor\",\"type\":\"uint96\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"isVaultTrusted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liveWalletsCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestKey\",\"type\":\"uint256\"}],\"name\":\"movedFundsSweepRequests\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"createdAt\",\"type\":\"uint32\"},{\"internalType\":\"enumMovingFunds.MovedFundsSweepRequestState\",\"name\":\"state\",\"type\":\"uint8\"}],\"internalType\":\"structMovingFunds.MovedFundsSweepRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"movingFundsParameters\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"movingFundsTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"movingFundsDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutResetDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movingFundsTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"movingFundsCommitmentGasOffset\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movedFundsSweepTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes\",\"name\":\"preimageSha256\",\"type\":\"bytes\"}],\"name\":\"notifyFraudChallengeDefeatTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"movingFundsTxHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTxOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"}],\"name\":\"notifyMovedFundsSweepTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"}],\"name\":\"notifyMovingFundsBelowDust\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"}],\"name\":\"notifyMovingFundsTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"}],\"name\":\"notifyRedemptionTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"walletMainUtxo\",\"type\":\"tuple\"}],\"name\":\"notifyWalletCloseable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"notifyWalletClosingPeriodElapsed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redemptionKey\",\"type\":\"uint256\"}],\"name\":\"pendingRedemptions\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestedAmount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"txMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"requestedAt\",\"type\":\"uint32\"}],\"internalType\":\"structRedemption.RedemptionRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"balanceOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"redemptionData\",\"type\":\"bytes\"}],\"name\":\"receiveBalanceApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemptionParameters\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"redemptionDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"redemptionTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"activeWalletMainUtxo\",\"type\":\"tuple\"}],\"name\":\"requestNewWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"}],\"name\":\"requestRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"resetMovingFundsTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"fundingTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"fundingOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes8\",\"name\":\"blindingFactor\",\"type\":\"bytes8\"},{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"bytes20\",\"name\":\"refundPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"bytes4\",\"name\":\"refundLocktime\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"internalType\":\"structDeposit.DepositRevealInfo\",\"name\":\"reveal\",\"type\":\"tuple\"}],\"name\":\"revealDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spvMaintainer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"setSpvMaintainerStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"setVaultStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoKey\",\"type\":\"uint256\"}],\"name\":\"spentMainUTXOs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"sweepTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"sweepProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"submitDepositSweepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"preimageSha256\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"internalType\":\"structBitcoinTx.RSVSignature\",\"name\":\"signature\",\"type\":\"tuple\"}],\"name\":\"submitFraudChallenge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"sweepTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"sweepProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"}],\"name\":\"submitMovedFundsSweepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"walletMainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"uint256\",\"name\":\"walletMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes20[]\",\"name\":\"targetWallets\",\"type\":\"bytes20[]\"}],\"name\":\"submitMovingFundsCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"movingFundsTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"movingFundsProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"submitMovingFundsProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"redemptionTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"redemptionProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"submitRedemptionProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redemptionKey\",\"type\":\"uint256\"}],\"name\":\"timedOutRedemptions\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestedAmount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"txMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"requestedAt\",\"type\":\"uint32\"}],\"internalType\":\"structRedemption.RedemptionRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"transferGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"txProofDifficultyFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"name\":\"updateDepositParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"fraudChallengeDepositAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudChallengeDefeatTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"fraudSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"updateFraudParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"movingFundsTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"movingFundsDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutResetDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movingFundsTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"movingFundsCommitmentGasOffset\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movedFundsSweepTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"updateMovingFundsParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"redemptionDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"redemptionTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"updateRedemptionParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"walletCreationPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMaxBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletClosureMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletMaxAge\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletMaxBtcTransfer\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletClosingPeriod\",\"type\":\"uint32\"}],\"name\":\"updateWalletParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletParameters\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"walletCreationPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMaxBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletClosureMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletMaxAge\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletMaxBtcTransfer\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletClosingPeriod\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"wallets\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mainUtxoHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"pendingRedemptionsValue\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"createdAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsRequestedAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"closingStartedAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"pendingMovedFundsSweepRequestsCount\",\"type\":\"uint32\"},{\"internalType\":\"enumWallets.WalletState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"movingFundsTargetWalletsCommitmentHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWallets.Wallet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositDustThreshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositTxMaxFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"name\":\"DepositParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"fundingTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fundingOutputIndex\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes8\",\"name\":\"blindingFactor\",\"type\":\"bytes8\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes20\",\"name\":\"refundPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"refundLocktime\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"DepositRevealed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sweepTxHash\",\"type\":\"bytes32\"}],\"name\":\"DepositsSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"}],\"name\":\"FraudChallengeDefeatTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"}],\"name\":\"FraudChallengeDefeated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sighash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"FraudChallengeSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fraudChallengeDepositAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fraudChallengeDefeatTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"fraudSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fraudNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"FraudParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGovernance\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"GovernanceTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"movingFundsTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTxOutputIndex\",\"type\":\"uint32\"}],\"name\":\"MovedFundsSweepTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sweepTxHash\",\"type\":\"bytes32\"}],\"name\":\"MovedFundsSwept\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"MovingFundsBelowDustReported\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes20[]\",\"name\":\"targetWallets\",\"type\":\"bytes20[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"}],\"name\":\"MovingFundsCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"movingFundsTxHash\",\"type\":\"bytes32\"}],\"name\":\"MovingFundsCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"movingFundsTxMaxTotalFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"movingFundsDustThreshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutResetDelay\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"movingFundsTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"movingFundsCommitmentGasOffset\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"movedFundsSweepTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"MovingFundsParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"MovingFundsTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"MovingFundsTimeoutReset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"NewWalletRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"NewWalletRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionDustThreshold\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxTotalFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"redemptionTimeout\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"redemptionTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"redemptionTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"RedemptionParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"requestedAmount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"txMaxFee\",\"type\":\"uint64\"}],\"name\":\"RedemptionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"}],\"name\":\"RedemptionTimedOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"redemptionTxHash\",\"type\":\"bytes32\"}],\"name\":\"RedemptionsCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spvMaintainer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"SpvMaintainerStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"TreasuryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"VaultStatusUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletClosing\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletMovingFunds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"walletCreationPeriod\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletCreationMinBtcBalance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletCreationMaxBtcBalance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletClosureMinBtcBalance\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"walletMaxAge\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"walletMaxBtcTransfer\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"walletClosingPeriod\",\"type\":\"uint32\"}],\"name\":\"WalletParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"WalletTerminated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyY\",\"type\":\"bytes32\"}],\"name\":\"__ecdsaWalletCreatedCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"publicKeyY\",\"type\":\"bytes32\"}],\"name\":\"__ecdsaWalletHeartbeatFailedCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activeWalletPubKeyHash\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"contractReferences\",\"outputs\":[{\"internalType\":\"contractBank\",\"name\":\"bank\",\"type\":\"address\"},{\"internalType\":\"contractIRelay\",\"name\":\"relay\",\"type\":\"address\"},{\"internalType\":\"contractIWalletRegistry\",\"name\":\"ecdsaWalletRegistry\",\"type\":\"address\"},{\"internalType\":\"contractReimbursementPool\",\"name\":\"reimbursementPool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"preimage\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"witness\",\"type\":\"bool\"}],\"name\":\"defeatFraudChallenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"heartbeatMessage\",\"type\":\"bytes\"}],\"name\":\"defeatFraudChallengeWithHeartbeat\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositParameters\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"depositDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"depositKey\",\"type\":\"uint256\"}],\"name\":\"deposits\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"revealedAt\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"sweptAt\",\"type\":\"uint32\"}],\"internalType\":\"structDeposit.DepositRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengeKey\",\"type\":\"uint256\"}],\"name\":\"fraudChallenges\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"depositAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"reportedAt\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"resolved\",\"type\":\"bool\"}],\"internalType\":\"structFraud.FraudChallenge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fraudParameters\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"fraudChallengeDepositAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudChallengeDefeatTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"fraudSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bank\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_relay\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ecdsaWalletRegistry\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_reimbursementPool\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_txProofDifficultyFactor\",\"type\":\"uint96\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"isVaultTrusted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liveWalletsCount\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestKey\",\"type\":\"uint256\"}],\"name\":\"movedFundsSweepRequests\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"uint64\",\"name\":\"value\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"createdAt\",\"type\":\"uint32\"},{\"internalType\":\"enumMovingFunds.MovedFundsSweepRequestState\",\"name\":\"state\",\"type\":\"uint8\"}],\"internalType\":\"structMovingFunds.MovedFundsSweepRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"movingFundsParameters\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"movingFundsTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"movingFundsDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutResetDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movingFundsTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"movingFundsCommitmentGasOffset\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movedFundsSweepTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes\",\"name\":\"preimageSha256\",\"type\":\"bytes\"}],\"name\":\"notifyFraudChallengeDefeatTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"movingFundsTxHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTxOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"}],\"name\":\"notifyMovedFundsSweepTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"}],\"name\":\"notifyMovingFundsBelowDust\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"}],\"name\":\"notifyMovingFundsTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"}],\"name\":\"notifyRedemptionTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"walletMainUtxo\",\"type\":\"tuple\"}],\"name\":\"notifyWalletCloseable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"notifyWalletClosingPeriodElapsed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redemptionKey\",\"type\":\"uint256\"}],\"name\":\"pendingRedemptions\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestedAmount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"txMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"requestedAt\",\"type\":\"uint32\"}],\"internalType\":\"structRedemption.RedemptionRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"utxo\",\"type\":\"tuple\"}],\"name\":\"processPendingMovedFundsSweepRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"balanceOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"redemptionData\",\"type\":\"bytes\"}],\"name\":\"receiveBalanceApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"redemptionParameters\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"redemptionDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"redemptionTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"activeWalletMainUtxo\",\"type\":\"tuple\"}],\"name\":\"requestNewWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"}],\"name\":\"requestRedemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"resetMovingFundsTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"fundingTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"fundingOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"bytes8\",\"name\":\"blindingFactor\",\"type\":\"bytes8\"},{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"bytes20\",\"name\":\"refundPubKeyHash\",\"type\":\"bytes20\"},{\"internalType\":\"bytes4\",\"name\":\"refundLocktime\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"internalType\":\"structDeposit.DepositRevealInfo\",\"name\":\"reveal\",\"type\":\"tuple\"}],\"name\":\"revealDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"activeWalletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"setActiveWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_depositDustThreshold\",\"type\":\"uint64\"}],\"name\":\"setDepositDustThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"name\":\"setDepositRevealAheadPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_depositTxMaxFee\",\"type\":\"uint64\"}],\"name\":\"setDepositTxMaxFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"}],\"name\":\"setMovedFundsSweepTxMaxTotalFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"utxo\",\"type\":\"tuple\"}],\"name\":\"setPendingMovedFundsSweepRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO[]\",\"name\":\"utxos\",\"type\":\"tuple[]\"}],\"name\":\"setProcessedMovedFundsSweepRequests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_redemptionDustThreshold\",\"type\":\"uint64\"}],\"name\":\"setRedemptionDustThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"}],\"name\":\"setRedemptionTreasuryFeeDivisor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO[]\",\"name\":\"utxos\",\"type\":\"tuple[]\"}],\"name\":\"setSpentMainUtxos\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spvMaintainer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"setSpvMaintainerStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO[]\",\"name\":\"utxos\",\"type\":\"tuple[]\"}],\"name\":\"setSweptDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isTrusted\",\"type\":\"bool\"}],\"name\":\"setVaultStatus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mainUtxoHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"pendingRedemptionsValue\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"createdAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsRequestedAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"closingStartedAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"pendingMovedFundsSweepRequestsCount\",\"type\":\"uint32\"},{\"internalType\":\"enumWallets.WalletState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"movingFundsTargetWalletsCommitmentHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWallets.Wallet\",\"name\":\"wallet\",\"type\":\"tuple\"}],\"name\":\"setWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"utxo\",\"type\":\"tuple\"}],\"name\":\"setWalletMainUtxo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"utxoKey\",\"type\":\"uint256\"}],\"name\":\"spentMainUTXOs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"sweepTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"sweepProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"}],\"name\":\"submitDepositSweepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"walletPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"preimageSha256\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"internalType\":\"structBitcoinTx.RSVSignature\",\"name\":\"signature\",\"type\":\"tuple\"}],\"name\":\"submitFraudChallenge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"sweepTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"sweepProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"}],\"name\":\"submitMovedFundsSweepProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"walletMainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"uint32[]\",\"name\":\"walletMembersIDs\",\"type\":\"uint32[]\"},{\"internalType\":\"uint256\",\"name\":\"walletMemberIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes20[]\",\"name\":\"targetWallets\",\"type\":\"bytes20[]\"}],\"name\":\"submitMovingFundsCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"movingFundsTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"movingFundsProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"submitMovingFundsProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"inputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"outputVector\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"}],\"internalType\":\"structBitcoinTx.Info\",\"name\":\"redemptionTx\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"merkleProof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"txIndexInBlock\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bitcoinHeaders\",\"type\":\"bytes\"}],\"internalType\":\"structBitcoinTx.Proof\",\"name\":\"redemptionProof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"mainUtxo\",\"type\":\"tuple\"},{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"submitRedemptionProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"redemptionKey\",\"type\":\"uint256\"}],\"name\":\"timedOutRedemptions\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"redeemer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"requestedAmount\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"treasuryFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"txMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"requestedAt\",\"type\":\"uint32\"}],\"internalType\":\"structRedemption.RedemptionRequest\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"txOutputIndex\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"txOutputValue\",\"type\":\"uint64\"}],\"internalType\":\"structBitcoinTx.UTXO\",\"name\":\"utxo\",\"type\":\"tuple\"}],\"name\":\"timeoutPendingMovedFundsSweepRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernance\",\"type\":\"address\"}],\"name\":\"transferGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"txProofDifficultyFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"depositTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"depositRevealAheadPeriod\",\"type\":\"uint32\"}],\"name\":\"updateDepositParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"fraudChallengeDepositAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudChallengeDefeatTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"fraudSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"fraudNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"updateFraudParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"movingFundsTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"movingFundsDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutResetDelay\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movingFundsTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"movingFundsCommitmentGasOffset\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"movedFundsSweepTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"movedFundsSweepTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"movedFundsSweepTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"updateMovingFundsParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"redemptionDustThreshold\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTreasuryFeeDivisor\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxFee\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"redemptionTxMaxTotalFee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeout\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"redemptionTimeoutSlashingAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"redemptionTimeoutNotifierRewardMultiplier\",\"type\":\"uint32\"}],\"name\":\"updateRedemptionParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"name\":\"updateTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"walletCreationPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMaxBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletClosureMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletMaxAge\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletMaxBtcTransfer\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletClosingPeriod\",\"type\":\"uint32\"}],\"name\":\"updateWalletParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"walletParameters\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"walletCreationPeriod\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletCreationMaxBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"walletClosureMinBtcBalance\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletMaxAge\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"walletMaxBtcTransfer\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"walletClosingPeriod\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes20\",\"name\":\"walletPubKeyHash\",\"type\":\"bytes20\"}],\"name\":\"wallets\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"ecdsaWalletID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mainUtxoHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"pendingRedemptionsValue\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"createdAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"movingFundsRequestedAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"closingStartedAt\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"pendingMovedFundsSweepRequestsCount\",\"type\":\"uint32\"},{\"internalType\":\"enumWallets.WalletState\",\"name\":\"state\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"movingFundsTargetWalletsCommitmentHash\",\"type\":\"bytes32\"}],\"internalType\":\"structWallets.Wallet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -1317,6 +1316,27 @@ func (_Bridge *BridgeTransactorSession) NotifyWalletClosingPeriodElapsed(walletP return _Bridge.Contract.NotifyWalletClosingPeriodElapsed(&_Bridge.TransactOpts, walletPubKeyHash) } +// ProcessPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x61879905. +// +// Solidity: function processPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactor) ProcessPendingMovedFundsSweepRequest(opts *bind.TransactOpts, walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "processPendingMovedFundsSweepRequest", walletPubKeyHash, utxo) +} + +// ProcessPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x61879905. +// +// Solidity: function processPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeSession) ProcessPendingMovedFundsSweepRequest(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.ProcessPendingMovedFundsSweepRequest(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + +// ProcessPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x61879905. +// +// Solidity: function processPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactorSession) ProcessPendingMovedFundsSweepRequest(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.ProcessPendingMovedFundsSweepRequest(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + // ReceiveBalanceApproval is a paid mutator transaction binding the contract method 0x475d0570. // // Solidity: function receiveBalanceApproval(address balanceOwner, uint256 amount, bytes redemptionData) returns() @@ -1401,27 +1421,237 @@ func (_Bridge *BridgeTransactorSession) ResetMovingFundsTimeout(walletPubKeyHash return _Bridge.Contract.ResetMovingFundsTimeout(&_Bridge.TransactOpts, walletPubKeyHash) } -// RevealDeposit is a paid mutator transaction binding the contract method 0x5c0b4812. +// RevealDeposit is a paid mutator transaction binding the contract method 0xfca4ba4c. // -// Solidity: function revealDeposit((bytes4,bytes,bytes,bytes4) fundingTx, (uint32,address,bytes8,bytes20,bytes20,bytes4,address) reveal) returns() +// Solidity: function revealDeposit((bytes4,bytes,bytes,bytes4) fundingTx, (uint32,bytes8,bytes20,bytes20,bytes4,address) reveal) returns() func (_Bridge *BridgeTransactor) RevealDeposit(opts *bind.TransactOpts, fundingTx BitcoinTxInfo, reveal DepositDepositRevealInfo) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "revealDeposit", fundingTx, reveal) } -// RevealDeposit is a paid mutator transaction binding the contract method 0x5c0b4812. +// RevealDeposit is a paid mutator transaction binding the contract method 0xfca4ba4c. // -// Solidity: function revealDeposit((bytes4,bytes,bytes,bytes4) fundingTx, (uint32,address,bytes8,bytes20,bytes20,bytes4,address) reveal) returns() +// Solidity: function revealDeposit((bytes4,bytes,bytes,bytes4) fundingTx, (uint32,bytes8,bytes20,bytes20,bytes4,address) reveal) returns() func (_Bridge *BridgeSession) RevealDeposit(fundingTx BitcoinTxInfo, reveal DepositDepositRevealInfo) (*types.Transaction, error) { return _Bridge.Contract.RevealDeposit(&_Bridge.TransactOpts, fundingTx, reveal) } -// RevealDeposit is a paid mutator transaction binding the contract method 0x5c0b4812. +// RevealDeposit is a paid mutator transaction binding the contract method 0xfca4ba4c. // -// Solidity: function revealDeposit((bytes4,bytes,bytes,bytes4) fundingTx, (uint32,address,bytes8,bytes20,bytes20,bytes4,address) reveal) returns() +// Solidity: function revealDeposit((bytes4,bytes,bytes,bytes4) fundingTx, (uint32,bytes8,bytes20,bytes20,bytes4,address) reveal) returns() func (_Bridge *BridgeTransactorSession) RevealDeposit(fundingTx BitcoinTxInfo, reveal DepositDepositRevealInfo) (*types.Transaction, error) { return _Bridge.Contract.RevealDeposit(&_Bridge.TransactOpts, fundingTx, reveal) } +// SetActiveWallet is a paid mutator transaction binding the contract method 0xdf7cd4ae. +// +// Solidity: function setActiveWallet(bytes20 activeWalletPubKeyHash) returns() +func (_Bridge *BridgeTransactor) SetActiveWallet(opts *bind.TransactOpts, activeWalletPubKeyHash [20]byte) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setActiveWallet", activeWalletPubKeyHash) +} + +// SetActiveWallet is a paid mutator transaction binding the contract method 0xdf7cd4ae. +// +// Solidity: function setActiveWallet(bytes20 activeWalletPubKeyHash) returns() +func (_Bridge *BridgeSession) SetActiveWallet(activeWalletPubKeyHash [20]byte) (*types.Transaction, error) { + return _Bridge.Contract.SetActiveWallet(&_Bridge.TransactOpts, activeWalletPubKeyHash) +} + +// SetActiveWallet is a paid mutator transaction binding the contract method 0xdf7cd4ae. +// +// Solidity: function setActiveWallet(bytes20 activeWalletPubKeyHash) returns() +func (_Bridge *BridgeTransactorSession) SetActiveWallet(activeWalletPubKeyHash [20]byte) (*types.Transaction, error) { + return _Bridge.Contract.SetActiveWallet(&_Bridge.TransactOpts, activeWalletPubKeyHash) +} + +// SetDepositDustThreshold is a paid mutator transaction binding the contract method 0x59e6a456. +// +// Solidity: function setDepositDustThreshold(uint64 _depositDustThreshold) returns() +func (_Bridge *BridgeTransactor) SetDepositDustThreshold(opts *bind.TransactOpts, _depositDustThreshold uint64) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setDepositDustThreshold", _depositDustThreshold) +} + +// SetDepositDustThreshold is a paid mutator transaction binding the contract method 0x59e6a456. +// +// Solidity: function setDepositDustThreshold(uint64 _depositDustThreshold) returns() +func (_Bridge *BridgeSession) SetDepositDustThreshold(_depositDustThreshold uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetDepositDustThreshold(&_Bridge.TransactOpts, _depositDustThreshold) +} + +// SetDepositDustThreshold is a paid mutator transaction binding the contract method 0x59e6a456. +// +// Solidity: function setDepositDustThreshold(uint64 _depositDustThreshold) returns() +func (_Bridge *BridgeTransactorSession) SetDepositDustThreshold(_depositDustThreshold uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetDepositDustThreshold(&_Bridge.TransactOpts, _depositDustThreshold) +} + +// SetDepositRevealAheadPeriod is a paid mutator transaction binding the contract method 0x539c6322. +// +// Solidity: function setDepositRevealAheadPeriod(uint32 _depositRevealAheadPeriod) returns() +func (_Bridge *BridgeTransactor) SetDepositRevealAheadPeriod(opts *bind.TransactOpts, _depositRevealAheadPeriod uint32) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setDepositRevealAheadPeriod", _depositRevealAheadPeriod) +} + +// SetDepositRevealAheadPeriod is a paid mutator transaction binding the contract method 0x539c6322. +// +// Solidity: function setDepositRevealAheadPeriod(uint32 _depositRevealAheadPeriod) returns() +func (_Bridge *BridgeSession) SetDepositRevealAheadPeriod(_depositRevealAheadPeriod uint32) (*types.Transaction, error) { + return _Bridge.Contract.SetDepositRevealAheadPeriod(&_Bridge.TransactOpts, _depositRevealAheadPeriod) +} + +// SetDepositRevealAheadPeriod is a paid mutator transaction binding the contract method 0x539c6322. +// +// Solidity: function setDepositRevealAheadPeriod(uint32 _depositRevealAheadPeriod) returns() +func (_Bridge *BridgeTransactorSession) SetDepositRevealAheadPeriod(_depositRevealAheadPeriod uint32) (*types.Transaction, error) { + return _Bridge.Contract.SetDepositRevealAheadPeriod(&_Bridge.TransactOpts, _depositRevealAheadPeriod) +} + +// SetDepositTxMaxFee is a paid mutator transaction binding the contract method 0xb036c1ee. +// +// Solidity: function setDepositTxMaxFee(uint64 _depositTxMaxFee) returns() +func (_Bridge *BridgeTransactor) SetDepositTxMaxFee(opts *bind.TransactOpts, _depositTxMaxFee uint64) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setDepositTxMaxFee", _depositTxMaxFee) +} + +// SetDepositTxMaxFee is a paid mutator transaction binding the contract method 0xb036c1ee. +// +// Solidity: function setDepositTxMaxFee(uint64 _depositTxMaxFee) returns() +func (_Bridge *BridgeSession) SetDepositTxMaxFee(_depositTxMaxFee uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetDepositTxMaxFee(&_Bridge.TransactOpts, _depositTxMaxFee) +} + +// SetDepositTxMaxFee is a paid mutator transaction binding the contract method 0xb036c1ee. +// +// Solidity: function setDepositTxMaxFee(uint64 _depositTxMaxFee) returns() +func (_Bridge *BridgeTransactorSession) SetDepositTxMaxFee(_depositTxMaxFee uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetDepositTxMaxFee(&_Bridge.TransactOpts, _depositTxMaxFee) +} + +// SetMovedFundsSweepTxMaxTotalFee is a paid mutator transaction binding the contract method 0xf139b088. +// +// Solidity: function setMovedFundsSweepTxMaxTotalFee(uint64 _movedFundsSweepTxMaxTotalFee) returns() +func (_Bridge *BridgeTransactor) SetMovedFundsSweepTxMaxTotalFee(opts *bind.TransactOpts, _movedFundsSweepTxMaxTotalFee uint64) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setMovedFundsSweepTxMaxTotalFee", _movedFundsSweepTxMaxTotalFee) +} + +// SetMovedFundsSweepTxMaxTotalFee is a paid mutator transaction binding the contract method 0xf139b088. +// +// Solidity: function setMovedFundsSweepTxMaxTotalFee(uint64 _movedFundsSweepTxMaxTotalFee) returns() +func (_Bridge *BridgeSession) SetMovedFundsSweepTxMaxTotalFee(_movedFundsSweepTxMaxTotalFee uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetMovedFundsSweepTxMaxTotalFee(&_Bridge.TransactOpts, _movedFundsSweepTxMaxTotalFee) +} + +// SetMovedFundsSweepTxMaxTotalFee is a paid mutator transaction binding the contract method 0xf139b088. +// +// Solidity: function setMovedFundsSweepTxMaxTotalFee(uint64 _movedFundsSweepTxMaxTotalFee) returns() +func (_Bridge *BridgeTransactorSession) SetMovedFundsSweepTxMaxTotalFee(_movedFundsSweepTxMaxTotalFee uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetMovedFundsSweepTxMaxTotalFee(&_Bridge.TransactOpts, _movedFundsSweepTxMaxTotalFee) +} + +// SetPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x07453444. +// +// Solidity: function setPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactor) SetPendingMovedFundsSweepRequest(opts *bind.TransactOpts, walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setPendingMovedFundsSweepRequest", walletPubKeyHash, utxo) +} + +// SetPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x07453444. +// +// Solidity: function setPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeSession) SetPendingMovedFundsSweepRequest(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetPendingMovedFundsSweepRequest(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + +// SetPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x07453444. +// +// Solidity: function setPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactorSession) SetPendingMovedFundsSweepRequest(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetPendingMovedFundsSweepRequest(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + +// SetProcessedMovedFundsSweepRequests is a paid mutator transaction binding the contract method 0xdccfb3b9. +// +// Solidity: function setProcessedMovedFundsSweepRequests((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeTransactor) SetProcessedMovedFundsSweepRequests(opts *bind.TransactOpts, utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setProcessedMovedFundsSweepRequests", utxos) +} + +// SetProcessedMovedFundsSweepRequests is a paid mutator transaction binding the contract method 0xdccfb3b9. +// +// Solidity: function setProcessedMovedFundsSweepRequests((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeSession) SetProcessedMovedFundsSweepRequests(utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetProcessedMovedFundsSweepRequests(&_Bridge.TransactOpts, utxos) +} + +// SetProcessedMovedFundsSweepRequests is a paid mutator transaction binding the contract method 0xdccfb3b9. +// +// Solidity: function setProcessedMovedFundsSweepRequests((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeTransactorSession) SetProcessedMovedFundsSweepRequests(utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetProcessedMovedFundsSweepRequests(&_Bridge.TransactOpts, utxos) +} + +// SetRedemptionDustThreshold is a paid mutator transaction binding the contract method 0x3c0038f4. +// +// Solidity: function setRedemptionDustThreshold(uint64 _redemptionDustThreshold) returns() +func (_Bridge *BridgeTransactor) SetRedemptionDustThreshold(opts *bind.TransactOpts, _redemptionDustThreshold uint64) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setRedemptionDustThreshold", _redemptionDustThreshold) +} + +// SetRedemptionDustThreshold is a paid mutator transaction binding the contract method 0x3c0038f4. +// +// Solidity: function setRedemptionDustThreshold(uint64 _redemptionDustThreshold) returns() +func (_Bridge *BridgeSession) SetRedemptionDustThreshold(_redemptionDustThreshold uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetRedemptionDustThreshold(&_Bridge.TransactOpts, _redemptionDustThreshold) +} + +// SetRedemptionDustThreshold is a paid mutator transaction binding the contract method 0x3c0038f4. +// +// Solidity: function setRedemptionDustThreshold(uint64 _redemptionDustThreshold) returns() +func (_Bridge *BridgeTransactorSession) SetRedemptionDustThreshold(_redemptionDustThreshold uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetRedemptionDustThreshold(&_Bridge.TransactOpts, _redemptionDustThreshold) +} + +// SetRedemptionTreasuryFeeDivisor is a paid mutator transaction binding the contract method 0x6c854186. +// +// Solidity: function setRedemptionTreasuryFeeDivisor(uint64 _redemptionTreasuryFeeDivisor) returns() +func (_Bridge *BridgeTransactor) SetRedemptionTreasuryFeeDivisor(opts *bind.TransactOpts, _redemptionTreasuryFeeDivisor uint64) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setRedemptionTreasuryFeeDivisor", _redemptionTreasuryFeeDivisor) +} + +// SetRedemptionTreasuryFeeDivisor is a paid mutator transaction binding the contract method 0x6c854186. +// +// Solidity: function setRedemptionTreasuryFeeDivisor(uint64 _redemptionTreasuryFeeDivisor) returns() +func (_Bridge *BridgeSession) SetRedemptionTreasuryFeeDivisor(_redemptionTreasuryFeeDivisor uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetRedemptionTreasuryFeeDivisor(&_Bridge.TransactOpts, _redemptionTreasuryFeeDivisor) +} + +// SetRedemptionTreasuryFeeDivisor is a paid mutator transaction binding the contract method 0x6c854186. +// +// Solidity: function setRedemptionTreasuryFeeDivisor(uint64 _redemptionTreasuryFeeDivisor) returns() +func (_Bridge *BridgeTransactorSession) SetRedemptionTreasuryFeeDivisor(_redemptionTreasuryFeeDivisor uint64) (*types.Transaction, error) { + return _Bridge.Contract.SetRedemptionTreasuryFeeDivisor(&_Bridge.TransactOpts, _redemptionTreasuryFeeDivisor) +} + +// SetSpentMainUtxos is a paid mutator transaction binding the contract method 0x74babd9c. +// +// Solidity: function setSpentMainUtxos((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeTransactor) SetSpentMainUtxos(opts *bind.TransactOpts, utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setSpentMainUtxos", utxos) +} + +// SetSpentMainUtxos is a paid mutator transaction binding the contract method 0x74babd9c. +// +// Solidity: function setSpentMainUtxos((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeSession) SetSpentMainUtxos(utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetSpentMainUtxos(&_Bridge.TransactOpts, utxos) +} + +// SetSpentMainUtxos is a paid mutator transaction binding the contract method 0x74babd9c. +// +// Solidity: function setSpentMainUtxos((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeTransactorSession) SetSpentMainUtxos(utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetSpentMainUtxos(&_Bridge.TransactOpts, utxos) +} + // SetSpvMaintainerStatus is a paid mutator transaction binding the contract method 0x5f2b2d0d. // // Solidity: function setSpvMaintainerStatus(address spvMaintainer, bool isTrusted) returns() @@ -1443,6 +1673,27 @@ func (_Bridge *BridgeTransactorSession) SetSpvMaintainerStatus(spvMaintainer com return _Bridge.Contract.SetSpvMaintainerStatus(&_Bridge.TransactOpts, spvMaintainer, isTrusted) } +// SetSweptDeposits is a paid mutator transaction binding the contract method 0xb8afb0a5. +// +// Solidity: function setSweptDeposits((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeTransactor) SetSweptDeposits(opts *bind.TransactOpts, utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setSweptDeposits", utxos) +} + +// SetSweptDeposits is a paid mutator transaction binding the contract method 0xb8afb0a5. +// +// Solidity: function setSweptDeposits((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeSession) SetSweptDeposits(utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetSweptDeposits(&_Bridge.TransactOpts, utxos) +} + +// SetSweptDeposits is a paid mutator transaction binding the contract method 0xb8afb0a5. +// +// Solidity: function setSweptDeposits((bytes32,uint32,uint64)[] utxos) returns() +func (_Bridge *BridgeTransactorSession) SetSweptDeposits(utxos []BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetSweptDeposits(&_Bridge.TransactOpts, utxos) +} + // SetVaultStatus is a paid mutator transaction binding the contract method 0x60d712fc. // // Solidity: function setVaultStatus(address vault, bool isTrusted) returns() @@ -1464,6 +1715,48 @@ func (_Bridge *BridgeTransactorSession) SetVaultStatus(vault common.Address, isT return _Bridge.Contract.SetVaultStatus(&_Bridge.TransactOpts, vault, isTrusted) } +// SetWallet is a paid mutator transaction binding the contract method 0xb95b947d. +// +// Solidity: function setWallet(bytes20 walletPubKeyHash, (bytes32,bytes32,uint64,uint32,uint32,uint32,uint32,uint8,bytes32) wallet) returns() +func (_Bridge *BridgeTransactor) SetWallet(opts *bind.TransactOpts, walletPubKeyHash [20]byte, wallet WalletsWallet) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setWallet", walletPubKeyHash, wallet) +} + +// SetWallet is a paid mutator transaction binding the contract method 0xb95b947d. +// +// Solidity: function setWallet(bytes20 walletPubKeyHash, (bytes32,bytes32,uint64,uint32,uint32,uint32,uint32,uint8,bytes32) wallet) returns() +func (_Bridge *BridgeSession) SetWallet(walletPubKeyHash [20]byte, wallet WalletsWallet) (*types.Transaction, error) { + return _Bridge.Contract.SetWallet(&_Bridge.TransactOpts, walletPubKeyHash, wallet) +} + +// SetWallet is a paid mutator transaction binding the contract method 0xb95b947d. +// +// Solidity: function setWallet(bytes20 walletPubKeyHash, (bytes32,bytes32,uint64,uint32,uint32,uint32,uint32,uint8,bytes32) wallet) returns() +func (_Bridge *BridgeTransactorSession) SetWallet(walletPubKeyHash [20]byte, wallet WalletsWallet) (*types.Transaction, error) { + return _Bridge.Contract.SetWallet(&_Bridge.TransactOpts, walletPubKeyHash, wallet) +} + +// SetWalletMainUtxo is a paid mutator transaction binding the contract method 0xe404c0a9. +// +// Solidity: function setWalletMainUtxo(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactor) SetWalletMainUtxo(opts *bind.TransactOpts, walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "setWalletMainUtxo", walletPubKeyHash, utxo) +} + +// SetWalletMainUtxo is a paid mutator transaction binding the contract method 0xe404c0a9. +// +// Solidity: function setWalletMainUtxo(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeSession) SetWalletMainUtxo(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetWalletMainUtxo(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + +// SetWalletMainUtxo is a paid mutator transaction binding the contract method 0xe404c0a9. +// +// Solidity: function setWalletMainUtxo(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactorSession) SetWalletMainUtxo(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.SetWalletMainUtxo(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + // SubmitDepositSweepProof is a paid mutator transaction binding the contract method 0x133cafc8. // // Solidity: function submitDepositSweepProof((bytes4,bytes,bytes,bytes4) sweepTx, (bytes,uint256,bytes) sweepProof, (bytes32,uint32,uint64) mainUtxo, address vault) returns() @@ -1590,6 +1883,27 @@ func (_Bridge *BridgeTransactorSession) SubmitRedemptionProof(redemptionTx Bitco return _Bridge.Contract.SubmitRedemptionProof(&_Bridge.TransactOpts, redemptionTx, redemptionProof, mainUtxo, walletPubKeyHash) } +// TimeoutPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x0bb7a73a. +// +// Solidity: function timeoutPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactor) TimeoutPendingMovedFundsSweepRequest(opts *bind.TransactOpts, walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "timeoutPendingMovedFundsSweepRequest", walletPubKeyHash, utxo) +} + +// TimeoutPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x0bb7a73a. +// +// Solidity: function timeoutPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeSession) TimeoutPendingMovedFundsSweepRequest(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.TimeoutPendingMovedFundsSweepRequest(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + +// TimeoutPendingMovedFundsSweepRequest is a paid mutator transaction binding the contract method 0x0bb7a73a. +// +// Solidity: function timeoutPendingMovedFundsSweepRequest(bytes20 walletPubKeyHash, (bytes32,uint32,uint64) utxo) returns() +func (_Bridge *BridgeTransactorSession) TimeoutPendingMovedFundsSweepRequest(walletPubKeyHash [20]byte, utxo BitcoinTxUTXO) (*types.Transaction, error) { + return _Bridge.Contract.TimeoutPendingMovedFundsSweepRequest(&_Bridge.TransactOpts, walletPubKeyHash, utxo) +} + // TransferGovernance is a paid mutator transaction binding the contract method 0xd38bfff4. // // Solidity: function transferGovernance(address newGovernance) returns() @@ -1695,6 +2009,27 @@ func (_Bridge *BridgeTransactorSession) UpdateRedemptionParameters(redemptionDus return _Bridge.Contract.UpdateRedemptionParameters(&_Bridge.TransactOpts, redemptionDustThreshold, redemptionTreasuryFeeDivisor, redemptionTxMaxFee, redemptionTxMaxTotalFee, redemptionTimeout, redemptionTimeoutSlashingAmount, redemptionTimeoutNotifierRewardMultiplier) } +// UpdateTreasury is a paid mutator transaction binding the contract method 0x7f51bb1f. +// +// Solidity: function updateTreasury(address treasury) returns() +func (_Bridge *BridgeTransactor) UpdateTreasury(opts *bind.TransactOpts, treasury common.Address) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "updateTreasury", treasury) +} + +// UpdateTreasury is a paid mutator transaction binding the contract method 0x7f51bb1f. +// +// Solidity: function updateTreasury(address treasury) returns() +func (_Bridge *BridgeSession) UpdateTreasury(treasury common.Address) (*types.Transaction, error) { + return _Bridge.Contract.UpdateTreasury(&_Bridge.TransactOpts, treasury) +} + +// UpdateTreasury is a paid mutator transaction binding the contract method 0x7f51bb1f. +// +// Solidity: function updateTreasury(address treasury) returns() +func (_Bridge *BridgeTransactorSession) UpdateTreasury(treasury common.Address) (*types.Transaction, error) { + return _Bridge.Contract.UpdateTreasury(&_Bridge.TransactOpts, treasury) +} + // UpdateWalletParameters is a paid mutator transaction binding the contract method 0x883d6a11. // // Solidity: function updateWalletParameters(uint32 walletCreationPeriod, uint64 walletCreationMinBtcBalance, uint64 walletCreationMaxBtcBalance, uint64 walletClosureMinBtcBalance, uint32 walletMaxAge, uint64 walletMaxBtcTransfer, uint32 walletClosingPeriod) returns() @@ -5172,6 +5507,140 @@ func (_Bridge *BridgeFilterer) ParseSpvMaintainerStatusUpdated(log types.Log) (* return event, nil } +// BridgeTreasuryUpdatedIterator is returned from FilterTreasuryUpdated and is used to iterate over the raw logs and unpacked data for TreasuryUpdated events raised by the Bridge contract. +type BridgeTreasuryUpdatedIterator struct { + Event *BridgeTreasuryUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeTreasuryUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeTreasuryUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeTreasuryUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeTreasuryUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeTreasuryUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeTreasuryUpdated represents a TreasuryUpdated event raised by the Bridge contract. +type BridgeTreasuryUpdated struct { + Treasury common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTreasuryUpdated is a free log retrieval operation binding the contract event 0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1. +// +// Solidity: event TreasuryUpdated(address treasury) +func (_Bridge *BridgeFilterer) FilterTreasuryUpdated(opts *bind.FilterOpts) (*BridgeTreasuryUpdatedIterator, error) { + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "TreasuryUpdated") + if err != nil { + return nil, err + } + return &BridgeTreasuryUpdatedIterator{contract: _Bridge.contract, event: "TreasuryUpdated", logs: logs, sub: sub}, nil +} + +// WatchTreasuryUpdated is a free log subscription operation binding the contract event 0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1. +// +// Solidity: event TreasuryUpdated(address treasury) +func (_Bridge *BridgeFilterer) WatchTreasuryUpdated(opts *bind.WatchOpts, sink chan<- *BridgeTreasuryUpdated) (event.Subscription, error) { + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "TreasuryUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeTreasuryUpdated) + if err := _Bridge.contract.UnpackLog(event, "TreasuryUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTreasuryUpdated is a log parse operation binding the contract event 0x7dae230f18360d76a040c81f050aa14eb9d6dc7901b20fc5d855e2a20fe814d1. +// +// Solidity: event TreasuryUpdated(address treasury) +func (_Bridge *BridgeFilterer) ParseTreasuryUpdated(log types.Log) (*BridgeTreasuryUpdated, error) { + event := new(BridgeTreasuryUpdated) + if err := _Bridge.contract.UnpackLog(event, "TreasuryUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // BridgeVaultStatusUpdatedIterator is returned from FilterVaultStatusUpdated and is used to iterate over the raw logs and unpacked data for VaultStatusUpdated events raised by the Bridge contract. type BridgeVaultStatusUpdatedIterator struct { Event *BridgeVaultStatusUpdated // Event containing the contract specifics and raw log diff --git a/pkg/chain/ethereum/tbtc/gen/cmd/Bridge.go b/pkg/chain/ethereum/tbtc/gen/cmd/Bridge.go index 6c2306eb37..efa943d70e 100644 --- a/pkg/chain/ethereum/tbtc/gen/cmd/Bridge.go +++ b/pkg/chain/ethereum/tbtc/gen/cmd/Bridge.go @@ -76,6 +76,12 @@ func init() { bReceiveBalanceApprovalCommand(), bRequestNewWalletCommand(), bRevealDepositCommand(), + bSetDepositDustThresholdCommand(), + bSetDepositRevealAheadPeriodCommand(), + bSetDepositTxMaxFeeCommand(), + bSetMovedFundsSweepTxMaxTotalFeeCommand(), + bSetRedemptionDustThresholdCommand(), + bSetRedemptionTreasuryFeeDivisorCommand(), bSetSpvMaintainerStatusCommand(), bSetVaultStatusCommand(), bSubmitDepositSweepProofCommand(), @@ -86,6 +92,7 @@ func init() { bUpdateFraudParametersCommand(), bUpdateMovingFundsParametersCommand(), bUpdateRedemptionParametersCommand(), + bUpdateTreasuryCommand(), bUpdateWalletParametersCommand(), ) @@ -844,6 +851,11 @@ func bDefeatFraudChallenge(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -913,6 +925,11 @@ func bDefeatFraudChallengeWithHeartbeat(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1018,6 +1035,11 @@ func bInitialize(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1096,6 +1118,11 @@ func bReceiveBalanceApproval(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1153,6 +1180,11 @@ func bRequestNewWallet(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1217,6 +1249,401 @@ func bRevealDeposit(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bSetDepositDustThresholdCommand() *cobra.Command { + c := &cobra.Command{ + Use: "set-deposit-dust-threshold [arg__depositDustThreshold]", + Short: "Calls the nonpayable method setDepositDustThreshold on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bSetDepositDustThreshold, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bSetDepositDustThreshold(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg__depositDustThreshold, err := decode.ParseUint[uint64](args[0], 64) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg__depositDustThreshold, a uint64, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.SetDepositDustThreshold( + arg__depositDustThreshold, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallSetDepositDustThreshold( + arg__depositDustThreshold, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bSetDepositRevealAheadPeriodCommand() *cobra.Command { + c := &cobra.Command{ + Use: "set-deposit-reveal-ahead-period [arg__depositRevealAheadPeriod]", + Short: "Calls the nonpayable method setDepositRevealAheadPeriod on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bSetDepositRevealAheadPeriod, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bSetDepositRevealAheadPeriod(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg__depositRevealAheadPeriod, err := decode.ParseUint[uint32](args[0], 32) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg__depositRevealAheadPeriod, a uint32, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.SetDepositRevealAheadPeriod( + arg__depositRevealAheadPeriod, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallSetDepositRevealAheadPeriod( + arg__depositRevealAheadPeriod, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bSetDepositTxMaxFeeCommand() *cobra.Command { + c := &cobra.Command{ + Use: "set-deposit-tx-max-fee [arg__depositTxMaxFee]", + Short: "Calls the nonpayable method setDepositTxMaxFee on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bSetDepositTxMaxFee, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bSetDepositTxMaxFee(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg__depositTxMaxFee, err := decode.ParseUint[uint64](args[0], 64) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg__depositTxMaxFee, a uint64, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.SetDepositTxMaxFee( + arg__depositTxMaxFee, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallSetDepositTxMaxFee( + arg__depositTxMaxFee, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bSetMovedFundsSweepTxMaxTotalFeeCommand() *cobra.Command { + c := &cobra.Command{ + Use: "set-moved-funds-sweep-tx-max-total-fee [arg__movedFundsSweepTxMaxTotalFee]", + Short: "Calls the nonpayable method setMovedFundsSweepTxMaxTotalFee on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bSetMovedFundsSweepTxMaxTotalFee, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bSetMovedFundsSweepTxMaxTotalFee(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg__movedFundsSweepTxMaxTotalFee, err := decode.ParseUint[uint64](args[0], 64) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg__movedFundsSweepTxMaxTotalFee, a uint64, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.SetMovedFundsSweepTxMaxTotalFee( + arg__movedFundsSweepTxMaxTotalFee, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallSetMovedFundsSweepTxMaxTotalFee( + arg__movedFundsSweepTxMaxTotalFee, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bSetRedemptionDustThresholdCommand() *cobra.Command { + c := &cobra.Command{ + Use: "set-redemption-dust-threshold [arg__redemptionDustThreshold]", + Short: "Calls the nonpayable method setRedemptionDustThreshold on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bSetRedemptionDustThreshold, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bSetRedemptionDustThreshold(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg__redemptionDustThreshold, err := decode.ParseUint[uint64](args[0], 64) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg__redemptionDustThreshold, a uint64, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.SetRedemptionDustThreshold( + arg__redemptionDustThreshold, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallSetRedemptionDustThreshold( + arg__redemptionDustThreshold, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bSetRedemptionTreasuryFeeDivisorCommand() *cobra.Command { + c := &cobra.Command{ + Use: "set-redemption-treasury-fee-divisor [arg__redemptionTreasuryFeeDivisor]", + Short: "Calls the nonpayable method setRedemptionTreasuryFeeDivisor on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bSetRedemptionTreasuryFeeDivisor, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bSetRedemptionTreasuryFeeDivisor(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg__redemptionTreasuryFeeDivisor, err := decode.ParseUint[uint64](args[0], 64) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg__redemptionTreasuryFeeDivisor, a uint64, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.SetRedemptionTreasuryFeeDivisor( + arg__redemptionTreasuryFeeDivisor, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallSetRedemptionTreasuryFeeDivisor( + arg__redemptionTreasuryFeeDivisor, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1286,6 +1713,11 @@ func bSetSpvMaintainerStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1355,6 +1787,11 @@ func bSetVaultStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1435,6 +1872,11 @@ func bSubmitDepositSweepProof(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1511,6 +1953,11 @@ func bSubmitFraudChallenge(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1582,6 +2029,11 @@ func bSubmitMovedFundsSweepProof(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1642,6 +2094,11 @@ func bTransferGovernance(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1729,6 +2186,11 @@ func bUpdateDepositParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1816,6 +2278,11 @@ func bUpdateFraudParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1966,6 +2433,11 @@ func bUpdateMovingFundsParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2080,6 +2552,76 @@ func bUpdateRedemptionParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) + } + + return nil +} + +func bUpdateTreasuryCommand() *cobra.Command { + c := &cobra.Command{ + Use: "update-treasury [arg_treasury]", + Short: "Calls the nonpayable method updateTreasury on the Bridge contract.", + Args: cmd.ArgCountChecker(1), + RunE: bUpdateTreasury, + SilenceUsage: true, + DisableFlagsInUseLine: true, + } + + c.PreRunE = cmd.NonConstArgsChecker + cmd.InitNonConstFlags(c) + + return c +} + +func bUpdateTreasury(c *cobra.Command, args []string) error { + contract, err := initializeBridge(c) + if err != nil { + return err + } + + arg_treasury, err := chainutil.AddressFromHex(args[0]) + if err != nil { + return fmt.Errorf( + "couldn't parse parameter arg_treasury, a address, from passed value %v", + args[0], + ) + } + + var ( + transaction *types.Transaction + ) + + if shouldSubmit, _ := c.Flags().GetBool(cmd.SubmitFlag); shouldSubmit { + // Do a regular submission. Take payable into account. + transaction, err = contract.UpdateTreasury( + arg_treasury, + ) + if err != nil { + return err + } + + cmd.PrintOutput(transaction.Hash()) + } else { + // Do a call. + err = contract.CallUpdateTreasury( + arg_treasury, + cmd.BlockFlagValue.Int, + ) + if err != nil { + return err + } + + cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2194,6 +2736,11 @@ func bUpdateWalletParameters(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil diff --git a/pkg/chain/ethereum/tbtc/gen/cmd/LightRelay.go b/pkg/chain/ethereum/tbtc/gen/cmd/LightRelay.go index f67ff05698..721e19da72 100644 --- a/pkg/chain/ethereum/tbtc/gen/cmd/LightRelay.go +++ b/pkg/chain/ethereum/tbtc/gen/cmd/LightRelay.go @@ -648,6 +648,11 @@ func lrAuthorize(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -708,6 +713,11 @@ func lrDeauthorize(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -786,6 +796,11 @@ func lrGenesis(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -835,6 +850,11 @@ func lrRenounceOwnership(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -895,6 +915,11 @@ func lrRetarget(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -955,6 +980,11 @@ func lrSetAuthorizationStatus(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1015,6 +1045,11 @@ func lrSetProofLength(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1075,6 +1110,11 @@ func lrTransferOwnership(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil diff --git a/pkg/chain/ethereum/tbtc/gen/contract/Bridge.go b/pkg/chain/ethereum/tbtc/gen/contract/Bridge.go index 9ee5379bb8..5311f1efe8 100644 --- a/pkg/chain/ethereum/tbtc/gen/contract/Bridge.go +++ b/pkg/chain/ethereum/tbtc/gen/contract/Bridge.go @@ -1970,6 +1970,154 @@ func (b *Bridge) NotifyWalletClosingPeriodElapsedGasEstimate( return result, err } +// Transaction submission. +func (b *Bridge) ProcessPendingMovedFundsSweepRequest( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction processPendingMovedFundsSweepRequest", + " params: ", + fmt.Sprint( + arg_walletPubKeyHash, + arg_utxo, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.ProcessPendingMovedFundsSweepRequest( + transactorOptions, + arg_walletPubKeyHash, + arg_utxo, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "processPendingMovedFundsSweepRequest", + arg_walletPubKeyHash, + arg_utxo, + ) + } + + bLogger.Infof( + "submitted transaction processPendingMovedFundsSweepRequest with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.ProcessPendingMovedFundsSweepRequest( + newTransactorOptions, + arg_walletPubKeyHash, + arg_utxo, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "processPendingMovedFundsSweepRequest", + arg_walletPubKeyHash, + arg_utxo, + ) + } + + bLogger.Infof( + "submitted transaction processPendingMovedFundsSweepRequest with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallProcessPendingMovedFundsSweepRequest( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "processPendingMovedFundsSweepRequest", + &result, + arg_walletPubKeyHash, + arg_utxo, + ) + + return err +} + +func (b *Bridge) ProcessPendingMovedFundsSweepRequestGasEstimate( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "processPendingMovedFundsSweepRequest", + b.contractABI, + b.transactor, + arg_walletPubKeyHash, + arg_utxo, + ) + + return result, err +} + // Transaction submission. func (b *Bridge) ReceiveBalanceApproval( arg_balanceOwner common.Address, @@ -2721,18 +2869,16 @@ func (b *Bridge) RevealDepositGasEstimate( } // Transaction submission. -func (b *Bridge) SetSpvMaintainerStatus( - arg_spvMaintainer common.Address, - arg_isTrusted bool, +func (b *Bridge) SetActiveWallet( + arg_activeWalletPubKeyHash [20]byte, transactionOptions ...chainutil.TransactionOptions, ) (*types.Transaction, error) { bLogger.Debug( - "submitting transaction setSpvMaintainerStatus", + "submitting transaction setActiveWallet", " params: ", fmt.Sprint( - arg_spvMaintainer, - arg_isTrusted, + arg_activeWalletPubKeyHash, ), ) @@ -2758,24 +2904,22 @@ func (b *Bridge) SetSpvMaintainerStatus( transactorOptions.Nonce = new(big.Int).SetUint64(nonce) - transaction, err := b.contract.SetSpvMaintainerStatus( + transaction, err := b.contract.SetActiveWallet( transactorOptions, - arg_spvMaintainer, - arg_isTrusted, + arg_activeWalletPubKeyHash, ) if err != nil { return transaction, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "setSpvMaintainerStatus", - arg_spvMaintainer, - arg_isTrusted, + "setActiveWallet", + arg_activeWalletPubKeyHash, ) } bLogger.Infof( - "submitted transaction setSpvMaintainerStatus with id: [%s] and nonce [%v]", + "submitted transaction setActiveWallet with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -2794,24 +2938,22 @@ func (b *Bridge) SetSpvMaintainerStatus( newTransactorOptions.GasLimit = transactorOptions.GasLimit } - transaction, err := b.contract.SetSpvMaintainerStatus( + transaction, err := b.contract.SetActiveWallet( newTransactorOptions, - arg_spvMaintainer, - arg_isTrusted, + arg_activeWalletPubKeyHash, ) if err != nil { return nil, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "setSpvMaintainerStatus", - arg_spvMaintainer, - arg_isTrusted, + "setActiveWallet", + arg_activeWalletPubKeyHash, ) } bLogger.Infof( - "submitted transaction setSpvMaintainerStatus with id: [%s] and nonce [%v]", + "submitted transaction setActiveWallet with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -2826,9 +2968,8 @@ func (b *Bridge) SetSpvMaintainerStatus( } // Non-mutating call, not a transaction submission. -func (b *Bridge) CallSetSpvMaintainerStatus( - arg_spvMaintainer common.Address, - arg_isTrusted bool, +func (b *Bridge) CallSetActiveWallet( + arg_activeWalletPubKeyHash [20]byte, blockNumber *big.Int, ) error { var result interface{} = nil @@ -2840,47 +2981,42 @@ func (b *Bridge) CallSetSpvMaintainerStatus( b.caller, b.errorResolver, b.contractAddress, - "setSpvMaintainerStatus", + "setActiveWallet", &result, - arg_spvMaintainer, - arg_isTrusted, + arg_activeWalletPubKeyHash, ) return err } -func (b *Bridge) SetSpvMaintainerStatusGasEstimate( - arg_spvMaintainer common.Address, - arg_isTrusted bool, +func (b *Bridge) SetActiveWalletGasEstimate( + arg_activeWalletPubKeyHash [20]byte, ) (uint64, error) { var result uint64 result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "setSpvMaintainerStatus", + "setActiveWallet", b.contractABI, b.transactor, - arg_spvMaintainer, - arg_isTrusted, + arg_activeWalletPubKeyHash, ) return result, err } // Transaction submission. -func (b *Bridge) SetVaultStatus( - arg_vault common.Address, - arg_isTrusted bool, +func (b *Bridge) SetDepositDustThreshold( + arg__depositDustThreshold uint64, transactionOptions ...chainutil.TransactionOptions, ) (*types.Transaction, error) { bLogger.Debug( - "submitting transaction setVaultStatus", + "submitting transaction setDepositDustThreshold", " params: ", fmt.Sprint( - arg_vault, - arg_isTrusted, + arg__depositDustThreshold, ), ) @@ -2906,24 +3042,22 @@ func (b *Bridge) SetVaultStatus( transactorOptions.Nonce = new(big.Int).SetUint64(nonce) - transaction, err := b.contract.SetVaultStatus( + transaction, err := b.contract.SetDepositDustThreshold( transactorOptions, - arg_vault, - arg_isTrusted, + arg__depositDustThreshold, ) if err != nil { return transaction, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "setVaultStatus", - arg_vault, - arg_isTrusted, + "setDepositDustThreshold", + arg__depositDustThreshold, ) } bLogger.Infof( - "submitted transaction setVaultStatus with id: [%s] and nonce [%v]", + "submitted transaction setDepositDustThreshold with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -2942,24 +3076,22 @@ func (b *Bridge) SetVaultStatus( newTransactorOptions.GasLimit = transactorOptions.GasLimit } - transaction, err := b.contract.SetVaultStatus( + transaction, err := b.contract.SetDepositDustThreshold( newTransactorOptions, - arg_vault, - arg_isTrusted, + arg__depositDustThreshold, ) if err != nil { return nil, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "setVaultStatus", - arg_vault, - arg_isTrusted, + "setDepositDustThreshold", + arg__depositDustThreshold, ) } bLogger.Infof( - "submitted transaction setVaultStatus with id: [%s] and nonce [%v]", + "submitted transaction setDepositDustThreshold with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -2974,9 +3106,8 @@ func (b *Bridge) SetVaultStatus( } // Non-mutating call, not a transaction submission. -func (b *Bridge) CallSetVaultStatus( - arg_vault common.Address, - arg_isTrusted bool, +func (b *Bridge) CallSetDepositDustThreshold( + arg__depositDustThreshold uint64, blockNumber *big.Int, ) error { var result interface{} = nil @@ -2988,51 +3119,42 @@ func (b *Bridge) CallSetVaultStatus( b.caller, b.errorResolver, b.contractAddress, - "setVaultStatus", + "setDepositDustThreshold", &result, - arg_vault, - arg_isTrusted, + arg__depositDustThreshold, ) return err } -func (b *Bridge) SetVaultStatusGasEstimate( - arg_vault common.Address, - arg_isTrusted bool, +func (b *Bridge) SetDepositDustThresholdGasEstimate( + arg__depositDustThreshold uint64, ) (uint64, error) { var result uint64 result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "setVaultStatus", + "setDepositDustThreshold", b.contractABI, b.transactor, - arg_vault, - arg_isTrusted, + arg__depositDustThreshold, ) return result, err } // Transaction submission. -func (b *Bridge) SubmitDepositSweepProof( - arg_sweepTx abi.BitcoinTxInfo, - arg_sweepProof abi.BitcoinTxProof, - arg_mainUtxo abi.BitcoinTxUTXO, - arg_vault common.Address, +func (b *Bridge) SetDepositRevealAheadPeriod( + arg__depositRevealAheadPeriod uint32, transactionOptions ...chainutil.TransactionOptions, ) (*types.Transaction, error) { bLogger.Debug( - "submitting transaction submitDepositSweepProof", + "submitting transaction setDepositRevealAheadPeriod", " params: ", fmt.Sprint( - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + arg__depositRevealAheadPeriod, ), ) @@ -3058,28 +3180,22 @@ func (b *Bridge) SubmitDepositSweepProof( transactorOptions.Nonce = new(big.Int).SetUint64(nonce) - transaction, err := b.contract.SubmitDepositSweepProof( + transaction, err := b.contract.SetDepositRevealAheadPeriod( transactorOptions, - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + arg__depositRevealAheadPeriod, ) if err != nil { return transaction, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "submitDepositSweepProof", - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + "setDepositRevealAheadPeriod", + arg__depositRevealAheadPeriod, ) } bLogger.Infof( - "submitted transaction submitDepositSweepProof with id: [%s] and nonce [%v]", + "submitted transaction setDepositRevealAheadPeriod with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -3098,28 +3214,22 @@ func (b *Bridge) SubmitDepositSweepProof( newTransactorOptions.GasLimit = transactorOptions.GasLimit } - transaction, err := b.contract.SubmitDepositSweepProof( + transaction, err := b.contract.SetDepositRevealAheadPeriod( newTransactorOptions, - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + arg__depositRevealAheadPeriod, ) if err != nil { return nil, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "submitDepositSweepProof", - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + "setDepositRevealAheadPeriod", + arg__depositRevealAheadPeriod, ) } bLogger.Infof( - "submitted transaction submitDepositSweepProof with id: [%s] and nonce [%v]", + "submitted transaction setDepositRevealAheadPeriod with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -3134,11 +3244,8 @@ func (b *Bridge) SubmitDepositSweepProof( } // Non-mutating call, not a transaction submission. -func (b *Bridge) CallSubmitDepositSweepProof( - arg_sweepTx abi.BitcoinTxInfo, - arg_sweepProof abi.BitcoinTxProof, - arg_mainUtxo abi.BitcoinTxUTXO, - arg_vault common.Address, +func (b *Bridge) CallSetDepositRevealAheadPeriod( + arg__depositRevealAheadPeriod uint32, blockNumber *big.Int, ) error { var result interface{} = nil @@ -3150,55 +3257,42 @@ func (b *Bridge) CallSubmitDepositSweepProof( b.caller, b.errorResolver, b.contractAddress, - "submitDepositSweepProof", + "setDepositRevealAheadPeriod", &result, - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + arg__depositRevealAheadPeriod, ) return err } -func (b *Bridge) SubmitDepositSweepProofGasEstimate( - arg_sweepTx abi.BitcoinTxInfo, - arg_sweepProof abi.BitcoinTxProof, - arg_mainUtxo abi.BitcoinTxUTXO, - arg_vault common.Address, +func (b *Bridge) SetDepositRevealAheadPeriodGasEstimate( + arg__depositRevealAheadPeriod uint32, ) (uint64, error) { var result uint64 result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "submitDepositSweepProof", + "setDepositRevealAheadPeriod", b.contractABI, b.transactor, - arg_sweepTx, - arg_sweepProof, - arg_mainUtxo, - arg_vault, + arg__depositRevealAheadPeriod, ) return result, err } // Transaction submission. -func (b *Bridge) SubmitFraudChallenge( - arg_walletPublicKey []byte, - arg_preimageSha256 []byte, - arg_signature abi.BitcoinTxRSVSignature, +func (b *Bridge) SetDepositTxMaxFee( + arg__depositTxMaxFee uint64, transactionOptions ...chainutil.TransactionOptions, ) (*types.Transaction, error) { bLogger.Debug( - "submitting transaction submitFraudChallenge", + "submitting transaction setDepositTxMaxFee", " params: ", fmt.Sprint( - arg_walletPublicKey, - arg_preimageSha256, - arg_signature, + arg__depositTxMaxFee, ), ) @@ -3224,19 +3318,1897 @@ func (b *Bridge) SubmitFraudChallenge( transactorOptions.Nonce = new(big.Int).SetUint64(nonce) - transaction, err := b.contract.SubmitFraudChallenge( + transaction, err := b.contract.SetDepositTxMaxFee( transactorOptions, - arg_walletPublicKey, - arg_preimageSha256, - arg_signature, + arg__depositTxMaxFee, ) if err != nil { return transaction, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "submitFraudChallenge", - arg_walletPublicKey, + "setDepositTxMaxFee", + arg__depositTxMaxFee, + ) + } + + bLogger.Infof( + "submitted transaction setDepositTxMaxFee with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetDepositTxMaxFee( + newTransactorOptions, + arg__depositTxMaxFee, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setDepositTxMaxFee", + arg__depositTxMaxFee, + ) + } + + bLogger.Infof( + "submitted transaction setDepositTxMaxFee with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetDepositTxMaxFee( + arg__depositTxMaxFee uint64, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setDepositTxMaxFee", + &result, + arg__depositTxMaxFee, + ) + + return err +} + +func (b *Bridge) SetDepositTxMaxFeeGasEstimate( + arg__depositTxMaxFee uint64, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setDepositTxMaxFee", + b.contractABI, + b.transactor, + arg__depositTxMaxFee, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetMovedFundsSweepTxMaxTotalFee( + arg__movedFundsSweepTxMaxTotalFee uint64, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setMovedFundsSweepTxMaxTotalFee", + " params: ", + fmt.Sprint( + arg__movedFundsSweepTxMaxTotalFee, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetMovedFundsSweepTxMaxTotalFee( + transactorOptions, + arg__movedFundsSweepTxMaxTotalFee, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setMovedFundsSweepTxMaxTotalFee", + arg__movedFundsSweepTxMaxTotalFee, + ) + } + + bLogger.Infof( + "submitted transaction setMovedFundsSweepTxMaxTotalFee with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetMovedFundsSweepTxMaxTotalFee( + newTransactorOptions, + arg__movedFundsSweepTxMaxTotalFee, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setMovedFundsSweepTxMaxTotalFee", + arg__movedFundsSweepTxMaxTotalFee, + ) + } + + bLogger.Infof( + "submitted transaction setMovedFundsSweepTxMaxTotalFee with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetMovedFundsSweepTxMaxTotalFee( + arg__movedFundsSweepTxMaxTotalFee uint64, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setMovedFundsSweepTxMaxTotalFee", + &result, + arg__movedFundsSweepTxMaxTotalFee, + ) + + return err +} + +func (b *Bridge) SetMovedFundsSweepTxMaxTotalFeeGasEstimate( + arg__movedFundsSweepTxMaxTotalFee uint64, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setMovedFundsSweepTxMaxTotalFee", + b.contractABI, + b.transactor, + arg__movedFundsSweepTxMaxTotalFee, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetPendingMovedFundsSweepRequest( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setPendingMovedFundsSweepRequest", + " params: ", + fmt.Sprint( + arg_walletPubKeyHash, + arg_utxo, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetPendingMovedFundsSweepRequest( + transactorOptions, + arg_walletPubKeyHash, + arg_utxo, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setPendingMovedFundsSweepRequest", + arg_walletPubKeyHash, + arg_utxo, + ) + } + + bLogger.Infof( + "submitted transaction setPendingMovedFundsSweepRequest with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetPendingMovedFundsSweepRequest( + newTransactorOptions, + arg_walletPubKeyHash, + arg_utxo, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setPendingMovedFundsSweepRequest", + arg_walletPubKeyHash, + arg_utxo, + ) + } + + bLogger.Infof( + "submitted transaction setPendingMovedFundsSweepRequest with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetPendingMovedFundsSweepRequest( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setPendingMovedFundsSweepRequest", + &result, + arg_walletPubKeyHash, + arg_utxo, + ) + + return err +} + +func (b *Bridge) SetPendingMovedFundsSweepRequestGasEstimate( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setPendingMovedFundsSweepRequest", + b.contractABI, + b.transactor, + arg_walletPubKeyHash, + arg_utxo, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetProcessedMovedFundsSweepRequests( + arg_utxos []abi.BitcoinTxUTXO, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setProcessedMovedFundsSweepRequests", + " params: ", + fmt.Sprint( + arg_utxos, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetProcessedMovedFundsSweepRequests( + transactorOptions, + arg_utxos, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setProcessedMovedFundsSweepRequests", + arg_utxos, + ) + } + + bLogger.Infof( + "submitted transaction setProcessedMovedFundsSweepRequests with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetProcessedMovedFundsSweepRequests( + newTransactorOptions, + arg_utxos, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setProcessedMovedFundsSweepRequests", + arg_utxos, + ) + } + + bLogger.Infof( + "submitted transaction setProcessedMovedFundsSweepRequests with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetProcessedMovedFundsSweepRequests( + arg_utxos []abi.BitcoinTxUTXO, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setProcessedMovedFundsSweepRequests", + &result, + arg_utxos, + ) + + return err +} + +func (b *Bridge) SetProcessedMovedFundsSweepRequestsGasEstimate( + arg_utxos []abi.BitcoinTxUTXO, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setProcessedMovedFundsSweepRequests", + b.contractABI, + b.transactor, + arg_utxos, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetRedemptionDustThreshold( + arg__redemptionDustThreshold uint64, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setRedemptionDustThreshold", + " params: ", + fmt.Sprint( + arg__redemptionDustThreshold, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetRedemptionDustThreshold( + transactorOptions, + arg__redemptionDustThreshold, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setRedemptionDustThreshold", + arg__redemptionDustThreshold, + ) + } + + bLogger.Infof( + "submitted transaction setRedemptionDustThreshold with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetRedemptionDustThreshold( + newTransactorOptions, + arg__redemptionDustThreshold, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setRedemptionDustThreshold", + arg__redemptionDustThreshold, + ) + } + + bLogger.Infof( + "submitted transaction setRedemptionDustThreshold with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetRedemptionDustThreshold( + arg__redemptionDustThreshold uint64, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setRedemptionDustThreshold", + &result, + arg__redemptionDustThreshold, + ) + + return err +} + +func (b *Bridge) SetRedemptionDustThresholdGasEstimate( + arg__redemptionDustThreshold uint64, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setRedemptionDustThreshold", + b.contractABI, + b.transactor, + arg__redemptionDustThreshold, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetRedemptionTreasuryFeeDivisor( + arg__redemptionTreasuryFeeDivisor uint64, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setRedemptionTreasuryFeeDivisor", + " params: ", + fmt.Sprint( + arg__redemptionTreasuryFeeDivisor, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetRedemptionTreasuryFeeDivisor( + transactorOptions, + arg__redemptionTreasuryFeeDivisor, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setRedemptionTreasuryFeeDivisor", + arg__redemptionTreasuryFeeDivisor, + ) + } + + bLogger.Infof( + "submitted transaction setRedemptionTreasuryFeeDivisor with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetRedemptionTreasuryFeeDivisor( + newTransactorOptions, + arg__redemptionTreasuryFeeDivisor, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setRedemptionTreasuryFeeDivisor", + arg__redemptionTreasuryFeeDivisor, + ) + } + + bLogger.Infof( + "submitted transaction setRedemptionTreasuryFeeDivisor with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetRedemptionTreasuryFeeDivisor( + arg__redemptionTreasuryFeeDivisor uint64, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setRedemptionTreasuryFeeDivisor", + &result, + arg__redemptionTreasuryFeeDivisor, + ) + + return err +} + +func (b *Bridge) SetRedemptionTreasuryFeeDivisorGasEstimate( + arg__redemptionTreasuryFeeDivisor uint64, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setRedemptionTreasuryFeeDivisor", + b.contractABI, + b.transactor, + arg__redemptionTreasuryFeeDivisor, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetSpentMainUtxos( + arg_utxos []abi.BitcoinTxUTXO, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setSpentMainUtxos", + " params: ", + fmt.Sprint( + arg_utxos, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetSpentMainUtxos( + transactorOptions, + arg_utxos, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setSpentMainUtxos", + arg_utxos, + ) + } + + bLogger.Infof( + "submitted transaction setSpentMainUtxos with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetSpentMainUtxos( + newTransactorOptions, + arg_utxos, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setSpentMainUtxos", + arg_utxos, + ) + } + + bLogger.Infof( + "submitted transaction setSpentMainUtxos with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetSpentMainUtxos( + arg_utxos []abi.BitcoinTxUTXO, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setSpentMainUtxos", + &result, + arg_utxos, + ) + + return err +} + +func (b *Bridge) SetSpentMainUtxosGasEstimate( + arg_utxos []abi.BitcoinTxUTXO, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setSpentMainUtxos", + b.contractABI, + b.transactor, + arg_utxos, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetSpvMaintainerStatus( + arg_spvMaintainer common.Address, + arg_isTrusted bool, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setSpvMaintainerStatus", + " params: ", + fmt.Sprint( + arg_spvMaintainer, + arg_isTrusted, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetSpvMaintainerStatus( + transactorOptions, + arg_spvMaintainer, + arg_isTrusted, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setSpvMaintainerStatus", + arg_spvMaintainer, + arg_isTrusted, + ) + } + + bLogger.Infof( + "submitted transaction setSpvMaintainerStatus with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetSpvMaintainerStatus( + newTransactorOptions, + arg_spvMaintainer, + arg_isTrusted, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setSpvMaintainerStatus", + arg_spvMaintainer, + arg_isTrusted, + ) + } + + bLogger.Infof( + "submitted transaction setSpvMaintainerStatus with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetSpvMaintainerStatus( + arg_spvMaintainer common.Address, + arg_isTrusted bool, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setSpvMaintainerStatus", + &result, + arg_spvMaintainer, + arg_isTrusted, + ) + + return err +} + +func (b *Bridge) SetSpvMaintainerStatusGasEstimate( + arg_spvMaintainer common.Address, + arg_isTrusted bool, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setSpvMaintainerStatus", + b.contractABI, + b.transactor, + arg_spvMaintainer, + arg_isTrusted, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetSweptDeposits( + arg_utxos []abi.BitcoinTxUTXO, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setSweptDeposits", + " params: ", + fmt.Sprint( + arg_utxos, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetSweptDeposits( + transactorOptions, + arg_utxos, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setSweptDeposits", + arg_utxos, + ) + } + + bLogger.Infof( + "submitted transaction setSweptDeposits with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetSweptDeposits( + newTransactorOptions, + arg_utxos, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setSweptDeposits", + arg_utxos, + ) + } + + bLogger.Infof( + "submitted transaction setSweptDeposits with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetSweptDeposits( + arg_utxos []abi.BitcoinTxUTXO, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setSweptDeposits", + &result, + arg_utxos, + ) + + return err +} + +func (b *Bridge) SetSweptDepositsGasEstimate( + arg_utxos []abi.BitcoinTxUTXO, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setSweptDeposits", + b.contractABI, + b.transactor, + arg_utxos, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetVaultStatus( + arg_vault common.Address, + arg_isTrusted bool, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setVaultStatus", + " params: ", + fmt.Sprint( + arg_vault, + arg_isTrusted, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetVaultStatus( + transactorOptions, + arg_vault, + arg_isTrusted, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setVaultStatus", + arg_vault, + arg_isTrusted, + ) + } + + bLogger.Infof( + "submitted transaction setVaultStatus with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetVaultStatus( + newTransactorOptions, + arg_vault, + arg_isTrusted, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setVaultStatus", + arg_vault, + arg_isTrusted, + ) + } + + bLogger.Infof( + "submitted transaction setVaultStatus with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetVaultStatus( + arg_vault common.Address, + arg_isTrusted bool, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setVaultStatus", + &result, + arg_vault, + arg_isTrusted, + ) + + return err +} + +func (b *Bridge) SetVaultStatusGasEstimate( + arg_vault common.Address, + arg_isTrusted bool, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setVaultStatus", + b.contractABI, + b.transactor, + arg_vault, + arg_isTrusted, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetWallet( + arg_walletPubKeyHash [20]byte, + arg_wallet abi.WalletsWallet, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setWallet", + " params: ", + fmt.Sprint( + arg_walletPubKeyHash, + arg_wallet, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetWallet( + transactorOptions, + arg_walletPubKeyHash, + arg_wallet, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setWallet", + arg_walletPubKeyHash, + arg_wallet, + ) + } + + bLogger.Infof( + "submitted transaction setWallet with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetWallet( + newTransactorOptions, + arg_walletPubKeyHash, + arg_wallet, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setWallet", + arg_walletPubKeyHash, + arg_wallet, + ) + } + + bLogger.Infof( + "submitted transaction setWallet with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetWallet( + arg_walletPubKeyHash [20]byte, + arg_wallet abi.WalletsWallet, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setWallet", + &result, + arg_walletPubKeyHash, + arg_wallet, + ) + + return err +} + +func (b *Bridge) SetWalletGasEstimate( + arg_walletPubKeyHash [20]byte, + arg_wallet abi.WalletsWallet, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setWallet", + b.contractABI, + b.transactor, + arg_walletPubKeyHash, + arg_wallet, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SetWalletMainUtxo( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction setWalletMainUtxo", + " params: ", + fmt.Sprint( + arg_walletPubKeyHash, + arg_utxo, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SetWalletMainUtxo( + transactorOptions, + arg_walletPubKeyHash, + arg_utxo, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setWalletMainUtxo", + arg_walletPubKeyHash, + arg_utxo, + ) + } + + bLogger.Infof( + "submitted transaction setWalletMainUtxo with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SetWalletMainUtxo( + newTransactorOptions, + arg_walletPubKeyHash, + arg_utxo, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "setWalletMainUtxo", + arg_walletPubKeyHash, + arg_utxo, + ) + } + + bLogger.Infof( + "submitted transaction setWalletMainUtxo with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSetWalletMainUtxo( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "setWalletMainUtxo", + &result, + arg_walletPubKeyHash, + arg_utxo, + ) + + return err +} + +func (b *Bridge) SetWalletMainUtxoGasEstimate( + arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "setWalletMainUtxo", + b.contractABI, + b.transactor, + arg_walletPubKeyHash, + arg_utxo, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SubmitDepositSweepProof( + arg_sweepTx abi.BitcoinTxInfo, + arg_sweepProof abi.BitcoinTxProof, + arg_mainUtxo abi.BitcoinTxUTXO, + arg_vault common.Address, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction submitDepositSweepProof", + " params: ", + fmt.Sprint( + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SubmitDepositSweepProof( + transactorOptions, + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "submitDepositSweepProof", + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ) + } + + bLogger.Infof( + "submitted transaction submitDepositSweepProof with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SubmitDepositSweepProof( + newTransactorOptions, + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "submitDepositSweepProof", + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ) + } + + bLogger.Infof( + "submitted transaction submitDepositSweepProof with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSubmitDepositSweepProof( + arg_sweepTx abi.BitcoinTxInfo, + arg_sweepProof abi.BitcoinTxProof, + arg_mainUtxo abi.BitcoinTxUTXO, + arg_vault common.Address, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "submitDepositSweepProof", + &result, + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ) + + return err +} + +func (b *Bridge) SubmitDepositSweepProofGasEstimate( + arg_sweepTx abi.BitcoinTxInfo, + arg_sweepProof abi.BitcoinTxProof, + arg_mainUtxo abi.BitcoinTxUTXO, + arg_vault common.Address, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "submitDepositSweepProof", + b.contractABI, + b.transactor, + arg_sweepTx, + arg_sweepProof, + arg_mainUtxo, + arg_vault, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SubmitFraudChallenge( + arg_walletPublicKey []byte, + arg_preimageSha256 []byte, + arg_signature abi.BitcoinTxRSVSignature, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction submitFraudChallenge", + " params: ", + fmt.Sprint( + arg_walletPublicKey, + arg_preimageSha256, + arg_signature, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SubmitFraudChallenge( + transactorOptions, + arg_walletPublicKey, + arg_preimageSha256, + arg_signature, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "submitFraudChallenge", + arg_walletPublicKey, arg_preimageSha256, arg_signature, ) @@ -3814,8 +5786,176 @@ func (b *Bridge) CallSubmitMovingFundsProof( b.contractAddress, "submitMovingFundsProof", &result, - arg_movingFundsTx, - arg_movingFundsProof, + arg_movingFundsTx, + arg_movingFundsProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ) + + return err +} + +func (b *Bridge) SubmitMovingFundsProofGasEstimate( + arg_movingFundsTx abi.BitcoinTxInfo, + arg_movingFundsProof abi.BitcoinTxProof, + arg_mainUtxo abi.BitcoinTxUTXO, + arg_walletPubKeyHash [20]byte, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "submitMovingFundsProof", + b.contractABI, + b.transactor, + arg_movingFundsTx, + arg_movingFundsProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) SubmitRedemptionProof( + arg_redemptionTx abi.BitcoinTxInfo, + arg_redemptionProof abi.BitcoinTxProof, + arg_mainUtxo abi.BitcoinTxUTXO, + arg_walletPubKeyHash [20]byte, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction submitRedemptionProof", + " params: ", + fmt.Sprint( + arg_redemptionTx, + arg_redemptionProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.SubmitRedemptionProof( + transactorOptions, + arg_redemptionTx, + arg_redemptionProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "submitRedemptionProof", + arg_redemptionTx, + arg_redemptionProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ) + } + + bLogger.Infof( + "submitted transaction submitRedemptionProof with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.SubmitRedemptionProof( + newTransactorOptions, + arg_redemptionTx, + arg_redemptionProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "submitRedemptionProof", + arg_redemptionTx, + arg_redemptionProof, + arg_mainUtxo, + arg_walletPubKeyHash, + ) + } + + bLogger.Infof( + "submitted transaction submitRedemptionProof with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallSubmitRedemptionProof( + arg_redemptionTx abi.BitcoinTxInfo, + arg_redemptionProof abi.BitcoinTxProof, + arg_mainUtxo abi.BitcoinTxUTXO, + arg_walletPubKeyHash [20]byte, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "submitRedemptionProof", + &result, + arg_redemptionTx, + arg_redemptionProof, arg_mainUtxo, arg_walletPubKeyHash, ) @@ -3823,9 +5963,9 @@ func (b *Bridge) CallSubmitMovingFundsProof( return err } -func (b *Bridge) SubmitMovingFundsProofGasEstimate( - arg_movingFundsTx abi.BitcoinTxInfo, - arg_movingFundsProof abi.BitcoinTxProof, +func (b *Bridge) SubmitRedemptionProofGasEstimate( + arg_redemptionTx abi.BitcoinTxInfo, + arg_redemptionProof abi.BitcoinTxProof, arg_mainUtxo abi.BitcoinTxUTXO, arg_walletPubKeyHash [20]byte, ) (uint64, error) { @@ -3834,11 +5974,11 @@ func (b *Bridge) SubmitMovingFundsProofGasEstimate( result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "submitMovingFundsProof", + "submitRedemptionProof", b.contractABI, b.transactor, - arg_movingFundsTx, - arg_movingFundsProof, + arg_redemptionTx, + arg_redemptionProof, arg_mainUtxo, arg_walletPubKeyHash, ) @@ -3847,22 +5987,18 @@ func (b *Bridge) SubmitMovingFundsProofGasEstimate( } // Transaction submission. -func (b *Bridge) SubmitRedemptionProof( - arg_redemptionTx abi.BitcoinTxInfo, - arg_redemptionProof abi.BitcoinTxProof, - arg_mainUtxo abi.BitcoinTxUTXO, +func (b *Bridge) TimeoutPendingMovedFundsSweepRequest( arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, transactionOptions ...chainutil.TransactionOptions, ) (*types.Transaction, error) { bLogger.Debug( - "submitting transaction submitRedemptionProof", + "submitting transaction timeoutPendingMovedFundsSweepRequest", " params: ", fmt.Sprint( - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, arg_walletPubKeyHash, + arg_utxo, ), ) @@ -3888,28 +6024,24 @@ func (b *Bridge) SubmitRedemptionProof( transactorOptions.Nonce = new(big.Int).SetUint64(nonce) - transaction, err := b.contract.SubmitRedemptionProof( + transaction, err := b.contract.TimeoutPendingMovedFundsSweepRequest( transactorOptions, - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, arg_walletPubKeyHash, + arg_utxo, ) if err != nil { return transaction, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "submitRedemptionProof", - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, + "timeoutPendingMovedFundsSweepRequest", arg_walletPubKeyHash, + arg_utxo, ) } bLogger.Infof( - "submitted transaction submitRedemptionProof with id: [%s] and nonce [%v]", + "submitted transaction timeoutPendingMovedFundsSweepRequest with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -3928,28 +6060,24 @@ func (b *Bridge) SubmitRedemptionProof( newTransactorOptions.GasLimit = transactorOptions.GasLimit } - transaction, err := b.contract.SubmitRedemptionProof( + transaction, err := b.contract.TimeoutPendingMovedFundsSweepRequest( newTransactorOptions, - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, arg_walletPubKeyHash, + arg_utxo, ) if err != nil { return nil, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "submitRedemptionProof", - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, + "timeoutPendingMovedFundsSweepRequest", arg_walletPubKeyHash, + arg_utxo, ) } bLogger.Infof( - "submitted transaction submitRedemptionProof with id: [%s] and nonce [%v]", + "submitted transaction timeoutPendingMovedFundsSweepRequest with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -3964,11 +6092,9 @@ func (b *Bridge) SubmitRedemptionProof( } // Non-mutating call, not a transaction submission. -func (b *Bridge) CallSubmitRedemptionProof( - arg_redemptionTx abi.BitcoinTxInfo, - arg_redemptionProof abi.BitcoinTxProof, - arg_mainUtxo abi.BitcoinTxUTXO, +func (b *Bridge) CallTimeoutPendingMovedFundsSweepRequest( arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, blockNumber *big.Int, ) error { var result interface{} = nil @@ -3980,35 +6106,29 @@ func (b *Bridge) CallSubmitRedemptionProof( b.caller, b.errorResolver, b.contractAddress, - "submitRedemptionProof", + "timeoutPendingMovedFundsSweepRequest", &result, - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, arg_walletPubKeyHash, + arg_utxo, ) return err } -func (b *Bridge) SubmitRedemptionProofGasEstimate( - arg_redemptionTx abi.BitcoinTxInfo, - arg_redemptionProof abi.BitcoinTxProof, - arg_mainUtxo abi.BitcoinTxUTXO, +func (b *Bridge) TimeoutPendingMovedFundsSweepRequestGasEstimate( arg_walletPubKeyHash [20]byte, + arg_utxo abi.BitcoinTxUTXO, ) (uint64, error) { var result uint64 result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "submitRedemptionProof", + "timeoutPendingMovedFundsSweepRequest", b.contractABI, b.transactor, - arg_redemptionTx, - arg_redemptionProof, - arg_mainUtxo, arg_walletPubKeyHash, + arg_utxo, ) return result, err @@ -4707,48 +6827,234 @@ func (b *Bridge) UpdateMovingFundsParametersGasEstimate( result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "updateMovingFundsParameters", + "updateMovingFundsParameters", + b.contractABI, + b.transactor, + arg_movingFundsTxMaxTotalFee, + arg_movingFundsDustThreshold, + arg_movingFundsTimeoutResetDelay, + arg_movingFundsTimeout, + arg_movingFundsTimeoutSlashingAmount, + arg_movingFundsTimeoutNotifierRewardMultiplier, + arg_movingFundsCommitmentGasOffset, + arg_movedFundsSweepTxMaxTotalFee, + arg_movedFundsSweepTimeout, + arg_movedFundsSweepTimeoutSlashingAmount, + arg_movedFundsSweepTimeoutNotifierRewardMultiplier, + ) + + return result, err +} + +// Transaction submission. +func (b *Bridge) UpdateRedemptionParameters( + arg_redemptionDustThreshold uint64, + arg_redemptionTreasuryFeeDivisor uint64, + arg_redemptionTxMaxFee uint64, + arg_redemptionTxMaxTotalFee uint64, + arg_redemptionTimeout uint32, + arg_redemptionTimeoutSlashingAmount *big.Int, + arg_redemptionTimeoutNotifierRewardMultiplier uint32, + + transactionOptions ...chainutil.TransactionOptions, +) (*types.Transaction, error) { + bLogger.Debug( + "submitting transaction updateRedemptionParameters", + " params: ", + fmt.Sprint( + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, + ), + ) + + b.transactionMutex.Lock() + defer b.transactionMutex.Unlock() + + // create a copy + transactorOptions := new(bind.TransactOpts) + *transactorOptions = *b.transactorOptions + + if len(transactionOptions) > 1 { + return nil, fmt.Errorf( + "could not process multiple transaction options sets", + ) + } else if len(transactionOptions) > 0 { + transactionOptions[0].Apply(transactorOptions) + } + + nonce, err := b.nonceManager.CurrentNonce() + if err != nil { + return nil, fmt.Errorf("failed to retrieve account nonce: %v", err) + } + + transactorOptions.Nonce = new(big.Int).SetUint64(nonce) + + transaction, err := b.contract.UpdateRedemptionParameters( + transactorOptions, + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, + ) + if err != nil { + return transaction, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "updateRedemptionParameters", + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, + ) + } + + bLogger.Infof( + "submitted transaction updateRedemptionParameters with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + go b.miningWaiter.ForceMining( + transaction, + transactorOptions, + func(newTransactorOptions *bind.TransactOpts) (*types.Transaction, error) { + // If original transactor options has a non-zero gas limit, that + // means the client code set it on their own. In that case, we + // should rewrite the gas limit from the original transaction + // for each resubmission. If the gas limit is not set by the client + // code, let the the submitter re-estimate the gas limit on each + // resubmission. + if transactorOptions.GasLimit != 0 { + newTransactorOptions.GasLimit = transactorOptions.GasLimit + } + + transaction, err := b.contract.UpdateRedemptionParameters( + newTransactorOptions, + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, + ) + if err != nil { + return nil, b.errorResolver.ResolveError( + err, + b.transactorOptions.From, + nil, + "updateRedemptionParameters", + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, + ) + } + + bLogger.Infof( + "submitted transaction updateRedemptionParameters with id: [%s] and nonce [%v]", + transaction.Hash(), + transaction.Nonce(), + ) + + return transaction, nil + }, + ) + + b.nonceManager.IncrementNonce() + + return transaction, err +} + +// Non-mutating call, not a transaction submission. +func (b *Bridge) CallUpdateRedemptionParameters( + arg_redemptionDustThreshold uint64, + arg_redemptionTreasuryFeeDivisor uint64, + arg_redemptionTxMaxFee uint64, + arg_redemptionTxMaxTotalFee uint64, + arg_redemptionTimeout uint32, + arg_redemptionTimeoutSlashingAmount *big.Int, + arg_redemptionTimeoutNotifierRewardMultiplier uint32, + blockNumber *big.Int, +) error { + var result interface{} = nil + + err := chainutil.CallAtBlock( + b.transactorOptions.From, + blockNumber, nil, + b.contractABI, + b.caller, + b.errorResolver, + b.contractAddress, + "updateRedemptionParameters", + &result, + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, + ) + + return err +} + +func (b *Bridge) UpdateRedemptionParametersGasEstimate( + arg_redemptionDustThreshold uint64, + arg_redemptionTreasuryFeeDivisor uint64, + arg_redemptionTxMaxFee uint64, + arg_redemptionTxMaxTotalFee uint64, + arg_redemptionTimeout uint32, + arg_redemptionTimeoutSlashingAmount *big.Int, + arg_redemptionTimeoutNotifierRewardMultiplier uint32, +) (uint64, error) { + var result uint64 + + result, err := chainutil.EstimateGas( + b.callerOptions.From, + b.contractAddress, + "updateRedemptionParameters", b.contractABI, b.transactor, - arg_movingFundsTxMaxTotalFee, - arg_movingFundsDustThreshold, - arg_movingFundsTimeoutResetDelay, - arg_movingFundsTimeout, - arg_movingFundsTimeoutSlashingAmount, - arg_movingFundsTimeoutNotifierRewardMultiplier, - arg_movingFundsCommitmentGasOffset, - arg_movedFundsSweepTxMaxTotalFee, - arg_movedFundsSweepTimeout, - arg_movedFundsSweepTimeoutSlashingAmount, - arg_movedFundsSweepTimeoutNotifierRewardMultiplier, + arg_redemptionDustThreshold, + arg_redemptionTreasuryFeeDivisor, + arg_redemptionTxMaxFee, + arg_redemptionTxMaxTotalFee, + arg_redemptionTimeout, + arg_redemptionTimeoutSlashingAmount, + arg_redemptionTimeoutNotifierRewardMultiplier, ) return result, err } // Transaction submission. -func (b *Bridge) UpdateRedemptionParameters( - arg_redemptionDustThreshold uint64, - arg_redemptionTreasuryFeeDivisor uint64, - arg_redemptionTxMaxFee uint64, - arg_redemptionTxMaxTotalFee uint64, - arg_redemptionTimeout uint32, - arg_redemptionTimeoutSlashingAmount *big.Int, - arg_redemptionTimeoutNotifierRewardMultiplier uint32, +func (b *Bridge) UpdateTreasury( + arg_treasury common.Address, transactionOptions ...chainutil.TransactionOptions, ) (*types.Transaction, error) { bLogger.Debug( - "submitting transaction updateRedemptionParameters", + "submitting transaction updateTreasury", " params: ", fmt.Sprint( - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + arg_treasury, ), ) @@ -4774,34 +7080,22 @@ func (b *Bridge) UpdateRedemptionParameters( transactorOptions.Nonce = new(big.Int).SetUint64(nonce) - transaction, err := b.contract.UpdateRedemptionParameters( + transaction, err := b.contract.UpdateTreasury( transactorOptions, - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + arg_treasury, ) if err != nil { return transaction, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "updateRedemptionParameters", - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + "updateTreasury", + arg_treasury, ) } bLogger.Infof( - "submitted transaction updateRedemptionParameters with id: [%s] and nonce [%v]", + "submitted transaction updateTreasury with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -4820,34 +7114,22 @@ func (b *Bridge) UpdateRedemptionParameters( newTransactorOptions.GasLimit = transactorOptions.GasLimit } - transaction, err := b.contract.UpdateRedemptionParameters( + transaction, err := b.contract.UpdateTreasury( newTransactorOptions, - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + arg_treasury, ) if err != nil { return nil, b.errorResolver.ResolveError( err, b.transactorOptions.From, nil, - "updateRedemptionParameters", - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + "updateTreasury", + arg_treasury, ) } bLogger.Infof( - "submitted transaction updateRedemptionParameters with id: [%s] and nonce [%v]", + "submitted transaction updateTreasury with id: [%s] and nonce [%v]", transaction.Hash(), transaction.Nonce(), ) @@ -4862,14 +7144,8 @@ func (b *Bridge) UpdateRedemptionParameters( } // Non-mutating call, not a transaction submission. -func (b *Bridge) CallUpdateRedemptionParameters( - arg_redemptionDustThreshold uint64, - arg_redemptionTreasuryFeeDivisor uint64, - arg_redemptionTxMaxFee uint64, - arg_redemptionTxMaxTotalFee uint64, - arg_redemptionTimeout uint32, - arg_redemptionTimeoutSlashingAmount *big.Int, - arg_redemptionTimeoutNotifierRewardMultiplier uint32, +func (b *Bridge) CallUpdateTreasury( + arg_treasury common.Address, blockNumber *big.Int, ) error { var result interface{} = nil @@ -4881,44 +7157,26 @@ func (b *Bridge) CallUpdateRedemptionParameters( b.caller, b.errorResolver, b.contractAddress, - "updateRedemptionParameters", + "updateTreasury", &result, - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + arg_treasury, ) return err } -func (b *Bridge) UpdateRedemptionParametersGasEstimate( - arg_redemptionDustThreshold uint64, - arg_redemptionTreasuryFeeDivisor uint64, - arg_redemptionTxMaxFee uint64, - arg_redemptionTxMaxTotalFee uint64, - arg_redemptionTimeout uint32, - arg_redemptionTimeoutSlashingAmount *big.Int, - arg_redemptionTimeoutNotifierRewardMultiplier uint32, +func (b *Bridge) UpdateTreasuryGasEstimate( + arg_treasury common.Address, ) (uint64, error) { var result uint64 result, err := chainutil.EstimateGas( b.callerOptions.From, b.contractAddress, - "updateRedemptionParameters", + "updateTreasury", b.contractABI, b.transactor, - arg_redemptionDustThreshold, - arg_redemptionTreasuryFeeDivisor, - arg_redemptionTxMaxFee, - arg_redemptionTxMaxTotalFee, - arg_redemptionTimeout, - arg_redemptionTimeoutSlashingAmount, - arg_redemptionTimeoutNotifierRewardMultiplier, + arg_treasury, ) return result, err @@ -10503,6 +12761,185 @@ func (b *Bridge) PastSpvMaintainerStatusUpdatedEvents( return events, nil } +func (b *Bridge) TreasuryUpdatedEvent( + opts *ethereum.SubscribeOpts, +) *BTreasuryUpdatedSubscription { + if opts == nil { + opts = new(ethereum.SubscribeOpts) + } + if opts.Tick == 0 { + opts.Tick = chainutil.DefaultSubscribeOptsTick + } + if opts.PastBlocks == 0 { + opts.PastBlocks = chainutil.DefaultSubscribeOptsPastBlocks + } + + return &BTreasuryUpdatedSubscription{ + b, + opts, + } +} + +type BTreasuryUpdatedSubscription struct { + contract *Bridge + opts *ethereum.SubscribeOpts +} + +type bridgeTreasuryUpdatedFunc func( + Treasury common.Address, + blockNumber uint64, +) + +func (tus *BTreasuryUpdatedSubscription) OnEvent( + handler bridgeTreasuryUpdatedFunc, +) subscription.EventSubscription { + eventChan := make(chan *abi.BridgeTreasuryUpdated) + ctx, cancelCtx := context.WithCancel(context.Background()) + + go func() { + for { + select { + case <-ctx.Done(): + return + case event := <-eventChan: + handler( + event.Treasury, + event.Raw.BlockNumber, + ) + } + } + }() + + sub := tus.Pipe(eventChan) + return subscription.NewEventSubscription(func() { + sub.Unsubscribe() + cancelCtx() + }) +} + +func (tus *BTreasuryUpdatedSubscription) Pipe( + sink chan *abi.BridgeTreasuryUpdated, +) subscription.EventSubscription { + ctx, cancelCtx := context.WithCancel(context.Background()) + go func() { + ticker := time.NewTicker(tus.opts.Tick) + defer ticker.Stop() + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + lastBlock, err := tus.contract.blockCounter.CurrentBlock() + if err != nil { + bLogger.Errorf( + "subscription failed to pull events: [%v]", + err, + ) + } + fromBlock := lastBlock - tus.opts.PastBlocks + + bLogger.Infof( + "subscription monitoring fetching past TreasuryUpdated events "+ + "starting from block [%v]", + fromBlock, + ) + events, err := tus.contract.PastTreasuryUpdatedEvents( + fromBlock, + nil, + ) + if err != nil { + bLogger.Errorf( + "subscription failed to pull events: [%v]", + err, + ) + continue + } + bLogger.Infof( + "subscription monitoring fetched [%v] past TreasuryUpdated events", + len(events), + ) + + for _, event := range events { + sink <- event + } + } + } + }() + + sub := tus.contract.watchTreasuryUpdated( + sink, + ) + + return subscription.NewEventSubscription(func() { + sub.Unsubscribe() + cancelCtx() + }) +} + +func (b *Bridge) watchTreasuryUpdated( + sink chan *abi.BridgeTreasuryUpdated, +) event.Subscription { + subscribeFn := func(ctx context.Context) (event.Subscription, error) { + return b.contract.WatchTreasuryUpdated( + &bind.WatchOpts{Context: ctx}, + sink, + ) + } + + thresholdViolatedFn := func(elapsed time.Duration) { + bLogger.Warnf( + "subscription to event TreasuryUpdated had to be "+ + "retried [%s] since the last attempt; please inspect "+ + "host chain connectivity", + elapsed, + ) + } + + subscriptionFailedFn := func(err error) { + bLogger.Errorf( + "subscription to event TreasuryUpdated failed "+ + "with error: [%v]; resubscription attempt will be "+ + "performed", + err, + ) + } + + return chainutil.WithResubscription( + chainutil.SubscriptionBackoffMax, + subscribeFn, + chainutil.SubscriptionAlertThreshold, + thresholdViolatedFn, + subscriptionFailedFn, + ) +} + +func (b *Bridge) PastTreasuryUpdatedEvents( + startBlock uint64, + endBlock *uint64, +) ([]*abi.BridgeTreasuryUpdated, error) { + iterator, err := b.contract.FilterTreasuryUpdated( + &bind.FilterOpts{ + Start: startBlock, + End: endBlock, + }, + ) + if err != nil { + return nil, fmt.Errorf( + "error retrieving past TreasuryUpdated events: [%v]", + err, + ) + } + + events := make([]*abi.BridgeTreasuryUpdated, 0) + + for iterator.Next() { + event := iterator.Event + events = append(events, event) + } + + return events, nil +} + func (b *Bridge) VaultStatusUpdatedEvent( opts *ethereum.SubscribeOpts, vaultFilter []common.Address, diff --git a/pkg/chain/ethereum/threshold/gen/cmd/TokenStaking.go b/pkg/chain/ethereum/threshold/gen/cmd/TokenStaking.go index d1e92fd5c8..43f3eda9e0 100644 --- a/pkg/chain/ethereum/threshold/gen/cmd/TokenStaking.go +++ b/pkg/chain/ethereum/threshold/gen/cmd/TokenStaking.go @@ -1240,6 +1240,11 @@ func tsApproveApplication(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1301,6 +1306,11 @@ func tsApproveAuthorizationDecrease(c *cobra.Command, args []string) error { } cmd.PrintOutput(result) + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1370,6 +1380,11 @@ func tsDelegateVoting(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1430,6 +1445,11 @@ func tsDisableApplication(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1499,6 +1519,11 @@ func tsForceDecreaseAuthorization(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1577,6 +1602,11 @@ func tsIncreaseAuthorization(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1626,6 +1656,11 @@ func tsInitialize(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1686,6 +1721,11 @@ func tsNotifyKeepStakeDiscrepancy(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1746,6 +1786,11 @@ func tsNotifyNuStakeDiscrepancy(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1806,6 +1851,11 @@ func tsPauseApplication(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1866,6 +1916,11 @@ func tsProcessSlashing(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1926,6 +1981,11 @@ func tsPushNotificationReward(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -1986,6 +2046,11 @@ func tsRefreshKeepStakeOwner(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2064,6 +2129,11 @@ func tsRequestAuthorizationDecrease(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2124,6 +2194,11 @@ func tsRequestAuthorizationDecrease0(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2184,6 +2259,11 @@ func tsSetAuthorizationCeiling(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2244,6 +2324,11 @@ func tsSetMinimumStakeAmount(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2304,6 +2389,11 @@ func tsSetNotificationReward(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2373,6 +2463,11 @@ func tsSetPanicButton(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2442,6 +2537,11 @@ func tsSetStakeDiscrepancyPenalty(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2529,6 +2629,11 @@ func tsStake(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2589,6 +2694,11 @@ func tsStakeKeep(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2667,6 +2777,11 @@ func tsStakeNu(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2736,6 +2851,11 @@ func tsTopUp(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2796,6 +2916,11 @@ func tsTopUpKeep(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2856,6 +2981,11 @@ func tsTopUpNu(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2916,6 +3046,11 @@ func tsTransferGovernance(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -2976,6 +3111,11 @@ func tsUnstakeAll(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -3036,6 +3176,11 @@ func tsUnstakeKeep(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -3105,6 +3250,11 @@ func tsUnstakeNu(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -3174,6 +3324,11 @@ func tsUnstakeT(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil @@ -3243,6 +3398,11 @@ func tsWithdrawNotificationReward(c *cobra.Command, args []string) error { } cmd.PrintOutput("success") + + cmd.PrintOutput( + "the transaction was not submitted to the chain; " + + "please add the `--submit` flag", + ) } return nil