/**
 * Copyright 2019 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the 'License');
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an 'AS IS' BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/// <reference types="node" />
import Interface from '../Interface';
import BaseTransport from './BaseTransport';
export default class ReliableTransport extends BaseTransport {
    static readonly displayName = "TRAIN";
    static readonly ncpProtocolNumber = 47667;
    static readonly commandProtocolNumber = 14899;
    static readonly responseProtocolNumber = 14901;
    static readonly modulus = 128;
    static readonly maxRetransmits = 10;
    static readonly retransmitTimeout = 2000;
    private retransmitCount;
    private waitingForAck;
    private retransmitTimer?;
    private sendQueue;
    private lastSentPacket?;
    private commandSocket;
    private responseSocket;
    private sendVariable;
    private receiveVariable;
    constructor(intf: Interface, linkMtu: number);
    thisLayerUp(): void;
    thisLayerDown(): void;
    down(): void;
    private sendInfoPacket;
    send(port: number, information: Buffer): void;
    private processAck;
    private pumpSendQueue;
    private startRetransmitTimer;
    private retransmitTimeoutExpired;
    private sendSupervisoryCommand;
    private sendSupervisoryResponse;
    private commandPacketReceived;
    private responsePacketReceived;
}
