import { RetryStrategy } from "../utils/RetryStrategy";
import { Bytes } from "../utils/ByteUtils";
import VError from "verror";
export declare class SocketClient {
    private static readonly CONNECT_TIMEOUT;
    private static readonly READ_WRITE_TIMEOUT;
    private readonly _id;
    private _socket?;
    private readonly _callback;
    private _retryOnError;
    private _callbackExecutor;
    private _sendDataBlockQueue?;
    readonly host: string;
    readonly port: number;
    readonly traceId: string;
    readonly retryStrategy: RetryStrategy;
    get LOGPRE(): string;
    constructor(host: string, port: number, traceId: string, callback: Partial<Callback>);
    send(data: Bytes): Promise<void>;
    cancel(): void;
    private _sendImpl;
}
export interface Callback {
    onConnect(): Promise<void>;
    onReceive(data: Bytes): Promise<boolean>;
    onClose(): Promise<void>;
    onError(error: Error): Promise<void>;
    onCancel(): Promise<void>;
}
export declare class IOError extends VError {
}
