# Class BSV::Wallet::Engine::BeefImporter <a id="class-BSV-Wallet-Engine-BeefImporter"></a>

**Inherits:** `Object`
**Includes:** `BSV::Wallet::Interface::BeefImporter`

Ingress of an incoming BEEF.

Given a binary Atomic BEEF (BRC-95), this class parses the bundle, runs full
SPV verification of the subject transaction, persists the subject as an
incoming +broadcast_intent 'none'+ action row, saves every ancestor's merkle
proof, optionally trims known ancestors back to TXID-only, and promotes the
caller-named outputs into the canonical UTXO set. See
<code>Interface::BeefImporter</code> for the full contract.

Store-reading by design (the <code>store:</code> handle is read and written),
with two further dependencies attached: a <code>chain_tracker:</code> for SPV
verification — the incoming graph is untrusted, so a real tracker is required
— and a <code>hydrator:</code> consumed one-way for trustSelf hydration of
TXID-only entries the sender skipped.

No `key_deriver` — ingress derives nothing. Output derivation params are
caller-supplied via the `outputs` array and flow through
`resolve_internalize_output` as-is.

## Public Class Methods
### `merkle_path_for(beef, beef_tx)` <a id="method-c-merkle_path_for"></a> <a id="merkle_path_for-class_method"></a>
Resolve the merkle path a BEEF entry carries, whether wired directly onto the
transaction or referenced indirectly via its BUMP index. Public class method
so every BEEF traversal that needs "which entries are merkle-bearing" funnels
through one definition —save_beef_proofs (what to persist),
assert_proofs_complete! (what should have persisted), and
Broadcast#cache_beef_transactions (what to cache as terminal) all share the
answer.

## Public Instance Methods
### `import(tx:, outputs:, description:, labels: = nil, trust_self: = nil, known_txids: = nil)` <a id="method-i-import"></a> <a id="import-instance_method"></a>
See +Interface::BeefImporter#import+.

### `initialize(store:, chain_tracker:, hydrator:)` <a id="method-i-initialize"></a> <a id="initialize-instance_method"></a>
Construct a BeefImporter. Explicit DI: no engine back-reference. The
`chain_tracker` may be `nil` at construction time (some engine configurations
omit it) —<code>#import</code> raises `InvalidBeefError` at the SPV step in
that case, mirroring the previous <code>Action.internalize</code> guard.
- **@return** [BeefImporter] a new instance of BeefImporter
