import { AMQPChannel } from "./amqp-channel.js";
import { AMQPError } from "./amqp-error.js";
import { AMQPView } from "./amqp-view.js";
import type { Logger } from "./types.js";
export declare const VERSION = "4.0.0";
export declare const MIN_FRAME_SIZE = 8192;
/**
 * Base class for AMQPClients.
 * Implements everything except how to connect, send data and close the socket
 */
export declare abstract class AMQPBaseClient {
    /** Virtual host to connect to. */
    vhost: string;
    /** Username for authentication. */
    username: string;
    /** Password for authentication. */
    password: string;
    /** Connection name, visible in the RabbitMQ management UI. */
    name?: string;
    /** Platform identifier sent in client properties. */
    platform?: string;
    /** Open channels, indexed by channel id. */
    channels: AMQPChannel[];
    protected connectPromise?: [(conn: AMQPBaseClient) => void, (err: Error) => void];
    protected closePromise?: [(value?: void) => void, (err: Error) => void];
    protected onUpdateSecretOk?: (value?: void) => void;
    /** Whether the connection is closed. */
    closed: boolean;
    /** Set when the server has blocked publishing (connection.blocked reason). */
    blocked?: string;
    /** Maximum number of channels negotiated with the server. */
    channelMax: number;
    /** Maximum frame size in bytes negotiated with the server. */
    frameMax: number;
    /** Heartbeat interval in seconds. */
    heartbeat: number;
    /** Callback for connection-level errors. */
    onerror: (error: AMQPError) => void;
    /** Logger instance, or undefined to disable logging. */
    logger: Logger | undefined;
    /**
     * Callback when connection is lost
     * @param error - The error that caused the disconnection, if any
     */
    ondisconnect?: (error?: Error) => void;
    /**
     * Callback when the server blocks publishing on this connection
     * (typically due to a resource alarm — memory or disk).
     * @param reason - The broker-supplied reason string
     */
    onblocked?: (reason: string) => void;
    /**
     * Callback when the server lifts a previous block on this connection.
     */
    onunblocked?: () => void;
    /**
     * @param name - name of the connection, set in client properties
     * @param platform - used in client properties
     * @param logger - optional logger instance, defaults to undefined (no logging)
     */
    constructor(vhost: string, username: string, password: string, name?: string, platform?: string, frameMax?: number, heartbeat?: number, channelMax?: number, logger?: Logger | null);
    /**
     * Open a channel
     * @param [id] - An existing or non existing specific channel
     */
    channel(id?: number): Promise<AMQPChannel>;
    /**
     * Gracefully close the AMQP connection.
     * @param [reason] might be logged by the server
     */
    close(reason?: string, code?: number): Promise<void>;
    updateSecret(newSecret: string, reason: string): Promise<unknown>;
    /**
     * Try establish a connection
     */
    abstract connect(): Promise<AMQPBaseClient>;
    /**
     * @ignore
     * @param bytes to send
     * @return fulfilled when the data is enqueued
     */
    abstract send(bytes: Uint8Array): Promise<void>;
    protected abstract closeSocket(): void;
    private rejectClosed;
    private rejectConnect;
    /**
     * Parse and act on frames in an AMQPView
     * @ignore
     */
    protected parseFrames(view: AMQPView): void;
}
//# sourceMappingURL=amqp-base-client.d.ts.map