///
import type { PortalNetworkRoutingTable } from './routingTable.js';
import type { NetworkId, StateNetworkRoutingTable } from '../index.js';
import type { IDiscv5CreateOptions } from '@chainsafe/discv5';
import type { NodeId } from '@chainsafe/enr';
import type { AbstractLevel } from 'abstract-level';
import type EventEmitter from 'events';
import type StrictEventEmitter from 'strict-event-emitter-types/types/src';
export interface PortalNetworkEvents {
NodeAdded: (nodeId: NodeId, networkId: NetworkId) => void;
NodeRemoved: (nodeId: NodeId, networkId: NetworkId) => void;
ContentAdded: (key: string, contentType: number, content: string) => void;
Verified: (key: string, verified: boolean) => void;
SendTalkReq: (nodeId: string, requestId: string, payload: string) => void;
SendTalkResp: (nodeId: string, requestId: string, payload: string) => void;
}
export declare enum TransportLayer {
NODE = "node",
WEB = "web",
MOBILE = "mobile"
}
export interface PortalNetworkOpts {
supportedNetworks?: NetworkId[];
radius?: bigint;
bootnodes?: string[];
db?: AbstractLevel | undefined;
metrics?: PortalNetworkMetrics;
bindAddress?: string;
transport?: TransportLayer;
proxyAddress?: string;
rebuildFromMemory?: boolean;
config: Partial;
dataDir?: string;
dbSize(): Promise;
trustedBlockRoot?: string;
eventLog?: boolean;
}
export type PortalNetworkEventEmitter = StrictEventEmitter;
export type RoutingTable = PortalNetworkRoutingTable | StateNetworkRoutingTable;
interface Gauge {
inc(value?: number): void;
set(value: number): void;
collect?(): void;
}
interface Counter {
inc(value?: number): void;
}
export interface PortalNetworkMetrics {
totalContentLookups: Counter;
knownHistoryNodes: Gauge;
knownDiscv5Nodes: Gauge;
successfulContentLookups: Counter;
failedContentLookups: Counter;
offerMessagesSent: Counter;
offerMessagesReceived: Counter;
acceptMessagesSent: Counter;
acceptMessagesReceived: Counter;
findContentMessagesSent: Counter;
findContentMessagesReceived: Counter;
contentMessagesSent: Counter;
contentMessagesReceived: Counter;
findNodesMessagesSent: Counter;
findNodesMessagesReceived: Counter;
nodesMessagesSent: Counter;
nodesMessagesReceived: Counter;
totalBytesReceived: Counter;
totalBytesSent: Counter;
currentDBSize: Gauge;
}
/** Borrowed from @ethereumjs/client type definitions
* https://github.com/ethereumjs/ethereumjs-monorepo/blob/8384cd445e7f16f527a55a48d23eaae51a3e3ba5/packages/client/src/rpc/types.ts#L1
*/
export interface RpcTx {
from?: string;
to?: string;
gas?: string;
gasPrice?: string;
value?: string;
data?: string;
maxPriorityFeePerGas?: string;
maxFeePerGas?: string;
type?: string;
}
export {};
//# sourceMappingURL=types.d.ts.map