/** * Job lifecycle completion — parent notification, cleanup, and expiry. * * When a job finishes (or is interrupted), this module: * 1. Notifies the parent job (if this is a child via execChild) * 2. Publishes to one-time and permanent subscribers * 3. Registers the job for TTL-based cleanup */ import { Router } from '../router'; import { StoreService } from '../store'; import { StreamService } from '../stream'; import { SubService } from '../sub'; import { TaskService } from '../task'; import { ILogger } from '../logger'; import { AppVID } from '../../types/app'; import { JobState, JobOutput, JobMetadata, JobCompletionOptions, JobInterruptOptions } from '../../types/job'; import { ProviderClient, ProviderTransaction } from '../../types/provider'; import { StreamError } from '../../types/stream'; interface CompletionContext { appId: string; store: StoreService; stream: StreamService; subscribe: SubService; router: Router | null; taskService: TaskService; logger: ILogger; getVID(vid?: AppVID): Promise; getState(topic: string, jobId: string): Promise; getPublishesTopic(context: JobState): Promise; } /** * Sends the child job result back to the waiting parent activity. * Only applies to non-severed children (execChild, not startChild). */ export declare function execAdjacentParent(instance: CompletionContext, context: JobState, jobOutput: JobOutput, emit?: boolean, transaction?: ProviderTransaction): Promise; export declare function hasParentJob(context: JobState, checkSevered?: boolean): boolean; export declare function resolveError(metadata: JobMetadata): StreamError | undefined; export declare function interrupt(instance: CompletionContext, topic: string, jobId: string, options?: JobInterruptOptions): Promise; export declare function scrub(instance: CompletionContext, jobId: string): Promise; /** * Orchestrates all post-completion work for a finished job: * notify parent, publish to subscribers, schedule cleanup. */ export declare function runJobCompletionTasks(instance: CompletionContext, context: JobState, options?: JobCompletionOptions, transaction?: ProviderTransaction): Promise; export declare function resolveExpires(context: JobState, options: JobCompletionOptions): number; export {};