/**
 * Arkiv Sync — point it at any contract on any EVM chain and turn its on-chain events into a
 * queryable Arkiv database. Library-first: this module is the engine. The CLI, the skill, and
 * the template all sit on top of it.
 */
export { defineConfig, createIndexer, quickCheck, normalizeAddresses, type ArkivSyncConfig, type IndexerOverrides, type QuickCheckResult, } from './config.js';
export { Indexer, type IndexerOptions, type TickResult, type IndexerActivity } from './core/indexer.js';
export { FileCursorStore, MemoryCursorStore } from './core/cursor.js';
export { detectReorg, pruneCursorWindow, truncateAbove, type ReorgResult } from './core/reorg.js';
export { EvmSource, type EvmSourceOptions } from './source/evmSource.js';
export { SOURCE_CHAINS, resolveSourceChain, type SourceChainDef } from './source/chains.js';
export { buildReadTransport } from './source/rpcPool.js';
export { ArkivSink, type ArkivSinkOptions, type ArkivNetwork, TIRAMISU_NETWORK, assertWritableChain, } from './sink/arkivSink.js';
export { createArkivReader, type ArkivReader, type DecodedEntity, type QueryParams, type ArkivReaderOptions, } from './sink/arkivQuery.js';
export { storageAttributeName } from './sink/attributes.js';
export { WriteReconciliationRequiredError } from './sink/errors.js';
export { quoteValue, assertSafePredicate, assertSafeOwner } from './sink/predicate.js';
export { seconds, minutes, hours, days, weeks, describeSeconds } from './time.js';
export { createLogger, silentLogger } from './log.js';
export { eventId, lower, addr, uint, scrubSecrets } from './util.js';
export type { Hex, NormalizedEvent, BlockHeader, SourceAdapter, Sink, SinkRecord, WriteResult, WriteOp, WriteProgress, EventMapper, MappedEntity, Cursor, CursorStore, Logger, LogLevel, } from './types.js';
