import { DatabaseClient } from '../common/database';
import { PollingListenerSettings } from '../polling/config';
import { ReplicationListenerSettings } from '../replication/config';
import { MessageNotFoundRetryStrategy } from '../strategies/message-not-found-retry-strategy';
import { StoredTransactionalMessage } from './transactional-message';
/**
 * This function makes sure the message was not and is not currently being
 * worked on and acquires a lock to prevent other processes to work with this
 * message. It locks the record via `SELECT ... FOR NO KEY UPDATE`. It updates
 * the message object and sets the started_attempts, finished_attempts,
 * locked_until, and processed_at values (again) on the message to be sure no
 * other process altered them.
 * @param message The message for which to acquire a lock and set the updatable properties (again).
 * @param client The database client. Must be part of the transaction where the message handling changes are later done.
 * @param config The configuration settings for the polling or replication listener.
 * @param messageNotFoundRetryStrategy The retry strategy if the message could not be found in the database.
 * @returns 'MESSAGE_NOT_FOUND' if the message was not found, 'ALREADY_PROCESSED' if it was processed, and otherwise assigns the properties to the message and returns it.
 */
export declare const initiateMessageProcessing: (message: StoredTransactionalMessage, client: DatabaseClient, settings: PollingListenerSettings | ReplicationListenerSettings, messageNotFoundRetryStrategy: MessageNotFoundRetryStrategy) => Promise<true | "MESSAGE_NOT_FOUND" | "ALREADY_PROCESSED" | "ABANDONED_MESSAGE">;
//# sourceMappingURL=initiate-message-processing.d.ts.map