///
import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "gossip.v1";
export interface GossipMessage {
signedObservation: SignedObservation | undefined;
signedHeartbeat: SignedHeartbeat | undefined;
signedVaaWithQuorum: SignedVAAWithQuorum | undefined;
signedObservationRequest: SignedObservationRequest | undefined;
signedBatchObservation: SignedBatchObservation | undefined;
signedBatchVaaWithQuorum: SignedBatchVAAWithQuorum | undefined;
signedChainGovernorConfig: SignedChainGovernorConfig | undefined;
signedChainGovernorStatus: SignedChainGovernorStatus | undefined;
signedQueryRequest: SignedQueryRequest | undefined;
signedQueryResponse: SignedQueryResponse | undefined;
}
export interface SignedHeartbeat {
/** Serialized Heartbeat message. */
heartbeat: Buffer;
/** ECDSA signature using the node's guardian public key. */
signature: Buffer;
/**
* Guardian address that signed this payload (truncated Eth address).
* This is already contained in Heartbeat, however, we want to verify
* the payload before we deserialize it.
*/
guardianAddr: Buffer;
}
/** P2P gossip heartbeats for network introspection purposes. */
export interface Heartbeat {
/** The node's arbitrarily chosen, untrusted nodeName. */
nodeName: string;
/** A monotonic counter that resets to zero on startup. */
counter: string;
/** UNIX wall time. */
timestamp: string;
networks: Heartbeat_Network[];
/** Human-readable representation of the current bridge node release. */
version: string;
/** Human-readable representation of the guardian key's address. */
guardianAddr: string;
/** UNIX boot timestamp. */
bootTimestamp: string;
/** List of features enabled on this node. */
features: string[];
/** (Optional) libp2p address of this node. */
p2pNodeId: Buffer;
}
export interface Heartbeat_Network {
/** Canonical chain ID. */
id: number;
/** Consensus height of the node. */
height: string;
/** Chain-specific human-readable representation of the bridge contract address. */
contractAddress: string;
/** Connection error count */
errorCount: string;
/** Safe block height of the node, if supported. */
safeHeight: string;
/** Finalized block height of the node, if supported. */
finalizedHeight: string;
}
/**
* A SignedObservation is a signed statement by a given guardian node
* that they observed a given event.
*
* Observations always result from an external, final event being observed.
* Examples are emitted messages in finalized blocks on a block or guardian set changes
* injected by node operators after reaching off-chain consensus.
*
* The event is uniquely identified by its hashed (tx_hash, nonce, values...) tuple.
*
* Other nodes will verify the signature. Once any node has observed a quorum of
* guardians submitting valid signatures for a given hash, they can be assembled into a VAA.
*
* Messages without valid signature are dropped unceremoniously.
*/
export interface SignedObservation {
/** Guardian pubkey as truncated eth address. */
addr: Buffer;
/** The observation's deterministic, unique hash. */
hash: Buffer;
/** ECSDA signature of the hash using the node's guardian key. */
signature: Buffer;
/**
* Transaction hash this observation was made from.
* Optional, included for observability.
*/
txHash: Buffer;
/**
* Message ID (chain/emitter/seq) for this observation.
* Optional, included for observability.
*/
messageId: string;
}
/**
* A SignedVAAWithQuorum message is sent by nodes whenever one of the VAAs they observed
* reached a 2/3+ quorum to be considered valid. Signed VAAs are broadcasted to the gossip
* network to allow nodes to persist them even if they failed to observe the signature.
*/
export interface SignedVAAWithQuorum {
vaa: Buffer;
}
/**
* Any guardian can send a SignedObservationRequest to the network to request
* all guardians to re-observe a given transaction. This is rate-limited to one
* request per second per guardian to prevent abuse.
*
* In the current implementation, this is only implemented for Solana.
* For Solana, the tx_hash is the account address of the transaction's message account.
*/
export interface SignedObservationRequest {
/** Serialized observation request. */
observationRequest: Buffer;
/** Signature */
signature: Buffer;
guardianAddr: Buffer;
}
export interface ObservationRequest {
chainId: number;
txHash: Buffer;
}
/**
* A SignedBatchObservation is a signed statement by a given guardian node
* that they observed a series of messages originating from a transaction.
*
* BatcheObervations are emitted when all the Observations from a tx reach quorum.
*
* The event is uniquely identified by its hash (made from hashing all the
* individual Observation hashes).
*
* Messages without valid signature are dropped unceremoniously.
*/
export interface SignedBatchObservation {
/** Guardian pubkey as truncated eth address. */
addr: Buffer;
/** The observation batch's deterministic, unique hash. */
hash: Buffer;
/** ECSDA signature of the hash using the node's guardian key. */
signature: Buffer;
/** Unique identifier of the transaction that produced the observation. */
txId: Buffer;
/** Chain ID for this observation. */
chainId: number;
/** Nonce of the messages in the batch. */
nonce: number;
/** Batch ID - emitterChain/transactionID/nonce */
batchId: string;
}
export interface SignedBatchVAAWithQuorum {
/** batch_vaa bytes are the binary encoding of the BatchVAA */
batchVaa: Buffer;
/** Emitter Chain ID of the messages */
chainId: number;
/** Transaction identifier of the observation */
txId: Buffer;
/** Nonce of the messages in the batch */
nonce: number;
/** Batch ID - emitterChain/transactionID/nonce string, for convenience */
batchId: string;
}
/** This message is published every five minutes. */
export interface SignedChainGovernorConfig {
/** Serialized ChainGovernorConfig message. */
config: Buffer;
/** ECDSA signature using the node's guardian key. */
signature: Buffer;
/** Guardian address that signed this payload (truncated Eth address). */
guardianAddr: Buffer;
}
export interface ChainGovernorConfig {
nodeName: string;
counter: string;
timestamp: string;
chains: ChainGovernorConfig_Chain[];
tokens: ChainGovernorConfig_Token[];
}
export interface ChainGovernorConfig_Chain {
chainId: number;
notionalLimit: string;
bigTransactionSize: string;
}
export interface ChainGovernorConfig_Token {
originChainId: number;
/** human-readable hex-encoded (leading 0x) */
originAddress: string;
price: number;
}
/** This message is published every minute. */
export interface SignedChainGovernorStatus {
/** Serialized ChainGovernorStatus message. */
status: Buffer;
/** ECDSA signature using the node's guardian key. */
signature: Buffer;
/** Guardian address that signed this payload (truncated Eth address). */
guardianAddr: Buffer;
}
export interface ChainGovernorStatus {
nodeName: string;
counter: string;
timestamp: string;
chains: ChainGovernorStatus_Chain[];
}
export interface ChainGovernorStatus_EnqueuedVAA {
/** Chain and emitter address are assumed. */
sequence: string;
releaseTime: number;
notionalValue: string;
txHash: string;
}
export interface ChainGovernorStatus_Emitter {
/** human-readable hex-encoded (leading 0x) */
emitterAddress: string;
totalEnqueuedVaas: string;
/** Only the first 20 will be included. */
enqueuedVaas: ChainGovernorStatus_EnqueuedVAA[];
}
export interface ChainGovernorStatus_Chain {
chainId: number;
remainingAvailableNotional: string;
emitters: ChainGovernorStatus_Emitter[];
}
export interface SignedQueryRequest {
/** Serialized QueryRequest message. */
queryRequest: Buffer;
/** ECDSA signature using the requestor's public key. */
signature: Buffer;
}
export interface SignedQueryResponse {
/** Serialized QueryResponse message. */
queryResponse: Buffer;
/** ECDSA signature using the node's guardian public key. */
signature: Buffer;
}
export declare const GossipMessage: {
encode(message: GossipMessage, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): GossipMessage;
fromJSON(object: any): GossipMessage;
toJSON(message: GossipMessage): unknown;
fromPartial(object: DeepPartial): GossipMessage;
};
export declare const SignedHeartbeat: {
encode(message: SignedHeartbeat, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedHeartbeat;
fromJSON(object: any): SignedHeartbeat;
toJSON(message: SignedHeartbeat): unknown;
fromPartial(object: DeepPartial): SignedHeartbeat;
};
export declare const Heartbeat: {
encode(message: Heartbeat, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat;
fromJSON(object: any): Heartbeat;
toJSON(message: Heartbeat): unknown;
fromPartial(object: DeepPartial): Heartbeat;
};
export declare const Heartbeat_Network: {
encode(message: Heartbeat_Network, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): Heartbeat_Network;
fromJSON(object: any): Heartbeat_Network;
toJSON(message: Heartbeat_Network): unknown;
fromPartial(object: DeepPartial): Heartbeat_Network;
};
export declare const SignedObservation: {
encode(message: SignedObservation, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedObservation;
fromJSON(object: any): SignedObservation;
toJSON(message: SignedObservation): unknown;
fromPartial(object: DeepPartial): SignedObservation;
};
export declare const SignedVAAWithQuorum: {
encode(message: SignedVAAWithQuorum, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedVAAWithQuorum;
fromJSON(object: any): SignedVAAWithQuorum;
toJSON(message: SignedVAAWithQuorum): unknown;
fromPartial(object: DeepPartial): SignedVAAWithQuorum;
};
export declare const SignedObservationRequest: {
encode(message: SignedObservationRequest, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedObservationRequest;
fromJSON(object: any): SignedObservationRequest;
toJSON(message: SignedObservationRequest): unknown;
fromPartial(object: DeepPartial): SignedObservationRequest;
};
export declare const ObservationRequest: {
encode(message: ObservationRequest, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ObservationRequest;
fromJSON(object: any): ObservationRequest;
toJSON(message: ObservationRequest): unknown;
fromPartial(object: DeepPartial): ObservationRequest;
};
export declare const SignedBatchObservation: {
encode(message: SignedBatchObservation, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedBatchObservation;
fromJSON(object: any): SignedBatchObservation;
toJSON(message: SignedBatchObservation): unknown;
fromPartial(object: DeepPartial): SignedBatchObservation;
};
export declare const SignedBatchVAAWithQuorum: {
encode(message: SignedBatchVAAWithQuorum, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedBatchVAAWithQuorum;
fromJSON(object: any): SignedBatchVAAWithQuorum;
toJSON(message: SignedBatchVAAWithQuorum): unknown;
fromPartial(object: DeepPartial): SignedBatchVAAWithQuorum;
};
export declare const SignedChainGovernorConfig: {
encode(message: SignedChainGovernorConfig, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedChainGovernorConfig;
fromJSON(object: any): SignedChainGovernorConfig;
toJSON(message: SignedChainGovernorConfig): unknown;
fromPartial(object: DeepPartial): SignedChainGovernorConfig;
};
export declare const ChainGovernorConfig: {
encode(message: ChainGovernorConfig, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorConfig;
fromJSON(object: any): ChainGovernorConfig;
toJSON(message: ChainGovernorConfig): unknown;
fromPartial(object: DeepPartial): ChainGovernorConfig;
};
export declare const ChainGovernorConfig_Chain: {
encode(message: ChainGovernorConfig_Chain, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorConfig_Chain;
fromJSON(object: any): ChainGovernorConfig_Chain;
toJSON(message: ChainGovernorConfig_Chain): unknown;
fromPartial(object: DeepPartial): ChainGovernorConfig_Chain;
};
export declare const ChainGovernorConfig_Token: {
encode(message: ChainGovernorConfig_Token, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorConfig_Token;
fromJSON(object: any): ChainGovernorConfig_Token;
toJSON(message: ChainGovernorConfig_Token): unknown;
fromPartial(object: DeepPartial): ChainGovernorConfig_Token;
};
export declare const SignedChainGovernorStatus: {
encode(message: SignedChainGovernorStatus, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedChainGovernorStatus;
fromJSON(object: any): SignedChainGovernorStatus;
toJSON(message: SignedChainGovernorStatus): unknown;
fromPartial(object: DeepPartial): SignedChainGovernorStatus;
};
export declare const ChainGovernorStatus: {
encode(message: ChainGovernorStatus, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorStatus;
fromJSON(object: any): ChainGovernorStatus;
toJSON(message: ChainGovernorStatus): unknown;
fromPartial(object: DeepPartial): ChainGovernorStatus;
};
export declare const ChainGovernorStatus_EnqueuedVAA: {
encode(message: ChainGovernorStatus_EnqueuedVAA, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorStatus_EnqueuedVAA;
fromJSON(object: any): ChainGovernorStatus_EnqueuedVAA;
toJSON(message: ChainGovernorStatus_EnqueuedVAA): unknown;
fromPartial(object: DeepPartial): ChainGovernorStatus_EnqueuedVAA;
};
export declare const ChainGovernorStatus_Emitter: {
encode(message: ChainGovernorStatus_Emitter, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorStatus_Emitter;
fromJSON(object: any): ChainGovernorStatus_Emitter;
toJSON(message: ChainGovernorStatus_Emitter): unknown;
fromPartial(object: DeepPartial): ChainGovernorStatus_Emitter;
};
export declare const ChainGovernorStatus_Chain: {
encode(message: ChainGovernorStatus_Chain, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): ChainGovernorStatus_Chain;
fromJSON(object: any): ChainGovernorStatus_Chain;
toJSON(message: ChainGovernorStatus_Chain): unknown;
fromPartial(object: DeepPartial): ChainGovernorStatus_Chain;
};
export declare const SignedQueryRequest: {
encode(message: SignedQueryRequest, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedQueryRequest;
fromJSON(object: any): SignedQueryRequest;
toJSON(message: SignedQueryRequest): unknown;
fromPartial(object: DeepPartial): SignedQueryRequest;
};
export declare const SignedQueryResponse: {
encode(message: SignedQueryResponse, writer?: _m0.Writer): _m0.Writer;
decode(input: _m0.Reader | Uint8Array, length?: number): SignedQueryResponse;
fromJSON(object: any): SignedQueryResponse;
toJSON(message: SignedQueryResponse): unknown;
fromPartial(object: DeepPartial): SignedQueryResponse;
};
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export declare type DeepPartial = T extends Builtin ? T : T extends Array ? Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? {
[K in keyof T]?: DeepPartial;
} : Partial;
export {};