/// <reference types="node" />
import { Buffer } from 'buffer';
import { SshMessage } from './sshMessage';
import { SshDataReader, SshDataWriter } from '../io/sshData';
import { ChannelRequestMessage } from './connectionMessages';
export declare enum SshDisconnectReason {
    none = 0,
    hostNotAllowedToConnect = 1,
    protocolError = 2,
    keyExchangeFailed = 3,
    reserved = 4,
    macError = 5,
    compressionError = 6,
    serviceNotAvailable = 7,
    protocolVersionNotSupported = 8,
    hostKeyNotVerifiable = 9,
    connectionLost = 10,
    byApplication = 11,
    tooManyConnections = 12,
    authCancelledByUser = 13,
    noMoreAuthMethodsAvailable = 14,
    illegalUserName = 15
}
export declare class DisconnectMessage extends SshMessage {
    get messageType(): number;
    reasonCode?: SshDisconnectReason;
    description?: string;
    language?: string | null;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
    toString(): string;
}
export declare class IgnoreMessage extends SshMessage {
    get messageType(): number;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class UnimplementedMessage extends SshMessage {
    get messageType(): number;
    sequenceNumber?: number;
    unimplementedMessageType?: number;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
    toString(): string;
}
export declare class DebugMessage extends SshMessage {
    constructor(message?: string);
    get messageType(): number;
    alwaysDisplay: boolean;
    message?: string;
    language?: string;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
    toString(): string;
}
export declare class ServiceRequestMessage extends SshMessage {
    get messageType(): number;
    serviceName?: string;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class ServiceAcceptMessage extends SshMessage {
    get messageType(): number;
    serviceName?: string;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class SessionRequestMessage extends SshMessage {
    constructor(requestType?: string, wantReply?: boolean);
    get messageType(): number;
    requestType?: string;
    wantReply: boolean;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
    toString(): string;
}
export declare class SessionRequestSuccessMessage extends SshMessage {
    get messageType(): number;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class SessionRequestFailureMessage extends SshMessage {
    get messageType(): number;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class ExtensionInfoMessage extends SshMessage {
    static readonly serverIndicator = "ext-info-c";
    static readonly clientIndicator = "ext-info-c";
    get messageType(): number;
    extensionInfo: {
        [key: string]: string;
    };
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
    toString(): string;
}
export declare class SessionChannelRequestMessage extends SessionRequestMessage {
    senderChannel?: number;
    request?: ChannelRequestMessage;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class SessionReconnectRequestMessage extends SessionRequestMessage {
    clientReconnectToken?: Buffer;
    lastReceivedSequenceNumber?: number;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare class SessionReconnectResponseMessage extends SessionRequestSuccessMessage {
    serverReconnectToken?: Buffer;
    lastReceivedSequenceNumber?: number;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
}
export declare enum SshReconnectFailureReason {
    /** No reason was specified. */
    none = 0,
    /**
     * Reconnection failed due to an unknown server-side error.
     */
    unknownServerFailure = 1,
    /**
     * The session ID requested by the client for reconnection was not found among
     * the server's reconnectable sessions.
     */
    sessionNotFound = 2,
    /**
     * The reconnect token supplied by the client was invalid when checked by the server.
     * The validation ensures that the client knows a secret key negotiated in the
     * previously connected session.
     */
    invalidClientReconnectToken = 3,
    /**
     * The server was unable to re-send dropped messages that were requested by the client.
     */
    serverDroppedMessages = 4,
    /**
     * Reconnection failed due to an unknown client-side error.
     */
    unknownClientFailure = 101,
    /**
     * The host key supplied by the reconnected server did not match the host key from the
     * original session; the client refused to reconnect to a different host.
     */
    differentServerHostKey = 102,
    /**
     * The reconnect token supplied by the server was invalid when checked by the client.
     * The validation ensures that the server knows a secret key negotiated in the
     * previously connected session.
     */
    invalidServerReconnectToken = 103,
    /**
     * The client was unable to re-send dropped messages that were requested by the server.
     */
    clientDroppedMessages = 104
}
export declare class SessionReconnectFailureMessage extends SessionRequestFailureMessage {
    reasonCode?: SshReconnectFailureReason;
    description?: string;
    language?: string;
    protected onRead(reader: SshDataReader): void;
    protected onWrite(writer: SshDataWriter): void;
    toString(): string;
}
//# sourceMappingURL=transportMessages.d.ts.map