import { Task, Guard } from './'; import { Logger } from './logger'; export interface Message { id: string; } export interface MessageTransformer { transform(input: T): Promise>; } export interface MessageSource { getNext(): Promise; complete(message: T): Promise; /** * Called when a message could not be completed, and is expected to be retried * (returned by some later getNext() call). This gives the implementation an opportunity * to apply a backoff strategy to the message. * * This returns the number of times a message has been attempted (including the latest * attempt). */ backoff(message: T): Promise; /** * Called when a message should be delayed for processing for some amount of time. The * message should not be redelivered until this amount of time has elapsed. * * This returns the number of times a message has been attempted (including the latest * attempt). */ delay(message: T, delaySecs: number): Promise; } export interface MessageSink { persist(message: T): Promise; } export interface SourceSinkConfig { timeoutSec: number; guardScope: string; guard: Guard; source: MessageSource; transformer: MessageTransformer; sink?: MessageSink; logger?: Logger; } export declare class SourceSinkTask implements Task { private config; private log; constructor(config: SourceSinkConfig); private checkGuard; execute(): Promise; private post; } export declare class PassthroughTransformer implements MessageTransformer { transform(input: T): Promise; }