import { SubnetID } from "@lodestar/types";
import { RegistryMetricCreator } from "../../metrics/utils/registryMetricCreator.js";
import { Libp2pError } from "../libp2p/error.js";
import { SubnetType } from "../metadata.js";
import { DiscoveredPeerStatus, NotDialReason } from "../peers/discover.js";
import { SubnetSource } from "../subnets/attnetsService.js";
export type NetworkCoreMetrics = ReturnType<typeof createNetworkCoreMetrics>;
export declare function createNetworkCoreMetrics(register: RegistryMetricCreator): {
    register: RegistryMetricCreator;
    peers: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    peersByDirection: import("@lodestar/utils").GaugeExtra<{
        direction: string;
    }>;
    peersByClient: import("@lodestar/utils").GaugeExtra<{
        client: string;
    }>;
    peerLongLivedAttnets: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
    peerScoreByClient: import("@lodestar/utils").Histogram<{
        client: string;
    }>;
    peerGossipScoreByClient: import("@lodestar/utils").Histogram<{
        client: string;
    }>;
    peerConnectionLength: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
    peersSync: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    peerConnectedEvent: import("@lodestar/utils").GaugeExtra<{
        direction: string;
        status: string;
    }>;
    peerDisconnectedEvent: import("@lodestar/utils").GaugeExtra<{
        direction: string;
    }>;
    peerGoodbyeReceived: import("@lodestar/utils").GaugeExtra<{
        reason: string;
    }>;
    peerLongConnectionDisconnect: import("@lodestar/utils").GaugeExtra<{
        reason: string;
    }>;
    peerGoodbyeSent: import("@lodestar/utils").GaugeExtra<{
        reason: string;
    }>;
    peersRequestedToConnect: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    peersRequestedToDisconnect: import("@lodestar/utils").GaugeExtra<{
        reason: string;
    }>;
    peersRequestedSubnetsToQuery: import("@lodestar/utils").GaugeExtra<{
        type: SubnetType;
    }>;
    peersRequestedSubnetsPeerCount: import("@lodestar/utils").GaugeExtra<{
        type: SubnetType;
    }>;
    peersReportPeerCount: import("@lodestar/utils").GaugeExtra<{
        reason: string;
    }>;
    peerManager: {
        heartbeatDuration: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
        starved: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    };
    leakedConnectionsCount: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    discovery: {
        peersToConnect: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        subnetPeersToConnect: import("@lodestar/utils").GaugeExtra<{
            type: SubnetType;
        }>;
        subnetsToConnect: import("@lodestar/utils").GaugeExtra<{
            type: SubnetType;
        }>;
        cachedENRsSize: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        findNodeQueryRequests: import("@lodestar/utils").GaugeExtra<{
            action: string;
        }>;
        findNodeQueryTime: import("@lodestar/utils").Histogram<import("@lodestar/utils").NoLabels>;
        findNodeQueryEnrCount: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        discoveredStatus: import("@lodestar/utils").GaugeExtra<{
            status: DiscoveredPeerStatus;
        }>;
        dialAttempts: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        notDialReason: import("@lodestar/utils").GaugeExtra<{
            reason: NotDialReason;
        }>;
        dialTime: import("@lodestar/utils").Histogram<{
            status: string;
        }>;
        dialError: import("@lodestar/utils").GaugeExtra<{
            reason: Libp2pError;
        }>;
    };
    reqResp: {
        rateLimitErrors: import("@lodestar/utils").GaugeExtra<{
            method: string;
        }>;
    };
    discv5: {
        decodeEnrAttemptCount: import("@lodestar/utils").Counter<import("@lodestar/utils").NoLabels>;
        decodeEnrErrorCount: import("@lodestar/utils").Counter<import("@lodestar/utils").NoLabels>;
    };
    attnetsService: {
        committeeSubnets: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        subscriptionsCommittee: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        subscriptionsCommitteeMeshPeers: import("@lodestar/utils").Histogram<{
            subnet: SubnetID;
        }>;
        subscriptionsCommitteeTimeToStableMesh: import("@lodestar/utils").Histogram<{
            subnet: SubnetID;
        }>;
        subscriptionsRandom: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        longLivedSubscriptions: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        subscribeSubnets: import("@lodestar/utils").GaugeExtra<{
            subnet: SubnetID;
            src: SubnetSource;
        }>;
        unsubscribeSubnets: import("@lodestar/utils").GaugeExtra<{
            subnet: SubnetID;
            src: SubnetSource;
        }>;
        aggregatorSlotSubnetCount: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    };
    syncnetsService: {
        subscriptionsCommittee: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
        subscribeSubnets: import("@lodestar/utils").GaugeExtra<{
            subnet: SubnetID;
        }>;
        unsubscribeSubnets: import("@lodestar/utils").GaugeExtra<{
            subnet: SubnetID;
        }>;
    };
};
export type NetworkCoreWorkerMetrics = ReturnType<typeof getNetworkCoreWorkerMetrics>;
export declare function getNetworkCoreWorkerMetrics(register: RegistryMetricCreator): {
    reqRespBridgeRespCallerPending: import("@lodestar/utils").GaugeExtra<import("@lodestar/utils").NoLabels>;
    networkWorkerWireEventsOnWorkerThreadLatency: import("@lodestar/utils").Histogram<{
        eventName: string;
    }>;
};
//# sourceMappingURL=metrics.d.ts.map