import { LogContext } from '@balena/jellyfish-logger'; import type { AutumnDBSession, Kernel } from 'autumndb'; import * as graphileWorker from 'graphile-worker'; import type { Pool } from 'pg'; import type { ActionRequestContract } from '../types'; export declare type OnMessageEventHandler = (payload: ActionRequestContract) => Promise; export interface QueueConsumer { initializeWithEventHandler: (logContext: LogContext, onMessageEventHandler: OnMessageEventHandler) => Promise; run: (logContext: LogContext, onMessageEventHandler: OnMessageEventHandler, retries?: number) => Promise; cancel: () => Promise; postResults: (logContext: LogContext, actionRequest: ActionRequestContract, results: PostResults) => Promise; } export interface PostResults { data: string | { originator?: string; [key: string]: any; }; error: boolean; } export declare class Consumer implements QueueConsumer { private kernel; private pool; private session; messagesBeingHandled: number; graphileRunner: graphileWorker.Runner | null; constructor(kernel: Kernel, pool: Pool, session: AutumnDBSession); initializeWithEventHandler(logContext: LogContext, onMessageEventHandler: OnMessageEventHandler): Promise; run(logContext: LogContext, onMessageEventHandler: OnMessageEventHandler, retries?: number): Promise; cancel(): Promise; /** * @summary Post execution results * @function * @public * * @param logContext - log context * @param actionRequest - action request contract * @returns execute event contract */ postResults(logContext: LogContext, actionRequest: ActionRequestContract, results: PostResults): Promise; }