import { JSONValue, Options, PostgresType, TransactionSql } from 'postgres';
import { ConsumerCreationParams } from '../common/ConsumerCreationParams.js';
import { HermesSql, IOutboxConsumer, MessageEnvelope, PublishOptions, Stop } from '../common/types.js';
import { OutboxConsumerState } from './OutboxConsumerState.js';
export declare class OutboxConsumer<Message extends JSONValue> implements IOutboxConsumer<Message> {
    private readonly _params;
    private readonly _createClient;
    private _state?;
    private _sql;
    private _sendAsync;
    constructor(_params: ConsumerCreationParams<Message>, _createClient: (options: Options<Record<string, PostgresType>>) => HermesSql, _state?: OutboxConsumerState | undefined);
    getCreationParams(): ConsumerCreationParams<Message>;
    getDbConnection(): HermesSql;
    start(): Promise<Stop>;
    queue(message: MessageEnvelope<Message> | MessageEnvelope<Message>[], options?: PublishOptions): Promise<void>;
    send(message: MessageEnvelope<Message> | MessageEnvelope<Message>[], tx?: TransactionSql): Promise<void>;
    private _publishOne;
}
