// Fundamentals
export { Engine } from "./src/Engine.js"
export type * from "./src/LookupService.js"
export type { TopicManager } from "./src/TopicManager.js"

// Interfaces and structures
export type { Storage, AppliedTransaction } from "./src/storage/Storage.js"
export type { Output } from './src/Output.js'
export type { TaggedBEEF, STEAK, LookupQuestion, LookupAnswer, AdmittanceInstructions } from '@bsv/sdk'
export type { LookupFormula } from './src/LookupFormula.js'
export type { Advertisement } from './src/Advertisement.js'
export type { AdvertisementData, Advertiser } from './src/Advertiser.js'
export {
  BASM_ZERO_HASH,
  computeBasmRoot,
  computeTac,
  extractMerkleProofMetadata
} from './src/BASM.js'
export type {
  AdmittedListRequest,
  AdmittedListResponse,
  AdmittedTxRef,
  BASMPeerSyncReport,
  CompoundMerklePathRequest,
  CompoundMerklePathResponse,
  MerkleProofMetadata,
  RawTransactionRecord,
  RawTransactionRequest,
  RawTransactionResponse,
  TopicAnchorHeader,
  TopicAnchorHeaderResolver,
  TopicAnchorRangeRequest,
  TopicAnchorRangeResponse,
  TopicAnchorTip,
  TopicBlockAnchor
} from './src/BASM.js'

// The Knex storage system
export { KnexStorage } from './src/storage/knex/KnexStorage.js'
export * as KnexStorageMigrations from './src/storage/knex/all-migrations.js'
