# Functions

AnchorOutputScript creates the anchor output script given an internal key, tapscript sibling and the TapCommitment.
AssertAnchorTimeLocks makes sure the anchor transaction and its inputs have the correct lock time and sequence set, according to the assets being spent.
AssertInputAnchorsEqual makes sure that the anchor input information for each input of the virtual packets that anchors to the same BTC level input is identical.
AssertOutputAnchorsEqual makes sure that the anchor output information for each output of the virtual packets that anchors to the same BTC level output is identical.
AssetFromTapCommitment uses a script key to extract an asset from a given Taproot Asset commitment.
CreateAnchorTx creates a template BTC anchor TX with dummy outputs.
CreateDummyOutput creates a new Bitcoin transaction output that is later used to embed a Taproot Asset commitment.
CreateOutputCommitments creates the final set of Taproot asset commitments representing the asset sends of the given packets of active and passive assets.
CreateProofSuffix creates a new proof for the given virtual transaction output indicated with outIndex within vPacket.
CreateProofSuffixCustom creates the new proof for the given virtual transaction output indicated with outIndex within vPacket.
CreateTaprootSignature creates a Taproot signature for the given asset input.
DescribeAddrs extracts the recipient descriptors from a list of Taproot Asset addresses.
DescribeRecipients extracts the recipient descriptors from a Taproot Asset PSBT.
DisableLog disables all library log output.
ExtractUnSpendable extracts all tombstones and burns from the active input commitment.
HasInput returns true if the given transaction has an input that spends the given outpoint.
LogCommitment logs the given Taproot Asset commitment to the log as a trace message.
PrepareAnchoringTemplate creates a BTC level PSBT packet that can be used to anchor the given virtual packets.
PrepareOutputAssets prepares the assets of the given outputs depending on the amounts set on the transaction.
RemoveAssetsFromCommitment removes all assets from the given commitment and only returns a tree of the remaining commitments.
RemovePacketsFromCommitment removes all assets within the virtual transactions from the given commitment.
SignVirtualTransaction updates the new asset (the root asset located at the change output in case of a non-interactive or partial amount send or the full asset in case of an interactive full amount send) by creating a signature over the asset transfer, verifying the transfer with the Taproot Asset VM, and attaching that signature to the new Asset.
UpdateTaprootOutputKeys updates a PSBT with outputs embedding TapCommitments involved in an asset send.
UseLogger uses a specified Logger to output package logging info.
ValidateAnchorInputs checks that the anchor inputs of the virtual packets are valid and consistent with the provided BTC level PSBT packet.
ValidateAnchorOutputs checks that the anchor outputs of the virtual packets are valid and consistent with the provided BTC level PSBT packet.
ValidateInputs validates a set of inputs against a funding request.
ValidateVPacketVersions checks that all virtual packets are the same version.

# Constants

DummyAmtSats is the default amount of sats we'll use in Bitcoin outputs embedding Taproot Asset commitments.
SendConfTarget is the confirmation target we'll use to query for a fee estimate.
Subsystem defines the logging code for this subsystem.

# Variables

ErrAssetMissing is an error returned when an asset is missing from a virtual transaction.
ErrAssetNotSigned is an error returned when an asset is not signed in a virtual transaction that was already committed to an anchor output.
ErrInsufficientInputAssets is an error returned when we attempt to spend to a Taproot Asset address from a set of inputs which contain an insufficient amount of total funds.
ErrInvalidAnchorInputInfo is an error returned when the anchor input information on a virtual transaction input is invalid.
ErrInvalidAnchorOutputInfo is an error returned when the anchor output information on a virtual transaction output is invalid.
ErrInvalidChangeOutputLocation is returned when the change output is not at the expected location (index 0).
ErrInvalidCollectibleSplit is returned when a collectible is split into more than two outputs.
ErrInvalidOutputIndexes is an error returned when we attempt to spend to Bitcoin output indexes that do not start at 0 or are not continuous.
ErrInvalidSplitAmounts is returned when the split amounts don't add up to the amount of the asset being spent.
ErrMissingAssetCommitment is an error returned when we attempt to look up an Asset commitment in a map and the specified commitment is not found.
ErrMissingInputAsset is an error returned when we attempt to spend to a Taproot Asset address from an input that does not contain the matching asset.
ErrMissingSplitAsset is an error returned when we attempt to look up a split asset in a map and the specified asset is not found.
ErrMissingTapCommitment is an error returned when we attempt to look up a Taproot Asset commitment in a map and the specified commitment is not found.
ErrNoRootLocator is an error that is returned when a split commitment is created without a split root output.
GenesisDummyScript is a dummy script that we'll use to fund the initial PSBT packet that'll create initial set of assets.

# Structs

AnchorTransaction is a type that holds all information about a BTC level anchor transaction that anchors multiple virtual asset transfer transactions.
FundedPsbt represents a fully funded PSBT transaction.
FundingDescriptor describes the information that is needed to select and verify input assets in order to send to a specific recipient.

# Interfaces

AssetGroupQuerier is an interface that allows us to query for asset groups by asset ID.

# Type aliases

ExclusionProofGenerator is a function type that can be used to generate exclusion proofs for any BTC transaction outputs that don't carry any assets.
IsAnchor is a function type that can be used to determine if a given BTC transaction output at the given index is an anchor for committing assets.