import { ConsumerConfig, Msg, Nanos } from "./types";
import { NatsError } from "./error";
export declare function validateDurableName(name?: string): void;
export declare function validateStreamName(name?: string): void;
export declare function validateName(context: string, name?: string): void;
export declare function validName(name?: string): string;
export declare function defaultConsumer(name: string, opts?: Partial<ConsumerConfig>): ConsumerConfig;
/**
 * Converts the specified millis into Nanos
 * @param millis
 */
export declare function nanos(millis: number): Nanos;
/**
 * Convert the specified Nanos into millis
 * @param ns
 */
export declare function millis(ns: Nanos): number;
/**
 * Returns true if the message is a flow control message
 * @param msg
 */
export declare function isFlowControlMsg(msg: Msg): boolean;
/**
 * Returns true if the message is a heart beat message
 * @param msg
 */
export declare function isHeartbeatMsg(msg: Msg): boolean;
export declare function newJsErrorMsg(code: number, description: string, subject: string): Msg;
export declare function checkJsError(msg: Msg): NatsError | null;
export declare enum Js409Errors {
    MaxBatchExceeded = "exceeded maxrequestbatch of",
    MaxExpiresExceeded = "exceeded maxrequestexpires of",
    MaxBytesExceeded = "exceeded maxrequestmaxbytes of",
    MaxMessageSizeExceeded = "message size exceeds maxbytes",
    PushConsumer = "consumer is push based",
    MaxWaitingExceeded = "exceeded maxwaiting",
    IdleHeartbeatMissed = "`idle heartbeats missed`"
}
export declare function setMaxWaitingToFail(tf: boolean): void;
export declare function isTerminal409(err: NatsError): boolean;
export declare function checkJsErrorCode(code: number, description?: string): NatsError | null;
