/// <reference types="node" />
import { Peer } from './peer';
interface PeerConnectionOptions {
    networkId: string;
    protocolVersion: string;
    softwareVersion: string;
    nodeType: number;
    hostname: string;
    port: number;
    connectionTimeout: number;
    cert: Buffer;
    key: Buffer;
}
declare class PeerConnection {
    private readonly messageChannel;
    private readonly messageHandlers;
    constructor({ networkId, protocolVersion, softwareVersion, nodeType, hostname, port, connectionTimeout, cert, key }: PeerConnectionOptions);
    connect(): Promise<void>;
    /**
     * Chia application level handshake required before using the peer protocol.
     */
    handshake(): Promise<this>;
    sendMessage(messageType: number, data: any): void;
    /**
     * Get the peers of this peer.
     */
    getPeers(): Promise<Peer[]>;
    close(): void;
    private addMessageHandler;
    private onMessage;
    /**
     * Expects a message of a messageType to be received within a timeout.
     *
     * @param messageType expected
     */
    private expectMessage;
}
export { PeerConnection };
