import { SshSession } from '../sshSession';
import { SshService } from './sshService';
import { KeyExchangeInitMessage, KeyExchangeMessage, KeyExchangeDhInitMessage } from '../messages/kexMessages';
import { KeyPair } from '../algorithms/sshAlgorithms';
import { SshSessionAlgorithms } from '../sshSessionAlgorithms';
import { CancellationToken } from 'vscode-jsonrpc';
export declare class KeyExchangeService extends SshService {
    static readonly serviceName = "ssh-keyexchange";
    private isInitialExchange;
    private exchangeContext;
    constructor(session: SshSession);
    get exchanging(): boolean;
    hostKey?: KeyPair;
    startKeyExchange(isInitialExchange: boolean): Promise<[KeyExchangeInitMessage, KeyExchangeDhInitMessage | null]>;
    finishKeyExchange(): SshSessionAlgorithms;
    abortKeyExchange(): void;
    private createKeyExchangeInitMessage;
    /**
     * Gets the list of public key algorithms that the current session can support.
     * For a server session the list is filtered based on the available private keys.
     */
    private getPublicKeyAlgorithms;
    private createKeyExchangeGuessMessage;
    handleMessage(message: KeyExchangeMessage, cancellation?: CancellationToken): void | Promise<void>;
    private handleInitMessage;
    private handleDhInitMessage;
    private handleDhReplyMessage;
    private chooseAlgorithm;
    private computeExchangeHash;
    private computeKeys;
    private computeKey;
}
//# sourceMappingURL=keyExchangeService.d.ts.map