UNPKG

@symbioticfi/relay-stats-ts

Version:

TypeScript library for deriving validator sets from Symbiotic network contracts

119 lines 5.33 kB
import { PublicClient, Hex } from 'viem'; import { CrossChainAddress, NetworkConfig, ValidatorSet, CacheInterface, ValidatorSetHeader, NetworkData, AggregatorExtraDataEntry, EpochData, ValSetStatus, SettlementValSetStatus, SettlementValSetLog } from './types.js'; import { AggregatorMode } from './constants.js'; export declare const determineValSetStatus: (clientFactory: (chainId: number) => PublicClient, settlements: readonly CrossChainAddress[], epoch: number, preferFinalized: boolean) => Promise<ValSetStatus>; export interface ValidatorSetDeriverConfig { rpcUrls: string[]; driverAddress: CrossChainAddress; cache?: CacheInterface | null; maxSavedEpochs?: number; } export declare class ValidatorSetDeriver { private readonly clients; private readonly driverAddress; private readonly cache; private readonly maxSavedEpochs; private readonly initializedPromise; private readonly rpcUrls; private readonly valsetEventsState; constructor(config: ValidatorSetDeriverConfig); /** * Derive auxiliary network data used by the Relay system. * - Reads NETWORK and SUBNETWORK from the ValSet Driver * - Reads EIP-712 domain from a given settlement contract */ getNetworkData(settlement?: CrossChainAddress, finalized?: boolean): Promise<NetworkData>; /** * Build key/value style extraData entries like relay Aggregator.GenerateExtraData * - simple: keccak(ValidatorsData) and compressed aggregated G1 key * - zk: totalActiveValidators and MiMC-based validators hash * Note: This is a lightweight TS analog without bn254 ops; it uses available data. */ getAggregatorsExtraData(mode: AggregatorMode, keyTags?: number[], finalized?: boolean, epoch?: number): Promise<AggregatorExtraDataEntry[]>; getEpochData(options?: { epoch?: number; finalized?: boolean; includeNetworkData?: boolean; includeValSetEvent?: boolean; settlement?: CrossChainAddress; aggregatorKeyTags?: number[]; }): Promise<EpochData>; /** * Static factory method that ensures the deriver is fully initialized before returning */ static create(config: ValidatorSetDeriverConfig): Promise<ValidatorSetDeriver>; private initializeClients; private validateRequiredChains; private resolveEpoch; private getVerificationMode; private isValSetStatus; private isValidatorSet; private canCacheValSetStatus; private canCacheValidatorSet; private isAggregatorExtraCacheEntry; private updateValidatorSetStatus; private isCachedNetworkConfigEntry; private isNetworkConfigStructure; private mapDriverConfig; private loadNetworkConfigData; private settlementCacheKey; private settlementsCacheKey; private loadValSetStatus; private loadAggregatorsExtraData; private buildValidatorSet; private ensureInitialized; private getClient; private multicallExists; private executeChunkedMulticall; private populateVaultCollateralMetadata; private dedupeAddresses; private normalizeTokenMetadataValue; private readTokenMetadataField; private getDriverContract; private readDriverNumber; private getFromCache; private setToCache; private deleteFromCache; getCurrentEpoch(finalized?: boolean): Promise<number>; getCurrentEpochDuration(finalized?: boolean): Promise<number>; getCurrentEpochStart(finalized?: boolean): Promise<number>; getNextEpoch(finalized?: boolean): Promise<number>; getNextEpochDuration(finalized?: boolean): Promise<number>; getNextEpochStart(finalized?: boolean): Promise<number>; getEpochStart(epoch: number, finalized?: boolean): Promise<number>; getEpochDuration(epoch: number, finalized?: boolean): Promise<number>; getEpochIndex(timestamp: number, finalized?: boolean): Promise<number>; getNetworkConfig(epoch?: number, finalized?: boolean): Promise<NetworkConfig>; getValidatorSet(epoch?: number, finalized?: boolean): Promise<ValidatorSet>; /** * Get the current validator set (simplified interface) */ getCurrentValidatorSet(): Promise<ValidatorSet>; /** * Get the current network configuration (simplified interface) */ getCurrentNetworkConfig(): Promise<NetworkConfig>; getTotalActiveVotingPower(validatorSet: ValidatorSet): bigint; getValidatorSetHeader(validatorSet: ValidatorSet): ValidatorSetHeader; abiEncodeValidatorSetHeader(header: ValidatorSetHeader): Hex; hashValidatorSetHeader(header: ValidatorSetHeader): Hex; getValidatorSetHeaderHash(validatorSet: ValidatorSet): Hex; private getVotingPowers; private getKeys; private getValsetStatus; private getOrCreateValSetEventsState; private selectSettlementForEvent; getValSetStatus(epoch: number, finalized?: boolean): Promise<ValSetStatus>; getValSetSettlementStatuses(options?: { epoch?: number; finalized?: boolean; settlements?: CrossChainAddress[]; }): Promise<SettlementValSetStatus[]>; getValSetLogEvents(options?: { epoch?: number; finalized?: boolean; settlements?: CrossChainAddress[]; }): Promise<SettlementValSetLog[]>; private retrieveValSetEvent; } //# sourceMappingURL=deriver.d.ts.map