import { BalanceActivityCallback , GetBalanceActivityOptions , RetrieveBalanceActivitiesResult , BalanceActivity , NewBlockCallback , FilterBlockAddressesCallback , BlockInfo , } from './types' ; /**
 * A balance monitor is a tool used to track the change in balance of addresses on chain.
 * There is no persistance, so a current balance cannot be calculated directly. Instead, activities
 * should be recorded on some persistance layer (ie a database) where balance calculations can
 * be performed as a sum of the `amount` field.
 *
 * There are two ways to track activities, a continuous live stream and a historic retrieval stream.
 * For a live stream of activity, subscribe to addresses with `subscribeAddresses` and listen for
 * activities with `onBalanceActivity`.
 * For historic data, use `retrieveBalanceActivities` to query all activities, or optionally provide
 * a block range.
 *
 * Additionally, `txToBalanceActivity` helper is provided to convert raw transactions to an activity,
 * if applicable. Useful for recording activity of a recently sent transaction in advance.
 */ export interface BalanceMonitor { /**
     * Initialize the monitor and any connections required.
     */ init ( ) : Promise < void > ; /**
     * Deinitialize the monitor and any connections that are established.
     */ destroy ( ) : Promise < void > ; param addresses subscribeAddresses ( addresses ) : Promise < void > ; param callbackFn onBalanceActivity ( callbackFn ) : void ; param address param callbackFn param options retrieveBalanceActivities ( address , callbackFn , options ? ) : Promise < RetrieveBalanceActivitiesResult > ; param address param tx txToBalanceActivity ( address , tx ) : Promise < BalanceActivity | null > ; /**
     * Watch for confirmed blocks
     */ subscribeNewBlock ? : ( callbackFn : NewBlockCallback ) => Promise < void > ; param block param callbackFn param filterRelevantAddresses retrieveBlockBalanceActivities ? : ( block : number | string , callbackFn : BalanceActivityCallback , filterRelevantAddresses : FilterBlockAddressesCallback ) => Promise < BlockInfo > ; }