/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { IFluidContainer } from "@fluidframework/fluid-static";
import type { ITelemetryConsumer } from "../common/index.js";
import type { ContainerEventTelemetryProducer } from "./telemetryProducer.js";
/**
 * This class manages container telemetry intended for customers to consume by wiring together the provided container system events, telemetry producers and consumers together.
 * It manages subcribing to the proper raw container system events, sending them to the {@link ContainerEventTelemetryProducer}
 * to be transformed into {@link IContainerTelemetry} and finally sending them to the provided {@link ITelemetryConsumer}
 */
export declare class ContainerTelemetryManager {
    private readonly container;
    private readonly telemetryProducer;
    private readonly telemetryConsumers;
    private static readonly HEARTBEAT_EMISSION_INTERNAL_MS;
    constructor(container: IFluidContainer, telemetryProducer: ContainerEventTelemetryProducer, telemetryConsumers: ITelemetryConsumer[]);
    /**
     * Subscribes to the raw container system events and routes them to telemetry producers.
     */
    private setupEventHandlers;
    /**
     * Sets up the synthetic telemetry event for the container heartbeat telemetry to be emitted on a given time interval
     * if and only if the container is in a "connected" state. It is used to keep a pulse check on a live container
     */
    private setupHeartbeatTelemetryEmission;
    /**
     * Handles the incoming raw container sysytem event, sending it to the {@link ContainerEventTelemetryProducer} to
     * produce {@link IContainerTelemetry} and sending it to the {@link ITelemetryConsumer} to be consumed.
     */
    private handleContainerSystemEvent;
}
//# sourceMappingURL=telemetryManager.d.ts.map