UNPKG

@atomiqlabs/base

Version:

Base classes and interfaces for atomiq protocol

59 lines (55 loc) 2.1 kB
import {BtcStoredHeader} from "../types/BtcStoredHeader"; import {BtcBlock} from "../types/BtcBlock"; export type SynchronizationResponse<V extends BtcStoredHeader<any>, T, B extends BtcBlock> = { /** * Transactions required to synchronize the btc relay */ txs: T[], /** * Latest committed header after synchronization */ targetCommitedHeader: V, /** * Latest block header after synchronization */ latestBlockHeader: B, /** * Mapping of synchronized committed headers, based on blockheight */ computedHeaderMap: {[blockheight: number]: V}, /** * Mapping of synchronized block headers, based on blockheight */ blockHeaderMap: {[blockheight: number]: B}, /** * Tip committed header of the btc relay before synchronization */ btcRelayTipCommitedHeader: V, /** * Tip block header of the btc relay before synchronization */ btcRelayTipBlockHeader: B, /** * A fork ID that was used to re-org the chain to the current canonical chain */ startForkId?: number }; /** * An interface for a synchronizer of the BTC relay bitcoin light client contract, produces transactions * necessary to synchronize the underlying relay contract to the current tip of the canonical chain, * automatically handles forking if necessary * * @category Chains */ export interface RelaySynchronizer<V extends BtcStoredHeader<any>, T, B extends BtcBlock> { /** * Returns the transactions necessary to synchronize the BTC relay contract to the * tip of the canonical chain. Also returns the various bitcoin blockheaders that * are to-be-synced to the relay, such that they can be used to already pre-create * transactions, which require the stored blockheaders * * @param signer Transactions signer's address * @param feeRate Optional fee rate to use for the transactions */ syncToLatestTxs(signer: string, feeRate?: string): Promise<SynchronizationResponse<V, T, B>>; }