UNPKG

@atomiqlabs/base

Version:

Base classes and interfaces for atomiq protocol

62 lines (61 loc) 2.47 kB
/// <reference types="node" /> import { BtcStoredHeader } from "./types/BtcStoredHeader"; import { BtcBlock } from "./types/BtcBlock"; import { Buffer } from "buffer"; import { AbstractSigner } from "../chains/ChainInterface"; export interface BtcRelay<V extends BtcStoredHeader<any>, T, B extends BtcBlock, Signer extends AbstractSigner = AbstractSigner> { maxHeadersPerTx: number; maxForkHeadersPerTx: number; maxShortForkHeadersPerTx?: number; getTipData(): Promise<{ blockheight: number; blockhash: string; commitHash: string; chainWork: Buffer; }>; retrieveLogAndBlockheight(blockData: { blockhash: string; height: number; }, requiredBlockheight?: number): Promise<{ header: V; height: number; }>; retrieveLogByCommitHash(commitHash: string, blockData: { blockhash: string; height: number; }): Promise<V>; retrieveLatestKnownBlockLog(): Promise<{ resultStoredHeader: V; resultBitcoinHeader: B; }>; saveInitialHeader(signer: string, header: B, epochStart: number, pastBlocksTimestamps: number[], feeRate?: string): Promise<T>; saveMainHeaders(signer: string, mainHeaders: B[], storedHeader: V, feeRate?: string): Promise<{ forkId: number; lastStoredHeader: V; tx: T; computedCommitedHeaders: V[]; }>; saveNewForkHeaders(signer: string, forkHeaders: B[], storedHeader: V, tipWork: Buffer, feeRate?: string): Promise<{ forkId: number; lastStoredHeader: V; tx: T; computedCommitedHeaders: V[]; }>; saveForkHeaders(signer: string, forkHeaders: B[], storedHeader: V, forkId: number, tipWork: Buffer, feeRate?: string): Promise<{ forkId: number; lastStoredHeader: V; tx: T; computedCommitedHeaders: V[]; }>; saveShortForkHeaders?(signer: string, forkHeaders: B[], storedHeader: V, tipWork: Buffer, feeRate?: string): Promise<{ forkId: number; lastStoredHeader: V; tx: T; computedCommitedHeaders: V[]; }>; getMainFeeRate?(signer: string): Promise<string>; getForkFeeRate?(signer: string, forkId: number): Promise<string>; estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>; getFeePerBlock(feeRate?: any): Promise<bigint>; sweepForkData?(signer: Signer, lastSweepTimestamp?: number): Promise<number | null>; }