/**
 * 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 ControlProtocol from './ControlProtocol';
import Interface from '../Interface';
export declare enum LCPCode {
    ProtocolReject = 8,
    EchoRequest = 9,
    EchoReply = 10,
    DiscardRequest = 11,
    Identification = 12
}
export default class LinkControlProtocol extends ControlProtocol {
    private intf;
    private echoRequestIdentifier;
    private lastSentEchoRequestIdentifier;
    private lastSentEchoRequestData;
    private pingAttemptsRemaining;
    private pingPromiseResolve?;
    private pingPromiseReject?;
    private pingTimer?;
    private pingTimeout;
    constructor(intf: Interface);
    private resetPingTimer;
    up(): void;
    protected handleUnknownCode(code: LCPCode, identifier: number, data: Buffer): boolean;
    ping(attempts?: number, timeout?: number): Promise<void>;
    private sendEchoRequest;
    private handleEchoRequest;
    private handleEchoReply;
    private pingTimerExpired;
    protected thisLayerUp(): void;
    protected thisLayerDown(): void;
    protected thisLayerStarted(): void;
    protected thisLayerFinished(): void;
}
