func (pq *txPriorityQueue) Push(x interface{}) {
	pq.items = append(pq.items, x.(*txPrioItem))
}
Push pushes the passed item onto the priority queue.  It is part of the
heap.Interface implementation.
package mining
import (
	"bytes"
	"container/heap"
	"fmt"
	"time"
	"github.com/soteria-dag/soterd/blockchain"
	"github.com/soteria-dag/soterd/chaincfg"
	"github.com/soteria-dag/soterd/chaincfg/chainhash"
	"github.com/soteria-dag/soterd/soterutil"
	"github.com/soteria-dag/soterd/txscript"
	"github.com/soteria-dag/soterd/wire"
)
const (
	MinHighPriority = soterutil.NanoSoterPerSoter * 144.0 / 250
	blockHeaderOverhead = wire.MaxBlockHeaderPayload + wire.MaxParentSubHeaderPayload + wire.MaxVarIntPayload
	CoinbaseFlags = "/P2SH/soterd/"
)
type TxDesc struct {
	Tx *soterutil.Tx
	Added time.Time
	Height int32
	Fee int64
	FeePerKB int64
}
type TxSource interface {
	LastUpdated() time.Time
	MiningDescs() []*TxDesc
	HaveTransaction(hash *chainhash.Hash) bool
}
type txPrioItem struct {
	tx       *soterutil.Tx
	fee      int64
	priority float64
	feePerKB int64
	dependsOn map[chainhash.Hash]struct{}
}
type txPriorityQueueLessFunc func(*txPriorityQueue, int, int) bool
type txPriorityQueue struct {
	lessFunc txPriorityQueueLessFunc
	items    []*txPrioItem
}
func (pq *txPriorityQueue) Len() int {
	return len(pq.items)
}
func (pq *txPriorityQueue) Less(i, j int) bool {
	return pq.lessFunc(pq, i, j)
}
func (pq *txPriorityQueue) Swap(i, j int) {
	pq.items[i], pq.items[j] = pq.items[j], pq.items[i]
}