ports

package
v0.2.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2024 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BlockchainScanner

type BlockchainScanner interface {
	// Start starts the service.
	Start()
	// Stop stops the service.
	Stop()

	// WatchForAccount instructs the scanner to start notifying about txs/utxos
	// related to the given list of addresses belonging to the given HD account.
	WatchForAccount(
		accountName string, startingBlockHeight uint32,
		addresses []domain.AddressInfo,
	)
	// WatchForUtxos instructs the scanner to notify when the given utxos are
	// either spent or confirmed.
	WatchForUtxos(
		accountName string, utxos []domain.UtxoInfo,
	)
	// RestoreAccount makes the scanner discover and retuen all the used
	// addresses for a certain account represented by its account index, xpub
	// and master blinding key.
	RestoreAccount(
		accountIndex uint32, accountName, xpub string, masterBlindingKey []byte,
		startingBlockHeight, addressesThreshold uint32,
	) ([]domain.AddressInfo, []domain.AddressInfo, error)
	// StopWatchForAccount instructs the scanner to stop notifying about
	// txs/utxos related to any address belonging to the given HD account.
	StopWatchForAccount(accountName string)

	// GetUtxoChannel returns the channel where notification about utxos realated
	// to the given HD account are sent.
	GetUtxoChannel(accountName string) chan []*domain.Utxo
	// GetTxChannel returns the channel where notification about txs realated to
	// the given HD account are sent.
	GetTxChannel(accountName string) chan *domain.Transaction

	// GetLatestBlock returns the header of the latest block of the blockchain.
	GetLatestBlock() ([]byte, uint32, error)
	// GetBlockHash returns the hash of the block identified by its height.
	GetBlockHash(height uint32) ([]byte, error)
	// GetUtxos is a sync function to get info about the utxos represented by
	// given outpoints (UtxoKeys).
	GetUtxos(utxos []domain.Utxo) ([]domain.Utxo, error)
	// GetUtxos is a sync function to get all utxos for the given list of addresses.
	GetUtxosForAddresses(addresses []domain.AddressInfo) ([]*domain.Utxo, error)
	// BroadcastTransaction sends the given raw tx (in hex string) over the
	// network in order to be included in a later block of the Liquid blockchain.
	BroadcastTransaction(txHex string) (string, error)
	// GetTransactions returns info about the given txids.
	GetTransactions(txids []string) ([]domain.Transaction, error)
}

BlockchainScanner is the abstraction for any kind of service representing an Elements node. It gives info about txs and utxos related to one or more HD accounts in a aync way (via channels), and lets broadcast transactions over the Liquid network.

type CoinSelector

type CoinSelector interface {
	// SelectUtxos implements a certain coin selection strategy.
	SelectUtxos(
		utxos []*domain.Utxo, targetAmount uint64, targetAsset string,
	) (selectedUtxos []*domain.Utxo, change uint64, err error)
}

CoinSelector is the abstraction for any kind of service intended to return a subset of the given utxos with target asset hash, covering the target amount based on a specific strategy.

type RepoManager

type RepoManager interface {
	// WalletRepository returns the wallet repository.
	WalletRepository() domain.WalletRepository
	// UtxoRepository returns the utxo repository.
	UtxoRepository() domain.UtxoRepository
	// TransactionRepository returns the tx repository.
	TransactionRepository() domain.TransactionRepository
	// ExternalScriptRepository returns the external scripts repository.
	ExternalScriptRepository() domain.ExternalScriptRepository

	// RegisterHandlerForWalletEvent registers an handler function, executed
	// whenever the given event type occurs.
	RegisterHandlerForWalletEvent(
		eventType domain.WalletEventType, handler WalletEventHandler,
	)
	// RegisterHandlerForUtxoEvent registers an handler function, executed
	// whenever the given event type occurs.
	RegisterHandlerForUtxoEvent(
		eventType domain.UtxoEventType, handler UtxoEventHandler,
	)
	// RegisterHandlerForTxEvent registers an handler function, executed
	// whenever the given event type occurs.
	RegisterHandlerForTxEvent(
		eventType domain.TransactionEventType, handler TxEventHandler,
	)
	// RegisterHandlerForExternalScriptEvent registers an handler function,
	// executed whenever the given event type occurs.
	RegisterHandlerForExternalScriptEvent(
		eventType domain.ExternalScriptEventType, handler ScriptEventHandler,
	)

	// Reset brings all the repos to their initial state by deleting any persisted data.
	Reset()

	// Close closes the connection with all concrete repositories
	// implementations.
	Close()
}

RepoManager is the abstraction for any kind of service intended to manage domain repositories implementations of the same concrete type.

type ScriptEventHandler added in v0.2.0

type ScriptEventHandler func(event domain.ExternalScriptEvent)

type TxEventHandler

type TxEventHandler func(event domain.TransactionEvent)

type UtxoEventHandler

type UtxoEventHandler func(event domain.UtxoEvent)

type WalletEventHandler

type WalletEventHandler func(event domain.WalletEvent)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL