UNPKG

@atomiqlabs/base

Version:

Base classes and interfaces for atomiq protocol

60 lines (59 loc) 2.13 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>>; }