/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
import { SessionParameters } from "#session/SessionParameters.js";
import { ChannelType, Duration } from "@matter/general";
export declare namespace MRP {
    /**
     * The maximum number of transmission attempts for a given reliable message. The sender MAY choose this value as it
     * sees fit.
     */
    const MAX_TRANSMISSIONS = 5;
    /** The base number for the exponential backoff equation. */
    const BACKOFF_BASE = 1.6;
    /** The scaler for random jitter in the backoff equation. */
    const BACKOFF_JITTER = 0.25;
    /** The scaler margin increase to backoff over the peer sleepy interval. */
    const BACKOFF_MARGIN = 1.1;
    /** The number of retransmissions before transitioning from linear to exponential backoff. */
    const BACKOFF_THRESHOLD = 1;
    /** @see {@link MatterSpecification.v12.Core}, section 4.11.8 */
    const STANDALONE_ACK_TIMEOUT: Duration;
    /**
     * Default expected processing time for a messages in milliseconds. The value is derived from kExpectedIMProcessingTime
     * from chip implementation. This is basically the default used with different names, also kExpectedLowProcessingTime or
     * kExpectedSigma1ProcessingTime.
     */
    const DEFAULT_EXPECTED_PROCESSING_TIME: Duration;
    /**
     * To better handle network congestion, we add a delay to the MRP base timings.
     * TODO Make this value dynamic depending on network type and maybe network behavior
     */
    const ADDITIONAL_MRP_DELAY: Duration;
    interface ResponseTimeInputs {
        /**
         * When local session parameters are missing we only calculate the expected maximum time from the device back to us
         */
        peerSessionParameters?: SessionParameters;
        localSessionParameters: SessionParameters;
        channelType: ChannelType;
        isPeerActive: boolean;
        usesMrp?: boolean;
        expectedProcessingTime?: Duration;
    }
    function maxPeerResponseTimeOf({ peerSessionParameters, localSessionParameters, channelType, isPeerActive, usesMrp, expectedProcessingTime, }: ResponseTimeInputs): Duration;
    interface RetryDelayInputs {
        transmissionNumber: number;
        sessionParameters: SessionParameters;
        isPeerActive: boolean;
    }
    /**
     * Calculates the maximum backoff time for a resubmission based on the current retransmission count.
     * Maximum means we calculate the maximum time without any randomness.
     */
    function maxRetransmissionIntervalOf(inputs: RetryDelayInputs): Duration;
    /**
     * Calculates the backoff time for a resubmission based on the current retransmission count.
     * If no session parameters are provided, the parameters of the current session are used.
     * If session parameters are provided, the method can be used to calculate the maximum backoff time for the other
     * side of the exchange.
     *
     * When `calculateMaximum` is set to true, we calculate the maximum time without any randomness.
     * Otherwise, we add a network overhead to the timings.
     *
     * @see {@link MatterSpecification.v10.Core}, section 4.11.2.1
     */
    function retransmissionIntervalOf({ transmissionNumber, sessionParameters, isPeerActive }: RetryDelayInputs, calculateMaximum?: boolean): Duration;
}
//# sourceMappingURL=MRP.d.ts.map