func (w *Wallet) DisapprovePercent() uint32 {
	return atomic.LoadUint32(&w.disapprovePercent)
}
DisapprovePercent returns the wallet's block disapproval percentage.
package wallet
import (
	"bytes"
	"context"
	"encoding/binary"
	"encoding/hex"
	"fmt"
	"runtime"
	"sort"
	"strconv"
	"strings"
	"sync"
	"sync/atomic"
	"time"
	"decred.org/dcrwallet/v2/deployments"
	"decred.org/dcrwallet/v2/errors"
	"decred.org/dcrwallet/v2/internal/compat"
	"decred.org/dcrwallet/v2/rpc/client/dcrd"
	"decred.org/dcrwallet/v2/rpc/jsonrpc/types"
	"decred.org/dcrwallet/v2/validate"
	"decred.org/dcrwallet/v2/wallet/txrules"
	"decred.org/dcrwallet/v2/wallet/txsizes"
	"decred.org/dcrwallet/v2/wallet/udb"
	"decred.org/dcrwallet/v2/wallet/walletdb"
	"github.com/decred/dcrd/blockchain/stake/v4"
	blockchain "github.com/decred/dcrd/blockchain/standalone/v2"
	"github.com/decred/dcrd/chaincfg/chainhash"
	"github.com/decred/dcrd/chaincfg/v3"
	"github.com/decred/dcrd/crypto/blake256"
	"github.com/decred/dcrd/dcrec"
	"github.com/decred/dcrd/dcrec/secp256k1/v4"
	"github.com/decred/dcrd/dcrec/secp256k1/v4/ecdsa"
	"github.com/decred/dcrd/dcrutil/v4"
	gcs2 "github.com/decred/dcrd/gcs/v3"
	"github.com/decred/dcrd/hdkeychain/v3"
	dcrdtypes "github.com/decred/dcrd/rpc/jsonrpc/types/v3"
	"github.com/decred/dcrd/txscript/v4"
	"github.com/decred/dcrd/txscript/v4/sign"
	"github.com/decred/dcrd/txscript/v4/stdaddr"
	"github.com/decred/dcrd/wire"
	"golang.org/x/sync/errgroup"
)
const (
	InsecurePubPassphrase = "public"
)
var (
	SimulationPassphrase = []byte("password")
)
var (
	waddrmgrNamespaceKey  = []byte("waddrmgr")
	wtxmgrNamespaceKey    = []byte("wtxmgr")
	wstakemgrNamespaceKey = []byte("wstakemgr")
)
type StakeDifficultyInfo struct {
	BlockHash       *chainhash.Hash
	BlockHeight     int64
	StakeDifficulty int64
}
type outpoint struct {
	hash  chainhash.Hash
	index uint32
}
type Wallet struct {
	disapprovePercent uint32
	db       walletdb.DB
	manager  *udb.Manager
	txStore  *udb.Store
	stakeMgr *udb.StakeStore
	stakeSettingsLock  sync.Mutex
	defaultVoteBits    stake.VoteBits
	votingEnabled      bool
	poolAddress        stdaddr.StakeAddress
	poolFees           float64
	manualTickets      bool
	stakePoolEnabled   bool
	stakePoolColdAddrs map[string]struct{}
	subsidyCache       *blockchain.SubsidyCache
	tspends            map[chainhash.Hash]wire.MsgTx
	tspendPolicy       map[chainhash.Hash]stake.TreasuryVoteT
	tspendKeyPolicy    map[string]stake.TreasuryVoteT  
	gapLimit        uint32
	accountGapLimit int
	initialHeight int32
	networkBackend   NetworkBackend
	networkBackendMu sync.Mutex
	lockedOutpoints  map[outpoint]struct{}
	lockedOutpointMu sync.Mutex
	relayFee                dcrutil.Amount
	relayFeeMu              sync.Mutex
	allowHighFees           bool
	disableCoinTypeUpgrades bool
	recentlyPublished       map[chainhash.Hash]struct{}
	recentlyPublishedMu     sync.Mutex
	addressReuse     bool
	ticketAddress    stdaddr.StakeAddress
	addressBuffers   map[uint32]*bip0044AccountData
	addressBuffersMu sync.Mutex
	passphraseUsedMu        sync.RWMutex
	passphraseTimeoutMu     sync.Mutex
	passphraseTimeoutCancel chan struct{}
	NtfnServer *NotificationServer
	chainParams *chaincfg.Params
}
type Config struct {
	DB DB
	PubPassphrase []byte
	VotingEnabled bool
	AddressReuse  bool
	VotingAddress stdaddr.StakeAddress
	PoolAddress   stdaddr.StakeAddress
	PoolFees      float64
	GapLimit                uint32
	AccountGapLimit         int
	DisableCoinTypeUpgrades bool
	StakePoolColdExtKey string
	ManualTickets       bool
	AllowHighFees       bool
	RelayFee            dcrutil.Amount
	Params              *chaincfg.Params
}